diff options
Diffstat (limited to 'VRCSDK3Worlds/Assets/Bakery/ftSkybox.shader')
| -rw-r--r-- | VRCSDK3Worlds/Assets/Bakery/ftSkybox.shader | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/VRCSDK3Worlds/Assets/Bakery/ftSkybox.shader b/VRCSDK3Worlds/Assets/Bakery/ftSkybox.shader new file mode 100644 index 00000000..fbf2dbeb --- /dev/null +++ b/VRCSDK3Worlds/Assets/Bakery/ftSkybox.shader @@ -0,0 +1,78 @@ +// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' + +Shader "Bakery/Skybox" { +Properties { + _Tint ("Tint Color", Color) = (.5, .5, .5, .5) + _Exposure ("Exposure", Float) = 1.0 + _MatrixRight ("Right", Vector) = (1, 0, 0, 0) + _MatrixUp ("Up", Vector) = (0, 1, 0, 0) + _MatrixForward ("Forward", Vector) = (0, 0, 1, 0) + [NoScaleOffset] _Tex ("Cubemap (HDR)", Cube) = "white" {} + _NoTexture ("No texture", Float) = 0.0 + _Hemispherical ("Hemispherical", Float) = 0.0 +} + +SubShader { + Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" } + Cull Off ZWrite Off + + Pass { + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + samplerCUBE _Tex; + half4 _Tex_HDR; + half4 _Tint; + half _Exposure; + float3 _MatrixRight, _MatrixUp, _MatrixForward; + float4x4 reflection2World; + float _NoTexture, _Hemispherical; + + struct appdata_t { + float4 vertex : POSITION; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f { + float4 vertex : SV_POSITION; + float3 texcoord : TEXCOORD0; + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert (appdata_t v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + float3x3 tform = float3x3(_MatrixRight, _MatrixUp, _MatrixForward); + float3 pos = mul(tform, v.vertex.xyz); + o.vertex = UnityObjectToClipPos(pos); + o.texcoord = mul((float3x3)reflection2World, v.vertex.xyz); + return o; + } + + fixed4 frag (v2f i) : SV_Target + { + half4 tex = _NoTexture < 0.5 ? texCUBE (_Tex, i.texcoord) : half4(1,1,1,1); + half3 c = DecodeHDR (tex, _Tex_HDR); + if (unity_ColorSpaceDouble.x < 3) c = pow(c, 2.2f); + c = c * _Tint.rgb; + c *= _Exposure; + + if (_Hemispherical > 0.0f) c *= i.texcoord.y < 0 ? 0 : 1; + if (unity_ColorSpaceDouble.x < 3) c = pow(c, 1/2.2f); + + return half4(c, 1); + } + ENDCG + } +} + + +Fallback Off + +} |