12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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"
- }
|