]> git.lizzy.rs Git - minetest.git/blobdiff - src/shader.cpp
shader.cpp: don't test twice if shader programs are present
[minetest.git] / src / shader.cpp
index cbde9295e587d4ad918cd2826e2350039605cc2d..138ad2aacb5e5e224883adce928e3ff09ca9c025 100644 (file)
@@ -367,7 +367,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());
@@ -397,7 +397,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=\""<<name<<"\""<<std::endl;*/
@@ -456,7 +456,7 @@ u32 ShaderSource::getShaderIdDirect(const std::string &name,
        /*
                Calling only allowed from main thread
        */
-       if(get_current_thread_id() != m_main_thread){
+       if (!thr_is_current_thread(m_main_thread)) {
                errorstream<<"ShaderSource::getShaderIdDirect() "
                                "called not from main thread"<<std::endl;
                return 0;
@@ -504,7 +504,7 @@ void ShaderSource::insertSourceShader(const std::string &name_of_shader,
                        "name_of_shader=\""<<name_of_shader<<"\", "
                        "filename=\""<<filename<<"\""<<std::endl;*/
 
-       sanity_check(get_current_thread_id() == m_main_thread);
+       sanity_check(thr_is_current_thread(m_main_thread));
 
        m_sourcecache.insert(name_of_shader, filename, program, true);
 }
@@ -764,22 +764,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()) {
+               pixel_program = shaders_header + pixel_program;
                vertex_program_ptr = vertex_program.c_str();
-       if(pixel_program != "")
+       }
+       if (!pixel_program.empty()) {
+               vertex_program = shaders_header + vertex_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 "<<name<<std::endl;