SkyCore.cginc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef ENVIRONMENT_SKYCORE
  2. #define ENVIRONMENT_SKYCORE
  3. //skyinput
  4. half4 _SkyUpColor1;
  5. fixed _SkyUpColor2Hight;
  6. half4 _SkyUpColor2;
  7. half4 _SkyUpColor2Back;
  8. half4 _SkyDownColor;
  9. half4 _HorizontalColor;
  10. half4 _HorizontalColorBack;
  11. fixed _HorizontalColorLength;
  12. fixed3 _SunDir;
  13. half _SunSize;
  14. half4 _SunColor;
  15. half4 _SunGlowColor;
  16. half3 GetSkyBoxCol(fixed3 viewDir) {
  17. fixed y = viewDir.y;
  18. fixed vDotS =pow( saturate(dot(_SunDir, viewDir)),2);
  19. half3 upColor = lerp(_SkyUpColor2Back, _SkyUpColor2,vDotS);
  20. fixed upFactor = smoothstep(0, _SkyUpColor2Hight, y);
  21. half3 upColor2 = lerp(upColor, _SkyUpColor1, upFactor);
  22. fixed upDownFactor = step(0, y);
  23. half3 upDownColor = lerp(_SkyDownColor, upColor2, upDownFactor);
  24. fixed horizontaFactor = 1 - smoothstep(0, _HorizontalColorLength, abs(y));
  25. half3 horizontalCol = lerp(_HorizontalColorBack, _HorizontalColor, vDotS);
  26. half3 skyBoxColor = lerp(upDownColor, horizontalCol,pow( horizontaFactor,5));
  27. return skyBoxColor;
  28. }
  29. half3 GetSkyBoxAndSunCol(fixed3 viewDir) {
  30. half3 skyboxCol = GetSkyBoxCol(viewDir);
  31. fixed sDotV = saturate(dot(_SunDir, viewDir));
  32. fixed sunFactor = step(0.998, sDotV);
  33. half3 skyboxAndSunCol = lerp(skyboxCol, _SunColor, sunFactor);
  34. return skyboxAndSunCol + pow(_SunGlowColor * smoothstep(0.8,1,sDotV),2);
  35. }
  36. #endif