General Info

Extensions are a means to extend maxwell capabilities in several areas: geometry loaders, geometry modifiers, procedural geometry, procedural textures, material UI modifiers and camera lens extensions.

Geometry loaders allow geometry to be loaded at the beginning of the render process. Proxy objects and external referencing can be implemented using these extensions. 

Geometry modifiers allow an object to be modified at the beginning of the render process. For example, a coarse geometry object could be refined just before starting the render.

Procedural geometry extensions enable maxwell to render mathematically defined primitives. It is geometry created at render time. It can also generate its own texture coordinates.

Procedural textures are calculated while rendering, and generate a color at each intersection that evaluates a material texture.

Material UI modifiers organize material parameters in a simplified way, displaying only those that are relevant to the material type in question. For example, the only relevant parameter for a pure diffuse material is only the reflectance 0º color and that's the only parameter displayed.

Camera lens extensions implement different types of lenses.

Extensions are implemented as a set of classes from which you must inherit to create your own extension. These base classes have some pure virtual methods which, when properly implemented, provide the basic functionality and there are other non pure virtual methods which provide optional functionality.