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


setSectionReveal​

▸ setSectionReveal(cx, cz, level, reveal): boolean

How much of a section shows through its own fog color, 0 (pure fog tint) to 1 (drawn as itself). Rides the slot's batching color, so a remesh that rewrites the slot in place keeps the value; a slot allocated fresh starts at 1.

Parameters​

NameType
cxnumber
cznumber
levelnumber
revealnumber

Returns​

boolean


setSectionVisible​

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

Parameters​

NameType
cxnumber
cznumber
levelnumber
isVisibleboolean

Returns​

void