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.
70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine.Serialization;
|
|
#if ENVIRO_LWRP && ENVIRO_HD
|
|
namespace UnityEngine.Rendering.LWRP
|
|
{
|
|
public class EnviroVolumeCloudsLWRP : UnityEngine.Rendering.Universal.ScriptableRendererFeature
|
|
{
|
|
|
|
EnviroBlitPassVolumeClouds blitPass;
|
|
|
|
private Material cloudsMat;
|
|
private Material blitMat;
|
|
private Material compose;
|
|
private Material downsample;
|
|
|
|
private void CreateMaterialsAndTextures()
|
|
{
|
|
|
|
if (cloudsMat == null)
|
|
cloudsMat = new Material(Shader.Find("Enviro/Standard/RaymarchClouds"));
|
|
|
|
if (blitMat == null)
|
|
blitMat = new Material(Shader.Find("Enviro/Standard/Blit"));
|
|
|
|
if (compose == null)
|
|
compose = new Material(Shader.Find("Hidden/Enviro/Upsample"));
|
|
|
|
if (downsample == null)
|
|
downsample = new Material(Shader.Find("Hidden/Enviro/DepthDownsample"));
|
|
}
|
|
|
|
|
|
public override void Create()
|
|
{
|
|
if (EnviroSkyMgr.instance == null || EnviroSky.instance == null)
|
|
return;
|
|
|
|
CreateMaterialsAndTextures();
|
|
|
|
blitPass = new EnviroBlitPassVolumeClouds(UnityEngine.Rendering.Universal.RenderPassEvent.BeforeRenderingTransparents, cloudsMat,blitMat,compose,downsample, name);
|
|
}
|
|
|
|
public override void AddRenderPasses(UnityEngine.Rendering.Universal.ScriptableRenderer renderer, ref UnityEngine.Rendering.Universal.RenderingData renderingData)
|
|
{
|
|
if (EnviroSkyMgr.instance != null && EnviroSky.instance != null && EnviroSkyMgr.instance.useVolumeClouds && EnviroSky.instance.PlayerCamera != null)
|
|
{
|
|
if(EnviroSky.instance.RenderEnviroOnThisCam(renderingData.cameraData.camera) == false)
|
|
return;
|
|
|
|
if (renderingData.cameraData.camera.cameraType == CameraType.Preview)
|
|
return;
|
|
|
|
//var src = renderer.cameraColorTarget;
|
|
var dest = UnityEngine.Rendering.Universal.RenderTargetHandle.CameraTarget;
|
|
|
|
if (renderingData.cameraData.isSceneViewCamera && !EnviroSky.instance.showVolumeCloudsInEditor)
|
|
return;
|
|
|
|
if (blitPass == null)
|
|
Create();
|
|
|
|
CreateMaterialsAndTextures();
|
|
blitPass.Setup(renderer, dest, renderingData.cameraData.camera);
|
|
|
|
renderer.EnqueuePass(blitPass);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |