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 void VkClearValueTypeLoad() { // float values as ints const uint oneF = 0x3f800000u; const uint twoF = 0x40000000u; const uint threeF = 0x40400000u; const uint fourF = 0x40800000u; // structural composition var ca = new VkClearAttachment { aspectMask = VkImageAspectFlags.VK_IMAGE_ASPECT_COLOR_BIT, clearValue = new VkClearValue { color = new VkClearColorValue() }, colorAttachment = 0 }; ref var color = ref ca.clearValue.color;
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) { }