New feature: Basic support for physically based rendering (PBR)

If you click on it then the interpolation mode will be set to the mode that is specified in the preset. Currently, all 3 presets uses Gouraud interpolation, but unfortunately, there is a display bug: after clicking the preset, the interpolation checkbox still shows “PBR”.

When I added this feature I missed adding a file, so for one day the Sandbox extension was not built.
It would be awesome if someone would help with adding these features to the Slicer core. The Lights module cannot be added to the Slicer core as is, because settings are not preserved in the scene. We would need to decide where to store these settings (store lights in the view node, in a “lightkit” node, or add a separate node for each light), and implement standard GUI (make these view parameters available near existing view parameters), linking of properties (when view link is enabled and you change a view parameter in one view, apply it to all other views), etc. I also feel that without the ability to assign texture to each model, PBR rendering is still too limited and experimental.

PBR is somewhat supported for segmentation nodes: metallic and roughness value can only be specified for the entire segmentation (not for each segment) and we haven’t added GUI for this yet. It would not be hard to resolve these limitations, but for now you need to export to models to edit these properties.

Image-based lighting can be used for volume rendering, too, but I don’t think it is implemented in VTK (at least not in the default OpenGL2 rendering backend). @Chris_Rorden showed some nice examples here, which proves that it is possible (I think MatCaps is the same or very similar to what VTK calls image-based lighting).