Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -1260,4 +1260,7 @@ float SharpenAlpha(float alpha, float alphaClipTreshold)
return saturate((alpha - alphaClipTreshold) / max(fwidth(alpha), 0.0001) + 0.5);
}

// These clamping function to max of floating point 16 bit are use to prevent INF in code in case of extreme value
TEMPLATE_1_REAL(ClampToFloat16Max, value, return min(value, HALF_MAX))

#endif // UNITY_COMMON_INCLUDED
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
#ifndef UNITY_COMMON_LIGHTING_INCLUDED
#define UNITY_COMMON_LIGHTING_INCLUDED

// These clamping function to max of floating point 16 bit are use to prevent INF in code in case of extreme value
TEMPLATE_1_REAL(ClampToFloat16Max, value, return min(value, HALF_MAX))

// Ligthing convention
// Light direction is oriented backward (-Z). i.e in shader code, light direction is -lightData.forward

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ In the High Definition Render Pipeline (HDRP), some features work differently be

## Shadows

From Unity 2020.2, it is not necessary to change the [HDRP Config package](HDRP-Config-Package.html) in order to set the [Shadows filtering quality](HDRP-Asset.html#FilteringQualities) for Deferred rendering. Instead the filtering quality can be simply set on the [HDRP Asset](HDRP-Asset.html#FilteringQualities) similarly to what was previously setting only the quality for Forward.
From Unity 2020.2, it is not necessary to change the [HDRP Config package](HDRP-Config-Package.html) in order to set the [Shadows filtering quality](HDRP-Asset.html#FilteringQualities) for Deferred rendering. Instead the filtering quality can be simply set on the [HDRP Asset](HDRP-Asset.html#FilteringQualities) similarly to what was previously setting only the quality for Forward. Note that if previously the Shadow filtering quality wasn't setup on medium on the HDRP Asset you will experience a change of shadow quality as now it will be taken into account.

Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ Pass
#if defined(_ENABLE_SHADOW_MATTE) && SHADERPASS == SHADERPASS_FORWARD_UNLIT
#define LIGHTLOOP_DISABLE_TILE_AND_CLUSTER
#define HAS_LIGHTLOOP
#define SHADOW_OPTIMIZE_REGISTER_USAGE 1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly to the question below, aren't shadow matte unlit with the shadow functions called? If so, why undefining SHADOW_OPTIMIZE_REGISTER_USAGE?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

double define, wasn't required here. part of clode cleanup

#endif

// Dots Instancing
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering.HighDefinition;
using UnityEditor.ShaderGraph;

namespace UnityEditor.Rendering.HighDefinition.ShaderGraph
Expand Down Expand Up @@ -500,6 +500,7 @@ static class UnlitKeywords
{
{ CoreKeywords.HDBase },
{ CoreKeywordDescriptors.DebugDisplay },
{ CoreKeywordDescriptors.Shadow, new FieldCondition(HDFields.EnableShadowMatte, true) },
};
}
#endregion
Expand Down Expand Up @@ -551,8 +552,6 @@ static class UnlitIncludes
{ CoreIncludes.kUnlit, IncludeLocation.Pregraph },
{ CoreIncludes.CoreUtility },
{ CoreIncludes.kShaderGraphFunctions, IncludeLocation.Pregraph },
{ CoreIncludes.kCommonLighting, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kShadowContext, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kHDShadow, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kLightLoopDef, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kPunctualLightCommon, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using UnityEngine.Rendering.HighDefinition;
using UnityEngine.Rendering.HighDefinition;
using UnityEditor.ShaderGraph;

namespace UnityEditor.Rendering.HighDefinition.ShaderGraph
Expand Down Expand Up @@ -341,7 +341,6 @@ static class UnlitIncludes
{ CoreIncludes.CoreUtility },
{ CoreIncludes.kShaderGraphFunctions, IncludeLocation.Pregraph },
{ CoreIncludes.kCommonLighting, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kShadowContext, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kHDShadow, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kLightLoopDef, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
{ CoreIncludes.kPunctualLightCommon, IncludeLocation.Pregraph, new FieldCondition(HDFields.EnableShadowMatte, true) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,6 @@ static class CoreIncludes

// Public Pregraph Function
public const string kCommonLighting = "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonLighting.hlsl";
public const string kShadowContext = "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowContext.hlsl";
public const string kHDShadow = "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/HDShadow.hlsl";
public const string kLightLoopDef = "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl";
public const string kPunctualLightCommon = "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/PunctualLightCommon.hlsl";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ Shader "Hidden/HDRP/DebugViewTiles"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"

#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Material.hlsl"

#define DEBUG_DISPLAY
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@

#define DWORD_PER_TILE 16 // See dwordsPerTile in LightLoop.cs, we have roomm for 31 lights and a number of light value all store on 16 bit (ushort)

// Some file may not required HD shadow context at all. In this case provide an empty one
// Note: if a double defintion error occur it is likely have include HDShadow.hlsl (and so HDShadowContext.hlsl) after lightloopdef.hlsl
#ifndef HAVE_HD_SHADOW_CONTEXT
struct HDShadowContext { float unused; };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the purpose of this? The definition of shadow context will mismatch whatever is going to be used by the functions, so it won't compile anyway?

Copy link
Contributor Author

@sebastienlagarde sebastienlagarde Apr 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HDShadowContext is only define in HDShadowContext. (where I now define HAVE_HD_SHADOW_CONTEXT). Several files required to include LightloopDefs that require a shadow context so all those files include hdshadow.hlsl implicitely via lighting.hlsl whereas they don't need all those files. To remove those around 8 files dependency just to declare a HDShadowContext that is not used, we do this. (See the example of ContactShadows.compute where we can removed
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"

BTW, ContactShadow.compute was suppose to define a shadow mode because it was including the lighting.hlsl. BUT by luck (or badluck), the volumetric and voxelize test with
#if SHADERPASS == VOLUMETRICLIGHTING
#define SHADOW_LOW
#endif

this was define. Because SHADERPASS wasn't define...

i.e lot of random behavior that I wanted to clean as none of this is used.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see, though unless I am missing something this now creates a dependency on the order of include so I guess that would need to be made more explicit in comments.

Say I include HDShadowContext.hlsl after I include LightloopDef , I will double define the struct which I assume will not compile.
Not sure if that dependency already exists, but I can see it creating some potentially tricky issues

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

problem is already there, you can't do it the other way :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, but before it would complain about a struct not being defined (so it is obvious you are missing an include), now it will complain about it being defined twice which is a bit less obvious. I would add a small comment in here that if the double defintion error occur is likely because you need to include HDShadowContext.hlsl beforehand

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a comment.

but before it would complain about a struct not being defined
if you do wrong order guess there is more trouble than this one :), but a comment never hurt

#endif

// LightLoopContext is not visible from Material (user should not use these properties in Material file)
// It allow the lightloop to have transmit sampling information (do we use atlas, or texture array etc...)
struct LightLoopContext
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl"

#define USE_FPTL_LIGHTLIST // Use light tiles for contact shadows
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/ContactShadows.hlsl"

Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,10 @@
// Various shadow algorithms
// There are two variants provided, one takes the texture and sampler explicitly so they can be statically passed in.
// The variant without resource parameters dynamically accesses the texture when sampling.

// WARNINGS:
// Keep in sync with HDShadowManager::GetDirectionalShadowAlgorithm()
// Be careful this require to update GetPunctualFilterWidthInTexels() in C# as well!
// Configure which shadow algorithms to use per shadow level quality

// Since we use slope-scale bias, the constant bias is for now set as a small fixed value
#define FIXED_UNIFORM_BIAS (1.0f / 65536.0f)

#if (defined(_ENABLE_SHADOW_MATTE) && SHADERPASS == SHADERPASS_FORWARD_UNLIT)
Copy link
Contributor

@FrancescoC-unity FrancescoC-unity Apr 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does that work for shadow matte now? Unlit does not go through deferred.compute and I don't see the multi compile for it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See change in shader graph. Shadow matte generated from shader graph correctly generate a multi compile for shadow. (there is no shadow matte from unlit.shader, only from SG unlit).


#if SHADEROPTIONS_DEFERRED_SHADOW_FILTERING == HDSHADOWFILTERINGQUALITY_LOW
#define SHADOW_LOW
#elif SHADEROPTIONS_DEFERRED_SHADOW_FILTERING == HDSHADOWFILTERINGQUALITY_MEDIUM
#define SHADOW_MEDIUM
#elif SHADEROPTIONS_DEFERRED_SHADOW_FILTERING == HDSHADOWFILTERINGQUALITY_HIGH
#define SHADOW_HIGH
#else
#define SHADOW_MEDIUM
#endif

#endif

#if (SHADERPASS == SHADERPASS_VOLUMETRIC_LIGHTING || SHADERPASS == SHADERPASS_VOLUME_VOXELIZATION)
#define SHADOW_LOW
#endif
// WARNINGS:
// Keep in sync with both HDShadowManager::GetDirectionalShadowAlgorithm() and GetPunctualFilterWidthInTexels() in C# as well!

#ifdef SHADOW_LOW
#define PUNCTUAL_FILTER_ALGORITHM(sd, posSS, posTC, tex, samp, bias) SampleShadow_PCF_Tent_3x3(_ShadowAtlasSize.zwxy, posTC, tex, samp, bias)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs.hlsl"

// Say to LightloopDefs.hlsl that we have a sahdow context struct define
#define HAVE_HD_SHADOW_CONTEXT

struct HDShadowContext
{
StructuredBuffer<HDShadowData> shadowDatas;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ public void InitShadowManager(RenderPipelineResources renderPipelineResources, D
m_MaxShadowRequests = maxShadowRequests;
}

// Keep in sync with both HDShadowSampling.hlsl
public static DirectionalShadowAlgorithm GetDirectionalShadowAlgorithm()
{
switch (HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.hdShadowInitParams.shadowFilteringQuality)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ real SampleShadow_PCF_Tent_5x5(float4 shadowAtlasSize, float3 coord, Texture2D t
#else
for (int i = 0; i < 9; i++)
{
shadow += fetchesWeights[i] * SAMPLE_TEXTURE2D_SHADOW(tex, compSamp, real3(fetchesUV[i].xy, coord.z), slice).x;
shadow += fetchesWeights[i] * SAMPLE_TEXTURE2D_SHADOW(tex, compSamp, real3(fetchesUV[i].xy, coord.z)).x;
}
#endif

Expand Down Expand Up @@ -128,7 +128,7 @@ real SampleShadow_PCF_Tent_7x7(float4 shadowAtlasSize, float3 coord, Texture2D t
#else
for(int i = 0; i < 16; i++)
{
shadow += fetchesWeights[i] * SAMPLE_TEXTURE2D_SHADOW(tex, compSamp, real3(fetchesUV[i].xy, coord.z).x;
shadow += fetchesWeights[i] * SAMPLE_TEXTURE2D_SHADOW(tex, compSamp, real3(fetchesUV[i].xy, coord.z)).x;
}
#endif

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ static class HDShadowUtils

static Plane[] s_CachedPlanes = new Plane[6];

// Keep in sync with both HDShadowSampling.hlsl
static float GetPunctualFilterWidthInTexels(HDShadowFilteringQuality quality)
{
switch (quality)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,22 @@ void InitializeScreenSpaceShadows()
// Directional shadow material
s_ScreenSpaceShadowsMat = CoreUtils.CreateEngineMaterial(screenSpaceShadowsShader);

switch (m_Asset.currentPlatformRenderPipelineSettings.hdShadowInitParams.shadowFilteringQuality)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this init function called upon changing the value in the UI?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes. Same as in lightloop (where we call the code in InizializeLightloop)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, any change in something in the HDRP asset will recreate the pipeline from scratch.

{
case HDShadowFilteringQuality.Low:
s_ScreenSpaceShadowsMat.EnableKeyword("SHADOW_LOW");
break;
case HDShadowFilteringQuality.Medium:
s_ScreenSpaceShadowsMat.EnableKeyword("SHADOW_MEDIUM");
break;
case HDShadowFilteringQuality.High:
s_ScreenSpaceShadowsMat.EnableKeyword("SHADOW_HIGH");
break;
default:
s_ScreenSpaceShadowsMat.EnableKeyword("SHADOW_MEDIUM");
break;
}

// Allocate the final result texture
int numShadowTextures = Math.Max((int)Math.Ceiling(m_Asset.currentPlatformRenderPipelineSettings.hdShadowInitParams.maxScreenSpaceShadowSlots / 4.0f), 1);
GraphicsFormat graphicsFormat = (GraphicsFormat)m_Asset.currentPlatformRenderPipelineSettings.hdShadowInitParams.screenSpaceShadowBufferFormat;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ Shader "Hidden/HDRP/ScreenSpaceShadows"
{
HLSLINCLUDE



#pragma target 4.5
#pragma only_renderers d3d11 playstation xboxone vulkan metal switch

#pragma multi_compile SHADOW_LOW SHADOW_MEDIUM SHADOW_HIGH

#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonLighting.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Builtin/BuiltinData.hlsl"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,11 @@
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/GeometricTools.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/VolumeRendering.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/TextureXR.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Core/Utilities/GeometryUtils.cs.hlsl"

#include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPass.cs.hlsl"
#define SHADERPASS SHADERPASS_VOLUME_VOXELIZATION

#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Core/Utilities/GeometryUtils.cs.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VolumetricLighting.cs.hlsl"

#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"


//--------------------------------------------------------------------------------------------------
// Inputs & outputs
//--------------------------------------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/VBuffer.hlsl"

#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/PhysicallyBasedSky/PhysicallyBasedSkyCommon.hlsl"

// Use low quality shadow when doing volumetric
#define SHADOW_LOW
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Lighting.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightLoop/LightLoopDef.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/LightEvaluation.hlsl"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2341,11 +2341,11 @@ void Callback(CommandBuffer c, HDCamera cam)
m_AmbientOcclusionSystem.Render(cmd, hdCamera, renderContext, m_FrameCount);

// Run the contact shadows here as they need the light list
HDUtils.CheckRTCreated(m_ContactShadowBuffer);
RenderContactShadows(hdCamera, cmd);
PushFullScreenDebugTexture(hdCamera, cmd, m_ContactShadowBuffer, FullScreenDebugMode.ContactShadows);
HDUtils.CheckRTCreated(m_ContactShadowBuffer);
RenderContactShadows(hdCamera, cmd);
PushFullScreenDebugTexture(hdCamera, cmd, m_ContactShadowBuffer, FullScreenDebugMode.ContactShadows);

RenderScreenSpaceShadows(hdCamera, cmd);
RenderScreenSpaceShadows(hdCamera, cmd);

if (hdCamera.frameSettings.VolumeVoxelizationRunsAsync())
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ enum ShaderPass
LightTransport,
Shadows,
SubsurfaceScattering,
VolumeVoxelization,
VolumetricLighting,
DbufferProjector,
DbufferMesh,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,19 @@
#define SHADERPASS_LIGHT_TRANSPORT (7)
#define SHADERPASS_SHADOWS (8)
#define SHADERPASS_SUBSURFACE_SCATTERING (9)
#define SHADERPASS_VOLUME_VOXELIZATION (10)
#define SHADERPASS_VOLUMETRIC_LIGHTING (11)
#define SHADERPASS_DBUFFER_PROJECTOR (12)
#define SHADERPASS_DBUFFER_MESH (13)
#define SHADERPASS_FORWARD_EMISSIVE_PROJECTOR (14)
#define SHADERPASS_FORWARD_EMISSIVE_MESH (15)
#define SHADERPASS_RAYTRACING (16)
#define SHADERPASS_RAYTRACING_INDIRECT (17)
#define SHADERPASS_RAYTRACING_VISIBILITY (18)
#define SHADERPASS_RAYTRACING_FORWARD (19)
#define SHADERPASS_RAYTRACING_GBUFFER (20)
#define SHADERPASS_RAYTRACING_SUB_SURFACE (21)
#define SHADERPASS_PATH_TRACING (22)
#define SHADERPASS_CONSTANT (23)
#define SHADERPASS_VOLUMETRIC_LIGHTING (10)
#define SHADERPASS_DBUFFER_PROJECTOR (11)
#define SHADERPASS_DBUFFER_MESH (12)
#define SHADERPASS_FORWARD_EMISSIVE_PROJECTOR (13)
#define SHADERPASS_FORWARD_EMISSIVE_MESH (14)
#define SHADERPASS_RAYTRACING (15)
#define SHADERPASS_RAYTRACING_INDIRECT (16)
#define SHADERPASS_RAYTRACING_VISIBILITY (17)
#define SHADERPASS_RAYTRACING_FORWARD (18)
#define SHADERPASS_RAYTRACING_GBUFFER (19)
#define SHADERPASS_RAYTRACING_SUB_SURFACE (20)
#define SHADERPASS_PATH_TRACING (21)
#define SHADERPASS_CONSTANT (22)


#endif