Initialer Upload neues Unity-Projekt
This commit is contained in:
79
Assets/SteamVR/Resources/SteamVR_SphericalProjection.shader
Normal file
79
Assets/SteamVR/Resources/SteamVR_SphericalProjection.shader
Normal file
@ -0,0 +1,79 @@
|
||||
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
|
||||
// UNITY_SHADER_NO_UPGRADE
|
||||
Shader "Custom/SteamVR_SphericalProjection" {
|
||||
Properties {
|
||||
_MainTex ("Base (RGB)", 2D) = "white" {}
|
||||
_N ("N (normal of plane)", Vector) = (0,0,0,0)
|
||||
_Phi0 ("Phi0", Float) = 0
|
||||
_Phi1 ("Phi1", Float) = 1
|
||||
_Theta0 ("Theta0", Float) = 0
|
||||
_Theta1 ("Theta1", Float) = 1
|
||||
_UAxis ("uAxis", Vector) = (0,0,0,0)
|
||||
_VAxis ("vAxis", Vector) = (0,0,0,0)
|
||||
_UOrigin ("uOrigin", Vector) = (0,0,0,0)
|
||||
_VOrigin ("vOrigin", Vector) = (0,0,0,0)
|
||||
_UScale ("uScale", Float) = 1
|
||||
_VScale ("vScale", Float) = 1
|
||||
}
|
||||
|
||||
CGINCLUDE
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
sampler2D _MainTex;
|
||||
float4 _N;
|
||||
float _Phi0, _Phi1, _Theta0, _Theta1;
|
||||
float4 _UAxis, _VAxis;
|
||||
float4 _UOrigin, _VOrigin;
|
||||
float _UScale, _VScale;
|
||||
|
||||
struct v2f {
|
||||
float4 pos : SV_POSITION;
|
||||
float2 tex : TEXCOORD0;
|
||||
};
|
||||
|
||||
v2f vert(appdata_base v) {
|
||||
v2f o;
|
||||
#if UNITY_VERSION >= 540
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
#else
|
||||
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
|
||||
#endif
|
||||
o.tex = float2(
|
||||
lerp(_Phi0, _Phi1, v.texcoord.x),
|
||||
lerp(_Theta0, _Theta1, v.texcoord.y));
|
||||
return o;
|
||||
}
|
||||
|
||||
float3 cartesian(float phi, float theta)
|
||||
{
|
||||
float sinTheta = sin(theta);
|
||||
return float3(
|
||||
sinTheta * sin(phi),
|
||||
cos(theta),
|
||||
sinTheta * cos(phi));
|
||||
}
|
||||
|
||||
float4 frag(v2f i) : COLOR {
|
||||
float3 V = cartesian(i.tex.x, i.tex.y);
|
||||
float3 P = V / dot(V, _N.xyz); // intersection point on plane
|
||||
float2 uv = float2(
|
||||
dot(P - _UOrigin.xyz, _UAxis.xyz) * _UScale,
|
||||
dot(P - _VOrigin.xyz, _VAxis.xyz) * _VScale);
|
||||
return tex2D(_MainTex, uv);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
|
||||
SubShader {
|
||||
Pass {
|
||||
ZTest Always Cull Off ZWrite Off
|
||||
Fog { Mode Off }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user