Skip to main content

Class: ChunkRegionArenas

Region buffer arenas for the shared-opaque chunk bucket, adapted from Sodium's region-arena renderer. Every opaque section inside an NxN block of chunk columns lives as one slot of one BatchedMesh, so an entire region renders as a single multi-draw call per pass instead of one draw per (section x bucket) mesh, and a remesh rewrites a slot in place (setGeometryAt) instead of disposing and recreating GPU buffers.

BatchedMesh culls and sorts per instance against whichever camera renders it, so sections keep per-section frustum culling in the main pass while the CSM depth passes — which render with the light's camera — still see every caster they need. That per-pass behavior is what the whole-object chunkCullShadowSafeDistance bypass exists to approximate for regular meshes; arena sections need no such bypass.

Constructors

constructor

new ChunkRegionArenas(options, maxSectionsPerRegion, getMaterial, parent, positionUnitsPerBlock): ChunkRegionArenas

Parameters

NameType
optionsChunkRegionArenasOptions
maxSectionsPerRegionnumber
getMaterial() => CustomChunkShaderMaterial
parentObject3D<Object3DEventMap>
positionUnitsPerBlocknumber

Returns

ChunkRegionArenas

Accessors

stats

get stats(): Object

Returns

Object

NameType
regionsnumber
sectionsnumber

Methods

clearChunk

clearChunk(cx, cz): void

Parameters

NameType
cxnumber
cznumber

Returns

void


clearSection

clearSection(cx, cz, level): void

Parameters

NameType
cxnumber
cznumber
levelnumber

Returns

void


dispose

dispose(): void

Returns

void


setSectionGeometry

setSectionGeometry(cx, cz, level, geometry, x, y, z): void

Parameters

NameType
cxnumber
cznumber
levelnumber
geometryBufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>
xnumber
ynumber
znumber

Returns

void


setSectionVisible

setSectionVisible(cx, cz, level, isVisible): void

Parameters

NameType
cxnumber
cznumber
levelnumber
isVisibleboolean

Returns

void