アドビの新プロジェクト:JavaScript で WebGL シェーダを記述できる ShaderDSL.js

アドビの新しいオープンソースプロジェクトが公開されました。WebGL のシェーダを JavaScript で記述できるよう開発されたフレームワーク ShaderDSL.js です。

WebGL の場合は、シェーダーの記述に使用される言語は GLSL が一般的です。そのため、一般的な Web 開発者にとっては、WebGL を使うには、機能だけでなく、新しい言語を学ぶという手間も発生します。

また、複数のの言語を使って Web ページを記述するのは、メンテ等も大変そうです。そこで、JavaScript で WebGL のシェーダーが記述できたたらよいね!と思ったアドビが新しいフレームワークの開発に着手したというお話です。

(なぜアドビがこんなフレームワークを開発しているのか妄想してみると楽しいかもです)

ShaderDSL.js は、内部的に GladderRiverTrail を利用しています。Gladder は CoffeeScript で記述された WebGL フレームワークで、つまり、JavaScript が使いたいだけだったらわざわざ新しいフレームワークを用意する必要は無かったはずなのですが、お気に召さない点が在ったようです。

比べてみると、ShaderDSL.js では、関数呼び出しの記述が、より普通の JavaScript っぽくなっています。下はその例です。

var gla = new Gladder({canvas: "jscanvas"});
var program = new gla.Program({
  vertexShader: function(attributes, uniforms) {
    var z = 0.1 * Math.sin(5.0 * attributes.position[0] 
                           - 5.0 * attributes.position[1]
                           - 0.005 * uniforms.time);
    var v = vec4.createFrom(attributes.position[0],
                            attributes.position[1], z, 1.0);
    var r = mat4.multiply(uniforms.transform, v, gl_Position);
    return {
      tc: attributes.texCoord
    };
  },
  fragmentShader: function(uniforms, varyings) {
    gl_FragColor = texture2D.create(uniforms.sampler, varyings.tc);
  },
  uniforms: {transform: "mat4", time: "float", sampler: "sampler2D"},
  attributes: {position: "vec2", texCoord: "vec2"},
});
continuation(gla, program);

また、RiverTrail が使われているので、GPU の活用も意識されていることがわかります。環境によっては、通常の JavaScript よりもずっと早く実行できるように設計されているようです。

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/474

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261