Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Constant Buffers for HDRP (part 3) #98

Merged
merged 144 commits into from
May 19, 2020
Merged
Show file tree
Hide file tree
Changes from 133 commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
dc5f783
Fixed execution error without raytracing
JulienIgnace-Unity Nov 26, 2019
3d86f9e
Prepare Prepass refacto
JulienIgnace-Unity Nov 26, 2019
e91a1f0
Another round of preparation
JulienIgnace-Unity Nov 27, 2019
6f16b8a
Renamed XRPassScope to XRSinglePassScope
JulienIgnace-Unity Nov 27, 2019
13617b1
RenderAfterPostProcess is now static
JulienIgnace-Unity Nov 27, 2019
53e4a0e
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Nov 27, 2019
5b13043
Merge branch 'HDRP/rendergraph-update' of https://github.com/Unity-Te…
JulienIgnace-Unity Nov 27, 2019
0e7152c
Add AfterPostProcess to RenderGraph (WIP)
JulienIgnace-Unity Nov 27, 2019
f81dd5b
AfterPostProcess implementation
JulienIgnace-Unity Nov 28, 2019
d36bccf
Fixed wrong RTHandle allocation
JulienIgnace-Unity Nov 28, 2019
dd614e6
Fixed light layers texture binding during deferred lighting pass
JulienIgnace-Unity Nov 28, 2019
7bcda45
Implemented Post Process Final Pass with RenderGraph
JulienIgnace-Unity Nov 28, 2019
ee57823
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Feb 3, 2020
9b45bac
Post merge fixes
JulienIgnace-Unity Feb 10, 2020
6676461
Fixed some issues with missing buffers in SSS and deferred lighting c…
JulienIgnace-Unity Feb 11, 2020
5c7becf
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Feb 11, 2020
40d7d37
Fixed alpha in post processes
JulienIgnace-Unity Feb 11, 2020
3fc77fa
Removed RenderGraphResource and RenderGraphMutableResource in favor o…
JulienIgnace-Unity Feb 13, 2020
b2de439
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Feb 24, 2020
9f1d7c3
Merge branch 'HDRP/rendergraph-postprocess' of https://github.com/Uni…
JulienIgnace-Unity Feb 25, 2020
d5696ff
Fixed decal normal patch pass
JulienIgnace-Unity Feb 25, 2020
6a15b4b
Fixed stencil resolve render pass
JulienIgnace-Unity Feb 25, 2020
45ce8c0
Fixed RenderDBuffer render pass function capturing variables.
JulienIgnace-Unity Feb 25, 2020
346618c
Fixed wrong variable capture and restored ClearLightList to the rende…
JulienIgnace-Unity Feb 25, 2020
34240cd
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Feb 27, 2020
e7461e6
Various fixes of things that diverged compared to regular path.
JulienIgnace-Unity Mar 3, 2020
639ac4b
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 3, 2020
54171b8
Merge branch 'HDRP/rendergraph-postprocess' of https://github.com/Uni…
JulienIgnace-Unity Mar 3, 2020
9960b20
Unified renderer list and texture invalid handle error.
JulienIgnace-Unity Mar 3, 2020
ea729c3
Revert wrong change
JulienIgnace-Unity Mar 4, 2020
afa9870
Added constant buffer hlsl generation
JulienIgnace-Unity Mar 4, 2020
7410584
Changed UnityGlobal constant buffers to ShaderVariablesGlobals and ge…
JulienIgnace-Unity Mar 4, 2020
238b7ab
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 5, 2020
7129c81
post merge fix
JulienIgnace-Unity Mar 5, 2020
502b3a7
Removed useless comment.
JulienIgnace-Unity Mar 5, 2020
49fd96f
Missing doc
JulienIgnace-Unity Mar 5, 2020
33683f3
Merge branch 'HDRP/rendergraph-cleanup' of https://github.com/Unity-T…
JulienIgnace-Unity Mar 5, 2020
4aec3b9
Started moving cmd.SetGlobalXXX to update the global CB (WIP)
JulienIgnace-Unity Mar 5, 2020
8006917
Implemented Volumetrics global CB and various fixes.
JulienIgnace-Unity Mar 6, 2020
b88911c
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 6, 2020
8939e9f
Implemented shadow global CB update.
JulienIgnace-Unity Mar 6, 2020
ef1c880
Finished up Global Constant Buffer setup
JulienIgnace-Unity Mar 6, 2020
8f78984
Fix null ref
JulienIgnace-Unity Mar 6, 2020
e5f1e0a
Fixed global constant buffer alignment issues.
JulienIgnace-Unity Mar 9, 2020
3e83e64
Fixed shadows and SSS
JulienIgnace-Unity Mar 10, 2020
e30a677
Small ConstantBuffer API refacto
JulienIgnace-Unity Mar 10, 2020
770039e
Small fix
JulienIgnace-Unity Mar 10, 2020
7bfafa8
Volumetric Constant Buffer implementation + Fix
JulienIgnace-Unity Mar 10, 2020
d542112
Fix ambient occlusion
JulienIgnace-Unity Mar 10, 2020
89fe0b6
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 11, 2020
5a75d00
Removed redundant SetGlobalXXX
JulienIgnace-Unity Mar 11, 2020
5f79288
Light list build global CB implementation
JulienIgnace-Unity Mar 12, 2020
f6a8ab6
Fixed path tracing frame index constant
JulienIgnace-Unity Mar 13, 2020
1a36c4c
Fixed ao constant w/ raytracing
JulienIgnace-Unity Mar 13, 2020
6bbeaa1
Better path tracing fix.
JulienIgnace-Unity Mar 13, 2020
3d427b8
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 13, 2020
11fd3d4
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 19, 2020
75c2096
Refactored CB API to comply with Render Graph specificities
JulienIgnace-Unity Mar 19, 2020
c7d1732
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 20, 2020
1a00f9a
Update test screenshot
JulienIgnace-Unity Mar 20, 2020
235415e
Fixed constant buffer generation to use macros.
JulienIgnace-Unity Mar 20, 2020
f839e59
Implemented XR global constant buffer.
JulienIgnace-Unity Mar 20, 2020
165ebba
Removed useless global constant
JulienIgnace-Unity Mar 20, 2020
c228d3f
Fixed XR global constant name
JulienIgnace-Unity Mar 20, 2020
3d4d4a5
Converted SSR to constant buffer.
JulienIgnace-Unity Mar 23, 2020
b9b08a6
Converted AO to constant buffers.
JulienIgnace-Unity Mar 23, 2020
0a6be8a
Fixed warning
JulienIgnace-Unity Mar 23, 2020
233d32c
Removed some useless SetGlobalXXX in Light Cookie Manager
JulienIgnace-Unity Mar 23, 2020
049a421
Converted debug display to use constant buffer.
JulienIgnace-Unity Mar 23, 2020
e963cd7
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 23, 2020
21600ed
Fixed color/depth pyramid debug
JulienIgnace-Unity Mar 23, 2020
3a9dcf1
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Mar 23, 2020
5535110
Cleanup
JulienIgnace-Unity Mar 23, 2020
d7bc0b3
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Mar 23, 2020
e1ab625
Implemented constant buffer for PBR sky global variables.
JulienIgnace-Unity Mar 23, 2020
264e67f
Warning fix
JulienIgnace-Unity Mar 23, 2020
9887cf5
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 24, 2020
8cf7863
Small fix
JulienIgnace-Unity Mar 24, 2020
ede11d2
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Mar 24, 2020
4c761a4
Cleanup of global setup happening before rendering (render graph path…
JulienIgnace-Unity Mar 24, 2020
736b03a
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 24, 2020
6b6e588
Post merge fix
JulienIgnace-Unity Mar 24, 2020
33f3c72
Added global constant buffer hlsl generation.
JulienIgnace-Unity Mar 25, 2020
48708eb
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Mar 25, 2020
5499ad1
Post merge fix
JulienIgnace-Unity Mar 25, 2020
444f813
Converted raytracing lightloop variables to constant buffer.
JulienIgnace-Unity Mar 25, 2020
a360399
Converted RayTracing global variables to constant buffer.
JulienIgnace-Unity Mar 26, 2020
b1ccff9
Removed obsolete comment
JulienIgnace-Unity Mar 26, 2020
eac25c5
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Mar 26, 2020
fdca802
Post merge fix
JulienIgnace-Unity Mar 26, 2020
50cacc9
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Mar 26, 2020
5b00bf5
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Mar 26, 2020
5c14fdd
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 2, 2020
bca3833
Post merge fix
JulienIgnace-Unity Apr 2, 2020
3b10157
Post merge fix 2
JulienIgnace-Unity Apr 2, 2020
9cf925e
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Apr 2, 2020
1dd4615
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 2, 2020
6cf20d8
Double inclusion fix.
JulienIgnace-Unity Apr 2, 2020
e1d0fe8
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Apr 2, 2020
d166dcb
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 2, 2020
dfb7015
Fixed CB visibility
JulienIgnace-Unity Apr 3, 2020
1d5e3e3
Fixed compilation after the merge
JulienIgnace-Unity Apr 3, 2020
9984ce2
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 3, 2020
0f14fe9
Indentation fix
JulienIgnace-Unity Apr 3, 2020
1c0fae5
Removed temporary comments.
JulienIgnace-Unity Apr 3, 2020
56200ca
Moved some constants around.
JulienIgnace-Unity Apr 3, 2020
277ee40
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 6, 2020
195eefb
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 6, 2020
98d7b06
Post merge fix + Port ProbeVolume global variables to constant buffers.
JulienIgnace-Unity Apr 6, 2020
7852ca9
Fixed deallocation of constant buffers
JulienIgnace-Unity Apr 7, 2020
8fcb2cc
Properly release Volumetric constant buffers.
JulienIgnace-Unity Apr 7, 2020
b8b58a9
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Apr 7, 2020
f47fcfc
Another update to CB API
JulienIgnace-Unity Apr 8, 2020
bdc853f
Updated documentation.
JulienIgnace-Unity Apr 8, 2020
3a7bcc6
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Apr 8, 2020
7931d30
Missing generated file
JulienIgnace-Unity Apr 8, 2020
ff4557a
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 8, 2020
6ccddfe
Merge branch 'HDRP/constant-buffers' of https://github.com/Unity-Tech…
JulienIgnace-Unity Apr 8, 2020
147ce47
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 8, 2020
23cb219
Post merge fix
JulienIgnace-Unity Apr 8, 2020
1b1a370
Fixed various issues with light probe volumes.
JulienIgnace-Unity Apr 9, 2020
d76efb0
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 9, 2020
cccf44e
Fixed light list build parameters and a nullref exception when probe …
JulienIgnace-Unity Apr 9, 2020
7510e08
Final fix for probe volumes
JulienIgnace-Unity Apr 9, 2020
ba61f73
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 9, 2020
f6cddbe
Fixed a warning in shader compilation
JulienIgnace-Unity Apr 10, 2020
0f705b1
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 10, 2020
224a718
Changes from review feedback
JulienIgnace-Unity Apr 10, 2020
2963ec6
Compilation fix.
JulienIgnace-Unity Apr 10, 2020
8911005
Merge branch 'HDRP/constant-buffers-2' of https://github.com/Unity-Te…
JulienIgnace-Unity Apr 10, 2020
5854691
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 10, 2020
1e4112a
Post merge fix
JulienIgnace-Unity Apr 10, 2020
2c4a73c
Removed useless constant
JulienIgnace-Unity Apr 10, 2020
9009315
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 16, 2020
aee0522
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity Apr 21, 2020
9ea1c5c
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity May 5, 2020
eb32060
Crash fix
JulienIgnace-Unity May 5, 2020
36856e3
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity May 12, 2020
348a098
Merge branch 'HDRP/staging' into HDRP/constant-buffers-3
sebastienlagarde May 15, 2020
61d1ef2
Post merge fix
JulienIgnace-Unity May 19, 2020
ca953d7
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity May 19, 2020
c3d4f8d
Merge branch 'HDRP/staging' of https://github.com/Unity-Technologies/…
JulienIgnace-Unity May 19, 2020
8430b48
Update 501_RecursiveRendering.png
sebastienlagarde May 19, 2020
6e3ce1d
Merge branch 'HDRP/staging' into HDRP/constant-buffers-3
sebastienlagarde May 19, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -3733,7 +3733,6 @@ struct ContactShadowsParameters
public bool rayTracingEnabled;
public RayTracingShader contactShadowsRTS;
public RayTracingAccelerationStructure accelerationStructure;
public float rayTracingBias;
public int actualWidth;
public int actualHeight;
public int depthTextureParameterName;
Expand All @@ -3753,9 +3752,7 @@ ContactShadowsParameters PrepareContactShadowsParameters(HDCamera hdCamera, floa
parameters.rayTracingEnabled = hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing);
if (hdCamera.frameSettings.IsEnabled(FrameSettingsField.RayTracing))
{
RayTracingSettings raySettings = hdCamera.volumeStack.GetComponent<RayTracingSettings>();
parameters.contactShadowsRTS = m_Asset.renderPipelineRayTracingResources.contactShadowRayTracingRT;
parameters.rayTracingBias = raySettings.rayBias.value;
parameters.accelerationStructure = RequestAccelerationStructure();

parameters.actualWidth = hdCamera.actualWidth;
Expand Down Expand Up @@ -3807,7 +3804,6 @@ ContactShadowsParameters PrepareContactShadowsParameters(HDCamera hdCamera, floa
if (parameters.rayTracingEnabled)
{
cmd.SetRayTracingShaderPass(parameters.contactShadowsRTS, "VisibilityDXR");
cmd.SetGlobalFloat(HDShaderIDs._RaytracingRayBias, parameters.rayTracingBias);
cmd.SetRayTracingAccelerationStructure(parameters.contactShadowsRTS, HDShaderIDs._RaytracingAccelerationStructureName, parameters.accelerationStructure);

cmd.SetRayTracingVectorParam(parameters.contactShadowsRTS, HDShaderIDs._ContactShadowParamsParameters, parameters.params1);
Expand Down
Expand Up @@ -241,7 +241,7 @@ internal void InitRaytracing(HDRenderPipeline renderPipeline)

internal bool IsActive(HDCamera camera, AmbientOcclusion settings) => camera.frameSettings.IsEnabled(FrameSettingsField.SSAO) && settings.intensity.value > 0f;

internal void Render(CommandBuffer cmd, HDCamera camera, ScriptableRenderContext renderContext, int frameCount)
internal void Render(CommandBuffer cmd, HDCamera camera, ScriptableRenderContext renderContext, in ShaderVariablesRaytracing globalRTCB, int frameCount)
{
var settings = camera.volumeStack.GetComponent<AmbientOcclusion>();

Expand All @@ -253,7 +253,7 @@ internal void Render(CommandBuffer cmd, HDCamera camera, ScriptableRenderContext
else
{
if (camera.frameSettings.IsEnabled(FrameSettingsField.RayTracing) && settings.rayTracing.value)
m_RaytracingAmbientOcclusion.RenderAO(camera, cmd, m_AmbientOcclusionTex, renderContext, frameCount);
m_RaytracingAmbientOcclusion.RenderAO(camera, cmd, m_AmbientOcclusionTex, globalRTCB, renderContext, frameCount);
else
{
Dispatch(cmd, camera, frameCount);
Expand Down
Expand Up @@ -326,10 +326,6 @@ void RenderDirectionalLightScreenSpaceShadow(CommandBuffer cmd, HDCamera hdCamer
// Inject the ray-tracing sampling data
m_BlueNoise.BindDitheredRNGData8SPP(cmd);

// Inject the ray generation data
RayTracingSettings rayTracingSettings = hdCamera.volumeStack.GetComponent<RayTracingSettings>();
cmd.SetGlobalFloat(HDShaderIDs._RaytracingRayBias, rayTracingSettings.rayBias.value);

// Make sure the right closest hit/any hit will be triggered by using the right multi compile
CoreUtils.SetKeyword(cmd, "TRANSPARENT_COLOR_SHADOW", m_CurrentSunLightAdditionalLightData.colorShadow);

Expand All @@ -339,10 +335,13 @@ void RenderDirectionalLightScreenSpaceShadow(CommandBuffer cmd, HDCamera hdCamer
// Loop through the samples of this frame
for (int sampleIdx = 0; sampleIdx < m_CurrentSunLightAdditionalLightData.numRayTracingSamples; ++sampleIdx)
{
// Update global Constant Buffer
m_ShaderVariablesRayTracingCB._RaytracingSampleIndex = sampleIdx;
m_ShaderVariablesRayTracingCB._RaytracingNumSamples = m_CurrentSunLightAdditionalLightData.numRayTracingSamples;
ConstantBuffer.PushGlobal(cmd, m_ShaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing);

// Bind the light & sampling data
cmd.SetComputeBufferParam(m_ScreenSpaceShadowsCS, m_RaytracingDirectionalShadowSample, HDShaderIDs._DirectionalLightDatas, m_LightLoopLightData.directionalLightData);
cmd.SetGlobalInt(HDShaderIDs._RaytracingSampleIndex, sampleIdx);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, m_CurrentSunLightAdditionalLightData.numRayTracingSamples);

// Input Buffer
cmd.SetComputeTextureParam(m_ScreenSpaceShadowsCS, m_RaytracingDirectionalShadowSample, HDShaderIDs._DepthTexture, m_SharedRTManager.GetDepthStencilBuffer());
Expand All @@ -359,14 +358,12 @@ void RenderDirectionalLightScreenSpaceShadow(CommandBuffer cmd, HDCamera hdCamer

// Set ray count texture
RayCountManager rayCountManager = GetRayCountManager();
cmd.SetGlobalInt(HDShaderIDs._RayCountEnabled, rayCountManager.RayCountIsEnabled());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RayCountTexture, rayCountManager.GetRayCountTexture());

// Input buffers
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._DepthTexture, m_SharedRTManager.GetDepthStencilBuffer());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._NormalBufferTexture, m_SharedRTManager.GetNormalBuffer());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracingDirectionBuffer, directionBuffer);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, m_CurrentSunLightAdditionalLightData.numRayTracingSamples);

// Output buffer
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, m_CurrentSunLightAdditionalLightData.colorShadow ? HDShaderIDs._RaytracedColorShadowIntegration : HDShaderIDs._RaytracedShadowIntegration, intermediateBuffer0);
Expand Down Expand Up @@ -535,7 +532,9 @@ bool RenderLightScreenSpaceShadows(HDCamera hdCamera, CommandBuffer cmd)
cmd.SetComputeBufferParam(m_ScreenSpaceShadowsCS, m_AreaRaytracingAreaShadowPrepassKernel, HDShaderIDs._LightDatas, m_LightLoopLightData.lightData);
cmd.SetComputeMatrixParam(m_ScreenSpaceShadowsCS, HDShaderIDs._RaytracingAreaWorldToLocal, m_WorldToLocalArea);
cmd.SetComputeIntParam(m_ScreenSpaceShadowsCS, HDShaderIDs._RaytracingTargetAreaLight, lightIndex);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, additionalLightData.numRayTracingSamples);

m_ShaderVariablesRayTracingCB._RaytracingNumSamples = additionalLightData.numRayTracingSamples;
ConstantBuffer.PushGlobal(cmd, m_ShaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing);

// Bind the input buffers
cmd.SetComputeTextureParam(m_ScreenSpaceShadowsCS, m_AreaRaytracingAreaShadowPrepassKernel, HDShaderIDs._DepthTexture, m_SharedRTManager.GetDepthStencilBuffer());
Expand Down Expand Up @@ -568,7 +567,6 @@ bool RenderLightScreenSpaceShadows(HDCamera hdCamera, CommandBuffer cmd)

// Set ray count texture
RayCountManager rayCountManager = GetRayCountManager();
cmd.SetGlobalInt(HDShaderIDs._RayCountEnabled, rayCountManager.RayCountIsEnabled());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RayCountTexture, rayCountManager.GetRayCountTexture());

// Input data
Expand All @@ -580,8 +578,6 @@ bool RenderLightScreenSpaceShadows(HDCamera hdCamera, CommandBuffer cmd)
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracingDirectionBuffer, directionBuffer);
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracingDistanceBuffer, distanceBuffer);
cmd.SetRayTracingIntParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracingTargetAreaLight, lightIndex);
RayTracingSettings rayTracingSettings = hdCamera.volumeStack.GetComponent<RayTracingSettings>();
cmd.SetGlobalFloat(HDShaderIDs._RaytracingRayBias, rayTracingSettings.rayBias.value);

// Output data
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracedAreaShadowIntegration, intermediateBufferRGBA0);
Expand All @@ -592,12 +588,15 @@ bool RenderLightScreenSpaceShadows(HDCamera hdCamera, CommandBuffer cmd)
// Let's do the following samples (if any)
for (int sampleIndex = 1; sampleIndex < additionalLightData.numRayTracingSamples; ++sampleIndex)
{
// Update global Constant Buffer
m_ShaderVariablesRayTracingCB._RaytracingNumSamples = additionalLightData.numRayTracingSamples;
m_ShaderVariablesRayTracingCB._RaytracingSampleIndex = sampleIndex;
ConstantBuffer.PushGlobal(cmd, m_ShaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing);

// Bind the light data
cmd.SetComputeBufferParam(m_ScreenSpaceShadowsCS, m_AreaRaytracingAreaShadowNewSampleKernel, HDShaderIDs._LightDatas, m_LightLoopLightData.lightData);
cmd.SetComputeIntParam(m_ScreenSpaceShadowsCS, HDShaderIDs._RaytracingTargetAreaLight, lightIndex);
cmd.SetGlobalInt(HDShaderIDs._RaytracingSampleIndex, sampleIndex);
cmd.SetComputeMatrixParam(m_ScreenSpaceShadowsCS, HDShaderIDs._RaytracingAreaWorldToLocal, m_WorldToLocalArea);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, additionalLightData.numRayTracingSamples);

// Input Buffers
cmd.SetComputeTextureParam(m_ScreenSpaceShadowsCS, m_AreaRaytracingAreaShadowNewSampleKernel, HDShaderIDs._DepthTexture, m_SharedRTManager.GetDepthStencilBuffer());
Expand Down Expand Up @@ -769,21 +768,20 @@ bool RenderLightScreenSpaceShadows(HDCamera hdCamera, CommandBuffer cmd)
cmd.DispatchCompute(m_ScreenSpaceShadowsCS, m_ClearShadowTexture, numTilesX, numTilesY, hdCamera.viewCount);
}

// Bind the ray generation scalars
RayTracingSettings rayTracingSettings = hdCamera.volumeStack.GetComponent<RayTracingSettings>();
cmd.SetGlobalFloat(HDShaderIDs._RaytracingRayBias, rayTracingSettings.rayBias.value);

// Loop through the samples of this frame
for (int sampleIdx = 0; sampleIdx < additionalLightData.numRayTracingSamples; ++sampleIdx)
{
// Update global constant buffer
m_ShaderVariablesRayTracingCB._RaytracingSampleIndex = sampleIdx;
m_ShaderVariablesRayTracingCB._RaytracingNumSamples = additionalLightData.numRayTracingSamples;
ConstantBuffer.PushGlobal(cmd, m_ShaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing);

// Bind the right kernel
int shadowKernel = lightData.lightType == GPULightType.Point ? m_RaytracingPointShadowSample : m_RaytracingSpotShadowSample;

// Bind the light & sampling data
cmd.SetComputeBufferParam(m_ScreenSpaceShadowsCS, shadowKernel, HDShaderIDs._LightDatas, m_LightLoopLightData.lightData);
cmd.SetComputeIntParam(m_ScreenSpaceShadowsCS, HDShaderIDs._RaytracingTargetAreaLight, lightIndex);
cmd.SetGlobalInt(HDShaderIDs._RaytracingSampleIndex, sampleIdx);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, additionalLightData.numRayTracingSamples);
cmd.SetComputeFloatParam(m_ScreenSpaceShadowsCS, HDShaderIDs._RaytracingLightRadius, additionalLightData.shapeRadius);

// If this is a spot light, inject the spot angle in radians
Expand All @@ -809,15 +807,13 @@ bool RenderLightScreenSpaceShadows(HDCamera hdCamera, CommandBuffer cmd)

// Set ray count texture
RayCountManager rayCountManager = GetRayCountManager();
cmd.SetGlobalInt(HDShaderIDs._RayCountEnabled, rayCountManager.RayCountIsEnabled());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RayCountTexture, rayCountManager.GetRayCountTexture());

// Input buffers
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._DepthTexture, m_SharedRTManager.GetDepthStencilBuffer());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._NormalBufferTexture, m_SharedRTManager.GetNormalBuffer());
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracingDirectionBuffer, directionBuffer);
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracingDistanceBuffer, distanceBuffer);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, additionalLightData.numRayTracingSamples);

// Output buffer
cmd.SetRayTracingTextureParam(m_ScreenSpaceShadowsRT, HDShaderIDs._RaytracedShadowIntegration, intermediateBuffer0);
Expand Down
Expand Up @@ -294,7 +294,6 @@ static RTHandle SubSurfaceHistoryBufferAllocatorFunction(string viewName, int fr

// Fetch the volume overrides that we shall be using
RayTracingShader subSurfaceShader = m_Asset.renderPipelineRayTracingResources.subSurfaceRayTracing;
RayTracingSettings rayTracingSettings = hdCamera.volumeStack.GetComponent<RayTracingSettings>();
ComputeShader deferredRayTracing = m_Asset.renderPipelineRayTracingResources.deferredRaytracingCS;

// Fetch all the intermediate buffers that we need
Expand All @@ -321,9 +320,9 @@ static RTHandle SubSurfaceHistoryBufferAllocatorFunction(string viewName, int fr
for (int sampleIndex = 0; sampleIndex < settings.sampleCount.value; ++sampleIndex)
{
// Inject the ray generation data
cmd.SetGlobalFloat(HDShaderIDs._RaytracingRayBias, rayTracingSettings.rayBias.value);
cmd.SetGlobalInt(HDShaderIDs._RaytracingNumSamples, settings.sampleCount.value);
cmd.SetGlobalInt(HDShaderIDs._RaytracingSampleIndex, sampleIndex);
m_ShaderVariablesRayTracingCB._RaytracingNumSamples = settings.sampleCount.value;
m_ShaderVariablesRayTracingCB._RaytracingSampleIndex = sampleIndex;
ConstantBuffer.PushGlobal(cmd, m_ShaderVariablesRayTracingCB, HDShaderIDs._ShaderVariablesRaytracing);

// Bind the textures for ray generation
cmd.SetRayTracingTextureParam(subSurfaceShader, HDShaderIDs._DepthTexture, sharedRTManager.GetDepthStencilBuffer());
Expand Down
Expand Up @@ -327,9 +327,6 @@ class RenderSSRPassData
}
}

// TODO RENDERGRAPH
//cmd.SetGlobalInt(HDShaderIDs._UseRayTracedReflections, usesRaytracedReflections ? 1 : 0);

PushFullScreenDebugTexture(renderGraph, result, FullScreenDebugMode.ScreenSpaceReflections);
return result;
}
Expand Down