InternalCreates a new GPUMemoryBatch.
The data textures that implement GPU-side model storage for this GPUMemoryBatch.
ReadonlyhasTrue when this batch carries per-vertex normals — drives lazy allocation of _vertexNormalTexture and the technique variant that reads from it.
ReadonlyhasUVsTrue when this batch carries per-vertex UV coordinates — drives lazy allocation of _vertexUVTexture and the technique variant that binds it.
Index of this GPUMemoryBatch within the GPUMemoryManager.sortedBatches array.
ReadonlymipmapWhen true, the batch's per-batch PBR atlases are allocated
with a full mip pyramid and sampled trilinearly. Set when at
least one of the meshes' materials binds an opted-in
SceneTexture
(SceneTextureParams.mipmap === true); otherwise the atlases
stay on the cheap single-level path.
ReadonlytriplanarWhen true, the batch's per-batch PBR atlases (albedo,
metallic-roughness, normal-map) get allocated even when
hasUVs is false. The renderer's triplanar shader
variant samples those atlases via world-space UVs derived from
vWorldPos, so triplanar batches need the atlases populated even
though the geometry itself has no per-vertex UV stream.
StaticitemAllocates all data textures for this GPUMemoryBatch.
Retrieves parameters for a drawArrays() call to render a specific mesh.
Retrieves a SceneGeometry by its geometryIndex.
Returns the total number of bytes currently used by all managed arrays in this batch.
Check if there is enough memory for a SceneMesh.
GPUMemoryCheckResult indicating if the mesh can be added, or if not, what resource limit would be exceeded.
Removes a SceneMesh from data texture manager.
Sets attributes for e mesh to apply across all Views.
Sets RenderContext.viewFlags[...].needsRender to true.
OptionaltileIndex?: numberOptional tileIndex of the GPUTile containing the mesh. This can be dynamically updated, as mesh can move between tiles.
Updates the per-view clippable bit for a mesh on the
shared MeshViewAttributeTexture. The renderer reads this
bit as vClippable in the fragment shader's section-plane
test.
Sets per-view mesh cull state. Culling and visibility are independent inputs to the same draw-inclusion decision — a culled mesh is dropped from the view's draw index just like a hidden one, but without disturbing the user-set visibility, so toggling culling never reveals an object the app deliberately hid.
Sets the modeling transform matrix for a mesh. The modeling transform is relative to the center of the meshes tile.
Sets RenderContext.viewFlags[...].needsRender to true.
Sets the renderPass for a SceneMesh within a specific View.
Sets attributes for a mesh within a specific View.
Sets RenderContext.viewFlags[viewIndex].needsRender to true.
TODO
Re-encode the pattern slots held for the supplied material.
Called from GPUMemoryManager.sceneMaterialPatternChanged
when a SceneMaterial's
linePattern or hatchPattern is updated post-create.
Looks up the material's slot in this batch's line and
hatch tables (if any), overwrites the slot data, and marks
the texture dirty for upload on the next frame. Returns
true when at least one slot was updated, so the caller
can short-circuit nudging a re-render on batches that
don't reference this material.
The per-mesh attribute table is left untouched — the slot
index in there is keyed on material.uniqueId, which
doesn't change.
Re-upload the pixels of an already-cached SceneTexture from this
batch's atlases. Walks all three atlases (albedo,
metallic-roughness, normal-map) and re-uploads wherever the id
matches; returns true if any of them held the texture.
Used by the post-finalize onSceneTextureImageDataChanged flow.
The source's dimensions must match the placement — heat-map
painting mutates pixels in place but never resizes.
Flush any pending updates to the GPU.
Manages GPU-resident, dynamically-editable data storage for model geometry and attributes.