Skip to content

Commit 1bc3272

Browse files
laylaarabEvergreen
authored andcommitted
Add simple terrain support in Surface Cache
1 parent a70ffd2 commit 1bc3272

File tree

4 files changed

+322
-59
lines changed

4 files changed

+322
-59
lines changed

Packages/com.unity.render-pipelines.core/Runtime/Lighting/SurfaceCache/SurfaceCacheWorld.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,30 @@ public InstanceHandle AddInstance(
414414
return instance;
415415
}
416416

417+
public InstanceHandle AddInstance(
418+
Terrain terrain,
419+
MaterialHandle material,
420+
uint mask,
421+
in Matrix4x4 localToWorldMatrix)
422+
{
423+
Debug.Assert(terrain.terrainData != null);
424+
Debug.Assert(material != MaterialHandle.Invalid);
425+
426+
Span<uint> masks = stackalloc uint[1] { mask };
427+
428+
Span<uint> materialIndices = stackalloc uint[1];
429+
Span<bool> isOpaque = stackalloc bool[1];
430+
431+
_materialPool.GetMaterialInfo(material.Value, out materialIndices[0], out bool isTransmissive);
432+
isOpaque[0] = !isTransmissive;
433+
434+
Component comp = terrain;
435+
InstanceHandle instance = _instanceHandleSet.Add();
436+
437+
_rayTracingAccelerationStructure.AddInstance(instance.Value, comp, masks, materialIndices, isOpaque, terrain.renderingLayerMask);
438+
return instance;
439+
}
440+
417441
public void UpdateInstanceTransform(InstanceHandle instance, Matrix4x4 localToWorldMatrix)
418442
{
419443
_rayTracingAccelerationStructure.UpdateInstanceTransform(instance.Value, localToWorldMatrix);

0 commit comments

Comments
 (0)