Created
December 7, 2018 16:24
-
-
Save josephbk117/9de371dba6d063098082b1a2130062b2 to your computer and use it in GitHub Desktop.
Unity built in Terrain Diffuse Shader
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
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) | |
Shader "Nature/Terrain/Diffuse" { | |
Properties { | |
[HideInInspector] _Control ("Control (RGBA)", 2D) = "red" {} | |
[HideInInspector] _Splat3 ("Layer 3 (A)", 2D) = "white" {} | |
[HideInInspector] _Splat2 ("Layer 2 (B)", 2D) = "white" {} | |
[HideInInspector] _Splat1 ("Layer 1 (G)", 2D) = "white" {} | |
[HideInInspector] _Splat0 ("Layer 0 (R)", 2D) = "white" {} | |
[HideInInspector] _Normal3 ("Normal 3 (A)", 2D) = "bump" {} | |
[HideInInspector] _Normal2 ("Normal 2 (B)", 2D) = "bump" {} | |
[HideInInspector] _Normal1 ("Normal 1 (G)", 2D) = "bump" {} | |
[HideInInspector] _Normal0 ("Normal 0 (R)", 2D) = "bump" {} | |
// used in fallback on old cards & base map | |
[HideInInspector] _MainTex ("BaseMap (RGB)", 2D) = "white" {} | |
[HideInInspector] _Color ("Main Color", Color) = (1,1,1,1) | |
} | |
CGINCLUDE | |
#pragma surface surf Lambert vertex:SplatmapVert finalcolor:SplatmapFinalColor finalprepass:SplatmapFinalPrepass finalgbuffer:SplatmapFinalGBuffer noinstancing | |
#pragma multi_compile_fog | |
#include "TerrainSplatmapCommon.cginc" | |
void surf(Input IN, inout SurfaceOutput o) | |
{ | |
half4 splat_control; | |
half weight; | |
fixed4 mixedDiffuse; | |
SplatmapMix(IN, splat_control, weight, mixedDiffuse, o.Normal); | |
o.Albedo = mixedDiffuse.rgb; | |
o.Alpha = weight; | |
} | |
ENDCG | |
Category { | |
Tags { | |
"Queue" = "Geometry-99" | |
"RenderType" = "Opaque" | |
} | |
// TODO: Seems like "#pragma target 3.0 _TERRAIN_NORMAL_MAP" can't fallback correctly on less capable devices? | |
// Use two sub-shaders to simulate different features for different targets and still fallback correctly. | |
SubShader { // for sm3.0+ targets | |
CGPROGRAM | |
#pragma target 3.0 | |
#pragma multi_compile __ _TERRAIN_NORMAL_MAP | |
ENDCG | |
} | |
SubShader { // for sm2.0 targets | |
CGPROGRAM | |
ENDCG | |
} | |
} | |
Dependency "AddPassShader" = "Hidden/TerrainEngine/Splatmap/Diffuse-AddPass" | |
Dependency "BaseMapShader" = "Diffuse" | |
Dependency "Details0" = "Hidden/TerrainEngine/Details/Vertexlit" | |
Dependency "Details1" = "Hidden/TerrainEngine/Details/WavingDoublePass" | |
Dependency "Details2" = "Hidden/TerrainEngine/Details/BillboardWavingDoublePass" | |
Dependency "Tree0" = "Hidden/TerrainEngine/BillboardTree" | |
Fallback "Diffuse" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment