In Wisp, objects displayed on the interactive visualizer canvas are represented by BottomLevelRenderer instances.
For neural fields, this means a BottomLevelRenderer represents a pair of neural field & tracer.
NeuralRadianceFieldPackedRenderer, for example, registers @field_renderer(BaseNeuralField, PackedRFTracer), so any neural field traceable by PackedRFTracer is supported by it.
Before this PR, adding a new subclass of BaseTracer (not a subclass of PackedRFTracer) would mean one had to also implement a corresponding BottomLevelRenderer to display that object.
With this PR, any BaseNeuralField + BaseTracer subclasses combo that did not register a @field_renderer would automatically use the default renderer:RayTracedRenderer.
Note that specialized Renderers may still be required for:
Defining optimal conditions of when the object should be refreshed / redrawn
Painting additional data layers
Defining custom behavior for interactive mode / pre-render / post-render.
In Wisp, objects displayed on the interactive visualizer canvas are represented by
BottomLevelRenderer
instances. For neural fields, this means aBottomLevelRenderer
represents a pair of neural field & tracer.NeuralRadianceFieldPackedRenderer
, for example, registers@field_renderer(BaseNeuralField, PackedRFTracer)
, so any neural field traceable byPackedRFTracer
is supported by it. Before this PR, adding a new subclass ofBaseTracer
(not a subclass ofPackedRFTracer
) would mean one had to also implement a correspondingBottomLevelRenderer
to display that object.With this PR, any
BaseNeuralField
+BaseTracer
subclasses combo that did not register a@field_renderer
would automatically use the default renderer:RayTracedRenderer
.Note that specialized Renderers may still be required for:
Signed-off-by: operel operel@nvidia.com