{ "Type": "JsonSerialization", "Version": 1, "ClassName": "PassAsset", "ClassData": { "PassTemplate": { "Name": "MultiGPUCopyTestPipeline", "PassClass": "ParentPass", "Slots": [ { "Name": "PipelineOutput", "SlotType": "InputOutput", "ScopeAttachmentUsage": "RenderTarget" } ], "ImageAttachments": [ { "Name": "TriangleAttachment1", "ImageDescriptor": { "Format": "R8G8B8A8_UNORM", "Size": { "Width": 320, "Height": 480, "Depth": 1 } } }, { "Name": "TriangleAttachment2", "ImageDescriptor": { "Format": "R8G8B8A8_UNORM", "Size": { "Width": 320, "Height": 480, "Depth": 1 } } } ], "PassRequests": [ { "Name": "TrianglePass1", "TemplateName": "MultiGPUTrianglePassTemplate", "Connections": [ { "LocalSlot": "Output", "AttachmentRef": { "Pass": "Parent", "Attachment": "TriangleAttachment1" } } ], "PassData": { "$type": "FullscreenTrianglePassData", "ShaderAsset": { "FilePath": "Shaders/MultiGPURPIExample/Triangle.shader" }, "ShaderDataMappings": { "Matrix4x4Mappings": [ { "Name": "m_objectMatrix", "Value": [ 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0 ] } ] } } }, { "Name": "TrianglePass2", "TemplateName": "MultiGPUTrianglePassTemplate", "Connections": [ { "LocalSlot": "Output", "AttachmentRef": { "Pass": "Parent", "Attachment": "TriangleAttachment2" } } ], "PassData": { "$type": "FullscreenTrianglePassData", "ShaderAsset": { "FilePath": "Shaders/MultiGPURPIExample/Triangle.shader" }, "DeviceIndex": 1, "ShaderDataMappings": { "Matrix4x4Mappings": [ { "Name": "m_objectMatrix", "Value": [ 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -1.0, 0.0, 0.0, 1.0 ] } ] } } }, { "Name": "CopyPass1", "TemplateName": "MultiGPUCopyImageToBufferPassTemplate", "Connections": [ { "LocalSlot": "Input", "AttachmentRef": { "Pass": "TrianglePass2", "Attachment": "Output" } } ], "PassData": { "$type": "CopyPassData", "CloneInput": false, "SourceDeviceIndex": 1, "DestinationDeviceIndex": 0 } }, { "Name": "CopyPass2", "TemplateName": "MultiGPUCopyBufferToBufferPassTemplate", "Connections": [ { "LocalSlot": "Input", "AttachmentRef": { "Pass": "CopyPass1", "Attachment": "Output" } } ], "PassData": { "$type": "CopyPassData", "CloneInput": false, "SourceDeviceIndex": 0, "DestinationDeviceIndex": 1 } }, { "Name": "CopyPass3", "TemplateName": "MultiGPUCopyBufferToImagePassTemplate", "Connections": [ { "LocalSlot": "Input", "AttachmentRef": { "Pass": "CopyPass2", "Attachment": "Output" } } ], "PassData": { "$type": "CopyPassData", "CloneInput": false, "SourceDeviceIndex": 1, "DestinationDeviceIndex": 0, "BufferSourceOffset": 0, "BufferSourceBytesPerRow": 1280, "BufferSourceBytesPerImage": 614400, "ImageSourceSize": { "Width": 320, "Height": 480 } } }, { "Name": "CopyPass4", "TemplateName": "CopyPassTemplate", "Connections": [ { "LocalSlot": "Input", "AttachmentRef": { "Pass": "CopyPass3", "Attachment": "Output" } } ], "PassData": { "$type": "CopyPassData", "CloneInput": true, "SourceDeviceIndex": 0, "DestinationDeviceIndex": 1 } }, { "Name": "CopyPass5", "TemplateName": "CopyPassTemplate", "Connections": [ { "LocalSlot": "Input", "AttachmentRef": { "Pass": "CopyPass4", "Attachment": "Output" } } ], "PassData": { "$type": "CopyPassData", "CloneInput": true, "SourceDeviceIndex": 1, "DestinationDeviceIndex": 0 } }, { "Name": "CompositePass", "TemplateName": "MultiGPUCompositePassTemplate", "Connections": [ { "LocalSlot": "Input1", "AttachmentRef": { "Pass": "TrianglePass1", "Attachment": "Output" } }, { "LocalSlot": "Input2", "AttachmentRef": { "Pass": "CopyPass5", "Attachment": "Output" } } ], "PassData": { "$type": "FullscreenTrianglePassData", "ShaderAsset": { "FilePath": "Shaders/MultiGPURPIExample/Composite.shader" } } }, { "Name": "ImGuiPass", "TemplateName": "ImGuiPassTemplate", "Enabled": true, "Connections": [ { "LocalSlot": "InputOutput", "AttachmentRef": { "Pass": "CompositePass", "Attachment": "Output" } } ], "PassData": { "$type": "ImGuiPassData", "IsDefaultImGui": true } }, { "Name": "CopyToSwapChain", "TemplateName": "FullscreenCopyTemplate", "Connections": [ { "LocalSlot": "Input", "AttachmentRef": { "Pass": "ImGuiPass", "Attachment": "InputOutput" } }, { "LocalSlot": "Output", "AttachmentRef": { "Pass": "Parent", "Attachment": "PipelineOutput" } } ] } ] } } }