Skip to content

Commit 7df3d9e

Browse files
adrien-de-tocquevilleEvergreen
authored andcommitted
[APV] Fix baking when there is no geometry in the scene
When forcing the minimal baking possible by ebaling force and having no geometry in the scene, a nullref was generated.
1 parent ebfd28f commit 7df3d9e

File tree

6 files changed

+11
-8
lines changed

6 files changed

+11
-8
lines changed

Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeBrickPool.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ internal void Cleanup()
116116

117117
internal static void Initialize()
118118
{
119+
if (!SystemInfo.supportsComputeShaders)
120+
return;
121+
119122
s_DataUploadCS = GraphicsSettings.GetRenderPipelineSettings<ProbeVolumeRuntimeResources>()?.probeVolumeUploadDataCS;
120123
s_DataUploadL2CS = GraphicsSettings.GetRenderPipelineSettings<ProbeVolumeRuntimeResources>()?.probeVolumeUploadDataL2CS;
121124

Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBakingSet.Editor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -422,9 +422,9 @@ static internal int MaxSubdivLevelInProbeVolume(Vector3 volumeSize, int maxSubdi
422422
{
423423
float maxSizedDim = Mathf.Max(volumeSize.x, Mathf.Max(volumeSize.y, volumeSize.z));
424424
float maxSideInBricks = maxSizedDim / ProbeReferenceVolume.instance.MinDistanceBetweenProbes();
425-
int subdiv = Mathf.FloorToInt(Mathf.Log(maxSideInBricks, 3));
425+
int subdiv = Mathf.FloorToInt(Mathf.Log(maxSideInBricks, 3)) - 1;
426426

427-
return Mathf.Max(subdiv, maxSubdiv) - 1;
427+
return Mathf.Max(subdiv, maxSubdiv);
428428
}
429429

430430
static void InflateBound(ref Bounds bounds, ProbeVolume pv)
@@ -446,7 +446,7 @@ static void InflateBound(ref Bounds bounds, ProbeVolume pv)
446446
maxPadding = cellSizeVector - new Vector3(Mathf.Abs(maxPadding.x), Mathf.Abs(maxPadding.y), Mathf.Abs(maxPadding.z));
447447

448448
// Find the size of the brick we can put for every axis given the padding size
449-
int maxSubdiv = ProbeReferenceVolume.instance.GetMaxSubdivision();
449+
int maxSubdiv = ProbeReferenceVolume.instance.GetMaxSubdivision() - 1;
450450
if (pv.overridesSubdivLevels) maxSubdiv = Mathf.Min(pv.highestSubdivLevelOverride, maxSubdiv);
451451

452452
float rightPaddingSubdivLevel = ProbeReferenceVolume.instance.BrickSize(MaxSubdivLevelInProbeVolume(new Vector3(maxPadding.x, originalBounds.size.y, originalBounds.size.z), maxSubdiv));
@@ -554,7 +554,7 @@ internal SceneBakeData GetSceneBakeData(string sceneGUID)
554554
internal static bool SceneHasProbeVolumes(string sceneGUID)
555555
{
556556
var bakingSet = GetBakingSetForScene(sceneGUID);
557-
return bakingSet.GetSceneBakeData(sceneGUID)?.hasProbeVolume ?? false;
557+
return bakingSet?.GetSceneBakeData(sceneGUID)?.hasProbeVolume ?? false;
558558
}
559559

560560
internal bool DialogNoProbeVolumeInSetShown()

Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBlendStates.compute

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch webgpu
1+
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch webgpu gles3
22
//#pragma enable_d3d11_debug_symbols
33

44
#pragma kernel BlendScenarios

Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadData.compute

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch webgpu
1+
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch webgpu gles3
22
//#pragma enable_d3d11_debug_symbols
33

44
#include "Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataCommon.hlsl"

Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataL2.compute

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch webgpu
1+
#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch webgpu gles3
22
//#pragma enable_d3d11_debug_symbols
33

44
#include "Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataCommon.hlsl"

Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/VolumetricClouds.compute

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ void REPROJECT_CLOUDS(uint3 dispatchThreadId : SV_DispatchThreadID,
126126
{
127127
finalColor = previousColor;
128128
finalCloudDepth = previousCloudDepth;
129-
finalSampleCount = validityFactor * previousSampleCount * _CloudHistoryInvalidation;
129+
finalSampleCount = max(1, validityFactor * previousSampleCount * _CloudHistoryInvalidation);
130130
}
131131
}
132132
else if (!validTracing)

0 commit comments

Comments
 (0)