EnviroHDRPSkyRenderer.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #if ENVIRO_HDRP
  2. using System.Collections;
  3. using UnityEngine.Rendering;
  4. namespace UnityEngine.Rendering.HighDefinition
  5. {
  6. class EnviroHDRPSkyRenderer : SkyRenderer
  7. {
  8. Material skyMat;
  9. MaterialPropertyBlock m_PropertyBlock = new MaterialPropertyBlock();
  10. public EnviroHDRPSkyRenderer()
  11. {
  12. }
  13. public override void Build()
  14. {
  15. if(skyMat == null)
  16. skyMat = CoreUtils.CreateEngineMaterial(Shader.Find("Enviro/HDRP/Sky"));
  17. }
  18. public override void Cleanup()
  19. {
  20. CoreUtils.Destroy(skyMat);
  21. }
  22. public override void RenderSky(BuiltinSkyParameters builtinParams, bool renderForCubemap, bool renderSunDisk)
  23. {
  24. if (Enviro.EnviroManager.instance == null || Enviro.EnviroManager.instance.Sky == null)
  25. return;
  26. if (skyMat == null)
  27. Build();
  28. Enviro.EnviroManager.instance.Sky.UpdateSkybox(skyMat);
  29. var enviroSky = builtinParams.skySettings as EnviroHDRPSky;
  30. Shader.SetGlobalMatrix("_PixelCoordToViewDirWS", builtinParams.pixelCoordToViewDirMatrix);
  31. Shader.SetGlobalFloat("_EnviroSkyIntensity", GetSkyIntensity(enviroSky, builtinParams.debugSettings));
  32. m_PropertyBlock.SetMatrix("_PixelCoordToViewDirWS", builtinParams.pixelCoordToViewDirMatrix);
  33. // m_PropertyBlock.SetFloat("_EnviroSkyIntensity", GetSkyIntensity(enviroSky, builtinParams.debugSettings));
  34. if (builtinParams.hdCamera.camera.cameraType != CameraType.Reflection)
  35. Enviro.EnviroManager.instance.Sky.mySkyboxMat = skyMat;
  36. CoreUtils.DrawFullScreen(builtinParams.commandBuffer, skyMat, m_PropertyBlock, renderForCubemap ? 0 : 1);
  37. }
  38. }
  39. }
  40. #endif