From 839be06f9057c7dc5c605dc77a34af5080f8853a Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Tue, 11 Aug 2020 21:23:20 +0200 Subject: [PATCH] Temporary commit to investigate build error --- .vscode/launch.json | 2 +- CMakeLists.txt | 2 +- cmake/FindGLFW.cmake | 10 ++--- cmake/SuperBuild.cmake | 4 +- external/json | 2 +- external/slang | 2 +- external/stb | 2 +- src/Engine/Asset/Asset.h | 1 + src/Engine/Asset/TextureLoader.cpp | 10 ++--- src/Engine/Graphics/GraphicsInitializer.h | 1 + src/Engine/Graphics/GraphicsResources.cpp | 2 +- src/Engine/Graphics/GraphicsResources.h | 37 ++++++++++++++++++- src/Engine/Graphics/RenderCore.cpp | 2 + src/Engine/Graphics/RenderPass/BasePass.cpp | 2 +- .../Graphics/Vulkan/VulkanDescriptorSets.cpp | 2 +- .../Graphics/Vulkan/VulkanDescriptorSets.h | 1 + .../Graphics/Vulkan/VulkanGraphicsResources.h | 15 ++++++-- .../Graphics/Vulkan/VulkanRenderPass.cpp | 11 +++--- src/Engine/Graphics/Vulkan/VulkanRenderPass.h | 1 + src/Engine/Graphics/Vulkan/VulkanViewport.cpp | 2 +- src/Engine/Material/Material.cpp | 22 ++++++++++- src/Engine/Material/Material.h | 6 +++ src/Engine/Material/MaterialAsset.cpp | 18 --------- src/Engine/Material/MaterialAsset.h | 4 -- 24 files changed, 107 insertions(+), 54 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index fa21275..b530dec 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,7 +11,7 @@ "program": "${workspaceRoot}/bin/Debug/SeeleEngine.exe", "args": [], "stopAtEntry": false, - "cwd": "${workspaceFolder}/bin/Debug", + "cwd": "${workspaceRoot}/bin/Debug", "environment": [], "externalConsole": false, "symbolSearchPath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.25.28610\\lib\\x64", diff --git a/CMakeLists.txt b/CMakeLists.txt index 5720e9d..ab273c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ else() project (Seele) endif() -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}) #Workaround for vs, because it places artifacts into an additional subfolder set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/bin/Release) diff --git a/cmake/FindGLFW.cmake b/cmake/FindGLFW.cmake index 6a3cd66..2472452 100644 --- a/cmake/FindGLFW.cmake +++ b/cmake/FindGLFW.cmake @@ -29,11 +29,11 @@ if (WIN32) ${GLFW_ROOT}/include DOC "The directory where GLFW/glfw.h resides") - # Use glfw3.lib for static library + # Use glfw3(d).lib for static library if (GLFW_USE_STATIC_LIBS) - set(GLFW_LIBRARY_NAME glfw3) + set(GLFW_LIBRARY_NAME glfw3${CMAKE_DEBUG_POSTFIX}) else() - set(GLFW_LIBRARY_NAME glfw3ddll) + set(GLFW_LIBRARY_NAME glfw3${CMAKE_DEBUG_POSTFIX}dll) endif() # Find library files @@ -50,7 +50,7 @@ if (WIN32) find_file( GLFW_BINARY - NAMES glfw3.dll + NAMES glfw3${CMAKE_DEBUG_POSTFIX}.dll PATHS $ENV{PROGRAMFILES}/bin ${GLFW_ROOT}/src @@ -102,7 +102,7 @@ find_package_handle_standard_args(GLFW DEFAULT_MSG GLFW_INCLUDE_DIR GLFW_LIBRARY # Define GLFW_LIBRARIES and GLFW_INCLUDE_DIRS if (GLFW_FOUND) - set(GLFW_LIBRARIES ${OPENGL_LIBRARIES} ${GLFW_LIBRARY}) + set(GLFW_LIBRARIES ${GLFW_LIBRARY}) set(GLFW_INCLUDE_DIRS ${GLFW_INCLUDE_DIR}) endif() diff --git a/cmake/SuperBuild.cmake b/cmake/SuperBuild.cmake index 2814250..5caa755 100644 --- a/cmake/SuperBuild.cmake +++ b/cmake/SuperBuild.cmake @@ -2,8 +2,6 @@ include (ExternalProject) set(DEPENDENCIES) set(EXTRA_CMAKE_ARGS) -execute_process(COMMAND git submodule update --init --recursive -- ${CMAKE_SOURCE_DIR}) - #------------ASSIMP--------------- list(APPEND DEPENDENCIES assimp) set(ASSIMP_BUILD_TESTS OFF CACHE INTERNAL "") @@ -72,7 +70,7 @@ if(WIN32) ExternalProject_Add(slang SOURCE_DIR ${SLANG_ROOT} BINARY_DIR ${CMAKE_BINARY_DIR}/lib - CONFIGURE_COMMAND ""#devenv /upgrade ${SLANG_ROOT}/source/slang/slang.vcxproj + CONFIGURE_COMMAND devenv /upgrade ${SLANG_ROOT}/source/slang/slang.vcxproj BUILD_COMMAND msbuild -p:Configuration=Release -p:WarningLevel=0 -p:Platform=${CMAKE_PLATFORM} -p:WindowsTargetPlatformVersion=10.0 ${SLANG_ROOT}/source/slang/slang.vcxproj INSTALL_COMMAND "") diff --git a/external/json b/external/json index 634fa87..e110667 160000 --- a/external/json +++ b/external/json @@ -1 +1 @@ -Subproject commit 634fa87e5a6a438089954a46ddec948bf6b5e69e +Subproject commit e110667d210698b5df3341244bfb4c454ac392f1 diff --git a/external/slang b/external/slang index 7a1b6de..dd980b4 160000 --- a/external/slang +++ b/external/slang @@ -1 +1 @@ -Subproject commit 7a1b6deff067b393041e90eb6b1ac6a62dedd5dd +Subproject commit dd980b492aba9ea1540193434184489d9d04608d diff --git a/external/stb b/external/stb index f54acd4..b42009b 160000 --- a/external/stb +++ b/external/stb @@ -1 +1 @@ -Subproject commit f54acd4e13430c5122cab4ca657705c84aa61b08 +Subproject commit b42009b3b9d4ca35bc703f5310eedc74f584be58 diff --git a/src/Engine/Asset/Asset.h b/src/Engine/Asset/Asset.h index 69130d3..7325263 100644 --- a/src/Engine/Asset/Asset.h +++ b/src/Engine/Asset/Asset.h @@ -1,6 +1,7 @@ #pragma once #include "MinimalEngine.h" #include +#include namespace Seele { diff --git a/src/Engine/Asset/TextureLoader.cpp b/src/Engine/Asset/TextureLoader.cpp index 1e9c2ef..4a32cbc 100644 --- a/src/Engine/Asset/TextureLoader.cpp +++ b/src/Engine/Asset/TextureLoader.cpp @@ -12,8 +12,8 @@ using namespace Seele; TextureLoader::TextureLoader(Gfx::PGraphics graphics) : graphics(graphics) { - import("./textures/placeholder.png"); - placeholderTexture = AssetRegistry::findTexture("./textures/placeholder.png"); + import("textures/placeholder.png"); + placeholderTexture = AssetRegistry::findTexture("textures/placeholder.png"); } TextureLoader::~TextureLoader() @@ -27,11 +27,11 @@ void TextureLoader::importAsset(const std::filesystem::path& filePath) void TextureLoader::import(const std::filesystem::path& path) { - std::filesystem::path assetPath = path.stem().append(".asset"); + auto assetFileName = path; + std::filesystem::path assetPath = AssetRegistry::get().rootFolder.append(assetFileName.replace_extension("asset").filename().string()); PTextureAsset asset = new TextureAsset(assetPath); asset->setStatus(Asset::Status::Loading); int x, y, n; - const std::string fullPath = std::string(asset->getFullPath()); unsigned char* data = stbi_load(path.string().c_str(), &x, &y, &n, 4); TextureCreateInfo createInfo; createInfo.format = Gfx::SE_FORMAT_R8G8B8A8_UINT; @@ -45,5 +45,5 @@ void TextureLoader::import(const std::filesystem::path& path) texture->transferOwnership(Gfx::QueueType::GRAPHICS); asset->setTexture(texture); asset->setStatus(Asset::Status::Ready); - AssetRegistry::get().textures[assetPath.string()] = asset; + AssetRegistry::get().textures[path.string()] = asset; } \ No newline at end of file diff --git a/src/Engine/Graphics/GraphicsInitializer.h b/src/Engine/Graphics/GraphicsInitializer.h index cd8af00..acb8190 100644 --- a/src/Engine/Graphics/GraphicsInitializer.h +++ b/src/Engine/Graphics/GraphicsInitializer.h @@ -33,6 +33,7 @@ struct WindowCreateInfo int32 height; const char *title; bool bFullscreen; + Gfx::SeSampleCountFlags numSamples; Gfx::SeFormat pixelFormat; void *windowHandle; }; diff --git a/src/Engine/Graphics/GraphicsResources.cpp b/src/Engine/Graphics/GraphicsResources.cpp index 9084a19..0362fac 100644 --- a/src/Engine/Graphics/GraphicsResources.cpp +++ b/src/Engine/Graphics/GraphicsResources.cpp @@ -262,7 +262,7 @@ RenderTargetLayout::RenderTargetLayout(Array inputAttac } Window::Window(const WindowCreateInfo &createInfo) - : sizeX(createInfo.width), sizeY(createInfo.height), bFullscreen(createInfo.bFullscreen), title(createInfo.title), pixelFormat(createInfo.pixelFormat) + : sizeX(createInfo.width), sizeY(createInfo.height), bFullscreen(createInfo.bFullscreen), title(createInfo.title), pixelFormat(createInfo.pixelFormat), samples(createInfo.numSamples) { } diff --git a/src/Engine/Graphics/GraphicsResources.h b/src/Engine/Graphics/GraphicsResources.h index 8a56fe1..335b04c 100644 --- a/src/Engine/Graphics/GraphicsResources.h +++ b/src/Engine/Graphics/GraphicsResources.h @@ -409,6 +409,11 @@ class Texture : public QueueOwnedResource public: Texture(PGraphics graphics, QueueType startQueueType); virtual ~Texture(); + + virtual SeFormat getFormat() const = 0; + virtual uint32 getSizeX() const = 0; + virtual uint32 getSizeY() const = 0; + virtual SeSampleCountFlags getNumSamples() const = 0; protected: // Inherited via QueueOwnedResource virtual void executeOwnershipBarrier(QueueType newOwner) = 0; @@ -419,6 +424,11 @@ class Texture2D : public Texture public: Texture2D(PGraphics graphics, QueueType startQueueType); virtual ~Texture2D(); + + virtual SeFormat getFormat() const = 0; + virtual uint32 getSizeX() const = 0; + virtual uint32 getSizeY() const = 0; + virtual SeSampleCountFlags getNumSamples() const = 0; protected: //Inherited via QueueOwnedResource virtual void executeOwnershipBarrier(QueueType newOwner) = 0; @@ -447,6 +457,14 @@ public: virtual void endFrame() = 0; virtual void onWindowCloseEvent() = 0; virtual PTexture2D getBackBuffer() = 0; + SeFormat getSwapchainFormat() const + { + return pixelFormat; + } + SeSampleCountFlags getNumSamples() const + { + return samples; + } protected: uint32 sizeX; @@ -454,6 +472,7 @@ protected: bool bFullscreen; const char *title; SeFormat pixelFormat; + uint32 samples; }; DEFINE_REF(Window); @@ -496,6 +515,14 @@ public: { return texture; } + virtual SeFormat getFormat() const + { + return texture->getFormat(); + } + virtual SeSampleCountFlags getNumSamples() const + { + return texture->getNumSamples(); + } inline SeAttachmentLoadOp getLoadOp() const { return loadOp; } inline SeAttachmentStoreOp getStoreOp() const { return storeOp; } inline SeAttachmentLoadOp getStencilLoadOp() const { return stencilLoadOp; } @@ -518,13 +545,21 @@ public: SeAttachmentStoreOp storeOp = SE_ATTACHMENT_STORE_OP_STORE, SeAttachmentLoadOp stencilLoadOp = SE_ATTACHMENT_LOAD_OP_DONT_CARE, SeAttachmentStoreOp stencilStoreOp = SE_ATTACHMENT_STORE_OP_DONT_CARE) - : RenderTargetAttachment(owner->getBackBuffer(), loadOp, storeOp, stencilLoadOp, stencilStoreOp), owner(owner) + : RenderTargetAttachment(nullptr, loadOp, storeOp, stencilLoadOp, stencilStoreOp), owner(owner) { } virtual PTexture2D getTexture() override { return owner->getBackBuffer(); } + virtual SeFormat getFormat() const override + { + return owner->getSwapchainFormat(); + } + virtual SeSampleCountFlags getNumSamples() const override + { + return owner->getNumSamples(); + } private: PWindow owner; diff --git a/src/Engine/Graphics/RenderCore.cpp b/src/Engine/Graphics/RenderCore.cpp index 2896d37..3c8d3e8 100644 --- a/src/Engine/Graphics/RenderCore.cpp +++ b/src/Engine/Graphics/RenderCore.cpp @@ -17,6 +17,8 @@ void Seele::RenderCore::init() mainWindowInfo.width = 1280; mainWindowInfo.height = 720; mainWindowInfo.bFullscreen = false; + mainWindowInfo.numSamples = 1; + mainWindowInfo.pixelFormat = Gfx::SE_FORMAT_R8G8B8_UNORM; auto window = windowManager->addWindow(mainWindowInfo); ViewportCreateInfo sceneViewInfo; sceneViewInfo.sizeX = 1280; diff --git a/src/Engine/Graphics/RenderPass/BasePass.cpp b/src/Engine/Graphics/RenderPass/BasePass.cpp index 1b01aa9..b77ed71 100644 --- a/src/Engine/Graphics/RenderPass/BasePass.cpp +++ b/src/Engine/Graphics/RenderPass/BasePass.cpp @@ -20,7 +20,7 @@ void BasePassMeshProcessor::addMeshBatch( const Gfx::PRenderPass renderPass, int32 staticMeshId) { - const PMaterialAsset material = batch.material; + const PMaterial material = batch.material; const Gfx::MaterialShadingModel shadingModel = material->getShadingModel(); const PVertexShaderInput vertexInput = batch.vertexInput; diff --git a/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.cpp b/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.cpp index 2de69e9..d0c2fbd 100644 --- a/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.cpp +++ b/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.cpp @@ -1,8 +1,8 @@ +#include "VulkanDescriptorSets.h" #include "VulkanGraphicsResources.h" #include "VulkanGraphicsEnums.h" #include "VulkanGraphics.h" #include "VulkanInitializer.h" -#include "VulkanDescriptorSets.h" using namespace Seele; using namespace Seele::Vulkan; diff --git a/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.h b/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.h index 84fd7d0..0ec3a03 100644 --- a/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.h +++ b/src/Engine/Graphics/Vulkan/VulkanDescriptorSets.h @@ -1,3 +1,4 @@ +#pragma once #include "VulkanGraphicsResources.h" namespace Seele diff --git a/src/Engine/Graphics/Vulkan/VulkanGraphicsResources.h b/src/Engine/Graphics/Vulkan/VulkanGraphicsResources.h index 6822926..1f717ed 100644 --- a/src/Engine/Graphics/Vulkan/VulkanGraphicsResources.h +++ b/src/Engine/Graphics/Vulkan/VulkanGraphicsResources.h @@ -200,6 +200,10 @@ public: { return format; } + inline Gfx::SeSampleCountFlags getNumSamples() const + { + return samples; + } inline bool isDepthStencil() const { return aspect & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT); @@ -249,18 +253,22 @@ class Texture2D : public TextureBase, public Gfx::Texture2D public: Texture2D(PGraphics graphics, const TextureCreateInfo& createInfo, VkImage existingImage = VK_NULL_HANDLE); virtual ~Texture2D(); - inline uint32 getSizeX() const + virtual uint32 getSizeX() const override { return textureHandle->sizeX; } - inline uint32 getSizeY() const + virtual uint32 getSizeY() const override { return textureHandle->sizeY; } - inline Gfx::SeFormat getFormat() const + virtual Gfx::SeFormat getFormat() const override { return textureHandle->format; } + virtual Gfx::SeSampleCountFlags getNumSamples() const override + { + return textureHandle->getNumSamples(); + } inline VkImage getHandle() const { return textureHandle->image; @@ -312,6 +320,7 @@ protected: PGraphics graphics; VkFormat pixelFormat; + VkSampleCountFlags numSamples; VkPresentModeKHR presentMode; VkSwapchainKHR swapchain; VkSurfaceKHR surface; diff --git a/src/Engine/Graphics/Vulkan/VulkanRenderPass.cpp b/src/Engine/Graphics/Vulkan/VulkanRenderPass.cpp index dc03a6e..f1a834a 100644 --- a/src/Engine/Graphics/Vulkan/VulkanRenderPass.cpp +++ b/src/Engine/Graphics/Vulkan/VulkanRenderPass.cpp @@ -19,7 +19,7 @@ RenderPass::RenderPass(PGraphics graphics, Gfx::PRenderTargetLayout layout) for (auto inputAttachment : layout->inputAttachments) { PTexture2D image = inputAttachment->getTexture().cast(); - VkAttachmentDescription desc = attachments.add(); + VkAttachmentDescription& desc = attachments.add(); desc.flags = 0; desc.format = cast(image->getFormat()); desc.storeOp = cast(inputAttachment->getStoreOp()); @@ -36,10 +36,10 @@ RenderPass::RenderPass(PGraphics graphics, Gfx::PRenderTargetLayout layout) } for (auto colorAttachment : layout->colorAttachments) { - PTexture2D image = colorAttachment->getTexture().cast(); - VkAttachmentDescription desc = attachments.add(); + VkAttachmentDescription& desc = attachments.add(); desc.flags = 0; - desc.format = cast(image->getFormat()); + desc.samples = (VkSampleCountFlagBits)colorAttachment->getNumSamples(); + desc.format = cast(colorAttachment->getFormat()); desc.storeOp = cast(colorAttachment->getStoreOp()); desc.loadOp = cast(colorAttachment->getLoadOp()); desc.stencilStoreOp = cast(colorAttachment->getStencilStoreOp()); @@ -55,8 +55,9 @@ RenderPass::RenderPass(PGraphics graphics, Gfx::PRenderTargetLayout layout) if (layout->depthAttachment != nullptr) { PTexture2D image = layout->depthAttachment->getTexture().cast(); - VkAttachmentDescription desc = attachments.add(); + VkAttachmentDescription& desc = attachments.add(); desc.flags = 0; + desc.samples = (VkSampleCountFlagBits)image->getNumSamples(); desc.format = cast(image->getFormat()); desc.storeOp = cast(layout->depthAttachment->getStoreOp()); desc.loadOp = cast(layout->depthAttachment->getLoadOp()); diff --git a/src/Engine/Graphics/Vulkan/VulkanRenderPass.h b/src/Engine/Graphics/Vulkan/VulkanRenderPass.h index c8dcebf..761e95c 100644 --- a/src/Engine/Graphics/Vulkan/VulkanRenderPass.h +++ b/src/Engine/Graphics/Vulkan/VulkanRenderPass.h @@ -1,3 +1,4 @@ +#pragma once #include "VulkanGraphicsResources.h" namespace Seele diff --git a/src/Engine/Graphics/Vulkan/VulkanViewport.cpp b/src/Engine/Graphics/Vulkan/VulkanViewport.cpp index 1820510..82122a0 100644 --- a/src/Engine/Graphics/Vulkan/VulkanViewport.cpp +++ b/src/Engine/Graphics/Vulkan/VulkanViewport.cpp @@ -9,7 +9,7 @@ using namespace Seele; using namespace Seele::Vulkan; Window::Window(PGraphics graphics, const WindowCreateInfo &createInfo) - : Gfx::Window(createInfo), graphics(graphics), instance(graphics->getInstance()), swapchain(VK_NULL_HANDLE) + : Gfx::Window(createInfo), graphics(graphics), instance(graphics->getInstance()), swapchain(VK_NULL_HANDLE), numSamples(createInfo.numSamples), pixelFormat(cast(createInfo.pixelFormat)) { glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); GLFWwindow *handle = glfwCreateWindow(createInfo.width, createInfo.height, createInfo.title, createInfo.bFullscreen ? glfwGetPrimaryMonitor() : nullptr, nullptr); diff --git a/src/Engine/Material/Material.cpp b/src/Engine/Material/Material.cpp index 0c4d51d..5e95874 100644 --- a/src/Engine/Material/Material.cpp +++ b/src/Engine/Material/Material.cpp @@ -1,8 +1,12 @@ #include "Material.h" #include "Asset/AssetRegistry.h" +#include "Graphics/VertexShaderInput.h" #include #include +Gfx::ShaderMap Material::shaderMap; +std::mutex Material::shaderMapLock; + using namespace Seele; using json = nlohmann::json; @@ -102,4 +106,20 @@ void Material::compile() codeStream << "}};" << std::endl; materialCode = codeStream.str(); -} \ No newline at end of file +} + +const Gfx::ShaderCollection* Material::getShaders(Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput) const +{ + Gfx::ShaderPermutation permutation; + std::string materialName = getMaterialName(); + std::string vertexInputName = vertexInput->getName(); + std::memcpy(permutation.materialName, materialName.c_str(), sizeof(permutation.materialName)); + std::memcpy(permutation.materialName, vertexInputName.c_str(), sizeof(permutation.materialName)); + return shaderMap.findShaders(Gfx::PermutationId(permutation)); +} + +Gfx::ShaderCollection& Material::createShaders(Gfx::PGraphics graphics, Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput) +{ + std::lock_guard lock(shaderMapLock); + return shaderMap.createShaders(graphics, renderPass, this, vertexInput, false); +} diff --git a/src/Engine/Material/Material.h b/src/Engine/Material/Material.h index d4139e3..1d3a008 100644 --- a/src/Engine/Material/Material.h +++ b/src/Engine/Material/Material.h @@ -16,7 +16,13 @@ public: virtual void load() override; virtual std::string getMaterialName() const { return materialName; } inline std::string getCode() const { return materialCode; } + + const Gfx::ShaderCollection* getShaders(Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput) const; + Gfx::ShaderCollection& createShaders(Gfx::PGraphics graphics, Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput); private: + static Gfx::ShaderMap shaderMap; + static std::mutex shaderMapLock; + void compile(); std::string materialName; std::string materialCode; diff --git a/src/Engine/Material/MaterialAsset.cpp b/src/Engine/Material/MaterialAsset.cpp index 250d215..24979b6 100644 --- a/src/Engine/Material/MaterialAsset.cpp +++ b/src/Engine/Material/MaterialAsset.cpp @@ -1,10 +1,7 @@ #include "MaterialAsset.h" -#include "Graphics/VertexShaderInput.h" using namespace Seele; -Gfx::ShaderMap MaterialAsset::shaderMap; - MaterialAsset::MaterialAsset() { } @@ -22,18 +19,3 @@ MaterialAsset::MaterialAsset(const std::filesystem::path& fullPath) MaterialAsset::~MaterialAsset() { } - -const Gfx::ShaderCollection* MaterialAsset::getShaders(Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput) const -{ - Gfx::ShaderPermutation permutation; - std::string materialName = getMaterialName(); - std::string vertexInputName = vertexInput->getName(); - std::memcpy(permutation.materialName, materialName.c_str(), sizeof(permutation.materialName)); - std::memcpy(permutation.materialName, vertexInputName.c_str(), sizeof(permutation.materialName)); - return shaderMap.findShaders(Gfx::PermutationId(permutation)); -} - -Gfx::ShaderCollection& MaterialAsset::createShaders(Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput) -{ - return Gfx::ShaderCollection(); -} diff --git a/src/Engine/Material/MaterialAsset.h b/src/Engine/Material/MaterialAsset.h index e4fb8c9..e7b74e2 100644 --- a/src/Engine/Material/MaterialAsset.h +++ b/src/Engine/Material/MaterialAsset.h @@ -19,13 +19,9 @@ public: Gfx::SeBlendOp getBlendMode() const {return Gfx::SE_BLEND_OP_END_RANGE;} Gfx::MaterialShadingModel getShadingModel() const {return Gfx::MaterialShadingModel::DefaultLit;} - const Gfx::ShaderCollection* getShaders(Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput) const; - Gfx::ShaderCollection& createShaders(Gfx::RenderPassType renderPass, PVertexShaderInput vertexInput); - protected: //For now its simply the collection of parameters, since there is no point for expressions Array parameters; - static Gfx::ShaderMap shaderMap; }; DEFINE_REF(MaterialAsset); } // namespace Seele