Anatomy Of An Unlit Shader
Проверено с версией:: 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 learn the basic structure of an unlit shader and how it works.


Anatomy Of An Unlit Shader
Средняя 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
}
}
}