Shader "SkyboxPlus/Cubemap" { Properties { [NoScaleOffset] _Tex("-", Cube) = "grey"{} _Tint("-", Color) = (.5, .5, .5) _Euler("-", Vector) = (0, 0, 0) [HideInInspector] _Rotation1("-", Vector) = (1, 0, 0) [HideInInspector] _Rotation2("-", Vector) = (0, 1, 0) [HideInInspector] _Rotation3("-", Vector) = (0, 0, 1) [Gamma] _Exposure("-", Range(0, 8)) = 1 _Saturation("-", Range(0, 2)) = 1 [Toggle] _Lod("-", Float) = 0 _LodLevel("-", Range(0, 10)) = 0 } CGINCLUDE #pragma shader_feature _LOD_ON #include "UnityCG.cginc" samplerCUBE _Tex; half4 _Tex_HDR; half4 _Tint; half _Exposure; half _Saturation; float _LodLevel; float4 _Rotation1; float4 _Rotation2; float4 _Rotation3; struct appdata_t { float4 vertex : POSITION; }; struct v2f { float4 vertex : SV_POSITION; float3 texcoord : TEXCOORD0; }; v2f vert(appdata_t v) { v2f o; float3x3 m = float3x3(_Rotation1.xyz, _Rotation2.xyz, _Rotation3.xyz); float4 vp = float4(mul(m, v.vertex.xyz), v.vertex.w); o.vertex = UnityObjectToClipPos(vp); o.texcoord = v.vertex.xyz; return o; } fixed4 frag(v2f i) : SV_Target { #ifdef _LOD_ON half4 tex = texCUBElod(_Tex, float4(i.texcoord, _LodLevel)); #else half4 tex = texCUBE(_Tex, i.texcoord); #endif half3 c = DecodeHDR(tex, _Tex_HDR); c *= _Tint.rgb * unity_ColorSpaceDouble.rgb * _Exposure; c = lerp((half3)Luminance(c), c, _Saturation); return half4(c, 1); } ENDCG SubShader { Tags { "Queue"="Background" "RenderType"="Background" "PreviewType"="Skybox" } Cull Off ZWrite Off Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag ENDCG } } Fallback Off CustomEditor "SkyboxPlus.CubemapMaterialEditor" }