pass

 

Tag: pass
Parent tag: pipeline
Attributes:

  • name (string): the pass name
  • class (string): the pass class. Can be one of: default, depthmap, quad, profiler, compute, optix or optixPrime

Different classes take different subsets of child tags. Class “profiler” does not take any child tags as it has a fixed behaviour: displaying profiler stats on top of the previously rendered stuff.

All pass classes child tags:

Class “default” and “depthmap” child tags:

Class “quad” child tags:

Class “compute” child tags:

Class “optix” child tags:

Class “optixPrime” child tags:

Class “default” example (simple):

1
2
3
4
5
6
7
8
9
10
<pass class="default" name="teapotRendering" >
    <viewport name="MainViewport" />
    <scenes>
        <scene name="Teapot" />
    </scenes>
    <camera name="MainCamera" />
    <lights>
        <light name="Sun" />
    </lights>
</pass>

Class “default” example (with material and injection maps maps):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<pass class="default" name="pass1">
    <scenes>
        <scene name="Main" />
        <scene name="Trees" />
        <scene name="Other" />
    </scenes>
    <camera name="MainCamera" />
    <viewport name="MainViewport" />             
    <lights>
        <light name="Sun" />
    </lights>
    <materialMaps>
        <map fromMaterial="Glass"
             toLibrary="PL3D_Materials" toMaterial="Glass" />
        <map fromMaterial="Water"
             toLibrary="PL3D_Materials" toMaterial="Water" />
        <map fromMaterial="skydome"
             toLibrary="PL3D_Materials" toMaterial="Sky" />
    </materialMaps>
    <injectionMaps>
        <map toMaterial="BalconyBars*">
            <state name="BalconyBars" fromLibrary="PL3D_Materials" />
        </map>
    </injectionMaps>
</pass>

Class “quad” examples:

1
2
3
4
5
6
7
8
9
<pass class="quad" name="pass4">
    <viewport name="MiddleViewport" />
    <texture name="offscreenrender" fromLibrary="Optix Ray Tracer Render Target" />
</pass>
<pass class="quad" name="pass5">
    <viewport name="RightViewport" />
    <material name="combine" fromLibrary="Deferred" />
         
</pass>  

Class “compute” example:

1
2
3
<pass class="compute" name="pass1">
    <material name="computeShader" fromLibrary="Compute" dimX=64, dimY=64 dimZ=1 />
</pass>

Class “optix” example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<pass class="optix" name="pass2">
    <scenes>
        <scene name="MainScene" />
    </scenes>
    <camera name="MainCamera" />
    <rendertarget name="test" fromLibrary="Optix Ray Tracer Render Target" />
    <lights>
        <light name="Sun" />
    </lights>
    <materialMaps>
        <map fromMaterial="*" toLibrary="nau_material_lib" toMaterial="__Black" />
    </materialMaps>
    <optixEntryPoint>
        <optixProgram type="RayGen" file="optix/deferredShadows.ptx" proc="buffer_camera"/>
        <optixProgram type="Exception" file="optix/deferredShadows.ptx" proc="exception"/>
    </optixEntryPoint>
    <optixDefaultMaterial>
        <optixProgram type="Any_Hit"      ray="Shadow" file="optix/deferredShadows.ptx" proc="any_hit_shadow"/>
    </optixDefaultMaterial>
    <optixGeometryProgram>
        <optixProgram type="Geometry_Intersection"   file="optix/deferredShadows.ptx" proc="geometryintersection"/>
        <optixProgram type="Bounding_Box"   file="optix/deferredShadows.ptx" proc="boundingbox"/>
    </optixGeometryProgram>
    <optixVertexAttributes>
        <attribute name="position"/>
    </optixVertexAttributes>
    <optixGlobalAttributes>
        <valueof optixVar="lightDir" type="CURRENT" context="LIGHT" id=0 component="DIRECTION" />
    </optixGlobalAttributes>
    <optixInput>
        <buffer var="pos_buffer" texture="Deferred Render Targets::pos" />
    </optixInput>
</pass>

Class “optixPrime” example:

1
2
3
4
5
<pass name="Optix Prime" class="optixPrime">
    <scene name="bench" />
    <rays buffer="PrimeShadows::rays" queryType = "ANY"/>
    <hits buffer ="PrimeShadows::hits" />
</pass>