Archive For 2015年11月25日

GLSLで書いたシェーダーをUnityのマテリアルにセット、WebGL出力してみます

By |

GLSLで書いたシェーダーをUnityのマテリアルにセット、WebGL出力してみます

Unityでシェーダーを書く機会は中々ありませんでしたが、今後のためにもGLSLでシェーダーを書いてみます。 GLSLの特徴はOpenGLに使えるという点です。ということは、スマートフォンゲームやWebGL(ブラウザ)に応用することもできます。また、言語的には、ほぼCに近い、ポインタのないC言語といった印象があります。(今回、細かな言語仕様の説明は割愛させていただきます。) まずはGLSL on ブラウザで書く まずは純粋にGLSLのフラグメントシェーダーだけを書いて試してみたいと思います。 これにはGLSL Sandboxというサイトを使います。このサイトでは、WebGL経由でシェーダーのGLSLコードをリアルタイムプレビュー、さらにjsdoitのようにギャラリーやフォークなどもできます。先にここで書く理由は、ちょっと寄り道してみたかったからです。w WebでもUnityでもどっちでも動くと良いですし。 ちなみに、GLSL Sandboxの開発にはthree.jsの@mrdoob氏など、著名開発者が名を連ねています。 凝ると際限がないと思いますが、そこそこ見栄えしてきたら次のステップへいきます。 デモはこちら : http://glslsandbox.com/e#29054.0 ソースは以下の通りです。 ポイントは(というほどではありませんが・・)時間経過を元にして三角関数を動かしているところです。 #ifdef GL_ES precision mediump float; #endif uniform float time; uniform vec2 resolution; void main( void ) { vec2 position = ( gl_FragCoord.xy / resolution.xy ) – 0.5 ; vec3 col = vec3(0.0,0.0,0.0); //15個円を描く for(int i = 0; i…

Go Top