Esempio n. 1
0
        static BuildGPULightListResources PrepareBuildGPULightListResources(RenderGraphContext context, BuildGPULightListPassData data)
        {
            var buildLightListResources = new BuildGPULightListResources();

            buildLightListResources.depthBuffer    = context.resources.GetTexture(data.depthBuffer);
            buildLightListResources.stencilTexture = context.resources.GetTexture(data.stencilTexture);
            if (data.buildGPULightListParameters.computeMaterialVariants && data.buildGPULightListParameters.enableFeatureVariants)
            {
                buildLightListResources.gBuffer = context.renderGraphPool.GetTempArray <RTHandle>(data.gBufferCount);
                for (int i = 0; i < data.gBufferCount; ++i)
                {
                    buildLightListResources.gBuffer[i] = context.resources.GetTexture(data.gBuffer[i]);
                }
            }

            buildLightListResources.lightVolumeDataBuffer = data.lightVolumeDataBuffer;
            buildLightListResources.convexBoundsBuffer    = data.convexBoundsBuffer;
            buildLightListResources.AABBBoundsBuffer      = data.AABBBoundsBuffer;
            buildLightListResources.globalLightListAtomic = data.globalLightListAtomic;

            buildLightListResources.tileFeatureFlags       = context.resources.GetComputeBuffer(data.output.tileFeatureFlags);
            buildLightListResources.dispatchIndirectBuffer = context.resources.GetComputeBuffer(data.output.dispatchIndirectBuffer);
            buildLightListResources.perVoxelOffset         = context.resources.GetComputeBuffer(data.output.perVoxelOffset);
            buildLightListResources.perTileLogBaseTweak    = context.resources.GetComputeBuffer(data.output.perTileLogBaseTweak);
            buildLightListResources.tileList           = context.resources.GetComputeBuffer(data.output.tileList);
            buildLightListResources.bigTileLightList   = context.resources.GetComputeBuffer(data.output.bigTileLightList);
            buildLightListResources.perVoxelLightLists = context.resources.GetComputeBuffer(data.output.perVoxelLightLists);
            buildLightListResources.lightList          = context.resources.GetComputeBuffer(data.output.lightList);

            return(buildLightListResources);
        }
Esempio n. 2
0
        internal void InvokeGBufferRender(RenderGraphContext context, HDCamera camera, RenderTargetIdentifier[] gBuffer, RTHandle depthBuffer)
        {
            if (OnRenderGBuffer == null)
            {
                return;
            }

            var data = new GBufferRenderData
            {
                context               = context,
                camera                = camera,
                gBuffer               = gBuffer,
                depthBuffer           = depthBuffer,
                customPassColorBuffer = m_CustomPassColorBuffer.Value,
                customPassDepthBuffer = m_CustomPassDepthBuffer.Value
            };

            OnRenderGBuffer.Invoke(data);
        }
Esempio n. 3
0
 public override void Execute(RenderGraphContext renderGraphContext)
 {
     GetExecuteDelegate <PassData>()(data, renderGraphContext);
 }