源战役客户端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

59 Zeilen
1.9 KiB

  1. Shader "Unlit/ScreenEffect"
  2. {
  3. Properties {
  4. _MainTex ("Base (RGB)", 2D) = "white" {} //需要处理的渲染纹理
  5. _Brightness ("Brightness", Float) = 1 //亮度
  6. _Saturation("Saturation", Float) = 1 //饱和度
  7. _Contrast("Contrast", Float) = 1 //对比度
  8. }
  9. SubShader {
  10. Pass {
  11. ZTest Always Cull Off ZWrite Off
  12. CGPROGRAM
  13. #pragma vertex vert
  14. #pragma fragment frag
  15. #include "UnityCG.cginc"
  16. sampler2D _MainTex;
  17. half _Brightness;
  18. half _Saturation;
  19. half _Contrast;
  20. struct v2f {
  21. float4 pos : SV_POSITION;
  22. half2 uv: TEXCOORD0;
  23. };
  24. v2f vert(appdata_img v) {
  25. v2f o;
  26. o.pos = UnityObjectToClipPos(v.vertex);
  27. o.uv = v.texcoord;
  28. return o;
  29. }
  30. fixed4 frag(v2f i) : SV_Target {
  31. fixed4 renderTex = tex2D(_MainTex, i.uv);
  32. // 计算亮度改变后的颜色
  33. fixed3 finalColor = renderTex.rgb * _Brightness;
  34. // 计算饱和度改变后的颜色
  35. fixed luminance = 0.2125 * renderTex.r + 0.7154 * renderTex.g + 0.0721 * renderTex.b;
  36. fixed3 luminanceColor = fixed3(luminance, luminance, luminance);
  37. finalColor = lerp(luminanceColor, finalColor, _Saturation);
  38. // 计算对比度改变后的颜色
  39. fixed3 avgColor = fixed3(0.5, 0.5, 0.5);
  40. finalColor = lerp(avgColor, finalColor, _Contrast);
  41. return fixed4(finalColor, renderTex.a);
  42. }
  43. ENDCG
  44. }
  45. }
  46. Fallback Off
  47. }