Unity ShaderLab language preview
1. A basic shader
properties, tags, and an embedded CGPROGRAM block
horizon-dark
Shader "Custom/Simple" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 frag() : SV_Target {
return float4(1, 0, 0, 1);
}
ENDCG
}
}
}
atom-one-dark
Shader "Custom/Simple" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 frag() : SV_Target {
return float4(1, 0, 0, 1);
}
ENDCG
}
}
}
github-dark
Shader "Custom/Simple" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 frag() : SV_Target {
return float4(1, 0, 0, 1);
}
ENDCG
}
}
}
dracula
Shader "Custom/Simple" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 frag() : SV_Target {
return float4(1, 0, 0, 1);
}
ENDCG
}
}
}
nord
Shader "Custom/Simple" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 frag() : SV_Target {
return float4(1, 0, 0, 1);
}
ENDCG
}
}
}
github
Shader "Custom/Simple" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
float4 frag() : SV_Target {
return float4(1, 0, 0, 1);
}
ENDCG
}
}
}
2. Attributes and blend state
property attributes, Blend, and ZTest state
horizon-dark
Properties {
[HideInInspector] _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
[Toggle] _UseFog ("Use Fog", Float) = 1
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
ZTest LEqual
Cull Back
}
atom-one-dark
Properties {
[HideInInspector] _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
[Toggle] _UseFog ("Use Fog", Float) = 1
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
ZTest LEqual
Cull Back
}
github-dark
Properties {
[HideInInspector] _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
[Toggle] _UseFog ("Use Fog", Float) = 1
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
ZTest LEqual
Cull Back
}
dracula
Properties {
[HideInInspector] _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
[Toggle] _UseFog ("Use Fog", Float) = 1
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
ZTest LEqual
Cull Back
}
nord
Properties {
[HideInInspector] _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
[Toggle] _UseFog ("Use Fog", Float) = 1
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
ZTest LEqual
Cull Back
}
github
Properties {
[HideInInspector] _Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
[Toggle] _UseFog ("Use Fog", Float) = 1
}
SubShader {
Blend SrcAlpha OneMinusSrcAlpha
ZWrite Off
ZTest LEqual
Cull Back
}
3. HLSL surface shader
HLSLPROGRAM/ENDHLSL with multi_compile pragmas
horizon-dark
Pass {
HLSLPROGRAM
#pragma vertex vert
#pragma surface surf Standard
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
struct Attributes {
float3 positionOS : POSITION;
};
ENDHLSL
}
atom-one-dark
Pass {
HLSLPROGRAM
#pragma vertex vert
#pragma surface surf Standard
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
struct Attributes {
float3 positionOS : POSITION;
};
ENDHLSL
}
github-dark
Pass {
HLSLPROGRAM
#pragma vertex vert
#pragma surface surf Standard
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
struct Attributes {
float3 positionOS : POSITION;
};
ENDHLSL
}
dracula
Pass {
HLSLPROGRAM
#pragma vertex vert
#pragma surface surf Standard
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
struct Attributes {
float3 positionOS : POSITION;
};
ENDHLSL
}
nord
Pass {
HLSLPROGRAM
#pragma vertex vert
#pragma surface surf Standard
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
struct Attributes {
float3 positionOS : POSITION;
};
ENDHLSL
}
github
Pass {
HLSLPROGRAM
#pragma vertex vert
#pragma surface surf Standard
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
struct Attributes {
float3 positionOS : POSITION;
};
ENDHLSL
}