鏡面照明を機能させるのに問題があります。私のアプリケーションには、追跡できない何らかのバグがあるようです。
光は正面から来ています (スクリーンショットはカメラが -z 方向を見ていることを示しています。左側は -x です)。
単純なスペキュラー出力は、次の失敗を示しています。
使用したコード:
float3 n = normalize(input.normal); // world space normal, mul(float4(normal, 0.0), modelMatrix)
float3 l = normalize(-sDirection); // constant direction (like 0.7, -0.8, -0.7)
float3 v = normalize(viewPos.xyz - input.vertexWorldSpace.xyz); // viewpos = world space camera position
float3 LightReflect = normalize(reflect(n,l));
float SpecularFactor = dot(v, LightReflect);
color = float4(SpecularFactor, SpecularFactor, SpecularFactor, 1.0);
変数エラーの可能性を確認するために、input.VertexWorldSpace を確認しました。
ライトの方向と法線も確認するために、拡散項を確認しました。
私にとっては、すべての部分がきれいに見えますが、鏡面反射光は原点(0,0,0)で黒くなり、光の方向に垂直になります。
また、原点(0, 0, 0)でのビュー方向ベクトルで何が起こるかを示すGIFも作成しました
カメラの位置と鏡面反射光が黒くなる場所を示す別の gif: http://i.imgur.com/ajUaekA.gifv
v の計算が間違っていますか?