Directx11教程 57 環境對映

2021-09-06 05:40:51 字數 1140 閱讀 7307

建好skydome後,如果我們想讓其中的某個物體,比如那個球體來對映出周圍環境的藍天白雲(不包括自己附近的物體),該怎麼做呢?此時可以把這個球體當成一面鏡子,把我們視點看這個物體上某個頂點p時的反射向量當作cube map查詢向量v,得到紋理texel,然後p點的顏色可以用blend的方式,混合當前顏色和取樣的紋理texel,就可以實現我們想要的效果。

我們新建乙個lighttexcubeshaderclass來渲染這個球體,它呼叫的shader檔案為lighttexcube.vs, lighttexcube.ps,vs檔案沒有什麼變化,但ps檔案中加入了環境對映的處理,混合了光照,紋理以及環境對映紋理三者的顏色。

finalcolor = finalcolor * texturecolor;

//計算反射cube的顏色

return finalcolor;

在graphicsclass中,渲染該球體的**為:

//sphere 頂點和索引資料放入緩衝區,準備渲染

m_spheremodel->render(m_d3d->getdevicecontext());

d3dxmatrixtranslation(&worldmatrix3, 0.0,4.5, 0.0);

result = m_lighttexcubeshader->render(m_d3d->getdevicecontext(), m_spheremodel->getindexcount(), worldmatrix3, viewmatrix, projectionmatrix,

light, material, camera,m_texmanager->createtex(m_d3d->getdevice(),string("ice.dds")), m_texmanager->createcubetex(m_d3d->getdevice(),string("grassenvmap1024.dds")));

程式執行後介面如下:

完整的**請參考:

工程檔案mytutoriald3d11_52

Directx11教程37 紋理對映 7

本章是在教程35 36的基礎上來實現乙個光照紋理結合的程式,就是把場景中旋轉的cube加上紋理。lighttex.vs中頂點的結構現在為 struct vertexinputtype 紋理座標 output.tex input.tex 紋理座標不做任何變化,只是單純的從vs輸出到ps中。lightt...

Directx11教程38 紋理對映 8

上篇日誌中,我們用紋理和光照顏色調製的方式得到最終顏色,本章我們嘗試用紋理取樣的顏色,直接做為材質的漫反射係數kd,並用它來做光照計算,最後再做個gamma校正,如果不做的話,效果會偏亮。lighttex.ps主要改動 float4 texturecolor shadertexture.sample...

Directx11教程39 紋理對映 9

在mytutoriald3d11 32中,我們在planemodelclass中增加乙個紋理textureclass m texture 讀入乙個grass的紋理,程式執行後的效果如下 完整的 請參考 工程檔案mytutoriald3d11 32 在mytutoriald3d11 33中,我們移去了...