Guest User

Untitled

a guest
Dec 16th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. Shader "Deformed/Basic"
  2. {
  3.  
  4. Properties
  5. {
  6. _Color ("Main Color", Color) = (.5,.5,.5,1)
  7. _MainTex ("Base (RGB)", 2D) = "white" {}
  8. _Distance ("Distance", Float) = 4.0
  9. }
  10.  
  11. SubShader
  12. {
  13.  
  14. Pass
  15. {
  16. CGPROGRAM
  17.  
  18. #pragma exclude_renderers xbox360
  19.  
  20. #pragma vertex vert
  21. #pragma fragment frag
  22. #pragma fragmentoption ARB_precision_hint_fastest
  23.  
  24. #include "UnityCG.cginc"
  25.  
  26. float4 _Color;
  27. sampler2D _MainTex;
  28. float4 _MainTex_ST;
  29. float _Distance;
  30.  
  31. struct appdata
  32. {
  33. float4 vertex : POSITION;
  34. float2 texcoord : TEXCOORD0;
  35. float3 normal : NORMAL;
  36. };
  37.  
  38. struct v2f
  39. {
  40. float4 pos : POSITION;
  41. float2 texcoord : TEXCOORD0;
  42. float3 normal;
  43. };
  44.  
  45. v2f vert (appdata v)
  46. {
  47. float4 transformedVertex = mul(_Object2World, v.vertex);
  48.  
  49. float3 transformedUnitVertex = normalize(float3(
  50. - transformedVertex.x,
  51. - transformedVertex.y,
  52. _Distance
  53. ));
  54.  
  55. float4 distortedVertex = float4(
  56. transformedUnitVertex.x * (transformedVertex.z - _Distance - 0.5f),
  57. transformedUnitVertex.y * (transformedVertex.z - _Distance - 0.5f),
  58. transformedUnitVertex.z * (transformedVertex.z - _Distance - 0.5f),
  59. 1.0
  60. );
  61.  
  62. float4 distortedModelspaceVertex = mul(_World2Object, distortedVertex);
  63.  
  64. v2f vd;
  65.  
  66. vd.pos = mul(UNITY_MATRIX_MVP, distortedModelspaceVertex);
  67. vd.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
  68. vd.normal = v.normal;
  69.  
  70. return vd;
  71. }
  72.  
  73. float4 frag (v2f i) : COLOR
  74. {
  75. float d = clamp(dot(i.normal, float3(0.0, 0.0, -1.0)), 0.0, 1.0);
  76. float4 s = tex2D(_MainTex, i.texcoord);
  77.  
  78. return _Color * (s * 0.5 + s * d * 0.5);
  79. }
  80.  
  81. ENDCG
  82. }
  83.  
  84. }
  85.  
  86. FallBack "Diffuse"
  87.  
  88. }
Add Comment
Please, Sign In to add comment