From 9af2cc36ebc409e27c7cd016a706eef4a795e164 Mon Sep 17 00:00:00 2001 From: auria Date: Sat, 5 Mar 2011 23:04:26 +0000 Subject: [PATCH] Add support for parallax mapping git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@7823 178a84e3-b1eb-0310-8ba1-8eac791a3b58 --- src/graphics/material.cpp | 16 +++++++++++++++- src/graphics/material.hpp | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/graphics/material.cpp b/src/graphics/material.cpp index 8db12a66e..1916e0fb1 100644 --- a/src/graphics/material.cpp +++ b/src/graphics/material.cpp @@ -93,6 +93,12 @@ Material::Material(const XMLNode *node, int index) { m_normal_map = true; } + else if (node->get("parallax-map", &m_normal_map_tex)) + { + m_parallax_map = true; + m_parallax_height = 0.2f; + node->get("parallax-height", &m_parallax_height); + } s=""; node->get("graphical-effect", &s ); @@ -217,6 +223,7 @@ void Material::init(unsigned int index) m_zipper_max_speed_increase = -1.0f; m_zipper_speed_gain = -1.0f; m_normal_map = false; + m_parallax_map = false; for (int n=0; nsetTexture(1, irr_driver->getTexture(m_normal_map_tex)); - m->MaterialType = video::EMT_NORMAL_MAP_SOLID; // video::EMT_PARALLAX_MAP_SOLID + m->MaterialType = video::EMT_NORMAL_MAP_SOLID; + modes++; + } + if (m_parallax_map) + { + m->setTexture(1, irr_driver->getTexture(m_normal_map_tex)); + m->MaterialType = video::EMT_PARALLAX_MAP_SOLID; + m->MaterialTypeParam = m_parallax_height; modes++; } diff --git a/src/graphics/material.hpp b/src/graphics/material.hpp index f4f6f3d69..a36880e6b 100644 --- a/src/graphics/material.hpp +++ b/src/graphics/material.hpp @@ -85,6 +85,9 @@ private: bool m_normal_map; std::string m_normal_map_tex; + bool m_parallax_map; + float m_parallax_height; + /** Texture clamp bitmask */ unsigned int m_clamp_tex; bool m_lighting;