MicroSplat
原文档: https://docs.google.com/document/d/1F94JgR2y8zyaxJLVQ4K77tXzRGwfeLJyyX5kgD_BoTU/edit#heading=h.rrar1dgps27e
以下翻译为机器翻译有错误请指正
概述
"细分曲面(Tessellation)和视差(Parallax)“模块增加了对"细分曲面(Tessellation)”、"视差偏移(Parallax Offset)"以及"Parallax Occlusion Mapping - POM"的支持,这些功能可以极大地增强场景的深度效果。
需求
细分曲面需要shader model 4.6,也就是说,它可以在运行DX11或Vulkan的Windows机器上工作,也可以在运行OpenGL或metal的OSX机器上工作,大多数游戏主机以及一些高端手机也支持。
Shader Features
"Tessellation和Parallax"选项可以开启/关闭这些特性。Parallax的"Offset"可以增加表面的深度感,而不实际改变几何形状,而"Tessellation"则是将几何形状进行细分和位移。这两种技术可以独立使用,也可以结合使用。
Parallax Offset模式只有一个选项,那就是"视差高度(Parallax Height)",它控制了应用效果的程度。如果你把"视差高度"设置得过大,那么物体的表面纹理可能会看起来像是被拉长或者扭曲了,这就破坏了原本的视差效果。
另一种视差类型是"Parallax Occlusion Mapping",简称POM。POM通过沿视线方向多次采样纹理,直到找到与高度图的交点,从而创建出深度感。POM可能会有一些副作用,其中之一就是在处理曲面(大多数地形都是曲面)时可能出现的一些不自然的效果。不过这在着色器中使用了一些技术,用来减少或者消除POM的副作用,但是有一些特别大或者显著的地形特征,比如山脉、峡谷等使用POM可能会产生一些微妙的波动效果。因此,POM在使用有小细节或者大量平铺的纹理时效果最好。
请注意,POM与Triplanar纹理是不兼容的。
POM 可能会非常消耗性能,因为它可能需要对纹理进行大量的采样。为了缓解这个问题,你可以控制采样的最大数量,并且随着距离的增加逐渐降低效果。同时,你也可以设置随着距离的增加,POM的效果逐渐减弱,这样可以在不影响近处的视觉效果的同时,减少远处的计算量。
Tessellation
以下是细分曲面可用的主要着色器参数的描述:
参数 | 描述 |
---|---|
Displacement | 位移应该将顶点推离原始表面多远? |
Mip Bias | Mip Bias决定了我们在采样纹理时,应该偏好哪个级别的mip map。较高的值通常会使性能更好,并使位移更加平滑。 |
Shaping | 这是一个用于控制细分曲面的参数。较低值会在纹理之间创建比较宽广的过渡,这通常看起来比锐利的过渡更好。 |
Up Bias | 当设置为0时,位移(Displacement)发生在法线的方向。当设置为1时,位移直接向上发生。 |
Tessellation | 应该将三角形细分多少。较高的细分曲面值看起来更好,但是更耗费性能。 |
Min Distance | 开始细分和位移几何体的距离。 |
Max Distance | 细分和位移几何体结束的距离。 |
技巧和提示
- 这些效果的质量直接与你的高度图的质量成正比。因此,建议使用纹理打包器的PBR模式提供实际的高度图,而不是依赖自动生成的高度图。
- 视差和细分曲面的结合可以非常强大。启用视差后,你通常可以使用较少的细分和位移,但在纹理上获得类似的深度效果。
- 对于细分来说,Per-Texture 标签页提供了一些功能。当启用“Tess Offset”属性时,会出现一些按钮,这些按钮可以让你根据纹理数据自动计算出适当的偏移量,使得细分后的地形能尽可能地接近原始的碰撞器。