You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.9 KiB
C#
93 lines
3.9 KiB
C#
|
4 years ago
|
#if ENVIRO_HDRP
|
||
|
|
using System.Collections;
|
||
|
|
using UnityEngine.Rendering;
|
||
|
|
|
||
|
|
namespace UnityEngine.Rendering.HighDefinition
|
||
|
|
{
|
||
|
|
class EnviroSkyboxRenderer : SkyRenderer
|
||
|
|
{
|
||
|
|
Material skyMat; // Renders a cubemap into a render texture (can be cube or 2D)
|
||
|
|
MaterialPropertyBlock m_PropertyBlock = new MaterialPropertyBlock();
|
||
|
|
|
||
|
|
|
||
|
|
public EnviroSkyboxRenderer()
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void Build()
|
||
|
|
{
|
||
|
|
if (EnviroSky.instance == null)
|
||
|
|
return;
|
||
|
|
|
||
|
|
if(skyMat == null)
|
||
|
|
skyMat = CoreUtils.CreateEngineMaterial(Shader.Find("Enviro/HDRP/Skybox"));
|
||
|
|
|
||
|
|
if (EnviroSky.instance.skySettings.starsCubeMap != null)
|
||
|
|
skyMat.SetTexture("_Stars", EnviroSky.instance.skySettings.starsCubeMap);
|
||
|
|
|
||
|
|
if (EnviroSky.instance.skySettings.galaxyCubeMap != null)
|
||
|
|
skyMat.SetTexture("_Galaxy", EnviroSky.instance.skySettings.galaxyCubeMap);
|
||
|
|
|
||
|
|
if (EnviroSky.instance.ressources.aurora_layer_1 != null)
|
||
|
|
skyMat.SetTexture("_Aurora_Layer_1", EnviroSky.instance.ressources.aurora_layer_1);
|
||
|
|
|
||
|
|
if (EnviroSky.instance.ressources.aurora_layer_2 != null)
|
||
|
|
skyMat.SetTexture("_Aurora_Layer_2", EnviroSky.instance.ressources.aurora_layer_2);
|
||
|
|
|
||
|
|
if (EnviroSky.instance.ressources.aurora_colorshift != null)
|
||
|
|
skyMat.SetTexture("_Aurora_Colorshift", EnviroSky.instance.ressources.aurora_colorshift);
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void Cleanup()
|
||
|
|
{
|
||
|
|
CoreUtils.Destroy(skyMat);
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void RenderSky(BuiltinSkyParameters builtinParams, bool renderForCubemap, bool renderSunDisk)
|
||
|
|
{
|
||
|
|
if (EnviroSky.instance == null)
|
||
|
|
return;
|
||
|
|
|
||
|
|
if (skyMat == null)
|
||
|
|
Build();
|
||
|
|
|
||
|
|
EnviroSky.instance.UpdateSkyShaderVariables(skyMat);
|
||
|
|
|
||
|
|
var enviroSky = builtinParams.skySettings as EnviroSkybox;
|
||
|
|
Shader.SetGlobalMatrix("_PixelCoordToViewDirWS", builtinParams.pixelCoordToViewDirMatrix);
|
||
|
|
Shader.SetGlobalFloat("_EnviroSkyIntensity", GetSkyIntensity(enviroSky, builtinParams.debugSettings));
|
||
|
|
|
||
|
|
m_PropertyBlock.SetMatrix("_PixelCoordToViewDirWS", builtinParams.pixelCoordToViewDirMatrix);
|
||
|
|
|
||
|
|
if (builtinParams.hdCamera.camera.cameraType != CameraType.Reflection)
|
||
|
|
EnviroSky.instance.skyMat = skyMat;
|
||
|
|
|
||
|
|
if (EnviroSky.instance.skySettings.starsCubeMap != null)
|
||
|
|
skyMat.SetTexture("_Stars", EnviroSky.instance.skySettings.starsCubeMap);
|
||
|
|
if (EnviroSky.instance.skySettings.galaxyCubeMap != null)
|
||
|
|
skyMat.SetTexture("_Galaxy", EnviroSky.instance.skySettings.galaxyCubeMap);
|
||
|
|
|
||
|
|
CoreUtils.DrawFullScreen(builtinParams.commandBuffer, skyMat, m_PropertyBlock, renderForCubemap ? 0 : 1);
|
||
|
|
|
||
|
|
if (!renderForCubemap)
|
||
|
|
CoreUtils.DrawFullScreen(builtinParams.commandBuffer, skyMat, m_PropertyBlock, 2);
|
||
|
|
|
||
|
|
if(EnviroSky.instance.useFlatClouds && !renderForCubemap)
|
||
|
|
CoreUtils.DrawFullScreen(builtinParams.commandBuffer, skyMat, m_PropertyBlock, 3);
|
||
|
|
|
||
|
|
if (EnviroSky.instance.useAurora && !renderForCubemap)
|
||
|
|
{
|
||
|
|
if (EnviroSky.instance.ressources.aurora_layer_1 != null)
|
||
|
|
skyMat.SetTexture("_Aurora_Layer_1", EnviroSky.instance.ressources.aurora_layer_1);
|
||
|
|
if (EnviroSky.instance.ressources.aurora_layer_2 != null)
|
||
|
|
skyMat.SetTexture("_Aurora_Layer_2", EnviroSky.instance.ressources.aurora_layer_2);
|
||
|
|
if (EnviroSky.instance.ressources.aurora_colorshift != null)
|
||
|
|
skyMat.SetTexture("_Aurora_Colorshift", EnviroSky.instance.ressources.aurora_colorshift);
|
||
|
|
|
||
|
|
CoreUtils.DrawFullScreen(builtinParams.commandBuffer, skyMat, m_PropertyBlock, 4);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#endif
|