From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

Proposal

I would like to add several new nodes to the shader nodes, to give the user more options and possibilities. Also, some shading features to give more control over shaders and the rendering. Most items are approved already and are listed on the Cycles ToDo list: http://wiki.blender.org/index.php/Dev:2.6/Source/Render/Cycles/ToDo

Deliverables

New Nodes and improvements

  • Temperature to RGB color node.
    done
     
  • Add Point / Vector space transformation node.
    done
     
  • Add Diffuse / Specular Toon closure as a node (already available as OSL closures).
    done
     

Shading features

  • Add per object multiplier for motion blur shutter time.
    in progress Inprogress50.jpg 50%
     
  • Add Ray Depth to control the number of bounces from a shader.
    done
     

Project Details

Temperature to RGB color node

This node will give users the ability to convert Kelvin temperature to an RGB color. We could as well add a Wavelength color to RBG color converter. These are useful for architecture scenes for example, where it's more intuitive to specify a Kelvin color, rather than a RGB color. Those converters are already available inside OSL, so I'd need to add the node and write the SVM implementation. I will probably re-use code from the OSL project, they have a quite simple implementation with precomputed values for temperatures up to 12k Kelvin. Other algorithms could be looked into.

Point / Vector space transformation node

Another converter node, for people to convert coordinates between world, camera and object space. The matrices are already available in the SVM backend, as well as in the OSL system. So, I want to add a node to have them available.

Diffuse / Specular Toon closure node

Since Blender 2.66, Cycles has two closures for toon shading. Those have only been added as a test though, meaning they are only available in custom OSL scripts. I want to add one node, which contain both closure types (Diffuse and Specular), so people can use it via the UI within SVM and OSL. The closure type will be chosen from a dropdown menu.

Per object multiplier for motion blur shutter time

At the moment, there is only a global value for the motion blur shutter time. It would be useful to have a per object multiplier for that (with default of 1.0), so artists can be creative and apply less or more motion blur to certain objects.

Ray Depth to control the number of bounces from a shader

We have a global (Total Max, Diffuse/Glossy/Transmission max) control for bounces. It would be useful to add a ray depth control for shaders. This way, we can specify if a certain shader should only do 2 bounces for example. This can help with performance and noise a bit. Maybe this option could also be added to lamps, so we can set lamps to only do 0 or 1 bounce, and act only as a fill light for example.

Additional tasks

In case I am done with my tasks early or if I find one of them too difficult, here some items which I consider alternatives or additional things which I can add during my GSocC:

  • Decouple lamp size for hemi/sun lamp and point/spot/area, the units for the former are wrong.
  • Show watts, watts/m^2 units in the UI (add a new RNA subtype for properties)
  • Add a Normal input to the Fresnel node.

Bio

I am 21 years old and currently studying media computer science at university of Esslingen, Southern Germany. I am an active developer of Blender since 2009 and worked on the 2.5x UI project, and since 2011 on Cycles. I added 2 procedural textures (Checker, Brick), worked on the OSL shader backend and did several fixes and improvements.