[Bf-funboard] RFC-Multipass Rendering
Douglas Bischoff
bf-funboard@blender.org
Mon, 8 Dec 2003 11:11:08 -0500
Hello, all!
I'm starting this thread in the "funboard" side because I am pretty
sure that coding this will be well beyond my skills, but knowing that a
few features recently added to Blender seem to suggest that more of
this kind of stuff is possible I thought I'd post out a few thoughts
and see if anyone bites!
The idea is "Multipass Rendering."
A recent discussion on elYsiun.com on the subject revealed that there
is a very defined method of handling multipass rendering in Blender,
but it is very work intensive. The steps (very abbreviated and taken
from Little_Cube's mini-tutorial on elYsiun at
http://www.elysiun.com/forum/viewtopic.php?
t=18247&postdays=0&postorder=asc&start=30)
1) Main "Beauty" Pass - "Normal" Lighting: No Emit, No Ambient: Save
environment maps for reflection pass
2) Diffuse Pass - "No Specular" for all Lights: Disable CMIR texture
maps: No Shadows
3) Specular Pass - "No Diffuse" for all lights: Disable CMIR texture
maps: No Shadows
4) Reflection Pass - Envmap to "CMIR": "No Specular No Diffuse" for all
lights: No Shadows
5) Shadow Pass - Pure white background World: "Only Shadow" for all
materials: Unified Renderer
Setting each of these parameters up manually for every light & every
material, then undoing it after each pass, is horribly time consuming
and error-prone.
There are already buttons on the render control panel for "Shadows" and
"EnvMap" and "Radiosity..." My proposal is this:
1) Add a button next to or below the "Unified" renderer button called
"Multipass"
2) If Multipass is selected, the following take place:
a) Rendering to file is required
b) "Extension" button is turned on
c) "Do Sequence" is disabled (once the multipass rendering is
complete, sequence effects can be done USING the various passes.)
3) A subpanel is created which contains the 5 pass types as toggle
buttons. User selects which passes they are interested in. At the
bottom of the subpanel is a separate button called "Create Sequence"
4) Pressing "Render" or "Anim" causes the scene/each frame to be
rendered in the "passes" specified in step 3. The files are saved with
a single letter "B,D,S,R,K" (K from the print world meaning "black" for
shadows, open to suggestions here... is there a standard out there?),
frame number, then the extension.
5) If "Create Sequence" was selected, then the various passes are
combined in the sequence editor in the following fashion:
shadow MULTIPLY (diffuse ADD specular ADD refraction)
Special passes created by the user, such as Ambient Occlusion (AO),
Fresnel, and Depth (z-buffer) passes can then be inserted by the user
as desired, and of course all the various passes' files are in the
saved directory for use in other programs if desired.
Now, all this may sound extremely cumbersome to code, but since you can
disable all Shadows with a single button click, and a single button for
all EnvMaps... I am hoping that a knowledgeable coder could insert
similar "hooks" or "flags" into the code which would handle the
conditions the 5 above "pass" types require. (i.e. temporarily force
all lamps to "no specular" and disable CMIR texture maps, etc.)
As a side note, if the above is possible, then being able to define a
temporary "override" material which would be used in place of all
active materials when an option in the "Multipass" rendering subpane is
checked would enable quick use of special techniques like Fresnel
passes, AO passes, mask passes, etc.
Comments welcome,
-Bischofftep