Last active
January 10, 2017 23:03
-
-
Save danamuise/08c807b0902df35c63b0d34a0042aded to your computer and use it in GitHub Desktop.
Custom Unity Shaders
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Shader "PACKT/Glass" { | |
// Custom glass shader by Dana Muise | |
// Mutli pass functions provide transparent effects on both sides of geometry. | |
Properties { | |
_Color ("Color", Color) = (1,1,1,1) | |
_MainTex ("Albedo (RGB)", 2D) = "white" {} | |
_Glossiness ("Smoothness", Range(0,1)) = 0.5 | |
_Metallic ("Metallic", Range(0,1)) = 0.0 | |
_Thickness ("Thicknes", Range(-1, 1)) = 0.5 | |
} | |
SubShader { | |
Tags { "RenderType"="Transparent" } | |
LOD 200 | |
Cull Back | |
CGPROGRAM | |
// Physically based Standard lighting model, and enable shadows on all light types | |
#pragma surface surf Standard fullforwardshadows alpha | |
// Use shader model 3.0 target, to get nicer looking lighting | |
#pragma target 3.0 | |
sampler2D _MainTex; | |
struct Input { | |
float2 uv_MainTex; | |
}; | |
half _Glossiness; | |
half _Metallic; | |
fixed4 _Color; | |
void surf (Input IN, inout SurfaceOutputStandard o) { | |
// Albedo comes from a texture tinted by color | |
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; | |
o.Albedo = c.rgb; | |
// Metallic and smoothness come from slider variables | |
o.Metallic = _Metallic; | |
o.Smoothness = _Glossiness; | |
o.Alpha = c.a; | |
} | |
ENDCG | |
Cull Front | |
CGPROGRAM | |
#pragma surface surf Standard fullforwardshadows alpha vertext: vert | |
struct Input { | |
float2 uv_MainTex; | |
}; | |
float _Thickness; | |
//move the coordinates of the verts out by distance "Thickness" | |
void vert (inout appdata_full v) { | |
v.vertex.xyz += v.normal * _Thickness; | |
} | |
//the rest is the same as the previous Cg, just inset to appear as if inside the mesh has it's own shader | |
sampler2D _MainTex; | |
half _Glossiness; | |
half _Metallic; | |
fixed4 _Color; | |
void surf (Input IN, inout SurfaceOutputStandard o) { | |
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color; | |
o.Albedo = c.rgb; | |
o.Metallic = _Metallic; | |
o.Smoothness = _Glossiness; | |
o.Alpha = c.a; | |
} | |
ENDCG | |
} | |
FallBack "Diffuse" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment