RayMarching 体积云
如何在需要渲染的物体或者场景中使用RayMarching?
使用包围盒
常见的包围盒算法
Axis-Aligned bounding Box 轴对齐包围盒
OBB(OrientedboundingBox) 方向包围盒
nvdia 改进后的算法
简述AABB和OBB的区别
碰撞检测之 AABB 包围盒
使用包围盒的目的
噪声采样
4,步进
简而言之就是在接触点不断往前,采样密度叠加,直到脱离包围盒或者超出最大步长距离
float sumDensity = 0;
for (int j = 0; j <32; j++)
{
if (_dstTravelled < dstLimit)
{
rayPos = entryPoint + (worldViewDir * _dstTravelled);
sumDensity += pow(sampleDensity(rayPos),5);
}
_dstTravelled += _rayStep; //向前步进
}
return col + sumDensity ;
5.体积云的光照计算
6.体积云形状控制与动画
8. 优化方案
参考链接:
RayMarching实时体积云渲染入门(上) - 知乎 (zhihu.com)
A Ray-Box Intersection Algorithm and Efficient Dynamic Voxel Rendering (JCGT)