Extensions are a means to extend maxwell capabilities in several areas: geometry loaders, geometry modifiers, procedural geometry, scene procedural textures, material UI modifiers and procedural texturescamera 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, depending on some scene setup.
Procedural geometry extensions enable maxwell to render mathematically defined primitives. It is geometry created on-the-fly.
Scene modifiers are able to change elements in the scene just before the render starts.
Procedural textures generate texture colors on-the-fly while renderingat 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.