URCHN Arkipelago Speed up Lighting

Speed up Lighting

From URCHN Arkipelago

Introduction

If you are lighting a shot in Cycles , things can seem unbearably slow, calculating the current frame can seem interminable, getting in the way of interactively placing lights. Lets try to speed this up through 3 main techniques:

Organization

In order to stay sane, jump back and forth between interactivity and speed, it is important to keep some organizational principles in mind. This is also really important if your shot will ever be touched by another person (hint: it will!) they will thank you for doing this. So will you if you have to work in the shot for a while.

Naming

Name Lights

Keep a good naming convention for everything you add, for lights:

  1. start all light names with the word light_ or lamp_ (be consistent) this will keep them together in the outliner. (Make sure you do the same for mesh lights)
  2. If the light is specific to an element/renderlayer put that after the light name, for intance light_gilga_ or light_background_ etc.
  3. finally, the function of the light e.g. light_gilga_fill_1 or so.
Name Layers and groups
  1. Of course renderlayers have names, you should make these meaningful i.e. not 'Renderlayer.001' but 'Character' or 'Background' or 'Train' or 'Paper Rim' etc.
  2. Scene Layers can be and should be named using the layernames addon (see tools)
  3. If you create groups you should probably name these usefully as well!

Parenting

It can be useful to parent similar things to an empty with a good name, for instance all the lights_gilga_ you made earlier could be parented to one empty named lights_gilga. This makes them like 'folders' in the outliner, and allows shift-G select children for easy selection in the 3D view.

Groups

Alternately, you could group similar lights e.g. lights_gilga as a group. If you go to groups view in the outliner you can then see them in a folder like structure, and you can select them in the 3D View via shift-G -> Group

Scene Layers

Basically any Object you have is on a scene layer, the following conventions keep you sane:

  1. Use layernames to name your scene layers in a way that makes sense (also give them types) for instance 'gilgamesh' as the name of a layer, 'Character' as the type.
  2. Only place objects into layers that match the layer name (don't put the train in the gilgamesh layer, etc.)
  3. Don't mix lights and Objects if possible: Place lights for one layer's items into a different (named ) layer. for instance objects in 'gilgamesh' should have lights in 'gilgamesh lights'.

Render Layers

Splitting similarly lit items into renderlayers can speed up your workflow in the following ways:

  1. Interactively light only one element of your scene at a time.
  2. exclude lighting and shading between renderlayers (there are no light groups in cycles yet)
  3. Prepare for compositing/think about it in advance

Lighting Workflow

Ok here is a preliminary step by step workflow for speeding up.

Speed settings

See settings below for some hints at speeding up rendering

Create Preliminary renderlayers

Start by making some renderlayers and placing your objects in them. They should be fairly course grained at this point (i.e. character/background/miground) or so and not very specific. Make sure you name them and your scene layers nicely.

Override materials

Create a simple material (we should make this a library item) Something like 30% grey diffuse with a little bit of glossy using fresnel mixing. override the renderlayer material with this one.

Placing Lights

Now start adding lights. Follow naming conventions above, and place them into their own scene layers (and add those to the appropriate renderlayers. You are focusing here on the placement, focus and spread of the lights , softness of the shadows etc. Intensity you can tweak later, but here you can arrive at basic lighting direction.

Materials On

Once we get into relative brightness, color, precise tweaking of lights we need to have materials/shaders and eventually textures. We have no current good way to break this down, but I propose here a tool (which should tie into our shader and texture nodes): This tool will/provides a selector:

  1. No Images: replace image inputs with single colors/values. requires shader tree support
  2. Low Resolution: switches to the lowest resolution
  3. Medium Resolution: similar
  4. High Resolution: these are the default textures.

Other future ideas:

  1. We can also re-examine and optimize our current image resolutions.
  2. We can make a tool to do similar job but for rendering (on the farm) not just lighting.

Settings

Render Properties

Render Settings

Beyond the typical resolution settings, cycles has specific things that affect accuracy/speed and helps limit fireflies (stray bright pixels) and nose.

  1. Clamp: Very dangerous! Clamp limits the brightness an individual pixel can recieve to a given value (0.00 means clamp is off) This can help with fireflies that are typically overbright, and from over-lit diffuse surfaces from scattering too much light into the scene. However too agressive settings can result in a weirdly clamped 'burned out grey' unattractive render. Probably try to find a setting that either leaves the final look unaffected (but cuts down fireflies) or barely affects it.
  2. Bounces: how many times a ray bounces around: in practice, after one or two bounces, contribution is greatly minimized (especially in tube shots) we don't typically need more than 2 here. This number overrides the bounce settings for diffuse/glossy/transmission, so if you want more glossy bounces, turn down Diffuse and Transmission, and turn up Glossy.
  3. Transparency levels: Min and max levels of alpha (not raytraced but 'Z' transparency) allowed. Lower is better, unless you start to get opaque surfaces. mainly affects gilga's hair, or scenes with lots of alpha transparency.
  4. No Caustics: Turn this *on*: Caustics are nice, but brute path tracing them is brutally slow, and just results in fireflies in most sampling ranges. If we do want caustics, we will fake them.
  5. Filter Glossy: blurs noisy glossy samples, can make your glossies too muddy and diffuse looking.
  6. In Performance we have Cache BVH: stores the BVH between renders and skips rebuilding it. Nice for live preview and safe ( we disable this on the farm anyway)
  7. Also in performance: Persistent Images (this allows images to be kept in memory, speeding up pre-caclulation also)

NOTE: save buffers is handy if you have a comp: it will keep the rendered buffers in the tmp folder: if you crash while rendering, hit shift R in the compositor to reload them.

Branched Path Tracing

Can speed up some scenes with complex node trees, also allows fine tuning sampling between different shader types and also for each light. Much more fiddly and note: values are multiplied, so if you have 4 AA and 10 Diffuse you get 40 Diffuse samples, etc.

Render Layers

Render Layers Settings

Render layers are not strictly optimization tools, but they have several features which aid in optimizing scenes for fast lighting.

  1. Exclude: Along with the Layer settings, helps not 'double rendering' expensive items and helps with the 'teapot in a stadium problem'- where rendering one small thing in a large scene loads the entire scene with it. Basically you can exclude the background from affecting the foreground and vice-versa, to avoid double calculating expensive things... like gilga's skin shaders, and to avoid bouncing extra light rays in the scene, especially if those will have minimal affect on the result.
  2. Material (override): Override object materials with a 'default' shader, try to keep this shader fairly simple, but also dark (reflect or albedo only about .3 to .4 of the incoming light). This is a good setting to start with when placing lights, before tweaking.
  3. Samples: You can override samples per layer, thus allowing more samples to layers that need it, less to layers that will be blurred, etc.
  4. Use Environment/Surfaces/Hair: If you don't need environment light or hair in a renderlayer, it will go faster if you turn it off.

Scene Properties

The only helpful setting here is Simplify, which allows dropping subdivision level and child particle percentage for the entire scene including linked data. A real lifesaver for everyone including lighters! Once again, our render scripts turn this off, so it is render-farm safe.

Tools

  1. layernames
  2. reference desk
  3. image_resolution