123 3D: Retained renderer backends
3D reference map · First 3D picture
The animate/3d API is pure; effectful backend selection belongs to animate/3d/render. A compiled view includes ordered, renderer-neutral centreline strokes and screen markers. A backend receives an immutable render3d-request containing a camera-independent compiled view, a frame specification, and a canonical attachment demand. It returns one immutable renderer3d-frame-artifact which owns every delivered attachment. Thus changing a backend, releasing its cache, or recovering from a failed optional native renderer cannot mutate a view3d, any of its spatial children, or a completed frame.
| (require animate/3d/render) | package: animate |
value
value
procedure
(renderer3d? value) → boolean?
value : any/c
procedure
(renderer3d-id renderer) → symbol?
renderer : renderer3d?
procedure
(renderer3d-cache-identity renderer) → any/c
renderer : renderer3d?
procedure
(renderer3d-capabilities-of renderer)
→ renderer3d-capabilities? renderer : renderer3d?
procedure
(renderer3d-fingerprint renderer request) → any/c
renderer : renderer3d? request : render3d-request?
procedure
(renderer3d-prepare renderer request) → any/c
renderer : renderer3d? request : render3d-request?
procedure
(renderer3d-render renderer preparation request) → renderer3d-render-result? renderer : renderer3d? preparation : any/c request : render3d-request?
procedure
(renderer3d-release renderer) → void?
renderer : renderer3d?
struct
(struct renderer3d-capabilities (features limits diagnostics) #:transparent) features : set? limits : immutable-hash? diagnostics : immutable-hash?
value
renderer3d-known-features : set?
value
renderer3d-known-limits : set?
procedure
(renderer3d-supports? capabilities features) → boolean? capabilities : renderer3d-capabilities? features : (or/c symbol? (listof symbol?) set?)
procedure
(renderer3d-capability-limit capabilities limit [ default]) → any/c capabilities : renderer3d-capabilities? limit : symbol? default : any/c = #f
procedure
(renderer3d-missing-capabilities capabilities features) → (listof symbol?) capabilities : renderer3d-capabilities? features : (or/c symbol? (listof symbol?) set?)
procedure
(renderer3d-require-capabilities capabilities features) → void? capabilities : renderer3d-capabilities? features : (or/c symbol? (listof symbol?) set?)
procedure
(renderer3d-request-required-features request) → set?
request : render3d-request?
procedure
(renderer3d-request-required-limits request) → immutable-hash?
request : render3d-request?
procedure
(renderer3d-require-request-capabilities renderer request) → void? renderer : renderer3d? request : render3d-request?
Current capability limitation: The software backend has no practical fixed directional, point, spot, or clipping bound. The optional OpenGL shaders explicitly support at most four directional lights, eight point lights, four spot lights, and eight clip planes; an over-limit request raises an error rather than silently dropping lights. Its maximum sample count is the live GL limit, although a one-sample framebuffer remains available. The software backend supports directional and spot shadow maps. The OpenGL backend supports the same descriptor kinds with at most eight cached depth maps.