UE5 材质 布料shader

chenglixue / 2023-05-12 / 原文

前言

本篇实现一个简单的布料shader,需要注意的是本篇仅仅模拟布料的外观,但物理上并不是正确的因为还需要改光照

目标

  • 通过观察缎子、棉布、丝绸可以看出,这些物体有些是中间亮,边缘暗,有些是中间暗,边缘亮,因此我们需要实现控制物体中间和边缘亮度的shader
  • 布料算法
    顽皮狗工作室曾在SIGGRAPH上分享过一个布料算法
    image-20230512185212578

实现控制边缘和中心的亮度

实现边缘比中心亮

第一次实现

  • 按照正常的光照方程,向边缘靠近更多颜色越暗,因此我们只需1-x将效果反向

image-20230512183040434

第二次实现

  • 控制中间的黑色的幅度

很自然的,我们采用power()控制幅度。power幂取4,可以得到如下效果

image-20230512183722781

第三次实现

  • 控制亮度

    power()后乘以一个常数即可

    image-20230512183959684

实现中心比边缘亮

知道上个实现的原理,那么这个实现也就不难了

image-20230512184449959

最后将以后两个实现进行相加,就能实现最终效果

现在只需控制中间黑色和边缘亮色的幅度且对布料纹理进行采样,输出结果如下
image-20230512191131723

reference

Cloth Shading - UE4 Materials 101 - Episode 10 - YouTube