Dev:Source/Render/ShadingWorkflow

提供: wiki
移動先: 案内検索

Shading Workflow

Design proposal for the shader editing workflow, there is a separate document that goes more detailed into texture editing.

--Brecht 12:06, 13 June 2011 (CEST)

Nodes

Materials, world and lamps will be node based. The reason for this is that it's more flexible, but also helps avoid the clutter of the existing material and texture panels.

Rather than having a workflow where you toggle features on/off, the idea is to have a workflow more oriented on constructing a material from nodes. This does make it harder to discover certain features, so we should try to guide the user to the relevant nodes.

Nodes can be edited both in the node editor and the properties editor. In the properties editor, the graph is represented as a tree starting at the output node. Each output has a separate panel.

Questions

  • The properties editor gets unclear pretty quickly with deep node setups, where it's no longer clear which inputs belong to which node. Can we make this clearer? Also as nesting gets deeper there isn't much space left. A nice mockup about how to draw this would be good.
  • Groups are displayed collapsed in the properties editor. Is it reasonable to never show their contents and leave editing them to the node editor?

Presets and Groups

The built in shader nodes are basic, but can be mixed together to make more advanced materials. The idea is to then put these into node groups that can be reused, and show a simpler high level view of the material in the properties editor, with the various inputs ready for texturing.

Blender could come bundled with a number of useful node groups, and they can be linked across .blend files. We should try to present such groups well in the UI and make it easy to use them.

Questions

  • How can we improve groups and preset usability? Mockups, ideas, ..

Wireframe, Halo, Strand, Volume

Material types currently also define the shape of the mesh. We propose to move such settings to mesh/particles level, where a mesh can be selected to draw as wireframe or points, and particles get the strand shape settings currently part of the material.

Volume rendering on the other hand will also not be available a separate material type, but rather all materials will have both surface and volume components. It should be possible to use only the surface, only the volume, or both combined.

Shaders

Cycles shaders work based on the concept of shaders, where the shader is a combination of one or more shaders. Examples of shaders are BSDFs, BSSRDFs, emissives, volumes and backgrounds. Shaders specify how the material interacts with light, how it is reflected, refracted, emitted, scattered, etc. By mixing or adding basic shaders more advanced materials can be created.

As a result, the shader outputs are shaders rather than colors. Shaders are important to Cycles, but other render engines typically work in other ways. Such render engines could define their own output nodes without shaders.

Questions
  • Can we find a better name for BSDF? It's a cryptic name. Do we just show such names in the UI, do we try to find alternatives, or do we try not to show them? Just leave name as is.
  • Currently it's possible to use shaders where they have no effect, e.g. a BSDF can be linked in the world nodes, but will have no effect. Should we try to filter these? How does this work with groups then? Don't do this, just document well.