feat(render3d): 23.4 - model_release, shared textures counted, and scatter layers sized to what they hold
- model_release(model) frees each primitive's mesh, and each texture once no other model uses it: the glTF texture cache counts the primitives using each texture (a path loaded again, and a LOD chain borrowing its LOD0's material, each take a reference); the last one frees the texture and forgets it along with any remembered material naming it, so a later load is a fresh one - a scatter layer's instance and sort arrays start at 256 and double as layer_add or a stream fills them, to the layer's cap, instead of the whole cap up front (0.4 GB in Maroon Lake) - gvk_tex_read's copy struct comes from the scratch ring - examples/rendering/release.ludic holds it (RELEASE OK on Vulkan and OpenGL), in the suite smooth renders pixel-identical before and after (max |d| 0). ludic-dev test 306/306. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
70a92a8862
commit
e634177ca4
10 changed files with 189 additions and 7 deletions
|
|
@ -99,6 +99,7 @@ export state Render3dState {
|
|||
gltf_comps: int = 0
|
||||
gltf_tex_paths: []pointer = null
|
||||
gltf_tex_ids: words = null
|
||||
gltf_tex_refs: words = null # how many primitives use each cached texture (model_release)
|
||||
gltf_tex_n: int = 0
|
||||
gltf_white: int = 0
|
||||
gltf_flat: int = 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue