Skip to content

Instantly share code, notes, and snippets.

@drewcassidy
Created May 21, 2023 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drewcassidy/c013174ba7a9bb192815db920f5150d0 to your computer and use it in GitHub Desktop.
Save drewcassidy/c013174ba7a9bb192815db920f5150d0 to your computer and use it in GitHub Desktop.
Why does this work in Unity 2019 but not 2017?
Shader "KSP/Bumped Specular Soot"
{
Properties
{
[Header(Texture Maps)]
_MainTex("_MainTex (RGB spec(A))", 2D) = "gray" {}
_Soot1("_Soot1", 2D) = "gray" {}
_Soot2("_Soot2", 2D) = "gray" {}
_Alpha1 ("_Alpha1", Range (0, 1)) = 0
_Alpha2 ("_Alpha2", Range (0, 1)) = 0
_Spec1 ("_Spec1", Range (0, 1)) = 0
_Spec2 ("_Spec2", Range (0, 1)) = 0
_BumpMap("_BumpMap", 2D) = "bump" {}
_Color ("_Color", Color) = (1,1,1,1)
[Header(Specularity)]
_SpecColor ("_SpecColor", Color) = (0.5, 0.5, 0.5, 1)
_Shininess ("_Shininess", Range (0.03, 1)) = 0.4
[Header(Effects)]
[PerRendererData]_Opacity("_Opacity", Range(0,1) ) = 1
[PerRendererData]_RimFalloff("_RimFalloff", Range(0.01,5) ) = 0.1
[PerRendererData]_RimColor("_RimColor", Color) = (0,0,0,0)
[PerRendererData]_TemperatureColor("_TemperatureColor", Color) = (0,0,0,0)
[PerRendererData]_BurnColor ("Burn Color", Color) = (1,1,1,1)
[PerRendererData]_UnderwaterFogFactor ("Underwater Fog Factor", Range(0,1)) = 0
}
SubShader
{
Tags { "RenderType"="Opaque" }
ZWrite On
ZTest LEqual
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma surface surf BlinnPhong keepalpha
#pragma target 3.0
half _Shininess;
sampler2D _MainTex;
sampler2D _Soot1;
sampler2D _Soot2;
sampler2D _BumpMap;
float _Alpha1;
float _Alpha2;
float _Spec1;
float _Spec2;
float _Opacity;
float _RimFalloff;
float4 _RimColor;
float4 _TemperatureColor;
float4 _BurnColor;
struct Input
{
float2 uv_MainTex : TEXCOORD0;
float2 uv2_Soot1: TEXCOORD1;
float2 uv2_Soot2: TEXCOORD1;
float2 uv_BumpMap;
float3 viewDir;
float3 worldPos;
float4 color : COLOR;
};
void surf (Input IN, inout SurfaceOutput o)
{
float4 color = tex2D(_MainTex,(IN.uv_MainTex));
float3 normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
float4 soot1 = tex2D(_Soot1,(IN.uv2_Soot1));
float4 soot2 = tex2D(_Soot2,(IN.uv2_Soot2));
_Alpha1 = soot1.a * _Alpha1;
_Alpha2 = soot2.a * _Alpha2;
soot1.a = _Spec1;
soot2.a = _Spec2;
color = lerp(color, soot1, _Alpha1);
color = lerp(color, soot2, _Alpha2);
color = color * _BurnColor * _Color * IN.color;
half rim = 1.0 - saturate(dot (normalize(IN.viewDir), normal));
float3 emission = (_RimColor.rgb * pow(rim, _RimFalloff)) * _RimColor.a;
emission += _TemperatureColor.rgb * _TemperatureColor.a;
o.Albedo = fog.rgb;
o.Emission = emission;
o.Gloss = color.a;
o.Specular = _Shininess;
o.Normal = normal;
o.Emission *= _Opacity * color.a;
o.Alpha = _Opacity * color.a;
}
ENDCG
}
Fallback "Standard"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment