71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************************
 | 
						|
 | 
						|
Copyright (c) Facebook Technologies, LLC and its affiliates. All rights reserved.
 | 
						|
 | 
						|
See SampleFramework license.txt for license terms.  Unless required by applicable law
 | 
						|
or agreed to in writing, the sample code is provided “AS IS” WITHOUT WARRANTIES OR
 | 
						|
CONDITIONS OF ANY KIND, either express or implied.  See the license for specific
 | 
						|
language governing permissions and limitations under the license.
 | 
						|
 | 
						|
************************************************************************************/
 | 
						|
 | 
						|
Shader "Custom/TriPlanarWorld" {
 | 
						|
	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
 | 
						|
	}
 | 
						|
	SubShader {
 | 
						|
		Tags { "RenderType"="Opaque" }
 | 
						|
		LOD 200
 | 
						|
 | 
						|
		CGPROGRAM
 | 
						|
		// Physically based Standard lighting model, and enable shadows on all light types
 | 
						|
		#pragma surface surf Standard fullforwardshadows vertex:vert
 | 
						|
 | 
						|
		// Use shader model 3.0 target, to get nicer looking lighting
 | 
						|
		#pragma target 3.0
 | 
						|
 | 
						|
		sampler2D _MainTex;
 | 
						|
 | 
						|
		struct Input {
 | 
						|
			float2 uv_MainTex;
 | 
						|
			float3 worldPos;
 | 
						|
			float3 worldNormal;
 | 
						|
			float4 vertColor : COLOR;
 | 
						|
		};
 | 
						|
 | 
						|
		half _Glossiness;
 | 
						|
		half _Metallic;
 | 
						|
		fixed4 _Color;
 | 
						|
 | 
						|
		void vert(inout appdata_full v, out Input o) {
 | 
						|
			UNITY_INITIALIZE_OUTPUT(Input, o);
 | 
						|
			o.vertColor = v.color;
 | 
						|
			o.vertColor = float4(1, 0, 1, 1);
 | 
						|
		}
 | 
						|
 | 
						|
		void surf (Input IN, inout SurfaceOutputStandard o) {
 | 
						|
			float3 absNormal = abs(IN.worldNormal);
 | 
						|
 | 
						|
			// exponentially scale the absNormal so that it strongly biases to a single cardinal axis.
 | 
						|
			absNormal = normalize(pow(absNormal, 5));
 | 
						|
 | 
						|
			fixed4 x = tex2D(_MainTex, IN.worldPos.yz);
 | 
						|
			fixed4 y = tex2D(_MainTex, IN.worldPos.xz);
 | 
						|
			fixed4 z = tex2D(_MainTex, IN.worldPos.xy);
 | 
						|
 | 
						|
			fixed4 c = x * absNormal.x + y * absNormal.y + z * absNormal.z;
 | 
						|
			c *= _Color * IN.vertColor;
 | 
						|
			o.Albedo = c.rgb;
 | 
						|
			o.Metallic = _Metallic;
 | 
						|
			o.Smoothness = _Glossiness;
 | 
						|
			o.Alpha = c.a;
 | 
						|
			//o.Albedo = abs(IN.worldNormal);
 | 
						|
		}
 | 
						|
		ENDCG
 | 
						|
	}
 | 
						|
	FallBack "Diffuse"
 | 
						|
}
 |