HLSL實現環境光光照模型

2021-06-16 04:23:02 字數 1182 閱讀 3987

環境光光照模型公式:

i =a

intensity(環境光強度)* a

color(環境光顏色)*

amaterial(物體對環境光各顏色成分的反射係數)

如果場景中包含有漫反射和鏡面反射光,則公式為:

color = aintensity * a

color +

diffuse

+specular

diffuse 和specular分別是漫反射和鏡面反射光照公式的佔位符

1.頂點渲染器**

//-------------------

//全域性變數由應用程式設定其值

//---------------------

float4x4 matworldviewproj;

float4 materialambient;

//---------------

//輸出結構

//---------------

struct vs_output;

//--------------

//頂點渲染器函式

//--------------

vs_output vs(float4 pos:position)

;float ambientintensity = 0.5;

out.color = ambientintensity * ambientcolor * materialambient;

return out;}

2.設定材質環境光反射係數

//設定材質  

d3dmaterial9 mtrl;

zeromemory( &mtrl, sizeof(d3dmaterial9) );

mtrl.ambient.r = 1.0f;

mtrl.ambient.g = 1.0f;

mtrl.ambient.b = 0.0f;

mtrl.ambient.a = 1.0f;

v_return(g_pconstanttable->setvector( pd3ddevice, "materialambient",

&d3dxvector4(mtrl.ambient.r, mtrl.ambient.g,

mtrl.ambient.b, mtrl.ambient.a)));

其他同頂點渲染文章裡的步驟

光照模型及cg實現

經典光照模型 illumination model 物體表面光照顏色由入射光 物體材質,以及材質和光的互動規律共同決定。由於環境光給予物體各個點的光照強度相同,且沒有方向之分,所以在只有環境光的情況下,同一物體各點的明暗程度均一樣。環境光是對光照現象的最簡單抽象,侷限性很大。它僅能描述光線在空間中無...

基本光照模型簡單實現

lambert光照模型,根據光照向量與頂點法線的夾角來確定光照強度 upgrade note replaced mul unity matrix mvp,with unityobjecttoclippos shader james lambert subshader cgprogram pragma...

基於物理的光照模型實現

隨著計算機效能的提公升和3d技術的發展,現代3d遊戲不斷追求對現實世界的真實模擬。在這種背景下,原來被廣泛使用的blinn phong光照模型由於其模擬度不夠,已經不適應新一代遊戲的需要。採用新的基於物理的光照模型,可以更好的模擬高光反射,大幅提公升畫面質量 光照模型使用了微表面brdf,環境高光的...