From BlenderWiki

Jump to: navigation, search

Blender Extended Expressive Rendering (BEER) Proposal

Disclaimer: Everything is work in progress. Updates will be frequent.

This is a proposal to upgrade the current limited Expressive Rendering of Blender Internal Renderer. BEER also looks into solving workflow problem and hasten stylize shader production.


Note: All shader must have realtime visual feedback via GLSL.

General Workflow Improvements

Stackable "UberShader" | Dynamic Stylize Shading Primitive | BA thread test implementation via OSL

  • A faster workflow for passes ID needed [Open for suggestions and mock-ups]
"My biggest issue with the current ramp shader- I can't split each cell shade to a different pass. From there on I bet there is a way to make it fuzzy in the compositor."
"like to see a pass index output node for the node editor. So we can output any stage of our node material as a pass."
Reference UI
  • A unified screen space texture that blends with every material.

Cel Toon

This toon shader mimics hard edge toon, often seen in anime and old cel animation

Workflow Video Reference: Psoft Pencil+ for 3ds MAX

Note: All comments in this section are raw and unfiltered. For better arrangement of the items please read BEER Toon Shaders Intro

Normals control

Toon shader is very sensitive. Surface normals play a big role here. Unlike photorealistic rendering (PR) which has a ton of information, toon shader use flat tone silhouettes to represent shape and shade. When the silhouette is off, it is very easy to detect. Hence artists are demanding for

  • The ability to separately control the normal angles for the highlights/spec & the mids/diffuse (and better yet a set of dark tones too)
  • The normal angle/mapping calculations for each tonal range (high/mid/low)
  • The ability keyframing a normal angle, or a normal mapping value in a shader's node-tree.
  • Include an option in each node normal input/control to easily link (drive) that input/control with the angle of an empty or light in the scene. [normals tracking object] (parallel and point)
  • The ability to normalize normals, to smooth out normals from being over accurate

In short, each tone must have its own normal control (can be chained together). Normal offset can be keyed and be controllable by an object such as an empty or a lamp.

Gradation control

Gradation means (in painting, drawing, or sculpture) transition from one colour, tone, or surface to another through a series of very slight changes. In the case of cel toon shading artists demand

  • Ability to control the level at which each bleeds into/over the other's range
  • The ability to make the borders between cell shades fuzzy by using a displacement map [gradations]
  • Control on gradation of colors. Something like a modifier for gradation offset. Must have some level of abstraction
  • Gradation of blending between cell shades with a grayscale image.
  • Gradation to produce fur/feather/hair shading
  • Animate-able gradation for simple water/liquid surface shader

In short, gradation needs to be offset-able, fades, blends with texture maps as modifier.

Light, Color & Shadow

  • One object to cast a shadow over another or over itself (characters)- but that shadow doesn't necessarily need to have a falloff
  • Could take the color of the light source into consideration
  • A 2-tone scene with a light and want to add another one, it doesn't go multi-tone
  • Most importantly I wish we could specify the colour of each cell just by giving it a colour we want. That way it's possible to use more artistic complimentary colours easily.
  • Simplifying shadows by normalizing surface quality
  • "Shadows being too perfect" problem could be partially solved by a key-able "temporary bake" option. ie: when a character moves his head vertically, the highlights, shadows etc don't always change. So, the primary position's values could be temporarily baked in and then removed later in the animation when needed.
  • Highlight shaping. Highlight (specular reflection) it is abstract in cel/toon animation. No surface quality decides where it goes. So an abstract solution must be available

Highlight shaping related papers:

Tomo discusses toon shader in general and why toon shader in BI and Cycles are wrong.

Here Vicente Carro describes the controls that need to be exposed in the UI. [Vicente Carro apologizes for his poor English]

TL;DR: Our goal is to achieve everything cel shaded in this trailer.

Implementation Agenda

Type of shading:

1. Lighting dependent
2. Light and View independent (custom normal)
Note: Numeric entry and 3D View keyboard control over the normal sphere. Copy-paste normal value.
Workflow examples:
  • Put the cursor over normal sphere and press R, X, 45, enter.
  • Press drop down near normal sphere, enter number, enter.
  • Mouse roll over sphere, ctrl + C, copy normal and Ctrl + V, paste normal values
3. Light independent and view dependent (view/cam normal)

Intuitive controls and setup:

1. Not going into node to edit
2. Vertex paint friendly
Note: Need something more precise, big face will lead to blurry vertex paint [no solution yet]
3. One element (layer) editing per time
4. On mesh shader editing
5. Multiple color ramp per shader
6. Adjusting tones border, vector like editing
Note: Cel-toon case, moving terminator, not fading it
7. Key-able shader
8. Blending mode between layers, alpha and alpha over

Soft Toon

This mimics soft toon shading commonly seen in old Disney animations and games like Team Fortess 2

Implementation paper by Valve:

Principals of soft toon (based on paper):

  • Shading obeys a warm-to-cool hue shift. Shadows go to cool, not black.
  • Saturation increases at the terminator with respect to a given light source. The terminator is often reddened.
  • High frequency detail is omitted where possible
  • On characters, interior details such as clothing folds are chosen to echo silhouette shapes
  • Silhouettes are emphasized with rim highlights rather than dark outlines

Soft Toon consist of the following components:

View-independent functions (Diffuse)

  • Half-Lambert (see demo file below)
  • Light Warping
  • Basic Ambient Component
  • Albedo (Texture)

View-dependant functions (Specular)

  • Specularity
  • Dedicated Rim
  • Directional Bias

Additional Notes:

X-Toon (2D color map / 2D Ramp)

Reference Paper and Video:

In Pascal Barla (the researcher) own words:

"The main question to answer with this technique is: What should I put on the vertical axis of the X-Toon texture?"
  • Fake motion blur of shader (speed change Y axis of 2D map)
  • Fake fast Depth-of-Field (relative distance change LOD of shader, then more effect done in post)
  • Fake fast SSS
  • Product Rendering shading (rendered CG)
  • Motion Graphics Shading (game)
  • For realistic: 2D color map can be sampled from photos for real colors.
  • Fake Photo-Real application:
    • Fast, less noise AO in a “cave” or hallway situation (no lighting involved)
    • Fast, fake fog effect for distant objects (VFX/matte overlay)
  • Shader version of Edge Nodes/FreeStyle (limited control)

Related research paper:

2D Map Creation

Vector 2D map maker (Diffusion Curves):

Vector, 2D map maker:
Program: [Windows]

Related Papers for vector 2D map maker:

For raster 2D map creation inside Blender, the hardest part to do now is doing smooth blending, gradient tool is needed.

Additional Notes:

Optional Features (For your consideration)


  • Cross hatching (in light and in shadow area)

Hatching related papers:

Stippling related papers:


  • Option to choose between Screen Space Hatching and Model Surface Hatching
  • Implementation options: Material Node or Standard Material modifiers


Related research papers:

First, the pigments are mixed with water but do not dissolve totally. The result is that, after drying, even on a totally smooth paper, the pigment density is not constant
Second, the Fluid nature of watercolor creates two effects along the borders of colored regions: edge darkening due to pigment migration and a wobbling effect due to paper grain. In the case of a “dry brush” the paper grain also creates some white holes in the brush strokes when a nearly-dry brush only touches raised areas of the paper
Finally, watercolor is usually created by a human, using a brush, often of a large size, and therefore represents a scene in a more abstracted way than a photograph. We believe that abstracting the shape, colors or illumination of the original scene is crucial to keeping the aesthetics of watercolor. Although this is true of most painting and drawing styles, the technical constraints of watercolor typically result in less precise details than other techniques.

Implementation options: Material Node or Standard Material modifiers

The Next Level

Ton said: LightBWK, so - you're on the hunt for coder to work on the toon render. It's quite nice, not too complex code job actually. So nice for newbies as well.

So what are we waiting for, let's code some shaders and "break" Blender Internal Renderer for good.

Any interested coder, can contact me directly via FB PM or G+. I'll direct you to the stake holders and formulate an execution plan.

Stake Holders

Stake holders are people or projects with something to lose if BEER isn't executed and done well. It will cause them to suffer financially. Production will be harder without BEER, causing prolong man hour involvement, the increase in production cost, risk of unable to finish production or even start the production.

Major stake holders:

Other stake holders (based on FB's Like, G+'s +1 and other interaction with me):

A~J list

Aditia A. Pratama, Alexandre Prokoudine, Alvin Nashif Dandan Magarang, Boonsak Watanavisit, David Malcolm Smith, D Ü, Edward Kinnally, Jerry Perkins, Joseph Masaki...

K~S list

Lendel Fajardo, Masoud Teymouri, Metin Seven, Michael g, Muhammad Amir Hamzah, Nik Lockwood, Pierre Potvliege, Petr Utas Utinek, Raymundus Dedy Kariadi, Razvan Bolohan, Rylan Wright, ...

T~Z list

Taiwo Folu, Tamakoshi Masaki, Taufiq Marhaban, Terry Hancock, Todor Imreorov, Victor De La Cruz, Zauber Paracelsus...

And over 400 hundred other artist in Blender NPR and Freestyle Collaboration Facebook group.

Programmers (BEER Brewer)

Put your name here, BEER artists will love you forever!

Execution Schedule (Brew Plan)

May 25th 2013 to June 15th 2013

  • Listing of stake holders
  • Improvement of proposal (Hit BA thread guys)
  • New stake holders read the proposal and approve the proposal

Update: Proposal deadline has been extended to 30th June 2013 [too much stuff to work on, in too short amount of time]

June 2013

  • Planning

Sometime in July/August/September 2013

  • Coding starts (change of plan, coding did not start)

October 2013 and onward

  • Looking for funding to hire part time developer
  • Anyone interested please contact me via FB or G+ (use contact links above)

BEER brew report


  • 29th September 2013


  • There is little to no activity this month. Our current plan is to get funding to hire a developer to initiate development. We have not set how that is done, but we have identified the developer that will do the coding.


  • 10th October 2013


  • We are reaching to NPR/ER professionals in the industry (anime studios) to fine tune the proposal to inclusively solve their production problem in the area where BEER is targeting. The discussion is on going. We will report more when we have more stuff analyzed.


  • 4th December 2013

Report: Japanese survey result summary (Big THANKS to Satoshi Yamasaki for helping us with this survey)

How do you normally setup your shader/material?

  • Prefer to use Properties Editor(Material and Texture contexts) because it's quick and easy to use for simple materials. Node Editor only used for complex things.

What are the difficulties that you personally face when making shader/material in Blender?

  • Most of annoyances are about separated UI (Properties Editor).
    • When below situation, the settings are not easy to use because that UIs are less accessible.
      • lamp "A" only used for the specular of an object,
      • lamp "B" only used for the shadow of another object,
      • lamp "C" for the diffuse of all objects.
    • Material and Texture settings are separated, it's not friendly for doing trial and error.
    • There is no relationships between Properties Editor and Node Editor, further more they can't be mixed.
    • To show the texture of Object in 3DView, you need to set it with UV Editor.

What are the known limitation of Blender Internal renderer?

  • Note: Maybe latter can be solved with Cubic Interpolation option in Material properties...
    • There is no option to assign materials to each Renderlayers individually (There is already the Material option in the RenderLayer Properties, but it makes all of materials same one).
    • When using Area Lamp with Ray Shadow, there are artifacts of polygons in the shade.

Where in the shader/material system in Blender that can be improved? If you have any reference of the improvement, please attach or link.

  • Overview of materials with preview in a scene. Outliner can be used for this purpose with "Blender file mode", but it just show the material icon, not the preview.

Ton Roosendaal suggested more developers from Eastern countries(East Asia, South East Asia) in order to keep BI/BEER in top condition. Do you know anyone with such capability or interest?

  • Note: No answer for this, but we have Shinsuke Irie maintaining BI currently

Original link to survey:


  • 17th February 2014

Report: BEER and NPR in the next few months

  • We now have a dedicated NPR mailing list [LINK]
  • BlenderNPR will hire a part time developer to do design work for BEER. More info later.
  • Viewport FX I & II SoC will be part of BEER. Ton has specifically requested for Jason Wilkins to join the effort.


  • 24th July 2014

Report: BNPR Store, Freestyle Level Up, Mini Courses, Development Fund

  • Blender NPR store successfully launched [LINK]
  • BEER Development Fund started, Status can be viewed at [LINK]
  • A possibility of presenting BEER in Blender Conference 2014


  • 29th Nov 2014

Report: Blender Conference, OpenGL renderer, Discourse

  • We presented at Blender Conference 2014, great feedback at the after show
  • There will be an OpenGL renderer inside Blender [Video]. More next week.
  • We have a development forum for BEER at [BEER development Forum]