- 461 名前:名前は開発中のものです。 mailto:sage [2010/11/06(土) 21:33:39 ID:zrF4soKu.net]
- すみません。
フラグメントシェーダやっていて、どうしても理解できない現象が出てこまっています。 シェーダプログラムは↓みたいな感じなのですが、どうも自分の視点と向かい合っている面が 明るくなってしまうのです…。 (一応、ライトを動かすことでも陰影の様子は変わりますが、ライトは動かさずに視点だけがが 動いてもフラグメントの色が変わってしまう状態です。) 宜しくお願いします。 varying vec3 position; varying vec3 normal; void main (void) { vec4 color; // アンビエントは強制的に反映 color = gl_FrontMaterial.ambient * gl_LightSource[0].ambient; // 法線とライトベクトルとのcosθの度合いだけディフューズが反映される。 vec3 fnormal = normalize(normal); vec3 light = normalize(gl_LightSource[0].position.xyz - position); float diffuse = dot(light, fnormal); if( diffuse > 0.0 ){ color += gl_FrontMaterial.diffuse * gl_LightSource[0].diffuse * diffuse; } gl_FragColor = color; }
|

|