boxerprogrammer / directx12_samples

書籍「DirectX12の魔導書」のサンプルプログラム
MIT License
261 stars 68 forks source link

BasicVertexShader.hlslで視線ベクトルの計算がワールド座標系になっておらずスペキュラハイライトの出方が変わっているように見えます #18

Open monguri opened 4 years ago

monguri commented 4 years ago

こちらの本にお世話になっております。ありがとうございます。

件名の件について報告させてください。 Chapter7から11くらいまで、BasicVertexShader.hlslでoutput.rayの計算をしています。 これはBasicPixelShader.hlslでの使われ方を考えるとワールド座標でのベクトルになっていてほしいのではないかと考えております。

ただ、たとえばChapter8ですと、 output.ray = normalize(pos.xyz - mul(view,eye));//視線ベクトル のようになっており、pos.xyzはワールド座標系、mul(view,eye)はビュー座標系での視点位置になっています。 https://github.com/boxerprogrammer/directx12_samples/blob/master/Chapter8/BasicVertexShader.hlsl このコードはChapterによってばらつきがあります。

私としては output.ray = normalize(pos.xyz - eye);//視線ベクトル でよいのではないかと考えています。 こちらの方が、カメラの方向を変えた時に、スペキュラハイライトの出方が自然な感じがしました。

もし私の理解の間違いだったり意図的にこうされているということでしたらすみません。