diff --git a/renderer/include/gamerenderer.h b/renderer/include/gamerenderer.h index 4f14d74..c4edfd3 100644 --- a/renderer/include/gamerenderer.h +++ b/renderer/include/gamerenderer.h @@ -64,7 +64,6 @@ private: physis_Shader &vertexShader, physis_Shader &pixelShader, std::string_view shaderName); - spirv_cross::CompilerGLSL getShaderModuleResources(const physis_Shader &shader); void createImageResources(); diff --git a/renderer/include/shadermanager.h b/renderer/include/shadermanager.h index b0b8045..2282085 100644 --- a/renderer/include/shadermanager.h +++ b/renderer/include/shadermanager.h @@ -8,6 +8,7 @@ #include #include +#include #include struct physis_Shader; @@ -18,6 +19,7 @@ class ShaderManager public: explicit ShaderManager(Device &device); + spirv_cross::CompilerGLSL getShaderModuleResources(const physis_Shader &shader); VkShaderModule convertShaderModule(const physis_Shader &shader, spv::ExecutionModel executionModel); private: diff --git a/renderer/src/gamerenderer.cpp b/renderer/src/gamerenderer.cpp index 5b43c9e..b45d482 100644 --- a/renderer/src/gamerenderer.cpp +++ b/renderer/src/gamerenderer.cpp @@ -842,10 +842,10 @@ GameRenderer::CachedPipeline &GameRenderer::bindPipeline(VkCommandBuffer command binding.stride = sizeof(glm::vec4); } - auto vertex_glsl = getShaderModuleResources(vertexShader); + auto vertex_glsl = m_shaderManager.getShaderModuleResources(vertexShader); auto vertex_resources = vertex_glsl.get_shader_resources(); - auto fragment_glsl = getShaderModuleResources(pixelShader); + auto fragment_glsl = m_shaderManager.getShaderModuleResources(pixelShader); auto fragment_resources = fragment_glsl.get_shader_resources(); std::vector requestedSets; @@ -1131,20 +1131,6 @@ GameRenderer::CachedPipeline &GameRenderer::bindPipeline(VkCommandBuffer command return pipeline; } -spirv_cross::CompilerGLSL GameRenderer::getShaderModuleResources(const physis_Shader &shader) -{ - dxvk::DxbcReader reader(reinterpret_cast(shader.bytecode), shader.len); - - dxvk::DxbcModule module(reader); - - dxvk::DxbcModuleInfo info; - auto result = module.compile(info, "test"); - - // glsl.build_combined_image_samplers(); - - return spirv_cross::CompilerGLSL(result.code.data(), result.code.dwords()); -} - VkDescriptorSet GameRenderer::createDescriptorFor(const DrawObject *object, const CachedPipeline &pipeline, int i, const RenderMaterial *material, std::string_view pass) { diff --git a/renderer/src/shadermanager.cpp b/renderer/src/shadermanager.cpp index 04b091f..49c98be 100644 --- a/renderer/src/shadermanager.cpp +++ b/renderer/src/shadermanager.cpp @@ -18,6 +18,20 @@ ShaderManager::ShaderManager(Device &device) { } +spirv_cross::CompilerGLSL ShaderManager::getShaderModuleResources(const physis_Shader &shader) +{ + dxvk::DxbcReader reader(reinterpret_cast(shader.bytecode), shader.len); + + dxvk::DxbcModule module(reader); + + dxvk::DxbcModuleInfo info; + auto result = module.compile(info, "test"); + + // glsl.build_combined_image_samplers(); + + return spirv_cross::CompilerGLSL(result.code.data(), result.code.dwords()); +} + VkShaderModule ShaderManager::convertShaderModule(const physis_Shader &shader, spv::ExecutionModel executionModel) { dxvk::DxbcReader reader(reinterpret_cast(shader.bytecode), shader.len);