public override void ClearDepthStencil(float depth, byte stencil) { VkClearValue clearValue = new VkClearValue { depthStencil = new VkClearDepthStencilValue(depth, stencil) }; if (_activeRenderPass != VkRenderPass.Null) { VkClearAttachment clearAttachment = new VkClearAttachment { aspectMask = VkImageAspectFlags.Depth | VkImageAspectFlags.Stencil, clearValue = clearValue }; Texture depthTex = _currentFramebuffer.DepthTarget.Value.Target; VkClearRect clearRect = new VkClearRect { baseArrayLayer = 0, layerCount = 1, rect = new VkRect2D(0, 0, depthTex.Width, depthTex.Height) }; vkCmdClearAttachments(_cb, 1, ref clearAttachment, 1, ref clearRect); } else { // Queue up the clear value for the next RenderPass. _depthClearValue = clearValue; } }
protected override void ClearColorTargetCore(uint index, RgbaFloat clearColor) { VkClearValue clearValue = new VkClearValue { color = new VkClearColorValue(clearColor.R, clearColor.G, clearColor.B, clearColor.A) }; if (_activeRenderPass != VkRenderPass.Null) { VkClearAttachment clearAttachment = new VkClearAttachment { colorAttachment = index, aspectMask = VkImageAspectFlags.Color, clearValue = clearValue }; Texture colorTex = _currentFramebuffer.ColorTargets[(int)index].Target; VkClearRect clearRect = new VkClearRect { baseArrayLayer = 0, layerCount = 1, rect = new VkRect2D(0, 0, colorTex.Width, colorTex.Height) }; vkCmdClearAttachments(_cb, 1, ref clearAttachment, 1, ref clearRect); } else { // Queue up the clear value for the next RenderPass. _clearValues[index] = clearValue; _validColorClearValues[index] = true; } }
public override void ClearDepthTarget(float depth) { VkClearValue clearValue = new VkClearValue { depthStencil = new VkClearDepthStencilValue(depth, 0) }; VkClearAttachment clearAttachment = new VkClearAttachment { aspectMask = VkImageAspectFlags.Depth, clearValue = clearValue }; Texture depthTex = _currentFramebuffer.DepthTexture; VkClearRect clearRect = new VkClearRect { baseArrayLayer = 0, layerCount = 1, rect = new VkRect2D(0, 0, depthTex.Width, depthTex.Height) }; vkCmdClearAttachments(_cb, 1, ref clearAttachment, 1, ref clearRect); }
protected override void ClearDepthStencilCore(float depth, byte stencil) { VkClearValue clearValue = new VkClearValue { depthStencil = new VkClearDepthStencilValue(depth, stencil) }; if (_activeRenderPass != VkRenderPass.Null) { VkImageAspectFlags aspectMask = VkImageAspectFlags.Depth; if (FormatHelpers.IsStencilFormat(_currentFramebuffer.DepthTarget.Value.Target.Format)) { aspectMask |= VkImageAspectFlags.Stencil; } VkClearAttachment clearAttachment = new VkClearAttachment { aspectMask = aspectMask, clearValue = clearValue }; Texture depthTex = _currentFramebuffer.DepthTarget.Value.Target; uint renderableWidth = _currentFramebuffer.RenderableWidth; uint renderableHeight = _currentFramebuffer.RenderableHeight; if (renderableWidth > 0 && renderableHeight > 0) { VkClearRect clearRect = new VkClearRect { baseArrayLayer = 0, layerCount = 1, rect = new VkRect2D(0, 0, renderableWidth, renderableHeight) }; vkCmdClearAttachments(_cb, 1, ref clearAttachment, 1, ref clearRect); } } else { // Queue up the clear value for the next RenderPass. _depthClearValue = clearValue; } }
public override void ClearColorTarget(uint index, RgbaFloat clearColor) { VkClearValue clearValue = new VkClearValue { color = new VkClearColorValue(clearColor.R, clearColor.G, clearColor.B, clearColor.A) }; VkClearAttachment clearAttachment = new VkClearAttachment { colorAttachment = index, aspectMask = VkImageAspectFlags.Color, clearValue = clearValue }; Texture colorTex = _currentFramebuffer.ColorTextures[(int)index]; VkClearRect clearRect = new VkClearRect { baseArrayLayer = 0, layerCount = 1, rect = new VkRect2D(0, 0, colorTex.Width, colorTex.Height) }; vkCmdClearAttachments(_cb, 1, ref clearAttachment, 1, ref clearRect); }
public void CmdClearAttachments( [FromProperty("this")] GenCommandBuffer commandBuffer, int attachmentCount, VkClearAttachment* pAttachments, int rectCount, VkClearRect* pRects) { }
public void CmdClearAttachments(int attachmentCount, VkClearAttachment attachments, int rectCount, VkClearRect rects) { var _commandBuffer = Handle; var _attachmentCount = attachmentCount; var _pAttachments = &attachments; var _rectCount = rectCount; var _pRects = &rects; Direct.CmdClearAttachments(_commandBuffer, _attachmentCount, _pAttachments, _rectCount, _pRects); }