第一个Shader的更新,增加爆光度, 属性改为数值型(更直观,精确)

时间:2024-01-17 20:33:20

Shader "Castle/ColorMix" {
Properties {
// 基本贴图
_MainTex ("Texture Image", 2D) = "white" {}
// 爆光度
_Explosure("Explosure", Float) = 1.0
// 整体提亮
_HighLight("HighLight", Float) = 0
// 混入黑白
_Brightness("Brightness", Float) = 0
// 这里是混入各颜色分量
_Color ("Main Color", COLOR) = (0,0,0,0)
}
SubShader {
Pass {
CGPROGRAM

#pragma vertex vert
#pragma fragment frag

uniform sampler2D _MainTex;
uniform float4 _MainTex_ST;
uniform float _Explosure;
uniform float _HighLight;
uniform float _Brightness;
uniform float4 _Color;

struct vertexInput {
float4 vertex : POSITION;
float4 texcoord : TEXCOORD0;
};
struct vertexOutput {
float4 pos : SV_POSITION;
float4 tex : TEXCOORD0;
};

vertexOutput vert(vertexInput input)
{
vertexOutput output;

output.tex = input.texcoord;
output.pos = mul(UNITY_MATRIX_MVP, input.vertex);
return output;
}

float4 frag(vertexOutput input) : COLOR
{

// 这里改为:先混色偏,再曝光
return (tex2D(_MainTex, _MainTex_ST.xy * input.tex.xy + _MainTex_ST.zw) + _Color) * _Explosure
+ float4(0.21 * _HighLight, 0.72 * _HighLight, 0.07 *_HighLight, 1.0)
+ float4(_Brightness,_Brightness,_Brightness, 0.0);
}

ENDCG
}
}
}