The Fragment Function and Color Tint
版本检查: 5.6
-
难度: 中级
In this live training session we will learn the fundamentals of authoring shaders for Unity and you will learn how to write your very first shader. In this episode we will explain the purpose of the fragment function in an Unlit shader and add a property to tint the color of our object.


The Fragment Function and Color Tint
中级 Graphics
Download the assets to follow along with this training here.
Note: The code below is not in fact C# code despite the label, it should go inside a new Shader file.
Hologram
Code snippet
Shader "Unlit/SpecialFX/Cool Hologram"
{
Properties
{
_MainTex ("Albedo Texture", 2D) = "white" {}
_TintColor("Tint Color", Color) = (1,1,1,1)
_Transparency("Transparency", Range(0.0,0.5)) = 0.25
_CutoutThresh("Cutout Threshold", Range(0.0,1.0)) = 0.2
_Distance("Distance", Float) = 1
_Amplitude("Amplitude", Float) = 1
_Speed ("Speed", Float) = 1
_Amount("Amount", Range(0.0,1.0)) = 1
}
SubShader
{
Tags {"Queue"="Transparent" "RenderType"="Transparent" }
LOD 100
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _TintColor;
float _Transparency;
float _CutoutThresh;
float _Distance;
float _Amplitude;
float _Speed;
float _Amount;
v2f vert (appdata v)
{
v2f o;
v.vertex.x += sin(_Time.y * _Speed + v.vertex.y * _Amplitude) * _Distance * _Amount;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv) + _TintColor;
col.a = _Transparency;
clip(col.r - _CutoutThresh);
return col;
}
ENDCG
}
}
}