GLSL使いがち光の式

覚えておきたい

2025/08/02

WebGL本では、光と物体の色をかけ合わせたものを環境光として、最終的にgl_FragColorにIa+Id+Isを渡していたが、

threeではlightをすべて足したものを元の色と掛け合わせたものを渡している。考え方が異なるので混乱しないように。

拡散反射

vec3 lightDirection = normalize(lightPosition);

vec3 light = vec3(0.0);

light += lightColor * lightIntensity * max(dot(normal, lightDirection), 0.0);

鏡面反射

vec3 lightReflection = reflect(-lightDirection, normal);

float specular = pow(max(-dot(lightReflection, viewDirection), 0.0), shininess);