Example #1
0
        public unsafe void ClearRenderTargetDepthStencil(int layer, int layerCount, float depthValue, bool depthMask, int stencilValue, int stencilMask)
        {
            // TODO: Use stencilMask (fully)

            if (FramebufferParams == null || !FramebufferParams.HasDepthStencil)
            {
                return;
            }

            if (_renderPass == null)
            {
                CreateRenderPass();
            }

            BeginRenderPass();

            var clearValue = new ClearValue(null, new ClearDepthStencilValue(depthValue, (uint)stencilValue));
            var flags      = depthMask ? ImageAspectFlags.ImageAspectDepthBit : 0;

            if (stencilMask != 0)
            {
                flags |= ImageAspectFlags.ImageAspectStencilBit;
            }

            var attachment = new ClearAttachment(flags, 0, clearValue);
            var clearRect  = FramebufferParams.GetClearRect(ClearScissor, layer, layerCount);

            Gd.Api.CmdClearAttachments(CommandBuffer, 1, &attachment, 1, &clearRect);
        }
Example #2
0
 public unsafe void ClearAttachments(uint attachmentCount, ref ClearAttachment attachments, uint rectCount, ClearRect* rects)
 {
     fixed (ClearAttachment* __attachments__ = &attachments)
     {
         vkCmdClearAttachments(this, attachmentCount, __attachments__, rectCount, rects);
     }
 }
Example #3
0
 public void CmdClearAttachment(ClearAttachment pAttachment, ClearRect?pRect)
 {
     unsafe {
         ClearRect  valpRect = pRect ?? default(ClearRect);
         ClearRect *ptrpRect = pRect != null ? &valpRect : (ClearRect *)IntPtr.Zero;
         Interop.NativeMethods.vkCmdClearAttachments(this.m, (UInt32)(pAttachment != null ? 1 : 0), pAttachment != null ? pAttachment.m : (Interop.ClearAttachment *) default(IntPtr), (UInt32)(pRect != null ? 1 : 0), ptrpRect);
     }
 }
Example #4
0
        public unsafe void ClearRenderTargetColor(int index, int layer, int layerCount, ColorF color)
        {
            if (FramebufferParams == null || !FramebufferParams.IsValidColorAttachment(index))
            {
                return;
            }

            if (_renderPass == null)
            {
                CreateRenderPass();
            }

            BeginRenderPass();

            var clearValue = new ClearValue(new ClearColorValue(color.Red, color.Green, color.Blue, color.Alpha));
            var attachment = new ClearAttachment(ImageAspectFlags.ImageAspectColorBit, (uint)index, clearValue);
            var clearRect  = FramebufferParams.GetClearRect(ClearScissor, layer, layerCount);

            Gd.Api.CmdClearAttachments(CommandBuffer, 1, &attachment, 1, &clearRect);
        }
Example #5
0
        public unsafe void ClearRenderTargetColor(int index, uint componentMask, ColorF color)
        {
            // TODO: Use componentMask

            if (_framebuffer == null)
            {
                return;
            }

            if (_renderPass == null)
            {
                CreateRenderPass();
            }

            BeginRenderPass();

            var clearValue = new ClearValue(new ClearColorValue(color.Red, color.Green, color.Blue, color.Alpha));
            var attachment = new ClearAttachment(ImageAspectFlags.ImageAspectColorBit, (uint)index, clearValue);
            var clearRect  = FramebufferParams?.GetClearRect() ?? default;

            Gd.Api.CmdClearAttachments(CommandBuffer, 1, &attachment, 1, &clearRect);
        }
Example #6
0
 internal static unsafe extern void vkCmdClearAttachments(CommandBuffer commandBuffer, uint attachmentCount, ClearAttachment* attachments, uint rectCount, ClearRect* rects);