v0.12.2
·
355 commits
to master
since this release
Features
- new
ViewportGpuResourcesmethod that writes positions and normals directly into an existing mesh's GPU vertex buffer without reallocating. Use this for deforming meshes where topology is stable across frames: the index buffer, edge buffer, and bind groups are all reused. The normal line visualization buffer is also updated in place if present (write_mesh_positions_normals). prepare_ldr_dyn_res/paint_dyn_res_blit: newViewportRenderermethods for integrating dynamic resolution into frameworks where the surface render pass is externally owned.prepare_ldr_dyn_resencodes the scaled scene pass into the pre-pass command encoder;paint_dyn_res_blitupscales the result inside the surface pass. See the Rendering Variants table indocs/overviews/src-architecture.md.
Performance
replace_mesh_datanow detects when the new vertex and index counts match the existing mesh (and no attributes are being updated) and writes to the existing GPU buffers in place instead of allocating new ones. For repeated updates of topology-stable meshes this eliminates the GPU memory allocation cycle entirely.- Instanced scene preparation no longer triggers per-object uniform re-uploads for every item when a single two-sided or non-instancable mesh is present. The
has_per_frame_mutationscache key is replaced withinstancable_count, so the instanced batch rebuilds only when the number of instancable objects actually changes.
Fixes
- Dynamic resolution controller signal: fallback when GPU timestamps are unavailable is now
total_frame_ms(wall-clock frame time) rather thancpu_prepare_ms, giving the controller a meaningful budget signal on backends that do not support timestamp queries.