X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fshader.cpp;h=e13ab8df30ef264282f2e823851a4c6fc16d2d5c;hb=21079cc8ebae0bf694c1903c07bf3e1517feab99;hp=a6d18e1bef374881e8334a9bd127e38475b555df;hpb=43fcfbfe05578d7471d40c8c087fd04e24b264b5;p=dragonfireclient.git diff --git a/src/shader.cpp b/src/shader.cpp index a6d18e1be..e13ab8df3 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -35,7 +35,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "EShaderTypes.h" #include "log.h" #include "gamedef.h" -#include "strfnd.h" // trim() #include "client/tile.h" /* @@ -328,7 +327,7 @@ class ShaderSource : public IWritableShaderSource, public IShaderConstantSetterR // The first position contains a dummy shader. std::vector m_shaderinfo_cache; // The former container is behind this mutex - JMutex m_shaderinfo_cache_mutex; + Mutex m_shaderinfo_cache_mutex; // Queued shader fetches (to be processed by the main thread) RequestQueue m_get_shader_queue; @@ -367,7 +366,7 @@ ShaderSource::ShaderSource(IrrlichtDevice *device): m_shader_callback = new ShaderCallback(this, "default"); - m_main_thread = get_current_thread_id(); + m_main_thread = thr_get_current_thread_id(); // Add a dummy ShaderInfo as the first index, named "" m_shaderinfo_cache.push_back(ShaderInfo()); @@ -379,7 +378,7 @@ ShaderSource::ShaderSource(IrrlichtDevice *device): ShaderSource::~ShaderSource() { for (std::vector::iterator iter = m_global_setters.begin(); - iter != m_global_setters.end(); iter++) { + iter != m_global_setters.end(); ++iter) { delete *iter; } m_global_setters.clear(); @@ -397,7 +396,7 @@ u32 ShaderSource::getShader(const std::string &name, Get shader */ - if(get_current_thread_id() == m_main_thread){ + if (thr_is_current_thread(m_main_thread)) { return getShaderIdDirect(name, material_type, drawtype); } else { /*errorstream<<"getShader(): Queued: name=\""<= m_shaderinfo_cache.size()) return ShaderInfo(); @@ -504,14 +503,14 @@ void ShaderSource::insertSourceShader(const std::string &name_of_shader, "name_of_shader=\""<getBool("enable_bumpmapping") || g_settings->getBool("enable_parallax_occlusion")) - shaders_header += "#define USE_NORMALMAPS\n"; + shaders_header += "1\n"; + else + shaders_header += "0\n"; if (g_settings->getBool("enable_waving_water")){ shaders_header += "#define ENABLE_WAVING_WATER 1\n"; @@ -761,22 +763,25 @@ ShaderInfo generate_shader(std::string name, u8 material_type, u8 drawtype, else shaders_header += "0\n"; - if(pixel_program != "") - pixel_program = shaders_header + pixel_program; - if(vertex_program != "") - vertex_program = shaders_header + vertex_program; - if(geometry_program != "") - geometry_program = shaders_header + geometry_program; + if (g_settings->getBool("tone_mapping")) + shaders_header += "#define ENABLE_TONE_MAPPING\n"; + // Call addHighLevelShaderMaterial() or addShaderMaterial() const c8* vertex_program_ptr = 0; const c8* pixel_program_ptr = 0; const c8* geometry_program_ptr = 0; - if(vertex_program != "") + if (!vertex_program.empty()) { + vertex_program = shaders_header + vertex_program; vertex_program_ptr = vertex_program.c_str(); - if(pixel_program != "") + } + if (!pixel_program.empty()) { + pixel_program = shaders_header + pixel_program; pixel_program_ptr = pixel_program.c_str(); - if(geometry_program != "") + } + if (!geometry_program.empty()) { + geometry_program = shaders_header + geometry_program; geometry_program_ptr = geometry_program.c_str(); + } s32 shadermat = -1; if(is_highlevel){ infostream<<"Compiling high level shaders for "<