Skip to content

Commit

Permalink
Dynamic GI:
Browse files Browse the repository at this point in the history
Probe Volume Dynamic GI V1 (#7)

Large feature addition to Probe Volumes to support Dynamic GI at runtime & in editor via compute jobs. Huge coordination across game team, Spotlight & HDRP team to refine the algorithm and feature set.

Key Features
- New toggle on a light "Affects Dynamic GI"
- New toggle on a probe Volume "Support Dynamic GI"
- New debug draw mode on a probe volume "Draw Neighbors" to visualize the neighbor the dynamic GI light will bounce around in
- All light types are supported

Missing features
- During albedo baking step, mask volumes are not being sampled correctly
- Off screen lights are missing their shadows when being sampled by the Hit pass of the Dynamic GI compute shader
- Directional light GI seems off, maybe its the offscreen shadow issues
- Sky lighting is not supported at the moment in the dynamic GI
- Currently does not encode emissive in the neighborhood bake data, only albedo, surface distance & normal
- Currently does require a re-bake when geometry changes, the only thing it relies on getting from the lightmapper is the probe validity value

Commit notes:
* Added dynamic GI options onto HDLight and ProbeVolume inspectors
* work in progress dynamic gi
* lots more refactoring on the data model and packing for hits vs misses
* Cleanup dynamic GI code into separate file
* Working axis baking code with visualization
* small fixes
* validity scale fix
* neighbor draw quad scale control
* small fix
* scale fix
* First pass at albedo extraction code for DynamicGI
* bake bug fix
* Albedo baking via Shader Graph works now, and more tweaks to neighbor debug draw
* bug fix
* Dynamic GI neighbor cleanup to use real probe volume data for positioning
* bug fix for non uniform density volumes
* cleanup
* Cleanup and setup of Propagation Buffers
* more work in progress dynamic GI, have a test read modify write of SH data working
* cleanup dynamic GI values when its disabled
* more cleanup
* bug fix
* New improved Albedo sampling code from Francesco
* cache debug shader not material, works better for some reason
* Lots of shader code and setup for real-time GI propagation. Still a work in progress but most code written on GPU side
* All the compute data hooked up first pass
* Kinda of working
* Slightly better, still not there
* Fixes plus re-write of SH data in dynamic GI
* First kinda working version of new RTGI, needs lots of tuning and improvements
* Move VolumeComponent to seperate file so it is preserved when assets are saved
* More improvements, anti alias punctual lights and add a secondary bounce to hits
* Tweaks, added FCC's SH logic for testing / comps
* Cleanup and addition of 3D texture for Irradiance sampling to smooth out history
* Cleanup & and added back bounce boost control for hit pass
* Tuning defaults
* more filddleing with defaults
* temp code for testing
* Intended L1
* Adding Affect Dynamic GI to light explorer UI
Fixing hit lighting logic to work with multiple lights
* Adding de-ringing to SH
Exposing class outside of HDRP for play mode testing
* Move probe volume update code around so worked better with needing state set before dispatches
* Integration of SG logic for Irradiance Cache, way cleaner and better results. Removed old Irradiance cache logic using L1 SH
* More cleanup and refinements of SG algorithm
* Bias punctual lights near surfaces to fix strobing
* Cleanup
* name cleanup
* Support volume rotation in neighbor debug view mode
* Fixed contribution normalization. Changed the direction for infinite bounces evaluation from reflection to surface normal.
* changing default sharpness to 3.5 to reduce dark banding a tad
* Hacked prototype of an alternative propagation algorithm.
* Smoothed radiance gathering from hits.
* Cleanup and temp NaN propagation workaround.
* Changed History Contribution min limit to 0 to be able to test propagation without it.
* Removed old algorithm, cleaned up data format and volume parameters to make new directional version the default one
* Fixed Probe Volume dynamic GI data access after merging with the DOTS Probe Volume feature.

Signed-off-by: Andrew Saraev <andrew.saraev@unity3d.com>

* Fixed up popping issues with Dynamic GI and other probe volumes in view, plus made it so the light list is global, not camera view culled so all lights stay active in the list for GI to propagate more accurately and shadows to update even for lights behind the camera.

Merged with latest

* Build compile fixes
* Player build fixes, real-time GI now works in player builds
* HDRP settings and toggles for probe volume dynamic GI
* missed files for previous checkin
* small optimizations
* turn on optimizations in key dynamic gi shaders for perf
* Custom dynamic GI light list that also includes off screen lights
* Explicitly set dataUpdated when data is uploaded to the atlas instead of setting it in GetPayload() of the volume. To simplify communication with the DOTS version.

* use shadows for dynamic GI lights. This still has a bug where off screen lights get their shadow indexes reset to -1
* Better disposing of propagation buffers
Cleaned up global compute buffers for SH L012 and validity buffers, and reusing those per probe volume for propagation to reduce memory usage

* possible mem leak fix & piping light bounce intensity through to dynamic GI
* Some PR feedback and distance checks to probe hit & propagation phases

* Added basic distance checks to entire probe volume to dispatch dynamic GI jobs or not
* directional lights are weird, maybe the shadows, we should avoid them
* PR feedback
* Refactored ProbeVolumeBuffers cleanup to keep GameObject and DOTS logic similar.
* Attempt to reduce white space conflicts
* Profiler marker for Dynamic GI
Slight optimization in light loop
* Optimized C# by not doing SetData calls on Buffers unnecessarily

Co-authored-by: Andrew Saraev <andrew.saraev@unity3d.com>

Bug fixes from Dynamic GI.
Cleanup buffers after bakes, and only dispatch dynamic GI for scene or game cameras

Dynamic GI Spherical Harmonic from Spherical Gaussian Modes (#9)

* Implemented SH from SG Modes which can be toggled between in the Probe Dynamic GI volume settings. SamplePeakAndProject is the same mode we are used to: Spherical gaussians will simply be evaluated at their peak and projected to convert to spherical harmonics. SHFromSGFit: A spherical gaussian to spherical harmonic function fit is used, which is physically plausible. SHFromSGFitWithCosineWindow: A spherical gaussian with an additional cosine window to spherical harmonic function fit is used, which is physically plausible. Less directional blur than SHFromSGFit.

* Cleanup pass on SG to SH supporting math. Created Zonal Harmonic data type with supporting functions to add type saftey to the transforms as we have done with the other spherical harmonic functions. Created specialized zonal harmonic rotation functions which significantly reduces the work required for rotation. It's possible the compiler was handling this already by stripping out work on zero coefficients, and by automatically using floats instead of float3s when all channels are the same - but better to not put too much pressure on the compiler. This should also make it easier in the future to create specialized rotation functions for cardinal rotations (which will introduce additional zeros).

Co-authored-by: pastasfuture <nickb@bonfirestudios.com>

Dynamic GI: Fix a bunch of shader warnings in DynamicGI shaders.

Bug fix so that lights can act as dynamic GI only lights
  • Loading branch information
szymonbonfire authored and pastasfuture committed Oct 19, 2022
1 parent 9e40718 commit 121c875
Show file tree
Hide file tree
Showing 81 changed files with 5,946 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ protected static class HDStyles
public static readonly GUIContent ColorTemperatureMode = EditorGUIUtility.TrTextContent("Use Color Temperature");
public static readonly GUIContent AffectDiffuse = EditorGUIUtility.TrTextContent("Affect Diffuse");
public static readonly GUIContent AffectSpecular = EditorGUIUtility.TrTextContent("Affect Specular");
public static readonly GUIContent AffectDynamicGI = EditorGUIUtility.TrTextContent("Affect Dynamic GI");
public static readonly GUIContent FadeDistance = EditorGUIUtility.TrTextContent("Fade Distance");
public static readonly GUIContent ShadowFadeDistance = EditorGUIUtility.TrTextContent("Shadow Fade Distance");
public static readonly GUIContent LightLayer = EditorGUIUtility.TrTextContent("Light Layer");
Expand Down Expand Up @@ -610,6 +611,40 @@ protected virtual LightingExplorerTableColumn[] GetHDLightColumns()
Undo.RecordObject(tLightData, "Changed affects specular");
tLightData.affectSpecular = sLightData.affectSpecular;
}),
new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Checkbox, HDStyles.AffectDynamicGI, "m_Intensity", 100, (r, prop, dep) => // 17: Affect Specular
{
if(!TryGetAdditionalLightData(prop, out var lightData))
{
EditorGUI.LabelField(r, "--");
return;
}
bool affectDynamicGI = lightData.affectDynamicGI;
EditorGUI.BeginChangeCheck();
affectDynamicGI = EditorGUI.Toggle(r, affectDynamicGI);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(lightData, "Changed affects dynamic GI");
lightData.affectDynamicGI = affectDynamicGI;
}
}, (lprop, rprop) =>
{
TryGetAdditionalLightData(lprop, out var lLightData);
TryGetAdditionalLightData(rprop, out var rLightData);
if (IsNullComparison(lLightData, rLightData, out var order))
return order;
return lLightData.affectDynamicGI.CompareTo(rLightData.affectDynamicGI);
}, (target, source) =>
{
if (!TryGetAdditionalLightData(target, out var tLightData) || !TryGetAdditionalLightData(source, out var sLightData))
return;
Undo.RecordObject(tLightData, "Changed affects dynamic GI");
tLightData.affectDynamicGI = sLightData.affectDynamicGI;
}),
new LightingExplorerTableColumn(LightingExplorerTableColumn.DataType.Float, HDStyles.FadeDistance, "m_Intensity", 95, (r, prop, dep) => // 18: Fade Distance
{
if(!TryGetAdditionalLightData(prop, out var lightData))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ sealed class Styles
public readonly GUIContent areaLightEmissiveMeshSameLayer = new GUIContent("Same Layer", "If checked, use the same Layer than the Light one.");
public readonly GUIContent areaLightEmissiveMeshCustomLayer = new GUIContent("Custom Layer", "Specify on which layer the generated Mesh live.");
public readonly GUIContent lightLayer = new GUIContent("Light Layer", "Specifies the current Light Layers that the Light affects. This Light illuminates corresponding Renderers with the same Light Layer flags.");
public readonly GUIContent affectDynamicGI = new GUIContent("Affect Dynamic GI", "If checked, the light contributes to dynamic GI from probe volumes.");

public readonly GUIContent interactsWithSky = new GUIContent("Affect Physically Based Sky", "Check this option to make the light and the Physically Based sky affect one another.");
public readonly GUIContent angularDiameter = new GUIContent("Angular Diameter", "Angular diameter of the emissive celestial body represented by the light as seen from the camera (in degrees). Used to render the sun/moon disk.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -880,6 +880,8 @@ static void DrawEmissionAdvancedContent(SerializedHDLight serialized, Editor own
{
EditorGUILayout.PropertyField(serialized.affectDiffuse, s_Styles.affectDiffuse);
EditorGUILayout.PropertyField(serialized.affectSpecular, s_Styles.affectSpecular);
EditorGUILayout.PropertyField(serialized.affectDynamicGI, s_Styles.affectDynamicGI);

if (lightType != HDLightType.Directional)
{
EditorGUILayout.PropertyField(serialized.applyRangeAttenuation, s_Styles.applyRangeAttenuation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,16 @@ static void Drawer_PrimarySettings(SerializedProbeVolume serialized, Editor owne
serialized.drawOctahedralDepthRayIndexZ.intValue = Mathf.Clamp(serialized.drawOctahedralDepthRayIndexZ.intValue, 0, serialized.resolutionZ.intValue - 1);
}
}

if (serialized.supportDynamicGI.boolValue)
{
EditorGUILayout.PropertyField(serialized.drawNeighbors, Styles.s_DrawNeighborsLabel);
if (serialized.drawNeighbors.boolValue && serialized.advancedFade.boolValue)
{
EditorGUILayout.PropertyField(serialized.neighborsQuadScale, Styles.s_NeighborsQuadScaleLabel);
}
}

EditorGUILayout.PropertyField(serialized.probeSpacingMode, Styles.s_ProbeSpacingModeLabel);
switch ((ProbeSpacingMode)serialized.probeSpacingMode.enumValueIndex)
{
Expand Down Expand Up @@ -309,6 +319,7 @@ static void Drawer_VolumeContent(SerializedProbeVolume serialized, Editor owner)
serialized.viewBiasWS.floatValue = Mathf.Max(0, viewBiasWS);
}
}
EditorGUILayout.PropertyField(serialized.supportDynamicGI);
EditorGUILayout.PropertyField(serialized.debugColor, Styles.s_DebugColorLabel);

if (ShaderConfig.s_ProbeVolumesAdditiveBlending == 0 && serialized.volumeBlendMode.intValue != (int)VolumeBlendMode.Normal)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ internal static class Styles
internal static readonly GUIContent s_Size = new GUIContent("Size", "Modify the size of this Probe Volume. This is independent of the Transform's Scale.");
internal static readonly GUIContent s_DebugColorLabel = new GUIContent("Debug Color", "This color is used to visualize per-pixel probe volume weights in the render pipeline debugger.");
internal static readonly GUIContent s_DrawProbesLabel = new GUIContent("Draw Probes", "Enable or disable drawing probes.");
internal static readonly GUIContent s_DrawNeighborsLabel = new GUIContent("Draw Neighbors", "Enable or disable drawing probe neighborhood to debug dynamic gi.");
internal static readonly GUIContent s_NeighborsQuadScaleLabel = new GUIContent("Draw Neighbors Scale", "The size of the debug quads when viewing draw neighbors mode");
internal static readonly GUIContent s_DrawOctahedralDepthRays = new GUIContent("Draw Octahedral Depth Rays", "Enable or disable drawing rays to visualize to the octahedral depth data.");
internal static readonly GUIContent s_DrawOctahedralDepthRayIndexX = new GUIContent("Octahedral Depth Rays Probe X", "Specifies the x index of the probe to visualize octahedral depth rays for.");
internal static readonly GUIContent s_DrawOctahedralDepthRayIndexY = new GUIContent("Octahedral Depth Rays Probe Y", "Specifies the y index of the probe to visualize octahedral depth rays for.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ class SerializedProbeVolume
internal SerializedProperty probeVolumeParams;
internal SerializedProperty probeVolumeAsset;
internal SerializedProperty debugColor;
internal SerializedProperty supportDynamicGI;
internal SerializedProperty drawProbes;
internal SerializedProperty drawNeighbors;
internal SerializedProperty neighborsQuadScale;
internal SerializedProperty drawOctahedralDepthRays;
internal SerializedProperty drawOctahedralDepthRayIndexX;
internal SerializedProperty drawOctahedralDepthRayIndexY;
Expand Down Expand Up @@ -51,7 +54,10 @@ internal SerializedProbeVolume(SerializedObject serializedObject)
probeVolumeAsset = m_SerializedObject.FindProperty("probeVolumeAsset");

debugColor = probeVolumeParams.FindPropertyRelative("debugColor");
supportDynamicGI = probeVolumeParams.FindPropertyRelative("supportDynamicGI");
drawProbes = probeVolumeParams.FindPropertyRelative("drawProbes");
drawNeighbors = probeVolumeParams.FindPropertyRelative("drawNeighbors");
neighborsQuadScale = probeVolumeParams.FindPropertyRelative("neighborsQuadScale");

drawOctahedralDepthRays = probeVolumeParams.FindPropertyRelative("drawOctahedralDepthRays");
drawOctahedralDepthRayIndexX = probeVolumeParams.FindPropertyRelative("drawOctahedralDepthRayIndexX");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ internal class SerializedHDLight
public SerializedProperty evsmLightLeakBias;
public SerializedProperty evsmVarianceBias;
public SerializedProperty evsmBlurPasses;
public SerializedProperty affectDynamicGI;

// Improved moment shadows data
public SerializedProperty lightAngle;
Expand Down Expand Up @@ -392,6 +393,7 @@ public SerializedHDLight(HDAdditionalLightData[] lightDatas, LightEditor.Setting
evsmVarianceBias = o.Find("m_EvsmVarianceBias");
evsmLightLeakBias = o.Find("m_EvsmLightLeakBias");
evsmBlurPasses = o.Find("m_EvsmBlurPasses");
affectDynamicGI = o.Find("m_AffectDynamicGI");

// Moment light
lightAngle = o.Find("m_LightAngle");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,46 @@ IncludeCollection GenerateIncludes()

#endregion

#region DynamicGIExtraDataGen
public static PassDescriptor GenerateDynamicGIExtraDataGen(bool supportLighting)
{
return new PassDescriptor
{
// Definition
displayName = "DynamicGIDataSample",
referenceName = "SHADERPASS_DYNAMIC_GIDATA_SAMPLE",
lightMode = "DynamicGIDataSample",
useInPreview = false,

// We don't need any vertex inputs on meta pass:
validVertexBlocks = new BlockFieldDescriptor[0],

// Collections
requiredFields = CoreRequiredFields.DynamicGIDataSample,
renderStates = CoreRenderStates.Meta,
pragmas = CorePragmas.Basic,
defines = CoreDefines.ShaderGraphRaytracingDefault,
includes = GenerateIncludes(),
};

IncludeCollection GenerateIncludes()
{
var includes = new IncludeCollection();

includes.Add(CoreIncludes.CorePregraph);
if (supportLighting)
includes.Add(CoreIncludes.kNormalSurfaceGradient, IncludeLocation.Pregraph);
includes.Add(CoreIncludes.kPassPlaceholder, IncludeLocation.Pregraph);
includes.Add(CoreIncludes.CoreUtility);
includes.Add(CoreIncludes.kShaderGraphFunctions, IncludeLocation.Pregraph);
includes.Add(CoreIncludes.kPassDynamicGIExtraDataSample, IncludeLocation.Postgraph);

return includes;
}
}

#endregion

#region Depth Forward Only

public static PassDescriptor GenerateDepthForwardOnlyPass(bool supportLighting)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,13 @@ static class CoreRequiredFields
HDStructFields.AttributesMesh.uv2,
};

public static FieldCollection DynamicGIDataSample = new FieldCollection()
{
HDStructFields.FragInputs.tangentToWorld,
HDStructFields.AttributesMesh.uv0,
HDStructFields.AttributesMesh.color,
};

public static FieldCollection PositionRWS = new FieldCollection()
{
HDStructFields.VaryingsMeshToPS.positionRWS,
Expand Down Expand Up @@ -943,6 +950,7 @@ static class CoreIncludes

// Public Postgraph Pass
public const string kPassLightTransport = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassLightTransport.hlsl";
public const string kPassDynamicGIExtraDataSample = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDynamicGIDataSample.hlsl";
public const string kPassDepthOnly = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassDepthOnly.hlsl";
public const string kPassGBuffer = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassGBuffer.hlsl";
public const string kPassMotionVectors = "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/ShaderPassMotionVectors.hlsl";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ PassCollection GetPasses()
// Common "surface" passes
HDShaderPasses.GenerateShadowCaster(supportLighting),
HDShaderPasses.GenerateMETA(supportLighting),
HDShaderPasses.GenerateDynamicGIExtraDataGen(supportLighting),
HDShaderPasses.GenerateScenePicking(),
HDShaderPasses.GenerateSceneSelection(supportLighting),
HDShaderPasses.GenerateMotionVectors(supportLighting, supportForward),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ public class GeneralSection
public static readonly GUIContent maximumLODLevel = EditorGUIUtility.TrTextContent("Maximum LOD Level");
public static readonly GUIContent LODBias = EditorGUIUtility.TrTextContent("LOD Bias");
internal static readonly GUIContent supportProbeVolumeContent = EditorGUIUtility.TrTextContent("Probe Volume", "When enabled, HDRP allocates Shader variants and memory for probe volume based GI. This allows you to use probe volumes in your Unity Project.");
internal static readonly GUIContent supportProbeVolumeDynamicGI = EditorGUIUtility.TrTextContent("Dynamic GI", "Enable dynamic GI for Probe Volumes");
internal const string probeVolumeInfo = "Warning: Probe Volumes is a highly experimental feature.\nIt is disabled by default for this reason.\nIt's functionality is subject to breaking changes and whole sale removal.\nIt is not recommended for use outside of for providing feedback.\nIt should not be used in production.\nTo enable, set:\nProbeVolumesEvaluationMode = ProbeVolumesEvaluationModes.MaterialPass\ninside of ShaderConfig.cs\and inside of the editor run:\nEdit->Render Pipeline->Generate Shader Includes\nProbe Volumes feature must also be enabled here.";
internal static readonly GUIContent probeVolumeAtlasResolution = EditorGUIUtility.TrTextContent("Atlas Resolution", "Resolution of the 3D texture atlas containing visible ProbeVolumes.");
internal static readonly GUIContent probeVolumeAtlasOctahedralDepthResolution = EditorGUIUtility.TrTextContent("Octahedral Depth Atlas Resolution", "Resolution of the 2D texture atlas containing visible ProbeVolumes octahedral depth data.");
Expand Down Expand Up @@ -265,6 +266,8 @@ public class GeneralSection
{ supportTransparentDepthPostpass , shaderVariantDrawback },
{ supportRaytracing , string.Format("{0}, {1}", memoryDrawback, lotShaderVariantDrawback) },
{ supportProbeVolumeContent , string.Format("{0}, {1}", memoryDrawback, shaderVariantDrawback) }
{ supportProbeVolumeContent , string.Format("{0}, {1}", memoryDrawback, shaderVariantDrawback) },
{ supportProbeVolumeDynamicGI , "" },
};

public static Dictionary<SupportedLitShaderMode, string> supportLitShaderModeDrawbacks = new Dictionary<SupportedLitShaderMode, string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,7 @@ static void Drawer_SectionLightingUnsorted(SerializedHDRenderPipelineAsset seria
if (serialized.renderPipelineSettings.supportProbeVolume.boolValue)
EditorGUILayout.HelpBox(Styles.probeVolumeInfo, MessageType.Warning);

EditorGUILayout.PropertyField(serialized.renderPipelineSettings.supportProbeVolumeDynamicGI, Styles.supportProbeVolumeDynamicGI);
EditorGUI.BeginChangeCheck();
EditorGUILayout.DelayedIntField(serialized.renderPipelineSettings.probeVolumeSettings.atlasResolution, Styles.probeVolumeAtlasResolution);
if (EditorGUI.EndChangeCheck())
Expand Down Expand Up @@ -1192,7 +1193,10 @@ static void SupportedSettingsInfoSection(SerializedHDRenderPipelineAsset seriali
AppendSupport(builder, serialized.renderPipelineSettings.supportTransparentDepthPostpass, Styles.supportTransparentDepthPostpass);
AppendSupport(builder, serialized.renderPipelineSettings.supportRayTracing, Styles.supportRaytracing);
if (ShaderConfig.s_ProbeVolumesEvaluationMode != ProbeVolumesEvaluationModes.Disabled)
{
AppendSupport(builder, serialized.renderPipelineSettings.supportProbeVolume, Styles.supportProbeVolumeContent);
AppendSupport(builder, serialized.renderPipelineSettings.supportProbeVolumeDynamicGI, Styles.supportProbeVolumeDynamicGI);
}
AppendSupport(builder, serialized.renderPipelineSettings.supportedRayTracingMode, Styles.supportedRayTracingMode);

EditorGUILayout.HelpBox(builder.ToString(), MessageType.Info, wide: true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ static void Drawer_SectionLightingSettings(SerializedFrameSettings serialized, E
area.AmmendInfo(FrameSettingsField.ReprojectionForVolumetrics, overrideable: () => hdrpSettings.supportVolumetrics);
area.AmmendInfo(FrameSettingsField.LightLayers, overrideable: () => hdrpSettings.supportLightLayers);
area.AmmendInfo(FrameSettingsField.ProbeVolume, overrideable: () => hdrpSettings.supportProbeVolume);
area.AmmendInfo(FrameSettingsField.ProbeVolumeDynamicGI, overrideable: () => hdrpSettings.supportProbeVolumeDynamicGI);
area.AmmendInfo(FrameSettingsField.ScreenSpaceShadows, overrideable: () => hdrpSettings.hdShadowInitParams.supportScreenSpaceShadows);
area.AmmendInfo(FrameSettingsField.HierarchicalVarianceScreenSpaceShadows, overrideable: () => hdrpSettings.hdShadowInitParams.supportHierarchicalVarianceScreenSpaceShadows);
area.Draw(withOverride);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class SerializedRenderPipelineSettings
public SerializedProperty supportTransparentDepthPrepass;
public SerializedProperty supportTransparentDepthPostpass;
internal SerializedProperty supportProbeVolume;

internal SerializedProperty supportProbeVolumeDynamicGI;

public SerializedGlobalLightLoopSettings lightLoopSettings;
public SerializedHDShadowInitParameters hdShadowInitParams;
Expand Down Expand Up @@ -138,6 +138,7 @@ public SerializedRenderPipelineSettings(SerializedProperty root)
supportTransparentDepthPrepass = root.Find((RenderPipelineSettings s) => s.supportTransparentDepthPrepass);
supportTransparentDepthPostpass = root.Find((RenderPipelineSettings s) => s.supportTransparentDepthPostpass);
supportProbeVolume = root.Find((RenderPipelineSettings s) => s.supportProbeVolume);
supportProbeVolumeDynamicGI = root.Find((RenderPipelineSettings s) => s.supportProbeVolumeDynamicGI);

supportRayTracing = root.Find((RenderPipelineSettings s) => s.supportRayTracing);
supportedRayTracingMode = root.Find((RenderPipelineSettings s) => s.supportedRayTracingMode);
Expand Down

0 comments on commit 121c875

Please sign in to comment.