自学记录用
Ray Marching 字面意思就是:光线步进。
详细一些的说明:屏幕中每个像素放射一条射线,作为 光路逆向追踪,将光线所按照特定的步长来前进(步进),直到碰撞到SDFs函数几何体(SDFs是:(Signed Distance Fields的简写)),或是超出指定的最远距离,就停止步进。
根据碰撞后的几何体表面,得到世界坐标,计算出法线、等信息来做光照运算。
上面说的 光路逆向追踪,因为通常是我们相机或是眼睛是接收光线信息的,但根据光路可逆原理,所以我们从接收方发射射线,来模拟光线在接触到表面信息后的反射,折射,透射,散射,吸收等现象。
Ray Marching 的潜力,目前来说,手机硬件跑的话,还是比较耗的,PC上也耗。
但随着硬件不断升级,我相信有一天,会出现用SDFs函数建模的软件。
而现在的建模软件:3D MAX, Maya, ZBrush, Blender, 等,都是使用顶点来建模了。
SDFs这种建模才算真正的优美,使用的是一些距离函数模型(距离交集、并集、等),同样可以制作出千变万化的模型。
但是顶点建模的方式应该是不会淘汰的,因为有些简单渲染效果的,还是可以用的。
实例- Unity Shader - Ray Marching - T1 - SimpleSphere
- Unity Shader - Ray Marching - T2 - SimpleSphereAndPlane
- Unity Shader - Ray Marching - T3 - GetSurfaceNormals
- Unity Shader - Ray Marching - T4 - LightingSurface
- Unity Shader - Ray Marching - T5 - Shadow
- Unity Shader - Ray Marching - T6 - SoftShadow
- Unity Shader - Ray Marching - T7 - AO
- 后续有空会回到继续学习:分材质着色
- 后续有空会回到继续加上:ambient,specular,reflection,refraction,等效果
- 后续有空会回到继续学习:体积光
- 后续有空会回到继续学习:体积雾
- 后续有空会回到继续学习:动态模糊
-
ShaderToy里最佩服的人:IQ
- SDF - signal distance fields
- distance functions
- raymarching distance fields
- SDF - signal distance fields
-
1,Learn aboat RayMarching
-
2,Learn aboat RayMarching
-
3,Learn aboat RayMarching
-
4,Learn aboat RayMarching
-
1. Why Ray Marching
-
ray tracing ray marching 区别?
-
笔记二十七——RayMarch简单实践02 Simple-SDF-RayMarchingScene
-
在Unity里使用光线步进(Raymarching)
-
penumbra shadows in raymarched SDFs - 光线步进中使用有向距离场实现软阴影
-
Raymarching Distance Fields: Concepts and Implementation in Unity