From BlenderWiki

Jump to: navigation, search

Data Design

Here is a proposal for how to separate data, and integrate the layer concept with scene data. In 2.8 we will split the scene in layers, and each layer will have a mode and an engine to use for drawing. Each viewport can show a different layer.

Data Separation

DNA data (that what gets saved and what we work on), Scene data (based on animation or scripts), and Render Data (engines) should have an explicit separation. In 2.8 we will split viewport rendering into many smaller 'engines'.

Dev-Blender 2.8 Data Flow.png

Scene and Layer

Each layer will have its own active object and selected objects. We drop the scene base, and guarantee there is always a layer in the scene (as we do for Render Layer now). A scene also has an active layer, which is the one used to determine the "global" mode for the other editors.

The collections are defined in the scene level, and are children of the master collection. Render layers have something like "collection slots", where they can contain multiple scene collections, and their sub-collections. Visibility and overrides are controlled by the layer, so both trees (scene collections and layer collections) are kept in sync.

Dev-Blender 2.8 Scene Layer data 2.png

Render or Draw Pipeline

  1. Active Layer
  2. Collections define visibility, overrides, light!
  3. Update layer list (or make copy)
  4. Send to depsgraph (or use cached)
  5. Send scene data to engine
  6. Draw or render

1 render layer = 1 image (multi-view, passes)

(Proposal by Sergey Sharybin, Ton Roosendaal, Dalai Felinto, revised from Original Data Design)