This proposal is related to the workbench for blender 2.8. The Workbench is a render engine designed for modeling. It could be a beautiful white canvas with floor shadows for modelers to work. It does not aim at realism, but at the right visualization for a certain task, and especially to work perfect with the overlay engines.
Please note that this proposal is still an early draft to start collecting, discussion and validating the needed features and workings of the workbench.
The result of this proposal will give insight to developers what parts are interconnecting, what work needs to be done. it would also give a glance of how the technical parts will be done.
This section gives an overview of tasks that a modeler can do and the Workbench engine should be designed around.
- Mesh modeling
- UV editing/Texturing
- option to see actual triangulation?
- Wireframe over solid?
Is useful for sculptors as they can check the silhouette of a model without getting distracted with other render artifacts.
Will replace the current Gouraud shading with something more modern, so that highlights are more visible.
The color that is used during shading uses a hierarchy.
- material diffuse color
- object diffuse color
- collection diffuse color: as an object can be in more than one collection it should identify will pick the color from the first collection where the diffuse color is being set. Is an Collection override property
- global scene diffuse color
The diffuse colors in collections, objects and materials can be turned on/off. By doing that the color of the next level
will be used. The global scene diffuse color cannot be turned off.
There will also be an option to auto-generate the diffuse colors of an object cq material. This should be doable by an operator like:
"Generate Diffuse Color For Selected Objects/Materials".
Mat Cap shading
MatCap materials are textures with rendered Lighting inside the texture. By using camera normals the texture is wrapped around the model.
An old shading trick that is really fast and useful when sculpting.
Currently MatCap materials are a compiled within Blender source-code. Is it important for users to load in their own MatCap Texture.
Texture shading will render a texture of the material around. It is useful for UV unwrapping, Texture painting where you want to see the exact color of the texel.
Same as texture flat but with shading.
Use a subset of Eevee shaders? The workbench should be optimized for speed (num polygons) so we only select the shaders that are quick to give a good overview of the scene.
What shaders will that be?
It is unclear if this is needed for workflow reasons. If it is needed we need to rethink of the render engine per workspace idea. We would like to minimize the number of clicks and having users switching between workspaces is IMO against the principle of having task oriented workspaces.
Option: Workbench is a render engine that will not be selectable as render engine (like cycles and eevee), but will be used when the viewmode is set to something different than 'Rendered'. This is more to what users know and will position the workbench engine as a supporting engine for the others. But it might limits the workbench to be used as a F-12 render engine.
The background of the scene can be switched between
- static color: will render the background in a single color. User can configure this color
- world background: will use the world material settings to render a world background.
The floor is a surface that is drawn beneath the model. User can set the depth where the surface will be drawn.
Its base color, the reflectiveness and the roughness of the reflection.
When your viewpoint is beneath the floor, the floor will not be rendered.
The reflection will be calculated by using a transform vertex shader.
The results are stored in an intermediate buffer that can be mipmapped. This way the roughness of the mirror
can be calculated by fetching the pixel from a mipmap level. This level can be calculated from the distance of the model
to the reflective surface.
By doing this you get a cheap reflective surface that will give height perception back to the modeler.
Only render, Grid, all objects origin, relationship lines etc
Other display effects that Eevee has like Bloom, SSS, Volumetrics etc will not be added to the workbench. I don't see the value of them for the a modelers workbench.
- Use scene lights
- Use preset lights like we currently have the Solid OpenGL Lights in the user preferences.
It should be able to turn on/off shadows. Own shadows are also being displayed.
The render presets can be customized. Here the artist save the current settings into a preset. There presets will
be stored as python files. The presets can be applied to a single 3d view.
The next options will be included in the presets:
- The Selected Render Mode
- The Shading options
- The Light presets
- The display options
When applying a preset the settings will be updated in the 3d view. Users are still being able to modify the settings in the
3d viewport. This way the user can tweak and save the presets. or change the setting to match the specific task they are doing.
For example. When selecting a preset the depth of the platform will be set. Users can still modify it to the dimension of the model.
Blender should be bundled with the some presets. The icon displayed next to the name of the preset is the icon from the viewport mode.
In the Blender 2.8 design document it is stated to remove the 'Maximum Draw Type' and replace it with 'View Mode Override', which mirrors
the exact same options available in the 3d View View Model menu.
Some settings are global like SSAO which cannot be turned off for a specific object. So not sure how that will work.
I can imagine that it is only about the 'Viewport mode'.
So the Render presets concept goes against the Blender 2.8 UI document v2 page 39-40. This needs to be discussed between UI designers, Blender users.
The next are open stuff should be handled and features should be prioritized.
- The hierarchy for Diffuse Colors can also be applied to the Wireframe color. Is this something we want to support from the start? Wireframe colors during editing have a meaning. This meaning will have less value for the user as it won't be clear to see when implementing Wireframe colors. I would suggest to not support due to the Clarity principle.
- The hierarchy for Diffuse Colors can also be used in other engines as highlight colors for example when selecting the model. Not sure if we should support this from the beginning.
- Static MatCaps vs User defined MatCaps.
- what subset of Eevee shaders should we include.
- Should the user being able to select the shape of the floor? Circular vs Infite plane
- Discussion about the object presets.
Note: there is discussion about the need of workbench presets vs workspace. Also workspace specific render engine is confusing for users. There should be a discussion between different stakeholders to identify the need and ideal combination.