Code cleanup, simplifications, comments
This commit is contained in:
parent
e64f4cf5e4
commit
583a665990
3 changed files with 18 additions and 30 deletions
|
|
@ -3,10 +3,9 @@
|
||||||
layout (location = 0) in vec3 inColor;
|
layout (location = 0) in vec3 inColor;
|
||||||
|
|
||||||
layout (location = 0) out vec4 outColor;
|
layout (location = 0) out vec4 outColor;
|
||||||
layout (location = 1) out float outDepth;
|
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
outColor = vec4(inColor, 0.0);
|
outColor = vec4(inColor, 0.0);
|
||||||
outDepth = gl_FragDepth;
|
// Depth attachment does not need to be explicitly written
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
|
@ -217,8 +217,8 @@ public:
|
||||||
createAttachment(depthFormat, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, &attachments.depth);
|
createAttachment(depthFormat, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, &attachments.depth);
|
||||||
|
|
||||||
std::array<VkAttachmentDescription, 3> attachments{};
|
std::array<VkAttachmentDescription, 3> attachments{};
|
||||||
// Swap chain image
|
|
||||||
// Part of the render pass so we don't have to manually do the layout transitions
|
// Swap chain image color attachment
|
||||||
attachments[0].format = swapChain.colorFormat;
|
attachments[0].format = swapChain.colorFormat;
|
||||||
attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;
|
attachments[0].samples = VK_SAMPLE_COUNT_1_BIT;
|
||||||
attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||||
|
|
@ -252,36 +252,32 @@ public:
|
||||||
|
|
||||||
/*
|
/*
|
||||||
First subpass
|
First subpass
|
||||||
Fill attachments
|
Fill the color and depth attachments
|
||||||
*/
|
*/
|
||||||
|
VkAttachmentReference colorReference = { 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
|
||||||
VkAttachmentReference colorReferences[2];
|
|
||||||
colorReferences[0] = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
|
|
||||||
colorReferences[1] = { 1, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
|
|
||||||
VkAttachmentReference depthReference = { 2, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
|
VkAttachmentReference depthReference = { 2, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL };
|
||||||
|
|
||||||
subpassDescriptions[0].pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
subpassDescriptions[0].pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
||||||
subpassDescriptions[0].colorAttachmentCount = 2;
|
subpassDescriptions[0].colorAttachmentCount = 1;
|
||||||
subpassDescriptions[0].pColorAttachments = colorReferences;
|
subpassDescriptions[0].pColorAttachments = &colorReference;
|
||||||
subpassDescriptions[0].pDepthStencilAttachment = &depthReference;
|
subpassDescriptions[0].pDepthStencilAttachment = &depthReference;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Second subpass
|
Second subpass
|
||||||
Input attachment read
|
Input attachment read and swap chain color attachment write
|
||||||
*/
|
*/
|
||||||
|
|
||||||
VkAttachmentReference colorReference = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
|
// Color reference (target) for this sub pass is the swap chain color attachment
|
||||||
|
VkAttachmentReference colorReferenceSwapchain = { 0, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL };
|
||||||
VkAttachmentReference inputReferences[3];
|
|
||||||
inputReferences[0] = { 1, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL };
|
|
||||||
inputReferences[1] = { 2, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL };
|
|
||||||
|
|
||||||
uint32_t preserveAttachmentIndex = 1;
|
|
||||||
|
|
||||||
subpassDescriptions[1].pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
subpassDescriptions[1].pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
||||||
subpassDescriptions[1].colorAttachmentCount = 1;
|
subpassDescriptions[1].colorAttachmentCount = 1;
|
||||||
subpassDescriptions[1].pColorAttachments = &colorReference;
|
subpassDescriptions[1].pColorAttachments = &colorReferenceSwapchain;
|
||||||
subpassDescriptions[1].pDepthStencilAttachment = nullptr;
|
|
||||||
|
// Color and depth attachment written to in first sub pass will be used as input attachments to be read in the fragment shader
|
||||||
|
VkAttachmentReference inputReferences[2];
|
||||||
|
inputReferences[0] = { 1, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL };
|
||||||
|
inputReferences[1] = { 2, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL };
|
||||||
|
|
||||||
// Use the attachments filled in the first pass as input attachments
|
// Use the attachments filled in the first pass as input attachments
|
||||||
subpassDescriptions[1].inputAttachmentCount = 2;
|
subpassDescriptions[1].inputAttachmentCount = 2;
|
||||||
|
|
@ -536,14 +532,6 @@ public:
|
||||||
|
|
||||||
pipelineCI.pVertexInputState = &vertexInputStateCI;
|
pipelineCI.pVertexInputState = &vertexInputStateCI;
|
||||||
|
|
||||||
std::array<VkPipelineColorBlendAttachmentState, 2> blendAttachmentStates = {
|
|
||||||
vks::initializers::pipelineColorBlendAttachmentState(0xf, VK_FALSE),
|
|
||||||
vks::initializers::pipelineColorBlendAttachmentState(0xf, VK_FALSE),
|
|
||||||
};
|
|
||||||
|
|
||||||
colorBlendStateCI.attachmentCount = static_cast<uint32_t>(blendAttachmentStates.size());
|
|
||||||
colorBlendStateCI.pAttachments = blendAttachmentStates.data();
|
|
||||||
|
|
||||||
shaderStages[0] = loadShader(getAssetPath() + "shaders/inputattachments/attachmentwrite.vert.spv", VK_SHADER_STAGE_VERTEX_BIT);
|
shaderStages[0] = loadShader(getAssetPath() + "shaders/inputattachments/attachmentwrite.vert.spv", VK_SHADER_STAGE_VERTEX_BIT);
|
||||||
shaderStages[1] = loadShader(getAssetPath() + "shaders/inputattachments/attachmentwrite.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT);
|
shaderStages[1] = loadShader(getAssetPath() + "shaders/inputattachments/attachmentwrite.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT);
|
||||||
|
|
||||||
|
|
@ -623,8 +611,9 @@ public:
|
||||||
{
|
{
|
||||||
createInfo.renderPass = uiRenderPass;
|
createInfo.renderPass = uiRenderPass;
|
||||||
createInfo.framebuffers = frameBuffers;
|
createInfo.framebuffers = frameBuffers;
|
||||||
|
createInfo.targetSubpass = 1;
|
||||||
createInfo.subpassCount = 2;
|
createInfo.subpassCount = 2;
|
||||||
createInfo.attachmentCount = 2;
|
createInfo.attachmentCount = 1;
|
||||||
createInfo.clearValues = {
|
createInfo.clearValues = {
|
||||||
{ { 0.0f, 0.0f, 0.0f, 0.0f } },
|
{ { 0.0f, 0.0f, 0.0f, 0.0f } },
|
||||||
{ { 0.0f, 0.0f, 0.0f, 0.0f } },
|
{ { 0.0f, 0.0f, 0.0f, 0.0f } },
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue