如何使用 Three.js 着色语言创建液体光线追踪场景 | Codrops

主要观点:作者对着色器着迷,介绍了射线追踪技术(Raymarching)及其在创建液体渲染场景中的应用,通过使用 React Three Fiber(R3F)和 Three.js 着色语言(TSL)构建简单的射线追踪场景,包括设置、创建射线追踪循环、添加 SDF 形状、平滑最小函数和添加光照等步骤。
关键信息

  • TSL 旨在降低创建着色器的入门门槛,需使用 Three.js 中的 WebGPURenderer,R3F 用于设置基本画布和场景。
  • 射线追踪基本原理是沿射线步进并测试与场景中物体的交点,通过 SDF 确定物体表面距离。
  • 可添加多种 SDF 形状如球体,并通过改变参数实现不同效果,使用平滑最小函数使形状更具粘性。
  • 添加光照可创建深度和动态效果,包括环境光、半球光、漫反射光、镜面光和菲涅尔效应等。
    重要细节
  • 代码中多处使用各种函数和变量,如 Fnvec3uvtimerLocal 等,以及不同的着色和计算步骤。
  • 提供了多个参考资源,包括 Inigo Quilez 的相关文章、kishimisu 的介绍、Maxime Heckel 的教程等。
  • 给出了后续可尝试的扩展内容,如添加立方体、添加噪声、探索其他组合函数等。
阅读 11
0 条评论