效果比较好的肤色叠加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 }