Blender 2.8: Workbench Proposal (Draft)
Open, NormalPublic

Description

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.

Modeling tasks

This section gives an overview of tasks that a modeler can do and the Workbench engine should be designed around.

  • Layout
  • Mesh modeling
  • Sculpting
  • Retopoly
  • UV editing/Texturing

Viewport modes

Bounding Box

Wireframe

Hidden Wire

  • Wireframe over solid?

Silhouette shading

Is useful for sculptors as they can check the silhouette of a model without getting distracted with other render artifacts.

Solid shading

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.

  1. material diffuse color
  2. object diffuse color
  3. 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
  4. 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 Flat

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.

Texture Shaded

Same as texture flat but with shading.

Material 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?

Rendered

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.

Display Options

Background

The background of the scene can be switched between

  1. static color: will render the background in a single color. User can configure this color
  2. world background: will use the world material settings to render a world background.

Floor

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.

Others

Only render, Grid, all objects origin, relationship lines etc

Scene options

Shading options

  1. SSAO
  2. DOF

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.

Lights

  1. Use scene lights
  2. Use preset lights like we currently have the Solid OpenGL Lights in the user preferences.

Shadows

It should be able to turn on/off shadows. Own shadows are also being displayed.

Presets

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:

  1. The Selected Render Mode
  2. The Shading options
  3. The Light presets
  4. 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.

Object Preset

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.

Open Stuff

The next are open stuff should be handled and features should be prioritized.

  1. 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.
  2. 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.
  3. Static MatCaps vs User defined MatCaps.
  4. what subset of Eevee shaders should we include.
  5. Should the user being able to select the shape of the floor? Circular vs Infite plane
  6. 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.

References

Details

Type
Design

Related Objects

Presets

Why to have presets when we can simply have the workspace itself shared? Isn't it up to the workspace to store all the settings relative to a task.

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.

To be clear, in the 2.8 design document we were talking about collection and view layer overrides, not per-object overrides.

Some settings are global like SSAO which cannot be turned off for a specific object. So not sure how that will work.

In this case the view layer can have an override for this, where the original setting needs to be somewhere in the workspace (likely move toolsettings to workspace - original design)

Solid shading

Another interesting option is to give each object a different color automatically.

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.

Do you mean this as a collection property? or as a collection override?

Hi, I want to ask a few questions since a user pov and limitations that I see in actual viewport.

  • Custom matcaps will be really good to see. Matcap shading will replace clay mode?
  • Will there be a custom solution planned for the actual problems with retopology? With xray and hidden wire you obtain hard to read meshes in a lot of situations... Will we see a "special" mode like in this example to make retopology? With the low poly model in a different color/tone, over the surface, allowing to see the high poly details and don't seeing the backfaces/wires and far faces. That works in solid and matcap shading. It's actually the worst part when you try to make a retopology.

  • Will we optionally see the ngons internal triangulation? Actually you need to imaginate the solution seeing the gradients of faces, and like the blender triangulation is a few obscure (it give different results to any solution of the triangulation methods) it hard to know how it solve some ngons.
  • Will we optionally see the wire over solid mode in the scene (without enter in edit mode) instead of a object override
  • I don't understand why workbench needs things like DOF, lights, shadows, a floor with reflections... when you have eevee ¿Or actual eevee where you can edit the meshes is temporal?
  • Texture Shading ¿Will we see the transparency?
  • Will highlight intensity still be an option?

And for the gold medal

  • Could we see specials modes to check things like validate texture PBR or to see only special channels of the EEVEE (only roughness, only base color, only lights) like in game engines? It's really useful when create assets.

Will there be a way to set the side panel to a fixed size? Currently there is no way to prevent the properties panel from stretching out-of-proportion.

Will there be a way to set the side panel to a fixed size? Currently there is no way to prevent the properties panel from stretching out-of-proportion.

There is a patch for it using Grid Flow. Probably it is going to be adressed in the future.

D2395

However this question is outside of the scope of Workbench.

Aaron Carlisle (Blendify) triaged this task as Normal priority.Sep 30 2018, 4:00 AM