This patch adds support for AOVs in EEVEE. This patch migrates Cycles AOVs to Blender AOVs. For EEVEE it generates the AOV code paths in the GPUMaterial. A generated GPUMaterial can have one output active. Based on the renderpass ubo the right output is selected. A future development would be to output multiple outputs in a single draw command.
- Due to the loosely coupling between a viewlayer, material and 3d viewport it is hard to determine if the user wants a value or color output. This needs a different user interface in the node so it is easier to select what output is desired.
- When doing final rendering upto 8 AOVs are supported. In the Viewport the user can select any AOV.
- In order to do exactly the same as cycles did before we need to add a separate validate/verify function to the engines. Cycles implementation also had some limitations. We need to check which limitation is sufficient or that we want to add a special RenderEngine method for this.
Special note. Treat this patch as nice to have. It could still need some polishing.
- Fix Dynamic creation of render passes in the Render Result.
- Convert Cycles AOVs to Blender internal AOVs.
- Add support for multiple AOVs.
- Add support for value based AOVs.
- Add selector to choose the AOV in the viewport.
- Fix crash when removing all AOV's that are still used in a viewport.
- Make it possible to add an AOV output node when EEVEE is the active render engine.
- Add better check on conflicting AOV names
- Cycles crashes when there are conflicting names. The cause of this is that cycles used to remove the conflicting render pass, but the same method is used by this patch to check if there are conflicts.
- Write documentation and a more detailed description for this patch