ctrl_buffers


#221

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

#222

Wow! Thanks for the info Francesca! I think your English is getting a lot clearer too by the way! :slight_smile:

Have you posted the updated ctrl_buffer with ctrl_api for Maya 7 in this thread already? Or is it not finished yet?


#223

it is on the first page.

ciao
francesca


#224

fransesca do you have a website where you post the latest versions of your shaders?

Have you updated ctrl_shading and mix8 for maya 7? Or do they still work?


#225

hi Francesca!

I read ur last long post, and im a bit confused and inexperienced regarding framebuffers, but in one simple word: can I render buffers with your shader in maya 7.0 without standalone mr?

cheers


#226

can I render buffers with your shader in maya 7.0 without standalone mr?

just tried it out and it works:thumbsup:… ofcourse u need the maya 7 version wich is on the first page of this thread.

PS. rygoody, i’ve uploaded most of francesca’s shaders on my site… http://yashu.go.ro… also i updated my ShaderList script for maya 7:thumbsup:


#227

Still no Linux / OSX version? :cry:
(I won’t stop bugging you about this ;))

Again, thanks for the update! Keep it up!


#228

francesca thank you so much for you and your mental ray shaders. This thank you goes to any friends who also helped you along the way.

you see I am a professor of computer graphics and I your shaders has made it so much easier to teach my students how to make more professional looking rendering using maya and mental ray.

I will send you some of their work when I can…you have alot of fans.

if there is anything I can do to repay this favor let me know.


#229

Francesca,

tom cowland (http://www.tomcowland.com/mentalray/) says that he would compile ctrl_buffers for OS X. he got mix8layer and many others compiled for the mac. i don’t know if you want to release the sources, but i just got an email from him saying he would be happy to do the compile.

keep up the innovation.

peace.


#230

I dont know whats going wrong here, I opened the demo scene and I can see the nodes etc. but when I render I only get the normal rgba output?

any pointers?


#231

C:/ …


#232

yes that was obvious from looking at the write node, but nothing appears there?

btw im on maya 7


#233

thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you thank you


#234

ciao
francesca

#235

is it possible to get a shortish step by step guid of what should make it tick?

ie: along the lines of: create node A and B, connect the NNN attribute of A to the MMM attribute of B etc.


#236

ciao francesca, io sono nuovo di questo argomento, potresti consigliarmi qualche risorsa per iniziare?
grazie,
Matteo


#237

ok i figured it out, problem was I wasnt rendering through the camera with the output shader


#238

Hi francescaluce

Is the way via the Mix8Layer with M7 still working? And If :slight_smile:
Can you explain the workflow (if it’s different). I’m sitting here…
and don’t now where I’ have to pipe what…


#239

the workflow is the same as with buffer_store.
just use the mix8layer1.2 to get the same thing.
the layer where you connect your contents will
be stored in the respective buffer, enable
only_fbs from the general section of the shader.
if you need to remap the buffer as with the last
buffer_store, just remove the dropdown list from
the mel template and type in it directly, but if you
just plan to use the first 8 bufs you’ll got no probs.

ciao
francesca


#240

Hey all!

I am trying to make a transparant car window. I am using a transparant material and plug it into the ctrl buffers. The shading network dosn´t calculate the transparancy. Do anyone know how to set this up?