]> git.lizzy.rs Git - irrlicht.git/commitdiff
Remove more unused code (#87)
authorsfan5 <sfan5@live.de>
Wed, 29 Dec 2021 12:12:09 +0000 (13:12 +0100)
committerGitHub <noreply@github.com>
Wed, 29 Dec 2021 12:12:09 +0000 (13:12 +0100)
40 files changed:
include/CDynamicMeshBuffer.h [deleted file]
include/EMaterialTypes.h
include/ETerrainElements.h [deleted file]
include/IDynamicMeshBuffer.h [deleted file]
include/ISceneManager.h
include/IVideoDriver.h
include/SKeyMap.h [deleted file]
include/SMaterial.h
include/SSharedMeshBuffer.h [deleted file]
include/irrlicht.h
media/Shaders/COGLES2NormalMap.fsh [deleted file]
media/Shaders/COGLES2NormalMap.vsh [deleted file]
media/Shaders/COGLES2ParallaxMap.fsh [deleted file]
media/Shaders/COGLES2ParallaxMap.vsh [deleted file]
source/Irrlicht/CBlit.h
source/Irrlicht/CMakeLists.txt
source/Irrlicht/CNullDriver.cpp
source/Irrlicht/CNullDriver.h
source/Irrlicht/COBJMeshFileLoader.cpp
source/Irrlicht/COGLES2Driver.cpp
source/Irrlicht/COGLES2Driver.h
source/Irrlicht/COGLES2MaterialRenderer.cpp
source/Irrlicht/COGLES2NormalMapRenderer.cpp [deleted file]
source/Irrlicht/COGLES2NormalMapRenderer.h [deleted file]
source/Irrlicht/COGLES2ParallaxMapRenderer.cpp [deleted file]
source/Irrlicht/COGLES2ParallaxMapRenderer.h [deleted file]
source/Irrlicht/COGLESDriver.cpp
source/Irrlicht/COpenGLDriver.cpp
source/Irrlicht/COpenGLNormalMapRenderer.cpp [deleted file]
source/Irrlicht/COpenGLNormalMapRenderer.h [deleted file]
source/Irrlicht/COpenGLParallaxMapRenderer.cpp [deleted file]
source/Irrlicht/COpenGLParallaxMapRenderer.h [deleted file]
source/Irrlicht/COpenGLSLMaterialRenderer.cpp
source/Irrlicht/COpenGLShaderMaterialRenderer.cpp
source/Irrlicht/CSoftwareTexture2.cpp [deleted file]
source/Irrlicht/CSoftwareTexture2.h [deleted file]
source/Irrlicht/S4DVertex.h [deleted file]
source/Irrlicht/SoftwareDriver2_compile_config.h
source/Irrlicht/SoftwareDriver2_helper.h
source/Irrlicht/irrMathFastCompat.h [deleted file]

diff --git a/include/CDynamicMeshBuffer.h b/include/CDynamicMeshBuffer.h
deleted file mode 100644 (file)
index 4424fc8..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (C) 2008-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_DYNAMIC_MESHBUFFER_H_INCLUDED__\r
-#define __C_DYNAMIC_MESHBUFFER_H_INCLUDED__\r
-\r
-#include "IDynamicMeshBuffer.h"\r
-\r
-#include "CVertexBuffer.h"\r
-#include "CIndexBuffer.h"\r
-\r
-namespace irr\r
-{\r
-namespace scene\r
-{\r
-\r
-       class CDynamicMeshBuffer: public IDynamicMeshBuffer\r
-       {\r
-       public:\r
-               //! constructor\r
-               CDynamicMeshBuffer(video::E_VERTEX_TYPE vertexType, video::E_INDEX_TYPE indexType)\r
-               : PrimitiveType(EPT_TRIANGLES)\r
-               {\r
-                       VertexBuffer=new CVertexBuffer(vertexType);\r
-                       IndexBuffer=new CIndexBuffer(indexType);\r
-               }\r
-\r
-               //! destructor\r
-               virtual ~CDynamicMeshBuffer()\r
-               {\r
-                       if (VertexBuffer)\r
-                               VertexBuffer->drop();\r
-                       if (IndexBuffer)\r
-                               IndexBuffer->drop();\r
-               }\r
-\r
-               virtual IVertexBuffer& getVertexBuffer() const _IRR_OVERRIDE_\r
-               {\r
-                       return *VertexBuffer;\r
-               }\r
-\r
-               virtual IIndexBuffer& getIndexBuffer() const _IRR_OVERRIDE_\r
-               {\r
-                       return *IndexBuffer;\r
-               }\r
-\r
-               virtual void setVertexBuffer(IVertexBuffer *newVertexBuffer) _IRR_OVERRIDE_\r
-               {\r
-                       if (newVertexBuffer)\r
-                               newVertexBuffer->grab();\r
-                       if (VertexBuffer)\r
-                               VertexBuffer->drop();\r
-\r
-                       VertexBuffer=newVertexBuffer;\r
-               }\r
-\r
-               virtual void setIndexBuffer(IIndexBuffer *newIndexBuffer) _IRR_OVERRIDE_\r
-               {\r
-                       if (newIndexBuffer)\r
-                               newIndexBuffer->grab();\r
-                       if (IndexBuffer)\r
-                               IndexBuffer->drop();\r
-\r
-                       IndexBuffer=newIndexBuffer;\r
-               }\r
-\r
-               //! Get Material of this buffer.\r
-               virtual const video::SMaterial& getMaterial() const _IRR_OVERRIDE_\r
-               {\r
-                       return Material;\r
-               }\r
-\r
-               //! Get Material of this buffer.\r
-               virtual video::SMaterial& getMaterial() _IRR_OVERRIDE_\r
-               {\r
-                       return Material;\r
-               }\r
-\r
-               //! Get bounding box\r
-               virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_\r
-               {\r
-                       return BoundingBox;\r
-               }\r
-\r
-               //! Set bounding box\r
-               virtual void setBoundingBox( const core::aabbox3df& box) _IRR_OVERRIDE_\r
-               {\r
-                       BoundingBox = box;\r
-               }\r
-\r
-               //! Recalculate bounding box\r
-               virtual void recalculateBoundingBox() _IRR_OVERRIDE_\r
-               {\r
-                       if (!getVertexBuffer().size())\r
-                               BoundingBox.reset(0,0,0);\r
-                       else\r
-                       {\r
-                               BoundingBox.reset(getVertexBuffer()[0].Pos);\r
-                               for (u32 i=1; i<getVertexBuffer().size(); ++i)\r
-                                       BoundingBox.addInternalPoint(getVertexBuffer()[i].Pos);\r
-                       }\r
-               }\r
-\r
-               //! Describe what kind of primitive geometry is used by the meshbuffer\r
-               virtual void setPrimitiveType(E_PRIMITIVE_TYPE type) _IRR_OVERRIDE_\r
-               {\r
-                       PrimitiveType = type;\r
-               }\r
-\r
-               //! Get the kind of primitive geometry which is used by the meshbuffer\r
-               virtual E_PRIMITIVE_TYPE getPrimitiveType() const _IRR_OVERRIDE_\r
-               {\r
-                       return PrimitiveType;\r
-               }\r
-\r
-               video::SMaterial Material;\r
-               core::aabbox3d<f32> BoundingBox;\r
-               //! Primitive type used for rendering (triangles, lines, ...)\r
-               E_PRIMITIVE_TYPE PrimitiveType;\r
-       private:\r
-               CDynamicMeshBuffer(const CDynamicMeshBuffer&); // = delete in c++11, prevent copying\r
-\r
-               IVertexBuffer *VertexBuffer;\r
-               IIndexBuffer *IndexBuffer;\r
-       };\r
-\r
-\r
-} // end namespace scene\r
-} // end namespace irr\r
-\r
-#endif\r
-\r
index cdbd4997cdc5e177a810935e830ca5f232bdbc76..fb8d6012232e8cc39d10da48ba60d8846e062b39 100644 (file)
@@ -121,71 +121,6 @@ namespace video
                texture which will not reflect can be set as second texture.*/\r
                EMT_TRANSPARENT_REFLECTION_2_LAYER,\r
 \r
-               //! A solid normal map renderer.\r
-               /** First texture is the color map, the second should be the\r
-               normal map. Note that you should use this material only when\r
-               drawing geometry consisting of vertices of type\r
-               S3DVertexTangents (EVT_TANGENTS). You can convert any mesh into\r
-               this format using IMeshManipulator::createMeshWithTangents()\r
-               (See SpecialFX2 Tutorial). This shader runs on vertex shader\r
-               1.1 and pixel shader 1.1 capable hardware and falls back to a\r
-               fixed function lighted material if this hardware is not\r
-               available. Only two lights are supported by this shader, if\r
-               there are more, the nearest two are chosen. */\r
-               EMT_NORMAL_MAP_SOLID,\r
-\r
-               //! A transparent normal map renderer.\r
-               /** First texture is the color map, the second should be the\r
-               normal map. Note that you should use this material only when\r
-               drawing geometry consisting of vertices of type\r
-               S3DVertexTangents (EVT_TANGENTS). You can convert any mesh into\r
-               this format using IMeshManipulator::createMeshWithTangents()\r
-               (See SpecialFX2 Tutorial). This shader runs on vertex shader\r
-               1.1 and pixel shader 1.1 capable hardware and falls back to a\r
-               fixed function lighted material if this hardware is not\r
-               available. Only two lights are supported by this shader, if\r
-               there are more, the nearest two are chosen. */\r
-               EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR,\r
-\r
-               //! A transparent (based on the vertex alpha value) normal map renderer.\r
-               /** First texture is the color map, the second should be the\r
-               normal map. Note that you should use this material only when\r
-               drawing geometry consisting of vertices of type\r
-               S3DVertexTangents (EVT_TANGENTS). You can convert any mesh into\r
-               this format using IMeshManipulator::createMeshWithTangents()\r
-               (See SpecialFX2 Tutorial). This shader runs on vertex shader\r
-               1.1 and pixel shader 1.1 capable hardware and falls back to a\r
-               fixed function lighted material if this hardware is not\r
-               available.  Only two lights are supported by this shader, if\r
-               there are more, the nearest two are chosen. */\r
-               EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA,\r
-\r
-               //! Just like EMT_NORMAL_MAP_SOLID, but uses parallax mapping.\r
-               /** Looks a lot more realistic. This only works when the\r
-               hardware supports at least vertex shader 1.1 and pixel shader\r
-               1.4. First texture is the color map, the second should be the\r
-               normal map. The normal map texture should contain the height\r
-               value in the alpha component. The\r
-               IVideoDriver::makeNormalMapTexture() method writes this value\r
-               automatically when creating normal maps from a heightmap when\r
-               using a 32 bit texture. The height scale of the material\r
-               (affecting the bumpiness) is being controlled by the\r
-               SMaterial::MaterialTypeParam member. If set to zero, the\r
-               default value (0.02f) will be applied. Otherwise the value set\r
-               in SMaterial::MaterialTypeParam is taken. This value depends on\r
-               with which scale the texture is mapped on the material. Too\r
-               high or low values of MaterialTypeParam can result in strange\r
-               artifacts. */\r
-               EMT_PARALLAX_MAP_SOLID,\r
-\r
-               //! A material like EMT_PARALLAX_MAP_SOLID, but transparent.\r
-               /** Using EMT_TRANSPARENT_ADD_COLOR as base material. */\r
-               EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR,\r
-\r
-               //! A material like EMT_PARALLAX_MAP_SOLID, but transparent.\r
-               /** Using EMT_TRANSPARENT_VERTEX_ALPHA as base material. */\r
-               EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA,\r
-\r
                //! BlendFunc = source * sourceFactor + dest * destFactor ( E_BLEND_FUNC )\r
                /** Using only first texture. Generic blending method. \r
                The blend function is set to SMaterial::MaterialTypeParam with \r
@@ -216,12 +151,6 @@ namespace video
                "trans_alphach_ref",\r
                "trans_vertex_alpha",\r
                "trans_reflection_2layer",\r
-               "normalmap_solid",\r
-               "normalmap_trans_add",\r
-               "normalmap_trans_vertexalpha",\r
-               "parallaxmap_solid",\r
-               "parallaxmap_trans_add",\r
-               "parallaxmap_trans_vertexalpha",\r
                "onetexture_blend",\r
                0\r
        };\r
diff --git a/include/ETerrainElements.h b/include/ETerrainElements.h
deleted file mode 100644 (file)
index 5bb48c0..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __E_TERRAIN_ELEMENTS_H__\r
-#define __E_TERRAIN_ELEMENTS_H__\r
-\r
-namespace irr\r
-{\r
-namespace scene\r
-{\r
-\r
-       //! enumeration for patch sizes specifying the size of patches in the TerrainSceneNode\r
-       enum E_TERRAIN_PATCH_SIZE\r
-       {\r
-               //! patch size of 9, at most, use 4 levels of detail with this patch size.\r
-               ETPS_9 = 9,\r
-\r
-               //! patch size of 17, at most, use 5 levels of detail with this patch size.\r
-               ETPS_17 = 17,\r
-\r
-               //! patch size of 33, at most, use 6 levels of detail with this patch size.\r
-               ETPS_33 = 33,\r
-\r
-               //! patch size of 65, at most, use 7 levels of detail with this patch size.\r
-               ETPS_65 = 65,\r
-\r
-               //! patch size of 129, at most, use 8 levels of detail with this patch size.\r
-               ETPS_129 = 129\r
-       };\r
-\r
-} // end namespace scene\r
-} // end namespace irr\r
-\r
-#endif\r
-\r
diff --git a/include/IDynamicMeshBuffer.h b/include/IDynamicMeshBuffer.h
deleted file mode 100644 (file)
index 7f9ee48..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright (C) 2008-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __I_DYNAMIC_MESH_BUFFER_H_INCLUDED__\r
-#define __I_DYNAMIC_MESH_BUFFER_H_INCLUDED__\r
-\r
-#include "IMeshBuffer.h"\r
-#include "IVertexBuffer.h"\r
-#include "IIndexBuffer.h"\r
-\r
-namespace irr\r
-{\r
-namespace scene\r
-{\r
-\r
-       /** a dynamic meshBuffer */\r
-       class IDynamicMeshBuffer : public IMeshBuffer\r
-       {\r
-       public:\r
-               virtual IVertexBuffer &getVertexBuffer() const =0;\r
-               virtual IIndexBuffer &getIndexBuffer() const =0;\r
-\r
-               virtual void setVertexBuffer(IVertexBuffer *vertexBuffer) =0;\r
-               virtual void setIndexBuffer(IIndexBuffer *indexBuffer) =0;\r
-\r
-               //! Get the material of this meshbuffer\r
-               /** \return Material of this buffer. */\r
-               virtual video::SMaterial& getMaterial() _IRR_OVERRIDE_ =0;\r
-\r
-               //! Get the material of this meshbuffer\r
-               /** \return Material of this buffer. */\r
-               virtual const video::SMaterial& getMaterial() const _IRR_OVERRIDE_ =0;\r
-\r
-               //! Get the axis aligned bounding box of this meshbuffer.\r
-               /** \return Axis aligned bounding box of this buffer. */\r
-               virtual const core::aabbox3df& getBoundingBox() const _IRR_OVERRIDE_ =0;\r
-\r
-               //! Set axis aligned bounding box\r
-               /** \param box User defined axis aligned bounding box to use\r
-               for this buffer. */\r
-               virtual void setBoundingBox(const core::aabbox3df& box) _IRR_OVERRIDE_ =0;\r
-\r
-               //! Recalculates the bounding box. Should be called if the mesh changed.\r
-               virtual void recalculateBoundingBox() _IRR_OVERRIDE_ =0;\r
-\r
-               //! Append the vertices and indices to the current buffer\r
-               /** Only works for compatible vertex types.\r
-               \param vertices Pointer to a vertex array.\r
-               \param numVertices Number of vertices in the array.\r
-               \param indices Pointer to index array.\r
-               \param numIndices Number of indices in array. */\r
-               virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices) _IRR_OVERRIDE_\r
-               {\r
-\r
-               }\r
-\r
-               //! Append the meshbuffer to the current buffer\r
-               /** Only works for compatible vertex types\r
-               \param other Buffer to append to this one. */\r
-               virtual void append(const IMeshBuffer* const other) _IRR_OVERRIDE_\r
-               {\r
-\r
-               }\r
-\r
-               // ------------------- To be removed? -------------------  //\r
-\r
-               //! get the current hardware mapping hint\r
-               virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer().getHardwareMappingHint();\r
-               }\r
-\r
-               //! get the current hardware mapping hint\r
-               virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const _IRR_OVERRIDE_\r
-               {\r
-                       return getIndexBuffer().getHardwareMappingHint();\r
-               }\r
-\r
-               //! set the hardware mapping hint, for driver\r
-               virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX ) _IRR_OVERRIDE_\r
-               {\r
-                       if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)\r
-                               getVertexBuffer().setHardwareMappingHint(NewMappingHint);\r
-                       if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)\r
-                               getIndexBuffer().setHardwareMappingHint(NewMappingHint);\r
-               }\r
-\r
-               //! flags the mesh as changed, reloads hardware buffers\r
-               virtual void setDirty(E_BUFFER_TYPE Buffer=EBT_VERTEX_AND_INDEX) _IRR_OVERRIDE_\r
-               {\r
-                       if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_VERTEX)\r
-                               getVertexBuffer().setDirty();\r
-                       if (Buffer==EBT_VERTEX_AND_INDEX || Buffer==EBT_INDEX)\r
-                               getIndexBuffer().setDirty();\r
-               }\r
-\r
-               virtual u32 getChangedID_Vertex() const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer().getChangedID();\r
-               }\r
-\r
-               virtual u32 getChangedID_Index() const _IRR_OVERRIDE_\r
-               {\r
-                       return getIndexBuffer().getChangedID();\r
-               }\r
-\r
-               // ------------------- Old interface -------------------  //\r
-\r
-               //! Get type of vertex data which is stored in this meshbuffer.\r
-               /** \return Vertex type of this buffer. */\r
-               virtual video::E_VERTEX_TYPE getVertexType() const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer().getType();\r
-               }\r
-\r
-               //! Get access to vertex data. The data is an array of vertices.\r
-               /** Which vertex type is used can be determined by getVertexType().\r
-               \return Pointer to array of vertices. */\r
-               virtual const void* getVertices() const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer().getData();\r
-               }\r
-\r
-               //! Get access to vertex data. The data is an array of vertices.\r
-               /** Which vertex type is used can be determined by getVertexType().\r
-               \return Pointer to array of vertices. */\r
-               virtual void* getVertices() _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer().getData();\r
-               }\r
-\r
-               //! Get amount of vertices in meshbuffer.\r
-               /** \return Number of vertices in this buffer. */\r
-               virtual u32 getVertexCount() const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer().size();\r
-               }\r
-\r
-               //! Get type of index data which is stored in this meshbuffer.\r
-               /** \return Index type of this buffer. */\r
-               virtual video::E_INDEX_TYPE getIndexType() const _IRR_OVERRIDE_\r
-               {\r
-                       return getIndexBuffer().getType();\r
-               }\r
-\r
-               //! Get access to indices.\r
-               /** \return Pointer to indices array. */\r
-               virtual const u16* getIndices() const _IRR_OVERRIDE_\r
-               {\r
-                       return (u16*)getIndexBuffer().getData();\r
-               }\r
-\r
-               //! Get access to indices.\r
-               /** \return Pointer to indices array. */\r
-               virtual u16* getIndices() _IRR_OVERRIDE_\r
-               {\r
-                       return (u16*)getIndexBuffer().getData();\r
-               }\r
-\r
-               //! Get amount of indices in this meshbuffer.\r
-               /** \return Number of indices in this buffer. */\r
-               virtual u32 getIndexCount() const _IRR_OVERRIDE_\r
-               { \r
-                       return getIndexBuffer().size();\r
-               }\r
-\r
-               //! returns position of vertex i\r
-               virtual const core::vector3df& getPosition(u32 i) const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer()[i].Pos;\r
-               }\r
-\r
-               //! returns position of vertex i\r
-               virtual core::vector3df& getPosition(u32 i) _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer()[i].Pos;\r
-               }\r
-\r
-               //! returns texture coords of vertex i\r
-               virtual const core::vector2df& getTCoords(u32 i) const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer()[i].TCoords;\r
-               }\r
-\r
-               //! returns texture coords of vertex i\r
-               virtual core::vector2df& getTCoords(u32 i) _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer()[i].TCoords;\r
-               }\r
-\r
-               //! returns normal of vertex i\r
-               virtual const core::vector3df& getNormal(u32 i) const _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer()[i].Normal;\r
-               }\r
-\r
-               //! returns normal of vertex i\r
-               virtual core::vector3df& getNormal(u32 i) _IRR_OVERRIDE_\r
-               {\r
-                       return getVertexBuffer()[i].Normal;\r
-               }\r
-       };\r
-\r
-\r
-} // end namespace scene\r
-} // end namespace irr\r
-\r
-#endif\r
-\r
-\r
index a7fe1901af6409b2c7d6c033c38f9a9f25c908d9..e3d6b4b430dbdc371f8d48e0df68048d07091730 100644 (file)
@@ -12,7 +12,6 @@
 #include "vector3d.h"\r
 #include "dimension2d.h"\r
 #include "SColor.h"\r
-#include "ETerrainElements.h"\r
 #include "ESceneNodeTypes.h"\r
 #include "EMeshWriterEnums.h"\r
 #include "SceneParameters.h"\r
index d80c2f0e04a1ec9719cf323cedb3adba4ca72355..eac3670c6390a4c78f0d240a07963e12129b6853 100644 (file)
@@ -509,20 +509,6 @@ namespace video
                                core::position2d<s32> colorKeyPixelPos,\r
                                bool zeroTexels = false) const =0;\r
 \r
-               //! Creates a normal map from a height map texture.\r
-               /** As input is considered to be a height map the texture is read like:\r
-               - For a 32-bit texture only the red channel is regarded\r
-               - For a 16-bit texture the rgb-values are averaged.\r
-               Output channels red/green for X/Y and blue for up (Z).\r
-               For a 32-bit texture we store additionally the height value in the\r
-               alpha channel. This value is used by the video::EMT_PARALLAX_MAP_SOLID\r
-               material and similar materials.\r
-               On the borders the texture is considered to repeat.\r
-               \param texture Height map texture which is converted to a normal map.\r
-               \param amplitude Constant value by which the height\r
-               information is multiplied.*/\r
-               virtual void makeNormalMapTexture(video::ITexture* texture, f32 amplitude=1.0f) const =0;\r
-\r
                //! Set a render target.\r
                /** This will only work if the driver supports the\r
                EVDF_RENDER_TO_TARGET feature, which can be queried with\r
diff --git a/include/SKeyMap.h b/include/SKeyMap.h
deleted file mode 100644 (file)
index 3f1b68c..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __S_KEY_MAP_H_INCLUDED__\r
-#define __S_KEY_MAP_H_INCLUDED__\r
-\r
-#include "Keycodes.h"\r
-\r
-namespace irr\r
-{\r
-\r
-       //! enumeration for key actions. Used for example in the FPS Camera.\r
-       enum EKEY_ACTION\r
-       {\r
-               EKA_MOVE_FORWARD = 0,\r
-               EKA_MOVE_BACKWARD,\r
-               EKA_STRAFE_LEFT,\r
-               EKA_STRAFE_RIGHT,\r
-               EKA_JUMP_UP,\r
-               EKA_CROUCH,\r
-               EKA_ROTATE_LEFT,\r
-               EKA_ROTATE_RIGHT,\r
-               EKA_COUNT,\r
-\r
-               //! This value is not used. It only forces this enumeration to compile in 32 bit.\r
-               EKA_FORCE_32BIT = 0x7fffffff\r
-       };\r
-\r
-       //! Struct storing which key belongs to which action.\r
-       struct SKeyMap\r
-       {\r
-               SKeyMap() {}\r
-               SKeyMap(EKEY_ACTION action, EKEY_CODE keyCode) : Action(action), KeyCode(keyCode) {}\r
-\r
-               EKEY_ACTION Action;\r
-               EKEY_CODE KeyCode;\r
-       };\r
-\r
-} // end namespace irr\r
-\r
-#endif\r
-\r
index 9874d77bf2b504d7e32c0c61aad1688b95617c87..55be84abc1ca3237d4c6c7111eef0d50cb60d5c3 100644 (file)
@@ -355,7 +355,7 @@ namespace video
                f32 Shininess;\r
 \r
                //! Free parameter, dependent on the material type.\r
-               /** Mostly ignored, used for example in EMT_PARALLAX_MAP_SOLID,\r
+               /** Mostly ignored, used for example in\r
                EMT_TRANSPARENT_ALPHA_CHANNEL and EMT_ONETEXTURE_BLEND. */\r
                f32 MaterialTypeParam;\r
 \r
diff --git a/include/SSharedMeshBuffer.h b/include/SSharedMeshBuffer.h
deleted file mode 100644 (file)
index 5117299..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __S_SHARED_MESH_BUFFER_H_INCLUDED__\r
-#define __S_SHARED_MESH_BUFFER_H_INCLUDED__\r
-\r
-#include "irrArray.h"\r
-#include "IMeshBuffer.h"\r
-\r
-namespace irr\r
-{\r
-namespace scene\r
-{\r
-       //! Implementation of the IMeshBuffer interface with shared vertex list\r
-       struct SSharedMeshBuffer : public IMeshBuffer\r
-       {\r
-               //! constructor\r
-               SSharedMeshBuffer() \r
-                       : IMeshBuffer()\r
-                       , Vertices(0), ChangedID_Vertex(1), ChangedID_Index(1)\r
-                       , MappingHintVertex(EHM_NEVER), MappingHintIndex(EHM_NEVER)\r
-                       , PrimitiveType(EPT_TRIANGLES)\r
-               {\r
-                       #ifdef _DEBUG\r
-                       setDebugName("SSharedMeshBuffer");\r
-                       #endif\r
-               }\r
-\r
-               //! constructor\r
-               SSharedMeshBuffer(core::array<video::S3DVertex> *vertices) : IMeshBuffer(), Vertices(vertices), ChangedID_Vertex(1), ChangedID_Index(1), MappingHintVertex(EHM_NEVER), MappingHintIndex(EHM_NEVER)\r
-               {\r
-                       #ifdef _DEBUG\r
-                       setDebugName("SSharedMeshBuffer");\r
-                       #endif\r
-               }\r
-\r
-               //! returns the material of this meshbuffer\r
-               virtual const video::SMaterial& getMaterial() const _IRR_OVERRIDE_\r
-               {\r
-                       return Material;\r
-               }\r
-\r
-               //! returns the material of this meshbuffer\r
-               virtual video::SMaterial& getMaterial() _IRR_OVERRIDE_\r
-               {\r
-                       return Material;\r
-               }\r
-\r
-               //! returns pointer to vertices\r
-               virtual const void* getVertices() const _IRR_OVERRIDE_\r
-               {\r
-                       if (Vertices)\r
-                               return Vertices->const_pointer();\r
-                       else\r
-                               return 0;\r
-               }\r
-\r
-               //! returns pointer to vertices\r
-               virtual void* getVertices() _IRR_OVERRIDE_\r
-               {\r
-                       if (Vertices)\r
-                               return Vertices->pointer();\r
-                       else\r
-                               return 0;\r
-               }\r
-\r
-               //! returns amount of vertices\r
-               virtual u32 getVertexCount() const _IRR_OVERRIDE_\r
-               {\r
-                       if (Vertices)\r
-                               return Vertices->size();\r
-                       else\r
-                               return 0;\r
-               }\r
-\r
-               //! returns pointer to indices\r
-               virtual const u16* getIndices() const _IRR_OVERRIDE_\r
-               {\r
-                       return Indices.const_pointer();\r
-               }\r
-\r
-               //! returns pointer to indices\r
-               virtual u16* getIndices() _IRR_OVERRIDE_\r
-               {\r
-                       return Indices.pointer();\r
-               }\r
-\r
-               //! returns amount of indices\r
-               virtual u32 getIndexCount() const _IRR_OVERRIDE_\r
-               {\r
-                       return Indices.size();\r
-               }\r
-\r
-               //! Get type of index data which is stored in this meshbuffer.\r
-               virtual video::E_INDEX_TYPE getIndexType() const _IRR_OVERRIDE_\r
-               {\r
-                       return video::EIT_16BIT;\r
-               }\r
-\r
-               //! returns an axis aligned bounding box\r
-               virtual const core::aabbox3d<f32>& getBoundingBox() const _IRR_OVERRIDE_\r
-               {\r
-                       return BoundingBox;\r
-               }\r
-\r
-               //! set user axis aligned bounding box\r
-               virtual void setBoundingBox( const core::aabbox3df& box) _IRR_OVERRIDE_\r
-               {\r
-                       BoundingBox = box;\r
-               }\r
-\r
-               //! returns which type of vertex data is stored.\r
-               virtual video::E_VERTEX_TYPE getVertexType() const _IRR_OVERRIDE_\r
-               {\r
-                       return video::EVT_STANDARD;\r
-               }\r
-\r
-               //! recalculates the bounding box. should be called if the mesh changed.\r
-               virtual void recalculateBoundingBox() _IRR_OVERRIDE_\r
-               {\r
-                       if (!Vertices || Vertices->empty() || Indices.empty())\r
-                               BoundingBox.reset(0,0,0);\r
-                       else\r
-                       {\r
-                               BoundingBox.reset((*Vertices)[Indices[0]].Pos);\r
-                               for (u32 i=1; i<Indices.size(); ++i)\r
-                                       BoundingBox.addInternalPoint((*Vertices)[Indices[i]].Pos);\r
-                       }\r
-               }\r
-\r
-               //! returns position of vertex i\r
-               virtual const core::vector3df& getPosition(u32 i) const _IRR_OVERRIDE_\r
-               {\r
-                       _IRR_DEBUG_BREAK_IF(!Vertices);\r
-                       return (*Vertices)[Indices[i]].Pos;\r
-               }\r
-\r
-               //! returns position of vertex i\r
-               virtual core::vector3df& getPosition(u32 i) _IRR_OVERRIDE_\r
-               {\r
-                       _IRR_DEBUG_BREAK_IF(!Vertices);\r
-                       return (*Vertices)[Indices[i]].Pos;\r
-               }\r
-\r
-               //! returns normal of vertex i\r
-               virtual const core::vector3df& getNormal(u32 i) const _IRR_OVERRIDE_\r
-               {\r
-                       _IRR_DEBUG_BREAK_IF(!Vertices);\r
-                       return (*Vertices)[Indices[i]].Normal;\r
-               }\r
-\r
-               //! returns normal of vertex i\r
-               virtual core::vector3df& getNormal(u32 i) _IRR_OVERRIDE_\r
-               {\r
-                       _IRR_DEBUG_BREAK_IF(!Vertices);\r
-                       return (*Vertices)[Indices[i]].Normal;\r
-               }\r
-\r
-               //! returns texture coord of vertex i\r
-               virtual const core::vector2df& getTCoords(u32 i) const _IRR_OVERRIDE_\r
-               {\r
-                       _IRR_DEBUG_BREAK_IF(!Vertices);\r
-                       return (*Vertices)[Indices[i]].TCoords;\r
-               }\r
-\r
-               //! returns texture coord of vertex i\r
-               virtual core::vector2df& getTCoords(u32 i) _IRR_OVERRIDE_\r
-               {\r
-                       _IRR_DEBUG_BREAK_IF(!Vertices);\r
-                       return (*Vertices)[Indices[i]].TCoords;\r
-               }\r
-\r
-               //! append the vertices and indices to the current buffer\r
-               virtual void append(const void* const vertices, u32 numVertices, const u16* const indices, u32 numIndices)  _IRR_OVERRIDE_ {}\r
-               //! append the meshbuffer to the current buffer\r
-               virtual void append(const IMeshBuffer* const other) _IRR_OVERRIDE_ {}\r
-\r
-               //! get the current hardware mapping hint\r
-               virtual E_HARDWARE_MAPPING getHardwareMappingHint_Vertex() const _IRR_OVERRIDE_\r
-               {\r
-                       return MappingHintVertex;\r
-               }\r
-\r
-               //! get the current hardware mapping hint\r
-               virtual E_HARDWARE_MAPPING getHardwareMappingHint_Index() const _IRR_OVERRIDE_\r
-               {\r
-                       return MappingHintIndex;\r
-               }\r
-\r
-               //! set the hardware mapping hint, for driver\r
-               virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint, E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX ) _IRR_OVERRIDE_\r
-               {\r
-                       if (buffer==EBT_VERTEX_AND_INDEX || buffer==EBT_VERTEX)\r
-                               MappingHintVertex=NewMappingHint;\r
-                       if (buffer==EBT_VERTEX_AND_INDEX || buffer==EBT_INDEX)\r
-                               MappingHintIndex=NewMappingHint;\r
-               }\r
-\r
-               //! Describe what kind of primitive geometry is used by the meshbuffer\r
-               virtual void setPrimitiveType(E_PRIMITIVE_TYPE type) _IRR_OVERRIDE_\r
-               {\r
-                       PrimitiveType = type;\r
-               }\r
-\r
-               //! Get the kind of primitive geometry which is used by the meshbuffer\r
-               virtual E_PRIMITIVE_TYPE getPrimitiveType() const _IRR_OVERRIDE_\r
-               {\r
-                       return PrimitiveType;\r
-               }\r
-\r
-               //! flags the mesh as changed, reloads hardware buffers\r
-               virtual void setDirty(E_BUFFER_TYPE buffer=EBT_VERTEX_AND_INDEX) _IRR_OVERRIDE_\r
-               {\r
-                       if (buffer==EBT_VERTEX_AND_INDEX || buffer==EBT_VERTEX)\r
-                               ++ChangedID_Vertex;\r
-                       if (buffer==EBT_VERTEX_AND_INDEX || buffer==EBT_INDEX)\r
-                               ++ChangedID_Index;\r
-               }\r
-\r
-               //! Get the currently used ID for identification of changes.\r
-               /** This shouldn't be used for anything outside the VideoDriver. */\r
-               virtual u32 getChangedID_Vertex() const _IRR_OVERRIDE_ {return ChangedID_Vertex;}\r
-\r
-               //! Get the currently used ID for identification of changes.\r
-               /** This shouldn't be used for anything outside the VideoDriver. */\r
-               virtual u32 getChangedID_Index() const _IRR_OVERRIDE_ {return ChangedID_Index;}\r
-\r
-               //! Material of this meshBuffer\r
-               video::SMaterial Material;\r
-\r
-               //! Shared Array of vertices\r
-               core::array<video::S3DVertex> *Vertices;\r
-\r
-               //! Array of indices\r
-               core::array<u16> Indices;\r
-\r
-               //! ID used for hardware buffer management\r
-               u32 ChangedID_Vertex;\r
-\r
-               //! ID used for hardware buffer management\r
-               u32 ChangedID_Index;\r
-\r
-               //! Bounding box\r
-               core::aabbox3df BoundingBox;\r
-\r
-               //! hardware mapping hint\r
-               E_HARDWARE_MAPPING MappingHintVertex;\r
-               E_HARDWARE_MAPPING MappingHintIndex;\r
-\r
-               //! Primitive type used for rendering (triangles, lines, ...)\r
-               E_PRIMITIVE_TYPE PrimitiveType;\r
-       };\r
-\r
-\r
-} // end namespace scene\r
-} // end namespace irr\r
-\r
-#endif\r
-\r
index eb86766d509d0e96d1798a3019e90f1cdd2def67..15a8eca271e95bab7e77eab6a83f56fe9c69f45b 100644 (file)
@@ -31,7 +31,6 @@
 \r
 #include "IrrCompileConfig.h"\r
 #include "aabbox3d.h"\r
-#include "CDynamicMeshBuffer.h"\r
 #include "CIndexBuffer.h"\r
 #include "CMeshBuffer.h"\r
 #include "coreutil.h"\r
@@ -50,7 +49,6 @@
 #include "EMeshWriterEnums.h"\r
 #include "EMessageBoxFlags.h"\r
 #include "ESceneNodeTypes.h"\r
-#include "ETerrainElements.h"\r
 #include "fast_atof.h"\r
 #include "heapsort.h"\r
 #include "IAnimatedMesh.h"\r
@@ -63,7 +61,6 @@
 #include "IContextManager.h"\r
 #include "ICursorControl.h"\r
 #include "IDummyTransformationSceneNode.h"\r
-#include "IDynamicMeshBuffer.h"\r
 #include "IEventReceiver.h"\r
 #include "IFileList.h"\r
 #include "IFileSystem.h"\r
 #include "SColor.h"\r
 #include "SExposedVideoData.h"\r
 #include "SIrrCreationParameters.h"\r
-#include "SKeyMap.h"\r
 #include "SLight.h"\r
 #include "SMaterial.h"\r
 #include "SMesh.h"\r
 #include "SMeshBuffer.h"\r
-#include "SSharedMeshBuffer.h"\r
 #include "SSkinMeshBuffer.h"\r
 #include "SVertexIndex.h"\r
 #include "SViewFrustum.h"\r
diff --git a/media/Shaders/COGLES2NormalMap.fsh b/media/Shaders/COGLES2NormalMap.fsh
deleted file mode 100644 (file)
index fb65dc3..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#define MAX_LIGHTS 2\r
-\r
-precision mediump float;\r
-\r
-/* Uniforms */\r
-\r
-uniform sampler2D uTextureUnit0;\r
-uniform sampler2D uTextureUnit1;\r
-uniform int uFogEnable;\r
-uniform int uFogType;\r
-uniform vec4 uFogColor;\r
-uniform float uFogStart;\r
-uniform float uFogEnd;\r
-uniform float uFogDensity;\r
-\r
-/* Varyings */\r
-\r
-varying vec2 vTexCoord;\r
-varying vec3 vLightVector[MAX_LIGHTS];\r
-varying vec4 vLightColor[MAX_LIGHTS];\r
-varying float vFogCoord;\r
-\r
-float computeFog()\r
-{\r
-       const float LOG2 = 1.442695;\r
-       float FogFactor = 0.0;\r
-\r
-       if (uFogType == 0) // Exp\r
-       {\r
-               FogFactor = exp2(-uFogDensity * vFogCoord * LOG2);\r
-       }\r
-       else if (uFogType == 1) // Linear\r
-       {\r
-               float Scale = 1.0 / (uFogEnd - uFogStart);\r
-               FogFactor = (uFogEnd - vFogCoord) * Scale;\r
-       }\r
-       else if (uFogType == 2) // Exp2\r
-       {\r
-               FogFactor = exp2(-uFogDensity * uFogDensity * vFogCoord * vFogCoord * LOG2);\r
-       }\r
-\r
-       FogFactor = clamp(FogFactor, 0.0, 1.0);\r
-\r
-       return FogFactor;\r
-}\r
-\r
-void main()\r
-{\r
-       vec4 Color  = texture2D(uTextureUnit0, vTexCoord);\r
-       vec3 Normal = texture2D(uTextureUnit1, vTexCoord).xyz *  2.0 - 1.0;\r
-\r
-       vec4 FinalColor = vec4(0.0, 0.0, 0.0, 0.0);\r
-\r
-       for (int i = 0; i < int(MAX_LIGHTS); i++)\r
-       {\r
-               vec3 LightVector = normalize(vLightVector[i]);\r
-\r
-               float Lambert = max(dot(LightVector, Normal), 0.0);\r
-               FinalColor += vec4(Lambert) * vLightColor[i];\r
-       }\r
-\r
-       FinalColor *= Color;\r
-       FinalColor.w = vLightColor[0].w;\r
-\r
-       if (bool(uFogEnable))\r
-       {\r
-               float FogFactor = computeFog();\r
-               vec4 FogColor = uFogColor;\r
-               FogColor.a = 1.0;\r
-               FinalColor = mix(FogColor, FinalColor, FogFactor);\r
-       }\r
-       \r
-       gl_FragColor = FinalColor;\r
-}\r
diff --git a/media/Shaders/COGLES2NormalMap.vsh b/media/Shaders/COGLES2NormalMap.vsh
deleted file mode 100644 (file)
index 5934acf..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#define MAX_LIGHTS 2\r
-\r
-/* Attributes */\r
-\r
-attribute vec3 inVertexPosition;\r
-attribute vec3 inVertexNormal;\r
-attribute vec3 inVertexTangent;\r
-attribute vec3 inVertexBinormal;\r
-attribute vec4 inVertexColor;\r
-attribute vec2 inTexCoord0;\r
-\r
-/* Uniforms */\r
-\r
-uniform mat4 uWVPMatrix;\r
-uniform mat4 uWVMatrix;\r
-uniform vec3 uLightPosition[MAX_LIGHTS];\r
-uniform vec4 uLightColor[MAX_LIGHTS];\r
-\r
-/* Varyings */\r
-\r
-varying vec2 vTexCoord;\r
-varying vec3 vLightVector[MAX_LIGHTS];\r
-varying vec4 vLightColor[MAX_LIGHTS];\r
-varying float vFogCoord;\r
-\r
-void main()\r
-{\r
-       gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);\r
-\r
-       vTexCoord = inTexCoord0;\r
-\r
-       for (int i = 0; i < int(MAX_LIGHTS); i++)\r
-       {\r
-               vec3 LightVector = uLightPosition[i] - inVertexPosition;\r
-\r
-               vLightVector[i].x = dot(inVertexTangent, LightVector);\r
-               vLightVector[i].y = dot(inVertexBinormal, LightVector);\r
-               vLightVector[i].z = dot(inVertexNormal, LightVector);\r
-\r
-               vLightColor[i].x = dot(LightVector, LightVector);\r
-               vLightColor[i].x *= uLightColor[i].a;\r
-               vLightColor[i] = vec4(inversesqrt(vLightColor[i].x));\r
-               vLightColor[i] *= uLightColor[i];\r
-               vLightColor[i].a = inVertexColor.a;\r
-\r
-               vLightColor[i].x = clamp(vLightColor[i].x, 0.0, 1.0);\r
-               vLightColor[i].y = clamp(vLightColor[i].y, 0.0, 1.0);\r
-               vLightColor[i].z = clamp(vLightColor[i].z, 0.0, 1.0);\r
-       }\r
-\r
-       vFogCoord = length((uWVMatrix * vec4(inVertexPosition, 1.0)).xyz);\r
-}\r
diff --git a/media/Shaders/COGLES2ParallaxMap.fsh b/media/Shaders/COGLES2ParallaxMap.fsh
deleted file mode 100644 (file)
index 311adab..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#define MAX_LIGHTS 2\r
-\r
-precision mediump float;\r
-\r
-/* Uniforms */\r
-\r
-uniform float uFactor;\r
-uniform sampler2D uTextureUnit0;\r
-uniform sampler2D uTextureUnit1;\r
-uniform int uFogEnable;\r
-uniform int uFogType;\r
-uniform vec4 uFogColor;\r
-uniform float uFogStart;\r
-uniform float uFogEnd;\r
-uniform float uFogDensity;\r
-\r
-/* Varyings */\r
-\r
-varying vec2 vTexCoord;\r
-varying vec3 vEyeVector;\r
-varying vec3 vLightVector[MAX_LIGHTS];\r
-varying vec4 vLightColor[MAX_LIGHTS];\r
-varying float vFogCoord;\r
-\r
-float computeFog()\r
-{\r
-       const float LOG2 = 1.442695;\r
-       float FogFactor = 0.0;\r
-\r
-       if (uFogType == 0) // Exp\r
-       {\r
-               FogFactor = exp2(-uFogDensity * vFogCoord * LOG2);\r
-       }\r
-       else if (uFogType == 1) // Linear\r
-       {\r
-               float Scale = 1.0 / (uFogEnd - uFogStart);\r
-               FogFactor = (uFogEnd - vFogCoord) * Scale;\r
-       }\r
-       else if (uFogType == 2) // Exp2\r
-       {\r
-               FogFactor = exp2(-uFogDensity * uFogDensity * vFogCoord * vFogCoord * LOG2);\r
-       }\r
-\r
-       FogFactor = clamp(FogFactor, 0.0, 1.0);\r
-\r
-       return FogFactor;\r
-}\r
-\r
-void main()\r
-{\r
-       vec4 TempFetch = texture2D(uTextureUnit1, vTexCoord) *  2.0 - 1.0;\r
-       TempFetch *= uFactor;\r
-\r
-       vec3 EyeVector = normalize(vEyeVector);\r
-       vec2 TexCoord = EyeVector.xy * TempFetch.w + vTexCoord;\r
-\r
-       vec4 Color  = texture2D(uTextureUnit0, TexCoord);\r
-       vec3 Normal = texture2D(uTextureUnit1, TexCoord).xyz *  2.0 - 1.0;\r
-\r
-       vec4 FinalColor = vec4(0.0, 0.0, 0.0, 0.0);\r
-\r
-       for (int i = 0; i < int(MAX_LIGHTS); i++)\r
-       {\r
-               vec3 LightVector = normalize(vLightVector[i]);\r
-\r
-               float Lambert = max(dot(LightVector, Normal), 0.0);\r
-               FinalColor += vec4(Lambert) * vLightColor[i];\r
-       }\r
-\r
-       FinalColor *= Color;\r
-       FinalColor.w = vLightColor[0].w;\r
-\r
-       if (bool(uFogEnable))\r
-       {\r
-               float FogFactor = computeFog();\r
-               vec4 FogColor = uFogColor;\r
-               FogColor.a = 1.0;\r
-               FinalColor = mix(FogColor, FinalColor, FogFactor);\r
-       }\r
-       \r
-       gl_FragColor = FinalColor;\r
-}\r
diff --git a/media/Shaders/COGLES2ParallaxMap.vsh b/media/Shaders/COGLES2ParallaxMap.vsh
deleted file mode 100644 (file)
index 97a333d..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#define MAX_LIGHTS 2\r
-\r
-/* Attributes */\r
-\r
-attribute vec3 inVertexPosition;\r
-attribute vec3 inVertexNormal;\r
-attribute vec3 inVertexTangent;\r
-attribute vec3 inVertexBinormal;\r
-attribute vec4 inVertexColor;\r
-attribute vec2 inTexCoord0;\r
-\r
-/* Uniforms */\r
-\r
-uniform mat4 uWVPMatrix;\r
-uniform mat4 uWVMatrix;\r
-uniform vec3 uEyePosition;\r
-uniform vec3 uLightPosition[MAX_LIGHTS];\r
-uniform vec4 uLightColor[MAX_LIGHTS];\r
-\r
-/* Varyings */\r
-\r
-varying vec2 vTexCoord;\r
-varying vec3 vEyeVector;\r
-varying vec3 vLightVector[MAX_LIGHTS];\r
-varying vec4 vLightColor[MAX_LIGHTS];\r
-varying float vFogCoord;\r
-\r
-void main()\r
-{\r
-       gl_Position = uWVPMatrix * vec4(inVertexPosition, 1.0);\r
-\r
-       vTexCoord = inTexCoord0;\r
-\r
-       vec3 EyeVector = uEyePosition - inVertexPosition;\r
-\r
-       vEyeVector.x = dot(inVertexTangent, EyeVector);\r
-       vEyeVector.y = dot(inVertexBinormal, EyeVector);\r
-       vEyeVector.z = dot(inVertexNormal, EyeVector);\r
-       vEyeVector *= vec3(1.0, -1.0, -1.0);\r
-\r
-       for (int i = 0; i < int(MAX_LIGHTS); i++)\r
-       {\r
-               vec3 LightVector = uLightPosition[i] - inVertexPosition;\r
-\r
-               vLightVector[i].x = dot(inVertexTangent, LightVector);\r
-               vLightVector[i].y = dot(inVertexBinormal, LightVector);\r
-               vLightVector[i].z = dot(inVertexNormal, LightVector);\r
-\r
-               vLightColor[i].x = dot(LightVector, LightVector);\r
-               vLightColor[i].x *= uLightColor[i].a;\r
-               vLightColor[i] = vec4(inversesqrt(vLightColor[i].x));\r
-               vLightColor[i] *= uLightColor[i];\r
-               vLightColor[i].a = inVertexColor.a;\r
-\r
-               vLightColor[i].x = clamp(vLightColor[i].x, 0.0, 1.0);\r
-               vLightColor[i].y = clamp(vLightColor[i].y, 0.0, 1.0);\r
-               vLightColor[i].z = clamp(vLightColor[i].z, 0.0, 1.0);\r
-       }\r
-\r
-       vFogCoord = length((uWVMatrix * vec4(inVertexPosition, 1.0)).xyz);\r
-}\r
index 7a9455aac18d2e77fd4f573663f278c1ecfaa236..d20ca416332d87d9aa7209249535080113c015ea 100644 (file)
@@ -1057,73 +1057,6 @@ static s32 Blit(eBlitter operation,
        return 1;\r
 }\r
 \r
-#if defined(SOFTWARE_DRIVER_2_2D_AS_2D)\r
-static s32 StretchBlit(eBlitter operation,\r
-               video::IImage* dest, const core::rect<s32>* destClipping,const core::rect<s32> *destRect,\r
-               video::IImage* const source,const core::rect<s32> *srcRect, const core::dimension2d<u32>* source_org,\r
-               u32 argb)\r
-{\r
-       tExecuteBlit blitter = getBlitter2( operation, dest, source );\r
-       if ( 0 == blitter )\r
-       {\r
-               return 0;\r
-       }\r
-\r
-       SBlitJob job;\r
-\r
-       AbsRectangle destClip;\r
-       AbsRectangle v;\r
-       setClip(destClip, destClipping, dest, 0, 0);\r
-       setClip(v, destRect, 0, 1, 0);\r
-       if (!intersect(job.Dest, destClip, v))\r
-               return 0;\r
-\r
-       // Clipping\r
-       setClip ( job.Source, srcRect, source, 1, source_org);\r
-\r
-       job.width = job.Dest.x1-job.Dest.x0;\r
-       job.height = job.Dest.y1-job.Dest.y0;\r
-\r
-       job.argb = argb;\r
-\r
-       // use original dest size, despite any clipping\r
-       const int dst_w = v.x1 - v.x0; // destRect->getWidth();\r
-       const int dst_h = v.y1 - v.y0; // destRect->getHeight();\r
-       const int src_w = job.Source.x1 - job.Source.x0;\r
-       const int src_h = job.Source.y1 - job.Source.y0;\r
-\r
-       job.stretch = dst_w != src_w || dst_h != src_h;\r
-       job.x_stretch = dst_w ? (float)src_w / (float)dst_w : 1.f;\r
-       job.y_stretch = dst_h ? (float)src_h / (float)dst_h : 1.f;\r
-\r
-\r
-       if ( source )\r
-       {\r
-               job.srcPitch = source->getPitch();\r
-               job.srcPixelMul = source->getBytesPerPixel();\r
-\r
-               //dest-clippling. advance source. loosing subpixel precision\r
-               job.Source.x0 += (s32)floorf(job.x_stretch * (job.Dest.x0 - v.x0));\r
-               job.Source.y0 += (s32)floorf(job.y_stretch * (job.Dest.y0 - v.y0));\r
-\r
-               job.src = (void*) ( (u8*) source->getData() + ( job.Source.y0 * job.srcPitch ) + ( job.Source.x0 * job.srcPixelMul ) );\r
-       }\r
-       else\r
-       {\r
-               // use srcPitch for color operation on dest\r
-               job.srcPitch = job.width * dest->getBytesPerPixel();\r
-       }\r
-\r
-       job.dstPitch = dest->getPitch();\r
-       job.dstPixelMul = dest->getBytesPerPixel();\r
-       job.dst = (void*) ( (u8*) dest->getData() + ( job.Dest.y0 * job.dstPitch ) + ( job.Dest.x0 * job.dstPixelMul ) );\r
-\r
-       blitter( &job );\r
-\r
-       return 1;\r
-}\r
-#endif\r
-\r
 }\r
 \r
 #endif\r
index 81de8570720bced39cefde00d1211db5b79d83e5..4db72a973e81c418db4066e2110e937712807340 100644 (file)
@@ -162,8 +162,6 @@ set(IRRDRVROBJ
        CNullDriver.cpp
        COpenGLCacheHandler.cpp
        COpenGLDriver.cpp
-       COpenGLNormalMapRenderer.cpp
-       COpenGLParallaxMapRenderer.cpp
        COpenGLShaderMaterialRenderer.cpp
        COpenGLSLMaterialRenderer.cpp
        COpenGLExtensionHandler.cpp
@@ -173,8 +171,6 @@ set(IRRDRVROBJ
        COGLES2ExtensionHandler.cpp
        COGLES2FixedPipelineRenderer.cpp
        COGLES2MaterialRenderer.cpp
-       COGLES2NormalMapRenderer.cpp
-       COGLES2ParallaxMapRenderer.cpp
        COGLES2Renderer2D.cpp
        CWebGL1Driver.cpp
        CGLXManager.cpp
index 8779cbdbaf51fc1212edceed313533bd90db8ebe..da647797b95e19a575c7e8605a9ed923e29774aa 100644 (file)
@@ -1291,124 +1291,6 @@ void CNullDriver::makeColorKeyTexture(video::ITexture* texture,
 }\r
 \r
 \r
-\r
-//! Creates a normal map from a height map texture.\r
-//! \param amplitude: Constant value by which the height information is multiplied.\r
-void CNullDriver::makeNormalMapTexture(video::ITexture* texture, f32 amplitude) const\r
-{\r
-       if (!texture)\r
-               return;\r
-\r
-       if (texture->getColorFormat() != ECF_A1R5G5B5 &&\r
-               texture->getColorFormat() != ECF_A8R8G8B8 )\r
-       {\r
-               os::Printer::log("Error: Unsupported texture color format for making normal map.", ELL_ERROR);\r
-               return;\r
-       }\r
-\r
-       core::dimension2d<u32> dim = texture->getSize();\r
-       amplitude = amplitude / 255.0f;\r
-       f32 vh = dim.Height / (f32)dim.Width;\r
-       f32 hh = dim.Width / (f32)dim.Height;\r
-\r
-       if (texture->getColorFormat() == ECF_A8R8G8B8)\r
-       {\r
-               // ECF_A8R8G8B8 version\r
-\r
-               s32 *p = (s32*)texture->lock();\r
-\r
-               if (!p)\r
-               {\r
-                       os::Printer::log("Could not lock texture for making normal map.", ELL_ERROR);\r
-                       return;\r
-               }\r
-\r
-               // copy texture\r
-\r
-               u32 pitch = texture->getPitch() / 4;\r
-\r
-               s32* in = new s32[dim.Height * pitch];\r
-               memcpy(in, p, dim.Height * pitch * 4);\r
-\r
-               for (s32 x=0; x < s32(pitch); ++x)\r
-                       for (s32 y=0; y < s32(dim.Height); ++y)\r
-                       {\r
-                               // TODO: this could be optimized really a lot\r
-\r
-                               core::vector3df h1((x-1)*hh, nml32(x-1, y, pitch, dim.Height, in)*amplitude, y*vh);\r
-                               core::vector3df h2((x+1)*hh, nml32(x+1, y, pitch, dim.Height, in)*amplitude, y*vh);\r
-                               //core::vector3df v1(x*hh, nml32(x, y-1, pitch, dim.Height, in)*amplitude, (y-1)*vh);\r
-                               //core::vector3df v2(x*hh, nml32(x, y+1, pitch, dim.Height, in)*amplitude, (y+1)*vh);\r
-                               core::vector3df v1(x*hh, nml32(x, y+1, pitch, dim.Height, in)*amplitude, (y-1)*vh);\r
-                               core::vector3df v2(x*hh, nml32(x, y-1, pitch, dim.Height, in)*amplitude, (y+1)*vh);\r
-\r
-                               core::vector3df v = v1-v2;\r
-                               core::vector3df h = h1-h2;\r
-\r
-                               core::vector3df n = v.crossProduct(h);\r
-                               n.normalize();\r
-                               n *= 0.5f;\r
-                               n += core::vector3df(0.5f,0.5f,0.5f); // now between 0 and 1\r
-                               n *= 255.0f;\r
-\r
-                               s32 height = (s32)nml32(x, y, pitch, dim.Height, in);\r
-                               p[y*pitch + x] = video::SColor(\r
-                                       height, // store height in alpha\r
-                                       (s32)n.X, (s32)n.Z, (s32)n.Y).color;\r
-                       }\r
-\r
-               delete [] in;\r
-               texture->unlock();\r
-       }\r
-       else\r
-       {\r
-               // ECF_A1R5G5B5 version\r
-\r
-               s16 *p = (s16*)texture->lock();\r
-\r
-               if (!p)\r
-               {\r
-                       os::Printer::log("Could not lock texture for making normal map.", ELL_ERROR);\r
-                       return;\r
-               }\r
-\r
-               u32 pitch = texture->getPitch() / 2;\r
-\r
-               // copy texture\r
-\r
-               s16* in = new s16[dim.Height * pitch];\r
-               memcpy(in, p, dim.Height * pitch * 2);\r
-\r
-               for (s32 x=0; x < s32(pitch); ++x)\r
-                       for (s32 y=0; y < s32(dim.Height); ++y)\r
-                       {\r
-                               // TODO: this could be optimized really a lot\r
-\r
-                               core::vector3df h1((x-1)*hh, nml16(x-1, y, pitch, dim.Height, in)*amplitude, y*vh);\r
-                               core::vector3df h2((x+1)*hh, nml16(x+1, y, pitch, dim.Height, in)*amplitude, y*vh);\r
-                               core::vector3df v1(x*hh, nml16(x, y-1, pitch, dim.Height, in)*amplitude, (y-1)*vh);\r
-                               core::vector3df v2(x*hh, nml16(x, y+1, pitch, dim.Height, in)*amplitude, (y+1)*vh);\r
-\r
-                               core::vector3df v = v1-v2;\r
-                               core::vector3df h = h1-h2;\r
-\r
-                               core::vector3df n = v.crossProduct(h);\r
-                               n.normalize();\r
-                               n *= 0.5f;\r
-                               n += core::vector3df(0.5f,0.5f,0.5f); // now between 0 and 1\r
-                               n *= 255.0f;\r
-\r
-                               p[y*pitch + x] = video::RGBA16((u32)n.X, (u32)n.Z, (u32)n.Y);\r
-                       }\r
-\r
-               delete [] in;\r
-               texture->unlock();\r
-       }\r
-\r
-       texture->regenerateMipMapLevels();\r
-}\r
-\r
-\r
 //! Returns the maximum amount of primitives (mostly vertices) which\r
 //! the device is able to render with one drawIndexedTriangleList\r
 //! call.\r
index 12f264398189a4ccd130fe4ad45a826b3a85ac36..c9e5e7c9002c23a3f87779e133eeb510061890b9 100644 (file)
@@ -335,10 +335,6 @@ namespace video
                virtual void makeColorKeyTexture(video::ITexture* texture, core::position2d<s32> colorKeyPixelPos,\r
                        bool zeroTexels) const _IRR_OVERRIDE_;\r
 \r
-               //! Creates a normal map from a height map texture.\r
-               //! \param amplitude: Constant value by which the height information is multiplied.\r
-               virtual void makeNormalMapTexture(video::ITexture* texture, f32 amplitude=1.0f) const _IRR_OVERRIDE_;\r
-\r
                //! Returns the maximum amount of primitives (mostly vertices) which\r
                //! the device is able to render with one drawIndexedTriangleList\r
                //! call.\r
@@ -720,35 +716,6 @@ namespace video
                // prints renderer version\r
                void printVersion();\r
 \r
-               //! normal map lookup 32 bit version\r
-               inline f32 nml32(int x, int y, int pitch, int height, s32 *p) const\r
-               {\r
-                       if (x < 0)\r
-                               x = pitch-1;\r
-                       if (x >= pitch)\r
-                               x = 0;\r
-                       if (y < 0)\r
-                               y = height-1;\r
-                       if (y >= height)\r
-                               y = 0;\r
-                       return (f32)(((p[(y * pitch) + x])>>16) & 0xff);\r
-               }\r
-\r
-               //! normal map lookup 16 bit version\r
-               inline f32 nml16(int x, int y, int pitch, int height, s16 *p) const\r
-               {\r
-                       if (x < 0)\r
-                               x = pitch-1;\r
-                       if (x >= pitch)\r
-                               x = 0;\r
-                       if (y < 0)\r
-                               y = height-1;\r
-                       if (y >= height)\r
-                               y = 0;\r
-\r
-                       return (f32) getAverage ( p[(y * pitch) + x] );\r
-               }\r
-\r
                inline bool getWriteZBuffer(const SMaterial& material) const\r
                {\r
                        switch ( material.ZWriteEnable )\r
index 5997e391d22e3d8db15044b947fbdaed3495988e..0d705e432c39d97f254a424a1d49b4e5f5d4bf0c 100644 (file)
@@ -316,16 +316,7 @@ IAnimatedMesh* COBJMeshFileLoader::createMesh(io::IReadFile* file)
                        Materials[m]->Meshbuffer->recalculateBoundingBox();\r
                        if (Materials[m]->RecalculateNormals)\r
                                SceneManager->getMeshManipulator()->recalculateNormals(Materials[m]->Meshbuffer);\r
-                       if (Materials[m]->Meshbuffer->Material.MaterialType == video::EMT_PARALLAX_MAP_SOLID)\r
-                       {\r
-                               SMesh tmp;\r
-                               tmp.addMeshBuffer(Materials[m]->Meshbuffer);\r
-                               IMesh* tangentMesh = SceneManager->getMeshManipulator()->createMeshWithTangents(&tmp);\r
-                               mesh->addMeshBuffer(tangentMesh->getMeshBuffer(0));\r
-                               tangentMesh->drop();\r
-                       }\r
-                       else\r
-                               mesh->addMeshBuffer( Materials[m]->Meshbuffer );\r
+                       mesh->addMeshBuffer( Materials[m]->Meshbuffer );\r
                }\r
        }\r
 \r
index 13a257aaaca9fcb676219896e2fed99a4bafcb0e..87d93c1f3d57a09645783a369333a1b3ad17c37a 100644 (file)
@@ -15,8 +15,6 @@
 \r
 #include "COGLES2MaterialRenderer.h"\r
 #include "COGLES2FixedPipelineRenderer.h"\r
-#include "COGLES2NormalMapRenderer.h"\r
-#include "COGLES2ParallaxMapRenderer.h"\r
 #include "COGLES2Renderer2D.h"\r
 \r
 #include "EVertexAttributes.h"\r
@@ -248,12 +246,6 @@ COGLES2Driver::~COGLES2Driver()
                COGLES2MaterialSolidCB* TransparentAlphaChannelRefCB = new COGLES2MaterialSolidCB();\r
                COGLES2MaterialSolidCB* TransparentVertexAlphaCB = new COGLES2MaterialSolidCB();\r
                COGLES2MaterialReflectionCB* TransparentReflection2LayerCB = new COGLES2MaterialReflectionCB();\r
-               COGLES2MaterialNormalMapCB* NormalMapCB = new COGLES2MaterialNormalMapCB();\r
-               COGLES2MaterialNormalMapCB* NormalMapAddColorCB = new COGLES2MaterialNormalMapCB();\r
-               COGLES2MaterialNormalMapCB* NormalMapVertexAlphaCB = new COGLES2MaterialNormalMapCB();\r
-               COGLES2MaterialParallaxMapCB* ParallaxMapCB = new COGLES2MaterialParallaxMapCB();\r
-               COGLES2MaterialParallaxMapCB* ParallaxMapAddColorCB = new COGLES2MaterialParallaxMapCB();\r
-               COGLES2MaterialParallaxMapCB* ParallaxMapVertexAlphaCB = new COGLES2MaterialParallaxMapCB();\r
                COGLES2MaterialOneTextureBlendCB* OneTextureBlendCB = new COGLES2MaterialOneTextureBlendCB();\r
 \r
                // Create built-in materials.\r
@@ -342,30 +334,6 @@ COGLES2Driver::~COGLES2Driver()
                addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
                        EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, TransparentReflection2LayerCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);\r
 \r
-               VertexShader = OGLES2ShaderPath + "COGLES2NormalMap.vsh";\r
-               FragmentShader = OGLES2ShaderPath + "COGLES2NormalMap.fsh";\r
-\r
-               addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
-                       EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, NormalMapCB, EMT_SOLID, 0);\r
-\r
-               addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
-                       EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, NormalMapAddColorCB, EMT_TRANSPARENT_ADD_COLOR, 0);\r
-\r
-               addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
-                       EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, NormalMapVertexAlphaCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);\r
-\r
-               VertexShader = OGLES2ShaderPath + "COGLES2ParallaxMap.vsh";\r
-               FragmentShader = OGLES2ShaderPath + "COGLES2ParallaxMap.fsh";\r
-\r
-               addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
-                       EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, ParallaxMapCB, EMT_SOLID, 0);\r
-\r
-               addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
-                       EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, ParallaxMapAddColorCB, EMT_TRANSPARENT_ADD_COLOR, 0);\r
-\r
-               addHighLevelShaderMaterialFromFiles(VertexShader, "main", EVST_VS_2_0, FragmentShader, "main", EPST_PS_2_0, "", "main",\r
-                       EGST_GS_4_0, scene::EPT_TRIANGLES, scene::EPT_TRIANGLE_STRIP, 0, ParallaxMapVertexAlphaCB, EMT_TRANSPARENT_ALPHA_CHANNEL, 0);\r
-\r
                VertexShader = OGLES2ShaderPath + "COGLES2Solid.vsh";\r
                FragmentShader = OGLES2ShaderPath + "COGLES2OneTextureBlend.fsh";\r
 \r
@@ -391,12 +359,6 @@ COGLES2Driver::~COGLES2Driver()
                TransparentAlphaChannelRefCB->drop();\r
                TransparentVertexAlphaCB->drop();\r
                TransparentReflection2LayerCB->drop();\r
-               NormalMapCB->drop();\r
-               NormalMapAddColorCB->drop();\r
-               NormalMapVertexAlphaCB->drop();\r
-               ParallaxMapCB->drop();\r
-               ParallaxMapAddColorCB->drop();\r
-               ParallaxMapVertexAlphaCB->drop();\r
                OneTextureBlendCB->drop();\r
 \r
                // Create 2D material renderers\r
index 1ce11797194f237577b4bfa361ffce2ec2b5943e..d51f11ec3d49791ae4c9cfa4e90dbaee38824e64 100644 (file)
@@ -37,8 +37,6 @@ namespace video
 {\r
 \r
        class COGLES2FixedPipelineRenderer;\r
-       class COGLES2NormalMapRenderer;\r
-       class COGLES2ParallaxMapRenderer;\r
        class COGLES2Renderer2D;\r
 \r
        class COGLES2Driver : public CNullDriver, public IMaterialRendererServices, public COGLES2ExtensionHandler\r
index 628df02c62eebe572d317062cd26b5a6983926c9..d6cfffae4edcfef6beaeba55c96c58b32ccf1531 100644 (file)
@@ -40,13 +40,9 @@ COGLES2MaterialRenderer::COGLES2MaterialRenderer(COGLES2Driver* driver,
        {\r
        case EMT_TRANSPARENT_VERTEX_ALPHA:\r
        case EMT_TRANSPARENT_ALPHA_CHANNEL:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA:\r
                Alpha = true;\r
                break;\r
        case EMT_TRANSPARENT_ADD_COLOR:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR:\r
                FixedBlending = true;\r
                break;\r
        case EMT_ONETEXTURE_BLEND:\r
@@ -72,13 +68,9 @@ COGLES2MaterialRenderer::COGLES2MaterialRenderer(COGLES2Driver* driver,
        {\r
        case EMT_TRANSPARENT_VERTEX_ALPHA:\r
        case EMT_TRANSPARENT_ALPHA_CHANNEL:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA:\r
                Alpha = true;\r
                break;\r
        case EMT_TRANSPARENT_ADD_COLOR:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR:\r
                FixedBlending = true;\r
                break;\r
        case EMT_ONETEXTURE_BLEND:\r
diff --git a/source/Irrlicht/COGLES2NormalMapRenderer.cpp b/source/Irrlicht/COGLES2NormalMapRenderer.cpp
deleted file mode 100644 (file)
index cca941c..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (C) 2014 Patryk Nadrowski\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#include "COGLES2NormalMapRenderer.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OGLES2_\r
-\r
-#include "IMaterialRendererServices.h"\r
-#include "IGPUProgrammingServices.h"\r
-#include "IShaderConstantSetCallBack.h"\r
-#include "IVideoDriver.h"\r
-#include "SLight.h"\r
-#include "os.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-// EMT_NORMAL_MAP_SOLID + EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR + EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA\r
-\r
-COGLES2MaterialNormalMapCB::COGLES2MaterialNormalMapCB() :\r
-       FirstUpdate(true), WVPMatrixID(-1), WVMatrixID(-1), LightPositionID(-1), LightColorID(-1), TextureUnit0ID(-1), TextureUnit1ID(-1),\r
-       FogEnableID(-1), FogTypeID(-1), FogColorID(-1), FogStartID(-1), FogEndID(-1), FogDensityID(-1), TextureUnit0(0), TextureUnit1(1),\r
-       FogEnable(0), FogType(1), FogColor(SColorf(0.f, 0.f, 0.f, 1.f)), FogStart(0.f), FogEnd(0.f), FogDensity(0.f)\r
-{\r
-       for (u32 i = 0; i < 2; ++i)\r
-       {\r
-               LightPosition[i] = core::vector3df(0.f, 0.f, 0.f);\r
-               LightColor[i] = SColorf(0.f, 0.f, 0.f, 1.f);\r
-       }\r
-}\r
-\r
-void COGLES2MaterialNormalMapCB::OnSetMaterial(const SMaterial& material)\r
-{\r
-       if (material.FogEnable)\r
-               FogEnable = 1;\r
-       else\r
-               FogEnable = 0;\r
-}\r
-\r
-void COGLES2MaterialNormalMapCB::OnSetConstants(IMaterialRendererServices* services, s32 userData)\r
-{\r
-       IVideoDriver* driver = services->getVideoDriver();\r
-\r
-       if (FirstUpdate)\r
-       {\r
-               WVPMatrixID = services->getVertexShaderConstantID("uWVPMatrix");\r
-               WVMatrixID = services->getVertexShaderConstantID("uWVMatrix");\r
-               LightPositionID = services->getVertexShaderConstantID("uLightPosition");\r
-               LightColorID = services->getVertexShaderConstantID("uLightColor");\r
-               TextureUnit0ID = services->getVertexShaderConstantID("uTextureUnit0");\r
-               TextureUnit1ID = services->getVertexShaderConstantID("uTextureUnit1");\r
-               FogEnableID = services->getVertexShaderConstantID("uFogEnable");\r
-               FogTypeID = services->getVertexShaderConstantID("uFogType");\r
-               FogColorID = services->getVertexShaderConstantID("uFogColor");\r
-               FogStartID = services->getVertexShaderConstantID("uFogStart");\r
-               FogEndID = services->getVertexShaderConstantID("uFogEnd");\r
-               FogDensityID = services->getVertexShaderConstantID("uFogDensity");\r
-\r
-               FirstUpdate = false;\r
-       }\r
-\r
-       const core::matrix4 W = driver->getTransform(ETS_WORLD);\r
-       const core::matrix4 V = driver->getTransform(ETS_VIEW);\r
-       const core::matrix4 P = driver->getTransform(ETS_PROJECTION);\r
-\r
-       core::matrix4 Matrix = P * V * W;\r
-       services->setPixelShaderConstant(WVPMatrixID, Matrix.pointer(), 16);\r
-\r
-       Matrix = V * W;\r
-       services->setPixelShaderConstant(WVMatrixID, Matrix.pointer(), 16);\r
-\r
-       Matrix = W;\r
-       Matrix.makeInverse();\r
-\r
-       const u32 LightCount = driver->getDynamicLightCount();\r
-\r
-       for (u32 i = 0; i < 2; ++i)\r
-       {\r
-               SLight CurrentLight;\r
-\r
-               if (i < LightCount)\r
-                       CurrentLight = driver->getDynamicLight(i);\r
-               else\r
-               {\r
-                       CurrentLight.DiffuseColor.set(0.f, 0.f, 0.f);\r
-                       CurrentLight.Radius = 1.f;\r
-               }\r
-\r
-               CurrentLight.DiffuseColor.a = 1.f / (CurrentLight.Radius*CurrentLight.Radius);\r
-\r
-               Matrix.transformVect(CurrentLight.Position);\r
-\r
-               LightPosition[i] = CurrentLight.Position;\r
-               LightColor[i] = CurrentLight.DiffuseColor;\r
-       }\r
-\r
-       services->setPixelShaderConstant(LightPositionID, reinterpret_cast<f32*>(LightPosition), 6);\r
-       services->setPixelShaderConstant(LightColorID, reinterpret_cast<f32*>(LightColor), 8);\r
-\r
-       services->setPixelShaderConstant(TextureUnit0ID, &TextureUnit0, 1);\r
-       services->setPixelShaderConstant(TextureUnit1ID, &TextureUnit1, 1);\r
-\r
-       services->setPixelShaderConstant(FogEnableID, &FogEnable, 1);\r
-\r
-       if (FogEnable)\r
-       {\r
-               SColor TempColor(0);\r
-               E_FOG_TYPE TempType = EFT_FOG_LINEAR;\r
-               bool TempPerFragment = false;\r
-               bool TempRange = false;\r
-\r
-               driver->getFog(TempColor, TempType, FogStart, FogEnd, FogDensity, TempPerFragment, TempRange);\r
-\r
-               FogType = (s32)TempType;\r
-               FogColor = SColorf(TempColor);\r
-\r
-               services->setPixelShaderConstant(FogTypeID, &FogType, 1);\r
-               services->setPixelShaderConstant(FogColorID, reinterpret_cast<f32*>(&FogColor), 4);\r
-               services->setPixelShaderConstant(FogStartID, &FogStart, 1);\r
-               services->setPixelShaderConstant(FogEndID, &FogEnd, 1);\r
-               services->setPixelShaderConstant(FogDensityID, &FogDensity, 1);\r
-       }\r
-}\r
-\r
-}\r
-}\r
-\r
-#endif\r
-\r
diff --git a/source/Irrlicht/COGLES2NormalMapRenderer.h b/source/Irrlicht/COGLES2NormalMapRenderer.h
deleted file mode 100644 (file)
index 36ae5c4..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2014 Patryk Nadrowski\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_OGLES2_NORMAL_MAP_RENDERER_H_INCLUDED__\r
-#define __C_OGLES2_NORMAL_MAP_RENDERER_H_INCLUDED__\r
-\r
-#include "IrrCompileConfig.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OGLES2_\r
-\r
-#include "IMaterialRenderer.h"\r
-#include "IShaderConstantSetCallBack.h"\r
-\r
-#include "COGLES2Common.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-class COGLES2MaterialNormalMapCB : public IShaderConstantSetCallBack\r
-{\r
-public:\r
-       COGLES2MaterialNormalMapCB();\r
-\r
-       virtual void OnSetMaterial(const SMaterial& material);\r
-       virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
-\r
-protected:\r
-       bool FirstUpdate;\r
-       s32 WVPMatrixID;\r
-       s32 WVMatrixID;\r
-       s32 LightPositionID;\r
-       s32 LightColorID;\r
-       s32 TextureUnit0ID;\r
-       s32 TextureUnit1ID;\r
-       s32 FogEnableID;\r
-       s32 FogTypeID;\r
-       s32 FogColorID;\r
-       s32 FogStartID;\r
-       s32 FogEndID;\r
-       s32 FogDensityID;\r
-\r
-       core::vector3df LightPosition[2];\r
-       SColorf LightColor[2];\r
-       s32 TextureUnit0;\r
-       s32 TextureUnit1;\r
-       s32 FogEnable;\r
-       s32 FogType;\r
-       SColorf FogColor;\r
-       f32 FogStart;\r
-       f32 FogEnd;\r
-       f32 FogDensity;\r
-};\r
-\r
-}\r
-}\r
-\r
-#endif\r
-#endif\r
-\r
diff --git a/source/Irrlicht/COGLES2ParallaxMapRenderer.cpp b/source/Irrlicht/COGLES2ParallaxMapRenderer.cpp
deleted file mode 100644 (file)
index 9f1fa07..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright (C) 2014 Patryk Nadrowski\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#include "COGLES2ParallaxMapRenderer.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OGLES2_\r
-\r
-#include "IMaterialRendererServices.h"\r
-#include "IGPUProgrammingServices.h"\r
-#include "IShaderConstantSetCallBack.h"\r
-#include "IVideoDriver.h"\r
-#include "SLight.h"\r
-#include "os.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-// EMT_PARALLAX_MAP_SOLID + EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR + EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA\r
-\r
-COGLES2MaterialParallaxMapCB::COGLES2MaterialParallaxMapCB() :\r
-       FirstUpdate(true), WVPMatrixID(-1), WVMatrixID(-1), EyePositionID(-1), LightPositionID(-1), LightColorID(-1), FactorID(-1), TextureUnit0ID(-1), TextureUnit1ID(-1),\r
-       FogEnableID(-1), FogTypeID(-1), FogColorID(-1), FogStartID(-1), FogEndID(-1), FogDensityID(-1), Factor(0.02f), TextureUnit0(0), TextureUnit1(1),\r
-       FogEnable(0), FogType(1), FogColor(SColorf(0.f, 0.f, 0.f, 1.f)), FogStart(0.f), FogEnd(0.f), FogDensity(0.f)\r
-{\r
-       for (u32 i = 0; i < 2; ++i)\r
-       {\r
-               LightPosition[i] = core::vector3df(0.f, 0.f, 0.f);\r
-               LightColor[i] = SColorf(0.f, 0.f, 0.f, 1.f);\r
-       }\r
-}\r
-\r
-void COGLES2MaterialParallaxMapCB::OnSetMaterial(const SMaterial& material)\r
-{\r
-       if (!core::equals(material.MaterialTypeParam, 0.f))\r
-               Factor = material.MaterialTypeParam;\r
-       else\r
-               Factor = 0.02f;\r
-\r
-       if (material.FogEnable)\r
-               FogEnable = 1;\r
-       else\r
-               FogEnable = 0;\r
-}\r
-\r
-void COGLES2MaterialParallaxMapCB::OnSetConstants(IMaterialRendererServices* services, s32 userData)\r
-{\r
-       IVideoDriver* driver = services->getVideoDriver();\r
-\r
-       if (FirstUpdate)\r
-       {\r
-               WVPMatrixID = services->getVertexShaderConstantID("uWVPMatrix");\r
-               WVMatrixID = services->getVertexShaderConstantID("uWVMatrix");\r
-               EyePositionID = services->getVertexShaderConstantID("uEyePosition");\r
-               LightPositionID = services->getVertexShaderConstantID("uLightPosition");\r
-               LightColorID = services->getVertexShaderConstantID("uLightColor");\r
-               FactorID = services->getVertexShaderConstantID("uFactor");\r
-               TextureUnit0ID = services->getVertexShaderConstantID("uTextureUnit0");\r
-               TextureUnit1ID = services->getVertexShaderConstantID("uTextureUnit1");\r
-               FogEnableID = services->getVertexShaderConstantID("uFogEnable");\r
-               FogTypeID = services->getVertexShaderConstantID("uFogType");\r
-               FogColorID = services->getVertexShaderConstantID("uFogColor");\r
-               FogStartID = services->getVertexShaderConstantID("uFogStart");\r
-               FogEndID = services->getVertexShaderConstantID("uFogEnd");\r
-               FogDensityID = services->getVertexShaderConstantID("uFogDensity");\r
-\r
-               FirstUpdate = false;\r
-       }\r
-\r
-       const core::matrix4 W = driver->getTransform(ETS_WORLD);\r
-       const core::matrix4 V = driver->getTransform(ETS_VIEW);\r
-       const core::matrix4 P = driver->getTransform(ETS_PROJECTION);\r
-\r
-       core::matrix4 Matrix = P * V * W;\r
-       services->setPixelShaderConstant(WVPMatrixID, Matrix.pointer(), 16);\r
-\r
-       Matrix = V * W;\r
-       services->setPixelShaderConstant(WVMatrixID, Matrix.pointer(), 16);\r
-\r
-       core::vector3df EyePosition(0.0f, 0.0f, 0.0f);\r
-\r
-       Matrix.makeInverse();\r
-       Matrix.transformVect(EyePosition);\r
-       services->setPixelShaderConstant(EyePositionID, reinterpret_cast<f32*>(&EyePosition), 3);\r
-\r
-       Matrix = W;\r
-       Matrix.makeInverse();\r
-\r
-       const u32 LightCount = driver->getDynamicLightCount();\r
-\r
-       for (u32 i = 0; i < 2; ++i)\r
-       {\r
-               SLight CurrentLight;\r
-\r
-               if (i < LightCount)\r
-                       CurrentLight = driver->getDynamicLight(i);\r
-               else\r
-               {\r
-                       CurrentLight.DiffuseColor.set(0.f, 0.f, 0.f);\r
-                       CurrentLight.Radius = 1.f;\r
-               }\r
-\r
-               CurrentLight.DiffuseColor.a = 1.f / (CurrentLight.Radius*CurrentLight.Radius);\r
-\r
-               Matrix.transformVect(CurrentLight.Position);\r
-\r
-               LightPosition[i] = CurrentLight.Position;\r
-               LightColor[i] = CurrentLight.DiffuseColor;\r
-       }\r
-\r
-       services->setPixelShaderConstant(LightPositionID, reinterpret_cast<f32*>(LightPosition), 6);\r
-       services->setPixelShaderConstant(LightColorID, reinterpret_cast<f32*>(LightColor), 8);\r
-\r
-       services->setPixelShaderConstant(FactorID, &Factor, 1);\r
-       services->setPixelShaderConstant(TextureUnit0ID, &TextureUnit0, 1);\r
-       services->setPixelShaderConstant(TextureUnit1ID, &TextureUnit1, 1);\r
-\r
-       services->setPixelShaderConstant(FogEnableID, &FogEnable, 1);\r
-\r
-       if (FogEnable)\r
-       {\r
-               SColor TempColor(0);\r
-               E_FOG_TYPE TempType = EFT_FOG_LINEAR;\r
-               bool TempPerFragment = false;\r
-               bool TempRange = false;\r
-\r
-               driver->getFog(TempColor, TempType, FogStart, FogEnd, FogDensity, TempPerFragment, TempRange);\r
-\r
-               FogType = (s32)TempType;\r
-               FogColor = SColorf(TempColor);\r
-\r
-               services->setPixelShaderConstant(FogTypeID, &FogType, 1);\r
-               services->setPixelShaderConstant(FogColorID, reinterpret_cast<f32*>(&FogColor), 4);\r
-               services->setPixelShaderConstant(FogStartID, &FogStart, 1);\r
-               services->setPixelShaderConstant(FogEndID, &FogEnd, 1);\r
-               services->setPixelShaderConstant(FogDensityID, &FogDensity, 1);\r
-       }\r
-}\r
-\r
-}\r
-}\r
-\r
-#endif\r
-\r
diff --git a/source/Irrlicht/COGLES2ParallaxMapRenderer.h b/source/Irrlicht/COGLES2ParallaxMapRenderer.h
deleted file mode 100644 (file)
index ea9c1db..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (C) 2014 Patryk Nadrowski\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_OGLES2_PARALLAX_MAP_RENDERER_H_INCLUDED__\r
-#define __C_OGLES2_PARALLAX_MAP_RENDERER_H_INCLUDED__\r
-\r
-#include "IrrCompileConfig.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OGLES2_\r
-\r
-#include "IMaterialRenderer.h"\r
-#include "IShaderConstantSetCallBack.h"\r
-\r
-#include "COGLES2Common.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-class COGLES2MaterialParallaxMapCB : public IShaderConstantSetCallBack\r
-{\r
-public:\r
-       COGLES2MaterialParallaxMapCB();\r
-\r
-       virtual void OnSetMaterial(const SMaterial& material);\r
-       virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData);\r
-\r
-protected:\r
-       bool FirstUpdate;\r
-       s32 WVPMatrixID;\r
-       s32 WVMatrixID;\r
-       s32 EyePositionID;\r
-       s32 LightPositionID;\r
-       s32 LightColorID;\r
-       s32 FactorID;\r
-       s32 TextureUnit0ID;\r
-       s32 TextureUnit1ID;\r
-       s32 FogEnableID;\r
-       s32 FogTypeID;\r
-       s32 FogColorID;\r
-       s32 FogStartID;\r
-       s32 FogEndID;\r
-       s32 FogDensityID;\r
-\r
-       core::vector3df LightPosition[2];\r
-       SColorf LightColor[2];\r
-       f32 Factor;\r
-       s32 TextureUnit0;\r
-       s32 TextureUnit1;\r
-       s32 FogEnable;\r
-       s32 FogType;\r
-       SColorf FogColor;\r
-       f32 FogStart;\r
-       f32 FogEnd;\r
-       f32 FogDensity;\r
-};\r
-\r
-}\r
-}\r
-\r
-#endif\r
-#endif\r
-\r
index 2bce88a24b19edc74c6ce90c980cb66c8ad7f90e..44154023c94ccd93cbae016ffe6e186b507b93a4 100644 (file)
@@ -184,17 +184,6 @@ void COGLES1Driver::createMaterialRenderers()
        addAndDropMaterialRenderer(new COGLES1MaterialRenderer_TRANSPARENT_VERTEX_ALPHA(this));\r
        addAndDropMaterialRenderer(new COGLES1MaterialRenderer_TRANSPARENT_REFLECTION_2_LAYER(this));\r
 \r
-       // add normal map renderers\r
-// TODO ogl-es\r
-       addAndDropMaterialRenderer(new COGLES1MaterialRenderer_SOLID(this));\r
-       addAndDropMaterialRenderer(new COGLES1MaterialRenderer_SOLID(this));\r
-       addAndDropMaterialRenderer(new COGLES1MaterialRenderer_SOLID(this));\r
-\r
-       // add parallax map renderers\r
-       addAndDropMaterialRenderer(new COGLES1MaterialRenderer_SOLID(this));\r
-       addAndDropMaterialRenderer(new COGLES1MaterialRenderer_SOLID(this));\r
-       addAndDropMaterialRenderer(new COGLES1MaterialRenderer_SOLID(this));\r
-\r
        // add basic 1 texture blending\r
        addAndDropMaterialRenderer(new COGLES1MaterialRenderer_ONETEXTURE_BLEND(this));\r
 }\r
index 68351efca9c5eb7002705ce0450c799352c5f9df..39ec18e15c2e5135d2a485e31fb3bd5ff11d011f 100644 (file)
@@ -14,8 +14,6 @@
 #include "COpenGLMaterialRenderer.h"\r
 #include "COpenGLShaderMaterialRenderer.h"\r
 #include "COpenGLSLMaterialRenderer.h"\r
-#include "COpenGLNormalMapRenderer.h"\r
-#include "COpenGLParallaxMapRenderer.h"\r
 \r
 #include "COpenGLCoreTexture.h"\r
 #include "COpenGLCoreRenderTarget.h"\r
@@ -258,24 +256,6 @@ void COpenGLDriver::createMaterialRenderers()
        addAndDropMaterialRenderer(new COpenGLMaterialRenderer_TRANSPARENT_VERTEX_ALPHA(this));\r
        addAndDropMaterialRenderer(new COpenGLMaterialRenderer_TRANSPARENT_REFLECTION_2_LAYER(this));\r
 \r
-       // add normal map renderers\r
-       s32 tmp = 0;\r
-       video::IMaterialRenderer* renderer = 0;\r
-       renderer = new COpenGLNormalMapRenderer(this, tmp, EMT_SOLID);\r
-       renderer->drop();\r
-       renderer = new COpenGLNormalMapRenderer(this, tmp, EMT_TRANSPARENT_ADD_COLOR);\r
-       renderer->drop();\r
-       renderer = new COpenGLNormalMapRenderer(this, tmp, EMT_TRANSPARENT_VERTEX_ALPHA);\r
-       renderer->drop();\r
-\r
-       // add parallax map renderers\r
-       renderer = new COpenGLParallaxMapRenderer(this, tmp, EMT_SOLID);\r
-       renderer->drop();\r
-       renderer = new COpenGLParallaxMapRenderer(this, tmp, EMT_TRANSPARENT_ADD_COLOR);\r
-       renderer->drop();\r
-       renderer = new COpenGLParallaxMapRenderer(this, tmp, EMT_TRANSPARENT_VERTEX_ALPHA);\r
-       renderer->drop();\r
-\r
        // add basic 1 texture blending\r
        addAndDropMaterialRenderer(new COpenGLMaterialRenderer_ONETEXTURE_BLEND(this));\r
 }\r
diff --git a/source/Irrlicht/COpenGLNormalMapRenderer.cpp b/source/Irrlicht/COpenGLNormalMapRenderer.cpp
deleted file mode 100644 (file)
index 5bbad4f..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#include "COpenGLNormalMapRenderer.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OPENGL_\r
-\r
-#include "IGPUProgrammingServices.h"\r
-#include "IShaderConstantSetCallBack.h"\r
-#include "IVideoDriver.h"\r
-#include "os.h"\r
-\r
-#include "COpenGLDriver.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-// Irrlicht Engine OpenGL render path normal map vertex shader\r
-// I guess it could be optimized a lot, because I wrote it in D3D ASM and\r
-// transferred it 1:1 to OpenGL\r
-const char OPENGL_NORMAL_MAP_VSH[] =\r
-       "!!ARBvp1.0\n"\\r
-       "#input\n"\\r
-       "# 0-3: transposed world matrix;\n"\\r
-       "#;12: Light01 position \n"\\r
-       "#;13: x,y,z: Light01 color; .w: 1/LightRadius^2 \n"\\r
-       "#;14: Light02 position \n"\\r
-       "#;15: x,y,z: Light02 color; .w: 1/LightRadius^2 \n"\\r
-       "\n"\\r
-       "ATTRIB InPos = vertex.position;\n"\\r
-       "ATTRIB InColor = vertex.color;\n"\\r
-       "ATTRIB InNormal = vertex.normal;\n"\\r
-       "ATTRIB InTexCoord = vertex.texcoord[0];\n"\\r
-       "ATTRIB InTangent = vertex.texcoord[1];\n"\\r
-       "ATTRIB InBinormal = vertex.texcoord[2];\n"\\r
-       "\n"\\r
-       "#output\n"\\r
-       "OUTPUT OutPos = result.position;\n"\\r
-       "OUTPUT OutLightColor1 = result.color.primary;\n"\\r
-       "OUTPUT OutLightColor2 = result.color.secondary;\n"\\r
-       "OUTPUT OutTexCoord = result.texcoord[0];\n"\\r
-       "OUTPUT OutLightVector1 = result.texcoord[1];\n"\\r
-       "OUTPUT OutLightVector2 = result.texcoord[2];\n"\\r
-       "\n"\\r
-       "PARAM MVP[4] = { state.matrix.mvp }; # modelViewProjection matrix.\n"\\r
-       "TEMP Temp;\n"\\r
-       "TEMP TempColor;\n"\\r
-       "TEMP TempLightVector1;\n"\\r
-       "TEMP TempLightVector2;\n"\\r
-       "TEMP TempTransLightV1;\n"\\r
-       "TEMP TempTransLightV2;\n"\\r
-       "\n"\\r
-       "# transform position to clip space \n"\\r
-       "DP4 OutPos.x, MVP[0], InPos;\n"\\r
-       "DP4 OutPos.y, MVP[1], InPos;\n"\\r
-       "DP4 Temp.z, MVP[2], InPos;\n"\\r
-       "DP4 OutPos.w, MVP[3], InPos;\n"\\r
-       "MOV OutPos.z, Temp.z;\n"\\r
-       "MOV result.fogcoord.x, Temp.z;\n"\\r
-       "\n"\\r
-       "# vertex - lightpositions \n"\\r
-       "SUB TempLightVector1, program.local[12], InPos; \n"\\r
-       "SUB TempLightVector2, program.local[14], InPos; \n"\\r
-       "\n"\\r
-       "# transform the light vector 1 with U, V, W \n"\\r
-       "DP3 TempTransLightV1.x, InTangent, TempLightVector1; \n"\\r
-       "DP3 TempTransLightV1.y, InBinormal, TempLightVector1; \n"\\r
-       "DP3 TempTransLightV1.z, InNormal, TempLightVector1; \n"\\r
-       "\n"\\r
-       "# transform the light vector 2 with U, V, W \n"\\r
-       "DP3 TempTransLightV2.x, InTangent, TempLightVector2; \n"\\r
-       "DP3 TempTransLightV2.y, InBinormal, TempLightVector2; \n"\\r
-       "DP3 TempTransLightV2.z, InNormal, TempLightVector2; \n"\\r
-       "\n"\\r
-       "# normalize light vector 1 \n"\\r
-       "DP3 TempTransLightV1.w, TempTransLightV1, TempTransLightV1; \n"\\r
-       "RSQ TempTransLightV1.w, TempTransLightV1.w; \n"\\r
-       "MUL TempTransLightV1, TempTransLightV1, TempTransLightV1.w;\n"\\r
-       "\n"\\r
-       "# normalize light vector 2 \n"\\r
-       "DP3 TempTransLightV2.w, TempTransLightV2, TempTransLightV2; \n"\\r
-       "RSQ TempTransLightV2.w, TempTransLightV2.w; \n"\\r
-       "MUL TempTransLightV2, TempTransLightV2, TempTransLightV2.w;\n"\\r
-       "\n"\\r
-       "\n"\\r
-       "# move light vectors out\n"\\r
-       "MAD OutLightVector1, TempTransLightV1, {0.5,0.5,0.5,0.5}, {0.5,0.5,0.5,0.5}; \n"\\r
-       "MAD OutLightVector2, TempTransLightV2, {0.5,0.5,0.5,0.5}, {0.5,0.5,0.5,0.5}; \n"\\r
-       "\n"\\r
-       "# calculate attenuation of light 1\n"\\r
-       "MOV TempLightVector1.w, {0,0,0,0}; \n"\\r
-       "DP3 TempLightVector1.x, TempLightVector1, TempLightVector1; \n"\\r
-       "MUL TempLightVector1.x, TempLightVector1.x, program.local[13].w;  \n"\\r
-       "RSQ TempLightVector1, TempLightVector1.x; \n"\\r
-       "MUL OutLightColor1, TempLightVector1, program.local[13]; # resulting light color = lightcolor * attenuation \n"\\r
-       "\n"\\r
-       "# calculate attenuation of light 2\n"\\r
-       "MOV TempLightVector2.w, {0,0,0,0}; \n"\\r
-       "DP3 TempLightVector2.x, TempLightVector2, TempLightVector2; \n"\\r
-       "MUL TempLightVector2.x, TempLightVector2.x, program.local[15].w;  \n"\\r
-       "RSQ TempLightVector2, TempLightVector2.x; \n"\\r
-       "MUL OutLightColor2, TempLightVector2, program.local[15]; # resulting light color = lightcolor * attenuation \n"\\r
-       "\n"\\r
-       "# move out texture coordinates and original alpha value\n"\\r
-       "MOV OutTexCoord, InTexCoord; \n"\\r
-       "MOV OutLightColor1.w, InColor.w; \n"\\r
-       "\n"\\r
-       "END\n";\r
-\r
-// Irrlicht Engine OpenGL render path normal map pixel shader\r
-// I guess it could be optimized a bit, because I wrote it in D3D ASM and\r
-// transfered it 1:1 to OpenGL\r
-const char OPENGL_NORMAL_MAP_PSH[] =\r
-       "!!ARBfp1.0\n"\\r
-       "#_IRR_FOG_MODE_\n"\\r
-       "\n"\\r
-       "#Input\n"\\r
-       "ATTRIB inTexCoord = fragment.texcoord[0];   \n"\\r
-       "ATTRIB light1Vector = fragment.texcoord[1]; \n"\\r
-       "ATTRIB light2Vector = fragment.texcoord[2];    \n"\\r
-       "ATTRIB light1Color = fragment.color.primary;   \n"\\r
-       "ATTRIB light2Color = fragment.color.secondary; \n"\\r
-       "\n"\\r
-       "#Output\n"\\r
-       "OUTPUT outColor = result.color;\n"\\r
-       "TEMP temp;\n"\\r
-       "TEMP temp2;\n"\\r
-       "TEMP colorMapColor;\n"\\r
-       "TEMP normalMapColor;\n"\\r
-       "\n"\\r
-       "# fetch color and normal map; \n"\\r
-       "TXP colorMapColor, inTexCoord, texture[0], 2D; \n"\\r
-       "TXP normalMapColor, inTexCoord, texture[1], 2D; \n"\\r
-       "\n"\\r
-       "# calculate color of light1; \n"\\r
-       "MAD normalMapColor, normalMapColor, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "MAD temp, light1Vector, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "DP3_SAT temp, normalMapColor, temp; \n"\\r
-       "MUL temp, light1Color, temp; \n"\\r
-       "\n"\\r
-       "# calculate color of light2; \n"\\r
-       "MAD temp2, light2Vector, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "DP3_SAT temp2, normalMapColor, temp2; \n"\\r
-       "MAD temp, light2Color, temp2, temp; \n"\\r
-       "\n"\\r
-       "# luminance * base color; \n"\\r
-       "MUL outColor, temp, colorMapColor; \n"\\r
-       "MOV outColor.a, light1Color.a; #write interpolated vertex alpha value\n"\\r
-       "\n"\\r
-       "END\n";\r
-\r
-//! Constructor\r
-COpenGLNormalMapRenderer::COpenGLNormalMapRenderer(video::COpenGLDriver* driver,\r
-       s32& outMaterialTypeNr, E_MATERIAL_TYPE baseMaterial)\r
-       : COpenGLShaderMaterialRenderer(driver, 0, baseMaterial), CompiledShaders(true)\r
-{\r
-\r
-       #ifdef _DEBUG\r
-       setDebugName("COpenGLNormalMapRenderer");\r
-       #endif\r
-\r
-       // set this as callback. We could have done this in\r
-       // the initialization list, but some compilers don't like it.\r
-\r
-       CallBack = this;\r
-\r
-       // basically, this thing simply compiles the hardcoded shaders if the\r
-       // hardware is able to do them, otherwise it maps to the base material\r
-\r
-       if (!driver->queryFeature(video::EVDF_ARB_FRAGMENT_PROGRAM_1) ||\r
-               !driver->queryFeature(video::EVDF_ARB_VERTEX_PROGRAM_1))\r
-       {\r
-               // this hardware is not able to do shaders. Fall back to\r
-               // base material.\r
-               outMaterialTypeNr = driver->addMaterialRenderer(this);\r
-               return;\r
-       }\r
-\r
-       // check if already compiled normal map shaders are there.\r
-\r
-       video::IMaterialRenderer* renderer = driver->getMaterialRenderer(EMT_NORMAL_MAP_SOLID);\r
-\r
-       if (renderer)\r
-       {\r
-               // use the already compiled shaders\r
-               video::COpenGLNormalMapRenderer* nmr = reinterpret_cast<video::COpenGLNormalMapRenderer*>(renderer);\r
-               CompiledShaders = false;\r
-\r
-               VertexShader = nmr->VertexShader;\r
-               PixelShader = nmr->PixelShader;\r
-\r
-               outMaterialTypeNr = driver->addMaterialRenderer(this);\r
-       }\r
-       else\r
-       {\r
-               // compile shaders on our own\r
-               init(outMaterialTypeNr, OPENGL_NORMAL_MAP_VSH, OPENGL_NORMAL_MAP_PSH, EVT_TANGENTS);\r
-       }\r
-\r
-       // fallback if compilation has failed\r
-       if (-1==outMaterialTypeNr)\r
-               outMaterialTypeNr = driver->addMaterialRenderer(this);\r
-}\r
-\r
-\r
-//! Destructor\r
-COpenGLNormalMapRenderer::~COpenGLNormalMapRenderer()\r
-{\r
-       if (CallBack == this)\r
-               CallBack = 0;\r
-\r
-       if (!CompiledShaders)\r
-       {\r
-               // prevent this from deleting shaders we did not create\r
-               VertexShader = 0;\r
-               PixelShader.clear();\r
-       }\r
-}\r
-\r
-\r
-//! Returns the render capability of the material.\r
-s32 COpenGLNormalMapRenderer::getRenderCapability() const\r
-{\r
-       if (Driver->queryFeature(video::EVDF_ARB_FRAGMENT_PROGRAM_1) &&\r
-               Driver->queryFeature(video::EVDF_ARB_VERTEX_PROGRAM_1))\r
-               return 0;\r
-\r
-       return 1;\r
-}\r
-\r
-\r
-//! Called by the engine when the vertex and/or pixel shader constants for an\r
-//! material renderer should be set.\r
-void COpenGLNormalMapRenderer::OnSetConstants(IMaterialRendererServices* services, s32 userData)\r
-{\r
-       video::IVideoDriver* driver = services->getVideoDriver();\r
-\r
-       // set transposed world matrix\r
-       const core::matrix4& tWorld = driver->getTransform(video::ETS_WORLD).getTransposed();\r
-       services->setVertexShaderConstant(tWorld.pointer(), 0, 4);\r
-\r
-       // set transposed worldViewProj matrix\r
-       core::matrix4 worldViewProj(driver->getTransform(video::ETS_PROJECTION));\r
-       worldViewProj *= driver->getTransform(video::ETS_VIEW);\r
-       worldViewProj *= driver->getTransform(video::ETS_WORLD);\r
-       core::matrix4 tr(worldViewProj.getTransposed());\r
-       services->setVertexShaderConstant(tr.pointer(), 8, 4);\r
-\r
-       // here we fetch the fixed function lights from the driver\r
-       // and set them as constants\r
-\r
-       u32 cnt = driver->getDynamicLightCount();\r
-\r
-       // Load the inverse world matrix.\r
-       core::matrix4 invWorldMat;\r
-       driver->getTransform(video::ETS_WORLD).getInverse(invWorldMat);\r
-\r
-       for (u32 i=0; i<2; ++i)\r
-       {\r
-               video::SLight light;\r
-\r
-               if (i<cnt)\r
-                       light = driver->getDynamicLight(i);\r
-               else\r
-               {\r
-                       light.DiffuseColor.set(0,0,0); // make light dark\r
-                       light.Radius = 1.0f;\r
-               }\r
-\r
-               light.DiffuseColor.a = 1.0f/(light.Radius*light.Radius); // set attenuation\r
-\r
-               // Transform the light by the inverse world matrix to get it into object space.\r
-               invWorldMat.transformVect(light.Position);\r
-\r
-               services->setVertexShaderConstant(\r
-                       reinterpret_cast<const f32*>(&light.Position), 12+(i*2), 1);\r
-\r
-               services->setVertexShaderConstant(\r
-                       reinterpret_cast<const f32*>(&light.DiffuseColor), 13+(i*2), 1);\r
-       }\r
-}\r
-\r
-\r
-} // end namespace video\r
-} // end namespace irr\r
-\r
-\r
-#endif\r
-\r
diff --git a/source/Irrlicht/COpenGLNormalMapRenderer.h b/source/Irrlicht/COpenGLNormalMapRenderer.h
deleted file mode 100644 (file)
index f9991ad..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_OPENGL_NORMAL_MAP_RENDERER_H_INCLUDED__\r
-#define __C_OPENGL_NORMAL_MAP_RENDERER_H_INCLUDED__\r
-\r
-#include "IrrCompileConfig.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OPENGL_\r
-\r
-#include "IShaderConstantSetCallBack.h"\r
-\r
-#include "COpenGLShaderMaterialRenderer.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-//! Class for rendering normal maps with OpenGL\r
-class COpenGLNormalMapRenderer : public COpenGLShaderMaterialRenderer, public IShaderConstantSetCallBack\r
-{\r
-public:\r
-\r
-       //! Constructor\r
-       COpenGLNormalMapRenderer(video::COpenGLDriver* driver,\r
-               s32& outMaterialTypeNr, E_MATERIAL_TYPE baseMaterial);\r
-\r
-       //! Destructor\r
-       ~COpenGLNormalMapRenderer();\r
-\r
-       //! Called by the engine when the vertex and/or pixel shader constants for an\r
-       //! material renderer should be set.\r
-       virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData) _IRR_OVERRIDE_;\r
-\r
-       //! Returns the render capability of the material.\r
-       virtual s32 getRenderCapability() const _IRR_OVERRIDE_;\r
-\r
-protected:\r
-\r
-       bool CompiledShaders;\r
-};\r
-\r
-\r
-} // end namespace video\r
-} // end namespace irr\r
-\r
-#endif\r
-#endif\r
-\r
diff --git a/source/Irrlicht/COpenGLParallaxMapRenderer.cpp b/source/Irrlicht/COpenGLParallaxMapRenderer.cpp
deleted file mode 100644 (file)
index 065cea2..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#include "COpenGLParallaxMapRenderer.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OPENGL_\r
-\r
-#include "IGPUProgrammingServices.h"\r
-#include "IShaderConstantSetCallBack.h"\r
-#include "IVideoDriver.h"\r
-#include "os.h"\r
-\r
-#include "COpenGLDriver.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-// Irrlicht Engine OpenGL render path parallax map vertex shader\r
-// I guess it could be optimized a lot, because I wrote it in D3D ASM and\r
-// transferred it 1:1 to OpenGL\r
-const char OPENGL_PARALLAX_MAP_VSH[] =\r
-       "!!ARBvp1.0\n"\\r
-       "#input\n"\\r
-       "# 0-3: transposed world matrix;\n"\\r
-       "#;12: Light01 position \n"\\r
-       "#;13: x,y,z: Light01 color; .w: 1/LightRadius^2 \n"\\r
-       "#;14: Light02 position \n"\\r
-       "#;15: x,y,z: Light02 color; .w: 1/LightRadius^2 \n"\\r
-       "#;16: Eye position \n"\\r
-       "\n"\\r
-       "ATTRIB InPos = vertex.position;\n"\\r
-       "ATTRIB InColor = vertex.color;\n"\\r
-       "ATTRIB InNormal = vertex.normal;\n"\\r
-       "ATTRIB InTexCoord = vertex.texcoord[0];\n"\\r
-       "ATTRIB InTangent = vertex.texcoord[1];\n"\\r
-       "ATTRIB InBinormal = vertex.texcoord[2];\n"\\r
-       "\n"\\r
-       "#output\n"\\r
-       "OUTPUT OutPos = result.position;\n"\\r
-       "OUTPUT OutLightColor1 = result.color.primary;\n"\\r
-       "OUTPUT OutLightColor2 = result.color.secondary;\n"\\r
-       "OUTPUT OutTexCoord = result.texcoord[0];\n"\\r
-       "OUTPUT OutLightVector1 = result.texcoord[1];\n"\\r
-       "OUTPUT OutLightVector2 = result.texcoord[2];\n"\\r
-       "OUTPUT OutEyeVector = result.texcoord[3];\n"\\r
-       "\n"\\r
-       "PARAM MVP[4] = { state.matrix.mvp }; # modelViewProjection matrix.\n"\\r
-       "TEMP Temp;\n"\\r
-       "TEMP TempColor;\n"\\r
-       "TEMP TempLightVector1;\n"\\r
-       "TEMP TempLightVector2;\n"\\r
-       "TEMP TempEyeVector;\n"\\r
-       "TEMP TempTransLightV1;\n"\\r
-       "TEMP TempTransLightV2;\n"\\r
-       "\n"\\r
-       "# transform position to clip space \n"\\r
-       "DP4 OutPos.x, MVP[0], InPos;\n"\\r
-       "DP4 OutPos.y, MVP[1], InPos;\n"\\r
-       "DP4 Temp.z, MVP[2], InPos;\n"\\r
-       "DP4 OutPos.w, MVP[3], InPos;\n"\\r
-       "MOV OutPos.z, Temp.z;\n"\\r
-       "MOV result.fogcoord.x, Temp.z;\n"\\r
-       "\n"\\r
-       "# vertex - lightpositions \n"\\r
-       "SUB TempLightVector1, program.local[12], InPos; \n"\\r
-       "SUB TempLightVector2, program.local[14], InPos; \n"\\r
-       "\n"\\r
-       "# eye vector \n"\\r
-       "SUB Temp, program.local[16], InPos; \n"\\r
-       "\n"\\r
-       "# transform the light vector 1 with U, V, W \n"\\r
-       "DP3 TempTransLightV1.x, InTangent, TempLightVector1; \n"\\r
-       "DP3 TempTransLightV1.y, InBinormal, TempLightVector1; \n"\\r
-       "DP3 TempTransLightV1.z, InNormal, TempLightVector1; \n"\\r
-       "\n"\\r
-       "# transform the light vector 2 with U, V, W \n"\\r
-       "DP3 TempTransLightV2.x, InTangent, TempLightVector2; \n"\\r
-       "DP3 TempTransLightV2.y, InBinormal, TempLightVector2; \n"\\r
-       "DP3 TempTransLightV2.z, InNormal, TempLightVector2; \n"\\r
-       "\n"\\r
-       "# transform the eye vector with U, V, W \n"\\r
-       "DP3 TempEyeVector.x, InTangent, Temp; \n"\\r
-       "DP3 TempEyeVector.y, InBinormal, Temp; \n"\\r
-       "DP3 TempEyeVector.z, InNormal, Temp; \n"\\r
-       "\n"\\r
-       "# normalize light vector 1 \n"\\r
-       "DP3 TempTransLightV1.w, TempTransLightV1, TempTransLightV1; \n"\\r
-       "RSQ TempTransLightV1.w, TempTransLightV1.w; \n"\\r
-       "MUL TempTransLightV1, TempTransLightV1, TempTransLightV1.w;\n"\\r
-       "\n"\\r
-       "# normalize light vector 2 \n"\\r
-       "DP3 TempTransLightV2.w, TempTransLightV2, TempTransLightV2; \n"\\r
-       "RSQ TempTransLightV2.w, TempTransLightV2.w; \n"\\r
-       "MUL TempTransLightV2, TempTransLightV2, TempTransLightV2.w;\n"\\r
-       "\n"\\r
-       "# normalize eye vector \n"\\r
-       "DP3 TempEyeVector.w, TempEyeVector, TempEyeVector; \n"\\r
-       "RSQ TempEyeVector.w, TempEyeVector.w; \n"\\r
-       "MUL TempEyeVector, TempEyeVector, TempEyeVector.w;\n"\\r
-       "MUL TempEyeVector, TempEyeVector, {1,-1,-1,1}; # flip x \n"\\r
-       "\n"\\r
-       "\n"\\r
-       "# move light and eye vectors out\n"\\r
-       "MAD OutLightVector1, TempTransLightV1, {0.5,0.5,0.5,0.5}, {0.5,0.5,0.5,0.5}; \n"\\r
-       "MAD OutLightVector2, TempTransLightV2, {0.5,0.5,0.5,0.5}, {0.5,0.5,0.5,0.5}; \n"\\r
-       "MAD OutEyeVector, TempEyeVector, {0.5,0.5,0.5,0.5}, {0.5,0.5,0.5,0.5}; \n"\\r
-       "\n"\\r
-       "# calculate attenuation of light 1\n"\\r
-       "MOV TempLightVector1.w, {0,0,0,0}; \n"\\r
-       "DP3 TempLightVector1.x, TempLightVector1, TempLightVector1; \n"\\r
-       "MUL TempLightVector1.x, TempLightVector1.x, program.local[13].w;  \n"\\r
-       "RSQ TempLightVector1, TempLightVector1.x; \n"\\r
-       "MUL OutLightColor1, TempLightVector1, program.local[13]; # resulting light color = lightcolor * attenuation \n"\\r
-       "\n"\\r
-       "# calculate attenuation of light 2\n"\\r
-       "MOV TempLightVector2.w, {0,0,0,0}; \n"\\r
-       "DP3 TempLightVector2.x, TempLightVector2, TempLightVector2; \n"\\r
-       "MUL TempLightVector2.x, TempLightVector2.x, program.local[15].w;  \n"\\r
-       "RSQ TempLightVector2, TempLightVector2.x; \n"\\r
-       "MUL OutLightColor2, TempLightVector2, program.local[15]; # resulting light color = lightcolor * attenuation \n"\\r
-       "\n"\\r
-       "# move out texture coordinates and original alpha value\n"\\r
-       "MOV OutTexCoord, InTexCoord; \n"\\r
-       "MOV OutLightColor1.w, InColor.w; \n"\\r
-       "\n"\\r
-       "END\n";\r
-\r
-// Irrlicht Engine OpenGL render path parallax map pixel shader\r
-// I guess it could be optimized a bit, because I wrote it in D3D ASM and\r
-// transfered it 1:1 to OpenGL\r
-const char OPENGL_PARALLAX_MAP_PSH[] =\r
-       "!!ARBfp1.0\n"\\r
-       "#_IRR_FOG_MODE_\n"\\r
-       "\n"\\r
-       "#Input\n"\\r
-       "ATTRIB inTexCoord = fragment.texcoord[0];   \n"\\r
-       "ATTRIB light1Vector = fragment.texcoord[1]; \n"\\r
-       "ATTRIB light2Vector = fragment.texcoord[2];    \n"\\r
-       "ATTRIB eyeVector = fragment.texcoord[3];    \n"\\r
-       "ATTRIB light1Color = fragment.color.primary;   \n"\\r
-       "ATTRIB light2Color = fragment.color.secondary; \n"\\r
-       "\n"\\r
-       "#Output\n"\\r
-       "OUTPUT outColor = result.color;\n"\\r
-       "TEMP temp;\n"\\r
-       "TEMP temp2;\n"\\r
-       "TEMP colorMapColor;\n"\\r
-       "TEMP normalMapColor;\n"\\r
-       "\n"\\r
-       "PARAM height_scale = program.local[0]; \n"\\r
-       "# fetch color and normal map; \n"\\r
-       "TXP normalMapColor, inTexCoord, texture[1], 2D; \n"\\r
-       "MAD normalMapColor, normalMapColor, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "\n"\\r
-       "\n"\\r
-       "# extract eye vector (so substract 0.5f and multiply by 2)\n"\\r
-       "MAD temp, eyeVector, {2,2,2,2}, {-1,-1,-1,-1};\n"\\r
-       "\n"\\r
-       "# height = height * scale \n"\\r
-       "MUL normalMapColor, normalMapColor, height_scale;\n"\\r
-       "\n"\\r
-       "# calculate new texture coord: height * eye + oldTexCoord\n"\\r
-       "MAD temp, temp, normalMapColor.wwww, inTexCoord;\n"\\r
-       "\n"\\r
-       "# fetch new textures \n"\\r
-       "TXP colorMapColor, temp, texture[0], 2D; \n"\\r
-       "TXP normalMapColor, temp, texture[1], 2D; \n"\\r
-       "\n"\\r
-       "# calculate color of light1; \n"\\r
-       "MAD normalMapColor, normalMapColor, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "MAD temp, light1Vector, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "DP3_SAT temp, normalMapColor, temp; \n"\\r
-       "MUL temp, light1Color, temp; \n"\\r
-       "\n"\\r
-       "# calculate color of light2; \n"\\r
-       "MAD temp2, light2Vector, {2,2,2,2}, {-1,-1,-1,-1}; \n"\\r
-       "DP3_SAT temp2, normalMapColor, temp2; \n"\\r
-       "MAD temp, light2Color, temp2, temp; \n"\\r
-       "\n"\\r
-       "# luminance * base color; \n"\\r
-       "MUL outColor, temp, colorMapColor; \n"\\r
-       "MOV outColor.a, light1Color.a; #write interpolated vertex alpha value\n"\\r
-       "\n"\\r
-       "END\n";\r
-\r
-//! Constructor\r
-COpenGLParallaxMapRenderer::COpenGLParallaxMapRenderer(video::COpenGLDriver* driver,\r
-       s32& outMaterialTypeNr, E_MATERIAL_TYPE baseMaterial)\r
-       : COpenGLShaderMaterialRenderer(driver, 0, baseMaterial), CompiledShaders(true)\r
-{\r
-\r
-       #ifdef _DEBUG\r
-       setDebugName("COpenGLParallaxMapRenderer");\r
-       #endif\r
-\r
-       // set this as callback. We could have done this in\r
-       // the initialization list, but some compilers don't like it.\r
-\r
-       CallBack = this;\r
-\r
-       // basically, this simply compiles the hard coded shaders if the\r
-       // hardware is able to do them, otherwise it maps to the base material\r
-\r
-       if (!driver->queryFeature(video::EVDF_ARB_FRAGMENT_PROGRAM_1) ||\r
-               !driver->queryFeature(video::EVDF_ARB_VERTEX_PROGRAM_1))\r
-       {\r
-               // this hardware is not able to do shaders. Fall back to\r
-               // base material.\r
-               outMaterialTypeNr = driver->addMaterialRenderer(this);\r
-               return;\r
-       }\r
-\r
-       // check if already compiled normal map shaders are there.\r
-\r
-       video::IMaterialRenderer* renderer = driver->getMaterialRenderer(EMT_PARALLAX_MAP_SOLID);\r
-\r
-       if (renderer)\r
-       {\r
-               // use the already compiled shaders\r
-               video::COpenGLParallaxMapRenderer* nmr = reinterpret_cast<video::COpenGLParallaxMapRenderer*>(renderer);\r
-               CompiledShaders = false;\r
-\r
-               VertexShader = nmr->VertexShader;\r
-               PixelShader = nmr->PixelShader;\r
-\r
-               outMaterialTypeNr = driver->addMaterialRenderer(this);\r
-       }\r
-       else\r
-       {\r
-               // compile shaders on our own\r
-               init(outMaterialTypeNr, OPENGL_PARALLAX_MAP_VSH, OPENGL_PARALLAX_MAP_PSH, EVT_TANGENTS);\r
-       }\r
-\r
-       // fallback if compilation has failed\r
-       if (-1==outMaterialTypeNr)\r
-               outMaterialTypeNr = driver->addMaterialRenderer(this);\r
-}\r
-\r
-\r
-//! Destructor\r
-COpenGLParallaxMapRenderer::~COpenGLParallaxMapRenderer()\r
-{\r
-       if (CallBack == this)\r
-               CallBack = 0;\r
-\r
-       if (!CompiledShaders)\r
-       {\r
-               // prevent this from deleting shaders we did not create\r
-               VertexShader = 0;\r
-               PixelShader.clear();\r
-       }\r
-}\r
-\r
-\r
-void COpenGLParallaxMapRenderer::OnSetMaterial(const video::SMaterial& material,\r
-       const video::SMaterial& lastMaterial,\r
-       bool resetAllRenderstates, video::IMaterialRendererServices* services)\r
-{\r
-       COpenGLShaderMaterialRenderer::OnSetMaterial(material, lastMaterial,\r
-                       resetAllRenderstates, services);\r
-\r
-       CurrentScale = material.MaterialTypeParam;\r
-}\r
-\r
-\r
-\r
-//! Returns the render capability of the material.\r
-s32 COpenGLParallaxMapRenderer::getRenderCapability() const\r
-{\r
-       if (Driver->queryFeature(video::EVDF_ARB_FRAGMENT_PROGRAM_1) &&\r
-               Driver->queryFeature(video::EVDF_ARB_VERTEX_PROGRAM_1))\r
-               return 0;\r
-\r
-       return 1;\r
-}\r
-\r
-\r
-//! Called by the engine when the vertex and/or pixel shader constants for an\r
-//! material renderer should be set.\r
-void COpenGLParallaxMapRenderer::OnSetConstants(IMaterialRendererServices* services, s32 userData)\r
-{\r
-       video::IVideoDriver* driver = services->getVideoDriver();\r
-\r
-       // set transposed world matrix\r
-       const core::matrix4& tWorld = driver->getTransform(video::ETS_WORLD).getTransposed();\r
-       services->setVertexShaderConstant(tWorld.pointer(), 0, 4);\r
-\r
-       // set transposed worldViewProj matrix\r
-       core::matrix4 worldViewProj(driver->getTransform(video::ETS_PROJECTION));\r
-       worldViewProj *= driver->getTransform(video::ETS_VIEW);\r
-       worldViewProj *= driver->getTransform(video::ETS_WORLD);\r
-       core::matrix4 tr(worldViewProj.getTransposed());\r
-       services->setVertexShaderConstant(tr.pointer(), 8, 4);\r
-\r
-       // here we fetch the fixed function lights from the driver\r
-       // and set them as constants\r
-\r
-       u32 cnt = driver->getDynamicLightCount();\r
-\r
-       // Load the inverse world matrix.\r
-       core::matrix4 invWorldMat;\r
-       driver->getTransform(video::ETS_WORLD).getInverse(invWorldMat);\r
-\r
-       for (u32 i=0; i<2; ++i)\r
-       {\r
-               video::SLight light;\r
-\r
-               if (i<cnt)\r
-                       light = driver->getDynamicLight(i);\r
-               else\r
-               {\r
-                       light.DiffuseColor.set(0,0,0); // make light dark\r
-                       light.Radius = 1.0f;\r
-               }\r
-\r
-               light.DiffuseColor.a = 1.0f/(light.Radius*light.Radius); // set attenuation\r
-\r
-               // Transform the light by the inverse world matrix to get it into object space.\r
-               invWorldMat.transformVect(light.Position);\r
-\r
-               services->setVertexShaderConstant(\r
-                       reinterpret_cast<const f32*>(&light.Position), 12+(i*2), 1);\r
-\r
-               services->setVertexShaderConstant(\r
-                       reinterpret_cast<const f32*>(&light.DiffuseColor), 13+(i*2), 1);\r
-       }\r
-\r
-       // Obtain the view position by transforming 0,0,0 by the inverse view matrix\r
-       // and then multiply this by the inverse world matrix.\r
-       core::vector3df viewPos(0.0f, 0.0f, 0.0f);\r
-       core::matrix4 inverseView;\r
-       driver->getTransform(video::ETS_VIEW).getInverse(inverseView);\r
-       inverseView.transformVect(viewPos);\r
-       invWorldMat.transformVect(viewPos);\r
-       services->setVertexShaderConstant(reinterpret_cast<const f32*>(&viewPos.X), 16, 1);\r
-\r
-       // set scale factor\r
-       f32 factor = 0.02f; // default value\r
-       if (CurrentScale != 0.0f)\r
-               factor = CurrentScale;\r
-\r
-       f32 c6[] = {factor, factor, factor, factor};\r
-       services->setPixelShaderConstant(c6, 0, 1);\r
-}\r
-\r
-\r
-} // end namespace video\r
-} // end namespace irr\r
-\r
-\r
-#endif\r
-\r
diff --git a/source/Irrlicht/COpenGLParallaxMapRenderer.h b/source/Irrlicht/COpenGLParallaxMapRenderer.h
deleted file mode 100644 (file)
index f2d1c48..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_OPENGL_PARALLAX_MAP_RENDERER_H_INCLUDED__\r
-#define __C_OPENGL_PARALLAX_MAP_RENDERER_H_INCLUDED__\r
-\r
-#include "IrrCompileConfig.h"\r
-\r
-#ifdef _IRR_COMPILE_WITH_OPENGL_\r
-\r
-#include "IShaderConstantSetCallBack.h"\r
-\r
-#include "COpenGLShaderMaterialRenderer.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-//! Class for rendering normal maps with OpenGL\r
-class COpenGLParallaxMapRenderer : public COpenGLShaderMaterialRenderer, public IShaderConstantSetCallBack\r
-{\r
-public:\r
-\r
-       //! Constructor\r
-       COpenGLParallaxMapRenderer(video::COpenGLDriver* driver,\r
-               s32& outMaterialTypeNr, E_MATERIAL_TYPE baseMaterial);\r
-\r
-       //! Destructor\r
-       ~COpenGLParallaxMapRenderer();\r
-\r
-       //! Called by the engine when the vertex and/or pixel shader constants for an\r
-       //! material renderer should be set.\r
-       virtual void OnSetConstants(IMaterialRendererServices* services, s32 userData) _IRR_OVERRIDE_;\r
-\r
-       //! Returns the render capability of the material.\r
-       virtual s32 getRenderCapability() const _IRR_OVERRIDE_;\r
-\r
-       virtual void OnSetMaterial(const SMaterial& material) _IRR_OVERRIDE_ { }\r
-       virtual void OnSetMaterial(const video::SMaterial& material,\r
-               const video::SMaterial& lastMaterial,\r
-               bool resetAllRenderstates, video::IMaterialRendererServices* services) _IRR_OVERRIDE_;\r
-\r
-protected:\r
-\r
-       bool CompiledShaders;\r
-       f32 CurrentScale;\r
-};\r
-\r
-\r
-} // end namespace video\r
-} // end namespace irr\r
-\r
-#endif\r
-#endif\r
-\r
index b2ba9f6740a1641c96f8b67f6c853eab9c06ec82..062674f2a9d61b10d0d197e4dea8f60ba0cc6a9d 100644 (file)
@@ -58,13 +58,9 @@ COpenGLSLMaterialRenderer::COpenGLSLMaterialRenderer(video::COpenGLDriver* drive
        {\r
        case EMT_TRANSPARENT_VERTEX_ALPHA:\r
        case EMT_TRANSPARENT_ALPHA_CHANNEL:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA:\r
                Alpha = true;\r
                break;\r
        case EMT_TRANSPARENT_ADD_COLOR:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR:\r
                FixedBlending = true;\r
                break;\r
        case EMT_ONETEXTURE_BLEND:\r
@@ -98,13 +94,9 @@ COpenGLSLMaterialRenderer::COpenGLSLMaterialRenderer(COpenGLDriver* driver,
        {\r
        case EMT_TRANSPARENT_VERTEX_ALPHA:\r
        case EMT_TRANSPARENT_ALPHA_CHANNEL:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA:\r
                Alpha = true;\r
                break;\r
        case EMT_TRANSPARENT_ADD_COLOR:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR:\r
                FixedBlending = true;\r
                break;\r
        case EMT_ONETEXTURE_BLEND:\r
index 1dabd311a238ee0db78c7761250eabc2033bbcf8..be3a7d3320389ebe00803f329932a346093edd12 100644 (file)
@@ -42,13 +42,9 @@ COpenGLShaderMaterialRenderer::COpenGLShaderMaterialRenderer(video::COpenGLDrive
        {\r
        case EMT_TRANSPARENT_VERTEX_ALPHA:\r
        case EMT_TRANSPARENT_ALPHA_CHANNEL:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA:\r
                Alpha = true;\r
                break;\r
        case EMT_TRANSPARENT_ADD_COLOR:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR:\r
                FixedBlending = true;\r
                break;\r
        case EMT_ONETEXTURE_BLEND:\r
@@ -86,13 +82,9 @@ COpenGLShaderMaterialRenderer::COpenGLShaderMaterialRenderer(COpenGLDriver* driv
        {\r
        case EMT_TRANSPARENT_VERTEX_ALPHA:\r
        case EMT_TRANSPARENT_ALPHA_CHANNEL:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA:\r
                Alpha = true;\r
                break;\r
        case EMT_TRANSPARENT_ADD_COLOR:\r
-       case EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR:\r
-       case EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR:\r
                FixedBlending = true;\r
                break;\r
        case EMT_ONETEXTURE_BLEND:\r
diff --git a/source/Irrlicht/CSoftwareTexture2.cpp b/source/Irrlicht/CSoftwareTexture2.cpp
deleted file mode 100644 (file)
index 1dff8c5..0000000
+++ /dev/null
@@ -1,713 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt / Thomas Alten\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#include "IrrCompileConfig.h"\r
-#ifdef _IRR_COMPILE_WITH_BURNINGSVIDEO_\r
-\r
-#include "SoftwareDriver2_compile_config.h"\r
-#include "SoftwareDriver2_helper.h"\r
-#include "CSoftwareTexture2.h"\r
-#include "CSoftwareDriver2.h"\r
-#include "CBlit.h"\r
-#include "os.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-//! stretches srcRect src to dstRect dst, applying a sliding window box filter in linear color space (sRGB->linear->sRGB)\r
-void Resample_subSampling(eBlitter op, video::IImage* dst, const core::rect<s32>* dstRect, const video::IImage* src, const core::rect<s32>* srcRect, size_t flags);\r
-\r
-//nearest pow of 2 ( 257 will be 256 not 512 )\r
-static inline core::dimension2d<u32> getOptimalSize(const core::dimension2d<u32>& original, const u32 allowNonPowerOfTwo, const u32 maxSize)\r
-{\r
-       u32 w, h;\r
-       if (allowNonPowerOfTwo)\r
-       {\r
-               w = original.Width;\r
-               h = original.Height;\r
-       }\r
-       else\r
-       {\r
-               w = 1;\r
-               while (w * 2 < original.Width) w *= 2;\r
-               if (w * 2 - original.Width < original.Width - w) w *= 2;\r
-\r
-               h = 1;\r
-               while (h * 2 < original.Height) h *= 2;\r
-               if (h * 2 - original.Height < original.Height - h) h *= 2;\r
-       }\r
-       if (maxSize && w > maxSize) w = maxSize;\r
-       if (maxSize && h > maxSize) h = maxSize;\r
-       return core::dimension2d<u32>(w, h);\r
-}\r
-\r
-//! constructor\r
-CSoftwareTexture2::CSoftwareTexture2(IImage* image, const io::path& name, u32 flags, CBurningVideoDriver* driver)\r
-       : ITexture(name\r
-#if !defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-               , ETT_2D\r
-#endif\r
-       )\r
-       , MipMapLOD(0), Flags(flags), Driver(driver)\r
-{\r
-#ifdef _DEBUG\r
-       setDebugName("CSoftwareTexture2");\r
-#endif\r
-\r
-#if SOFTWARE_DRIVER_2_MIPMAPPING_MAX <= 1\r
-       Flags &= ~(GEN_MIPMAP | GEN_MIPMAP_AUTO);\r
-#endif\r
-       //set baseclass properties\r
-       DriverType = EDT_BURNINGSVIDEO;\r
-       ColorFormat = (Flags & IS_RENDERTARGET) ? SOFTWARE_DRIVER_2_RENDERTARGET_COLOR_FORMAT : SOFTWARE_DRIVER_2_TEXTURE_COLOR_FORMAT;\r
-       IsRenderTarget = (Flags & IS_RENDERTARGET) != 0;\r
-       HasMipMaps = (Flags & GEN_MIPMAP) != 0;\r
-       MipMap0_Area[0] = 1;\r
-       MipMap0_Area[1] = 1;\r
-       LodBIAS = 1.f;\r
-       for (size_t i = 0; i < array_size(MipMap); ++i) MipMap[i] = 0;\r
-       if (!image) return;\r
-\r
-       OriginalSize = image->getDimension();\r
-       OriginalColorFormat = image->getColorFormat();\r
-\r
-\r
-#if defined(IRRLICHT_sRGB)\r
-       if (Flags & IMAGE_IS_LINEAR) image->set_sRGB(0);\r
-#else\r
-       //guessing linear image\r
-       if (name.find("light") >= 0 ||\r
-               name.find("bump") >= 0 ||\r
-               name.find("height") >= 0\r
-               )\r
-       {\r
-               Flags |= TEXTURE_IS_LINEAR | IMAGE_IS_LINEAR;\r
-       }\r
-#endif\r
-\r
-       bool isCompressed = IImage::isCompressedFormat(OriginalColorFormat);\r
-       if (isCompressed)\r
-       {\r
-               os::Printer::log("Texture compression not available.", ELL_ERROR);\r
-       }\r
-\r
-       //visual studio code warning\r
-       u32 maxTexSize = SOFTWARE_DRIVER_2_TEXTURE_MAXSIZE;\r
-\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-       if (IsRenderTarget && name.find("RaceGUI::markers") >= 0)\r
-       {\r
-               maxTexSize = 0;\r
-       }\r
-#endif\r
-       /*\r
-               core::dimension2d<u32> optSize(OriginalSize.getOptimalSize(\r
-                       (Flags & ALLOW_NPOT) ? 0 : 1, // requirePowerOfTwo\r
-                       false, // requireSquare\r
-                       (Flags & ALLOW_NPOT) ? 1 : maxTexSize == SOFTWARE_DRIVER_2_TEXTURE_MAXSIZE, // larger\r
-                       (Flags & ALLOW_NPOT) ? 0 : maxTexSize // maxValue\r
-               )\r
-               );\r
-       */\r
-       core::dimension2d<u32> optSize(getOptimalSize(OriginalSize, Flags & ALLOW_NPOT, maxTexSize));\r
-       if (OriginalSize == optSize)\r
-       {\r
-               MipMap[0] = new CImage(ColorFormat, image->getDimension());\r
-#if defined(IRRLICHT_sRGB)\r
-               MipMap[0]->set_sRGB((Flags & TEXTURE_IS_LINEAR) ? 0 : image->get_sRGB());\r
-#endif\r
-               if (!isCompressed && image->getData())\r
-                       image->copyTo(MipMap[0]);\r
-       }\r
-       else\r
-       {\r
-               MipMap[0] = new CImage(ColorFormat, optSize);\r
-#if defined(IRRLICHT_sRGB)\r
-               MipMap[0]->set_sRGB((Flags & TEXTURE_IS_LINEAR) ? 0 : image->get_sRGB());\r
-#endif\r
-               if (!isCompressed)\r
-               {\r
-                       //image->copyToScalingBoxFilter ( MipMap[0],0, false );\r
-                       Resample_subSampling(BLITTER_TEXTURE, MipMap[0], 0, image, 0, Flags);\r
-               }\r
-               // if Original Size is used for calculation ( 2D position, font) it will be wrong\r
-               //OriginalSize = optSize;\r
-       }\r
-\r
-       // Show Information about resizing\r
-       if (OriginalSize != optSize ||\r
-               (       OriginalColorFormat != ColorFormat &&\r
-                       !((OriginalColorFormat == ECF_R8G8B8 || OriginalColorFormat == ECF_A1R5G5B5) && ColorFormat == ECF_A8R8G8B8)\r
-               )\r
-       )\r
-       {\r
-               char buf[256];\r
-               core::stringw showName(name);\r
-               snprintf_irr(buf, sizeof(buf), "Burningvideo: Texture '%ls' reformat %ux%u,%s -> %ux%u,%s",\r
-                       showName.c_str(),\r
-                       OriginalSize.Width, OriginalSize.Height, ColorFormatNames[OriginalColorFormat],\r
-                       optSize.Width, optSize.Height, ColorFormatNames[ColorFormat]\r
-               );\r
-               os::Printer::log(buf, ELL_DEBUG);\r
-       }\r
-\r
-\r
-       //select highest mipmap 0\r
-       regenerateMipMapLevels(image->getMipMapsData());\r
-}\r
-\r
-\r
-//! destructor\r
-CSoftwareTexture2::~CSoftwareTexture2()\r
-{\r
-       for (size_t i = 0; i < array_size(MipMap); ++i)\r
-       {\r
-               if (MipMap[i])\r
-               {\r
-                       MipMap[i]->drop();\r
-                       MipMap[i] = 0;\r
-               }\r
-       }\r
-}\r
-\r
-\r
-//! Regenerates the mip map levels of the texture. Useful after locking and\r
-//! modifying the texture\r
-#if !defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-void CSoftwareTexture2::regenerateMipMapLevels(void* data, u32 layer)\r
-#else\r
-void CSoftwareTexture2::regenerateMipMapLevels(void* data)\r
-#endif\r
-{\r
-       size_t i;\r
-\r
-       // release\r
-       for (i = 1; i < array_size(MipMap); ++i)\r
-       {\r
-               if (MipMap[i])\r
-               {\r
-                       MipMap[i]->drop();\r
-                       MipMap[i] = 0;\r
-               }\r
-       }\r
-\r
-       core::dimension2d<u32> newSize;\r
-\r
-       if (HasMipMaps && ((Flags & GEN_MIPMAP_AUTO) || 0 == data))\r
-       {\r
-               //need memory also if autogen mipmap disabled\r
-               for (i = 1; i < array_size(MipMap); ++i)\r
-               {\r
-                       const core::dimension2du& upperDim = MipMap[i - 1]->getDimension();\r
-                       //isotropic\r
-                       newSize.Width = core::s32_max(SOFTWARE_DRIVER_2_MIPMAPPING_MIN_SIZE, upperDim.Width >> 1);\r
-                       newSize.Height = core::s32_max(SOFTWARE_DRIVER_2_MIPMAPPING_MIN_SIZE, upperDim.Height >> 1);\r
-                       if (upperDim == newSize)\r
-                               break;\r
-\r
-                       MipMap[i] = new CImage(ColorFormat, newSize);\r
-#if defined(IRRLICHT_sRGB)\r
-                       MipMap[i]->set_sRGB(MipMap[i - 1]->get_sRGB());\r
-#endif\r
-                       //MipMap[i]->fill ( 0xFFFF4040 );\r
-                       //MipMap[i-1]->copyToScalingBoxFilter( MipMap[i], 0, false );\r
-                       Resample_subSampling(BLITTER_TEXTURE, MipMap[i], 0, MipMap[0], 0, Flags);\r
-               }\r
-       }\r
-       else if (HasMipMaps && data)\r
-       {\r
-               //deactivated outside mipdata until TA knows how to handle this.\r
-\r
-               //query mipmap dimension\r
-               u8* mip_current = (u8*)data;\r
-               const u8* mip_end = (u8*)data;\r
-\r
-               core::dimension2d<u32> origSize = OriginalSize;\r
-               i = 1;\r
-               do\r
-               {\r
-                       if (origSize.Width > 1) origSize.Width >>= 1;\r
-                       if (origSize.Height > 1) origSize.Height >>= 1;\r
-                       mip_end += IImage::getDataSizeFromFormat(OriginalColorFormat, origSize.Width, origSize.Height);\r
-                       i += 1;\r
-               } while ((origSize.Width != 1 || origSize.Height != 1) && i < array_size(MipMap));\r
-\r
-               //TODO: this is not true\r
-               LodBIAS = i * 2.f;\r
-\r
-               origSize = OriginalSize;\r
-               for (i = 1; i < array_size(MipMap) && mip_current < mip_end; ++i)\r
-               {\r
-                       const core::dimension2du& upperDim = MipMap[i - 1]->getDimension();\r
-                       //isotropic\r
-                       newSize.Width = core::s32_max(SOFTWARE_DRIVER_2_MIPMAPPING_MIN_SIZE, upperDim.Width >> 1);\r
-                       newSize.Height = core::s32_max(SOFTWARE_DRIVER_2_MIPMAPPING_MIN_SIZE, upperDim.Height >> 1);\r
-                       if (upperDim == newSize)\r
-                               break;\r
-\r
-                       if (origSize.Width > 1) origSize.Width >>= 1;\r
-                       if (origSize.Height > 1) origSize.Height >>= 1;\r
-\r
-                       if (OriginalColorFormat != ColorFormat)\r
-                       {\r
-                               IImage* tmpImage = new CImage(OriginalColorFormat, origSize, mip_current, true, false);\r
-                               MipMap[i] = new CImage(ColorFormat, newSize);\r
-                               if (origSize == newSize)\r
-                                       tmpImage->copyTo(MipMap[i]);\r
-                               else\r
-                                       tmpImage->copyToScalingBoxFilter(MipMap[i]);\r
-                               tmpImage->drop();\r
-                       }\r
-                       else\r
-                       {\r
-                               if (origSize == newSize)\r
-                                       MipMap[i] = new CImage(ColorFormat, newSize, mip_current, false);\r
-                               else\r
-                               {\r
-                                       MipMap[i] = new CImage(ColorFormat, newSize);\r
-                                       IImage* tmpImage = new CImage(ColorFormat, origSize, mip_current, true, false);\r
-                                       tmpImage->copyToScalingBoxFilter(MipMap[i]);\r
-                                       tmpImage->drop();\r
-                               }\r
-                       }\r
-                       mip_current += IImage::getDataSizeFromFormat(OriginalColorFormat, origSize.Width, origSize.Height);\r
-               }\r
-       }\r
-\r
-#if 0\r
-       //visualize mipmap\r
-       for (i = 1; i < 0 && i < array_size(MipMap); ++i)\r
-       {\r
-               static u32 color[] = {\r
-                       0xFFFF0000,\r
-                       0xFFFF0000,0xFF00FF00,0xFF0000FF,\r
-                       0xFFFFFF00,0xFF00FFFF,0xFFFF00FF,\r
-                       0xFFff6600,0xFF00ff66,0xFF6600FF,\r
-                       0xFF66ff00,0xFF0066ff,0xFFff0066,\r
-                       0xFF33ff00,0xFF0033ff,0xFF3300ff,\r
-                       0xFF0000FF,0xFF0000FF,0xFF0000FF\r
-               };\r
-\r
-               if (MipMap[i])\r
-               {\r
-                       int border = 0;\r
-                       const core::dimension2du& d = MipMap[i]->getDimension();\r
-                       core::rect<s32> p(0, 0, d.Width, d.Height);\r
-                       SColor c((color[i & 15] & 0x00FFFFFF) | 0xFF000000);\r
-\r
-                       core::rect<s32> dclip(border, border, d.Width - border, d.Height - border);\r
-                       \r
-                       Blit(BLITTER_TEXTURE_ALPHA_COLOR_BLEND, MipMap[i], &dclip, 0, MipMap[i], &p, c.color);\r
-               }\r
-       }\r
-\r
-       //save mipmap chain\r
-       if (0)\r
-       {\r
-               char buf[256];\r
-               const char* name = getName().getPath().c_str();\r
-               int filename = 0;\r
-               //int ext = -1;\r
-               i = 0;\r
-               while (name[i])\r
-               {\r
-                       if (name[i] == '/' || name[i] == '\\') filename = (s32)i + 1;\r
-                       //if (name[i] == '.') ext = i;\r
-                       i += 1;\r
-               }\r
-               for (i = 0; i < array_size(MipMap); ++i)\r
-               {\r
-                       if (MipMap[i])\r
-                       {\r
-                               snprintf_irr(buf, sizeof(buf), "mip/%s_%02d.png", name + filename, (s32)i);\r
-                               Driver->writeImageToFile(MipMap[i], buf);\r
-                       }\r
-               }\r
-       }\r
-#endif\r
-       calcDerivative();\r
-}\r
-\r
-void CSoftwareTexture2::calcDerivative()\r
-{\r
-       //reset current MipMap\r
-       MipMapLOD = 0;\r
-       if (MipMap[0])\r
-       {\r
-               const core::dimension2du& dim = MipMap[0]->getDimension();\r
-               MipMap0_Area[0] = dim.Width;\r
-               MipMap0_Area[1] = dim.Height; // screensize of a triangle\r
-\r
-               //TA: try to mimic openGL mipmap. ( don't do this!)\r
-               //if (MipMap0_Area[0] < 32) MipMap0_Area[0] = 32;\r
-               //if (MipMap0_Area[1] < 32) MipMap0_Area[1] = 32;\r
-\r
-               Size = dim; // MipMap[MipMapLOD]->getDimension();\r
-               Pitch = MipMap[MipMapLOD]->getPitch();\r
-       }\r
-\r
-       //preCalc mipmap texel center boundaries\r
-       for (size_t i = 0; i < array_size(MipMap); ++i)\r
-       {\r
-               CSoftwareTexture2_Bound& b = TexBound[i];\r
-               if (MipMap[i])\r
-               {\r
-                       const core::dimension2du& dim = MipMap[i]->getDimension();\r
-                       //f32 u = 1.f / dim.Width;\r
-                       //f32 v = 1.f / dim.Height;\r
-\r
-                       b.w = dim.Width - 1.f;\r
-                       b.h = dim.Height - 1.f;\r
-                       b.cx = 0.f; //u*0.005f;\r
-                       b.cy = 0.f; //v*0.005f;\r
-               }\r
-               else\r
-               {\r
-                       b.w = 0.f;\r
-                       b.h = 0.f;\r
-                       b.cx = 0.f;\r
-                       b.cy = 0.f;\r
-               }\r
-       }\r
-\r
-}\r
-\r
-\r
-/* Software Render Target 2 */\r
-\r
-CSoftwareRenderTarget2::CSoftwareRenderTarget2(CBurningVideoDriver* driver) : Driver(driver)\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-       , IRenderTarget(0)\r
-#endif\r
-{\r
-       DriverType = EDT_BURNINGSVIDEO;\r
-\r
-       Textures.set_used(1);\r
-       Textures[0] = 0;\r
-}\r
-\r
-CSoftwareRenderTarget2::~CSoftwareRenderTarget2()\r
-{\r
-       if (Textures[0])\r
-               Textures[0]->drop();\r
-}\r
-\r
-void CSoftwareRenderTarget2::setTextures(ITexture* const * textures, u32 numTextures, ITexture* depthStencil, const E_CUBE_SURFACE* cubeSurfaces, u32 numCubeSurfaces)\r
-{\r
-       if (!Textures.equals(textures, numTextures))\r
-       {\r
-               ITexture* prevTexture = Textures[0];\r
-\r
-               bool textureDetected = false;\r
-\r
-               for (u32 i = 0; i < numTextures; ++i)\r
-               {\r
-                       if (textures[i] && textures[i]->getDriverType() == EDT_BURNINGSVIDEO)\r
-                       {\r
-                               Textures[0] = textures[i];\r
-                               Textures[0]->grab();\r
-                               textureDetected = true;\r
-\r
-                               break;\r
-                       }\r
-               }\r
-\r
-               if (prevTexture)\r
-                       prevTexture->drop();\r
-\r
-               if (!textureDetected)\r
-                       Textures[0] = 0;\r
-       }\r
-}\r
-\r
-\r
-static const float srgb_8bit_to_linear_float[1 << 8] = {\r
-       0.0f, 3.03527e-4f, 6.07054e-4f, 9.10581e-4f,\r
-       0.001214108f, 0.001517635f, 0.001821162f, 0.0021246888f,\r
-       0.002428216f, 0.002731743f, 0.00303527f, 0.0033465358f,\r
-       0.0036765074f, 0.004024717f, 0.004391442f, 0.0047769537f,\r
-       0.005181517f, 0.005605392f, 0.0060488335f, 0.006512091f,\r
-       0.0069954107f, 0.007499032f, 0.008023193f, 0.008568126f,\r
-       0.009134059f, 0.009721218f, 0.010329823f, 0.010960095f,\r
-       0.011612245f, 0.012286489f, 0.0129830325f, 0.013702083f,\r
-       0.014443845f, 0.015208516f, 0.015996294f, 0.016807377f,\r
-       0.017641956f, 0.018500222f, 0.019382363f, 0.020288564f,\r
-       0.021219011f, 0.022173885f, 0.023153368f, 0.024157634f,\r
-       0.025186861f, 0.026241222f, 0.027320893f, 0.02842604f,\r
-       0.029556835f, 0.030713445f, 0.031896032f, 0.033104766f,\r
-       0.034339808f, 0.035601314f, 0.036889452f, 0.038204372f,\r
-       0.039546236f, 0.0409152f, 0.04231141f, 0.04373503f,\r
-       0.045186203f, 0.046665087f, 0.048171826f, 0.049706567f,\r
-       0.051269464f, 0.05286065f, 0.05448028f, 0.056128494f,\r
-       0.057805438f, 0.059511244f, 0.06124606f, 0.06301002f,\r
-       0.06480327f, 0.066625945f, 0.068478175f, 0.0703601f,\r
-       0.07227185f, 0.07421357f, 0.07618539f, 0.07818743f,\r
-       0.08021983f, 0.082282715f, 0.084376216f, 0.086500466f,\r
-       0.08865559f, 0.09084172f, 0.093058966f, 0.09530747f,\r
-       0.097587354f, 0.09989873f, 0.10224174f, 0.10461649f,\r
-       0.107023105f, 0.10946172f, 0.111932434f, 0.11443538f,\r
-       0.11697067f, 0.119538434f, 0.122138776f, 0.12477182f,\r
-       0.12743768f, 0.13013647f, 0.13286832f, 0.13563333f,\r
-       0.13843162f, 0.14126329f, 0.14412847f, 0.14702727f,\r
-       0.14995979f, 0.15292616f, 0.15592647f, 0.15896083f,\r
-       0.16202939f, 0.1651322f, 0.1682694f, 0.17144111f,\r
-       0.1746474f, 0.17788842f, 0.18116425f, 0.18447499f,\r
-       0.18782078f, 0.19120169f, 0.19461784f, 0.19806932f,\r
-       0.20155625f, 0.20507874f, 0.20863687f, 0.21223076f,\r
-       0.21586053f, 0.21952623f, 0.22322798f, 0.2269659f,\r
-       0.23074007f, 0.23455061f, 0.2383976f, 0.24228115f,\r
-       0.24620135f, 0.2501583f, 0.25415212f, 0.25818288f,\r
-       0.2622507f, 0.26635563f, 0.27049783f, 0.27467734f,\r
-       0.2788943f, 0.28314877f, 0.28744087f, 0.29177067f,\r
-       0.2961383f, 0.3005438f, 0.30498734f, 0.30946895f,\r
-       0.31398875f, 0.3185468f, 0.32314324f, 0.32777813f,\r
-       0.33245155f, 0.33716366f, 0.34191445f, 0.3467041f,\r
-       0.35153264f, 0.35640016f, 0.36130682f, 0.36625263f,\r
-       0.3712377f, 0.37626216f, 0.38132605f, 0.38642946f,\r
-       0.3915725f, 0.39675525f, 0.4019778f, 0.40724024f,\r
-       0.41254264f, 0.4178851f, 0.4232677f, 0.42869052f,\r
-       0.43415368f, 0.4396572f, 0.44520122f, 0.45078582f,\r
-       0.45641103f, 0.46207702f, 0.4677838f, 0.4735315f,\r
-       0.4793202f, 0.48514995f, 0.4910209f, 0.496933f,\r
-       0.5028865f, 0.50888133f, 0.5149177f, 0.5209956f,\r
-       0.52711517f, 0.53327644f, 0.5394795f, 0.5457245f,\r
-       0.55201143f, 0.55834043f, 0.5647115f, 0.57112485f,\r
-       0.57758045f, 0.58407843f, 0.59061885f, 0.5972018f,\r
-       0.60382736f, 0.61049557f, 0.6172066f, 0.62396044f,\r
-       0.63075715f, 0.6375969f, 0.6444797f, 0.65140563f,\r
-       0.65837485f, 0.66538733f, 0.67244315f, 0.6795425f,\r
-       0.6866853f, 0.6938718f, 0.7011019f, 0.7083758f,\r
-       0.71569353f, 0.7230551f, 0.73046076f, 0.73791045f,\r
-       0.74540424f, 0.7529422f, 0.7605245f, 0.76815116f,\r
-       0.7758222f, 0.7835378f, 0.791298f, 0.7991027f,\r
-       0.8069523f, 0.8148466f, 0.82278574f, 0.8307699f,\r
-       0.838799f, 0.8468732f, 0.8549926f, 0.8631572f,\r
-       0.8713671f, 0.8796224f, 0.8879231f, 0.8962694f,\r
-       0.9046612f, 0.91309863f, 0.92158186f, 0.9301109f,\r
-       0.9386857f, 0.9473065f, 0.9559733f, 0.9646863f,\r
-       0.9734453f, 0.9822506f, 0.9911021f, 1.0f,\r
-};\r
-/*\r
-int linear_to_srgb_8bit(const float x) {\r
-       if (x <= 0.f) return 0;\r
-       if (x >= 1.f) return 255;\r
-       const float *table = SRGB_8BIT_TO_LINEAR_FLOAT;\r
-       int y = 0;\r
-       for (int i = 128; i != 0; i >>= 1) {\r
-               if (table[y + i] <= x)\r
-                       y += i;\r
-       }\r
-       if (x - table[y] <= table[y + 1] - x)\r
-               return y;\r
-       else\r
-               return y + 1;\r
-}\r
-*/\r
-\r
-\r
-u32 linear_to_srgb_8bit(const float v)\r
-{\r
-       ieee754 c;\r
-       c.f = v;\r
-       const size_t x = c.u;\r
-       const u32* table = (u32*)srgb_8bit_to_linear_float;\r
-       u32 y = 0;\r
-       y += table[y + 128] <= x ? 128 : 0;\r
-       y += table[y + 64] <= x ? 64 : 0;\r
-       y += table[y + 32] <= x ? 32 : 0;\r
-       y += table[y + 16] <= x ? 16 : 0;\r
-       y += table[y + 8] <= x ? 8 : 0;\r
-       y += table[y + 4] <= x ? 4 : 0;\r
-       y += table[y + 2] <= x ? 2 : 0;\r
-       y += table[y + 1] <= x ? 1 : 0;\r
-\r
-       return y;\r
-}\r
-\r
-// 2D Region half open [x0;x1[\r
-struct absrect2\r
-{\r
-       s32 x0;\r
-       s32 y0;\r
-       s32 x1;\r
-       s32 y1;\r
-};\r
-\r
-static inline int clipTest(absrect2& o, const core::rect<s32>* a, const absrect2& b)\r
-{\r
-       if (a == 0)\r
-       {\r
-               o.x0 = b.x0;\r
-               o.y0 = b.y0;\r
-               o.x1 = b.x1;\r
-               o.y1 = b.y1;\r
-       }\r
-       else\r
-       {\r
-               o.x0 = core::s32_max(a->UpperLeftCorner.X, b.x0);\r
-               o.x1 = core::s32_min(a->LowerRightCorner.X, b.x1);\r
-               o.y0 = core::s32_max(a->UpperLeftCorner.Y, b.y0);\r
-               o.y1 = core::s32_min(a->LowerRightCorner.Y, b.y1);\r
-       }\r
-       int clipTest = 0;\r
-       clipTest |= o.x0 >= o.x1 ? 1 : 0;\r
-       clipTest |= o.y0 >= o.y1 ? 2 : 0;\r
-       return clipTest;\r
-}\r
-\r
-//! stretches srcRect src to dstRect dst, applying a sliding window box filter in linear color space (sRGB->linear->sRGB)\r
-// todo: texture jumps (mip selection problem)\r
-void Resample_subSampling(eBlitter op, video::IImage* dst, const core::rect<s32>* dstRect,\r
-       const video::IImage* src, const core::rect<s32>* srcRect, size_t flags)\r
-{\r
-       u8* dstData = (u8*)dst->getData();\r
-       const absrect2 dst_clip = { 0,0,(s32)dst->getDimension().Width,(s32)dst->getDimension().Height };\r
-       absrect2 dc;\r
-       if (clipTest(dc, dstRect, dst_clip) || !dstData) return;\r
-       const video::ECOLOR_FORMAT dstFormat = dst->getColorFormat();\r
-\r
-       const u8* srcData = (u8*)src->getData();\r
-       const absrect2 src_clip = { 0,0,(s32)src->getDimension().Width,(s32)src->getDimension().Height };\r
-       absrect2 sc;\r
-       if (clipTest(sc, srcRect, src_clip) || !srcData) return;\r
-       const video::ECOLOR_FORMAT srcFormat = src->getColorFormat();\r
-\r
-#if defined(IRRLICHT_sRGB)\r
-       const int dst_sRGB = dst->get_sRGB();\r
-       const int src_sRGB = src->get_sRGB();\r
-#else\r
-       const int dst_sRGB = (flags & CSoftwareTexture2::TEXTURE_IS_LINEAR) ? 0 : 1;\r
-       const int src_sRGB = (flags & CSoftwareTexture2::IMAGE_IS_LINEAR) ? 0 : 1;\r
-#endif\r
-\r
-\r
-\r
-       float scale[2];\r
-       scale[0] = (float)(sc.x1 - sc.x0) / (float)(dc.x1 - dc.x0);\r
-       scale[1] = (float)(sc.y1 - sc.y0) / (float)(dc.y1 - dc.y0);\r
-       const float rs = 1.f / (scale[0] * scale[1]);\r
-\r
-       float sum[4];\r
-       u32 sbgra = 0;\r
-\r
-       float f[4];\r
-       int fi[4];\r
-       f[3] = (float)sc.y0;\r
-       for (int dy = dc.y0; dy < dc.y1; ++dy)\r
-       {\r
-               f[1] = f[3];\r
-               f[3] = sc.y0 + (dy + 1 - dc.y0) * scale[1];\r
-               if (f[3] >= sc.y1) f[3] = sc.y1 - 0.001f; //todo:1.f/dim should be enough\r
-\r
-               f[2] = (float)sc.x0;\r
-               for (int dx = dc.x0; dx < dc.x1; ++dx)\r
-               {\r
-                       f[0] = f[2];\r
-                       f[2] = sc.x0 + (dx + 1 - dc.x0) * scale[0];\r
-                       if (f[2] >= sc.x1) f[2] = sc.x1 - 0.001f;\r
-\r
-                       //accumulate linear color\r
-                       sum[0] = 0.f;\r
-                       sum[1] = 0.f;\r
-                       sum[2] = 0.f;\r
-                       sum[3] = 0.f;\r
-\r
-                       //sample border\r
-                       fi[0] = (int)(f[0]);\r
-                       fi[1] = (int)(f[1]);\r
-                       fi[2] = (int)(f[2]);\r
-                       fi[3] = (int)(f[3]);\r
-\r
-                       float w[2];\r
-                       for (int fy = fi[1]; fy <= fi[3]; ++fy)\r
-                       {\r
-                               w[1] = 1.f;\r
-                               if (fy == fi[1]) w[1] -= f[1] - fy;\r
-                               if (fy == fi[3]) w[1] -= fy + 1 - f[3];\r
-\r
-                               for (int fx = fi[0]; fx <= fi[2]; ++fx)\r
-                               {\r
-                                       w[0] = 1.f;\r
-                                       if (fx == fi[0]) w[0] -= f[0] - fx;\r
-                                       if (fx == fi[2]) w[0] -= fx + 1 - f[2];\r
-\r
-                                       const float ws = w[1] * w[0] * rs;\r
-\r
-                                       switch (srcFormat)\r
-                                       {\r
-                                       case video::ECF_A1R5G5B5: sbgra = video::A1R5G5B5toA8R8G8B8(*(u16*)(srcData + (fy * src_clip.x1) * 2 + (fx * 2))); break;\r
-                                       case video::ECF_R5G6B5: sbgra = video::R5G6B5toA8R8G8B8(*(u16*)(srcData + (fy * src_clip.x1) * 2 + (fx * 2))); break;\r
-                                       case video::ECF_A8R8G8B8: sbgra = *(u32*)(srcData + (fy * src_clip.x1) * 4 + (fx * 4)); break;\r
-                                       case video::ECF_R8G8B8:\r
-                                       {\r
-                                               const u8* p = srcData + (fy * src_clip.x1) * 3 + (fx * 3);\r
-                                               sbgra = 0xFF000000 | p[0] << 16 | p[1] << 8 | p[2];\r
-                                       } break;\r
-                                       default: break;\r
-                                       }\r
-                                       if (src_sRGB)\r
-                                       {\r
-                                               sum[0] += srgb_8bit_to_linear_float[(sbgra) & 0xFF] * ws;\r
-                                               sum[1] += srgb_8bit_to_linear_float[(sbgra >> 8) & 0xFF] * ws;\r
-                                               sum[2] += srgb_8bit_to_linear_float[(sbgra >> 16) & 0xFF] * ws;\r
-                                               sum[3] += ((sbgra >> 24) & 0xFF) * ws;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               sum[0] += ((sbgra) & 0xFF) * ws;\r
-                                               sum[1] += ((sbgra >> 8) & 0xFF) * ws;\r
-                                               sum[2] += ((sbgra >> 16) & 0xFF) * ws;\r
-                                               sum[3] += ((sbgra >> 24) & 0xFF) * ws;\r
-                                       }\r
-\r
-                               }\r
-                       }\r
-                       switch (op)\r
-                       {\r
-                       case BLITTER_TEXTURE_ALPHA_BLEND:\r
-                       case BLITTER_TEXTURE_ALPHA_COLOR_BLEND:\r
-                               break;\r
-                       default:\r
-                               break;\r
-                       }\r
-                       if (dst_sRGB)\r
-                       {\r
-                               sbgra = linear_to_srgb_8bit(sum[0]) |\r
-                                       linear_to_srgb_8bit(sum[1]) << 8 |\r
-                                       linear_to_srgb_8bit(sum[2]) << 16 |\r
-                                       (u32)(sum[3]) << 24;\r
-                       }\r
-                       else\r
-                       {\r
-                               sbgra = (u32)(sum[0]) |\r
-                                       (u32)(sum[1]) << 8 |\r
-                                       (u32)(sum[2]) << 16 |\r
-                                       (u32)(sum[3]) << 24;\r
-                       }\r
-                       switch (dstFormat)\r
-                       {\r
-                       case video::ECF_A8R8G8B8: *(u32*)(dstData + (dy * dst_clip.x1) * 4 + (dx * 4)) = sbgra; break;\r
-                       case video::ECF_R8G8B8:\r
-                       {\r
-                               u8* p = dstData + (dy * dst_clip.x1) * 3 + (dx * 3);\r
-                               p[2] = (sbgra) & 0xFF;\r
-                               p[1] = (sbgra >> 8) & 0xFF;\r
-                               p[0] = (sbgra >> 16) & 0xFF;\r
-                       } break;\r
-                       case video::ECF_A1R5G5B5: *(u16*)(dstData + (dy * dst_clip.x1) * 2 + (dx * 2)) = video::A8R8G8B8toA1R5G5B5(sbgra); break;\r
-                       case video::ECF_R5G6B5:   *(u16*)(dstData + (dy * dst_clip.x1) * 2 + (dx * 2)) = video::A8R8G8B8toR5G6B5(sbgra); break;\r
-                       default:\r
-                               break;\r
-                       }\r
-               }\r
-       }\r
-\r
-}\r
-\r
-} // end namespace video\r
-} // end namespace irr\r
-\r
-#endif // _IRR_COMPILE_WITH_BURNINGSVIDEO_\r
diff --git a/source/Irrlicht/CSoftwareTexture2.h b/source/Irrlicht/CSoftwareTexture2.h
deleted file mode 100644 (file)
index 5f64ee0..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt / Thomas Alten\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __C_SOFTWARE_2_TEXTURE_H_INCLUDED__\r
-#define __C_SOFTWARE_2_TEXTURE_H_INCLUDED__\r
-\r
-#include "SoftwareDriver2_compile_config.h"\r
-\r
-#include "ITexture.h"\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-#include "IVideoDriver.h"\r
-#else\r
-#include "IRenderTarget.h"\r
-#endif\r
-#include "CImage.h"\r
-\r
-namespace irr\r
-{\r
-namespace video\r
-{\r
-\r
-class CBurningVideoDriver;\r
-\r
-/*!\r
-       interface for a Video Driver dependent Texture.\r
-*/\r
-struct CSoftwareTexture2_Bound\r
-{\r
-       f32 w;  // width - 0.5f;\r
-       f32 h;  // height- 0.5f;\r
-       f32 cx; // texelcenter x 1.f/width*0.5f\r
-       f32 cy; // texelcenter y 1.f/height*0.5f\r
-};\r
-\r
-class CSoftwareTexture2 : public ITexture\r
-{\r
-public:\r
-\r
-       //! constructor\r
-       enum eTex2Flags\r
-       {\r
-               GEN_MIPMAP                      = 1,            // has mipmaps\r
-               GEN_MIPMAP_AUTO         = 2,            // automatic mipmap generation\r
-               IS_RENDERTARGET         = 4,\r
-               ALLOW_NPOT                      = 8,            //allow non power of two\r
-               IMAGE_IS_LINEAR         = 16,\r
-               TEXTURE_IS_LINEAR       = 32,\r
-       };\r
-       CSoftwareTexture2(IImage* surface, const io::path& name, u32 flags /*eTex2Flags*/, CBurningVideoDriver* driver);\r
-\r
-       //! destructor\r
-       virtual ~CSoftwareTexture2();\r
-\r
-       u32 getMipmapLevel(s32 newLevel) const\r
-       {\r
-               if ( newLevel < 0 ) newLevel = 0;\r
-               else if ( newLevel >= (s32)array_size(MipMap)) newLevel = array_size(MipMap) - 1;\r
-\r
-               while ( newLevel > 0 && MipMap[newLevel] == 0 ) newLevel -= 1;\r
-               return newLevel;\r
-       }\r
-\r
-       //! lock function\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-       virtual void* lock(E_TEXTURE_LOCK_MODE mode, u32 mipmapLevel)\r
-#else\r
-       virtual void* lock(E_TEXTURE_LOCK_MODE mode, u32 mipmapLevel, u32 layer, E_TEXTURE_LOCK_FLAGS lockFlags = ETLF_FLIP_Y_UP_RTT) _IRR_OVERRIDE_\r
-#endif\r
-       {\r
-               if (Flags & GEN_MIPMAP)\r
-               {\r
-                       //called from outside. must test\r
-                       MipMapLOD = getMipmapLevel(mipmapLevel);\r
-                       Size = MipMap[MipMapLOD]->getDimension();\r
-                       Pitch = MipMap[MipMapLOD]->getPitch();\r
-               }\r
-\r
-               return MipMap[MipMapLOD]->getData();\r
-       }\r
-\r
-       //! unlock function\r
-       virtual void unlock() _IRR_OVERRIDE_\r
-       {\r
-       }\r
-/*\r
-       //! compare the area drawn with the area of the texture\r
-       f32 getLODFactor( const f32 texArea ) const\r
-       {\r
-               return MipMap0_Area[0]* MipMap0_Area[1] * 0.5f * texArea;\r
-               //return MipMap[0]->getImageDataSizeInPixels () * texArea;\r
-       }\r
-*/\r
-\r
-       const u32* getMipMap0_Area() const\r
-       {\r
-               return MipMap0_Area;\r
-       }\r
-       f32 get_lod_bias() const { return LodBIAS; }\r
-\r
-       //! returns unoptimized surface (misleading name. burning can scale down originalimage)\r
-       virtual CImage* getImage() const\r
-       {\r
-               return MipMap[0];\r
-       }\r
-\r
-       //! returns texture surface\r
-       virtual CImage* getTexture() const\r
-       {\r
-               return MipMap[MipMapLOD];\r
-       }\r
-\r
-       //precalculated dimx-1/dimx*0.5f\r
-       const CSoftwareTexture2_Bound& getTexBound() const\r
-       {\r
-               return TexBound[MipMapLOD];\r
-       }\r
-\r
-#if !defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-       virtual void regenerateMipMapLevels(void* data = 0, u32 layer = 0) _IRR_OVERRIDE_;\r
-#else\r
-       virtual void regenerateMipMapLevels(void* data = 0);\r
-#endif\r
-\r
-\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-       const core::dimension2d<u32>& getOriginalSize() const { return OriginalSize; };\r
-       const core::dimension2d<u32>& getSize() const { return Size; };\r
-       E_DRIVER_TYPE getDriverType() const { return DriverType; };\r
-       ECOLOR_FORMAT getColorFormat() const { return ColorFormat; };\r
-       ECOLOR_FORMAT getOriginalColorFormat() const { return OriginalColorFormat; };\r
-       u32 getPitch() const { return Pitch; };\r
-       bool hasMipMaps() const { return HasMipMaps; }\r
-       bool isRenderTarget() const { return IsRenderTarget; }\r
-\r
-       core::dimension2d<u32> OriginalSize;\r
-       core::dimension2d<u32> Size;\r
-       E_DRIVER_TYPE DriverType;\r
-       ECOLOR_FORMAT OriginalColorFormat;\r
-       ECOLOR_FORMAT ColorFormat;\r
-       u32 Pitch;\r
-       bool HasMipMaps;\r
-       bool IsRenderTarget;\r
-#endif\r
-\r
-private:\r
-       void calcDerivative();\r
-\r
-       //! controls MipmapSelection. relation between drawn area and image size\r
-       u32 MipMapLOD; // 0 .. original Texture pot -SOFTWARE_DRIVER_2_MIPMAPPING_MAX\r
-       u32 Flags; //eTex2Flags\r
-       CBurningVideoDriver* Driver;\r
-\r
-       CImage* MipMap[SOFTWARE_DRIVER_2_MIPMAPPING_MAX];\r
-       CSoftwareTexture2_Bound TexBound[SOFTWARE_DRIVER_2_MIPMAPPING_MAX];\r
-       u32 MipMap0_Area[2];\r
-       f32 LodBIAS;    // Tweak mipmap selection\r
-};\r
-\r
-/*!\r
-interface for a Video Driver dependent render target.\r
-*/\r
-class CSoftwareRenderTarget2 : public IRenderTarget\r
-{\r
-public:\r
-       CSoftwareRenderTarget2(CBurningVideoDriver* driver);\r
-       virtual ~CSoftwareRenderTarget2();\r
-\r
-       virtual void setTextures(ITexture* const * textures, u32 numTextures, ITexture* depthStencil, const E_CUBE_SURFACE* cubeSurfaces, u32 numCubeSurfaces) _IRR_OVERRIDE_;\r
-\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-       E_DRIVER_TYPE DriverType;\r
-       core::array<ITexture*> Texture;\r
-#endif\r
-\r
-protected:\r
-       CBurningVideoDriver* Driver;\r
-};\r
-\r
-} // end namespace video\r
-} // end namespace irr\r
-\r
-#endif // __C_SOFTWARE_2_TEXTURE_H_INCLUDED__\r
-\r
-\r
diff --git a/source/Irrlicht/S4DVertex.h b/source/Irrlicht/S4DVertex.h
deleted file mode 100644 (file)
index 667fd6d..0000000
+++ /dev/null
@@ -1,875 +0,0 @@
-// Copyright (C) 2002-2012 Nikolaus Gebhardt / Thomas Alten\r
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-\r
-#ifndef __S_4D_VERTEX_H_INCLUDED__\r
-#define __S_4D_VERTEX_H_INCLUDED__\r
-\r
-#include "SoftwareDriver2_compile_config.h"\r
-#include "SoftwareDriver2_helper.h"\r
-#include "irrAllocator.h"\r
-#include "EPrimitiveTypes.h"\r
-\r
-namespace irr\r
-{\r
-\r
-namespace video\r
-{\r
-\r
-//! sVec2 used in BurningShader texture coordinates\r
-struct sVec2\r
-{\r
-       f32 x;\r
-       f32 y;\r
-\r
-       sVec2 () {}\r
-\r
-       sVec2 ( f32 s) : x ( s ), y ( s ) {}\r
-       sVec2 ( f32 _x, f32 _y )\r
-               : x ( _x ), y ( _y ) {}\r
-\r
-       void set ( f32 _x, f32 _y )\r
-       {\r
-               x = _x;\r
-               y = _y;\r
-       }\r
-\r
-       // f = a * t + b * ( 1 - t )\r
-       void interpolate(const sVec2& burning_restrict a, const sVec2& burning_restrict b, const ipoltype t)\r
-       {\r
-               x = (f32)(b.x + ( ( a.x - b.x ) * t ));\r
-               y = (f32)(b.y + ( ( a.y - b.y ) * t ));\r
-       }\r
-\r
-       sVec2 operator-(const sVec2& other) const\r
-       {\r
-               return sVec2(x - other.x, y - other.y);\r
-       }\r
-\r
-       sVec2 operator+(const sVec2& other) const\r
-       {\r
-               return sVec2(x + other.x, y + other.y);\r
-       }\r
-\r
-       void operator+=(const sVec2& other)\r
-       {\r
-               x += other.x;\r
-               y += other.y;\r
-       }\r
-\r
-       sVec2 operator*(const f32 s) const\r
-       {\r
-               return sVec2(x * s , y * s);\r
-       }\r
-\r
-       void operator*=( const f32 s)\r
-       {\r
-               x *= s;\r
-               y *= s;\r
-       }\r
-\r
-       void operator=(const sVec2& other)\r
-       {\r
-               x = other.x;\r
-               y = other.y;\r
-       }\r
-\r
-};\r
-\r
-#include "irrpack.h"\r
-\r
-//! sVec2Pack is Irrlicht S3DVertex,S3DVertex2TCoords,S3DVertexTangents Texutre Coordinates.\r
-// Start address is not 4 byte aligned\r
-struct sVec2Pack\r
-{\r
-       f32 x, y;\r
-};\r
-\r
-//! sVec3Pack used in BurningShader, packed direction\r
-struct sVec3Pack\r
-{\r
-       f32 x, y, z;\r
-       //f32 _can_pack;\r
-\r
-       sVec3Pack() {}\r
-       sVec3Pack(f32 _x, f32 _y, f32 _z)\r
-               : x(_x), y(_y), z(_z) {}\r
-\r
-       // f = a * t + b * ( 1 - t )\r
-       void interpolate(const sVec3Pack& burning_restrict v0, const sVec3Pack& burning_restrict v1, const ipoltype t)\r
-       {\r
-               x = (f32)(v1.x + ((v0.x - v1.x) * t));\r
-               y = (f32)(v1.y + ((v0.y - v1.y) * t));\r
-               z = (f32)(v1.z + ((v0.z - v1.z) * t));\r
-       }\r
-\r
-       sVec3Pack operator-(const sVec3Pack& other) const\r
-       {\r
-               return sVec3Pack(x - other.x, y - other.y, z - other.z);\r
-       }\r
-\r
-       sVec3Pack operator+(const sVec3Pack& other) const\r
-       {\r
-               return sVec3Pack(x + other.x, y + other.y, z + other.z);\r
-       }\r
-\r
-       sVec3Pack operator*(const f32 s) const\r
-       {\r
-               return sVec3Pack(x * s, y * s, z * s);\r
-       }\r
-\r
-       void operator+=(const sVec3Pack& other)\r
-       {\r
-               x += other.x;\r
-               y += other.y;\r
-               z += other.z;\r
-       }\r
-\r
-       void operator=(const sVec3Pack& other)\r
-       {\r
-               x = other.x;\r
-               y = other.y;\r
-               z = other.z;\r
-       }\r
-\r
-}  PACK_STRUCT;\r
-\r
-#include "irrunpack.h"\r
-\r
-//! sVec4 used in Driver,BurningShader, direction/color\r
-struct sVec4\r
-{\r
-       union\r
-       {\r
-               struct { f32 x, y, z, w; };\r
-               struct { f32 a, r, g, b; };\r
-       };\r
-\r
-       sVec4 () {}\r
-       sVec4 ( f32 _x, f32 _y, f32 _z, f32 _w )\r
-               : x ( _x ), y ( _y ), z( _z ), w ( _w ){}\r
-\r
-       // f = a * t + b * ( 1 - t )\r
-       void interpolate(const sVec4& burning_restrict a, const sVec4& burning_restrict b, const ipoltype t)\r
-       {\r
-               x = (f32)(b.x + ( ( a.x - b.x ) * t ));\r
-               y = (f32)(b.y + ( ( a.y - b.y ) * t ));\r
-               z = (f32)(b.z + ( ( a.z - b.z ) * t ));\r
-               w = (f32)(b.w + ( ( a.w - b.w ) * t ));\r
-       }\r
-\r
-       sVec4 operator-(const sVec4& other) const\r
-       {\r
-               return sVec4(x - other.x, y - other.y, z - other.z,w - other.w);\r
-       }\r
-\r
-       sVec4 operator+(const sVec4& other) const\r
-       {\r
-               return sVec4(x + other.x, y + other.y, z + other.z,w + other.w);\r
-       }\r
-\r
-       void operator+=(const sVec4& other)\r
-       {\r
-               x += other.x;\r
-               y += other.y;\r
-               z += other.z;\r
-               w += other.w;\r
-       }\r
-\r
-       sVec4 operator*(const f32 s) const\r
-       {\r
-               return sVec4(x * s , y * s, z * s,w * s);\r
-       }\r
-\r
-       sVec4 operator*(const sVec4 &other) const\r
-       {\r
-               return sVec4(x * other.x , y * other.y, z * other.z,w * other.w);\r
-       }\r
-\r
-       void operator*=(const sVec4 &other)\r
-       {\r
-               x *= other.x;\r
-               y *= other.y;\r
-               z *= other.z;\r
-               w *= other.w;\r
-       }\r
-\r
-       void operator=(const sVec4& other)\r
-       {\r
-               x = other.x;\r
-               y = other.y;\r
-               z = other.z;\r
-               w = other.w;\r
-       }\r
-\r
-       //outside shader\r
-       void set(f32 _x, f32 _y, f32 _z, f32 _w)\r
-       {\r
-               x = _x;\r
-               y = _y;\r
-               z = _z;\r
-               w = _w;\r
-       }\r
-       void setA8R8G8B8(const u32 argb)\r
-       {\r
-               a = ((argb & 0xFF000000) >> 24) * (1.f / 255.f);\r
-               r = ((argb & 0x00FF0000) >> 16) * (1.f / 255.f);\r
-               g = ((argb & 0x0000FF00) >> 8 ) * (1.f / 255.f);\r
-               b = ((argb & 0x000000FF)      ) * (1.f / 255.f);\r
-       }\r
-\r
-       REALINLINE ipoltype dot_xyzw(const sVec4& other) const\r
-       {\r
-               return (ipoltype)x * other.x + (ipoltype)y * other.y + (ipoltype)z * other.z + (ipoltype)w * other.w;\r
-       }\r
-\r
-       REALINLINE f32 dot_xyz(const sVec4& other) const\r
-       {\r
-               return x * other.x + y * other.y + z * other.z;\r
-       }\r
-\r
-       REALINLINE f32 dot_minus_xyz(const sVec4& other) const\r
-       {\r
-               return -x * other.x + -y * other.y + -z * other.z;\r
-       }\r
-\r
-       void mul_xyz(const f32 s)\r
-       {\r
-               x *= s;\r
-               y *= s;\r
-               z *= s;\r
-       }\r
-\r
-       f32 length_xyz() const\r
-       {\r
-               return sqrtf(x * x + y * y + z * z);\r
-       }\r
-\r
-       void normalize_dir_xyz()\r
-       {\r
-               //const f32 l = core::reciprocal_squareroot(x * x + y * y + z * z);\r
-               f32 l = x * x + y * y + z * z;\r
-               l = l > 0.0000001f ? 1.f / sqrtf(l) : 1.f;\r
-               x *= l;\r
-               y *= l;\r
-               z *= l;\r
-       }\r
-\r
-\r
-       //unpack sVec3 to aligned during runtime\r
-       sVec4(const sVec3Pack& other)\r
-       {\r
-               x = other.x;\r
-               y = other.y;\r
-               z = other.z;\r
-               w = 0.f;\r
-       }\r
-\r
-       void normalize_pack_xyz(sVec3Pack& out, const f32 len, const f32 ofs) const\r
-       {\r
-               //const f32 l = len * core::reciprocal_squareroot ( r * r + g * g + b * b );\r
-               f32 l = x * x + y * y + z * z;\r
-\r
-               l = l > 0.0000001f ? len / sqrtf(l) : 0.f;\r
-               out.x = (x*l) + ofs;\r
-               out.y = (y*l) + ofs;\r
-               out.z = (z*l) + ofs;\r
-       }\r
-\r
-};\r
-\r
-//!during runtime sVec3Pack\r
-typedef sVec4 sVec3Pack_unpack;\r
-\r
-//!sVec4 is argb. sVec3Color is rgba\r
-struct sVec3Color\r
-{\r
-       f32 r, g, b,a;\r
-\r
-       void set(const f32 s)\r
-       {\r
-               r = s;\r
-               g = s;\r
-               b = s;\r
-               a = s;\r
-       }\r
-\r
-       void setA8R8G8B8(const u32 argb)\r
-       {\r
-               r = ((argb & 0x00FF0000) >> 16) * (1.f / 255.f);\r
-               g = ((argb & 0x0000FF00) >> 8 ) * (1.f / 255.f);\r
-               b = ((argb & 0x000000FF)      ) * (1.f / 255.f);\r
-               a = ((argb & 0xFF000000) >> 24) * (1.f / 255.f);\r
-       }\r
-\r
-       void setColorf(const video::SColorf & color)\r
-       {\r
-               r = color.r;\r
-               g = color.g;\r
-               b = color.b;\r
-               a = color.a;\r
-       }\r
-\r
-       void add_rgb(const sVec3Color& other)\r
-       {\r
-               r += other.r;\r
-               g += other.g;\r
-               b += other.b;\r
-       }\r
-\r
-       void mad_rgb(const sVec3Color& other, const f32 v)\r
-       {\r
-               r += other.r * v;\r
-               g += other.g * v;\r
-               b += other.b * v;\r
-       }\r
-\r
-       void mad_rgbv(const sVec3Color& v0, const sVec3Color& v1)\r
-       {\r
-               r += v0.r * v1.r;\r
-               g += v0.g * v1.g;\r
-               b += v0.b * v1.b;\r
-       }\r
-\r
-       //sVec4 is a,r,g,b, alpha pass\r
-       void sat(sVec4 &dest, const u32 argb) const\r
-       {\r
-               dest.a = ((argb & 0xFF000000) >> 24) * (1.f / 255.f);\r
-               dest.r = r <= 1.f ? r : 1.f;\r
-               dest.g = g <= 1.f ? g : 1.f;\r
-               dest.b = b <= 1.f ? b : 1.f;\r
-       }\r
-\r
-       void sat_xyz(sVec3Pack &dest, const sVec3Color& v1) const\r
-       {\r
-               f32 v;\r
-               v = r * v1.r;   dest.x = v < 1.f ? v : 1.f;\r
-               v = g * v1.g;   dest.y = v < 1.f ? v : 1.f;\r
-               v = b * v1.b;   dest.z = v < 1.f ? v : 1.f;\r
-       }\r
-\r
-       void sat_xyz(sVec4 &dest, const sVec3Color& v1) const\r
-       {\r
-               f32 v;\r
-               dest.a = 1.f;\r
-               v = r * v1.r;   dest.r = v < 1.f ? v : 1.f;\r
-               v = g * v1.g;   dest.g = v < 1.f ? v : 1.f;\r
-               v = b * v1.b;   dest.b = v < 1.f ? v : 1.f;\r
-       }\r
-\r
-\r
-};\r
-\r
-//internal BurningShaderFlag for a Vertex\r
-enum e4DVertexFlag\r
-{\r
-       VERTEX4D_CLIPMASK                               = 0x0000003F,\r
-       VERTEX4D_CLIP_NEAR                              = 0x00000001,\r
-       VERTEX4D_CLIP_FAR                               = 0x00000002,\r
-       VERTEX4D_CLIP_LEFT                              = 0x00000004,\r
-       VERTEX4D_CLIP_RIGHT                             = 0x00000008,\r
-       VERTEX4D_CLIP_BOTTOM                    = 0x00000010,\r
-       VERTEX4D_CLIP_TOP                               = 0x00000020,\r
-       VERTEX4D_INSIDE                                 = 0x0000003F,\r
-\r
-       VERTEX4D_PROJECTED                              = 0x00000100,\r
-       VERTEX4D_VAL_ZERO                               = 0x00000200,\r
-       VERTEX4D_VAL_ONE                                = 0x00000400,\r
-\r
-       VERTEX4D_FORMAT_MASK                    = 0xFFFF0000,\r
-\r
-       VERTEX4D_FORMAT_MASK_TEXTURE    = 0x000F0000,\r
-       VERTEX4D_FORMAT_TEXTURE_1               = 0x00010000,\r
-       VERTEX4D_FORMAT_TEXTURE_2               = 0x00020000,\r
-       VERTEX4D_FORMAT_TEXTURE_3               = 0x00030000,\r
-       VERTEX4D_FORMAT_TEXTURE_4               = 0x00040000,\r
-\r
-       VERTEX4D_FORMAT_MASK_COLOR              = 0x00F00000,\r
-       VERTEX4D_FORMAT_COLOR_1                 = 0x00100000,\r
-       VERTEX4D_FORMAT_COLOR_2_FOG             = 0x00200000,\r
-       VERTEX4D_FORMAT_COLOR_3                 = 0x00300000,\r
-       VERTEX4D_FORMAT_COLOR_4                 = 0x00400000,\r
-\r
-       VERTEX4D_FORMAT_MASK_LIGHT              = 0x0F000000,\r
-       VERTEX4D_FORMAT_LIGHT_1                 = 0x01000000,\r
-       VERTEX4D_FORMAT_LIGHT_2                 = 0x02000000,\r
-\r
-       VERTEX4D_FORMAT_MASK_TANGENT    = 0xF0000000,\r
-       VERTEX4D_FORMAT_BUMP_DOT3               = 0x10000000,\r
-       VERTEX4D_FORMAT_SPECULAR                = 0x20000000,\r
-\r
-};\r
-\r
-//! vertex layout\r
-enum e4DVertexType\r
-{\r
-       E4VT_STANDARD = 0,                      // EVT_STANDARD, video::S3DVertex.\r
-       E4VT_2TCOORDS = 1,                      // EVT_2TCOORDS, video::S3DVertex2TCoords.\r
-       E4VT_TANGENTS = 2,                      // EVT_TANGENTS, video::S3DVertexTangents\r
-       E4VT_REFLECTION_MAP = 3,\r
-       E4VT_SHADOW = 4,                        // float * 3\r
-       E4VT_NO_TEXTURE = 5,            // runtime if texture missing\r
-       E4VT_LINE = 6,\r
-\r
-       E4VT_COUNT\r
-};\r
-\r
-enum e4DIndexType\r
-{\r
-       E4IT_16BIT = 1, // EIT_16BIT,\r
-       E4IT_32BIT = 2, // EIT_32BIT,\r
-       E4IT_NONE  = 4, //\r
-};\r
-\r
-#ifdef BURNINGVIDEO_RENDERER_BEAUTIFUL\r
-       #define BURNING_MATERIAL_MAX_TEXTURES 4\r
-       #define BURNING_MATERIAL_MAX_COLORS 4\r
-       #define BURNING_MATERIAL_MAX_LIGHT_TANGENT 1\r
-\r
-       //ensure handcrafted sizeof(s4DVertex)\r
-       #define sizeof_s4DVertex        128\r
-\r
-#else\r
-       #define BURNING_MATERIAL_MAX_TEXTURES 2\r
-       #ifdef SOFTWARE_DRIVER_2_USE_VERTEX_COLOR\r
-               #define BURNING_MATERIAL_MAX_COLORS 1\r
-       #else\r
-               #define BURNING_MATERIAL_MAX_COLORS 0\r
-       #endif\r
-       #define BURNING_MATERIAL_MAX_LIGHT_TANGENT 1\r
-\r
-       //ensure handcrafted sizeof(s4DVertex)\r
-       #define sizeof_s4DVertex        64\r
-#endif\r
-\r
-// dummy Vertex. used for calculation vertex memory size\r
-struct s4DVertex_proxy\r
-{\r
-       sVec4 Pos;\r
-#if BURNING_MATERIAL_MAX_TEXTURES > 0\r
-       sVec2 Tex[BURNING_MATERIAL_MAX_TEXTURES];\r
-#endif\r
-#if BURNING_MATERIAL_MAX_COLORS > 0\r
-       sVec4 Color[BURNING_MATERIAL_MAX_COLORS];\r
-#endif\r
-#if BURNING_MATERIAL_MAX_LIGHT_TANGENT > 0\r
-       sVec3Pack LightTangent[BURNING_MATERIAL_MAX_LIGHT_TANGENT];\r
-#endif\r
-       u32 flag; // e4DVertexFlag\r
-\r
-};\r
-\r
-\r
-/*!\r
-       Internal BurningVideo Vertex\r
-*/\r
-struct s4DVertex\r
-{\r
-       sVec4 Pos;\r
-#if BURNING_MATERIAL_MAX_TEXTURES > 0\r
-       sVec2 Tex[ BURNING_MATERIAL_MAX_TEXTURES ];\r
-#endif\r
-#if BURNING_MATERIAL_MAX_COLORS > 0\r
-       sVec4 Color[ BURNING_MATERIAL_MAX_COLORS ];\r
-#endif\r
-#if BURNING_MATERIAL_MAX_LIGHT_TANGENT > 0\r
-       sVec3Pack LightTangent[BURNING_MATERIAL_MAX_LIGHT_TANGENT];\r
-#endif\r
-\r
-       u32 flag; // e4DVertexFlag\r
-\r
-\r
-#if BURNING_MATERIAL_MAX_COLORS < 1 || BURNING_MATERIAL_MAX_LIGHT_TANGENT < 1\r
-       u8 __align [sizeof_s4DVertex - sizeof (s4DVertex_proxy) ];\r
-#endif\r
-\r
-       // f = a * t + b * ( 1 - t )\r
-       void interpolate(const s4DVertex& burning_restrict b, const s4DVertex& burning_restrict a, const ipoltype t)\r
-       {\r
-               Pos.interpolate ( a.Pos, b.Pos, t );\r
-#if 0\r
-               Tex[0].interpolate(a.Tex[0], b.Tex[0], t);\r
-               Tex[1].interpolate(a.Tex[1], b.Tex[1], t);\r
-               Color[0].interpolate(a.Color[0], b.Color[0], t);\r
-               LightTangent[0].interpolate(a.LightTangent[0], b.LightTangent[0], t);\r
-#endif\r
-\r
-               size_t i;\r
-               size_t size;\r
-\r
-#if BURNING_MATERIAL_MAX_TEXTURES > 0\r
-               size = (flag & VERTEX4D_FORMAT_MASK_TEXTURE) >> 16;\r
-               for ( i = 0; i!= size; ++i )\r
-               {\r
-                       Tex[i].interpolate ( a.Tex[i], b.Tex[i], t );\r
-               }\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_COLORS > 0\r
-               size = (flag & VERTEX4D_FORMAT_MASK_COLOR) >> 20;\r
-               for ( i = 0; i!= size; ++i )\r
-               {\r
-                       Color[i].interpolate ( a.Color[i], b.Color[i], t );\r
-               }\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_LIGHT_TANGENT > 0\r
-               size = (flag & VERTEX4D_FORMAT_MASK_LIGHT) >> 24;\r
-               for ( i = 0; i!= size; ++i )\r
-               {\r
-                       LightTangent[i].interpolate ( a.LightTangent[i], b.LightTangent[i], t );\r
-               }\r
-#endif\r
-\r
-       }\r
-};\r
-\r
-// ----------------- Vertex Cache ---------------------------\r
-\r
-// Buffer is used as pairs of S4DVertex (0 ... ndc, 1 .. dc and projected)\r
-typedef s4DVertex s4DVertexPair;\r
-#define sizeof_s4DVertexPairRel 2\r
-#define s4DVertex_ofs(index)  ((index)*sizeof_s4DVertexPairRel)\r
-#define s4DVertex_proj(index) ((index)*sizeof_s4DVertexPairRel) + 1\r
-\r
-struct SAligned4DVertex\r
-{\r
-       SAligned4DVertex()\r
-               :data(0),ElementSize(0),mem(0)  {}\r
-\r
-       virtual ~SAligned4DVertex ()\r
-       {\r
-               if (mem)\r
-               {\r
-                       delete[] mem;\r
-                       mem = 0;\r
-               }\r
-       }\r
-\r
-       void resize(size_t element)\r
-       {\r
-               if (element > ElementSize)\r
-               {\r
-                       if (mem) delete[] mem;\r
-                       size_t byteSize = align_next(element * sizeof_s4DVertex, 4096);\r
-                       mem = new u8[byteSize];\r
-               }\r
-               ElementSize = element;\r
-               data = (s4DVertex*)mem;\r
-       }\r
-\r
-       s4DVertex* data;        //align to 16 byte\r
-       size_t ElementSize;\r
-\r
-private:\r
-\r
-       u8* mem;\r
-};\r
-\r
-//#define memcpy_s4DVertexPair(dst,src) memcpy(dst,src,sizeof_s4DVertex * 2)\r
-static REALINLINE void memcpy_s4DVertexPair(void* burning_restrict dst, const void* burning_restrict src)\r
-{\r
-       //test alignment -> if already in aligned data\r
-#if 0\r
-       if (((size_t)dst & 0xC) | ((size_t)src & 0xC))\r
-       {\r
-               int g = 1;\r
-       }\r
-#endif\r
-\r
-#if defined(ENV64BIT) && (sizeof_s4DVertex * sizeof_s4DVertexPairRel == 128)\r
-       u64* burning_restrict dst64 = (u64*)dst;\r
-       const u64* burning_restrict src64 = (const u64*)src;\r
-\r
-       dst64[0]  = src64[0];\r
-       dst64[1]  = src64[1];\r
-       dst64[2]  = src64[2];\r
-       dst64[3]  = src64[3];\r
-       dst64[4]  = src64[4];\r
-       dst64[5]  = src64[5];\r
-       dst64[6]  = src64[6];\r
-       dst64[7]  = src64[7];\r
-\r
-       dst64[8]  = src64[8];\r
-       dst64[9]  = src64[9];\r
-       dst64[10] = src64[10];\r
-       dst64[11] = src64[11];\r
-       dst64[12] = src64[12];\r
-       dst64[13] = src64[13];\r
-       dst64[14] = src64[14];\r
-       dst64[15] = src64[15];\r
-\r
-#elif defined(ENV64BIT) && (sizeof_s4DVertex * sizeof_s4DVertexPairRel == 256)\r
-       u64* burning_restrict dst64 = (u64*)dst;\r
-       const u64* burning_restrict src64 = (const u64*)src;\r
-\r
-       dst64[0]  = src64[0];\r
-       dst64[1]  = src64[1];\r
-       dst64[2]  = src64[2];\r
-       dst64[3]  = src64[3];\r
-       dst64[4]  = src64[4];\r
-       dst64[5]  = src64[5];\r
-       dst64[6]  = src64[6];\r
-       dst64[7]  = src64[7];\r
-\r
-       dst64[8]  = src64[8];\r
-       dst64[9]  = src64[9];\r
-       dst64[10] = src64[10];\r
-       dst64[11] = src64[11];\r
-       dst64[12] = src64[12];\r
-       dst64[13] = src64[13];\r
-       dst64[14] = src64[14];\r
-       dst64[15] = src64[15];\r
-\r
-       dst64[16] = src64[16];\r
-       dst64[17] = src64[17];\r
-       dst64[18] = src64[18];\r
-       dst64[19] = src64[19];\r
-       dst64[20] = src64[20];\r
-       dst64[21] = src64[21];\r
-       dst64[22] = src64[22];\r
-       dst64[23] = src64[23];\r
-\r
-       dst64[24] = src64[24];\r
-       dst64[25] = src64[25];\r
-       dst64[26] = src64[26];\r
-       dst64[27] = src64[27];\r
-       dst64[28] = src64[28];\r
-       dst64[29] = src64[29];\r
-       dst64[30] = src64[30];\r
-       dst64[31] = src64[31];\r
-\r
-#else\r
-       u32* dst32 = (u32*)dst;\r
-       const u32* src32 = (const u32*)src;\r
-\r
-       size_t len = sizeof_s4DVertex * sizeof_s4DVertexPairRel;\r
-       while (len >= 32)\r
-       {\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               *dst32++ = *src32++;\r
-               len -= 32;\r
-       }\r
-/*\r
-       while (len >= 4)\r
-       {\r
-               *dst32++ = *src32++;\r
-               len -= 4;\r
-       }\r
-*/\r
-#endif\r
-}\r
-\r
-\r
-//! hold info for different Vertex Types\r
-struct SVSize\r
-{\r
-       size_t Format;          // e4DVertexFlag VERTEX4D_FORMAT_MASK_TEXTURE\r
-       size_t Pitch;           // sizeof Vertex\r
-       size_t TexSize; // amount Textures\r
-       size_t TexCooSize;      // sizeof TextureCoordinates\r
-};\r
-\r
-\r
-// a cache info\r
-struct SCacheInfo\r
-{\r
-       u32 index;\r
-       u32 hit;\r
-};\r
-\r
-//must at least hold all possible (clipped) vertices of primitive.\r
-#define VERTEXCACHE_ELEMENT    16                      \r
-#define VERTEXCACHE_MISS 0xFFFFFFFF\r
-struct SVertexCache\r
-{\r
-       SVertexCache () {}\r
-       ~SVertexCache() {}\r
-\r
-       //VertexType\r
-       SVSize vSize[E4VT_COUNT];\r
-\r
-       SCacheInfo info[VERTEXCACHE_ELEMENT];\r
-       SCacheInfo info_temp[VERTEXCACHE_ELEMENT];\r
-\r
-\r
-       // Transformed and lite, clipping state\r
-       // + Clipped, Projected\r
-       SAligned4DVertex mem;\r
-\r
-       // source\r
-       const void* vertices;\r
-       u32 vertexCount;\r
-\r
-       const void* indices;\r
-       u32 indexCount;\r
-       u32 indicesIndex;\r
-       u32 indicesRun;\r
-       u32 indicesPitch;\r
-\r
-       // primitives consist of x vertices\r
-       size_t primitiveHasVertex;\r
-\r
-       e4DVertexType vType;            //E_VERTEX_TYPE\r
-       scene::E_PRIMITIVE_TYPE pType;          //scene::E_PRIMITIVE_TYPE\r
-       e4DIndexType iType;             //E_INDEX_TYPE iType\r
-\r
-};\r
-\r
-\r
-// swap 2 pointer\r
-REALINLINE void swapVertexPointer(const s4DVertex** v1, const s4DVertex** v2)\r
-{\r
-       const s4DVertex* b = *v1;\r
-       *v1 = *v2;\r
-       *v2 = b;\r
-}\r
-\r
-\r
-// ------------------------ Internal Scanline Rasterizer -----------------------------\r
-\r
-\r
-\r
-// internal scan convert\r
-struct sScanConvertData\r
-{\r
-       u32 left;                       // major edge left/right\r
-       u32 right;                      // !left\r
-       u8 _unused_pack[8];\r
-\r
-       f32 invDeltaY[4];       // inverse edge delta for screen space sorted triangle \r
-\r
-       f32 x[2];                       // x coordinate\r
-       f32 slopeX[2];          // x slope along edges\r
-\r
-#if defined ( SOFTWARE_DRIVER_2_USE_WBUFFER ) || defined ( SOFTWARE_DRIVER_2_PERSPECTIVE_CORRECT )\r
-       f32 w[2];                       // w coordinate\r
-       fp24 slopeW[2];         // w slope along edges\r
-#else\r
-       f32 z[2];                       // z coordinate\r
-       f32 slopeZ[2];          // z slope along edges\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_COLORS > 0\r
-       sVec4 c[BURNING_MATERIAL_MAX_COLORS][2];                // color\r
-       sVec4 slopeC[BURNING_MATERIAL_MAX_COLORS][2];   // color slope along edges\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_TEXTURES > 0\r
-       sVec2 t[BURNING_MATERIAL_MAX_TEXTURES][2];              // texture\r
-       sVec2 slopeT[BURNING_MATERIAL_MAX_TEXTURES][2]; // texture slope along edges\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_LIGHT_TANGENT > 0\r
-       sVec3Pack_unpack l[BURNING_MATERIAL_MAX_LIGHT_TANGENT][2];              // Light Tangent\r
-       sVec3Pack_unpack slopeL[BURNING_MATERIAL_MAX_LIGHT_TANGENT][2]; // tanget slope along edges\r
-#endif\r
-};\r
-\r
-// passed to scan Line\r
-struct sScanLineData\r
-{\r
-       s32 y;                          // y position of scanline\r
-       u8 _unused_pack[4];\r
-       f32 x[2];                       // x start, x end of scanline\r
-\r
-#if defined ( SOFTWARE_DRIVER_2_USE_WBUFFER ) || defined ( SOFTWARE_DRIVER_2_PERSPECTIVE_CORRECT )\r
-       f32 w[2];                       // w start, w end of scanline\r
-#else\r
-       f32 z[2];                       // z start, z end of scanline\r
-#endif\r
-\r
-       s32 x_edgetest;         // slope x\r
-       u8 _unused_pack_1[4];\r
-\r
-#if BURNING_MATERIAL_MAX_COLORS > 0\r
-       sVec4 c[BURNING_MATERIAL_MAX_COLORS][2];                        // color start, color end of scanline\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_TEXTURES > 0\r
-       sVec2 t[BURNING_MATERIAL_MAX_TEXTURES][2];              // texture start, texture end of scanline\r
-#endif\r
-\r
-#if BURNING_MATERIAL_MAX_LIGHT_TANGENT > 0\r
-       sVec3Pack_unpack l[BURNING_MATERIAL_MAX_LIGHT_TANGENT][2];              // Light Tangent start, end\r
-#endif\r
-};\r
-\r
-// passed to pixel Shader\r
-struct sPixelShaderData\r
-{\r
-       tVideoSample *dst;\r
-       fp24 *z;\r
-\r
-       s32 xStart;\r
-       s32 xEnd;\r
-       s32 dx;\r
-       s32 i;\r
-};\r
-\r
-/*\r
-       load a color value\r
-*/\r
-REALINLINE void getTexel_plain2 (      tFixPoint &r, tFixPoint &g, tFixPoint &b,const sVec4 &v )\r
-{\r
-       r = tofix(v.r, FIX_POINT_F32_MUL);\r
-       g = tofix(v.g, FIX_POINT_F32_MUL);\r
-       b = tofix(v.b, FIX_POINT_F32_MUL);\r
-}\r
-\r
-#if 0\r
-/*\r
-       load a color value\r
-*/\r
-REALINLINE void getSample_color (      tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b, const sVec4 &v )\r
-{\r
-       a = tofix ( v.a, FIX_POINT_F32_MUL);\r
-       r = tofix ( v.r, COLOR_MAX * FIX_POINT_F32_MUL);\r
-       g = tofix ( v.g, COLOR_MAX * FIX_POINT_F32_MUL);\r
-       b = tofix ( v.b, COLOR_MAX * FIX_POINT_F32_MUL);\r
-}\r
-\r
-/*\r
-       load a color value\r
-*/\r
-REALINLINE void getSample_color ( tFixPoint &r, tFixPoint &g, tFixPoint &b,const sVec4 &v )\r
-{\r
-       r = tofix ( v.r, COLOR_MAX * FIX_POINT_F32_MUL);\r
-       g = tofix ( v.g, COLOR_MAX * FIX_POINT_F32_MUL);\r
-       b = tofix ( v.b, COLOR_MAX * FIX_POINT_F32_MUL);\r
-}\r
-#endif\r
-\r
-/*\r
-       load a color value. mulby controls [0;1] or [0;ColorMax]\r
-       aka getSample_color\r
-*/\r
-REALINLINE void vec4_to_fix(tFixPoint &r, tFixPoint &g, tFixPoint &b,const sVec4 &v, const f32 mulby )\r
-{\r
-       r = tofix(v.r, mulby);\r
-       g = tofix(v.g, mulby);\r
-       b = tofix(v.b, mulby);\r
-}\r
-\r
-REALINLINE void vec4_to_fix(tFixPoint &a,tFixPoint &r, tFixPoint &g, tFixPoint &b,const sVec4 &v, const f32 mulby)\r
-{\r
-       a = tofix(v.a, mulby);\r
-       r = tofix(v.r, mulby);\r
-       g = tofix(v.g, mulby);\r
-       b = tofix(v.b, mulby);\r
-}\r
-\r
-\r
-}\r
-\r
-}\r
-\r
-#endif\r
-\r
index 497bf970cbe7526fd1ba29c8133a61c80ac3d2aa..8f46869529f953ef5641b6da0b3b18afba82610c 100644 (file)
@@ -7,28 +7,6 @@
 \r
 #include "IrrCompileConfig.h"\r
 \r
-// Generic Render Flags for burning's video rasterizer\r
-// defined now in irrlicht compile config\r
-\r
-#define SOFTWARE_DRIVER_2_PERSPECTIVE_CORRECT\r
-#define SOFTWARE_DRIVER_2_SUBTEXEL\r
-#define SOFTWARE_DRIVER_2_BILINEAR\r
-#define SOFTWARE_DRIVER_2_LIGHTING\r
-#define SOFTWARE_DRIVER_2_USE_VERTEX_COLOR\r
-#define SOFTWARE_DRIVER_2_USE_SEPARATE_SPECULAR_COLOR\r
-#define SOFTWARE_DRIVER_2_USE_WBUFFER\r
-#define SOFTWARE_DRIVER_2_32BIT\r
-#define        SOFTWARE_DRIVER_2_TEXTURE_COLOR_FORMAT  ECF_A8R8G8B8\r
-#define        SOFTWARE_DRIVER_2_RENDERTARGET_COLOR_FORMAT     ECF_A8R8G8B8\r
-#define SOFTWARE_DRIVER_2_TEXTURE_MAXSIZE              0x100000\r
-#define SOFTWARE_DRIVER_2_TEXTURE_TRANSFORM\r
-#define SOFTWARE_DRIVER_2_MIPMAPPING_MAX               16\r
-#define SOFTWARE_DRIVER_2_MIPMAPPING_MIN_SIZE   1\r
-#define SOFTWARE_DRIVER_2_SCANLINE_MAG_MIN\r
-#define SOFTWARE_DRIVER_2_CLIPPING\r
-#define SOFTWARE_DRIVER_2_2D_AS_3D\r
-#define SOFTWARE_DRIVER_2_INTERLACED\r
-\r
 #ifndef REALINLINE\r
 #ifdef _MSC_VER\r
 #define REALINLINE __forceinline\r
 #endif\r
 #endif\r
 \r
-#define reciprocal_zero(x) ((x) != 0.f ? 1.f / (x):0.f)\r
-#define reciprocal_one(x) ((x) != 0.f ? 1.f / (x):1.f)\r
-\r
-//Control Scanline output\r
-#define SOFTWARE_DRIVER_2_STEP_X 1\r
-#define SOFTWARE_DRIVER_2_STEP_Y 1\r
-\r
-// null check necessary (burningvideo only)\r
-#define fill_step_y(y) ((y) != 0.f ? (float)1.f / (y):0.f)\r
-static inline float fill_step_x(float x) { return x != 0.f ? (float)SOFTWARE_DRIVER_2_STEP_X / x : 0.f; }\r
-\r
-#define interlace_control_bit 1\r
-#define interlace_control_mask ((1<<interlace_control_bit)-1)\r
-struct interlaced_control\r
-{\r
-       unsigned enable : 1;\r
-       unsigned bypass : 1;\r
-       unsigned nr : interlace_control_bit;\r
-};\r
-struct interlace_scanline_data { unsigned int y; };\r
-\r
-static inline interlaced_control interlace_disabled()\r
-{\r
-       interlaced_control v;\r
-       v.enable = 0;\r
-       v.bypass = 1;\r
-       v.nr = 0;\r
-       return v;\r
-}\r
-#if defined(SOFTWARE_DRIVER_2_INTERLACED)\r
-#define interlace_scanline if ( Interlaced.bypass | ((line.y & interlace_control_mask) == Interlaced.nr) )\r
-#define interlace_scanline_enabled if ( (line.y & interlace_control_mask) == Interlaced.nr )\r
-//#define interlace_scanline if ( Interlaced.disabled | (((line.y >> (interlace_control_bit-1) ) & 1) == (Interlaced.nr & 1)) )\r
-//#define interlace_scanline\r
-#else\r
-#define interlace_scanline\r
-#define interlace_scanline_enabled\r
-#endif\r
-\r
-#define scissor_test_y if ((~TL_Flag & TL_SCISSOR) || ((line.y >= Scissor.y0) & (line.y <= Scissor.y1)))\r
-#define scissor_test_x if ((~TL_Flag & TL_SCISSOR) || ((i+xStart >= Scissor.x0) & (i+xStart <= Scissor.x1)))\r
-\r
-#define fill_convention_left(x) (s32) ceilf(x)\r
-#define fill_convention_right(x) ((s32) ceilf(x))-1\r
-#define fill_convention_none(x) (s32) (x)\r
-#define fill_convention_edge(x) (s32) floorf(fabsf(x)+0.f)\r
-//#define fill_convention_left(x) 65536 - int(65536.0f - x)\r
-//#define fill_convention_right(x) 65535 - int(65536.0f - x)\r
-\r
-\r
-//Check coordinates are in render target/window space\r
-//#define SOFTWARE_DRIVER_2_DO_CLIPCHECK\r
-#if defined (SOFTWARE_DRIVER_2_DO_CLIPCHECK) && defined(_WIN32)\r
-#define SOFTWARE_DRIVER_2_CLIPCHECK      if( xStart < 0 || xStart + dx >= (s32)RenderTarget->getDimension().Width || line.y < 0 || line.y >= (s32) RenderTarget->getDimension().Height ) __debugbreak()\r
-#define SOFTWARE_DRIVER_2_CLIPCHECK_REF  if( pShader.xStart < 0 || pShader.xStart + pShader.dx >= (s32)RenderTarget->getDimension().Width || line.y < 0 || line.y >= (s32) RenderTarget->getDimension().Height ) __debugbreak()\r
-#define SOFTWARE_DRIVER_2_CLIPCHECK_WIRE if( aposx < 0 || aposx >= (s32)RenderTarget->getDimension().Width || aposy < 0 || aposy >= (s32) RenderTarget->getDimension().Height ) __debugbreak()\r
-\r
-inline float reciprocal_zero_no(const float x)\r
-{\r
-       if (x * x <= 0.00001f) __debugbreak();\r
-       return 1.f / x;\r
-}\r
-#else\r
-#define SOFTWARE_DRIVER_2_CLIPCHECK\r
-#define SOFTWARE_DRIVER_2_CLIPCHECK_REF\r
-#define SOFTWARE_DRIVER_2_CLIPCHECK_WIRE\r
-\r
-#define reciprocal_zero_no(x) 1.f/x\r
-#endif\r
-\r
-//!scanline renderer emulate line\r
-enum edge_test_flag\r
-{\r
-       edge_test_pass = 1,             //! not wireframe\r
-       edge_test_left = 0,\r
-       edge_test_first_line = 2,\r
-       edge_test_point = 4\r
-};\r
-//if any edge test flag is set result=1 else 0. ( pass height test for degenerate triangle )\r
-#define reciprocal_edge(x) ((x) != 0.f ? 1.f / (x):(~EdgeTestPass)&1)\r
-\r
-//! normalize from fixed point Color Max to fixed point [0;1]\r
-#define fix_color_norm(x) x = (x+1) >> COLOR_MAX_LOG2\r
-\r
-//! from 1 bit to 5 bit\r
-#if defined(SOFTWARE_DRIVER_2_32BIT)\r
-#define fix_alpha_color_max(x)\r
-#else\r
-#define fix_alpha_color_max(x) if (x) x = (x << COLOR_MAX_LOG2) - 1\r
-#endif\r
-\r
-// Check windows\r
-#if _WIN32 || _WIN64\r
-#if _WIN64\r
-#define ENV64BIT\r
-#else\r
-#define ENV32BIT\r
-#endif\r
-#endif\r
-\r
-// Check GCC\r
-#if __GNUC__\r
-#if __x86_64__ || __ppc64__\r
-#define ENV64BIT\r
-#else\r
-#define ENV32BIT\r
-#endif\r
-#endif\r
-\r
-#if defined(ENV64BIT) && defined(BURNINGVIDEO_RENDERER_BEAUTIFUL)\r
-typedef float ipoltype;\r
-#else\r
-typedef float ipoltype;\r
-#endif\r
-\r
-#define        ipol_lower_equal_0(n)   ((n) <= (ipoltype)0.0)\r
-#define        ipol_greater_0(n)               ((n) >  (ipoltype)0.0)\r
-\r
-#if    (_MSC_VER > 1700 )\r
-#define burning_restrict __restrict\r
-#else\r
-#define burning_restrict\r
-#endif\r
-\r
-/*\r
-       if (condition) state |= mask; else state &= ~mask;\r
-*/\r
-static inline void burning_setbit(size_t& state, int condition, size_t mask)\r
-{\r
-       if (condition) state |= mask;\r
-       else state &= ~mask;\r
-}\r
-\r
-/*\r
-       if (condition) state |= m; else state &= ~m;\r
-*/\r
-REALINLINE void burning_setbit32(unsigned int& state, int condition, const unsigned int mask)\r
-{\r
-       // 0, or any positive to mask\r
-       //s32 conmask = -condition >> 31;\r
-       state ^= ((-condition >> 31) ^ state) & mask;\r
-}\r
-\r
-#define burning_stringify(s) #s\r
-#define burning_create_indirect(s) create_##s\r
-#define burning_create(s) burning_create_indirect(s)\r
-\r
-\r
-#if defined(PATCH_SUPERTUX_8_0_1_with_1_9_0)\r
-#define snprintf_irr sprintf_s\r
-#define EVDF_DEPTH_CLAMP 43\r
-#define E_CUBE_SURFACE int\r
-#define ECFN_DISABLED 0\r
-\r
-namespace irr {\r
-       namespace video {\r
-\r
-               //! Enum for the flags of clear buffer\r
-               enum E_CLEAR_BUFFER_FLAG\r
-               {\r
-                       ECBF_NONE = 0,\r
-                       ECBF_COLOR = 1,\r
-                       ECBF_DEPTH = 2,\r
-                       ECBF_STENCIL = 4,\r
-                       ECBF_ALL = ECBF_COLOR | ECBF_DEPTH | ECBF_STENCIL\r
-               };\r
-\r
-               //! For SMaterial.ZWriteEnable\r
-               enum E_ZWRITE\r
-               {\r
-                       EZW_OFF = 0,\r
-                       EZW_AUTO,\r
-                       EZW_ON\r
-               };\r
-       }\r
-}\r
-#endif // PATCH_SUPERTUX_8_0_1_with_1_9_0\r
-\r
 //! Size of a static C-style array.\r
 #define array_size(_arr)  ((sizeof(_arr)/sizeof(*_arr)))\r
 \r
 //! Compiler Align\r
 #if defined(_MSC_VER)\r
-#if defined(ENV64BIT)\r
 #define ALIGN(x) __declspec(align(x))\r
-#else\r
-// ALIGN(16) not working\r
-#define ALIGN(x) __declspec(align(8))\r
-#endif\r
 #elif defined(__GNUC__)\r
 #define ALIGN(x) __attribute__ ((aligned(x)))\r
 #else\r
index 47377aed65808210da1e3909f0247dd7b29eb64d..2f8b00b0f2c2dee95129870f85c7aafb5f3c289d 100644 (file)
 \r
 #include "SoftwareDriver2_compile_config.h"\r
 #include "irrMath.h"\r
-#include "irrMathFastCompat.h"\r
-#include "CSoftwareTexture2.h"\r
 #include "SMaterial.h"\r
 \r
 \r
 namespace irr\r
 {\r
 \r
-// supporting different packed pixel needs many defines...\r
-\r
-#if defined(SOFTWARE_DRIVER_2_32BIT)\r
-       typedef u32     tVideoSample;\r
-       typedef u32     tStencilSample;\r
-\r
-       #define MASK_A  0xFF000000\r
-       #define MASK_R  0x00FF0000\r
-       #define MASK_G  0x0000FF00\r
-       #define MASK_B  0x000000FF\r
-\r
-       #define SHIFT_A (unsigned)24\r
-       #define SHIFT_R (unsigned)16\r
-       #define SHIFT_G (unsigned)8\r
-       #define SHIFT_B (unsigned)0\r
-\r
-       #define COLOR_MAX                                       0xFF\r
-       #define COLOR_MAX_LOG2                          8\r
-       #define COLOR_BRIGHT_WHITE                      0xFFFFFFFF\r
-\r
-       #define SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY   (unsigned)2\r
-       #define SOFTWARE_DRIVER_2_RENDERTARGET_GRANULARITY      (unsigned)2\r
-#else\r
-       typedef u16     tVideoSample;\r
-       typedef u8      tStencilSample;\r
-\r
-       #define MASK_A  0x8000\r
-       #define MASK_R  0x7C00\r
-       #define MASK_G  0x03E0\r
-       #define MASK_B  0x001F\r
-\r
-       #define SHIFT_A (unsigned)15\r
-       #define SHIFT_R (unsigned)10\r
-       #define SHIFT_G (unsigned)5\r
-       #define SHIFT_B (unsigned)0\r
-\r
-       #define COLOR_MAX                                       0x1F\r
-       #define COLOR_MAX_LOG2                          5\r
-       #define COLOR_BRIGHT_WHITE                      0xFFFF\r
-       #define SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY   (unsigned)1\r
-       #define SOFTWARE_DRIVER_2_RENDERTARGET_GRANULARITY      (unsigned)1\r
-\r
-#endif\r
-\r
-\r
-\r
-\r
 // ----------------------- Generic ----------------------------------\r
 //! align_next - align to next upper 2^n\r
 #define align_next(num,to) (((num) + (to-1)) & (~(to-1)))\r
@@ -141,50 +92,6 @@ inline void memset16(void * dest, const u16 value, size_t bytesize)
        }\r
 }\r
 \r
-//! memset interleaved\r
-inline void memset32_interlaced(void* dest, const u32 value, size_t pitch,u32 height,const interlaced_control Interlaced)\r
-{\r
-       if (Interlaced.bypass) return memset32(dest, value, pitch * height);\r
-\r
-       u8* dst = (u8*)dest;\r
-       interlace_scanline_data line;\r
-       for (line.y = 0; line.y < height; line.y += SOFTWARE_DRIVER_2_STEP_Y)\r
-       {\r
-               interlace_scanline_enabled memset32(dst, value, pitch);\r
-               dst += pitch;\r
-       }\r
-}\r
-\r
-// byte-align structures\r
-#include "irrpack.h"\r
-\r
-//IEEE Standard for Floating - Point Arithmetic(IEEE 754)\r
-typedef union {\r
-       float f;\r
-       unsigned int u;\r
-       struct { unsigned int frac:23; unsigned exp:8; unsigned int sign:1; } fields;\r
-       struct { unsigned int frac_exp:31; } abs;\r
-} PACK_STRUCT ieee754;\r
-\r
-// Default alignment\r
-#include "irrunpack.h"\r
-\r
-// 0.5f as integer\r
-#define ieee754_zero_dot_5     0x3f000000\r
-#define ieee754_one                    0x3f800000\r
-#define ieee754_two                    0x40000000\r
-\r
-#if 0\r
-// integer log2 of a float ieee 754. [not used anymore]\r
-static inline s32 s32_log2_f32( f32 f)\r
-{\r
-       //u32 x = IR ( f ); return ((x & 0x7F800000) >> 23) - 127;\r
-       ieee754 _log2;\r
-       _log2.f = f;\r
-       return _log2.fields.exp ? _log2.fields.exp - 127 : 10000000; /*denormal very high number*/\r
-}\r
-#endif\r
-\r
 // integer log2 of an integer. returning 0 as denormal\r
 static inline s32 s32_log2_s32(u32 in)\r
 {\r
@@ -195,25 +102,8 @@ static inline s32 s32_log2_s32(u32 in)
                ret++;\r
        }\r
        return ret;\r
-       //return s32_log2_f32( (f32) x);\r
-       //ieee754 _log2;_log2.f = (f32) in; return _log2.fields.exp - 127;\r
-}\r
-\r
-#if 0\r
-static inline s32 s32_abs(s32 x)\r
-{\r
-       s32 b = x >> 31;\r
-       return (x ^ b ) - b;\r
 }\r
 \r
-\r
-//! conditional set based on mask and arithmetic shift\r
-REALINLINE u32 if_mask_a_else_b ( const u32 mask, const u32 a, const u32 b )\r
-{\r
-       return ( mask & ( a ^ b ) ) ^ b;\r
-}\r
-#endif\r
-\r
 // ------------------ Video---------------------------------------\r
 /*!\r
        Pixel = dest * ( 1 - alpha ) + source * alpha\r
@@ -331,53 +221,12 @@ REALINLINE u32 PixelAdd32 ( const u32 c2, const u32 c1)
        return modulo | clamp;\r
 }\r
 \r
-#if 0\r
-\r
-// 1 - Bit Alpha Blending\r
-inline u16 PixelBlend16 ( const u16 destination, const u16 source )\r
-{\r
-       if((source & 0x8000) == 0x8000)\r
-               return source; // The source is visible, so use it.\r
-       else\r
-               return destination; // The source is transparent, so use the destination.\r
-}\r
-\r
-// 1 - Bit Alpha Blending 16Bit SIMD\r
-inline u32 PixelBlend16_simd ( const u32 destination, const u32 source )\r
-{\r
-       switch(source & 0x80008000)\r
-       {\r
-               case 0x80008000: // Both source pixels are visible\r
-                       return source;\r
-\r
-               case 0x80000000: // Only the first source pixel is visible\r
-                       return (source & 0xFFFF0000) | (destination & 0x0000FFFF);\r
-\r
-               case 0x00008000: // Only the second source pixel is visible.\r
-                       return (destination & 0xFFFF0000) | (source & 0x0000FFFF);\r
-\r
-               default: // Neither source pixel is visible.\r
-                       return destination;\r
-       }\r
-}\r
-#else\r
-\r
 // 1 - Bit Alpha Blending\r
 inline u16 PixelBlend16 ( const u16 c2, const u16 c1 )\r
 {\r
        u16 mask = ((c1 & 0x8000) >> 15 ) + 0x7fff;\r
        return (c2 & mask ) | ( c1 & ~mask );\r
 }\r
-\r
-// 1 - Bit Alpha Blending 16Bit SIMD\r
-inline u32 PixelBlend16_simd ( const u32 c2, const u32 c1 )\r
-{\r
-       u32 mask = ((c1 & 0x80008000) >> 15 ) + 0x7fff7fff;\r
-       return (c2 & mask ) | ( c1 & ~mask );\r
-}\r
-\r
-#endif\r
-\r
 /*!\r
        Pixel = dest * ( 1 - SourceAlpha ) + source * SourceAlpha (OpenGL blending)\r
 */\r
@@ -423,762 +272,6 @@ inline u32 PixelBlend32 ( const u32 c2, const u32 c1 )
 }\r
 \r
 \r
-\r
-// ------------------ Fix Point ----------------------------------\r
-\r
-#if defined(ENV64BIT)\r
-typedef s32 tFixPoint;\r
-typedef u32 tFixPointu;\r
-#else\r
-typedef s32 tFixPoint;\r
-typedef u32 tFixPointu;\r
-#endif\r
-\r
-// Fix Point 12 (overflow on s32)\r
-#if 0\r
-       #define FIX_POINT_PRE                   12\r
-       #define FIX_POINT_FRACT_MASK    0xFFF\r
-       #define FIX_POINT_UNSIGNED_MASK 0x7FFFF000\r
-       #define FIX_POINT_ONE                   0x1000\r
-       #define FIX_POINT_ZERO_DOT_FIVE 0x0800\r
-       #define FIX_POINT_F32_MUL               4096.f\r
-#endif\r
-\r
-// Fix Point 11 (overflow on s32)\r
-#if 0\r
-       #define FIX_POINT_PRE                   11\r
-       #define FIX_POINT_FRACT_MASK    0x7FF\r
-       #define FIX_POINT_UNSIGNED_MASK 0xFFFFF800\r
-       #define FIX_POINT_ONE                   0x800\r
-       #define FIX_POINT_ZERO_DOT_FIVE 0x400\r
-       #define FIX_POINT_F32_MUL               2048.f\r
-#endif\r
-\r
-// Fix Point 10\r
-#if 1\r
-       #define FIX_POINT_PRE                   10\r
-       #define FIX_POINT_FRACT_MASK    0x000003FF\r
-       #define FIX_POINT_UNSIGNED_MASK 0x7FFFFE00\r
-       #define FIX_POINT_ONE                   0x00000400\r
-       #define FIX_POINT_ZERO_DOT_FIVE 0x00000200\r
-       #define FIX_POINT_F32_MUL               1024.f\r
-#endif\r
-\r
-// Fix Point 9\r
-#if 0\r
-       #define FIX_POINT_PRE                   9\r
-       #define FIX_POINT_FRACT_MASK    0x1FF\r
-       #define FIX_POINT_UNSIGNED_MASK 0x7FFFFE00\r
-       #define FIX_POINT_ONE                   0x200\r
-       #define FIX_POINT_ZERO_DOT_FIVE 0x100\r
-       #define FIX_POINT_F32_MUL               512.f\r
-#endif\r
-\r
-// Fix Point 7\r
-#if 0\r
-       #define FIX_POINT_PRE                   7\r
-       #define FIX_POINT_FRACT_MASK    0x7F\r
-       #define FIX_POINT_UNSIGNED_MASK 0x7FFFFF80\r
-       #define FIX_POINT_ONE                   0x80\r
-       #define FIX_POINT_ZERO_DOT_FIVE 0x40\r
-       #define FIX_POINT_F32_MUL               128.f\r
-#endif\r
-\r
-#define        FIXPOINT_COLOR_MAX              ( COLOR_MAX << FIX_POINT_PRE )\r
-\r
-#if   FIX_POINT_PRE == 10 && COLOR_MAX == 255\r
-       #define FIX_POINT_HALF_COLOR    0x1FE00\r
-       #define FIX_POINT_COLOR_ERROR   4\r
-#elif FIX_POINT_PRE == 12 && COLOR_MAX == 255\r
-       #define FIX_POINT_HALF_COLOR    0x7F800\r
-       #define FIX_POINT_COLOR_ERROR   16\r
-#elif FIX_POINT_PRE == 10 && COLOR_MAX == 31\r
-       #define FIX_POINT_HALF_COLOR    0x3E00\r
-       #define FIX_POINT_COLOR_ERROR   32\r
-#else\r
-       #define FIX_POINT_HALF_COLOR    ( (tFixPoint) ( ((f32) COLOR_MAX / 2.f * FIX_POINT_F32_MUL ) ) )\r
-       #define FIX_POINT_COLOR_ERROR   (1<<(FIX_POINT_PRE-COLOR_MAX_LOG2))\r
-#endif\r
-\r
-\r
-/*\r
-       convert signed integer to fixpoint\r
-*/\r
-inline tFixPoint s32_to_fixPoint (const s32 x)\r
-{\r
-       return x << FIX_POINT_PRE;\r
-}\r
-\r
-#if 0\r
-inline tFixPointu u32_to_fixPoint (const u32 x)\r
-{\r
-       return x << FIX_POINT_PRE;\r
-}\r
-#endif\r
-\r
-inline u32 fixPointu_to_u32 (const tFixPointu x)\r
-{\r
-       return (u32)(x >> FIX_POINT_PRE);\r
-}\r
-\r
-\r
-// 1/x * FIX_POINT\r
-#define fix_inverse32(x) (FIX_POINT_F32_MUL / (x))\r
-#define fix_inverse32_color(x) ((FIX_POINT_F32_MUL*COLOR_MAX) / (x))\r
-\r
-\r
-/*\r
-       convert float to fixpoint\r
-       fast convert (fistp on x86) HAS to be used..\r
-       hints: compileflag /QIfist for msvc7. msvc 8.0 has smth different\r
-       others should use their favourite assembler..\r
-*/\r
-#if 0\r
-static inline int f_round2(f32 f)\r
-{\r
-       f += (3<<22);\r
-       return IR(f) - 0x4b400000;\r
-}\r
-#endif\r
-\r
-/*\r
-       convert f32 to Fix Point.\r
-       multiply is needed anyway, so scale mulby\r
-*/\r
-/*\r
-REALINLINE tFixPoint tofix0 (const f32 x, const f32 mulby = FIX_POINT_F32_MUL )\r
-{\r
-       return (tFixPoint) (x * mulby);\r
-}\r
-*/\r
-#define tofix(x,y) (tFixPoint)(x * y)\r
-\r
-\r
-/*\r
-       Fix Point , Fix Point Multiply\r
-*/\r
-/*\r
-REALINLINE tFixPointu imulFixu(const tFixPointu x, const tFixPointu y)\r
-{\r
-       return (x * y) >> (tFixPointu) FIX_POINT_PRE;\r
-}\r
-*/\r
-#define imulFixu(x,y) (((x) * (y)) >> (tFixPointu) FIX_POINT_PRE)\r
-\r
-\r
-/*\r
-       Fix Point , Fix Point Multiply\r
-*/\r
-REALINLINE tFixPoint imulFix(const tFixPoint x, const tFixPoint y)\r
-{\r
-       return (x * y) >> FIX_POINT_PRE;\r
-}\r
-\r
-#define imulFix_simple(x,y) ((x*y)>>FIX_POINT_PRE)\r
-\r
-#if 0\r
-/*\r
-       Fix Point , Fix Point Multiply x * y * 2\r
-*/\r
-REALINLINE tFixPoint imulFix2(const tFixPoint x, const tFixPoint y)\r
-{\r
-       return ( x * y) >> ( FIX_POINT_PRE -1 );\r
-}\r
-#endif\r
-\r
-/*\r
-       Multiply x * y * 1 FIXPOINT_COLOR_MAX\r
-*/\r
-REALINLINE tFixPoint imulFix_tex1(const tFixPoint x, const tFixPoint y)\r
-{\r
-#if SOFTWARE_DRIVER_2_TEXTURE_COLOR_FORMAT == ECF_A8R8G8B8\r
-       return (((tFixPointu)x >> 2)*(((tFixPointu)y + FIX_POINT_ONE) >> 2)) >> (tFixPointu) (FIX_POINT_PRE + 4);\r
-#else\r
-       return (x * (y+ FIX_POINT_ONE)) >> (FIX_POINT_PRE + 5);\r
-#endif\r
-}\r
-\r
-/*\r
-       Multiply x * y * 2\r
-*/\r
-REALINLINE tFixPoint imulFix_tex2(const tFixPoint x, const tFixPoint y)\r
-{\r
-       return ( ( (tFixPointu) x >> 2 ) * ( (tFixPointu) y >> 2 ) ) >> (tFixPointu) ( FIX_POINT_PRE + 3 );\r
-}\r
-\r
-/*\r
-       Multiply x * y * 4 clamp\r
-*/\r
-\r
-REALINLINE tFixPoint imulFix_tex4(const tFixPoint x, const tFixPoint y)\r
-{\r
-#if SOFTWARE_DRIVER_2_TEXTURE_COLOR_FORMAT == ECF_A8R8G8B8\r
-       tFixPoint a = (((tFixPointu)x >> 2)*(((tFixPointu)y + FIX_POINT_ONE) >> 2)) >> (tFixPointu)(FIX_POINT_PRE + 2);\r
-#else\r
-       tFixPoint a = (x * (y + FIX_POINT_ONE)) >> (FIX_POINT_PRE + 3);\r
-#endif\r
-       tFixPoint mask = (a - FIXPOINT_COLOR_MAX) >> 31;\r
-       return (a & mask) | (FIXPOINT_COLOR_MAX & ~mask);\r
-}\r
-\r
-\r
-/*!\r
-       clamp FixPoint to maxcolor in FixPoint, min(a,COLOR_MAX)\r
-*/\r
-REALINLINE tFixPoint clampfix_maxcolor ( const tFixPoint a)\r
-{\r
-       tFixPoint c = (a - FIXPOINT_COLOR_MAX) >> 31;\r
-       return (a & c) | ( FIXPOINT_COLOR_MAX & ~c);\r
-}\r
-\r
-\r
-/*!\r
-       clamp FixPoint to 0 in FixPoint, max(a,0)\r
-*/\r
-REALINLINE tFixPoint clampfix_mincolor ( const tFixPoint a)\r
-{\r
-       return a - ( a & ( a >> 31 ) );\r
-}\r
-\r
-REALINLINE tFixPoint saturateFix ( const tFixPoint a)\r
-{\r
-       return clampfix_mincolor ( clampfix_maxcolor ( a ) );\r
-}\r
-\r
-\r
-#if 0\r
-// rount fixpoint to int\r
-inline s32 roundFix ( const tFixPoint x )\r
-{\r
-       return (s32)(( x + FIX_POINT_ZERO_DOT_FIVE ) >> FIX_POINT_PRE);\r
-}\r
-#endif\r
-\r
-// x in [0;1[\r
-#if 0\r
-inline s32 f32_to_23Bits(const f32 x)\r
-{\r
-       f32 y = x + 1.f;\r
-       return IR(y) & 0x7FFFFF;        // last 23 bits\r
-}\r
-#endif\r
-\r
-/*!\r
-       fixpoint in [0..Fixpoint_color] to VideoSample xrgb\r
-*/\r
-REALINLINE tVideoSample fix_to_sample ( const tFixPoint r, const tFixPoint g, const tFixPoint b )\r
-{\r
-       return  ( FIXPOINT_COLOR_MAX & FIXPOINT_COLOR_MAX) << ( SHIFT_A - FIX_POINT_PRE ) |\r
-                       ( r & FIXPOINT_COLOR_MAX) << ( SHIFT_R - FIX_POINT_PRE ) |\r
-                       ( g & FIXPOINT_COLOR_MAX) >> ( FIX_POINT_PRE - SHIFT_G ) |\r
-                       ( b & FIXPOINT_COLOR_MAX) >> ( FIX_POINT_PRE - SHIFT_B );\r
-}\r
-\r
-\r
-/*!\r
-       fixpoint to VideoSample argb\r
-       a in [0;1]\r
-       rgb in [0;255] colormax\r
-*/\r
-REALINLINE tVideoSample fix4_to_sample ( const tFixPoint a, const tFixPoint r, const tFixPoint g, const tFixPoint b )\r
-{\r
-       return  ( a & (FIX_POINT_FRACT_MASK - 1 )) << ( SHIFT_A - 1 ) |\r
-                       ( r & FIXPOINT_COLOR_MAX) << ( SHIFT_R - FIX_POINT_PRE ) |\r
-                       ( g & FIXPOINT_COLOR_MAX) >> ( FIX_POINT_PRE - SHIFT_G ) |\r
-                       ( b & FIXPOINT_COLOR_MAX) >> ( FIX_POINT_PRE - SHIFT_B );\r
-}\r
-\r
-/*!\r
-       return fixpoint from VideoSample granularity FIXPOINT_COLOR_MAX\r
-*/\r
-inline void color_to_fix ( tFixPoint &r, tFixPoint &g, tFixPoint &b, const tVideoSample t00 )\r
-{\r
-       (tFixPointu&) r =       (t00 & MASK_R) >> ( SHIFT_R - FIX_POINT_PRE );\r
-       (tFixPointu&) g =       (t00 & MASK_G) << ( FIX_POINT_PRE - SHIFT_G );\r
-       (tFixPointu&) b =       (t00 & MASK_B) << ( FIX_POINT_PRE - SHIFT_B );\r
-}\r
-\r
-/*!\r
-       return fixpoint from VideoSample granularity FIXPOINT_COLOR_MAX\r
-*/\r
-inline void color_to_fix ( tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b, const tVideoSample t00 )\r
-{\r
-       (tFixPointu&) a =       (t00 & MASK_A) >> ( SHIFT_A - FIX_POINT_PRE );\r
-       (tFixPointu&) r =       (t00 & MASK_R) >> ( SHIFT_R - FIX_POINT_PRE );\r
-       (tFixPointu&) g =       (t00 & MASK_G) << ( FIX_POINT_PRE - SHIFT_G );\r
-       (tFixPointu&) b =       (t00 & MASK_B) << ( FIX_POINT_PRE - SHIFT_B );\r
-}\r
-\r
-/*!\r
-       return fixpoint from VideoSample granularity 0..FIX_POINT_ONE\r
-*/\r
-inline void color_to_fix1 ( tFixPoint &r, tFixPoint &g, tFixPoint &b, const tVideoSample t00 )\r
-{\r
-       (tFixPointu&) r =       (t00 & MASK_R) >> ( SHIFT_R + COLOR_MAX_LOG2 - FIX_POINT_PRE );\r
-       (tFixPointu&) g =       (t00 & MASK_G) >> ( SHIFT_G + COLOR_MAX_LOG2 - FIX_POINT_PRE );\r
-       (tFixPointu&) b =       (t00 & MASK_B) << ( FIX_POINT_PRE - COLOR_MAX_LOG2 );\r
-\r
-       //0..255 -> 0..256 | c += c >= 0.5 ? 1 : 0\r
-       r += (r & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       g += (g & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       b += (b & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-}\r
-\r
-/*!\r
-       return fixpoint from VideoSample granularity 0..FIX_POINT_ONE\r
-*/\r
-inline void color_to_fix1 ( tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b, const tVideoSample t00 )\r
-{\r
-       (tFixPointu&) a =       (t00 & MASK_A) >> ( SHIFT_A + COLOR_MAX_LOG2 - FIX_POINT_PRE );\r
-       (tFixPointu&) r =       (t00 & MASK_R) >> ( SHIFT_R + COLOR_MAX_LOG2 - FIX_POINT_PRE );\r
-       (tFixPointu&) g =       (t00 & MASK_G) >> ( SHIFT_G + COLOR_MAX_LOG2 - FIX_POINT_PRE );\r
-       (tFixPointu&) b =       (t00 & MASK_B) << ( FIX_POINT_PRE - COLOR_MAX_LOG2 );\r
-\r
-       //0..255 -> 0..256 | c += c >= 0.5 ? 1 : 0\r
-       a += (a & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       r += (r & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       g += (g & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       b += (b & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-\r
-}\r
-\r
-/*!\r
-       return fixpoint from VideoSample granularity FIXPOINT_COLOR_MAX\r
-*/\r
-inline void color_to_fix(tFixPoint c[4], const tVideoSample t00)\r
-{\r
-       c[0] = (t00 & MASK_A) >> (SHIFT_A - FIX_POINT_PRE);\r
-       c[1] = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE);\r
-       c[2] = (t00 & MASK_G) << (FIX_POINT_PRE - SHIFT_G);\r
-       c[3] = (t00 & MASK_B) << (FIX_POINT_PRE - SHIFT_B);\r
-}\r
-\r
-/*!\r
-       return fixpoint from VideoSample granularity 0..FIX_POINT_ONE\r
-*/\r
-inline void color_to_fix1(tFixPoint c[4], const tVideoSample t00)\r
-{\r
-       c[0] = (t00 & MASK_A) >> (SHIFT_A + COLOR_MAX_LOG2 - FIX_POINT_PRE);\r
-       c[1] = (t00 & MASK_R) >> (SHIFT_R + COLOR_MAX_LOG2 - FIX_POINT_PRE);\r
-       c[2] = (t00 & MASK_G) >> (SHIFT_G + COLOR_MAX_LOG2 - FIX_POINT_PRE);\r
-       c[3] = (t00 & MASK_B) << (FIX_POINT_PRE - COLOR_MAX_LOG2);\r
-\r
-       //0..255 -> 0..256 | c += c >= 0.5 ? 1 : 0\r
-       c[0] += (c[0] & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       c[1] += (c[1] & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       c[2] += (c[2] & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-       c[3] += (c[3] & FIX_POINT_ZERO_DOT_FIVE) ? FIX_POINT_COLOR_ERROR : 0;\r
-\r
-}\r
-\r
-\r
-\r
-//! ----- FP24 1.23 fix point z-buffer\r
-\r
-#if 1\r
-typedef f32 fp24;\r
-#else\r
-struct fp24\r
-{\r
-       u32 v;\r
-\r
-       fp24() {}\r
-\r
-       fp24 ( const f32 f )\r
-       {\r
-               f32 y = f + 1.f;\r
-               v = ((u32&)y) & 0x7FFFFF;       // last 23 bits\r
-       }\r
-\r
-       void operator=(const f32 f )\r
-       {\r
-       f32 y = f + 1.f;\r
-               v = ((u32&)y) & 0x7FFFFF;       // last 23 bits\r
-               }\r
-\r
-       void operator+=(const fp24 &other )\r
-       {\r
-               v += other.v;\r
-       }\r
-\r
-       operator f32 () const\r
-       {\r
-               f32 r = FR ( v );\r
-               return r + 1.f;\r
-       }\r
-\r
-};\r
-#endif\r
-\r
-\r
-// ------------------------ Internal Texture -----------------------------\r
-\r
-struct sInternalTexture\r
-{\r
-       //power-of-two\r
-       void* data; //tVideoSample* Texture->lock(miplevel)\r
-       size_t textureXMask;\r
-       size_t textureYMask;\r
-\r
-       size_t pitchlog2;\r
-\r
-       video::CSoftwareTexture2 *Texture;\r
-       s32 lodFactor; // magnify/minify\r
-};\r
-\r
-\r
-\r
-// get video sample plain\r
-static inline tVideoSample getTexel_plain ( const sInternalTexture* t, const tFixPointu tx, const tFixPointu ty )\r
-{\r
-       size_t ofs;\r
-\r
-       ofs = ( ( ty & t->textureYMask ) >> FIX_POINT_PRE ) << t->pitchlog2;\r
-       ofs |= ( tx & t->textureXMask ) >> ( FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY );\r
-\r
-       // texel\r
-       return *((tVideoSample*)( (u8*) t->data + ofs ));\r
-}\r
-\r
-// get video sample to fix\r
-inline void getTexel_fix ( tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-                                               const sInternalTexture* t, const tFixPointu tx, const tFixPointu ty\r
-                                                               )\r
-{\r
-       size_t ofs;\r
-\r
-       ofs = ( ((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask ) >> FIX_POINT_PRE ) << t->pitchlog2;\r
-       ofs |= ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask ) >> ( FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY );\r
-\r
-       // texel\r
-       tVideoSample t00;\r
-       t00 = *((tVideoSample*)( (u8*) t->data + ofs ));\r
-\r
-       r = (t00 & MASK_R) >> ( SHIFT_R - FIX_POINT_PRE);\r
-       g = (t00 & MASK_G) << ( FIX_POINT_PRE - SHIFT_G );\r
-       b = (t00 & MASK_B) << ( FIX_POINT_PRE - SHIFT_B );\r
-\r
-}\r
-\r
-// get video sample to fixpoint colormax\r
-inline void getTexel_fix(tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-       const sInternalTexture* t, const tFixPointu tx, const tFixPointu ty\r
-)\r
-{\r
-       size_t ofs;\r
-\r
-       ofs = (((ty+ FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2;\r
-       ofs |= ((tx+ FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-       // texel\r
-       tVideoSample t00;\r
-       t00 = *((tVideoSample*)((u8*)t->data + ofs));\r
-\r
-       a = (t00 & MASK_A) >> (SHIFT_A - FIX_POINT_PRE);\r
-       r = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE);\r
-       g = (t00 & MASK_G) << (FIX_POINT_PRE - SHIFT_G);\r
-       b = (t00 & MASK_B) << (FIX_POINT_PRE - SHIFT_B);\r
-\r
-}\r
-\r
-#if 0\r
-// get video sample to fixpoint\r
-static REALINLINE void getTexel_fix ( tFixPoint &a,\r
-                       const sInternalTexture * t, const tFixPointu tx, const tFixPointu ty)\r
-{\r
-       size_t ofs;\r
-\r
-       ofs = ( ((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask ) >> FIX_POINT_PRE ) << t->pitchlog2;\r
-       ofs |= ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask ) >> ( FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY );\r
-\r
-       // texel\r
-       tVideoSample t00;\r
-       t00 = *((tVideoSample*)( (u8*) t->data + ofs ));\r
-\r
-       a = (t00 & MASK_A) >> ( SHIFT_A - FIX_POINT_PRE);\r
-}\r
-#endif\r
-\r
-/*\r
-       load a sample from internal texture at position tx,ty to fixpoint\r
-*/\r
-#if defined(SOFTWARE_DRIVER_2_BILINEAR)\r
-\r
-#if 0\r
-// texture2D in fixpoint color range bilinear\r
-static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-       const sInternalTexture* burning_restrict t, const tFixPointu tx, const tFixPointu ty\r
-)\r
-{\r
-#if 0\r
-       if (t->lodFactor > 0)\r
-       {\r
-               size_t ofs;\r
-\r
-               ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2;\r
-               ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-               // texel\r
-               tVideoSample t00;\r
-               t00 = *((tVideoSample*)((u8*)t->data + ofs));\r
-\r
-               r = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE);\r
-               g = (t00 & MASK_G) << (FIX_POINT_PRE - SHIFT_G);\r
-               b = (t00 & MASK_B) << (FIX_POINT_PRE - SHIFT_B);\r
-               return;\r
-       }\r
-#endif\r
-\r
-       tFixPointu r00, g00, b00;\r
-       tFixPointu r01, g01, b01;\r
-       tFixPointu r10, g10, b10;\r
-       tFixPointu r11, g11, b11;\r
-\r
-       size_t o0, o1, o2, o3;\r
-       tVideoSample t00;\r
-\r
-       //wraps positive (ignoring negative)\r
-       o0 = (((ty)& t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2;\r
-       o1 = (((ty + FIX_POINT_ONE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2;\r
-       o2 = ((tx)& t->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-       o3 = ((tx + FIX_POINT_ONE) & t->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-       t00 = *((tVideoSample*)((u8*)t->data + (o0 + o2)));\r
-       r00 = (t00 & MASK_R) >> SHIFT_R;\r
-       g00 = (t00 & MASK_G) >> SHIFT_G;\r
-       b00 = (t00 & MASK_B);\r
-\r
-       t00 = *((tVideoSample*)((u8*)t->data + (o0 + o3)));\r
-       r10 = (t00 & MASK_R) >> SHIFT_R;\r
-       g10 = (t00 & MASK_G) >> SHIFT_G;\r
-       b10 = (t00 & MASK_B);\r
-\r
-       t00 = *((tVideoSample*)((u8*)t->data + (o1 + o2)));\r
-       r01 = (t00 & MASK_R) >> SHIFT_R;\r
-       g01 = (t00 & MASK_G) >> SHIFT_G;\r
-       b01 = (t00 & MASK_B);\r
-\r
-       t00 = *((tVideoSample*)((u8*)t->data + (o1 + o3)));\r
-       r11 = (t00 & MASK_R) >> SHIFT_R;\r
-       g11 = (t00 & MASK_G) >> SHIFT_G;\r
-       b11 = (t00 & MASK_B);\r
-\r
-\r
-       tFixPointu fracx = tx & FIX_POINT_FRACT_MASK;\r
-       tFixPointu fracy = ty & FIX_POINT_FRACT_MASK;\r
-\r
-       //w00 w01 w10 w11\r
-       tFixPointu w[4];\r
-       w[0] = imulFixu(FIX_POINT_ONE - fracx, FIX_POINT_ONE - fracy);\r
-       w[1] = imulFixu(FIX_POINT_ONE - fracx, fracy);\r
-       w[2] = imulFixu(fracx, FIX_POINT_ONE - fracy);\r
-       w[3] = imulFixu(fracx, fracy);\r
-\r
-       r = (r00 * w[0]) +\r
-               (r01 * w[1]) +\r
-               (r10 * w[2]) +\r
-               (r11 * w[3]);\r
-\r
-       g = (g00 * w[0]) +\r
-               (g01 * w[1]) +\r
-               (g10 * w[2]) +\r
-               (g11 * w[3]);\r
-\r
-       b = (b00 * w[0]) +\r
-               (b01 * w[1]) +\r
-               (b10 * w[2]) +\r
-               (b11 * w[3]);\r
-\r
-}\r
-\r
-#else\r
-\r
-// texture2D in fixpoint color range bilinear\r
-static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-       const sInternalTexture* burning_restrict tex, const tFixPointu tx, const tFixPointu ty\r
-)\r
-{\r
-#if 0\r
-       if (tex->lodFactor > 1)\r
-       {\r
-               //nearest neighbor\r
-               size_t ofs;\r
-               ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2;\r
-               ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & tex->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-               tVideoSample t00;\r
-               t00 = *((tVideoSample*)((u8*)tex->data + ofs));\r
-\r
-               r = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE);\r
-               g = (t00 & MASK_G) << (FIX_POINT_PRE - SHIFT_G);\r
-               b = (t00 & MASK_B) << (FIX_POINT_PRE - SHIFT_B);\r
-               return;\r
-       }\r
-#endif\r
-       //w00 w01 w10 w11\r
-       tFixPointu w[4];\r
-       {\r
-               tFixPointu fracx = tx & FIX_POINT_FRACT_MASK;\r
-               tFixPointu fracy = ty & FIX_POINT_FRACT_MASK;\r
-               w[0] = imulFixu(FIX_POINT_ONE - fracx, FIX_POINT_ONE - fracy);\r
-               w[1] = imulFixu(fracx, FIX_POINT_ONE - fracy);\r
-               w[2] = imulFixu(FIX_POINT_ONE - fracx, fracy);\r
-               w[3] = imulFixu(fracx, fracy);\r
-       }\r
-\r
-       //wraps positive (ignoring negative)\r
-       tVideoSample t[4];\r
-       {\r
-               size_t o0, o1, o2, o3;\r
-               o0 = (((ty) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2;\r
-               o1 = (((ty + FIX_POINT_ONE) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2;\r
-               o2 = ((tx)& tex->textureXMask) >> (unsigned)(FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-               o3 = ((tx + FIX_POINT_ONE) & tex->textureXMask) >> (unsigned)(FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-               t[0] = *((tVideoSample*)((u8*)tex->data + (o0 + o2)));\r
-               t[1] = *((tVideoSample*)((u8*)tex->data + (o0 + o3)));\r
-               t[2] = *((tVideoSample*)((u8*)tex->data + (o1 + o2)));\r
-               t[3] = *((tVideoSample*)((u8*)tex->data + (o1 + o3)));\r
-       }\r
-\r
-       r = (((t[0] & MASK_R) >> SHIFT_R) * w[0]) +\r
-               (((t[1] & MASK_R) >> SHIFT_R) * w[1]) +\r
-               (((t[2] & MASK_R) >> SHIFT_R) * w[2]) +\r
-               (((t[3] & MASK_R) >> SHIFT_R) * w[3]);\r
-\r
-       g = (((t[0] & MASK_G) >> SHIFT_G) * w[0]) +\r
-               (((t[1] & MASK_G) >> SHIFT_G) * w[1]) +\r
-               (((t[2] & MASK_G) >> SHIFT_G) * w[2]) +\r
-               (((t[3] & MASK_G) >> SHIFT_G) * w[3]);\r
-\r
-       b = ((t[0] & MASK_B) * w[0]) +\r
-               ((t[1] & MASK_B) * w[1]) +\r
-               ((t[2] & MASK_B) * w[2]) +\r
-               ((t[3] & MASK_B) * w[3]);\r
-}\r
-\r
-#endif\r
-\r
-// get Sample bilinear\r
-static REALINLINE void getSample_texture(tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-       const sInternalTexture* burning_restrict tex, const tFixPointu tx, const tFixPointu ty\r
-)\r
-{\r
-\r
-       tFixPointu a00, r00, g00, b00;\r
-       tFixPointu a01, r01, g01, b01;\r
-       tFixPointu a10, r10, g10, b10;\r
-       tFixPointu a11, r11, g11, b11;\r
-\r
-       size_t o0, o1, o2, o3;\r
-       tVideoSample t00;\r
-\r
-       o0 = (((ty)& tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2;\r
-       o1 = (((ty + FIX_POINT_ONE) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2;\r
-       o2 = ((tx)& tex->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-       o3 = ((tx + FIX_POINT_ONE) & tex->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-       t00 = *((tVideoSample*)((u8*)tex->data + (o0 + o2)));\r
-       a00 = (t00 & MASK_A) >> SHIFT_A;\r
-       r00 = (t00 & MASK_R) >> SHIFT_R;\r
-       g00 = (t00 & MASK_G) >> SHIFT_G;\r
-       b00 = (t00 & MASK_B);\r
-\r
-       t00 = *((tVideoSample*)((u8*)tex->data + (o0 + o3)));\r
-       a10 = (t00 & MASK_A) >> SHIFT_A;\r
-       r10 = (t00 & MASK_R) >> SHIFT_R;\r
-       g10 = (t00 & MASK_G) >> SHIFT_G;\r
-       b10 = (t00 & MASK_B);\r
-\r
-       t00 = *((tVideoSample*)((u8*)tex->data + (o1 + o2)));\r
-       a01 = (t00 & MASK_A) >> SHIFT_A;\r
-       r01 = (t00 & MASK_R) >> SHIFT_R;\r
-       g01 = (t00 & MASK_G) >> SHIFT_G;\r
-       b01 = (t00 & MASK_B);\r
-\r
-       t00 = *((tVideoSample*)((u8*)tex->data + (o1 + o3)));\r
-       a11 = (t00 & MASK_A) >> SHIFT_A;\r
-       r11 = (t00 & MASK_R) >> SHIFT_R;\r
-       g11 = (t00 & MASK_G) >> SHIFT_G;\r
-       b11 = (t00 & MASK_B);\r
-\r
-       const tFixPointu txFract = tx & FIX_POINT_FRACT_MASK;\r
-       const tFixPointu txFractInv = FIX_POINT_ONE - txFract;\r
-\r
-       const tFixPointu tyFract = ty & FIX_POINT_FRACT_MASK;\r
-       const tFixPointu tyFractInv = FIX_POINT_ONE - tyFract;\r
-\r
-       const tFixPointu w00 = imulFixu(txFractInv, tyFractInv);\r
-       const tFixPointu w10 = imulFixu(txFract, tyFractInv);\r
-       const tFixPointu w01 = imulFixu(txFractInv, tyFract);\r
-       const tFixPointu w11 = imulFixu(txFract, tyFract);\r
-\r
-       a = (a00 * w00) +\r
-               (a01 * w01) +\r
-               (a10 * w10) +\r
-               (a11 * w11);\r
-\r
-       fix_alpha_color_max(a);\r
-\r
-       r = (r00 * w00) +\r
-               (r01 * w01) +\r
-               (r10 * w10) +\r
-               (r11 * w11);\r
-\r
-       g = (g00 * w00) +\r
-               (g01 * w01) +\r
-               (g10 * w10) +\r
-               (g11 * w11);\r
-\r
-       b = (b00 * w00) +\r
-               (b01 * w01) +\r
-               (b10 * w10) +\r
-               (b11 * w11);\r
-\r
-}\r
-\r
-#else // SOFTWARE_DRIVER_2_BILINEAR\r
-\r
-// get Sample linear == getSample_fixpoint\r
-\r
-static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-       const sInternalTexture* burning_restrict t, const tFixPointu tx, const tFixPointu ty\r
-)\r
-{\r
-       size_t ofs;\r
-       ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2;\r
-       ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-       // texel\r
-       const tVideoSample t00 = *((tVideoSample*)((u8*)t->data + ofs));\r
-\r
-       (tFixPointu &)r = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE);\r
-       (tFixPointu &)g = (t00 & MASK_G) << (FIX_POINT_PRE - SHIFT_G);\r
-       (tFixPointu &)b = (t00 & MASK_B) << (FIX_POINT_PRE - SHIFT_B);\r
-}\r
-\r
-static REALINLINE void getSample_texture(tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b,\r
-       const sInternalTexture* burning_restrict t, const tFixPointu tx, const tFixPointu ty\r
-)\r
-{\r
-       size_t ofs;\r
-       ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2;\r
-       ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - SOFTWARE_DRIVER_2_TEXTURE_GRANULARITY);\r
-\r
-       // texel\r
-       const tVideoSample t00 = *((tVideoSample*)((u8*)t->data + ofs));\r
-\r
-       (tFixPointu &)a = (t00 & MASK_A) >> (SHIFT_A - FIX_POINT_PRE);\r
-       fix_alpha_color_max(a);\r
-       (tFixPointu &)r = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE);\r
-       (tFixPointu &)g = (t00 & MASK_G) << (FIX_POINT_PRE - SHIFT_G);\r
-       (tFixPointu &)b = (t00 & MASK_B) << (FIX_POINT_PRE - SHIFT_B);\r
-}\r
-\r
-\r
-#endif // SOFTWARE_DRIVER_2_BILINEAR\r
-\r
-\r
 // 2D Region closed [x0;x1]\r
 struct AbsRectangle\r
 {\r
@@ -1198,45 +291,6 @@ inline bool intersect ( AbsRectangle &dest, const AbsRectangle& a, const AbsRect
        return dest.x0 < dest.x1 && dest.y0 < dest.y1;\r
 }\r
 \r
-#if 0\r
-// some 1D defines\r
-struct sIntervall\r
-{\r
-       s32 start;\r
-       s32 end;\r
-};\r
-\r
-// returning intersection width\r
-inline s32 intervall_intersect_test( const sIntervall& a, const sIntervall& b)\r
-{\r
-       return core::s32_min( a.end, b.end ) - core::s32_max( a.start, b.start );\r
-}\r
-\r
-#endif\r
-\r
-// strings\r
-static inline void tiny_strncpy(char* to, const char* from, const size_t count)\r
-{\r
-       for (size_t r = 0; r < count && (*to = *from) != '\0'; ++from, ++to, ++r);\r
-       *to = '\0';\r
-}\r
-\r
-#define tiny_strcpy(a, b) tiny_strncpy(a,b,sizeof(a)-1)\r
-\r
-\r
-// tiny_isequal = !strncmp(a,b,sizeof(a)-1)\r
-static inline int tiny_isequal(const char *s1, const char *s2, size_t n)\r
-{\r
-       do {\r
-               if (*s1 != *s2++) return 0;\r
-               if (*s1++ == 0)\r
-                       break;\r
-       } while (--n != 0);\r
-       return 1;\r
-}\r
-\r
-#define tiny_istoken(a, b) tiny_isequal(a,b,sizeof(a)-1) != 0\r
-\r
 \r
 } // end namespace irr\r
 \r
diff --git a/source/Irrlicht/irrMathFastCompat.h b/source/Irrlicht/irrMathFastCompat.h
deleted file mode 100644 (file)
index 594b28e..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// This file is part of the "Irrlicht Engine".\r
-// For conditions of distribution and use, see copyright notice in irrlicht.h\r
-\r
-#ifndef __IRR_FAST_MATH_COMPAT_H_INCLUDED__\r
-#define __IRR_FAST_MATH_COMPAT_H_INCLUDED__\r
-\r
-#include "irrMath.h"\r
-\r
-namespace irr\r
-{\r
-namespace core\r
-{\r
-\r
-\r
-// IRRLICHT_FAST_MATH functions which I wanted to kick out because they return\r
-// wrong results. But last time I proposed that I've been asked to keep them for \r
-// Burnings software renderer. So to avoid changing that accidentally or messing up\r
-// it's speed I'll keep them around, but only as internal header.\r
-// They should not be used otherwise any longer.\r
-\r
-       // Some examples for unexpected results when using this with IRRLICHT_FAST_MATH:\r
-       // Input 1, expected 1, got 0\r
-       // Input 3, expected 3, got 2\r
-       // Input -1.40129846e-45, expected -1, got 0\r
-       REALINLINE s32 floor32_fast(f32 x)\r
-       {\r
-               return (s32) floorf ( x );\r
-       }\r
-       \r
-       // Some examples for unexpected results when using this with IRRLICHT_FAST_MATH:\r
-       // Input 1.40129846e-45, expected 1, got 0\r
-       // Input -1, expected -1, got 0\r
-       // Input -3, expected -3, got -2\r
-       REALINLINE s32 ceil32_fast ( f32 x )\r
-       {\r
-               return (s32) ceilf ( x );\r
-       }       \r
-       \r
-       // Some examples for unexpected results when using this with IRRLICHT_FAST_MATH:\r
-       // Input 0.5, expected 1, got 0\r
-       // Input 2.5, expected 3, got 2\r
-       // Input -1.40129846e-45, expected -nan(ind), got -inf\r
-       // Input -2.80259693e-45, expected -nan(ind), got -inf  \r
-       REALINLINE s32 round32_fast(f32 x)\r
-       {\r
-               return (s32) round_(x);\r
-       }       \r
-       \r
-} // end namespace core\r
-} // end namespace irr \r
-\r
-#endif // __IRR_FAST_MATH_COMPAT_H_INCLUDED__\r