手機(jī)h5網(wǎng)站開(kāi)發(fā)關(guān)鍵詞點(diǎn)擊價(jià)格查詢
RayMarching 體積云
-
RayMarching 是一種處理體積物體的方法
-
RayMarching 體積云的制作是基于屏幕后處理
-
如何在需要渲染的物體或者場(chǎng)景中使用RayMarching?
-
使用包圍盒
常見(jiàn)的包圍盒算法
-
Axis-Aligned bounding Box 軸對(duì)齊包圍盒
-
OBB(OrientedboundingBox) 方向包圍盒
-
nvdia 改進(jìn)后的算法
-
簡(jiǎn)述AABB和OBB的區(qū)別
-
碰撞檢測(cè)之 AABB 包圍盒
-
-
使用包圍盒的目的
-
判斷 光線 與復(fù)雜的物體相交是一個(gè)比較費(fèi)時(shí)的計(jì)算,當(dāng)我們用一個(gè)包圍盒取包圍它時(shí),盒子的計(jì)算就會(huì)降低很多時(shí)間
-
同時(shí)還可以處理不同深度物體的遮擋問(wèn)題(透明物體?)
-
碰撞算法會(huì)返回 相機(jī)到容器的距離 和 返回光線是否在容器中
-
-
-
噪聲采樣
-
Perline噪聲:霧狀層云,但它無(wú)法描述積云中的圓形、波浪狀,也無(wú)法給它們一種隱隱的運(yùn)動(dòng)感
-
Worley噪聲:用于渲染焦散和水的效果
-
3D 紋理 - Unity 手冊(cè)
-
3D紋理的采樣坐標(biāo)的原點(diǎn)一般是左下后方
-
3D貼圖采樣貼圖傳入的是Ray 接觸點(diǎn),但其是世界坐標(biāo),需要轉(zhuǎn)換到包圍盒的相對(duì)位置上去
-
4,步進(jìn)
簡(jiǎn)而言之就是在接觸點(diǎn)不斷往前,采樣密度疊加,直到脫離包圍盒或者超出最大步長(zhǎng)距離
float sumDensity = 0;for (int j = 0; j <32; j++){if (_dstTravelled < dstLimit){rayPos = entryPoint + (worldViewDir * _dstTravelled);sumDensity += pow(sampleDensity(rayPos),5);}_dstTravelled += _rayStep; //向前步進(jìn)
}
return col + sumDensity ;
5.體積云的光照計(jì)算
6.體積云形狀控制與動(dòng)畫
8. 優(yōu)化方案
參考鏈接:
RayMarching實(shí)時(shí)體積云渲染入門(上) - 知乎 (zhihu.com)
A Ray-Box Intersection Algorithm and Efficient Dynamic Voxel Rendering (JCGT)
Ray Marching for Dummies
GPU Pro 7——實(shí)時(shí)體積云(翻譯,附Unity工程)-CSDN博客
Unity 官方