{
    "Type": "JsonSerialization",
    "Version": 1,
    "ClassName": "PassAsset",
    "ClassData": {
        "PassTemplate": {
            "Name": "DeferredLightingPassTemplate",
            "PassClass": "FullScreenTriangle",
            "Slots": [
                // Inputs...
                {
                    "Name": "BRDFTextureInput",
                    "ShaderInputName": "m_brdfMap",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader"
                },
                {
                    "Name": "FullscreenShadow",
                    "ShaderInputName": "m_fullscreenShadow",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader"
                },
                {
                    "Name": "DirectionalLightShadowmap",
                    "ShaderInputName": "m_directionalLightShadowmap",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ImageViewDesc": {
                        "IsArray": 1
                    }
                },
                {
                    "Name": "ExponentialShadowmapDirectional",
                    "ShaderInputName": "m_directionalLightExponentialShadowmap",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ImageViewDesc": {
                        "IsArray": 1
                    }
                },
                {
                    "Name": "ProjectedShadowmap",
                    "ShaderInputName": "m_projectedShadowmaps",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ImageViewDesc": {
                        "IsArray": 1
                    }
                },
                {
                    "Name": "ExponentialShadowmapProjected",
                    "ShaderInputName": "m_projectedExponentialShadowmap",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ImageViewDesc": {
                        "IsArray": 1
                    }
                },
                {
                    "Name": "TileLightData",
                    "SlotType": "Input",
                    "ShaderInputName": "m_tileLightData",
                    "ScopeAttachmentUsage": "Shader"
                },
                {
                    "Name": "LightListRemapped",
                    "SlotType": "Input",
                    "ShaderInputName": "m_lightListRemapped",
                    "ScopeAttachmentUsage": "Shader"
                },
                {
                    "Name": "BaseColor",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ShaderInputName": "m_baseColor"
                },
                {
                    "Name": "RoughnessMetal",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ShaderInputName": "m_roughnessMetal"
                },
                {
                    "Name": "Normal",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "Shader",
                    "ShaderInputName": "m_normal"
                },
                {
                    "Name": "DepthStencil",
                    "SlotType": "Input",
                    "ScopeAttachmentUsage": "DepthStencil"
                },
                {
                    "Name": "InputDepthStencil",
                    "SlotType": "Input",
                    "ShaderInputName": "m_depthStencilTexture",
                    "ScopeAttachmentUsage": "Shader",
                    "ImageViewDesc": {
                        "AspectFlags": [
                            "Depth"
                        ]
                    }
                },
                // Outputs...
                {
                    "Name": "DiffuseOutput",
                    "SlotType": "Output",
                    "ScopeAttachmentUsage": "RenderTarget",
                    "LoadStoreAction": {
                        "ClearValue": {
                            "Value": [
                                0.0,
                                0.0,
                                0.0,
                                0.0
                            ]
                        },
                        "LoadAction": "Clear"
                    }
                },
                {
                    "Name": "SpecularOutput",
                    "SlotType": "Output",
                    "ScopeAttachmentUsage": "RenderTarget",
                    "LoadStoreAction": {
                        "ClearValue": {
                            "Value": [
                                0.4000000059604645,
                                0.4000000059604645,
                                0.4000000059604645,
                                0.0
                            ]
                        },
                        "LoadAction": "Clear"
                    }
                },
                {
                    "Name": "AlbedoOutput",
                    "SlotType": "Output",
                    "ScopeAttachmentUsage": "RenderTarget",
                    "LoadStoreAction": {
                        "ClearValue": {
                            "Value": [
                                0.0,
                                0.0,
                                0.0,
                                0.0
                            ]
                        },
                        "LoadAction": "Clear"
                    }
                },
                {
                    "Name": "SpecularF0Output",
                    "SlotType": "Output",
                    "ScopeAttachmentUsage": "RenderTarget",
                    "LoadStoreAction": {
                        "ClearValue": {
                            "Value": [
                                0.0,
                                0.0,
                                0.0,
                                0.0
                            ]
                        },
                        "LoadAction": "Clear"
                    }
                }
            ],
            "ImageAttachments": [
                {
                    "Name": "DiffuseImage",
                    "SizeSource": {
                        "Source": {
                            "Pass": "Parent",
                            "Attachment": "PipelineOutput"
                        }
                    },
                    "MultisampleSource": {
                        "Pass": "This",
                        "Attachment": "DepthStencil"
                    },
                    "ImageDescriptor": {
                        "Format": "R16G16B16A16_FLOAT",
                        "SharedQueueMask": "Graphics"
                    }
                },
                {
                    "Name": "SpecularImage",
                    "SizeSource": {
                        "Source": {
                            "Pass": "Parent",
                            "Attachment": "PipelineOutput"
                        }
                    },
                    "MultisampleSource": {
                        "Pass": "This",
                        "Attachment": "DepthStencil"
                    },
                    "ImageDescriptor": {
                        "Format": "R16G16B16A16_FLOAT",
                        "SharedQueueMask": "Graphics"
                    }
                },
                {
                    "Name": "AlbedoImage",
                    "SizeSource": {
                        "Source": {
                            "Pass": "Parent",
                            "Attachment": "PipelineOutput"
                        }
                    },
                    "MultisampleSource": {
                        "Pass": "This",
                        "Attachment": "DepthStencil"
                    },
                    "ImageDescriptor": {
                        "Format": "R8G8B8A8_UNORM",
                        "SharedQueueMask": "Graphics"
                    }
                },
                {
                    "Name": "SpecularF0Image",
                    "SizeSource": {
                        "Source": {
                            "Pass": "Parent",
                            "Attachment": "PipelineOutput"
                        }
                    },
                    "MultisampleSource": {
                        "Pass": "This",
                        "Attachment": "DepthStencil"
                    },
                    "ImageDescriptor": {
                        "Format": "R8G8B8A8_UNORM",
                        "SharedQueueMask": "Graphics"
                    }
                },
                {
                    "Name": "BRDFTexture",
                    "Lifetime": "Imported",
                    "AssetRef": {
                        "FilePath": "Textures/BRDFTexture.attimage"
                    }
                }
            ],
            "Connections": [
                {
                    "LocalSlot": "DiffuseOutput",
                    "AttachmentRef": {
                        "Pass": "This",
                        "Attachment": "DiffuseImage"
                    }
                },
                {
                    "LocalSlot": "SpecularOutput",
                    "AttachmentRef": {
                        "Pass": "This",
                        "Attachment": "SpecularImage"
                    }
                },
                {
                    "LocalSlot": "AlbedoOutput",
                    "AttachmentRef": {
                        "Pass": "This",
                        "Attachment": "AlbedoImage"
                    }
                },
                {
                    "LocalSlot": "SpecularF0Output",
                    "AttachmentRef": {
                        "Pass": "This",
                        "Attachment": "SpecularF0Image"
                    }
                },
                {
                    "LocalSlot": "BRDFTextureInput",
                    "AttachmentRef": {
                        "Pass": "This",
                        "Attachment": "BRDFTexture"
                    }
                },
                {
                    "LocalSlot": "FullscreenShadow",
                    "AttachmentRef": {
                        "Pass": "PipelineGlobal",
                        "Attachment": "FullscreenShadowBuffer"
                    }
                }
            ],
            "PassData": {
                "$type": "FullscreenTrianglePassData",
                "ShaderAsset": {
                    // TODO(DeferredPOC): Make the pass system support source-relative paths
                    "FilePath": "Passes/PrototypeDeferredPipeline/DeferredLighting.shader"
                },
                "PipelineViewTag": "MainCamera"
            }
        }
    }
}
