これは私の現在のフラグメントシェーダのメインです。光の計算でlightDotを使用しないと、照明はあらゆる方向に均等に白を退色させる素敵な丸です。しかし、いったん私はlight.Dotを追加すると、オブジェクトの他の半分を黒くするようです。
。
私の知る限り、ドットプロダクトは、世界の位置とライトの間の角度がサーフェスの法線に近く、ライトが明るくなるように明るくする必要があります。私のドットプロダクトが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);
}