{ "Type": "JsonSerialization", "Version": 1, "ClassName": "PassAsset", "ClassData": { "PassTemplate": { "Name": "HairPPLLResolvePassTemplate", "PassClass": "HairPPLLResolvePass", "Slots": [ //------ General Input/Output resources and Render Target ------ { "Name": "RenderTargetInputOutput", "SlotType": "InputOutput", "ScopeAttachmentUsage": "RenderTarget", "LoadStoreAction": { "LoadAction": "Load", "StoreAction": "Store" } }, { // Will be used to get the background color for the hair blending "Name": "RenderTargetCopy", "SlotType": "Input", "ScopeAttachmentUsage": "Shader", "ShaderInputName": "m_frameBuffer" }, { // Used to get the transform from screen space to world space. "Name": "DepthLinear", "SlotType": "Input", "ShaderInputName": "m_linearDepth", "ScopeAttachmentUsage": "Shader" }, { // The depth buffer will be used to write the closest hair fragment depth "Name": "Depth", "SlotType": "InputOutput", "ScopeAttachmentUsage": "DepthStencil", "LoadStoreAction": { "LoadAction": "Load", "StoreAction": "Store" } }, //------------- Shadowing Resources ------------- { "Name": "DirectionalShadowmap", "ShaderInputName": "m_directionalLightShadowmap", "SlotType": "Input", "ScopeAttachmentUsage": "Shader", "ImageViewDesc": { "IsArray": 1 } }, { "Name": "DirectionalESM", "ShaderInputName": "m_directionalLightExponentialShadowmap", "SlotType": "Input", "ScopeAttachmentUsage": "Shader", "ImageViewDesc": { "IsArray": 1 } }, { "Name": "ProjectedShadowmap", "ShaderInputName": "m_projectedShadowmaps", "SlotType": "Input", "ScopeAttachmentUsage": "Shader", "ImageViewDesc": { "IsArray": 1 } }, { "Name": "ProjectedESM", "ShaderInputName": "m_projectedExponentialShadowmap", "SlotType": "Input", "ScopeAttachmentUsage": "Shader", "ImageViewDesc": { "IsArray": 1 } }, //------------- Lighting Resources ------------- { "Name": "BRDFTextureInput", "ShaderInputName": "m_brdfMap", "SlotType": "Input", "ScopeAttachmentUsage": "Shader" }, { "Name": "TileLightData", "SlotType": "Input", "ShaderInputName": "m_tileLightData", "ScopeAttachmentUsage": "Shader" }, { "Name": "LightListRemapped", "SlotType": "Input", "ShaderInputName": "m_lightListRemapped", "ScopeAttachmentUsage": "Shader" }, //---------- PPLL Resources ----------- { "Name": "PerPixelListHead", "ShaderInputName": "m_fragmentListHead", "SlotType": "Input", // Read only - the reset is done before the fill pass "ScopeAttachmentUsage": "Shader", "LoadStoreAction": { "LoadAction": "Load", "StoreAction": "DontCare" } }, { "Name": "PerPixelLinkedList", "ShaderInputName": "m_linkedListNodes", "SlotType": "Input", "ScopeAttachmentUsage": "Shader", "LoadStoreAction": { "LoadAction": "Load", "StoreAction": "DontCare" } } ], "ImageAttachments": [ { "Name": "BRDFTexture", "Lifetime": "Imported", "AssetRef": { "FilePath": "Textures/BRDFTexture.attimage" } } ], "Connections": [ { "LocalSlot": "BRDFTextureInput", "AttachmentRef": { "Pass": "This", "Attachment": "BRDFTexture" } } ], "PassData": { "$type": "FullscreenTrianglePassData", "PipelineViewTag": "MainCamera", "ShaderAsset": { // Looking for it in the Shaders directory relative to the Assets directory "FilePath": "Shaders/HairRenderingResolvePPLL.shader" } } } } }