黑白图转法线


一、ddx、ddy

1.1 概念

ddx,ddy 获取屏幕空间中任何两个片段之间的变化率,需要在片段着色器中使用

image-20211025134830981

1.2 获取同一个三角面

三角形内是法线相同

image-20211025135020614

1.3 利用曲率转法线

float3 heightToNormal(float height, float intensity)
{
    float dU = ddx(height);
    float dV = ddy(height);
    float3 n = normalize(float3(0, 0, 1) + float3(dU, dV, 0) * intensity);
    n = n * 0.5 + 0.5;
    return n;
}
image-20211025184819525 image-20211025184848664

在进行一次 Gamma 校正

float3 n = pow(heightToNormal(Color, _Intensity), 2.2);
image-20211025185009161

参考: https://zhuanlan.zhihu.com/p/92939613


文章作者: 血魂S
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 血魂S !
  目录