예제 #1
0
        // Here you can implement the rendering logic.
        // Use <c>ScriptableRenderContext</c> to issue drawing commands or execute command buffers
        // https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.html
        // You don't have to call ScriptableRenderContext.submit, the render pipeline will call it at specific points in the pipeline.
        public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
        {
            CommandBuffer cmd = CommandBufferPool.Get(m_ProfilerTag);

            using (new ProfilingSample(cmd, m_ProfilerTag))
            {
                //context.ExecuteCommandBuffer(cmd);
                //cmd.Clear();
                var cam = renderingData.cameraData;
                var w   = cam.camera.pixelWidth / _host.Downscale;
                var h   = cam.camera.pixelHeight / _host.Downscale;
                var rtd = renderingData.cameraData.cameraTargetDescriptor;
                rtd.depthBufferBits = 0;
                //rtd.graphicsFormat = UnityEngine.Experimental.Rendering.GraphicsFormat.
                //cmd.GetTemporaryRT(123, rtd);

                var sortFlags    = renderingData.cameraData.defaultOpaqueSortFlags;
                var drawSettings = CreateDrawingSettings(m_ShaderTagId, ref renderingData, sortFlags);
                drawSettings.perObjectData = PerObjectData.None;

                ref CameraData cameraData = ref renderingData.cameraData;
                Camera         camera     = cameraData.camera;
                if (cameraData.isStereoEnabled)
                {
                    context.StartMultiEye(camera);
                }

                var mat = CoreUtils.CreateEngineMaterial("SDF");
                drawSettings.overrideMaterialPassIndex = mat.FindPass("CamSeed");
                drawSettings.overrideMaterial          = mat;

                context.DrawRenderers(renderingData.cullResults, ref drawSettings,
                                      ref m_FilteringSettings);

                cmd.BakeSDF(TargetRT, SdfRT, w, h);
                cmd.SetGlobalTexture("_MainTex", SdfRT);
                //SDF.BakeCommandBuffer()

                //cmd.SetGlobalTexture("_CameraDepthNormalsTexture", depthAttachmentHandle.id);
            }