Created
January 24, 2020 16:11
-
-
Save BenWoodford/c49c477f4344c724fe00ce6c1e581d14 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
// Upgrade NOTE: commented out 'float4 unity_LightmapST', a built-in variable | |
// Upgrade NOTE: commented out 'sampler2D unity_Lightmap', a built-in variable | |
// Upgrade NOTE: replaced tex2D unity_Lightmap with UNITY_SAMPLE_TEX2D | |
// Made with Amplify Shader Editor | |
// Available at the Unity Asset Store - http://u3d.as/y3X | |
Shader "Fennec Labs/Environment" | |
{ | |
Properties | |
{ | |
_MainTex("Albedo", 2D) = "white" {} | |
[HideInInspector][PerRendererData]unity_Lightmap("unity_Lightmap", 2D) = "white" {} | |
_BumpMap("Normal Map", 2D) = "bump" {} | |
_EmissionMap("Emission", 2D) = "white" {} | |
_MetallicGlossMap("Metallic", 2D) = "white" {} | |
[HDR]_EmissionColor("Emission Colour", Color) = (1,1,1,1) | |
_Color("Color", Color) = (1,1,1,1) | |
_GlossMapScale("Smoothness", Float) = 0 | |
[HideInInspector] _texcoord2( "", 2D ) = "white" {} | |
[HideInInspector] _texcoord( "", 2D ) = "white" {} | |
[HideInInspector] __dirty( "", Int ) = 1 | |
[Header(Forward Rendering Options)] | |
[ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0 | |
[ToggleOff] _GlossyReflections("Reflections", Float) = 1.0 | |
} | |
SubShader | |
{ | |
Tags{ "RenderType" = "Opaque" "Queue" = "Geometry+0" "IsEmissive" = "true" } | |
Cull Back | |
CGINCLUDE | |
#include "UnityPBSLighting.cginc" | |
#include "Lighting.cginc" | |
#pragma target 3.0 | |
#pragma shader_feature _SPECULARHIGHLIGHTS_OFF | |
#pragma shader_feature _GLOSSYREFLECTIONS_OFF | |
#include "BakeryASE.cginc" | |
#ifdef UNITY_PASS_SHADOWCASTER | |
#undef INTERNAL_DATA | |
#undef WorldReflectionVector | |
#undef WorldNormalVector | |
#define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2; | |
#define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))) | |
#define WorldNormalVector(data,normal) half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)) | |
#endif | |
struct Input | |
{ | |
float2 uv_texcoord; | |
float2 uv2_texcoord2; | |
float3 worldNormal; | |
INTERNAL_DATA | |
float3 worldPos; | |
}; | |
uniform float4 _Color; | |
uniform sampler2D _MainTex; | |
uniform float4 _MainTex_ST; | |
// uniform sampler2D unity_Lightmap; | |
// uniform float4 unity_LightmapST; | |
uniform sampler2D _BumpMap; | |
uniform float4 _BumpMap_ST; | |
uniform sampler2D _MetallicGlossMap; | |
uniform float4 _MetallicGlossMap_ST; | |
uniform float _GlossMapScale; | |
uniform sampler2D _EmissionMap; | |
uniform float4 _EmissionMap_ST; | |
uniform float4 _EmissionColor; | |
float3 BakerySpecularSH( float3 L0 , float3 normalWorld , float2 uv , float3 viewDir , float smoothness , out float3 specularSH ) | |
{ | |
float2 uvOut = 1; | |
LightmapUV_float(uv, uvOut); | |
float3 diff = 0; | |
BakerySpecSH_float(L0, normalWorld, uvOut, viewDir, smoothness, diff, specularSH); | |
return diff; | |
} | |
void surf( Input i , inout SurfaceOutputStandard o ) | |
{ | |
o.Normal = float3(0,0,1); | |
float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw; | |
float4 temp_output_94_0 = ( _Color * tex2D( _MainTex, uv_MainTex ) ); | |
o.Albedo = temp_output_94_0.rgb; | |
float3 L019_g37 = UNITY_SAMPLE_TEX2D( unity_Lightmap, (i.uv2_texcoord2*(unity_LightmapST).xy + (unity_LightmapST).zw) ).rgb; | |
float3 ase_worldTangent = WorldNormalVector( i, float3( 1, 0, 0 ) ); | |
float2 uv_BumpMap = i.uv_texcoord * _BumpMap_ST.xy + _BumpMap_ST.zw; | |
float3 mapNormal16_g38 = UnpackNormal( tex2D( _BumpMap, uv_BumpMap ) ); | |
float3 ase_worldBitangent = WorldNormalVector( i, float3( 0, 1, 0 ) ); | |
float3 ase_worldNormal = WorldNormalVector( i, float3( 0, 0, 1 ) ); | |
float3 normalWorld19_g37 = ( ( ase_worldTangent * mapNormal16_g38.x ) + ( ase_worldBitangent * mapNormal16_g38.y ) + ( ase_worldNormal * mapNormal16_g38.z ) ); | |
float2 uv19_g37 = i.uv2_texcoord2; | |
float3 ase_worldPos = i.worldPos; | |
float3 ase_worldViewDir = normalize( UnityWorldSpaceViewDir( ase_worldPos ) ); | |
float3 viewDir19_g37 = ase_worldViewDir; | |
float2 uv_MetallicGlossMap = i.uv_texcoord * _MetallicGlossMap_ST.xy + _MetallicGlossMap_ST.zw; | |
float4 tex2DNode88 = tex2D( _MetallicGlossMap, uv_MetallicGlossMap ); | |
float smoothness19_g37 = ( tex2DNode88.a * _GlossMapScale ); | |
float3 specularSH19_g37 = float3( 0,0,0 ); | |
float3 localBakerySpecularSH19_g37 = BakerySpecularSH( L019_g37 , normalWorld19_g37 , uv19_g37 , viewDir19_g37 , smoothness19_g37 , specularSH19_g37 ); | |
float2 uv_EmissionMap = i.uv_texcoord * _EmissionMap_ST.xy + _EmissionMap_ST.zw; | |
o.Emission = ( ( temp_output_94_0 * float4( localBakerySpecularSH19_g37 , 0.0 ) ) + float4( specularSH19_g37 , 0.0 ) + ( tex2D( _EmissionMap, uv_EmissionMap ) * _EmissionColor ) ).rgb; | |
o.Metallic = (tex2DNode88).rgb.x; | |
o.Occlusion = 1.0; | |
o.Alpha = 1; | |
} | |
ENDCG | |
CGPROGRAM | |
#pragma surface surf Standard keepalpha fullforwardshadows exclude_path:deferred | |
ENDCG | |
Pass | |
{ | |
Name "ShadowCaster" | |
Tags{ "LightMode" = "ShadowCaster" } | |
ZWrite On | |
CGPROGRAM | |
#pragma vertex vert | |
#pragma fragment frag | |
#pragma target 3.0 | |
#pragma multi_compile_shadowcaster | |
#pragma multi_compile UNITY_PASS_SHADOWCASTER | |
#pragma skip_variants FOG_LINEAR FOG_EXP FOG_EXP2 | |
#include "HLSLSupport.cginc" | |
#if ( SHADER_API_D3D11 || SHADER_API_GLCORE || SHADER_API_GLES || SHADER_API_GLES3 || SHADER_API_METAL || SHADER_API_VULKAN ) | |
#define CAN_SKIP_VPOS | |
#endif | |
#include "UnityCG.cginc" | |
#include "Lighting.cginc" | |
#include "UnityPBSLighting.cginc" | |
struct v2f | |
{ | |
V2F_SHADOW_CASTER; | |
float4 customPack1 : TEXCOORD1; | |
float4 tSpace0 : TEXCOORD2; | |
float4 tSpace1 : TEXCOORD3; | |
float4 tSpace2 : TEXCOORD4; | |
UNITY_VERTEX_INPUT_INSTANCE_ID | |
UNITY_VERTEX_OUTPUT_STEREO | |
}; | |
v2f vert( appdata_full v ) | |
{ | |
v2f o; | |
UNITY_SETUP_INSTANCE_ID( v ); | |
UNITY_INITIALIZE_OUTPUT( v2f, o ); | |
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o ); | |
UNITY_TRANSFER_INSTANCE_ID( v, o ); | |
Input customInputData; | |
float3 worldPos = mul( unity_ObjectToWorld, v.vertex ).xyz; | |
half3 worldNormal = UnityObjectToWorldNormal( v.normal ); | |
half3 worldTangent = UnityObjectToWorldDir( v.tangent.xyz ); | |
half tangentSign = v.tangent.w * unity_WorldTransformParams.w; | |
half3 worldBinormal = cross( worldNormal, worldTangent ) * tangentSign; | |
o.tSpace0 = float4( worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x ); | |
o.tSpace1 = float4( worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y ); | |
o.tSpace2 = float4( worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z ); | |
o.customPack1.xy = customInputData.uv_texcoord; | |
o.customPack1.xy = v.texcoord; | |
o.customPack1.zw = customInputData.uv2_texcoord2; | |
o.customPack1.zw = v.texcoord1; | |
TRANSFER_SHADOW_CASTER_NORMALOFFSET( o ) | |
return o; | |
} | |
half4 frag( v2f IN | |
#if !defined( CAN_SKIP_VPOS ) | |
, UNITY_VPOS_TYPE vpos : VPOS | |
#endif | |
) : SV_Target | |
{ | |
UNITY_SETUP_INSTANCE_ID( IN ); | |
Input surfIN; | |
UNITY_INITIALIZE_OUTPUT( Input, surfIN ); | |
surfIN.uv_texcoord = IN.customPack1.xy; | |
surfIN.uv2_texcoord2 = IN.customPack1.zw; | |
float3 worldPos = float3( IN.tSpace0.w, IN.tSpace1.w, IN.tSpace2.w ); | |
half3 worldViewDir = normalize( UnityWorldSpaceViewDir( worldPos ) ); | |
surfIN.worldPos = worldPos; | |
surfIN.worldNormal = float3( IN.tSpace0.z, IN.tSpace1.z, IN.tSpace2.z ); | |
surfIN.internalSurfaceTtoW0 = IN.tSpace0.xyz; | |
surfIN.internalSurfaceTtoW1 = IN.tSpace1.xyz; | |
surfIN.internalSurfaceTtoW2 = IN.tSpace2.xyz; | |
SurfaceOutputStandard o; | |
UNITY_INITIALIZE_OUTPUT( SurfaceOutputStandard, o ) | |
surf( surfIN, o ); | |
#if defined( CAN_SKIP_VPOS ) | |
float2 vpos = IN.pos; | |
#endif | |
SHADOW_CASTER_FRAGMENT( IN ) | |
} | |
ENDCG | |
} | |
} | |
Fallback "Diffuse" | |
CustomEditor "ASEMaterialInspector" | |
} | |
/*ASEBEGIN | |
Version=17300 | |
-2560;42;2396;1263;426.4603;244.5938;1;True;False | |
Node;AmplifyShaderEditor.RangedFloatNode;89;-22.62122,531.8707;Inherit;False;Property;_GlossMapScale;Smoothness;11;0;Create;False;0;0;False;0;0;1;0;0;0;1;FLOAT;0 | |
Node;AmplifyShaderEditor.SamplerNode;88;-121.6212,320.8707;Inherit;True;Property;_MetallicGlossMap;Metallic;8;0;Create;False;0;0;False;0;-1;None;05dda870046780f4e9898c765a1986fa;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.SamplerNode;86;-103.6212,92.8707;Inherit;True;Property;_BumpMap;Normal Map;6;0;Create;False;0;0;False;0;-1;None;5b6533e67e108324a8555bc0cfc08062;True;0;True;bump;Auto;True;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;FLOAT3;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.ColorNode;105;309.3431,-276.1795;Inherit;False;Property;_Color;Color;10;0;Create;True;0;0;False;0;1,1,1,1;0.3999998,0.3999998,0.3999998,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.SamplerNode;85;-103.6212,-144.1293;Inherit;True;Property;_MainTex;Albedo;0;0;Create;False;0;0;False;0;-1;None;d9ff756685c42134d806fdaadac4bbe0;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;90;271.3788,455.8707;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;0;False;1;FLOAT;0 | |
Node;AmplifyShaderEditor.SamplerNode;87;-112.6212,660.8707;Inherit;True;Property;_EmissionMap;Emission;7;0;Create;False;0;0;False;0;-1;None;431246c8fdc60904fa4ec5c759a16067;True;0;False;white;Auto;False;Object;-1;Auto;Texture2D;6;0;SAMPLER2D;;False;1;FLOAT2;0,0;False;2;FLOAT;0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT;1;False;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.ColorNode;96;-67.62122,862.8707;Inherit;False;Property;_EmissionColor;Emission Colour;9;1;[HDR];Create;False;0;0;False;0;1,1,1,1;0,0,0,1;True;0;5;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;94;868.3788,41.8707;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 | |
Node;AmplifyShaderEditor.FunctionNode;124;527.3788,208.8707;Inherit;False;BakerySpecSH;1;;37;9e8d5a0cc4fa4974c8718b5b8608de01;0;2;37;FLOAT;0;False;23;FLOAT3;0,0,0;False;2;FLOAT3;39;FLOAT3;0 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;98;239.3788,771.8707;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;1;COLOR;0 | |
Node;AmplifyShaderEditor.SimpleMultiplyOpNode;109;1053.217,141.7541;Inherit;False;2;2;0;COLOR;0,0,0,0;False;1;FLOAT3;0,0,0;False;1;COLOR;0 | |
Node;AmplifyShaderEditor.RangedFloatNode;91;1243.922,552.4329;Inherit;False;Constant;_0;0;5;0;Create;True;0;0;False;0;1;0;0;0;0;1;FLOAT;0 | |
Node;AmplifyShaderEditor.SimpleAddOpNode;110;1236.679,354.236;Inherit;False;3;3;0;COLOR;0,0,0,0;False;1;FLOAT3;0,0,0;False;2;COLOR;0,0,0,0;False;1;COLOR;0 | |
Node;AmplifyShaderEditor.ComponentMaskNode;126;209.5397,328.4062;Inherit;False;True;True;True;False;1;0;COLOR;0,0,0,0;False;1;FLOAT3;0 | |
Node;AmplifyShaderEditor.StandardSurfaceOutputNode;84;1626.255,154.1687;Float;False;True;-1;2;ASEMaterialInspector;0;0;Standard;Fennec Labs/Environment;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;True;False;Back;0;False;-1;0;False;-1;False;0;False;-1;0;False;-1;False;0;Opaque;0.5;True;True;0;False;Opaque;;Geometry;ForwardOnly;14;all;True;True;True;True;0;False;-1;False;0;False;-1;255;False;-1;255;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;-1;False;2;15;10;25;False;0.5;True;0;0;False;-1;0;False;-1;0;0;False;-1;0;False;-1;0;False;-1;0;False;-1;0;False;0;0,0,0,0;VertexOffset;True;False;Cylindrical;False;Relative;0;;-1;-1;-1;-1;0;False;0;0;False;-1;-1;0;False;-1;0;0;0;False;0.1;False;-1;0;False;-1;16;0;FLOAT3;0,0,0;False;1;FLOAT3;0,0,0;False;2;FLOAT3;0,0,0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT3;0,0,0;False;7;FLOAT3;0,0,0;False;8;FLOAT;0;False;9;FLOAT;0;False;10;FLOAT;0;False;13;FLOAT3;0,0,0;False;11;FLOAT3;0,0,0;False;12;FLOAT3;0,0,0;False;14;FLOAT4;0,0,0,0;False;15;FLOAT3;0,0,0;False;0 | |
WireConnection;90;0;88;4 | |
WireConnection;90;1;89;0 | |
WireConnection;94;0;105;0 | |
WireConnection;94;1;85;0 | |
WireConnection;124;37;90;0 | |
WireConnection;124;23;86;0 | |
WireConnection;98;0;87;0 | |
WireConnection;98;1;96;0 | |
WireConnection;109;0;94;0 | |
WireConnection;109;1;124;0 | |
WireConnection;110;0;109;0 | |
WireConnection;110;1;124;39 | |
WireConnection;110;2;98;0 | |
WireConnection;126;0;88;0 | |
WireConnection;84;0;94;0 | |
WireConnection;84;2;110;0 | |
WireConnection;84;3;126;0 | |
WireConnection;84;5;91;0 | |
ASEEND*/ | |
//CHKSM=BBA8E04A691FA229FC9C66B347584C1D551687D3 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment