92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Shader "Custom/SquishyDeform" {
 | |
| 	Properties {
 | |
| 		_MainTex ("Albedo (RGB)", 2D) = "white" {}
 | |
| 		_Metallic("Metallic/Smoothness", 2D) = "white" {}
 | |
| 		_Normal("Normal", 2D) = "bump" {}
 | |
| 		_Deform("Deform Factor", Range(0,1)) = 0
 | |
| 		_PinchDeform("Pinch Deform Factor", Range(0,1)) = 0
 | |
| 		_Rough("Deform Roughness", Range(0,1)) = 0.1
 | |
| 
 | |
| 		_Goo("Goo Texture", 2D) = "white" {}
 | |
| 		_ColorA ("Goo Color A", Color) = (1,1,1,1)
 | |
| 		_ColorB("Goo Color B", Color) = (1,0,0,1)
 | |
| 		_GooN("Goo Flow", 2D) = "bump" {}
 | |
| 
 | |
| 		_Flow("Flow Speed", Vector) = (0,1,0,-1)
 | |
| 		_FlowFac("Flow Factor", Range(-1,1)) = 1
 | |
| 
 | |
| 
 | |
| 	}
 | |
| 	SubShader {
 | |
| 		Tags { "RenderType"="Opaque" }
 | |
| 		LOD 200
 | |
| 
 | |
| 		CGPROGRAM
 | |
| 		// Physically based Standard lighting model, and enable shadows on all light types
 | |
| 		#pragma surface surf Standard fullforwardshadows
 | |
| 
 | |
| 		#pragma target 3.0
 | |
| 		#include "Tessellation.cginc"
 | |
| 
 | |
| 		struct appdata {
 | |
| 			float4 vertex : POSITION;
 | |
| 			float4 tangent : TANGENT;
 | |
| 			float3 normal : NORMAL;
 | |
| 			float2 texcoord : TEXCOORD0;
 | |
| 		};
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 		sampler2D _MainTex;
 | |
| 		sampler2D _Metallic;
 | |
| 		sampler2D _Normal;
 | |
| 		sampler2D _Goo;
 | |
| 		sampler2D _GooN;
 | |
| 
 | |
| 		
 | |
| 
 | |
| 		struct Input {
 | |
| 			float2 uv_MainTex;
 | |
| 			float2 uv_Goo;
 | |
| 			float2 uv_GooN;
 | |
| 			float4 col : COLOR;
 | |
| 		};
 | |
| 
 | |
| 		half _Deform;
 | |
| 		half _PinchDeform;
 | |
| 		half _Rough;
 | |
| 		fixed4 _ColorA;
 | |
| 		fixed4 _ColorB;
 | |
| 		half4 _Flow;
 | |
| 
 | |
| 		half _FlowFac;
 | |
| 
 | |
| 
 | |
| 		void surf (Input IN, inout SurfaceOutputStandard o) {
 | |
| 			// Albedo comes from a texture tinted by color
 | |
| 
 | |
| 			fixed4 goo = _ColorA;
 | |
| 			half t = _Time.r;
 | |
| 			float2 goon = UnpackNormal(tex2D(_GooN, IN.uv_GooN + float2(t*_Flow.x, _Time.r * _Flow.y)));
 | |
| 			half gool = tex2D(_Goo, IN.uv_Goo + float2(t*_Flow.z, t* _Flow.w) + goon * _FlowFac);
 | |
| 
 | |
| 			goo = lerp(goo, _ColorB, gool);
 | |
| 
 | |
| 			fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
 | |
| 			half def = lerp(saturate(_Deform)* saturate(pow(IN.col.r, 0.4)),1, saturate(_PinchDeform)* saturate(pow(IN.col.g, 0.4))) ;
 | |
| 			o.Albedo = lerp(c.rgb,goo,def);
 | |
| 
 | |
| 			o.Normal = UnpackNormal(tex2D(_Normal, IN.uv_MainTex));
 | |
| 
 | |
| 			fixed4 ms = tex2D(_Metallic, IN.uv_MainTex);
 | |
| 			o.Metallic = ms.r;
 | |
| 			o.Smoothness = lerp(ms.a, 1-_Rough, def);
 | |
| 			o.Alpha = c.a;
 | |
| 		}
 | |
| 		ENDCG
 | |
| 	}
 | |
| 	FallBack "Diffuse"
 | |
| }
 |