December, the time of the year for hot chocolate mugs, bright decoration lights and, of course, development roadmap. In the spirit of the season, the following document is the plan of action for the viewport project in Blender 2.8. Throughout 2017 we are expecting to tackle:
- Final design of engines and passes
- Clay engine
- Implement remaining edit modes as passes
- Workbench engine
- Eevee engine
- Port Cycles materials to the Eevee engine
- Implement missing engines
Final design of engines and passes
Let’s start by defining the terms here used, mainly engines and passes.
A pass is the “black box” code responsible for filling a buffer. For example, the “object mode” pass includes:
- Relationship lines
- Object center
- Outline (selected/active)
- Widgets (?)
- Non-geometry objects (lamps, empties, …)
An engine then compose multiple passes together. How the compositing happens is up to the engine. Finally the engine delivers the final image to the viewport.
For example, a very basic Clay engine can be described as:
The clay engine will take the “Wire Pass”, the “Solid Pass” and the “Object Mode Pass” and combine them together.
At the end of this, the core design will be finalized including a final proposal for a material re-design with corresponding PyNode changes.
Assets courtesy of the Agent 327 – Barbershop scene.
The clay engine will use matcap and allow per-object matcaps (so we can override them per collection). Also it will support depth of field and ambient occlusion.
This engine is a quick way to start drawing objects in the new viewport, as well as to validate the engines compositing design. The Clay engine will initially only support the “Object Mode”. It will be up to the engines to decide which modes will be supported.
Implement remaining edit modes as passes
Bring back all the edit modes (edit mesh, sculpt, …). The edit modes will be brought back ONLY when they are already conforming to the new design (layers, depsgraph api, engines, …).
A complete engine for modeling. A beautiful white canvas with floor shadows for modelers to work on. It should sell the idea that 2.8 viewport is not only PBR, but about the right visualization for the task at hand.
The workbench engine will support:
- Auto-generated colors
- Beautiful diffuse shading
- Sharp specular highlights
The engine will have an option to either auto-generate colors per material or per objects. The objects and materials will have override options. This can be overridden by collections.
To avoid the confusing and too much hyped name “PBR”, we propose to call this engine the EEVEE, or Extra Easy Virtual Environment Engine!
Finally, we will get a nice photo realistic engine. Realtime reflections? Check. Soft shadows? Check. Fast, responsive and eye-candy? Check, check, and check!
Mech Prototype by Clément Foucault – made in Blender, rendered in UE4, long-term goal for Eeevee.
- Uber shaders for PBR materials
- Support for features current in the PBR branch
- Backward compatibility (BI conversion – 80% compliance)
Port Cycles materials to the Eevee engine
- Port Cycles GLSL code to PyNode
- Make new realtime shaders for Cycles bsdfs nodes
Implement missing engines
Evaluate if we still need a better replacement for wire, solid, … draw modes. If we need it, design and implement new engines accordingly, or as extra passes for the existing engines.