OGRE動態陰影

2021-05-24 14:38:29 字數 1096 閱讀 2046

紋理陰影演算法的基本原理是:首先從光源的角度觀察場景,把觀察到結果渲染到乙個紋理,紋理中只儲存

深度值(深度緩衝中的值)。這樣做的意義是,在紋理中儲存了場景中的物體與光源之間的最短距離。然後從相機的角度進行正常渲染場景,計算每個畫素與光源的距離,並與紋理對應的值進行比較,如果大於,那麼說明它不是光線方向上離光源的最近的,會有陰影產生。/*可以有點疑惑,每個需要測試的畫素如何與紋理中的畫素一一對應呢?還是按照生成紋理圖的原理,需要把測試頂點的位置座標,轉換到光源為視點的空間,也就是說從光源的角度,看看頂點應該在**。這樣就可以一一對應比較了。當然這僅僅是為了比較的目的,真正渲染時頂點還是要先轉換到視空間中(從相機角度看)*/。

紋理陰影速度上要比模板陰影演算法快,但因為陰影被渲染到紋理中,而紋理具有確定的解析度,因此當陰影被擴充套件,拉伸時,效果會較差,如產生鋸齒邊等。

因為使用了紋理記憶體,因此它的尺寸決定了紋理陰影數的上限。ogre中可以管理一幀中可以使用的陰影紋理數:scenemanager::setshadowtexturecount()。每個光源都需要乙個紋理。假如指定的紋理數少於光源數,ogre採用」先來先服務「的原則分配紋理。假如不能增加紋理尺寸來提高視覺效果,最好減小投射陰影的距離。陰影不會突然終結,ogre會淡化紋理陰影的邊緣阻止有陰影與無陰影之間劇烈過渡。可以控制淡化半徑。

modulative陰影混合

正常場景渲染的顏色與陰影的顏色相乘來建立暗的、表示陰影的顏色。這種方法有從已經渲染的場景中」減去「光照影響的效果。陰影區域一律變暗,與進入陰影區的光線數無關。當有多個光源產生的陰影區

重疊時,陰影會非常暗,視覺效果很差。

additive shadow masking

modulative的方法是通過影響陰影區實現的。而additive方法是只對處於光照中的區域有影響,對陰影區沒

有影響。這樣陰影區會受到別的光源的影響而變得稍亮,而相互重疊的陰影區也不會更暗。

ogre會把乙個通道分為三個通道.

ambietn,應用環境光到場景中,在這個通道沒有紋理被渲染。

diffuse and specular, 這個通道對每個燈都渲染一次,當前燈產生的陰影區域不受影響。其餘的區域與場景進行混合。同樣也不使用任何貼花紋理。

decal。紋理被應用到前面累積的顏色上。

Ogre陰影實現原理解析

顧名思義,陰影錐陰影其實就是建立乙個椎體。我們以光源位置為起點,和需要產生陰影的物體的外圍輪廓 光源作為參考位置 連線然後無限延伸,這樣就得到了乙個椎體,利用這個椎體做模板測試。我們把面對攝像機為正面的椎體麵先繪製一遍,在相應的模板位置 1 我們把背對攝像機為反面的椎體面再繪製一遍,在相應的模板位置...

ogre渲染到動態紋理

材質指令碼 material screen texture unit bluescreen.jpg必須是blank white的影象,因為多重紋理混合預設是modulate。texture screen就是在程式裡面動態建立的二維影象。ogre textureptr screentex ogre t...

Ogre學習筆記2 光源攝像機和陰影

mcamera mscenemgr createcamera playercam 同樣你也可以通過名稱獲取攝像機的指標,通過呼叫getcamera 函式 下面 我們移動攝像機的位置並且規定攝像機往 看。mcamera setposition ogre vector3 0,300,500 mcamer...