#218

Scene: follow-ups backlog

Openmatiasngfopened 3mo ago

Summary

Lower-priority ideas and explicitly-deferred work that came out of the Scene API north-star design, kept as a single backlog issue so the four "real" sub-issues stay focused on the MVP. None of these block the MVP; pick them up opportunistically.

See the parent issue for the full boundary/context.

follow() sugar

forest.instances.follow(nodes); // replaces the manual onBeforeRender + instances.set() pattern
                                  // documented in the instancing sub-issue

Dynamic/indirect batching — phase 3

GPU-driven batching, indirect draws, and culling beyond level-1 (free, fingerprint-sharing) and level-2 (mergeGeometries, below). Low-level indirect draw already exists as a primitive; this is about a higher-level scene-aware batching pass built on top of it. Depends on the instancing sub-issue landing first.

mergeGeometries utility

A CPU pre-process/authoring-time utility that merges static geometries into one draw call — orthogonal to runtime instancing, useful for batching level 2.

const merged = mergeGeometries([rock1, rock2, rock3]); // pre-process, not a runtime scene concept
world.add(mesh(merged, rockProgram));

sceneView() handle

An explicit, additive handle over renderTree()'s implicit kernel-owned state — compile(), .stats, incremental compilation. This is the surface #206 (compilation orchestration) already targets; #206 is an existing issue and should be read together with this backlog and with the renderTree sub-issue. #206's target surface is now renderTree/sceneView vocabulary (not the old createSceneView/SceneView naming) — see the comment linking it to the parent issue.

Typed per-mesh state sugar

Convenience helpers for the ctx.node per-mesh state channel (used today for things like bonesOf(ctx.node) in the program-protocol sub-issue's skinning example) — e.g. a typed defineMeshState<T>() helper instead of ad hoc property bags on the node.

Acceptance

This is a backlog issue: there's no single acceptance criterion. Split any of the above into its own issue once it's actually being picked up, and reference the parent issue from it.

Activity

0

No activity yet.