分享

Shader的亮度brightness、饱和度saturation、对比度contrast算法

 QomoIT 2019-07-25
                                              Shader "Custom/BSC_Effect" {
Properties {
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_BrightnessAmount("Brightess Amount",Range(0.0,1)) = 1.0
_satAmount("Saturation Amount",Range(0.0,1)) = 1.0
_conAmount("Contrast Amount",Range(0.0,1)) = 1.0
}
SubShader {
Pass
{
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
fixed _BrightnessAmount;
fixed _satAmount;
fixed _conAmount;

float3 ContrastSaturationBrightness(float3 color,float brt,float sat,float con)
{
float AvgLumR = 0.5;
float AvgLumG =0.5;
float AvgLumB = 0.5;
float3 LuminanceCoeff = float3(0.2125,0.7154,0.0721);
float3 AvgLumin = float3(AvgLumR,AvgLumG,AvgLumB);
float3 brtColor = color * brt;
float intensityf = dot(brtColor,LuminanceCoeff);
float3 intensity = float3(intensityf,intensityf,intensityf);

float3 satColor = lerp(intensity,brtColor,sat);

float3 conColor = lerp(AvgLumin,satColor,con);
return conColor;
}

fixed4 frag(v2f_img i) : COLOR
{
fixed4 renderTex=tex2D(_MainTex,i.uv);
renderTex.rgb = ContrastSaturationBrightness(renderTex.rgb,_BrightnessAmount,_satAmount,_conAmount);
return renderTex;
}
ENDCG



}

}

都是前人留下的运算方法,没什么好说的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多