#ifndef ENVIRONMENT_SKYCORE #define ENVIRONMENT_SKYCORE //skyinput half4 _SkyUpColor1; fixed _SkyUpColor2Hight; half4 _SkyUpColor2; half4 _SkyUpColor2Back; half4 _SkyDownColor; half4 _HorizontalColor; half4 _HorizontalColorBack; fixed _HorizontalColorLength; fixed3 _SunDir; half _SunSize; half4 _SunColor; half4 _SunGlowColor; half3 GetSkyBoxCol(fixed3 viewDir) { fixed y = viewDir.y; fixed vDotS =pow( saturate(dot(_SunDir, viewDir)),2); half3 upColor = lerp(_SkyUpColor2Back, _SkyUpColor2,vDotS); fixed upFactor = smoothstep(0, _SkyUpColor2Hight, y); half3 upColor2 = lerp(upColor, _SkyUpColor1, upFactor); fixed upDownFactor = step(0, y); half3 upDownColor = lerp(_SkyDownColor, upColor2, upDownFactor); fixed horizontaFactor = 1 - smoothstep(0, _HorizontalColorLength, abs(y)); half3 horizontalCol = lerp(_HorizontalColorBack, _HorizontalColor, vDotS); half3 skyBoxColor = lerp(upDownColor, horizontalCol,pow( horizontaFactor,5)); return skyBoxColor; } half3 GetSkyBoxAndSunCol(fixed3 viewDir) { half3 skyboxCol = GetSkyBoxCol(viewDir); fixed sDotV = saturate(dot(_SunDir, viewDir)); fixed sunFactor = step(0.998, sDotV); half3 skyboxAndSunCol = lerp(skyboxCol, _SunColor, sunFactor); return skyboxAndSunCol + pow(_SunGlowColor * smoothstep(0.8,1,sDotV),2); } #endif