##########################
External Custom Primitives
##########################


HOOPS Luminate's software rendering architecture lets you add other types of primitives to the intersection process used during the rendering. These are custom external primitives. These primitives may be of any type that can be managed by the application: analytical shapes, nurbs, subdivision surfaces, voxel grids, etc...


******************************************
Setting up Custom Ray Processing Callbacks
******************************************

Custom intersection callbacks are defined at the viewpoint render list level using ``RED::IViewpointRenderList::SetViewpointSoftRayProcessingCallbacks``. There are two callbacks to specify:

    * The ``RED::SOFT_RAY_PROCESSING_INTERSECTION_CALLBACK`` in charge of the intersection with the custom geometry.
    * The ``RED::SOFT_RAY_PROCESSING_SHADING_CALLBACK`` in charge of returning material and shading informations needed by HOOPS Luminate for the hit custom primitive.

