#usda 1.0
(
    doc ="""Generated from node description file OgnTutorialCpuGpuBundles.ogn
Contains templates for node types found in that file."""
)

def OmniGraph "TestGraph"
{
    token evaluator:type = "push"
    int2 fileFormatVersion = (1, 3)
    token flatCacheBacking = "Shared"
    token pipelineStage = "pipelineStageSimulation"

    def OmniGraphNode "Template_omni_graph_tutorials_CpuGpuBundles" (
        docs="""This is a tutorial node. It exercises functionality for accessing data in bundles that are on the GPU as well as bundles whose CPU/GPU location is decided at runtime. The compute looks for bundled attributes named 'points' and, if they are found, computes their dot products. If the bundle on the output contains an integer array type named 'dotProducts' then the results are placed there, otherwise a new attribute of that name and type is created on the output bundle to hold the results. This node is identical to OgnTutorialCpuGpuBundlesPy.ogn, except it is implemented in C++."""
    )
    {
        token node:type = "omni.graph.tutorials.CpuGpuBundles"
        int node:typeVersion = 1

        # 3 attributes
        custom rel inputs:cpuBundle (
            docs="""Input bundle whose data always lives on the CPU"""
        )
        custom bool inputs:gpu = false (
            docs="""If true then copy gpuBundle onto the output, otherwise copy cpuBundle"""
        )
        custom rel inputs:gpuBundle (
            docs="""Input bundle whose data always lives on the GPU"""
        )

        # 1 attribute
        def Output "outputs_cpuGpuBundle" (
            docs="""This is the bundle with the merged data. If the 'gpu' attribute is set to true then this
            bundle's contents will be entirely on the GPU, otherwise they will be on the CPU."""
        )
        {
        }
    }
}
