opengl4.3シェーダーのスペキュラーパワーコンポーネントの変更に問題があります。鏡面反射光は、0〜10の光沢値を使用すると正常に機能しますが、値を大きくしてマテリアルをより光沢にするようにすると、照明の強度が低下します。これが私のコードです:
//Direct Lighting
vec3 L = normalize(worldPos.xyz - lightPos.xyz);
vec3 D = normalize(lightDir.xyz);
float dist = length(-L);
float I = max(dot(N.xyz, -L), 0.0);
vec3 h = normalize(-L.xyz + E);
float specLighting = 0.0;
specLighting = pow(max(dot(N.xyz, h), 0.0),50.0);
fColor.xyz = vec3(specLighting);
したがって、光沢値を50程度に増やすと、照明はまったくなくなります。ちなみに、このコードでは、問題をデバッグするために鏡面反射光のみを表示しています。
[編集]説明に詳細が不足しているため、鏡面反射光の値を1から7に変更した結果のスクリーンショットをいくつか添付しました。ご覧のとおり、鏡面ハイライトのサイズが小さくなっています(これが私が望むものです)。 )、照明もフェードします(これは私が望むものではありません)。約10秒で真っ黒になります。
ちなみに、私はこれを完全にピクセル/フラグメントシェーダーで行っています。
また、directx 11テストエンジンのスクリーンショットを追加しました。鏡面照明とまったく同じコードを使用していますが、光沢係数は100です。
Directx 11: