這是我目前的片段着色器的主要部分。如果我在光線計算中不使用lightDot,那麼照明是一個很好的圓形,每個方向均勻地呈現白色。但是,一旦我添加lightDot它似乎使另一半的對象只是黑色。
。
據我所知,當世界位置和光線之間的角度接近表面法線並使角度越大時,光線越暗,點積應使光線明亮。爲什麼我的3d產品將它在另一個方向變成黑色?
void main()
{
vec3 lightDir=normalize(lightPosition-worldPosition);
float lightDot=dot(worldNormal,lightDir);
float dist=distance(lightPosition,worldPosition);
vec3 light=lightDot*materialDiffuse/(dist*dist);
fragmentColor=vec4(pow(light.x,gamma),pow(light.y,gamma),pow(light.z,gamma),1);
}