效果比较好的肤色叠加shader

效果如下:

 叠加算法采用的是Photoshop里的“叠加”功能的算法,如:

算法实现代码如下:

 1 // Photoshop 中的图层叠加算法
 2 float OverlaySingle(float main, float mask)
 3 {
 4     if (main < 0.5)
 5     {
 6         return 2 * main * mask;
 7     }
 8     else
 9     {
10         return 1 - 2 * (1 - main) * (1 - mask);
11     }
12 }
13 
14 // Photoshop 中的图层叠加算法
15 fixed3 Overlay(fixed4 col, fixed4 overlyCol)
16 {
17     fixed r = OverlaySingle(col.r, overlyCol.r);
18     fixed g = OverlaySingle(col.g, overlyCol.g);
19     fixed b = OverlaySingle(col.b, overlyCol.b);
20     return fixed3(r, g, b);
21 }

用法如下:

1 // 片段shader中调用此方法
2 fixed4 frag(v2f i) : SV_TARGET
3 {
4     fixed4 col = tex2D(_MainTex, i.uv);
5     col.rgb = Overlay(col, _OverlyingColor);
6     return col;
7 }

转载请注明出处:https://www.cnblogs.com/jietian331/p/12621201.html

原文地址:https://www.cnblogs.com/jietian331/p/12621201.html