The renderer's context, or null before initialize / after dispose.
Whether the context is currently lost (§61).
Whether the renderer has been disposed (§83).
The renderer's geometry cache, or null when the context is down.
The renderer's particle-batch cache, or null when the context is down
— the live accessor the id pass uses to instance §36 systems rather than
rasterising the shared unit quad.
The renderer's render-target cache, or null when the context is down.
Drawing-buffer height in device pixels.
Drawing-buffer width in device pixels — what §48 rectangles resolve against.
The live window a
WebglRendereropens for its picking services — the narrow slice of renderer state an id pass genuinely needs, and nothing else.Every member is a live accessor (a method, so the renderer implements the whole window as eight
this-capturing arrows), not a snapshot, because the caches change identity under the renderer's feet: a §61 context restore builds new caches (the old handles died with the context), so a service that capturedgeometriesonce would draw with a cache the renderer has already abandoned. A service re-reads all of them per pass, and detects a lost-and-restored context by cache identity (gl-picking.ts).Sharing the renderer's caches — rather than the service owning twins — is deliberate: the id pass draws the same geometries the frame drew, so a second
GeometryCachewould hold a second VAO and a second set of buffers per geometry, doubling GPU memory to draw the same bytes.