is this ctrl buffers tool similar with the new render pass composite tool in maya 7?
well I have not tried yet the render passes system in maya.
it should not be confused with framebuffering. framebuffers
are a mentalray thing. render passes are a maya thing. where
with the first we actively build-up a net in the hypershade
with the second we passively adjust an existing scene to
output different things based on an overwrite mechanism.
if someone, the artists, generally prefer a maya way to act
on their scene becuase the feedback is immediate acting over
a centralized place (the render passes management system),
the others, the tds and scene or shading lighting setuppers will
prefer frambuffering probaly because the way it is implemented
it is costitutive to the scene and allow them to build-up the scene
as they want giving or leaving them with the freedom to leave
the various aspect of the scene interacting with each other.
basically with a framebuffer setup all you need is in the hypershade,
with a render passes system what you need is scattered all over
the scene generally as object and their properties.
if I have just two sphere one reflecting each other and I wanna
two separate images to be composed later, with render passes
I will include a sphere in a pass and I wll modify the object properties
of the other sphere to be seen in reflections while not as primary
visibility; with framebuffer I willi build-up each sphere shading net
in a manner where each one will tell mentalray directly what to do.
in a production environment framebuffering must be preferred over
any other method probably and for the simple reason that it requires
only once time the scene to be rendered, while render passes need
actually n times the scene to be re-rendered. that said I always
start my scene based on passes to prototype the environment,
to test different illuminations and shading sets, to get instant occ
passes or to get on the fly a toon ink contour, but when I have
things clear in mind I build-up another final pass that include
framebuffers and I use that one to get all the images I need;
infact framebuffers can be used also in any pass. we could
have n passes outputting multiple images, in a situation
where for example we have to deal with high detailed poly
objects we could separate them in passes to get rendered in
separate sessions just because all of them don't fit in memory
and then on each object/pass use framebuffers to output
multiple images for the different properties the object will show.
**
back to framebuffers taking a first look at maya7.0.. it extends a
bit the framebuffer workflow but introduces also some inconsistencies.
take in mind that with mentalray there're two ways to output
additional images. one is build-in and one related to output shaders.
the one (partially)included in maya is the build-in mechanism
to write out images from framebuffers in mentalray.
you need to add an fb entry in the options list and then refer
to that entry in the output camera to get wrote out the imgs.
to do this in maya we enable the user framebuffers into the
rendersettings and then go to the camera into the new output
passes section.
bad things.
-----------
1.the userframebuffer in the rendersettings is OFF. it means
that it does not work. you can select what you want but
it does nothing, nor for the mi export. but it is there, so take care.
2.to get a place to list the fbs entries you have to type this code
in the script panel: 'select miDefaultOptions'. then go to framebuffer
and there you'll find the section that effectively works. take care
that if you type the above code before open the rendersettings window,
it returns errors becuase the node is still not created. so open the
rendersettings then type the code.
once you're in the framebuffer section you can add a list of framebuffer.
too bad you cannot map or renumb the framebuffers enabled, the first in
the list is always the framebuffer0 (to say nothing that is reserved).
3.once you enabled your fbs. you decide simply to render them out
into separate imgs. ok infact alias introduced in maya7.0 a way to use
the camera statements to write out imgs as allowed by mentalray..
but that damn genius forgot to supply also a method to specify what
I will put into that images! so actually on maya7 all the time you
click the button under output passes.. you'll get always the same image,
the rgba image you see also in the renderview, repeated n times. you can
maybe output a normal, coverage and so on images but anything about
user framebuffers.
4.once you say, - no problem I have my own way!.. you'll find that also
your way is a bit compromised. in maya7 any output shader plugged
into the output slot will prevent the renderview to display the rendered
image, you'll get it saved on disk but not displayed in the renderview.
to get it also in the render view you'll have to switch to an output pass,
as called in maya, and attach there your output shader. to add other
standard mr buffers, as the check boxes for them are now dimmed in the
main mr output section not using the direct output shader slot, you have to
add another output statement (output pass) and select the pertinent
kind of data in the datatype. so if you wanna use our buffer_write plus
also ie the build-in coverage buffer the workflow will appear as this..
[[img]http://img292.imageshack.us/img292/7736/m7fbs3hp.th.gif[/img]](http://img292.imageshack.us/my.php?image=m7fbs3hp.gif)
5. when linking geometry shaders to dummy poly object in maya7.0
it is introduced the wonderful feature where clicking on the button
to open the createRenderNode window and linking on the fly a geo
shader it is returned an error, -drag and drop the geoshader from the
hypershade to the button or hardtype its name once you created it
in the hypershade instead.
all the above means two things.
the first, is that the alias implementation of build-in mr mechanism
to write out buffers, sadly, cannot be used for user framebuffers.
it is meant mainly to be used as an output shader list probably,
the only imgs you can get out are the same there were before,
normal tag etc.
second, to use ctrl_buffers or any other output shader that write
out images you'll get to modify a bit the previous workflow. pratically
the only thing to bear in mind is to attach the buffer_write to an
output pass and not to the 'direct' output shader slot as before.
good things.
------------
1.mentalimages fixed the inconsistency where the framebuffers were
initialized before scene preprocessing not allowing geometry shaders
to implement fbs entries in the miOptions structure.
this means that the previous buffer_api returns in all its glory.
so if you wanna forget all the above just put a buffer_api in the scene,
enable a range; plug a buffer_write to an output pass, enable the same
range to be also wrote out and there you go. unlimited buffers.
2.we rewrote part of the ctrl_buffers to allow a better workflow under
this situation, all in the pack is now in a range fashion: you enable
a range of userframebuffers instead of enabling one by one, also the
buffer_store can reorder the buffers arbitrary so if you need the 999
and 1000th buffers, enable the range 999-1000, and in the buffer_store
enable two buffer slots and type the respective channel 999, 1000.
3.we worked out the buffer_api to extend (on maya) virtual framebuffering.
while in virtual mode, that means the fbs are memory-mapped to disk,
one can also supply a specific directory where 'park' its fbs
during rendering, they will be removed automatically after writed out
as images; if anything in the string, then mr will look for env vars
if anything found will rely on the temp folder from the environment.
if not enabled the fbs will be stored in memory, good when we have
a small number of nimble framebuffers.
4.added tonemapping function to be used with framebuffers and primary rgba.
5.fixed padding bug.
6.it is fixed, by mentalimages, also the situation where using coverage
buffer and more than 5 fbs mentalray was crashing miserably, now it works
as it should.. greatly ! :)
ciao
francesca


