Commit 94fe39af authored by hybrid's avatar hybrid

Merged revisions 2477:2484 from 1.5 branch. Support for range fog under...

Merged revisions 2477:2484 from 1.5 branch. Support for range fog under OpenGL. Cleaned up changes.txt.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2485 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 40a8a7a2
Changes in 1.6 Changes in 1.6 (??.??.2009)
- Added support for EXP2 fog distribution. This required a change in the setFog parameters where now an enum value instead of the bool linear is given. - Added support for EXP2 fog distribution. This required a change in the setFog parameters where now an enum value instead of the bool linear is given.
...@@ -123,562 +123,452 @@ Changes in 1.6 ...@@ -123,562 +123,452 @@ Changes in 1.6
- Avoid fp-precision problem in getPickedNodeBB (see also http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=33838&highlight=). - Avoid fp-precision problem in getPickedNodeBB (see also http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=33838&highlight=).
This change might also fix the problem with picking nodes found by aanderse (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=32890&highlight=) This change might also fix the problem with picking nodes found by aanderse (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=32890&highlight=)
Changes in 1.6 TA - implemented isALoadableFileFormat ( File *file ) for the Archive Loader
- implemented isALoadableFileFormat ( File *file ) for the Archive Loader
Changes in 1.6 TA - PixelBlend16 and PixelBlend16_simd are working for the new rules.
- PixelBlend16 and PixelBlend16_simd are working for the new rules.
- bugfix. CLightSceneNode didn't correctly update it's attributes - bugfix. CLightSceneNode didn't correctly update it's attributes
Lighting Linear Attenuation. = 1.f / radius - vector template and equals tests
also set the equal test for s32 to behave like the f32 routine.
The Example loadirr files set the lightscene radius to 1000.f but The function equals always implements a weak test.
stays on the previous default attentuation with the older radius 100 -> 1.f / 100 that means a tolerance MUST always be used if you use the equal function. default is 1.
so the examples looks golden-brown.
- VideoDriver drawPixel
Now the radius is correctly!! set to the attenuation of 1.f/1000.f because the The HW renderes are using the alpha components for blending.
file doesn't have special attenuation. and now it looks more yellow. The Software Renderes and image loaders are using CImage::setPixel copy.
can anybody show me a correct screenshot for this file;-)? Niko? so setPixel is engaged to either blends or copy the pixel
default: false
Or is this behavior the default lighting?. then it would be - Burningvideo
a fixed constant linear attenuation of 0.01f;-). Please clearify added RenderMaterial EMT_SPHERE_MAP
For now i didn't fixed it pushed burningsvideo to 0.43
added RenderMaterial EMT_REFLECTION_2_LAYER
pushed burningsvideo to 0.44
I encountered this behavior because i ( burning video ) used the original radius set EMT_TRANSPARENT_ALPHA_CHANNEL_REF
for calculations and so i've found that radius != 1.f / linearAttenuation but to use AlphaRef 0.5 like Direct3D
in the LightSceneNode this formula was used.. confused;-)
One Note: in OpenGL there is know difference between sphere_map and reflection layer
both using GL_TEXTURE_GEN_MODE GL_SPHERE_MAP, whereas in d3d one time using camera_normal
- vector template and equals tests on sphere and reflection on refletcion_layer.
as working with the test suits i cleaned the template behavior (mixed types are
used in the templates) and added all missing special math function with their coressponding type The visual difference is that on sphere map the "image is not moving" when you rotate the
I also set the equal test for s32 to behave like the f32 routine. viewer. For Burning i took the opengl visual. always moving
The function equals always implements a weak test. - rename quake3 SEntity to IEntity to be confom with IShader
that means a tolerance MUST always be used if you use the equal function. default is 1.
you can set it to zero a==b-> equals ( a, b, 0 ) but do it explicit like you have to - fixed createMeshWith2TCoords, normals were missing during copy.
for floating compare. This is important when irrlicht is going to use special hardware
math acceleration on a per function base, like sse2, or the other way round fixpoint. - added
//! Creates a copy of the mesh, which will only consist of S3DVertex vertices.
- VideoDriver drawPixel IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const
The HW renderes are using the alpha components for blending.
The Software Renderes and image loaders are using CImage::setPixel copy. - added io::IFileSystem* CSceneManager::getFileSystem()
so setPixel is engaged to either blends or copy the pixel
default: false - added virtual const c8* ISceneManager::getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type);
- Burningvideo
added RenderMaterial EMT_SPHERE_MAP - added CSceneNodeAnimatorFlyCircle::radiusEllipsoid.
pushed burningsvideo to 0.43 if radiusEllipsoid == 0 the default circle animation is done
added RenderMaterial EMT_REFLECTION_2_LAYER else radiusEllipsoid forms the b-axe of the ellipsoid.
pushed burningsvideo to 0.44 -> gummiball bouncing
set EMT_TRANSPARENT_ALPHA_CHANNEL_REF
to use AlphaRef 0.5 like Direct3D - added ISceneManager::createFlyStraightAnimator variable bool ping-pong
used in loop mode to device if start from beginning ( default ) or make ping-pong
One Note: in OpenGL there is know difference between sphere_map and reflection layer -> straight bouncing
both using GL_TEXTURE_GEN_MODE GL_SPHERE_MAP, whereas in d3d one time using camera_normal
on sphere and reflection on refletcion_layer. - changed IFileSystem::registerFileArchive
remove the index of the hierarchy and added a new interface method
The visual difference is that on sphere map the "image is not moving" when you rotate the //! move the hirarchy of the filesystem. moves sourceIndex relative up or down
viewer. For Buring i took the opengl visual. always moving virtual bool moveFileArchive( u32 sourceIndex, s32 relative ) = 0;
- bugfix and changes in SViewFrustum::SViewFrustum
- rename quake3 SEntity to IEntity to be confom with IShader wrong size of Matrices copy.
even IShader and IEntity are none pure virtual interfaces renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_FRUSTUM
like most irrlicht objects therefore also changed SViewFrustum::setTransformState to not tap
-------------------------------------------------------------- in the pitfall again of wrong memory...
Changes in 1.6 TA - moved
- fixed createMeshWith2TCoords //! EMT_ONETEXTURE_BLEND: has BlendFactor Alphablending
normals were missing during copy. inline bool textureBlendFunc_hasAlpha ( E_BLEND_FACTOR factor ) const
- addded from the material renderes ( 3x declared ) to SMaterial.h
//! Creates a copy of the mesh, which will only consist of S3DVertex vertices.
IMesh* CMeshManipulator::createMeshWith1TCoords(IMesh* mesh) const - updated managed light example to use standard driver selection
- added io::IFileSystem* CSceneManager::getFileSystem() - BurningsVideo
for preparing to remove the (mostly) unnecessary double member variables - LightModel reworked.
in many loaders Point Light & Direction Light works for Diffuse Color as expected
Specular and Fog still have problems ( needs new pixel shader )
- added virtual const c8* ISceneManager::getAnimatorTypeName(ESCENE_NODE_ANIMATOR_TYPE type); pushed burningsvideo to 0.42 for this major step
to the SceneManger Interface. just like getTypeName is public
- removed obsolete matrix transformations
- added CSceneNodeAnimatorFlyCircle::radiusEllipsoid. renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_BURNING
if radiusEllipsoid == 0 the default circle animation is done
else radiusEllipsoid forms the b-axe of the ellipsoid. - cleaned line3d.h vector3d.h template behavior.
many mixed f32/f64 implementations are here. i'm not sure if this should be
-> gummiball bouncing the default behavior to use f64 for example for 1.0/x value, because they
benefit from more precisions, but in my point of view the user is responsible
- added ISceneManager::createFlyStraightAnimator variable bool ping-pong of choosing a vector3d<f32> or vector3d<f64>.
used in loop mode to device if start from beginning ( default ) or make ping-pong
- added core::squareroot to irrmath.h
-> straight bouncing -> for having candidates for faster math in the same file
- changed IFileSystem::registerFileArchive - added AllowZWriteOnTransparent from SceneManager to burningsvideo
remove the index of the hiarchy and added a new interface method
-added hasAlpha() to ITexture
//! move the hirarchy of the filesystem. moves sourceIndex relative up or down This info can be used for e.q to downgrade a transparent alpha channel blit
virtual bool moveFileArchive( u32 sourceIndex, s32 relative ) = 0; to add if the texture has no alpha channel.
- bugfix and changes in
SViewFrustum::SViewFrustum
wrong size of Matrices copy. This bug must be ages old... (typo)
detected during resizing the Matrices. removed obsolute Matrices
renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_FRUSTUM
therefore also changed SViewFrustum::setTransformState to not tap
in the pitfall again of wrong memory...
and renamed it to getTransform, like in the driver
and Matrices private
- OpenGL:
Specular
- moved
//! EMT_ONETEXTURE_BLEND: has BlendFactor Alphablending
inline bool textureBlendFunc_hasAlpha ( E_BLEND_FACTOR factor ) const
from the material renderes ( 3x declared ) to SMaterial.h
- updated managed light example to use standard driver selection
- BurningsVideo
- LightModel reworked.
Point Light & Direction Light works for Diffuse Color as aspected
Specular and Fog still have problems ( needs new pixel shader )
pushed burningsvideo to 0.42 for this major step
- removed obsolete matrix transformations
renamed E_TRANSFORMATION_STATE_2 to E_TRANSFORMATION_STATE_BURNING
- cleaned line3d.h vector3d.h template behavior.
many mixed f32/f64 implementations are here. i'm not sure if this should be
the default behavior to use f64 for example for 1.0/x value, because they
benefit from more precisions, but in my point of view the user is responsible
of choosing a vector3d<f32> or vector3d<f64>.
- added core::squareroot to irrmath.h
-> for having candidates for faster math in the same file
- added AllowZWriteOnTransparent from SceneManager to burningsvideo
Following SceneManger guideline
-added hasAlpha() to ITexture
This info can be used for e.q to downgrade a transparent alpha channel blit
to add if the texture has no alpha channel.
--------------------------------------------------------------
Changes in version 1.6, TA
- FileSystem 2.0 SUPER MASTER MAJOR API CHANGE !!! - FileSystem 2.0 SUPER MASTER MAJOR API CHANGE !!!
The FileSystem is now build internally like for e.g. the image- and meshloaders. The FileSystem is now build internally like for e.g. the image- and meshloaders.
There exists a known list of ArchiveLoaders, which know how to produce a Archive. There exists a known list of ArchiveLoaders, which know how to produce a Archive.
The Loaders and the Archives can be attached/detached on runtime. The Loaders and the Archives can be attached/detached on runtime.
The FileNames are now stored as core::string<c16>. where c16 is toggled between char/wchar The FileNames are now stored as core::string<c16>. where c16 is toggled between char/wchar
with the #define flag _IRR_WCHAR_FILESYSTEM, to supported unicode backends (default:off) with the #define flag _IRR_WCHAR_FILESYSTEM, to supported unicode backends (default:off)
Replaced most (const c8* filename) to string references. Replaced most (const c8* filename) to string references.
Basically the FileSystem is divided into two regions. Native and Virtual. Basically the FileSystem is divided into two regions. Native and Virtual.
Native means using the backend OS. Native means using the backend OS.
Virtual means only use currently attached IArchives. Virtual means only use currently attached IArchives.
Browsing Browsing
each FileSystem has it's own workdirectory and it's own methods to each FileSystem has it's own workdirectory and it's own methods to
- create a FileTree - create a FileTree
- add/remove files & directory ( to be done ) - add/remove files & directory ( to be done )
Hint: store a savegame in a zip archive... Hint: store a savegame in a zip archive...
basic browsing for all archives is implemented. basic browsing for all archives is implemented.
Example 21. Quake3Explorer shows this Example 21. Quake3Explorer shows this
TODO: TODO:
- a file filter should be implemented. - a file filter should be implemented.
- The IArchive should have a function to create a filetree - The IArchive should have a function to create a filetree
for now CFileList is used. for now CFileList is used.
Class Hierarchy: Class Hierarchy:
IArchiveLoader: is able to produce a IFileArchive IArchiveLoader: is able to produce a IFileArchive
- ZipLoader - ZipLoader
- PakLoader - PakLoader
- MountPointReader ( formaly known as CUnzipReader ) - MountPointReader ( formaly known as CUnzipReader )
IFileArchive: IFileArchive:
-ZipArchive -ZipArchive
-PakArchive -PakArchive
-MountPoint (known as FolderFile) -MountPoint (known as FolderFile)
IFileSystem IFileSystem
- addArchiveLoader - addArchiveLoader
- changed implementation of isALoadableFileExtension in all loaders - changed implementation of isALoadableFileExtension in all loaders
to have consistent behavior to have consistent behavior
- added a parameter to IFileList * createFileList - added a parameter to IFileList * createFileList
setFileListSystem setFileListSystem
allows to query files in any of the game archives allows to query files in any of the game archives
standard behavior listtype = SYSTEM ( default) standard behavior listtype = SYSTEM ( default)
- CLimitReadFile - CLimitReadFile
added multiple file random-access support. added multiple file random-access support.
solved problems with mixed compressed & uncompressed files in a zip solved problems with mixed compressed & uncompressed files in a zip
TODO:
- Big Big Testing!!
- many loaders use their own private filesearching
- there are a lot of helper function ( getAbsolutePath, getFileDir )
which should be adapted to the virtual filesystem
- IrrlichtDevice - IrrlichtDevice
added: added:
virtual bool setGammaRamp( f32 red, f32 green, f32 blue, f32 brightness, f32 contrast ) = 0; virtual bool setGammaRamp( f32 red, f32 green, f32 blue, f32 brightness, f32 contrast ) = 0;
virtual bool getGammaRamp( f32 &red, f32 &green, f32 &blue ) = 0; virtual bool getGammaRamp( f32 &red, f32 &green, f32 &blue ) = 0;
and calculating methods to DeviceStub.
and calculating methods to DeviceStub. implemented in Win32, TODO: other Devices
implemented in Win32, TODO: other Devices
- irrlicht.h
- irrlicht.h changed exported irrlicht.dll routines createDevice, createDeviceEx, IdentityMatrix
changed exported irrlicht.dll routines createDevice, createDeviceEx, IdentityMatrix to extern "C" name mangling.
to extern "C" name mangling.
for easier dynamically loading the irrlicht library and different versions
- ParticleSystem - ParticleSystem
removed the private (old?,wrong?) interface from the ParticleEffectors removed the private (old?,wrong?) interface from the ParticleEffectors
to match the parent class irr::io::IAttributeExchangingObject::deserializeAttributes to match the parent class irr::io::IAttributeExchangingObject::deserializeAttributes
TODO:
please test if the serialization works!
- Generic - Generic
- vector3d<T>& normalize() optimized - vector3d<T>& normalize() optimized
added reciprocal_squareroot for f64 added reciprocal_squareroot for f64
- dimension2d - dimension2d
added operator dimension2d<T>& operator=(const dimension2d<U>& other) added operator dimension2d<T>& operator=(const dimension2d<U>& other)
to cast between different types to cast between different types
- vector2d bugfix operator+=
- vector2d bugfix operator+=
- C3DMeshLoader renamed chunks const u16 to a enum
removing "variable declared but never used warning" - C3DSMeshLoader renamed chunks const u16 to a enum
- added a global const identity Material removing "variable declared but never used warning"
changed all references *((video::SMaterial*)0) to point to IdentityMaterial
removed warning: "a NULL reference is not allowed" - added a global const identity Material
changed all references *((video::SMaterial*)0) to point to IdentityMaterial
- modified IRRLICHT_MATH to not support reciprocal stuff removed warning: "a NULL reference is not allowed"
but to use faster float-to-int conversion.
gcc troubles may they are. i'm using intel-compiler..;-) - modified IRRLICHT_MATH to not support reciprocal stuff
- core::matrix4 but to use faster float-to-int conversion.
USE_MATRIX_TEST
- core::matrix4
i tried to optimize the identity-check ( in means of performance) USE_MATRIX_TEST
i didn't succeed so well, so i made a define for the matrix isIdentity -check
for now it's sometimes faster to always calculate versus identity-check i tried to optimize the identity-check ( w.r.t. performance)
but if there are a lot of scenenodes/ particles one can profit from the i didn't succeed so well, so i made a define for the matrix isIdentity -check
fast_inverse matrix, when no scaling is used. further approvement could for now it's sometimes faster to always calculate versus identity-check
be done on inverse for just tranlastion! ( many static scenenodes are not rotated, but if there are a lot of scenenodes/ particles one can profit from the
they are just placed somewhere in the world) fast_inverse matrix, when no scaling is used. further approvement could
one thing to take in account is that sizeof(matrix) is 64 byte and be done on inverse for just translation! ( many static scenenodes are not rotated,
with the additional bool/u32 makes it 66 byte which is not really cache-friendly.. they are just placed somewhere in the world)
one thing to take in account is that sizeof(matrix) is 64 byte and
- added buildRotateFromTo with the additional bool/u32 makes it 66 byte which is not really cache-friendly..
Builds a matrix that rotates from one vector to another
- added buildRotateFromTo
- irr::array. changed allocating routine in push_back Builds a matrix that rotates from one vector to another
okt, 2008. it's only allowed to alloc one element, if - irr::array. changed allocating routine in push_back
default constructor has to be called.
added a new method setAllocStrategy,
removes existing crashes. ( MD3 Mesh ) and possible others ones. safe ( used + 1 ), double ( used * 2 + 1)
better default strategies will be implemented
A new list template should be made.
one with constructor/destructor calls ( safe_array ) and - removed binary_search_const
one without. like the array since the beginning of irrlicht. i added it quite a long time ago, but it doesnt make real sense
currently the array/string is extremly slow.. a call to a sort method should happen always. i just wanted to safe
a few cycles..
also a hint for the user has to be done, so that a struct T of - added binary_search_multi
array<T> must have a copy constructor of type T ( const T&other ). searches for a multi-set ( more than 1 entry in the sorted array)
returns start and end-index
i needed hours to track that down...
- changed some identity matrix settings to use core::IdentityMatrix
added a new method setAllocStrategy,
safe ( used + 1 ), double ( used * 2 + 1) - added deletePathFromFilename to generic string functions in coreutil.h and
removed from CZipReader and CPakReader
better default strategies will be implemented
- s32 deserializeAttributes used instead of virtual void deserializeAttributes in
- removed binary_search_const ParticleSystem ( wrong virtual was used)
i added it quite a long time ago, but it doesnt make real sense
a call to a sort method should happen always. i just wanted to safe
a few cycles..
- added binary_search_multi
searches for a multi-set ( more than 1 entry in the sorted array)
returns start and end-index
- changed some identity matrix settings to use core::IdentityMatrix
- added deletePathFromFilename to generic string functions in coreutil.h and
removed from CZipReader and CPakReader
- s32 deserializeAttributes used instead of virtual void deserializeAttributes in
ParticleSystem ( wrong virtual was used)
- strings & Locale - strings & Locale
- started to add locale support - started to add locale support
- added verify to string - added verify to string
- added some helper functions - added some helper functions
- XBOX - XBOX
i have access to a XBOX development machine now. I started to compile i have access to a XBOX development machine now. I started to compile
for the XBOX. Question: Who did the previous implementation?. There for the XBOX. Question: Who did the previous implementation?. There
is no XBOX-Device inhere. maybe it's forbidden because of using the offical is no XBOX-Device inhere. maybe it's forbidden because of using the offical
Microsoft XDK. I will implement a native or sdl device based on opendk. Microsoft XDK. I will implement a native or sdl device based on opendk.
irrlicht compiles without errors on the xbox but can't be used. irrlicht compiles without errors on the xbox but can't be used.
TODO:
- native XBOX Device
- Windows Mobile - Windows Mobile
reworked a little. added the mobile example to the windows solution for reworked a little. added the mobile example to the windows solution for
cross development. cross development.
added maximal 128x128 texture size for windows mobile ( memory issues ) added maximal 128x128 texture size for windows mobile ( memory issues )
- Collision Speed Up
- Collision Speed Up
The Collision Speed Up greatly improves with many small static child-nodes
The Collision Speed Up greatly improves with many small static child-nodes
- added COctTreeTriangleSelector::getTriangles for 3dline from user Piraaate
- modified createOctTreeTriangleSelector and createTriangleSelector - added COctTreeTriangleSelector::getTriangles for 3dline from user Piraaate
to allow node == 0, to be added to a meta selector
- CSceneNodeAnimatorCollisionResponse has the same problem as CSceneNodeAnimatorFPS - modified createOctTreeTriangleSelector and createTriangleSelector
on first update: to allow node == 0, to be added to a meta selector
Problem. you start setting the map. (setWorld). First update cames 4000 ms later.
The Animator applies the missing force... big problem... - CSceneNodeAnimatorCollisionResponse has the same problem as CSceneNodeAnimatorFPS
changed to react on first update like camera. on first update:
Problem. you start setting the map. (setWorld). First update cames 4000 ms later.
- add Variable FirstUpdate. if set to true ( on all changes ) The Animator applies the missing force... big problem...
then position, lasttime, and falling are initialized changed to react on first update like camera.
-added #define OCTTREE_USE_HARDWARE in Octree.h - add Variable FirstUpdate. if set to true ( on all changes )
then position, lasttime, and falling are initialized
if defined octtree uses internally a derived scene::MeshBuffer which has
the possibility to use the Hardware Vertex Buffer for static vertices and -added #define OCTTREE_USE_HARDWARE in Octree.h
dirty indices;-)
if defined octtree uses internally a derived scene::MeshBuffer which has
if defined OCTTREE_USE_HARDWARE octree uses internally a derived scene::CMeshBuffer the possibility to use the Hardware Vertex Buffer for static vertices and
so it's not just a replacement inside the octree. It also in the OctTreeSceneNode. dirty indices;-)
#define OCTTREE_PARENTTEST is also used. It's skip testing on fully outside and takes everything on fully inside
if defined OCTTREE_USE_HARDWARE octree uses internally a derived scene::CMeshBuffer
so it's not just a replacement inside the octree. It also in the OctTreeSceneNode.
- virtual void ISceneNode::updateAbsolutePosition() #define OCTTREE_PARENTTEST is also used. It's skip testing on fully outside and takes everything on fully inside
- changed
inline CMatrix4<T> CMatrix4<T>::operator*(const CMatrix4<T>& m2) const - virtual void ISceneNode::updateAbsolutePosition()
- changed inline CMatrix4<T> CMatrix4<T>::operator*(const CMatrix4<T>& m2) const
all two matrices have to be checked by isIdentity()
to let the isIdentity work always - changed inline bool CMatrix4<T>::isIdentity() const
to look first on Translation, because this is the most challenging element
- changed inline bool CMatrix4<T>::isIdentity() const
- virtual core::matrix4 getRelativeTransformation() const
on full identityCheck-> Hierarchy on Identity-Check
to look first on Translation, because this is the most challenging element 1) ->getRelativeTransform -> 9 floating point checks to be passed as Identity
which will likely not to be identity.. 2) ->isIdentity () -> 16 floating point checks to be passed as Identity
- virtual core::matrix4 getRelativeTransformation() const - inline void CMatrix4<T>::transformBoxEx(core::aabbox3d<f32>& box) const
added isIdentity() check
Hierarchy on Identity-Check
1) ->getRelativeTransform -> 9 floating point checks to be passed as Identity - changed CSceneNodeAnimatorCollisionResponse
2) ->isIdentity () -> 16 floating point checks to be passed as Identity - added CSceneNodeAnimatorCollisionResponse::setGravity
needed to set the differents Forces for the Animator. for eq. water..
- inline void CMatrix4<T>::transformBoxEx(core::aabbox3d<f32>& box) const - added CSceneNodeAnimatorCollisionResponse::setAnimateTarget
added isIdentity() check - added CSceneNodeAnimatorCollisionResponse::getAnimateTarget
- changed CSceneNodeAnimatorCollisionResponse::animateNode to react on FirstUpdate
- TODO: set Gravity to Physically frame independent values..
- changed CSceneNodeAnimatorCollisionResponse current response uses an frame depdended acceleration vector.
- added CSceneNodeAnimatorCollisionResponse::setGravity ~9.81 m/s^2 was achieved at around 50 fps with a setting of -0.03
needed to set the differents Forces for the Animator. for eq. water.. may effect existing application..
- added CSceneNodeAnimatorCollisionResponse::setAnimateTarget
- added CSceneNodeAnimatorCollisionResponse::getAnimateTarget
- changed CSceneNodeAnimatorCollisionResponse::animateNode to react on FirstUpdate
- TODO: set Gravity to Physically frame independent values..
current response uses an frame depdended acceleration vector.
~9.81 m/s^2 was achieved at around 50 fps with a setting of -0.03
may effect existing application..
- SceneNodes - SceneNodes
- CSkyDomeSceneNode - CSkyDomeSceneNode
moved radius ( default 1000 ) to constructor moved radius ( default 1000 ) to constructor
added Normals added Normals
added DebugInfo added DebugInfo
added Material.ZBuffer, added SceneMaanager added Material.ZBuffer, added SceneManager
- CVolumeLightSceneNode: - CVolumeLightSceneNode:
changed default blending OneTextureBlendgl_src_color gl_src_alpha to changed default blending OneTextureBlendgl_src_color gl_src_alpha to
EMT_TRANSPARENT_ADD_COLOR ( gl_src_color gl_one ) EMT_TRANSPARENT_ADD_COLOR ( gl_src_color gl_one )
which gives the same effect on non-transparent-materials. which gives the same effect on non-transparent-materials.
Following the unspoken guide-line, lowest effect as default Following the unspoken guide-line, lowest effect as default
- changed SceneNode Skydome f64 to f32,
- AnimatedMesh - changed SceneNode Skydome from f64 to f32
-Debug Data:
mesh normals didn't rotate with the scenenode fixed ( matrix-multiplication order) - AnimatedMesh Debug Data:
- Camera SceneNode setPosition mesh normals didn't rotate with the scenenode fixed ( matrix-multiplication order)
Camera now finally allow to change position and target and updates all
effected animators.. - Camera SceneNode setPosition
Camera now finally allow to change position and target and updates all
a call to OnAnimate ( ) lastime < time or OnAnimate ( 0 ) will reset the effected animators..
camera and fr. the collision animator to a new position
- Device: - Device:
added the current mousebutton state to the Mouse Event added the current mousebutton state to the Mouse Event
so i need to get the current mouse state from the OS so i need to get the current mouse state from the OS
-added to CIrrDeviceWin32
TODO:
- Linux and SDL Device
- GUI - GUI
- CGUIFont: - CGUIFont:
- added virtual void setInvisibleCharacters( const wchar_t *s ) = 0; - added virtual void setInvisibleCharacters( const wchar_t *s ) = 0;
define which characters should not be drawn ( send to driver) by the font.
define which characters should not be drawn ( send to driver) by the font. default: setInvisibleCharacters ( L" " );
for example " " would not draw any space which is usually blank in most fonts
and saves rendering of ususally full blank alpha-sprites. - added MultiLine rendering
This saves a lot of rendering... should avoid to us CStaticText breaking text in future
default: - CGUIListBox
setInvisibleCharacters ( L" " ); - changed Scrollbar LargeStepSize to ItemHeight
which easy enables to scroll line by line
- added MultiLine rendering
should avoid to us CStaticText breaking text in future - CGUIScrollBar
- CGUIListBox - bug: event lost when moving outside the window
- changed Scrollbar LargeStepSize to ItemHeight - bug: Scrollbar notifyListBox notify when the scrollbar is clicked.
which easy enables to scroll line by line - changed timed event in draw to OnPostRender
- CGUIScrollBar - added GUI Image List from Reinhard Ostermeier, modified to work
bug:
Create a Window and inside a listbox with a scrollbar or - FileOpenDialog
a windowed irrlicht application changed the static text for the filename to an edit box.
Click & hold Scrollbar Slider. move outside it's region. - changed the interface for addEditBox to match with addStaticText
Release Mouse. Go Back to Scrollbar.. it's moving always...
it's generally missing the event PRESSED_MOVED, which
leads to problem when an element is dragging, has a focus, or position loose
and gets focus back again. ( think of a drunken mouse sliding left&right during tracking )
so added the mouse Input Buttonstates on every mouse event
IrrDeviceWin32:
added event.MouseInput.ButtonStates = wParam & ( MK_LBUTTON | MK_RBUTTON | MK_MBUTTON );
TODO:
Linux & SDL
so now i can do this
case irr::EMIE_MOUSE_MOVED:
if ( !event.MouseInput.isLeftPressed () )
{
Dragging = false;
}
- bug:
Scrollbar notifyListBox notify when the scrollbar is clicked.
- changed timed event in draw to OnPostRender
- added GUI Image List from Reinhard Ostermeier, modified to work
added GUI Tree View from Reinhard Ostermeier, modified to work
shown in the Quake3MapShader Example
TODO: Spritebanks
- FileOpenDialog
changed the static text for the filename to an edit box.
- changed the interface for addEditBox to match with addStaticText
- changed the interface for addSpinBox to match with addEditBox
- added MouseWheel to Spinbox
- changed CGUITable CLICK_AREA from 3 to 12 to enable clicking on the visible marker
- CGUISpritebank
removed some crashes with empty Sprite banks
- IGUIScrollBar
added SetMin before min was always 0
changed ScrollWheel Direction on horizontal to move right on wheel up, left on wheel down
- IComboBox
-added ItemData
- optimized IsVisible check in IGUIElement::draw
- changed the interface for addSpinBox to match with addEditBox
- added MouseWheel to Spinbox
- changed CGUITable CLICK_AREA from 3 to 12 to enable clicking on the visible marker
- CGUISpritebank
removed some crashes with empty Sprite banks
- IGUIScrollBar
added SetMin before min was always 0
changed ScrollWheel Direction on horizontal to move right on wheel up, left on wheel down
- IComboBox: added ItemData
- optimized IsVisible check in IGUIElement::draw
- Image Loaders - Image Loaders
- added TGA file type 2 ( grayscale uncompressed ) - added TGA file type 2 ( grayscale uncompressed )
- added TGA file type (1) 8 Bit indexed color uncompressed - added TGA file type (1) 8 Bit indexed color uncompressed
ColorConverter: ColorConverter:
- added convert_B8G8R8toA8R8G8B8 - added convert_B8G8R8toA8R8G8B8
- added convert_B8G8R8A8toA8R8G8B8 - added convert_B8G8R8A8toA8R8G8B8
- Media Files - Media Files
- added missing shaders and textures to map-20kdm2. - added missing shaders and textures to map-20kdm2.
Taken from free implementation Taken from free implementation
- ball.wav. adjusted DC-Offset, amplified to -4dB, trim cross-zero - ball.wav. adjusted DC-Offset, amplified to -4dB, trim cross-zero
- impact.wav clip-restoration, trim cross-zero - impact.wav clip-restoration, trim cross-zero
- added gun.md2, gun.pcx to media-files - added gun.md2, gun.pcx to media-files
- added new irrlicht logo irrlicht3.png - added new irrlicht logo irrlicht3.png
- OctTree - OctTree
-added -added
#define OCTTREE_PARENTTEST ( default: disabled ) #define OCTTREE_PARENTTEST ( default: disabled )
used to leave-out children test if the parent passed a complete frustum. used to leave-out children test if the parent passed a complete frustum.
plus: leaves out children test plus: leaves out children test
minus: all edges have to be checked minus: all edges have to be checked
- added MeshBuffer Hardware Hint Vertex to octtree - added MeshBuffer Hardware Hint Vertex to octtree
- CQuake3ShaderSceneNode: - CQuake3ShaderSceneNode:
- removed function releaseMesh - removed function releaseMesh
Shader doesn't copy the original mesh anymore ( saving memory ) Shader doesn't copy the original mesh anymore ( saving memory )
so therefore this (for others often misleading ) function was removed so therefore this (for others often misleading ) function was removed
- changed constructor to take a (shared) destination meshbuffer for rendering - changed constructor to take a (shared) destination meshbuffer for rendering
reducing vertex-memory to a half reducing vertex-memory to a half
- don't copy the original vertices anymore - don't copy the original vertices anymore
- added deformvertexes autosprite - added deformvertexes autosprite
- added deformvertexes move - added deformvertexes move
- added support for RTCW and Raven BSPs ( qmap2 ) - added support for RTCW and Raven BSPs ( qmap2 )
- added polygonoffset (TODO: not perfect) - added polygonoffset (TODO: not perfect)
- added added nomipmaps - added added nomipmaps
- added rgbgen const - added rgbgen const
- added alphagen - added alphagen
- added MesBuffer Hardware Hint Vertex/Index to Quake3: static geometry, dynamic indices - added MesBuffer Hardware Hint Vertex/Index to Quake3: static geometry, dynamic indices
- added Quake3Explorer examples - added Quake3Explorer examples
- added wave noise - added wave noise
- added tcmod transform - added tcmod transform
- added whiteimage - added whiteimage
- added collision to Quake3Explorer - added collision to Quake3Explorer
- renamed SMD3QuaterionTag* to SMD3QuaternionTag* ( typo ) - renamed SMD3QuaterionTag* to SMD3QuaternionTag* ( typo )
- updated quake3:blendfunc - updated quake3:blendfunc
- added crouch to Quake3Explorer - added crouch to Quake3Explorer
(modifying the ellipsiodRadius of the camera animator ) (modifying the ellipsiodRadius of the camera animator )
added crouch to CSceneNodeAnimatorCameraFPS added crouch to CSceneNodeAnimatorCameraFPS
still problems with stand up and collision still problems with stand up and collision
- Quake3MapLoader - Quake3MapLoader
modified memory allocation for faster loading modified memory allocation for faster loading
- Quake3LoadParam - Quake3LoadParam
added Parameter to the Mesh-Loader added Parameter to the Mesh-Loader
- added - added
The still existing missing caulking of curved surfaces. The still existing missing caulking of curved surfaces.
using round in the coordinates doesn't solve the problem. using round in the coordinates doesn't solve the problem.
but for the demo bsp mesh it solves the problem... (luck) but for the demo bsp mesh it solves the problem... (luck)
so for now it's switchable. so for now it's switchable.
TJUNCTION_SOLVER_ROUND TJUNCTION_SOLVER_ROUND
default:off default:off
- BurningVideo - BurningVideo
- pushed BurningsVideo to 0.40 - pushed BurningsVideo to 0.40
- added blendfunc gl_one_minus_dst_alpha gl_one - added blendfunc gl_one_minus_dst_alpha gl_one
- added blendfunc gl_dst_color gl_zero - added blendfunc gl_dst_color gl_zero
- added blendfunc gl_dst_color src_alpha - added blendfunc gl_dst_color src_alpha
- modified AlphaChannel_Ref renderer to support alpha test lessequal - modified AlphaChannel_Ref renderer to support alpha test lessequal
- addded 32 Bit Index Buffer - addded 32 Bit Index Buffer
- added sourceRect/destRect check to 2D-Blitter ( slower, but resolves crash ) - added sourceRect/destRect check to 2D-Blitter ( slower, but resolves crash )
- added setTextureCreationFlag video::ETCF_ALLOW_NON_POWER_2 - added setTextureCreationFlag video::ETCF_ALLOW_NON_POWER_2
Burning checks this flag and when set, it bypasses the power2 size check, Burning checks this flag and when set, it bypasses the power2 size check,
which is necessary on 3D but can be avoided on 2D. which is necessary on 3D but can be avoided on 2D.
used on fonts automatically. used on fonts automatically.
- added Support for Destination Alpha - added Support for Destination Alpha
- Direct3D8 - Direct3D8
- added 32 Bit Index Buffer - added 32 Bit Index Buffer
- compile for XBOX - compile for XBOX
- Direc3D9
- fixed crash on RTT Textures DepthBuffer freed twice. - Direct3D9
added deleteAllTextures to destuctor - fixed crash on RTT Textures DepthBuffer freed twice.
added deleteAllTextures to destructor
- NullDriver - NullDriver
- removeallTextures. added setMaterial ( SMaterial() ) to clean pointers for freed textures - removeallTextures. added setMaterial ( SMaterial() ) to clean pointers for freed textures
- ISceneCollisionManager::getSceneNodeAndCollisionPointFromRay() allows selection by BB and triangle on a heirarchy of scene nodes. - ISceneCollisionManager::getSceneNodeAndCollisionPointFromRay() allows selection by BB and triangle on a heirarchy of scene nodes.
...@@ -743,6 +633,8 @@ Changes in version 1.6, TA ...@@ -743,6 +633,8 @@ Changes in version 1.6, TA
------------------------------------- -------------------------------------
Changes in version 1.5.1 (??.?? 2009) Changes in version 1.5.1 (??.?? 2009)
- bugfix: CGUIFont::getCharacterFromPos regards now kerning (found by Arras)
- Fix loading of Collada files from irrEdit 1.2 - Fix loading of Collada files from irrEdit 1.2
- Update to libpng 1.2.35, fixed issues on 64bit machines with system's libpng. - Update to libpng 1.2.35, fixed issues on 64bit machines with system's libpng.
...@@ -1597,8 +1489,8 @@ Changes in version 1.3 (15 Mar 2007) ...@@ -1597,8 +1489,8 @@ Changes in version 1.3 (15 Mar 2007)
- Enable Irrlicht to change TextureAddress Mode (Clamping), for each layer separately - Enable Irrlicht to change TextureAddress Mode (Clamping), for each layer separately
- Added Texture matrices to SMaterial for all texture layers - Added Texture matrices to SMaterial for all texture layers
- Removed the anonymous union/struct access to textures and material flags. - Removed the anonymous union/struct access to textures and material flags.
Now, Texture1..4 is removed - use Textures[i] instead Now, Texture1..4 is removed - use Textures[i] instead
The Flags[x] is replaced by setFlags(x, bool) resp. getFlags(x) The Flags[x] is replaced by setFlags(x, bool) resp. getFlags(x)
- The methods OnPreRender and OnPostRender of ISceneNode have been changed to - The methods OnPreRender and OnPostRender of ISceneNode have been changed to
OnRegisterSceneNode() and OnAnimate(). Also, they are now called at different OnRegisterSceneNode() and OnAnimate(). Also, they are now called at different
...@@ -1683,8 +1575,8 @@ Font improvements: ...@@ -1683,8 +1575,8 @@ Font improvements:
- Burning Video (the second but only complete software renderer) - Burning Video (the second but only complete software renderer)
- New Compile Config BURNINGVIDEO_RENDERER_ULTRA_FAST - New Compile Config BURNINGVIDEO_RENDERER_ULTRA_FAST
- New Compile Config BURNINGVIDEO_RENDERER_FAST - New Compile Config BURNINGVIDEO_RENDERER_FAST
touching the 20fps border in the demo ( P4 mobile 2Ghz ). 15fps average. touching the 20fps border in the demo ( P4 mobile 2Ghz ). 15fps average.
( Compile config Release Fast-FPU ) ( Compile config Release Fast-FPU )
- VertexCache for Tansformed & Light Vertices - VertexCache for Tansformed & Light Vertices
boost small drawPrimitive Calls ( 2DRectangle, Billboard ) and Real Index Triangles boost small drawPrimitive Calls ( 2DRectangle, Billboard ) and Real Index Triangles
...@@ -1692,11 +1584,11 @@ Font improvements: ...@@ -1692,11 +1584,11 @@ Font improvements:
- Bilinear Dither - Bilinear Dither
- clipping test ( compare instead of generic plane normal ) - clipping test ( compare instead of generic plane normal )
- support for NOT using vertexcolor - support for NOT using vertexcolor
#define SOFTWARE_DRIVER_2_USE_VERTEX_COLOR #define SOFTWARE_DRIVER_2_USE_VERTEX_COLOR
- added vertex to color to billboard. - added vertex to color to billboard.
shade top & shade down. shade top & shade down.
to support some static lighting effect on billboards to support some static lighting effect on billboards
- Implemented line rendering for SoftwareDriver - Implemented line rendering for SoftwareDriver
...@@ -1710,7 +1602,7 @@ Font improvements: ...@@ -1710,7 +1602,7 @@ Font improvements:
and a Key Map Entry. and a Key Map Entry.
- added param to IIImageWriteFile::writeImage - added param to IIImageWriteFile::writeImage
control Parameter for the backend ( e.g. jpeg compression level ) control Parameter for the backend ( e.g. jpeg compression level )
- addContextMenu: CGUIEnvironment::addContextMenu set the focus on the submenu. - addContextMenu: CGUIEnvironment::addContextMenu set the focus on the submenu.
...@@ -1787,7 +1679,7 @@ Font improvements: ...@@ -1787,7 +1679,7 @@ Font improvements:
- Indexed Triangle List - Indexed Triangle List
- initial support for quake3 Shaders and Entities - initial support for quake3 Shaders and Entities
- Shaders are parsed. When it's possible to resolve a 2 Texture Scheme it's taken - Shaders are parsed. When it's possible to resolve a 2 Texture Scheme it's taken
Shaders exist in namespace scene::quake3 Shaders exist in namespace scene::quake3
- The Example Quake3Map shows how to continue applying the Q3Shaders with SceneNodes - The Example Quake3Map shows how to continue applying the Q3Shaders with SceneNodes
( for example animmap converts to TextureAnimator.) ( for example animmap converts to TextureAnimator.)
TODO: use the Irrlicht Variable Syntax to remove redundant code.. TODO: use the Irrlicht Variable Syntax to remove redundant code..
...@@ -1835,19 +1727,19 @@ Font improvements: ...@@ -1835,19 +1727,19 @@ Font improvements:
better kerning would need a seperate coordinate set for each symbol. better kerning would need a seperate coordinate set for each symbol.
- changed MD2_FRAME_SHIFT to lower framerate - changed MD2_FRAME_SHIFT to lower framerate
-> lower IPol -> lower IPol
problems can occur if somebody uses hardcoded frame-numbers instead problems can occur if somebody uses hardcoded frame-numbers instead
of Animation name... of Animation name...
- changed spelling "frustrum" to "frustum" - changed spelling "frustrum" to "frustum"
-> changed also SViewFrustrum.h to SViewFrustum.h -> changed also SViewFrustrum.h to SViewFrustum.h
- changed Parameter AutomaticCulling from bool to enum E_CULLING_TYPE - changed Parameter AutomaticCulling from bool to enum E_CULLING_TYPE
to support more than two culling modes. to support more than two culling modes.
added Frustum culling ( it's a copy & paste from the octree ) added Frustum culling ( it's a copy & paste from the octree )
added initial bounding sphere added initial bounding sphere
used for culling point lights.. used for culling point lights..
- Added getSystemMemory and getProcessorSpeedMHz for Windows and Linux to the OSOperator, submitted by Vitek. - Added getSystemMemory and getProcessorSpeedMHz for Windows and Linux to the OSOperator, submitted by Vitek.
...@@ -1889,8 +1781,8 @@ Changes in version 1.2 (29 Nov 2006) ...@@ -1889,8 +1781,8 @@ Changes in version 1.2 (29 Nov 2006)
- Color selection dialog added. - Color selection dialog added.
- New GUI skin "Burning Skin". - New GUI skin "Burning Skin".
it's a black & white skin. look elegant on true-color. it's a black & white skin. look elegant on true-color.
and looks ok on 1-Bit ( e.g. no vertex color in burnings video ) and looks ok on 1-Bit ( e.g. no vertex color in burnings video )
- GUIStatic text is correctly grayed out if disabled. - GUIStatic text is correctly grayed out if disabled.
...@@ -1929,7 +1821,7 @@ Changes in version 1.2 (29 Nov 2006) ...@@ -1929,7 +1821,7 @@ Changes in version 1.2 (29 Nov 2006)
- Scolor: replaced s16 color with u16 color, replaced s32 color with u32 color to get rid of unnecessary arithmetic shift - Scolor: replaced s16 color with u16 color, replaced s32 color with u32 color to get rid of unnecessary arithmetic shift
- Colorconverter: X8R8G8B8toA1R5G5B5, set Alpha High, minor: A1R5G5B5toA8R8G8B8 changed if (a) to conditional set - Colorconverter: X8R8G8B8toA1R5G5B5, set Alpha High, minor: A1R5G5B5toA8R8G8B8 changed if (a) to conditional set
- CImage: added boxfilter (weigthed average), (generic, slow) - CImage: added boxfilter (weigthed average), (generic, slow)
...@@ -2065,7 +1957,7 @@ Changes in version 1.0 (19 Apr 2006) ...@@ -2065,7 +1957,7 @@ Changes in version 1.0 (19 Apr 2006)
- It is now possible to draw temporarily to foreign windows, by specifying a window handle when - It is now possible to draw temporarily to foreign windows, by specifying a window handle when
calling IVideoDriver::endScene(). Note: This does not work in fullscreen mode and is not calling IVideoDriver::endScene(). Note: This does not work in fullscreen mode and is not
implemented for all devices (only for D3D8, D3D9, Software1 and Software2, and only for Windows). implemented for all devices (only for D3D8, D3D9, Software1 and Software2, and only for Windows).
In addition, you can also specify the source rectangle to present. In addition, you can also specify the source rectangle to present.
- Picking is now more accurate and also works with view ports and better with orthogonal cameras. - Picking is now more accurate and also works with view ports and better with orthogonal cameras.
...@@ -2076,7 +1968,7 @@ Changes in version 1.0 (19 Apr 2006) ...@@ -2076,7 +1968,7 @@ Changes in version 1.0 (19 Apr 2006)
from collision detection, picking or from serialization, etc. from collision detection, picking or from serialization, etc.
- Scene Nodes now have the possibility to return their type using - Scene Nodes now have the possibility to return their type using
virtual ESCENE_NODE_TYPE getType(). virtual ESCENE_NODE_TYPE getType().
- Improved support for orthogonal rendering: Skyboxes and billboards can be - Improved support for orthogonal rendering: Skyboxes and billboards can be
used with orthogonal cameras now, too. used with orthogonal cameras now, too.
...@@ -3332,16 +3224,16 @@ Changes in version 0.5: (17 Feb 2004) ...@@ -3332,16 +3224,16 @@ Changes in version 0.5: (17 Feb 2004)
I'll compile this version from now on always with optimization switched on. I'll compile this version from now on always with optimization switched on.
- Other, Minor New/Changed methods in public interfaces: - Other, Minor New/Changed methods in public interfaces:
* buildShadowMatrix in matrix4 * buildShadowMatrix in matrix4
* getRotationDegrees in matrix4 (sent in by Chev) * getRotationDegrees in matrix4 (sent in by Chev)
* rotateVect in matrix4 * rotateVect in matrix4
* linear_search in array * linear_search in array
* recalculateBoundingBox in MeshManipulator * recalculateBoundingBox in MeshManipulator
* ISceneManager::addStaticText() now has a parameter for word wrapping * ISceneManager::addStaticText() now has a parameter for word wrapping
* getCharacterFromPos() in IGUIFont * getCharacterFromPos() in IGUIFont
* drawMeshBuffer() in IVideoDriver; * drawMeshBuffer() in IVideoDriver;
* interpolate() in matrix4 * interpolate() in matrix4
* getLast in array * getLast in array
------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------
Changes in version 0.4.2: (13 Dec 2003) Changes in version 0.4.2: (13 Dec 2003)
......
...@@ -823,8 +823,8 @@ namespace video ...@@ -823,8 +823,8 @@ namespace video
you want per-pixel fog. you want per-pixel fog.
\param rangeFog Set this to true to enable range-based vertex \param rangeFog Set this to true to enable range-based vertex
fog. The distance from the viewer is used to compute the fog, fog. The distance from the viewer is used to compute the fog,
not the z-coordinate. This is better, but slower. This is only not the z-coordinate. This is better, but slower. This might not
available with D3D and vertex fog. */ be available with all drivers and fog settings. */
virtual void setFog(SColor color=SColor(0,255,255,255), virtual void setFog(SColor color=SColor(0,255,255,255),
E_FOG_TYPE fogType=EFT_FOG_LINEAR, E_FOG_TYPE fogType=EFT_FOG_LINEAR,
f32 start=50.0f, f32 end=100.0f, f32 density=0.01f, f32 start=50.0f, f32 end=100.0f, f32 density=0.01f,
......
...@@ -2721,7 +2721,6 @@ void COpenGLDriver::drawStencilShadowVolume(const core::vector3df* triangles, s3 ...@@ -2721,7 +2721,6 @@ void COpenGLDriver::drawStencilShadowVolume(const core::vector3df* triangles, s3
} }
void COpenGLDriver::drawStencilShadow(bool clearStencilBuffer, video::SColor leftUpEdge, void COpenGLDriver::drawStencilShadow(bool clearStencilBuffer, video::SColor leftUpEdge,
video::SColor rightUpEdge, video::SColor leftDownEdge, video::SColor rightDownEdge) video::SColor rightUpEdge, video::SColor leftDownEdge, video::SColor rightDownEdge)
{ {
...@@ -2788,10 +2787,20 @@ void COpenGLDriver::setFog(SColor c, E_FOG_TYPE fogType, f32 start, ...@@ -2788,10 +2787,20 @@ void COpenGLDriver::setFog(SColor c, E_FOG_TYPE fogType, f32 start,
CNullDriver::setFog(c, fogType, start, end, density, pixelFog, rangeFog); CNullDriver::setFog(c, fogType, start, end, density, pixelFog, rangeFog);
glFogf(GL_FOG_MODE, GLfloat((fogType==EFT_FOG_LINEAR)? GL_LINEAR : (fogType==EFT_FOG_EXP)?GL_EXP:GL_EXP2)); glFogf(GL_FOG_MODE, GLfloat((fogType==EFT_FOG_LINEAR)? GL_LINEAR : (fogType==EFT_FOG_EXP)?GL_EXP:GL_EXP2));
#ifdef GL_EXT_fog_coord #ifdef GL_EXT_fog_coord
if (FeatureAvailable[IRR_EXT_fog_coord]) if (FeatureAvailable[IRR_EXT_fog_coord])
glFogi(GL_FOG_COORDINATE_SOURCE, GL_FRAGMENT_DEPTH); glFogi(GL_FOG_COORDINATE_SOURCE, GL_FRAGMENT_DEPTH);
#endif #endif
#ifdef GL_NV_fog_distance
if (FeatureAvailable[IRR_NV_fog_distance])
{
if (rangeFog)
glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_RADIAL_NV);
else
glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV);
}
#endif
if (fogType==EFT_FOG_LINEAR) if (fogType==EFT_FOG_LINEAR)
{ {
...@@ -2812,7 +2821,6 @@ void COpenGLDriver::setFog(SColor c, E_FOG_TYPE fogType, f32 start, ...@@ -2812,7 +2821,6 @@ void COpenGLDriver::setFog(SColor c, E_FOG_TYPE fogType, f32 start,
} }
//! Draws a 3d line. //! Draws a 3d line.
void COpenGLDriver::draw3DLine(const core::vector3df& start, void COpenGLDriver::draw3DLine(const core::vector3df& start,
const core::vector3df& end, SColor color) const core::vector3df& end, SColor color)
......
...@@ -168,20 +168,6 @@ IAnimatedMesh* CSTLMeshFileLoader::createMesh(io::IReadFile* file) ...@@ -168,20 +168,6 @@ IAnimatedMesh* CSTLMeshFileLoader::createMesh(io::IReadFile* file)
} }
//! Read RGB color
const c8* CSTLMeshFileLoader::readColor(const c8* bufPtr, video::SColor& color, const c8* const pBufEnd) const
{
const u32 COLOR_BUFFER_LENGTH = 16;
c8 colStr[COLOR_BUFFER_LENGTH];
color.setAlpha(255);
color.setRed((s32)(core::fast_atof(colStr) * 255.0f));
color.setGreen((s32)(core::fast_atof(colStr) * 255.0f));
color.setBlue((s32)(core::fast_atof(colStr) * 255.0f));
return bufPtr;
}
//! Read 3d vector of floats //! Read 3d vector of floats
void CSTLMeshFileLoader::getNextVector(io::IReadFile* file, core::vector3df& vec, bool binary) const void CSTLMeshFileLoader::getNextVector(io::IReadFile* file, core::vector3df& vec, bool binary) const
{ {
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "IMeshLoader.h" #include "IMeshLoader.h"
#include "irrString.h" #include "irrString.h"
#include "SColor.h"
#include "vector3d.h" #include "vector3d.h"
namespace irr namespace irr
...@@ -39,8 +38,6 @@ private: ...@@ -39,8 +38,6 @@ private:
// skip to next printable character after the first line break // skip to next printable character after the first line break
void goNextLine(io::IReadFile* file) const; void goNextLine(io::IReadFile* file) const;
//! Read RGB color
const c8* readColor(const c8* pBufPtr, video::SColor& color, const c8* const pBufEnd) const;
//! Read 3d vector of floats //! Read 3d vector of floats
void getNextVector(io::IReadFile* file, core::vector3df& vec, bool binary) const; void getNextVector(io::IReadFile* file, core::vector3df& vec, bool binary) const;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment