| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- Shader "MyShader/BrightnessSaturationContrast" { // 调整亮度、饱和度、对比度
- Properties{
- _MainTex("Base (RGB)", 2D) = "white" {} // 主纹理
- _Brightness("Brightness", Float) = 1 // 亮度
- _Saturation("Saturation", Float) = 1 // 饱和度
- _Contrast("Contrast", Float) = 1 // 对比度
- }
- SubShader{
- Pass {
- // 深度测试始终通过, 关闭深度写入
- ZTest Always ZWrite Off
- CGPROGRAM
- #pragma vertex vert_img // 使用内置的vert_img顶点着色器
- #pragma fragment frag
- #include "UnityCG.cginc"
- sampler2D _MainTex; // 主纹理
- half _Brightness; // 亮度
- half _Saturation; // 饱和度
- half _Contrast; // 对比度
- fixed4 frag(v2f_img i) : SV_Target { // v2f_img为内置结构体, 里面只包含pos和uv
- fixed4 tex = tex2D(_MainTex, i.uv); // 纹理采样
- fixed3 finalColor = tex.rgb * _Brightness; // 应用亮度_Brightness
- fixed luminance = 0.2125 * tex.r + 0.7154 * tex.g + 0.0721 * tex.b; // 计算亮度
- fixed3 luminanceColor = fixed3(luminance, luminance, luminance); // 饱和度为0、亮度为luminance的颜色
- finalColor = lerp(luminanceColor, finalColor, _Saturation); // 应用饱和度_Saturation
- fixed3 avgColor = fixed3(0.5, 0.5, 0.5); // 饱和度为0、亮度为0.5的颜色
- finalColor = lerp(avgColor, finalColor, _Contrast); // 应用对比度_Contrast
- return fixed4(finalColor, tex.a);
- }
- ENDCG
- }
- }
- Fallback Off
- }
|