Cycles Enhancement Plan


A note about cost: this document provides time estimates, and not cost estimates or desired funding.  The desired funding is of course "as much as possible".  To get an idea of typical cost, a developer in California with this expertise would often earn in the neighborhood of $100000-120000 USD, with around 20% extra overhead for benefits.  This amounts to $58-$70 per hour.  Multiply that by the hours count for each task, and you have an idea of the cost in a typical location where this type of development is done.


Tasks

These are meant to help Farny get familiar with the Cycles codebase, while still having a measurable impact on user productivity.

Lightprobe Importance Sampling

Purpose: noise reduction for outdoor or faraway-lit scenes.

Cycles currently does no importance sampling of backgrounds.  It when a ray misses all objects, it simply samples the environment in the direction of the miss.  Instead, the background should be treated as a light; that way it can provide info about where the bright spots are, and the multiple-importance-sampling machinery kicks in where it will use both the BRDF (surface shader) importance and the light importance.

This feature goes in two stages: first make the background a Cycles light, and second, create importance information for background lights.  Please note that estimates may seem a bit high due to the fact that this feature is being done to familiarize Farny with the codebase, so there is some overhead there.

Estimates:
  1. Backgrounds as lights: 20 hrs
  2. Pharr/Humphries 1D-2D CDFs as textures, stuffed into the light distribution data: 20 hrs
Status: patch accepted


Full-Float Textures

Purpose: allow full HDR range textures, particularly of use for backgrounds and light gels.

Cycles currently restricts textures to 32-bit samples, 8 bits per RGBA component.  The goal is to allow a select subset of textures to take up a full-float texture slot (there are 100 slots total, so say 5 for float textures) and get HDR benefits where it really counts.

Estimates:
  1. Texture slot management changes: 20 hrs
  2. Float texture reading / sampling: 10 hrs
Status: patch accepted



Anisotropic Shading Model


Purpose: provide a proper implementation of anisotropic shading, with artist-directable blur directions.

Cycles actually sports an implementation of the Ward BRDF as a closure node, but it is disabled due to a lack of consistent tangents across the mesh.  It uses the per-face dPdu, which results in a faceted appearance.  The proposed change is to re-enable that node, and calculate consistent tangents based on UVs as laid out by the artist.


Note that this means any seams that are present in the UV layout will also likely be manifest in the anisotropy.  This is the price we pay for artist directability.


Estimates:
  1. Tangent calculations / plumbing into buffers: 10 hrs
  2. Node enabling: 4 hrs
Status: patch submitted



No comments:

Post a Comment