61 lines
1.7 KiB
Plaintext
61 lines
1.7 KiB
Plaintext
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
|
|
|
Shader "Hidden/Internal-CubemapToEquirect" {
|
|
Properties
|
|
{
|
|
_MainTex("Texture", cube) = "" {}
|
|
}
|
|
SubShader {
|
|
Pass{
|
|
ZTest Always Cull Off ZWrite Off
|
|
|
|
CGPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "UnityCG.cginc"
|
|
|
|
uniform float4 _MainTex_ST;
|
|
|
|
struct appdata_t {
|
|
float4 vertex : POSITION;
|
|
float2 texcoord : TEXCOORD0;
|
|
};
|
|
|
|
struct v2f {
|
|
float4 vertex : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
};
|
|
|
|
v2f vert(appdata_t v)
|
|
{
|
|
v2f o;
|
|
o.vertex = UnityObjectToClipPos(v.vertex);
|
|
o.uv = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
|
|
return o;
|
|
}
|
|
|
|
samplerCUBE _MainTex;
|
|
|
|
float3 computeRayDir(float2 tc)
|
|
{
|
|
//based on google's omni-directional stereo rendering thread
|
|
const float PI = 3.14159265;
|
|
float4 scaleOffset = float4(2.0f * PI, PI, -PI, -PI*0.5);
|
|
float2 angles = tc*scaleOffset.xy + scaleOffset.zw;
|
|
float2 angleCos = cos(angles);
|
|
float2 angleSin = sin(angles);
|
|
return float3(angleSin.x * angleCos.y, angleSin.y, angleCos.x * angleCos.y);
|
|
}
|
|
|
|
fixed4 frag(v2f i) : SV_Target
|
|
{
|
|
float3 dir = computeRayDir(i.uv);
|
|
return texCUBE(_MainTex, dir);
|
|
}
|
|
ENDCG
|
|
|
|
}
|
|
}
|
|
Fallback Off
|
|
}
|