{
    "Type": "JsonSerialization",
    "Version": 1,
    "ClassName": "PassAsset",
    "ClassData": {
        "PassTemplate": {
            "Name": "SsaoPipeline",
            "PassClass": "ParentPass",
            "Slots": [
                {
                    "Name": "PipelineOutput",
                    "SlotType": "InputOutput"
                }
            ],
            "PassData": {
                "$type": "PassData",
                "PipelineGlobalConnections": [
                    {
                        "GlobalName": "PipelineOutput",
                        "Slot": "PipelineOutput"
                    }
                ]
            },
            "PassRequests": [
                {
                    "Name": "MorphTargetPass",
                    "TemplateName": "MorphTargetPassTemplate"
                },
                {
                    "Name": "SkinningPass",
                    "TemplateName": "SkinningPassTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "SkinnedMeshOutputStream",
                            "AttachmentRef": {
                                "Pass": "MorphTargetPass",
                                "Attachment": "MorphTargetDeltaOutput"
                            }
                        }
                    ]
                },
                {
                    "Name": "RayTracingAccelerationStructurePass",
                    "TemplateName": "RayTracingAccelerationStructurePassTemplate"
                },
                {
                    "Name": "DepthPrePass",
                    "TemplateName": "DepthParentTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "SkinnedMeshes",
                            "AttachmentRef": {
                                "Pass": "SkinningPass",
                                "Attachment": "SkinnedMeshOutputStream"
                            }
                        },
                        {
                            "LocalSlot": "PipelineOutput",
                            "AttachmentRef": {
                                "Pass": "PipelineGlobal",
                                "Attachment": "PipelineOutput"
                            }
                        }
                    ]
                },
                {
                    "Name": "LightCullingPass",
                    "TemplateName": "LightCullingParentTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "SkinnedMeshes",
                            "AttachmentRef": {
                                "Pass": "SkinningPass",
                                "Attachment": "SkinnedMeshOutputStream"
                            }
                        },
                        {
                            "LocalSlot": "DepthMSAA",
                            "AttachmentRef": {
                                "Pass": "DepthPrePass",
                                "Attachment": "DepthMSAA"
                            }
                        },
                        {
                            "LocalSlot": "PipelineOutput",
                            "AttachmentRef": {
                                "Pass": "Parent",
                                "Attachment": "PipelineOutput"
                            }
                        }
                    ]
                },
                {
                    "Name": "Shadows",
                    "TemplateName": "ShadowParentTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "SkinnedMeshes",
                            "AttachmentRef": {
                                "Pass": "SkinningPass",
                                "Attachment": "SkinnedMeshOutputStream"
                            }
                        },
                        {
                            "LocalSlot": "PipelineOutput",
                            "AttachmentRef": {
                                "Pass": "PipelineGlobal",
                                "Attachment": "PipelineOutput"
                            }
                        },
                        {
                            "LocalSlot": "Depth",
                            "AttachmentRef": {
                                "Pass": "DepthPrePass",
                                "Attachment": "DepthMSAA"
                            }
                        }
                    ]
                },
                {
                    "Name": "Forward",
                    "TemplateName": "ForwardPassTemplate",
                    "Connections": [
                        // Inputs...
                        {
                            "LocalSlot": "DirectionalLightShadowmap",
                            "AttachmentRef": {
                                "Pass": "Shadows",
                                "Attachment": "DirectionalShadowmap"
                            }
                        },
                        {
                            "LocalSlot": "ExponentialShadowmapDirectional",
                            "AttachmentRef": {
                                "Pass": "Shadows",
                                "Attachment": "DirectionalESM"
                            }
                        },
                        {
                            "LocalSlot": "ProjectedShadowmap",
                            "AttachmentRef": {
                                "Pass": "Shadows",
                                "Attachment": "ProjectedShadowmap"
                            }
                        },
                        {
                            "LocalSlot": "ExponentialShadowmapProjected",
                            "AttachmentRef": {
                                "Pass": "Shadows",
                                "Attachment": "ProjectedESM"
                            }
                        },
                        {
                            "LocalSlot": "TileLightData",
                            "AttachmentRef": {
                                "Pass": "LightCullingPass",
                                "Attachment": "TileLightData"
                            }
                        },
                        {
                            "LocalSlot": "LightListRemapped",
                            "AttachmentRef": {
                                "Pass": "LightCullingPass",
                                "Attachment": "LightListRemapped"
                            }
                        },
                        // Input/Outputs...
                        {
                            "LocalSlot": "DepthStencilInputOutput",
                            "AttachmentRef": {
                                "Pass": "DepthPrePass",
                                "Attachment": "DepthMSAA"
                            }
                        }
                    ],
                    "PassData": {
                        "$type": "RasterPassData",
                        "DrawListTag": "forward",
                        "PipelineViewTag": "MainCamera",
                        "PassSrgShaderAsset": {
                            "FilePath": "Shaders/ForwardPassSrg.shader"
                        }
                    }
                },
                {
                    "Name": "RayTracingAmbientOcclusionPass",
                    "TemplateName": "RayTracingAmbientOcclusionPassTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "InputDepth",
                            "AttachmentRef": {
                                "Pass": "Forward",
                                "Attachment": "DepthStencilInputOutput"
                            }
                        },
                        {
                            "LocalSlot": "WorldNormal",
                            "AttachmentRef": {
                                "Pass": "Forward",
                                "Attachment": "NormalOutput"
                            }
                        }
                    ]
                },
                {
                    "Name": "DebugWhiteTexture",
                    "TemplateName": "FullscreenOutputOnlyTemplate",
                    "ImageAttachments": [
                        {
                            "Name": "OutputAttachment",
                            "SizeSource": {
                                "Source": {
                                    "Pass": "Parent",
                                    "Attachment": "PipelineOutput"
                                }
                            },
                            "FormatSource": {
                                "Pass": "Parent",
                                "Attachment": "PipelineOutput"
                            }
                        }
                    ],
                    "Connections": [
                        {
                            "LocalSlot": "Output",
                            "AttachmentRef": {
                                "Pass": "This",
                                "Attachment": "OutputAttachment"
                            }
                        }
                    ],
                    "PassData": {
                        "$type": "FullscreenTrianglePassData",
                        "ShaderDataMappings": {
                            "ColorMappings": [
                                {
                                    "Name": "m_color",
                                    "Value": [ 1.0, 1.0, 1.0, 1.0 ]
                                }
                            ]
                        },
                        "ShaderAsset": {
                            "FilePath": "Shaders/PostProcessing/UniformColor.shader"
                        }
                    }
                },
                {
                    "Name": "Ssao",
                    "TemplateName": "SsaoParentTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "Modulate",
                            "AttachmentRef": {
                                "Pass": "DebugWhiteTexture",
                                "Attachment": "Output"
                            }
                        }
                    ]
                },
                {
                    "Name": "SelectorPass",
                    "TemplateName": "SelectorPassTemplate",
                    "Enabled": true,
                    "Connections": [
                        {
                            "LocalSlot": "Input1",
                            "AttachmentRef": {
                                "Pass": "RayTracingAmbientOcclusionPass",
                                "Attachment": "OutputAO"
                            }
                        },
                        {
                            "LocalSlot": "Input2",
                            "AttachmentRef": {
                                "Pass": "Ssao",
                                "Attachment": "Output"
                            }
                        }
                    ]
                },
                {
                    "Name": "DisplayMapperPass",
                    "TemplateName": "DisplayMapperTemplate",
                    "Enabled": true,
                    "Connections": [
                        {
                            "LocalSlot": "Input",
                            "AttachmentRef": {
                                "Pass": "SelectorPass",
                                "Attachment": "Output"
                            }
                        },
                        {
                            "LocalSlot": "PipelineOutput",
                            "AttachmentRef": {
                                "Pass": "Parent",
                                "Attachment": "PipelineOutput"
                            }
                        }
                    ],
                    "PassData": {
                        "$type": "DisplayMapperPassData",
                        "DisplayMapperConfig": {
                            "Name": "MainPipeline",
                            "OperationType": "GammaSRGB",
                            "LdrGradingLutEnabled": "False"
                        }
                    }
                },
                {
                    "Name": "ImGuiPass",
                    "TemplateName": "ImGuiPassTemplate",
                    "Enabled": true,
                    "Connections": [
                        {
                            "LocalSlot": "InputOutput",
                            "AttachmentRef": {
                                "Pass": "DisplayMapperPass",
                                "Attachment": "Output"
                            }
                        }
                    ],
                    "PassData": {
                        "$type": "ImGuiPassData",
                        "IsDefaultImGui": true
                    }
                },
                {
                    "Name": "2DPass",
                    "TemplateName": "UIPassTemplate",
                    "Enabled": true,
                    "Connections": [
                        {
                            "LocalSlot": "InputOutput",
                            "AttachmentRef": {
                                "Pass": "ImGuiPass",
                                "Attachment": "InputOutput"
                            }
                        },
                        {
                            "LocalSlot": "DepthInputOutput",
                            "AttachmentRef": {
                                "Pass": "DepthPrePass",
                                "Attachment": "Depth"
                            }
                        }
                    ],
                    "PassData": {
                        "$type": "RasterPassData",
                        "DrawListTag": "2dpass",
                        "PipelineViewTag": "MainCamera"
                    }
                },
                {
                    "Name": "CopyToSwapChain",
                    "TemplateName": "FullscreenCopyTemplate",
                    "Connections": [
                        {
                            "LocalSlot": "Input",
                            "AttachmentRef": {
                                "Pass": "2DPass",
                                "Attachment": "InputOutput"
                            }
                        },
                        {
                            "LocalSlot": "Output",
                            "AttachmentRef": {
                                "Pass": "Parent",
                                "Attachment": "PipelineOutput"
                            }
                        }
                    ]
                }
            ]
        }
    }
}
