The rendering of
opaque instances
is handled differently from the rendering of
translucent instances. The
io7m-r1 package
uses a
deferred renderer
to efficiently render large numbers of opaque instances lit by potentially hundreds
of light sources. However, the nature of the deferred rendering
algorithm makes it impossible for deferred renderers to support
translucent objects. Therefore, the
io7m-r1 package
provides a
forward renderer
that implements a subset of the features of the deferred renderer
for rendering translucent instances. Keeping the different categories
of instances as distinct types ensures that the programmer is statically
prevented from accidentally passing an instance with an opaque material
where one with a translucent material was expected, and vice versa.