diff --git a/res/shaders/MeshletBasePass.slang b/res/shaders/MeshletBasePass.slang index 8480b8b..c10427e 100644 --- a/res/shaders/MeshletBasePass.slang +++ b/res/shaders/MeshletBasePass.slang @@ -47,7 +47,7 @@ void taskMain( { uint m = mesh.meshletOffset + i; MeshletDescription meshlet = pScene.meshletInfos[m]; - //if(meshlet.bounding.insideFrustum(localToView, viewFrustum)) + if(meshlet.bounding.insideFrustum(localToView, viewFrustum)) { uint index; InterlockedAdd(head, 1, index); diff --git a/src/Editor/Asset/MeshLoader.cpp b/src/Editor/Asset/MeshLoader.cpp index 37bdba1..408db6e 100644 --- a/src/Editor/Asset/MeshLoader.cpp +++ b/src/Editor/Asset/MeshLoader.cpp @@ -110,6 +110,9 @@ void MeshLoader::loadMaterials(const aiScene* scene, const MapGetName().C_Str(), i); materialName.erase(std::remove(materialName.begin(), materialName.end(), '.'), materialName.end()); // dots break adding the .asset extension later materialName.erase(std::remove(materialName.begin(), materialName.end(), '-'), materialName.end()); // dots break adding the .asset extension later + materialName.erase(std::remove(materialName.begin(), materialName.end(), ' '), materialName.end()); // dots break adding the .asset extension later + materialName.erase(std::remove(materialName.begin(), materialName.end(), '('), materialName.end()); // dots break adding the .asset extension later + materialName.erase(std::remove(materialName.begin(), materialName.end(), ')'), materialName.end()); // dots break adding the .asset extension later Gfx::ODescriptorLayout materialLayout = graphics->createDescriptorLayout("pMaterial"); Array expressions; Array parameters; @@ -161,6 +164,14 @@ void MeshLoader::loadMaterials(const aiScene* scene, const Map pendingBuffers; Buffer::Buffer(PGraphics graphics, uint64 size, VkBufferUsageFlags usage, Gfx::QueueType& queueType, bool dynamic, std::string name) - : graphics(graphics), currentBuffer(0), size(size), owner(queueType), usage(usage), name(name) { + : graphics(graphics), currentBuffer(0), size(size), owner(queueType), usage(usage | VK_BUFFER_USAGE_TRANSFER_DST_BIT), name(name) { createBuffer(); } diff --git a/src/Engine/Graphics/Vulkan/Descriptor.cpp b/src/Engine/Graphics/Vulkan/Descriptor.cpp index 5467e3f..77606b5 100644 --- a/src/Engine/Graphics/Vulkan/Descriptor.cpp +++ b/src/Engine/Graphics/Vulkan/Descriptor.cpp @@ -321,6 +321,7 @@ PipelineLayout::PipelineLayout(PGraphics graphics, const std::string& name, Gfx: PipelineLayout::~PipelineLayout() {} +std::mutex layoutLock; Map cachedLayouts; void PipelineLayout::create() { @@ -357,6 +358,7 @@ void PipelineLayout::create() { layoutHash = CRC::Calculate(createInfo.pSetLayouts, sizeof(VkDescriptorSetLayout) * createInfo.setLayoutCount, CRC::CRC_32(), layoutHash); + std::unique_lock l(layoutLock); if (cachedLayouts.contains(layoutHash)) { layoutHandle = cachedLayouts[layoutHash]; return;