Started work on build system
This commit is contained in:
@@ -107,7 +107,9 @@ void IMeshRenderer::Init()
|
||||
bindings[1].stageFlags = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||
bindings[1].descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||
bindings[1].descriptorCount = 1024;
|
||||
g_meshPipeline.Create(shaders, bindings, 76);
|
||||
CUtlVector<VkFormat> formats(1);
|
||||
formats[0] = g_meshColor.m_format;
|
||||
g_meshPipeline.Create(shaders, bindings, 76, formats);
|
||||
shaders[1].Destroy();
|
||||
shaders[0].Destroy();
|
||||
|
||||
@@ -157,6 +159,31 @@ void IMeshRenderer::Init()
|
||||
vkCreateSampler(g_vkDevice, &samplerInfo, nullptr, &g_meshSampler);
|
||||
}
|
||||
|
||||
void IMeshRenderer_PrepassNoMSAA()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
void IMeshRenderer_Prepass()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
void IMeshRenderer_EdgeDetection()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
void IMeshRenderer_Light()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
void IMeshRenderer_Combine()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
void IMeshRenderer::Frame( float fDelta )
|
||||
{
|
||||
CUtlVector<VkWriteDescriptorSet> writes(2);
|
||||
@@ -183,7 +210,7 @@ void IMeshRenderer::Frame( float fDelta )
|
||||
{
|
||||
CTexture *texture = (CTexture*)t;
|
||||
VkDescriptorImageInfo image = {};
|
||||
image.imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
|
||||
image.imageLayout = VK_IMAGE_LAYOUT_GENERAL;
|
||||
image.imageView = texture->image.m_imageView;
|
||||
image.sampler = g_meshSampler;
|
||||
textures.AppendTail(image);
|
||||
@@ -196,33 +223,70 @@ void IMeshRenderer::Frame( float fDelta )
|
||||
vkUpdateDescriptorSets(g_vkDevice, writes.GetSize(), writes.GetData(), 0, NULL);
|
||||
|
||||
|
||||
VkImageMemoryBarrier barrier = {
|
||||
VkImageMemoryBarrier barriers[4] = {
|
||||
{
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
.srcAccessMask = 0,
|
||||
.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_GENERAL,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
.image = g_swapchainImage,
|
||||
.image = g_meshColor.m_image,
|
||||
.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}
|
||||
},
|
||||
{
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
.srcAccessMask = 0,
|
||||
.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
.image = g_meshColorMSAA.m_image,
|
||||
.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}
|
||||
},
|
||||
{
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
.srcAccessMask = 0,
|
||||
.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
.newLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
|
||||
.image = g_meshDepth.m_image,
|
||||
.subresourceRange = {VK_IMAGE_ASPECT_DEPTH_BIT, 0, 1, 0, 1}
|
||||
},
|
||||
{
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
.srcAccessMask = 0,
|
||||
.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_UNDEFINED,
|
||||
.newLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
|
||||
.image = g_meshDepthMSAA.m_image,
|
||||
.subresourceRange = {VK_IMAGE_ASPECT_DEPTH_BIT, 0, 1, 0, 1}
|
||||
},
|
||||
};
|
||||
vkCmdPipelineBarrier(g_vkCommandBuffer,
|
||||
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||
0, 0, NULL, 0, NULL, 1, &barrier);
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
|
||||
0, 0, NULL, 0, NULL, 4, barriers);
|
||||
|
||||
VkRenderingAttachmentInfo colorAttachment = {
|
||||
.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
|
||||
.imageView = g_swapchainImageView,
|
||||
.imageView = g_meshColorMSAA.m_imageView,
|
||||
.imageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
|
||||
.resolveMode = VK_RESOLVE_MODE_AVERAGE_BIT,
|
||||
.resolveImageView = g_meshColor.m_imageView,
|
||||
.resolveImageLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
|
||||
.storeOp = VK_ATTACHMENT_STORE_OP_STORE,
|
||||
.clearValue = {.color = {0.0f, 0.0f, 0.0f, 1.0f}},
|
||||
};
|
||||
VkRenderingAttachmentInfo depthAttachment = {
|
||||
.sType = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
|
||||
.imageView = g_meshdepth.m_imageView,
|
||||
.imageView = g_meshDepthMSAA.m_imageView,
|
||||
.imageLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
|
||||
.loadOp = VK_ATTACHMENT_LOAD_OP_LOAD,
|
||||
.resolveMode = VK_RESOLVE_MODE_AVERAGE_BIT,
|
||||
.resolveImageView = g_meshDepth.m_imageView,
|
||||
.resolveImageLayout = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
|
||||
.loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR,
|
||||
.storeOp = VK_ATTACHMENT_STORE_OP_STORE,
|
||||
.clearValue = {.depthStencil = {.depth = 1}},
|
||||
};
|
||||
|
||||
VkRenderingInfo renderInfo = {
|
||||
@@ -246,9 +310,9 @@ void IMeshRenderer::Frame( float fDelta )
|
||||
vkCmdSetDepthCompareOp(g_vkCommandBuffer, VK_COMPARE_OP_LESS);
|
||||
vkCmdSetStencilTestEnable(g_vkCommandBuffer, VK_FALSE);
|
||||
|
||||
_vkCmdSetRasterizationSamplesEXT(g_vkCommandBuffer, VK_SAMPLE_COUNT_1_BIT);
|
||||
_vkCmdSetRasterizationSamplesEXT(g_vkCommandBuffer, VK_SAMPLE_COUNT_4_BIT);
|
||||
VkSampleMask sampleMask = 0xFFFFFFFF;
|
||||
_vkCmdSetSampleMaskEXT(g_vkCommandBuffer, VK_SAMPLE_COUNT_1_BIT, &sampleMask);
|
||||
_vkCmdSetSampleMaskEXT(g_vkCommandBuffer, VK_SAMPLE_COUNT_4_BIT, &sampleMask);
|
||||
_vkCmdSetAlphaToCoverageEnableEXT(g_vkCommandBuffer, VK_FALSE);
|
||||
|
||||
VkViewport viewport = {0, 0, (float)g_nWindowWidth, (float)g_nWindowHeight, 0.0f, 1.0f};
|
||||
@@ -301,8 +365,8 @@ void IMeshRenderer::Frame( float fDelta )
|
||||
for (auto &mesh: g_drawnMeshes)
|
||||
{
|
||||
VkDeviceSize offset = 0;
|
||||
uint32_t textureID = mesh.m_material.albedo;
|
||||
vkCmdPushConstants(g_vkCommandBuffer, g_meshPipeline.m_layout, VK_SHADER_STAGE_ALL, 0, 64, mesh.m_matrix);
|
||||
uint32_t textureID = 0;
|
||||
vkCmdPushConstants(g_vkCommandBuffer, g_meshPipeline.m_layout, VK_SHADER_STAGE_ALL, 0, 64, &mesh.m_matrix);
|
||||
vkCmdPushConstants(g_vkCommandBuffer, g_meshPipeline.m_layout, VK_SHADER_STAGE_ALL, 64, 4, &textureID);
|
||||
vkCmdBindVertexBuffers(g_vkCommandBuffer, 0, 1, &mesh.m_pVertexBuffer->m_buffer.m_buffer, &offset);
|
||||
if (mesh.m_pIndexBuffer)
|
||||
@@ -322,13 +386,13 @@ void IMeshRenderer::Frame( float fDelta )
|
||||
}
|
||||
vkCmdEndRendering(g_vkCommandBuffer);
|
||||
|
||||
barrier = {
|
||||
VkImageMemoryBarrier barrier = {
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
|
||||
.dstAccessMask = 0,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
|
||||
.image = g_swapchainImage,
|
||||
.image = g_meshColor.m_image,
|
||||
.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}
|
||||
};
|
||||
|
||||
@@ -336,6 +400,23 @@ void IMeshRenderer::Frame( float fDelta )
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
|
||||
0, 0, NULL, 0, NULL, 1, &barrier);
|
||||
|
||||
barrier = {
|
||||
.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
|
||||
.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
|
||||
.dstAccessMask = 0,
|
||||
.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
|
||||
.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
|
||||
.image = g_meshColor.m_image,
|
||||
.subresourceRange = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1}
|
||||
};
|
||||
|
||||
vkCmdPipelineBarrier(g_vkCommandBuffer,
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
|
||||
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
|
||||
0, 0, NULL, 0, NULL, 1, &barrier);
|
||||
|
||||
|
||||
g_drawnMeshes = CUtlVector<CMesh>();
|
||||
|
||||
}
|
||||
@@ -347,7 +428,7 @@ IMesh *IMeshRenderer::CreateMesh()
|
||||
return mesh;
|
||||
}
|
||||
|
||||
void IMeshRenderer::Destroy( IBrush *pModel )
|
||||
void IMeshRenderer::Destroy( IMesh *pModel )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user