diff --git a/src/graphics/lod_node.cpp b/src/graphics/lod_node.cpp index b9b048895..2fc971525 100644 --- a/src/graphics/lod_node.cpp +++ b/src/graphics/lod_node.cpp @@ -20,8 +20,6 @@ #include "graphics/central_settings.hpp" #include "graphics/irr_driver.hpp" #include "graphics/lod_node.hpp" -#include "graphics/material_manager.hpp" -#include "graphics/material.hpp" #include "config/user_config.hpp" #include "karts/abstract_kart.hpp" @@ -196,19 +194,6 @@ void LODNode::OnRegisterSceneNode() assert(node != NULL); mesh = node->getMesh(); } - - for (unsigned int n=0; ngetMeshBufferCount(); n++) - { - scene::IMeshBuffer* mb = mesh->getMeshBuffer(n); - video::ITexture* t = mb->getMaterial().getTexture(0); - if (t == NULL) continue; - - Material* m = material_manager->getMaterialFor(t, mb); - if (m != NULL) - { - m->onMadeVisible(mb); - } - } } else if (m_previous_visibility == WAS_SHOWN && !shown) { @@ -228,17 +213,6 @@ void LODNode::OnRegisterSceneNode() mesh = node->getMesh(); } - for (unsigned int n=0; ngetMeshBufferCount(); n++) - { - scene::IMeshBuffer* mb = mesh->getMeshBuffer(n); - video::ITexture* t = mb->getMaterial().getTexture(0); - if (t == NULL) continue; - Material* m = material_manager->getMaterialFor(t, mb); - if (m != NULL) - { - m->onHidden(mb); - } - } } else if (m_previous_visibility == FIRST_PASS && !shown) { @@ -257,18 +231,6 @@ void LODNode::OnRegisterSceneNode() assert(node != NULL); mesh = node->getMesh(); } - - for (unsigned int n=0; ngetMeshBufferCount(); n++) - { - scene::IMeshBuffer* mb = mesh->getMeshBuffer(n); - video::ITexture* t = mb->getMaterial().getTexture(0); - if(!t) continue; - Material* m = material_manager->getMaterialFor(t, mb); - if (m != NULL) - { - m->isInitiallyHidden(mb); - } - } } } diff --git a/src/graphics/material.cpp b/src/graphics/material.cpp index b8624d486..62294320d 100644 --- a/src/graphics/material.cpp +++ b/src/graphics/material.cpp @@ -154,12 +154,9 @@ Material::Material(const XMLNode *node, bool deprecated) node->get("max-speed", &m_max_speed_fraction ); node->get("slowdown-time", &m_slowdown_time ); - node->get("backface-culling", &m_backface_culling ); - node->get("disable-z-write", &m_disable_z_write ); node->get("colorizable", &m_colorizable ); node->get("colorization-factor", &m_colorization_factor); node->get("hue-settings", &m_hue_settings ); - node->get("fog", &m_fog ); node->get("mask", &m_mask ); node->get("colorization-mask", &m_colorization_mask ); @@ -451,12 +448,6 @@ Material::Material(const XMLNode *node, bool deprecated) texfname.make_lower(); m_texname = texfname.c_str(); - if (m_disable_z_write && m_shader_type != SHADERTYPE_ALPHA_BLEND && m_shader_type != SHADERTYPE_ADDITIVE) - { - Log::debug("material", "Disabling writes to z buffer only makes sense when compositing is blending or additive (for %s)", m_texname.c_str()); - m_disable_z_write = false; - } - // Terrain-specifc sound effect const unsigned int children_count = node->getNumNodes(); for (unsigned int i=0; isetFlag(video::EMF_BACK_FACE_CULLING, false); - + // Default solid + m->MaterialType = video::EMT_SOLID; if (race_manager->getReverseTrack() && m_mirror_axis_when_reverse != ' ') { @@ -900,20 +886,18 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m } } // reverse track and texture needs mirroring - if (m_shader_type == SHADERTYPE_SOLID_UNLIT) + if (m_shader_name == "unlit") { m->AmbientColor = video::SColor(255, 255, 255, 255); m->DiffuseColor = video::SColor(255, 255, 255, 255); m->EmissiveColor = video::SColor(255, 255, 255, 255); m->SpecularColor = video::SColor(255, 255, 255, 255); } - - if (m_shader_type == SHADERTYPE_ALPHA_TEST) + else if (m_shader_name == "alphatest") { m->MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; } - - if (m_shader_type == SHADERTYPE_ALPHA_BLEND) + else if (m_shader_name == "alphablend") { // EMT_TRANSPARENT_ALPHA_CHANNEL doesn't include vertex color alpha into // account, which messes up fading in/out effects. So we use the more @@ -925,8 +909,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m video::EMFN_MODULATE_1X, video::EAS_TEXTURE | video::EAS_VERTEX_COLOR); } - - if (m_shader_type == SHADERTYPE_ADDITIVE) + else if (m_shader_name == "additive") { // EMT_TRANSPARENT_ADD_COLOR doesn't include vertex color alpha into // account, which messes up fading in/out effects. So we use the @@ -938,31 +921,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m video::EAS_TEXTURE | video::EAS_VERTEX_COLOR); } - - if (m_shader_type == SHADERTYPE_SPHERE_MAP) - { - m->MaterialType = video::EMT_SPHERE_MAP; - } - - if (m_shader_type == SHADERTYPE_SPLATTING) - { - m->MaterialType = video::EMT_SOLID; - } - - - // Modify lightmap materials so that vertex colors are taken into account. - // But disable lighting because we assume all lighting is already part - // of the lightmap - if (m->MaterialType == video::EMT_LIGHTMAP) - { - m->MaterialType = video::EMT_LIGHTMAP_LIGHTING; - m->AmbientColor = video::SColor(255, 255, 255, 255); - m->DiffuseColor = video::SColor(255, 255, 255, 255); - m->EmissiveColor = video::SColor(255, 255, 255, 255); - m->SpecularColor = video::SColor(255, 255, 255, 255); - } - - if (m_shader_type == SHADERTYPE_VEGETATION) + else if (m_shader_name == "grass") { m->MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; @@ -979,7 +938,7 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m #endif } - if (m_disable_z_write) + if (m_shader_name == "alphablend" || m_shader_name == "additive") { m->ZWriteEnable = false; } @@ -1039,66 +998,3 @@ void Material::setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* m #endif } // setMaterialProperties - -//----------------------------------------------------------------------------- - -void Material::adjustForFog(scene::ISceneNode* parent, video::SMaterial *m, - bool use_fog) const -{ -#ifndef SERVER_ONLY - if (CVS->isGLSL()) - { - // to disable fog in the new pipeline, we slightly abuse the steps : - // moving an object into the transparent pass will make it rendered - // above fog and thus unaffected by it - if (use_fog && !m_fog && m_shader_type != SHADERTYPE_ALPHA_BLEND && m_shader_type != SHADERTYPE_ADDITIVE) - { - //m->ZWriteEnable = true; - //m->MaterialType = video::EMT_ONETEXTURE_BLEND; - //m->MaterialTypeParam = - // pack_textureBlendFunc(video::EBF_SRC_ALPHA, - // video::EBF_ONE_MINUS_SRC_ALPHA, - // video::EMFN_MODULATE_1X, - // video::EAS_TEXTURE | video::EAS_VERTEX_COLOR); - } - } - else - { - m->setFlag(video::EMF_FOG_ENABLE, m_fog && use_fog); - - if (parent != NULL) - parent->setMaterialFlag(video::EMF_FOG_ENABLE, m_fog && use_fog); - } -#endif -} // adjustForFog - -//----------------------------------------------------------------------------- - -/** Callback from LOD nodes to create some effects */ -void Material::onMadeVisible(scene::IMeshBuffer* who) -{ -#ifndef SERVER_ONLY - if (!CVS->isGLSL()) return; -#endif -} - -//----------------------------------------------------------------------------- - -/** Callback from LOD nodes to create some effects */ -void Material::onHidden(scene::IMeshBuffer* who) -{ -#ifndef SERVER_ONLY - if (!CVS->isGLSL()) return; -#endif -} - -//----------------------------------------------------------------------------- - -void Material::isInitiallyHidden(scene::IMeshBuffer* who) -{ -#ifndef SERVER_ONLY - if (!CVS->isGLSL()) return; -#endif -} - -//----------------------------------------------------------------------------- diff --git a/src/graphics/material.hpp b/src/graphics/material.hpp index 6c05be474..5cce6c77e 100644 --- a/src/graphics/material.hpp +++ b/src/graphics/material.hpp @@ -135,14 +135,6 @@ private: * plants that a kart can just drive through. */ bool m_ignore; - bool m_fog; - - /** True if backface culliing should be enabled. */ - bool m_backface_culling; - - /** Set to true to disable writing to the Z buffer. Usually to be used with alpha blending */ - bool m_disable_z_write; - /** True if the material shouldn't be "slippy" at an angle */ bool m_high_tire_adhesion; @@ -250,11 +242,6 @@ public: void setSFXSpeed(SFXBase *sfx, float speed, bool should_be_paused) const; void setMaterialProperties(video::SMaterial *m, scene::IMeshBuffer* mb); - void adjustForFog(scene::ISceneNode* parent, video::SMaterial *m, - bool use_fog) const; - void onMadeVisible(scene::IMeshBuffer* who); - void onHidden(scene::IMeshBuffer* who); - void isInitiallyHidden(scene::IMeshBuffer* who); /** Returns the ITexture associated with this material. */ video::ITexture *getTexture(bool srgb = true, bool premul_alpha = false); @@ -334,11 +321,6 @@ public: /** Returns the name of a special sfx to play while a kart is on this * terrain. The string will be "" if no special sfx exists. */ const std::string &getSFXName() const { return m_sfx_name; } - - // ------------------------------------------------------------------------ - /** Returns if fog is enabled. */ - bool isFogEnabled() const { return m_fog; } - // ------------------------------------------------------------------------ /** \brief Get the kind of particles that are to be used on this material, * in the given conditions. @@ -397,8 +379,6 @@ public: const std::string& getUVTwoTexture() const { return m_uv_two_tex; } // ------------------------------------------------------------------------ - bool backFaceCulling() const { return m_backface_culling; } - // ------------------------------------------------------------------------ bool use2UV() const { return !m_uv_two_tex.empty(); } // ------------------------------------------------------------------------ const std::string& getSamplerPath(unsigned layer) const diff --git a/src/graphics/material_manager.cpp b/src/graphics/material_manager.cpp index 73f4c09cd..04f5546fb 100644 --- a/src/graphics/material_manager.cpp +++ b/src/graphics/material_manager.cpp @@ -220,28 +220,7 @@ Material* MaterialManager::getDefaultSPMaterial(const std::string& shader_name, return m; } // getDefaultSPMaterial - //----------------------------------------------------------------------------- - -void MaterialManager::adjustForFog(video::ITexture* t, - scene::IMeshBuffer *mb, - scene::ISceneNode* parent, - bool use_fog) const -{ - const std::string image = StringUtils::getBasename(core::stringc(t->getName()).c_str()); - // Search backward so that temporary (track) textures are found first - for(int i = (int)m_materials.size()-1; i>=0; i-- ) - { - if (m_materials[i]->getTexFname()==image) - { - m_materials[i]->adjustForFog(parent, &(mb->getMaterial()), use_fog); - return; - } - } // for i -} // adjustForFog - -//----------------------------------------------------------------------------- - void MaterialManager::setAllUntexturedMaterialFlags(scene::IMeshBuffer *mb) { irr::video::SMaterial& material = mb->getMaterial(); @@ -257,6 +236,7 @@ void MaterialManager::setAllUntexturedMaterialFlags(scene::IMeshBuffer *mb) } } + //----------------------------------------------------------------------------- int MaterialManager::addEntity(Material *m) { diff --git a/src/graphics/material_manager.hpp b/src/graphics/material_manager.hpp index 94dfb82dd..fbf8f6e6d 100644 --- a/src/graphics/material_manager.hpp +++ b/src/graphics/material_manager.hpp @@ -66,11 +66,6 @@ public: const std::string& def_shader_name = "solid"); void setAllMaterialFlags(video::ITexture* t, scene::IMeshBuffer *mb); - void adjustForFog(video::ITexture* t, - scene::IMeshBuffer *mb, - scene::ISceneNode* parent, - bool use_fog) const; - void setAllUntexturedMaterialFlags(scene::IMeshBuffer *mb); int addEntity (Material *m); diff --git a/src/items/item.cpp b/src/items/item.cpp index 71770d699..8d1688a31 100644 --- a/src/items/item.cpp +++ b/src/items/item.cpp @@ -78,7 +78,6 @@ Item::Item(ItemType type, const Vec3& xyz, const Vec3& normal, debug_name += m_type; m_node->setName(debug_name.c_str()); #endif - Track::getCurrentTrack()->adjustForFog(m_node); m_node->setAutomaticCulling(scene::EAC_FRUSTUM_BOX); m_node->setPosition(xyz.toIrrVector()); Vec3 hpr; @@ -192,8 +191,6 @@ void Item::switchTo(ItemType type, scene::IMesh *mesh, scene::IMesh *lowmesh) m_original_type = m_type; setMesh(mesh, lowmesh); setType(type); - - Track::getCurrentTrack()->adjustForFog(m_node); } // switchTo //----------------------------------------------------------------------------- @@ -214,7 +211,6 @@ void Item::switchBack() setType(m_original_type); m_original_type = ITEM_NONE; - Track::getCurrentTrack()->adjustForFog(m_node); Vec3 hpr; hpr.setHPR(m_original_rotation); m_node->setRotation(hpr.toIrrHPR()); diff --git a/src/modes/three_strikes_battle.cpp b/src/modes/three_strikes_battle.cpp index 5a5d3dd53..e3f74d886 100644 --- a/src/modes/three_strikes_battle.cpp +++ b/src/modes/three_strikes_battle.cpp @@ -730,7 +730,6 @@ void ThreeStrikesBattle::loadCustomModels() m_karts.push_back(sta); race_manager->addSpareTireKart(sta_list[i]); - Track::getCurrentTrack()->adjustForFog(sta->getNode()); // Copy STA pointer to m_spare_tire_karts array, allowing them // to respawn easily diff --git a/src/modes/world.cpp b/src/modes/world.cpp index 1781cab81..6e09b5ab8 100644 --- a/src/modes/world.cpp +++ b/src/modes/world.cpp @@ -215,7 +215,6 @@ void World::init() race_manager->getKartType(i), race_manager->getPlayerDifficulty(i)); m_karts.push_back(newkart); - track->adjustForFog(newkart->getNode()); } // for i diff --git a/src/tracks/track.cpp b/src/tracks/track.cpp index ef999d9f9..6dca271bb 100644 --- a/src/tracks/track.cpp +++ b/src/tracks/track.cpp @@ -1182,7 +1182,6 @@ bool Track::loadMainTrack(const XMLNode &root) merged_mesh->finalize(); #ifndef SERVER_ONLY tangent_mesh = merged_mesh; - adjustForFog(tangent_mesh, NULL); #else tangent_mesh = merged_mesh; #endif @@ -1932,14 +1931,6 @@ void Track::loadTrackModel(bool reverse_track, unsigned int mode_id) } #endif - // Enable for for all track nodes if fog is used - const unsigned int count = (int)m_all_nodes.size(); - for(unsigned int i=0; ienableFog(m_use_fog); - // Sky dome and boxes support // -------------------------- irr_driver->suppressSkyBox(); @@ -2231,75 +2222,6 @@ void Track::loadObjects(const XMLNode* root, const std::string& path, ModelDefin } // for igetNumNodes() } -//----------------------------------------------------------------------------- -/** Changes all materials of the given mesh to use the current fog - * setting (true/false). - * \param node Scene node for which fog should be en/dis-abled. - */ -void Track::adjustForFog(scene::IMesh* mesh, scene::ISceneNode* parent_scene_node) -{ -#ifndef SERVER_ONLY - if (CVS->isGLSL()) - { - return; - } -#endif - unsigned int n = mesh->getMeshBufferCount(); - for (unsigned int i=0; igetMeshBuffer(i); - video::SMaterial &irr_material=mb->getMaterial(); - for (unsigned int j=0; jadjustForFog(t, mb, parent_scene_node, m_use_fog); - - } // for jsetAllMaterialFlags(scene::IMesh *mesh) - - - if (node->getType() == scene::ESNT_OCTREE) - { - // do nothing - } - else if (node->getType() == scene::ESNT_MESH) - { - scene::IMeshSceneNode* mnode = (scene::IMeshSceneNode*)node; - scene::IMesh* mesh = mnode->getMesh(); - adjustForFog(mesh, mnode); - } - else if (node->getType() == scene::ESNT_ANIMATED_MESH) - { - scene::IAnimatedMeshSceneNode* mnode = (scene::IAnimatedMeshSceneNode*)node; - scene::IMesh* mesh = mnode->getMesh(); - adjustForFog(mesh, mnode); - } - else - { - node->setMaterialFlag(video::EMF_FOG_ENABLE, m_use_fog); - } - - if (node->getType() == scene::ESNT_LOD_NODE) - { - std::vector& subnodes = ((LODNode*)node)->getAllNodes(); - for (unsigned int n=0; nsetMaterialFlag(video::EMF_FOG_ENABLE, m_use_fog); - } - } -} // adjustForFog - //----------------------------------------------------------------------------- /** Handles a sky-dome or sky-box. It takes the xml node with the * corresponding data for the sky and stores the corresponding data in diff --git a/src/tracks/track.hpp b/src/tracks/track.hpp index f050f5959..47bd932e2 100644 --- a/src/tracks/track.hpp +++ b/src/tracks/track.hpp @@ -420,9 +420,6 @@ public: void createPhysicsModel(unsigned int main_track_count); void update(float dt); void reset(); - void adjustForFog(scene::ISceneNode *node); - void adjustForFog(scene::IMesh* mesh, - scene::ISceneNode* parent_scene_node); void itemCommand(const XMLNode *node); core::stringw getName() const; core::stringw getSortName() const; diff --git a/src/tracks/track_object_manager.cpp b/src/tracks/track_object_manager.cpp index 0ceb35273..ba8934b25 100644 --- a/src/tracks/track_object_manager.cpp +++ b/src/tracks/track_object_manager.cpp @@ -210,73 +210,6 @@ void TrackObjectManager::castRay(const btVector3 &from, } // castRay // ---------------------------------------------------------------------------- -/** Enables or disables fog for a given scene node. - * \param node The node to adjust. - * \param enable True if fog is enabled, otherwise fog is disabled. - */ -void adjustForFog(scene::ISceneNode *node, bool enable) -{ - if (node->getType() == scene::ESNT_MESH || - node->getType() == scene::ESNT_OCTREE || - node->getType() == scene::ESNT_ANIMATED_MESH) - { - scene::IMesh* mesh; - if (node->getType() == scene::ESNT_ANIMATED_MESH) { - mesh = ((scene::IAnimatedMeshSceneNode*)node)->getMesh(); - } - else { - mesh = ((scene::IMeshSceneNode*)node)->getMesh(); - } - - unsigned int n = mesh->getMeshBufferCount(); - for (unsigned int i=0; igetMeshBuffer(i); - video::SMaterial &irr_material=mb->getMaterial(); - for (unsigned int j=0; jadjustForFog(t, mb, node, enable); - - } // for jsetMaterialFlag(video::EMF_FOG_ENABLE, enable); - } - - if (node->getType() == scene::ESNT_LOD_NODE) - { - std::vector& - subnodes = ((LODNode*)node)->getAllNodes(); - for (unsigned int n=0; ngetPresentation(); - if (meshPresentation!= NULL) - { - adjustForFog(meshPresentation->getNode(), enable); - } - } -} // enableFog - -// ---------------------------------------------------------------------------- - void TrackObjectManager::insertObject(TrackObject* object) { m_all_objects.push_back(object); @@ -292,7 +225,3 @@ void TrackObjectManager::removeObject(TrackObject* obj) m_all_objects.remove(obj); delete obj; } // removeObject - -// ---------------------------------------------------------------------------- - - diff --git a/src/tracks/track_object_manager.hpp b/src/tracks/track_object_manager.hpp index 24cc17557..d66a629cf 100644 --- a/src/tracks/track_object_manager.hpp +++ b/src/tracks/track_object_manager.hpp @@ -67,9 +67,6 @@ public: const Material **material, btVector3 *normal = NULL, bool interpolate_normal = false) const; - /** Enable or disable fog on objects */ - void enableFog(bool enable); - void insertObject(TrackObject* object); void removeObject(TrackObject* who);