Advertisement
Guest User

Untitled

a guest
May 13th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Shader "Custom/Equirectangular" {
  2.     Properties {
  3.         _Color ("Main Color", Color) = (1,1,1,1)
  4.         _MainTex ("Diffuse (RGB) Alpha (A)", 2D) = "gray" {}
  5.     }
  6.  
  7.     SubShader{
  8.         Pass {
  9.             Tags {"LightMode" = "Always"}
  10.  
  11.             CGPROGRAM
  12.                 #pragma vertex vert
  13.                 #pragma fragment frag
  14.                 #pragma fragmentoption ARB_precision_hint_fastest
  15.                 #pragma glsl
  16.                 #pragma target 3.0
  17.  
  18.                 #include "UnityCG.cginc"
  19.  
  20.                 struct appdata {
  21.                    float4 vertex : POSITION;
  22.                    float3 normal : NORMAL;
  23.                 };
  24.  
  25.                 struct v2f
  26.                 {
  27.                     float4    pos : SV_POSITION;
  28.                     float3    normal : TEXCOORD0;
  29.                 };
  30.  
  31.                 v2f vert (appdata v)
  32.                 {
  33.                     v2f o;
  34.                     o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
  35.                     o.normal = v.normal;
  36.                     return o;
  37.                 }
  38.  
  39.                 sampler2D _MainTex;
  40.  
  41.                 #define PI 3.141592653589793
  42.  
  43.                 inline float2 RadialCoords(float3 a_coords)
  44.                 {
  45.                     float3 a_coords_n = normalize(a_coords);
  46.                     float lon = atan2(a_coords_n.z, a_coords_n.x);
  47.                     float lat = acos(a_coords_n.y);
  48.                     float2 sphereCoords = float2(lon, lat) * (1.0 / PI);
  49.                     return float2(sphereCoords.x * 0.5 + 0.5, 1 - sphereCoords.y);
  50.                 }
  51.  
  52.                 float4 frag(v2f IN) : COLOR
  53.                 {
  54.                     float2 equiUV = RadialCoords(IN.normal);
  55.                     return tex2D(_MainTex, equiUV);
  56.                 }
  57.             ENDCG
  58.         }
  59.     }
  60.     FallBack "VertexLit"
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement