2016-02-12 76 views
-1

嗨即時嘗試爲我的3D模型材質和霧創建着色器。一切正常,但光的方向。我不知道該如何設置它,所以我使用了固定值,但是當旋轉我的3D模型(這是一個簡單的紋理球體)時,光線會隨之旋轉。我想改變我的代碼,以便根據相機而不是對象本身將光線留在一個位置。我試圖用輸入法線乘以視圖矩陣,但是會出現相同的結果。HLSL固定照明位置

另外,我應該根據相機設置光線方向嗎?

編輯:刪除引擎收錄鏈接,因爲這是違反規定的...

+0

請不要張貼鏈接到代碼。 – JJF

+0

我應該如何顯示代碼?張貼在這裏不是太大嗎? – user5901143

+0

請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。如果你不能這樣做,那麼這可能不是你問題的最佳論壇。 – JJF

回答

0

使用相機依靠值只用於轉換頂點POS查看和突出位置(着色器需要裁剪和光柵化階段)。視頻卡需要知道,在哪裏繪製像素。

對於照明,您通常會將相機變形值附加到頂點的世界位置以及世界位置的法線到所需着色器階段(即phong照明的像素着色器階段)。

因此,您可以在世界空間座標系中將您的光照位置或更好的光照方向設置爲着色器的全局變量。由此,照明與攝像機視角位置無關。

如果你想有一個像使用手電筒的效果。您可以將照明位置設置爲照相機位置,並將照明方向設置爲您的觀看方向。所以明亮的部分總是在您的觀看視錐體的中心。

祝你好運