2013-01-13 47 views
0

我不確定這是否可能(或者如果我問的是正確的問題)。我有一個頂點/索引,並在DirectX 9.0中的場景中渲染。現在,我想添加環境光和漫射光,然後獲取每個頂點的最終計算結果Diffuse Shade。所以基本上,有一個太陽,然後不同的點燈。我想這與Blender如何做到這一點相似。然後我想獲得每個頂點的最終結果,並將其靜態寫入文件(無動態光照)。然後它將進入一個遊戲,每個頂點使用靜態漫反射顏色。所以它不依賴於照相機,照明,只能在靜態點/太陽下。環境/漫射照明,獲得頂點的最終靜態漫反射陰影顏色

我不認爲我可以使用DirectX燈光,因爲這看起來不會讓您獲得最終頂點的導出的最終RGB?

有沒有人有算法?或者以某種方式在DirectX中添加燈光,然後獲得最終結果?

回答

0

我不確定我是否完全理解了這個問題,但是我理解它的方式,您是說要將點光源的光線「烘烤」爲頂點顏色?

如果是這種情況,那麼可以使用默認directX着色器用於計算最終頂點顏色的相同數學運算。我想輸出的顏色通常是計算公式爲:

// saturate just clamps the resulting color values between 0 and 1. 

out_ambient = saturate(vtx_ambient * ambient_light) 
out_diffuse = saturate(vtx_diffuse * light_diffuse * -dot(vtx_normal, light_direction)) 

out_color = saturate(out_ambient + out_diffuse) 

因爲你使用的點光源,你必須計算從頂點光位置light_direction,但我想用這將讓你得到的各個頂點的顏色。

我還沒有廣泛使用着色器,所以我可能計算出的結果是錯誤的 - 是否有人能夠驗證這是否正確?

+0

你知道他們是如何計算環境光和漫射光的嗎? (該等式假定已經具有這些值)。 –

+0

環境光和漫射光值只是要添加到場景中的燈光的顏色或強度值。如果場景中有多個點光源,那麼您將使用多個out_diffuse方程式來使用每個光源的漫射值。然後在最終的out_color計算中將所有out_diffuse值相加在一起。如果您願意,也可以應用於多個環境光源 - 但由於環境光線均勻施加,因此我將假設一個環境光線值。 –

相關問題