前回のエントリでLambertシェーディングをやってみたが、物体の色は気にしていなかった。そこで今回は、試しに物体の色をmixしてみた。使ったのはGLSLのmix関数で、物体の色とライトで計算した色をmixしている。物体の色とライトの向きはJavaScriptから渡すべきだとは思うが、シェーダーに直接書いてしまっている。今回はFragment Shaderとスクリーンショットだけ載せる
precision mediump float; varying vec3 N; //物体の色 vec3 color = vec3(0.0, 0.0, 0.0); //ライトの向き vec3 light_dir = vec3(1.0, 0.0, 0.0); //diffuseカラー vec3 light_diffuse = vec3(0.8, 0.8, 0.8); void main(){ vec3 light_color = light_diffuse * dot(N, light_dir); gl_FragColor = vec4(mix(color, light_color, 0.5), 1.0); }