BlenderMalt

BlenderMalt is a Malt Host for Blender. It handles all the Scene data loading and syncronization and exposes a minimal UI suitable for a code-centric workflow.

RenderEngine

MaltRenderEngine.py implements the Blender RenderEngine interface.

Each MaltRenderEngine instance has its own Malt Pipeline instance. It takes care of generating a Malt Scene from the Blender DepsGraph with their respective Meshes,Shaders and Pipeline Properties, send it to the Malt Pipeline for rendering and pass the result back to Blender.

Pipeline Properties

MaltPipeline.py makes sure all Blender objects have their respective Pipeline Parameters registered as MaltPropertyGroups.

MaltPropertyGroups store Malt Pipeline Parameters as native Blender PropertyGroups and convert them to Malt Scene parameters on request. They also can handle their own UI rendering automatically, all that is needed is to pass a Blender UI Layout to their draw_ui method.

Materials

MaltMaterials handles the compilation (including automatic hot-reloading), UI rendering and storage as native Blender materials of Malt Pipeline materials.

Meshes

MaltMeshes.py loads any Blender geometry to OpenGL with the same vertex layout used by Malt. This module is highly optimized to allow real-time mesh editing and (when possible) retrieves vertex data directly from Blender internal C data through the CBlenderMalt library.

Textures

Textures are uploaded to OpenGL directly by Blender, with the only exception being 1D textures (Gradients/Color Ramps), that are generated and loaded directly by BlenderMalt in MaltProperties.py.