More fixes

This commit is contained in:
Dynamitos
2024-02-23 12:50:40 +01:00
parent a3f5ad2841
commit 66b3ba59b6
8 changed files with 20 additions and 11 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ void taskMain(
{
uint m = mesh.meshletOffset + i;
MeshletDescription meshlet = pScene.meshletInfos[m];
if(meshlet.boundingBox.insideFrustum(localToClip, viewFrustum))
//if(meshlet.boundingBox.insideFrustum(localToClip, viewFrustum))
{
uint index;
InterlockedAdd(head, 1, index);
+3 -5
View File
@@ -20,13 +20,11 @@ struct AABB
for(int i = 0; i < 8; ++i)
{
float3 adjusted = corners[i].xyz / corners[i].w;
if(adjusted.z > 0)
if(frustum.pointInside(adjusted))
{
if(frustum.pointInside(adjusted))
{
return true;
}
return true;
}
}
return false;
}
+2 -2
View File
@@ -38,7 +38,7 @@ struct Plane
float d;
bool pointInside(float3 point)
{
return dot(n, point) - d > 0.0f;
return dot(n, point) - d < 0.0f;
}
};
@@ -49,7 +49,7 @@ struct Frustum
{
for(int p = 0; p < 4; ++p)
{
if(!sides[p].pointInside(point))
if(sides[p].pointInside(point))
{
return false;
}
+1
View File
@@ -13,4 +13,5 @@ public:
const Component::Mesh& getMesh() const;
private:
};
DEFINE_REF(StaticMeshActor)
} // namespace Seele
+1 -1
View File
@@ -103,7 +103,7 @@ void BasePass::render()
permutation.setMaterial(materialData.material->getName());
Gfx::PermutationId id(permutation);
Gfx::PRenderCommand command = graphics->createRenderCommand("DepthRender");
Gfx::PRenderCommand command = graphics->createRenderCommand("BaseRender");
command->setViewport(viewport);
Gfx::OPipelineLayout layout = graphics->createPipelineLayout(basePassLayout);
layout->addDescriptorLayout(INDEX_MATERIAL, materialData.material->getDescriptorLayout());
+1 -1
View File
@@ -484,7 +484,7 @@ void Graphics::pickPhysicalDevice()
{
if (std::strcmp(VK_EXT_MESH_SHADER_EXTENSION_NAME, extensionProps[i].extensionName) == 0)
{
//meshShadingEnabled = true;
meshShadingEnabled = true;
break;
}
}
@@ -94,9 +94,12 @@ PGraphicsPipeline PipelineCache::createPipeline(Gfx::LegacyPipelineCreateInfo gf
PVertexShader vertexShader = gfxInfo.vertexShader.cast<VertexShader>();
stageInfos[stageCount++] = {
.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
.pNext = nullptr,
.flags = 0,
.stage = VK_SHADER_STAGE_VERTEX_BIT,
.module = vertexShader->getModuleHandle(),
.pName = vertexShader->getEntryPointName(),
.pSpecializationInfo = nullptr,
};
if (gfxInfo.fragmentShader != nullptr)
@@ -105,9 +108,12 @@ PGraphicsPipeline PipelineCache::createPipeline(Gfx::LegacyPipelineCreateInfo gf
stageInfos[stageCount++] = {
.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
.pNext = nullptr,
.flags = 0,
.stage = VK_SHADER_STAGE_FRAGMENT_BIT,
.module = fragment->getModuleHandle(),
.pName = fragment->getEntryPointName(),
.pSpecializationInfo = nullptr,
};
}
hash = CRC::Calculate(stageInfos, sizeof(stageInfos), CRC::CRC_32(), hash);
@@ -124,7 +130,9 @@ PGraphicsPipeline PipelineCache::createPipeline(Gfx::LegacyPipelineCreateInfo gf
.pNext = nullptr,
.flags = 0,
.viewportCount = 1,
.pViewports = nullptr,
.scissorCount = 1,
.pScissors = nullptr,
};
hash = CRC::Calculate(&viewportInfo, sizeof(viewportInfo), CRC::CRC_32(), hash);
VkPipelineRasterizationStateCreateInfo rasterizationState = {
@@ -198,6 +206,7 @@ PGraphicsPipeline PipelineCache::createPipeline(Gfx::LegacyPipelineCreateInfo gf
.pAttachments = blendAttachments.data(),
};
std::memcpy(blendState.blendConstants, gfxInfo.colorBlend.blendConstants.data(), sizeof(blendState.blendConstants));
hash = CRC::Calculate(&blendState, sizeof(blendState), CRC::CRC_32(), hash);
uint32 numDynamicEnabled = 0;
StaticArray<VkDynamicState, 2> dynamicEnabled;
@@ -208,6 +217,7 @@ PGraphicsPipeline PipelineCache::createPipeline(Gfx::LegacyPipelineCreateInfo gf
VkPipelineDynamicStateCreateInfo dynamicState = {
.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
.pNext = nullptr,
.flags = 0,
.dynamicStateCount = (uint32)dynamicEnabled.size(),
.pDynamicStates = dynamicEnabled.data(),
};
+1 -1
View File
@@ -14,7 +14,7 @@ public:
PGraphicsPipeline createPipeline(Gfx::MeshPipelineCreateInfo createInfo);
PComputePipeline createPipeline(Gfx::ComputePipelineCreateInfo createInfo);
private:
Map<uint32, OGraphicsPipeline> graphicsPipelines;
std::map<uint32, OGraphicsPipeline> graphicsPipelines;
Map<uint32, OComputePipeline> computePipelines;
std::mutex cacheLock;
VkPipelineCache cache;