Multi pass shaders

    Aug 29 2013 | 7:35 pm
    I've made an SSAO shader (4 different shader) in Max, BUT for this I need to render 3 different textures from the same geometry, so i made 3 different vertex/fragment shader pairs and connected each to a copy of the object ... (One's output is a normal lighting shader, other outputs a texture with viewspace coorinates rendered into the rgb texture, the 3rd will render the normals into texture output)
    so now, i need 3 copies of the same object in the same position/scale/rotation (same geometry) to be able to work with it, as every object has it's own shader if i know it well from MAX tutorials...
    My question is: is there any way in MAX, to render a mesh with different fragment shaders in the same frame? so i wouldnt need 3 copies of the mesh in max, 3 times more vertex data to GPU transfer, and 3 times running the vertex shader on the same geometry...
    Transmitting 3 times more vertex data and running the same vertex shader 3 times for the same data doesn't seems too efficient method to do it :))))
    thanx in adv, Kevin

    • Aug 31 2013 | 12:55 am
      MRT (multi render targers) are not available yet in Max. So its all tricks. An approach I once took to do shadowing was to use layers and cameras.
      • for each auto bang of render
      • have one or more cameras as you need which capture to texture
      • sequence the layers so that as each camera outputs its texture for the scene, that then causes a param to be sent to your shader. a trigger hooked on the camera's matrix outlet can be great for this
      • the shader changes modes based on this param (the 3 or 4 of them you need)
      • etc
      It took many days of experimenting and using Max debugging to get the sequencing right and not need a lot of duplicate ob3ds. Finally it worked.
    • Sep 01 2013 | 10:36 pm
      Thanx a lot, it makes sense will get on this to see if i can make it work! :)