Skip to content

Commit 02cec56

Browse files
adrien-de-tocquevilleEvergreen
authored andcommitted
[APV] Fix errors when baking virtual offset
Fixed issue when building the acceleration structure with renderes that don't have a mesh filter. https://unity.slack.com/archives/C06TQ1HNE/p1712352499863349 Also fix an issue with some meshes reported here https://forum.unity.com/threads/adaptive-probe-volumes-apvs-experimental-release-for-hdrp-in-2021-2.1238824/page-17#post-9704507 And fix formatting in doc
1 parent 8979309 commit 02cec56

File tree

6 files changed

+126
-12
lines changed

6 files changed

+126
-12
lines changed

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.LightTransport.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,26 @@ public void BindSamplingTextures(CommandBuffer cmd)
561561
SamplingResources.BindSamplingTextures(cmd, m_SamplingResources);
562562
}
563563

564+
public bool TryGetMeshForAccelerationStructure(Renderer renderer, out Mesh mesh)
565+
{
566+
mesh = null;
567+
if (renderer.isPartOfStaticBatch)
568+
{
569+
Debug.LogError("Static batching is not supported when baking APV.");
570+
return false;
571+
}
572+
573+
mesh = renderer.GetComponent<MeshFilter>().sharedMesh;
574+
if (mesh == null)
575+
return false;
576+
577+
// This would error out later in LoadIndexBuffer in LightTransport package
578+
if ((mesh.indexBufferTarget & GraphicsBuffer.Target.Raw) == 0 && (mesh.GetIndices(0) == null || mesh.GetIndices(0).Length == 0))
579+
return false;
580+
581+
return true;
582+
}
583+
564584
public void Dispose()
565585
{
566586
if (m_Context != null)

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.SkyOcclusion.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,13 +215,7 @@ static IRayTracingAccelStruct BuildAccelerationStructure()
215215

216216
foreach (var renderer in contributors.renderers)
217217
{
218-
if (renderer.component.isPartOfStaticBatch)
219-
{
220-
Debug.LogError("Static batching should be disabled when using sky occlusion support.");
221-
}
222-
223-
var mesh = renderer.component.GetComponent<MeshFilter>().sharedMesh;
224-
if (mesh == null)
218+
if (!s_TracingContext.TryGetMeshForAccelerationStructure(renderer.component, out var mesh))
225219
continue;
226220

227221
var matIndices = GetMaterialIndices(renderer.component);

Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.VirtualOffset.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ static IRayTracingAccelStruct BuildAccelerationStructure(int mask)
137137
if ((layerMask & mask) == 0)
138138
continue;
139139

140-
var mesh = renderer.component.GetComponent<MeshFilter>().sharedMesh;
141-
if (mesh == null)
140+
if (!s_TracingContext.TryGetMeshForAccelerationStructure(renderer.component, out var mesh))
142141
continue;
143142

144143
int subMeshCount = mesh.subMeshCount;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public static GIContributors Find(ContributorFilter filter, Scene? scene = null)
9191

9292
void PushRenderer(Renderer renderer)
9393
{
94-
if (!ContributesGI(renderer.gameObject) || !renderer.gameObject.activeInHierarchy || !renderer.enabled || !renderer.isLOD0)
94+
if (!ContributesGI(renderer.gameObject) || renderer.gameObject.GetComponent<MeshFilter>() == null || !renderer.gameObject.activeInHierarchy || !renderer.enabled || !renderer.isLOD0)
9595
return;
9696

9797
var bounds = renderer.bounds;

Packages/com.unity.render-pipelines.high-definition/Documentation~/probevolumes-override-backend.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ The Lighting data baker bakes the incoming irradiance as spherical harmonics, an
1414
To override the default Lighting data baker:
1515

1616
1. Create a class that inherits from [LightingBaker](https://docs.unity3d.com/Packages/[email protected]/api/UnityEngine.Rendering.AdaptiveProbeVolumes.LightingBaker.html), and provide an implementation for all abstract methods. In the HDRP Graphics repo, refer to [ProbeGIBaking.LightTransport.cs](https://github.com/Unity-Technologies/Graphics/blob/master/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeGIBaking.LightTransport.cs#L57) for reference implementation.
17-
2: Use [SetLightingBakerOverride](https://docs.unity3d.com/Packages/[email protected]/api/UnityEngine.Rendering.AdaptiveProbeVolumes.html#UnityEngine_Rendering_AdaptiveProbeVolumes_SetLightingBakerOverride_UnityEngine_Rendering_AdaptiveProbeVolumes_LightingBaker_) and set your new `LightingBaker` class as the parameter.
17+
2. Use [SetLightingBakerOverride](https://docs.unity3d.com/Packages/[email protected]/api/UnityEngine.Rendering.AdaptiveProbeVolumes.html#UnityEngine_Rendering_AdaptiveProbeVolumes_SetLightingBakerOverride_UnityEngine_Rendering_AdaptiveProbeVolumes_LightingBaker_) and set your new `LightingBaker` class as the parameter.
1818

1919
### Virtual Offset data
2020

Tests/SRPTests/Projects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2120_APV_Baking.unity

Lines changed: 102 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,105 @@ NavMeshSettings:
121121
debug:
122122
m_Flags: 0
123123
m_NavMeshData: {fileID: 0}
124+
--- !u!1 &14624196
125+
GameObject:
126+
m_ObjectHideFlags: 0
127+
m_CorrespondingSourceObject: {fileID: 0}
128+
m_PrefabInstance: {fileID: 0}
129+
m_PrefabAsset: {fileID: 0}
130+
serializedVersion: 6
131+
m_Component:
132+
- component: {fileID: 14624199}
133+
- component: {fileID: 14624198}
134+
- component: {fileID: 14624197}
135+
m_Layer: 0
136+
m_Name: Renderer Without MeshFilter
137+
m_TagString: Untagged
138+
m_Icon: {fileID: 0}
139+
m_NavMeshLayer: 0
140+
m_StaticEditorFlags: 0
141+
m_IsActive: 1
142+
--- !u!65 &14624197
143+
BoxCollider:
144+
m_ObjectHideFlags: 0
145+
m_CorrespondingSourceObject: {fileID: 0}
146+
m_PrefabInstance: {fileID: 0}
147+
m_PrefabAsset: {fileID: 0}
148+
m_GameObject: {fileID: 14624196}
149+
m_Material: {fileID: 0}
150+
m_IncludeLayers:
151+
serializedVersion: 2
152+
m_Bits: 0
153+
m_ExcludeLayers:
154+
serializedVersion: 2
155+
m_Bits: 0
156+
m_LayerOverridePriority: 0
157+
m_IsTrigger: 0
158+
m_ProvidesContacts: 0
159+
m_Enabled: 1
160+
serializedVersion: 3
161+
m_Size: {x: 1, y: 1, z: 1}
162+
m_Center: {x: 0, y: 0, z: 0}
163+
--- !u!23 &14624198
164+
MeshRenderer:
165+
m_ObjectHideFlags: 0
166+
m_CorrespondingSourceObject: {fileID: 0}
167+
m_PrefabInstance: {fileID: 0}
168+
m_PrefabAsset: {fileID: 0}
169+
m_GameObject: {fileID: 14624196}
170+
m_Enabled: 1
171+
m_CastShadows: 1
172+
m_ReceiveShadows: 1
173+
m_DynamicOccludee: 1
174+
m_StaticShadowCaster: 0
175+
m_MotionVectors: 1
176+
m_LightProbeUsage: 1
177+
m_ReflectionProbeUsage: 1
178+
m_RayTracingMode: 2
179+
m_RayTraceProcedural: 0
180+
m_RayTracingAccelStructBuildFlagsOverride: 0
181+
m_RayTracingAccelStructBuildFlags: 1
182+
m_SmallMeshCulling: 1
183+
m_RenderingLayerMask: 1
184+
m_RendererPriority: 0
185+
m_Materials:
186+
- {fileID: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, type: 2}
187+
m_StaticBatchInfo:
188+
firstSubMesh: 0
189+
subMeshCount: 0
190+
m_StaticBatchRoot: {fileID: 0}
191+
m_ProbeAnchor: {fileID: 0}
192+
m_LightProbeVolumeOverride: {fileID: 0}
193+
m_ScaleInLightmap: 1
194+
m_ReceiveGI: 1
195+
m_PreserveUVs: 0
196+
m_IgnoreNormalsForChartDetection: 0
197+
m_ImportantGI: 0
198+
m_StitchLightmapSeams: 1
199+
m_SelectedEditorRenderState: 3
200+
m_MinimumChartSize: 4
201+
m_AutoUVMaxDistance: 0.5
202+
m_AutoUVMaxAngle: 89
203+
m_LightmapParameters: {fileID: 0}
204+
m_SortingLayerID: 0
205+
m_SortingLayer: 0
206+
m_SortingOrder: 0
207+
m_AdditionalVertexStreams: {fileID: 0}
208+
--- !u!4 &14624199
209+
Transform:
210+
m_ObjectHideFlags: 0
211+
m_CorrespondingSourceObject: {fileID: 0}
212+
m_PrefabInstance: {fileID: 0}
213+
m_PrefabAsset: {fileID: 0}
214+
m_GameObject: {fileID: 14624196}
215+
serializedVersion: 2
216+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
217+
m_LocalPosition: {x: 23.5, y: 3, z: 0}
218+
m_LocalScale: {x: 1, y: 1, z: 1}
219+
m_ConstrainProportionsScale: 1
220+
m_Children: []
221+
m_Father: {fileID: 0}
222+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
124223
--- !u!1 &15395105
125224
GameObject:
126225
m_ObjectHideFlags: 0
@@ -1323,7 +1422,7 @@ MonoBehaviour:
13231422
m_Script: {fileID: 11500000, guid: a83d2f7ae04ab6f4f99b0d85377be998, type: 3}
13241423
m_Name:
13251424
m_EditorClassIdentifier:
1326-
bakingSet: {fileID: 0}
1425+
serializedBakingSet: {fileID: 0}
13271426
sceneGUID: fc784678bf952de4482e78aea61ccdc8
13281427
obsoleteAsset: {fileID: 0}
13291428
obsoleteCellSharedDataAsset: {fileID: 0}
@@ -2133,6 +2232,7 @@ MonoBehaviour:
21332232
virtualOffsetRotation: {x: 0, y: 0, z: 0}
21342233
virtualOffsetDistance: 1
21352234
geometryBias: 0.01
2235+
virtualOffsetThreshold: 0.75
21362236
rayOriginBias: -0.001
21372237
skyDirection: {x: 0, y: 0, z: 0}
21382238
directSampleCount: 4
@@ -2932,3 +3032,4 @@ SceneRoots:
29323032
- {fileID: 900459073}
29333033
- {fileID: 1725026264}
29343034
- {fileID: 2022978401}
3035+
- {fileID: 14624199}

0 commit comments

Comments
 (0)