Created
May 21, 2023 20:09
-
-
Save drewcassidy/c013174ba7a9bb192815db920f5150d0 to your computer and use it in GitHub Desktop.
Why does this work in Unity 2019 but not 2017?
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 "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