We are working on a prototype for render elements in Krakatoa, and I want to run it past you guys. I figure there are 3 render element categories:
[]Shader Elements - These are the various sub-components of the shaders such as Diffuse, Specular, Transmission, etc.[/][]Data Elements - These are passes that display data about particles like Normals, Velocity, etc.[/][]Renderer Elements - These are passes that visualize parts of the rendering process. This is the most vague, but includes things like Raw Lighting (light reaching a particle before the shader is run), Self Shadow (Extinction due to iteraction with particles before light reaches a particle), and possibly many more[/]
Unlike Scanline or VRay I don’t think I will hard code a specific render element object with a unique class id per possible pass. Krakatoa is too flexible to ever make that worthwhile, since we can have arbitrary data, etc. My current plan is to make 3 objects that will appear in the normal Render Elements list, one for each category I listed above. Each of these objects will have appropriate UI elements to select the specific data to render. For example a Shader Element will have a dropdown to choose the shader components exposed by a specific shader. For Phong shading this would be Diffuse and Specular. The Renderer Elements would simply have a list of elements that are supported by Krakatoa. This is more or less a hard-coded list because it requires code to be written in the core of the renderer to support them. The Data Elements are the most interesting since they can support arbitrary data that Krakatoa doesn’t know about at all. Currently you could render these channels by carefully crafting KCMs to assign Color, Emission etc. and the correct lights. The proposed system will expose the Magma interface via. the render element, drawing whatever the output of the KCM is for a given particle. I’m not sure what sort of compositing modes make sense for this particular type. Currently I am rendering the ouput with full alpha, but I’m sure people want the normal Density based approach as well.
Thoughts?