RecordingDevice: lend cached geometry instead of copying it per draw
A geometry-cache hit moved every vertex vector out of the cache into the draw (deep copy of positions/normals/uv/diffuse/indices/bones each frame). The cache now lends its vectors to the frame's first draw of that geometry and takes them back in Render3DBeginFrame; later draws of the same key+revision in the frame (terrain splat layers, shadow-map pass) are marked shared_geometry and carry no vectors -- the native host looks the GPU geometry up by key+revision, and draw captures expand them (Render3DExpandSharedGeometry). Index reads reuse a scratch buffer. Desktop live game: RenderGame rnd 1.7 -> 1.2 ms, no visual change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
44a020f01e
commit
6bfcac7d68
@@ -362,7 +362,9 @@ int run_live_client(
|
||||
renderer.touch_controller.update_screen_size(int(ui_w), int(ui_h));
|
||||
renderer.touch_controller.append_ui_commands(cap_ui);
|
||||
}
|
||||
native_draw_capture::write(capture_out, Render3DDraws(), cap_textures, ui_w, ui_h, cap_ui);
|
||||
std::vector<Render3DDraw> cap_draws = Render3DDraws();
|
||||
Render3DExpandSharedGeometry(cap_draws);
|
||||
native_draw_capture::write(capture_out, cap_draws, cap_textures, ui_w, ui_h, cap_ui);
|
||||
}
|
||||
|
||||
if (!screenshot_out.empty() && frames > 0) {
|
||||
|
||||
Reference in New Issue
Block a user