Unity Shader - Ray Marching Study Summary - 学习汇总

自学记录用

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,等效果
  • 后续有空会回到继续学习:体积光
  • 后续有空会回到继续学习:体积雾
  • 后续有空会回到继续学习:动态模糊

References

  • ShaderToy里最佩服的人:IQ

    • SDF - signal distance fields
      • distance functions
      • raymarching 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

你可能感兴趣的:(Raymarching,RayMarching,光线步进,Ray,Marching)