diff --git a/CMakeLists.txt b/CMakeLists.txt index 24b09edacf..028bbd3188 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,7 +75,7 @@ if (Daemon_OUT) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${Daemon_OUT}) endif() -include(DaemonBuildInfo) +include(DaemonSourceGenerator) include(DaemonPlatform) ################################################################################ @@ -927,39 +927,8 @@ if (BUILD_CLIENT) Tests ${CLIENTTESTLIST} ) - # generate glsl include files - set(GLSL_SOURCE_DIR ${ENGINE_DIR}/renderer/glsl_source) - set(EMBED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/embed_data) - file(MAKE_DIRECTORY ${EMBED_INCLUDE_DIR}) - - set(SHADERS_CPP_TEXT "// This file is auto-generated by CMakeLists.txt.\n") - string(APPEND SHADERS_CPP_TEXT "#include \"common/Common.h\"\n\n") - set(SHADERMAP_TEXT "") - - foreach(res ${GLSLSOURCELIST}) - get_filename_component(filename_no_ext ${res} NAME_WE) - set(outpath ${EMBED_INCLUDE_DIR}/${filename_no_ext}.glsl.h) - - add_custom_command( - OUTPUT ${outpath} - COMMAND ${CMAKE_COMMAND} "-DINPUT_FILE=${res}" "-DOUTPUT_FILE=${outpath}" - "-DVARIABLE_NAME=${filename_no_ext}_glsl" -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/EmbedText.cmake - MAIN_DEPENDENCY ${res} - ) - - set_property(TARGET client-objects APPEND PROPERTY SOURCES ${outpath}) - - string(APPEND SHADERS_CPP_TEXT "#include \"../embed_data/${filename_no_ext}.glsl.h\"\n") - string(APPEND SHADERMAP_TEXT "\t{ \"${filename_no_ext}.glsl\", ") - string(APPEND SHADERMAP_TEXT "std::string(reinterpret_cast( ${filename_no_ext}_glsl ), ") - string(APPEND SHADERMAP_TEXT "sizeof( ${filename_no_ext}_glsl )) },\n") - endforeach() - - string(APPEND SHADERS_CPP_TEXT "\nextern const std::unordered_map shadermap\n{\n") - string(APPEND SHADERS_CPP_TEXT "${SHADERMAP_TEXT}") - string(APPEND SHADERS_CPP_TEXT "};\n") - - daemon_write_generated("shaders.cpp" "${SHADERS_CPP_TEXT}") + # Generate GLSL include files. + daemon_embed_files("EngineShaders" "${GLSL_EMBED_DIR}" "${GLSL_EMBED_LIST}" "TEXT" "client-objects") endif() if (BUILD_SERVER) diff --git a/cmake/DaemonBuildInfo.cmake b/cmake/DaemonBuildInfo.cmake deleted file mode 100644 index 95f08084e5..0000000000 --- a/cmake/DaemonBuildInfo.cmake +++ /dev/null @@ -1,44 +0,0 @@ -set(DAEMON_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource") - -set(DAEMON_BUILDINFO_DIR "DaemonBuildInfo") -set(DAEMON_BUILDINFO_HEADER "// Automatically generated, do not modify!\n") -set(DAEMON_BUILDINFO_CPP_EXT ".cpp") -set(DAEMON_BUILDINFO_H_EXT ".h") -set(BUILDINFOLIST) - -file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}") -include_directories("${DAEMON_GENERATED_DIR}") - -file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}/${DAEMON_BUILDINFO_DIR}") - -foreach(kind CPP H) - set(DAEMON_BUILDINFO_${kind} "${DAEMON_BUILDINFO_HEADER}") -endforeach() - -macro(daemon_add_buildinfo TYPE NAME VALUE) - set(DAEMON_BUILDINFO_CPP "${DAEMON_BUILDINFO_CPP}const ${TYPE} ${NAME}=${VALUE};\n") - set(DAEMON_BUILDINFO_H "${DAEMON_BUILDINFO_H}extern const ${TYPE} ${NAME};\n") -endmacro() - -macro(daemon_write_generated GENERATED_PATH GENERATED_CONTENT) - set(DAEMON_GENERATED_FILE ${DAEMON_GENERATED_DIR}/${GENERATED_PATH}) - - if (EXISTS "${DAEMON_GENERATED_FILE}") - file(READ "${DAEMON_GENERATED_FILE}" GENERATED_CONTENT_READ) - endif() - - if (NOT "${GENERATED_CONTENT}" STREQUAL "${GENERATED_CONTENT_READ}") - message(STATUS "Generating ${GENERATED_PATH}") - file(WRITE "${DAEMON_GENERATED_FILE}" "${GENERATED_CONTENT}") - endif() -endmacro() - -macro(daemon_write_buildinfo NAME) - foreach(kind CPP H) - set(DAEMON_BUILDINFO_${kind}_NAME "${NAME}${DAEMON_BUILDINFO_${kind}_EXT}") - set(DAEMON_BUILDINFO_${kind}_PATH "${DAEMON_BUILDINFO_DIR}/${DAEMON_BUILDINFO_${kind}_NAME}") - - daemon_write_generated("${DAEMON_BUILDINFO_${kind}_PATH}" "${DAEMON_BUILDINFO_${kind}}") - list(APPEND BUILDINFOLIST "${DAEMON_GENERATED_FILE}") - endforeach() -endmacro() diff --git a/cmake/DaemonFileEmbedder.cmake b/cmake/DaemonFileEmbedder.cmake new file mode 100644 index 0000000000..43512dbf54 --- /dev/null +++ b/cmake/DaemonFileEmbedder.cmake @@ -0,0 +1,38 @@ +# Converts a text file into a C-language char array definition. +# For use in CMake script mode (cmake -P). +# Required definitions on command line: +# INPUT_FILE, OUTPUT_FILE, FILE_FORMAT, VARIABLE_NAME + +# Inspired by: +# https://stackoverflow.com/questions/11813271/embed-resources-eg-shader-code-images-into-executable-library-with-cmake/27206982#27206982 + +file(READ ${INPUT_FILE} contents HEX) + +# Translate the file content. +if ("${FILE_FORMAT}" STREQUAL "TEXT") + # Strip \r for consistency. + string(REGEX REPLACE "(0d)?(..)" "0x\\2," contents "${contents}") +elseif("${FILE_FORMAT}" STREQUAL "BINARY") + string(REGEX REPLACE "(..)" "0x\\1," contents "${contents}") +else() + message(FATAL_ERROR "Unknown file format: ${FILE_FORMAT}") +endif() + +# Add null terminator. +set(contents "${contents}0x00,") + +# Split long lines. +string(REGEX REPLACE + "(0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,0x..,)" "\\1\n" + contents "${contents}" +) + +# A bit more of beautification. +string(REGEX REPLACE ",$" ",\n" contents "${contents}") + +file(WRITE ${OUTPUT_FILE} + "constexpr unsigned char ${VARIABLE_NAME}[] =\n" + "{\n" + "${contents}" + "};\n" +) diff --git a/cmake/DaemonGame.cmake b/cmake/DaemonGame.cmake index 8462617b62..e93369cce1 100644 --- a/cmake/DaemonGame.cmake +++ b/cmake/DaemonGame.cmake @@ -39,7 +39,7 @@ option(BUILD_GAME_NATIVE_DLL "Build the shared library files, mostly useful for option(BUILD_GAME_NATIVE_EXE "Build native executable, which might be used for better performances by server owners" OFF) include(ExternalProject) -include(DaemonBuildInfo) +include(DaemonSourceGenerator) include(DaemonPlatform) # Do not report unused native compiler if native vms are not built. diff --git a/cmake/DaemonSourceGenerator.cmake b/cmake/DaemonSourceGenerator.cmake new file mode 100644 index 0000000000..cd1559838e --- /dev/null +++ b/cmake/DaemonSourceGenerator.cmake @@ -0,0 +1,151 @@ +# Daemon BSD Source Code +# Copyright (c) 2025, Daemon Developers +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set(DAEMON_SOURCE_GENERATOR "${CMAKE_CURRENT_LIST_FILE}") +get_filename_component(current_list_dir "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) +set(DAEMON_FILE_EMBEDDER "${current_list_dir}/DaemonFileEmbedder.cmake") + +set(DAEMON_GENERATED_SUBDIR "GeneratedSource") +set(DAEMON_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/${DAEMON_GENERATED_SUBDIR}") + +set(DAEMON_BUILDINFO_SUBDIR "DaemonBuildInfo") +set(DAEMON_EMBEDDED_SUBDIR "DaemonEmbeddedFiles") + +set(DAEMON_BUILDINFO_DIR "${DAEMON_GENERATED_DIR}/${DAEMON_BUILDINFO_SUBDIR}") +set(DAEMON_EMBEDDED_DIR "${DAEMON_GENERATED_DIR}/${DAEMON_EMBEDDED_SUBDIR}") + +file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}") +include_directories("${DAEMON_GENERATED_DIR}") + +file(MAKE_DIRECTORY "${DAEMON_BUILDINFO_DIR}") +file(MAKE_DIRECTORY "${DAEMON_EMBEDDED_DIR}") + +set(DAEMON_GENERATED_HEADER "// Automatically generated, do not modify!\n") +set(DAEMON_GENERATED_CPP_EXT ".cpp") +set(DAEMON_GENERATED_H_EXT ".h") + +set(BUILDINFOLIST) + +foreach(kind CPP H) + set(DAEMON_BUILDINFO_${kind}_TEXT "${DAEMON_GENERATED_HEADER}") +endforeach() + +macro(daemon_add_buildinfo type name value) + string(APPEND DAEMON_BUILDINFO_CPP_TEXT "const ${type} ${name}=${value};\n") + string(APPEND DAEMON_BUILDINFO_H_TEXT "extern const ${type} ${name};\n") +endmacro() + +macro(daemon_write_buildinfo name) + foreach(kind CPP H) + set(buildinfo_file_path "${DAEMON_BUILDINFO_DIR}/${name}${DAEMON_GENERATED_${kind}_EXT}") + + file(GENERATE OUTPUT "${buildinfo_file_path}" CONTENT "${DAEMON_BUILDINFO_${kind}_TEXT}") + list(APPEND BUILDINFOLIST "${buildinfo_file_path}") + endforeach() +endmacro() + +macro(daemon_embed_files basename dir list format targetname) + set(embed_subdir "${DAEMON_EMBEDDED_SUBDIR}/${basename}") + set(embed_dir "${DAEMON_GENERATED_DIR}/${embed_subdir}") + + file(MAKE_DIRECTORY "${embed_dir}") + + foreach(kind CPP H) + set(embed_${kind}_basename "${basename}${DAEMON_GENERATED_${kind}_EXT}") + set(embed_${kind}_src_file "${DAEMON_EMBEDDED_DIR}/${embed_${kind}_basename}") + set(embed_${kind}_file "${DAEMON_EMBEDDED_SUBDIR}/${embed_${kind}_basename}") + set(embed_${kind}_text "${DAEMON_GENERATED_HEADER}") + set_property(SOURCE "${embed_${kind}_src_file}" APPEND PROPERTY OBJECT_DEPENDS "${DAEMON_SOURCE_GENERATOR}") + set_property(TARGET "${targetname}" APPEND PROPERTY SOURCES "${embed_${kind}_src_file}") + endforeach() + + string(APPEND embed_CPP_text + "#include \"${embed_H_file}\"\n" + "\n" + "namespace ${basename} {\n" + ) + + string(APPEND embed_H_text + "#include \"common/Common.h\"\n" + "\n" + "namespace ${basename} {\n" + ) + + set(embed_map_text "") + + foreach(filename ${list}) + string(REGEX REPLACE "[^A-Za-z0-9]" "_" filename_symbol "${filename}") + + set(inpath "${dir}/${filename}") + set(outpath "${embed_dir}/${filename_symbol}${DAEMON_GENERATED_H_EXT}") + + add_custom_command( + OUTPUT "${outpath}" + COMMAND ${CMAKE_COMMAND} + "-DINPUT_FILE=${inpath}" + "-DOUTPUT_FILE=${outpath}" + "-DFILE_FORMAT=${format}" + "-DVARIABLE_NAME=${filename_symbol}" + -P "${DAEMON_FILE_EMBEDDER}" + MAIN_DEPENDENCY ${inpath} + DEPENDS + "${DAEMON_FILE_EMBEDDER}" + "${DAEMON_SOURCE_GENERATOR}" + ) + + set_property(TARGET "${targetname}" APPEND PROPERTY SOURCES "${outpath}") + + string(APPEND embed_CPP_text + "#include \"${basename}/${filename_symbol}.h\"\n" + ) + + string(APPEND embed_H_text + "extern const unsigned char ${filename_symbol}[];\n" + ) + + string(APPEND embed_map_text + "\t{ \"${filename}\", { ${filename_symbol}, sizeof( ${filename_symbol}) - 1 } },\n" + ) + endforeach() + + string(APPEND embed_CPP_text + "\n" + "const embeddedFileMap_t FileMap\n{\n" + "${embed_map_text}" + "};\n" + "}" + ) + + string(APPEND embed_H_text + "extern const embeddedFileMap_t FileMap;\n" + "};\n" + ) + + foreach(kind CPP H) + set(embed_file "${DAEMON_GENERATED_DIR}/${embed_${kind}_file}") + file(GENERATE OUTPUT "${embed_file}" CONTENT "${embed_${kind}_text}") + endforeach() +endmacro() diff --git a/cmake/EmbedText.cmake b/cmake/EmbedText.cmake deleted file mode 100644 index 43b9ffab4b..0000000000 --- a/cmake/EmbedText.cmake +++ /dev/null @@ -1,8 +0,0 @@ -# Converts a text file into a C-language char array definition. -# For use in CMake script mode (cmake -P). -# Required definitions on command line: INPUT_FILE, OUTPUT_FILE, VARIABLE_NAME - -# Inspired by https://stackoverflow.com/questions/11813271/embed-resources-eg-shader-code-images-into-executable-library-with-cmake/27206982#27206982 -file(READ ${INPUT_FILE} contents HEX) -string(REGEX REPLACE "(0d)?(..)" "0x\\2," contents ${contents}) # Strip \r for consistency -file(WRITE ${OUTPUT_FILE} "const unsigned char ${VARIABLE_NAME}[] = {${contents}};\n") diff --git a/src.cmake b/src.cmake index 20305a0ebb..7430a577b9 100644 --- a/src.cmake +++ b/src.cmake @@ -86,68 +86,68 @@ else() include (${ENGINE_DIR}/renderer/src.cmake) endif() -set(GLSLSOURCELIST +set(GLSL_EMBED_DIR "${ENGINE_DIR}/renderer/glsl_source") +set(GLSL_EMBED_LIST # Common shader libraries - ${ENGINE_DIR}/renderer/glsl_source/common.glsl - ${ENGINE_DIR}/renderer/glsl_source/common_cp.glsl - ${ENGINE_DIR}/renderer/glsl_source/fogEquation_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/shaderProfiler_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/shaderProfiler_fp.glsl - + common.glsl + common_cp.glsl + fogEquation_fp.glsl + shaderProfiler_vp.glsl + shaderProfiler_fp.glsl # Material system shaders - ${ENGINE_DIR}/renderer/glsl_source/material_cp.glsl - ${ENGINE_DIR}/renderer/glsl_source/material_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/material_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/clearSurfaces_cp.glsl - ${ENGINE_DIR}/renderer/glsl_source/cull_cp.glsl - ${ENGINE_DIR}/renderer/glsl_source/depthReduction_cp.glsl - ${ENGINE_DIR}/renderer/glsl_source/processSurfaces_cp.glsl + material_cp.glsl + material_vp.glsl + material_fp.glsl + clearSurfaces_cp.glsl + cull_cp.glsl + depthReduction_cp.glsl + processSurfaces_cp.glsl # Screen-space shaders - ${ENGINE_DIR}/renderer/glsl_source/screenSpace_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/blur_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/cameraEffects_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/contrast_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/fogGlobal_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/fxaa_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/fxaa3_11_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/motionblur_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/ssao_fp.glsl + screenSpace_vp.glsl + blur_fp.glsl + cameraEffects_fp.glsl + contrast_fp.glsl + fogGlobal_fp.glsl + fxaa_fp.glsl + fxaa3_11_fp.glsl + motionblur_fp.glsl + ssao_fp.glsl # Lighting shaders - ${ENGINE_DIR}/renderer/glsl_source/depthtile1_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/depthtile1_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/depthtile2_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/lighttile_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/lighttile_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/computeLight_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/reliefMapping_fp.glsl + depthtile1_vp.glsl + depthtile1_fp.glsl + depthtile2_fp.glsl + lighttile_vp.glsl + lighttile_fp.glsl + computeLight_fp.glsl + reliefMapping_fp.glsl # Common vertex shader libraries - ${ENGINE_DIR}/renderer/glsl_source/deformVertexes_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/vertexAnimation_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/vertexSimple_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/vertexSkinning_vp.glsl + deformVertexes_vp.glsl + vertexAnimation_vp.glsl + vertexSimple_vp.glsl + vertexSkinning_vp.glsl # Regular shaders - ${ENGINE_DIR}/renderer/glsl_source/fogQuake3_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/fogQuake3_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/generic_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/generic_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/heatHaze_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/heatHaze_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/lightMapping_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/lightMapping_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/liquid_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/liquid_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/portal_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/portal_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/reflection_CB_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/reflection_CB_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/screen_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/screen_fp.glsl - ${ENGINE_DIR}/renderer/glsl_source/skybox_vp.glsl - ${ENGINE_DIR}/renderer/glsl_source/skybox_fp.glsl + fogQuake3_vp.glsl + fogQuake3_fp.glsl + generic_vp.glsl + generic_fp.glsl + heatHaze_vp.glsl + heatHaze_fp.glsl + lightMapping_vp.glsl + lightMapping_fp.glsl + liquid_vp.glsl + liquid_fp.glsl + portal_vp.glsl + portal_fp.glsl + reflection_CB_vp.glsl + reflection_CB_fp.glsl + screen_vp.glsl + screen_fp.glsl + skybox_vp.glsl + skybox_fp.glsl ) set(SERVERLIST diff --git a/src/common/Common.h b/src/common/Common.h index 4fedbd6844..bc7d7de12a 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -48,6 +48,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Color.h" #include "Serialize.h" #include "DisjointSets.h" +#include "EmbeddedFile.h" using Math::Vec2; using Math::Vec3; diff --git a/src/common/EmbeddedFile.h b/src/common/EmbeddedFile.h new file mode 100644 index 0000000000..142995c941 --- /dev/null +++ b/src/common/EmbeddedFile.h @@ -0,0 +1,7 @@ +struct embeddedFileMapEntry_t +{ + const unsigned char* data; + size_t size; +}; + +using embeddedFileMap_t = std::unordered_map; diff --git a/src/engine/renderer/gl_shader.cpp b/src/engine/renderer/gl_shader.cpp index cc6bc46432..ef4d07b448 100644 --- a/src/engine/renderer/gl_shader.cpp +++ b/src/engine/renderer/gl_shader.cpp @@ -24,6 +24,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include "gl_shader.h" #include "Material.h" +#include "DaemonEmbeddedFiles/EngineShaders.h" // We currently write GLBinaryHeader to a file and memcpy all over it. // Make sure it's a pod, so we don't put a std::string in it or something @@ -41,7 +42,6 @@ static Cvar::Cvar r_logUnmarkedGLSLBuilds( "r_logUnmarkedGLSLBuilds", "Log building information for GLSL shaders that are built after the map is loaded", Cvar::NONE, true ); -extern const std::unordered_map shadermap; // shaderKind's value will be determined later based on command line setting or absence of. ShaderKind shaderKind = ShaderKind::Unknown; @@ -92,9 +92,9 @@ namespace // Implementation details const char* GetInternalShader(Str::StringRef filename) { - auto it = shadermap.find(filename); - if (it != shadermap.end()) - return it->second.c_str(); + auto it = EngineShaders::FileMap.find(filename); + if (it != EngineShaders::FileMap.end()) + return (const char*) it->second.data; return nullptr; } diff --git a/src/engine/renderer/src.cmake b/src/engine/renderer/src.cmake index ff85e9872a..98ef800b31 100644 --- a/src/engine/renderer/src.cmake +++ b/src/engine/renderer/src.cmake @@ -1,6 +1,5 @@ set(RENDERERLIST - ${DAEMON_GENERATED_DIR}/shaders.cpp ${ENGINE_DIR}/renderer/BufferBind.h ${ENGINE_DIR}/renderer/DetectGLVendors.cpp ${ENGINE_DIR}/renderer/DetectGLVendors.h