-
Notifications
You must be signed in to change notification settings - Fork 11
/
changes.txt
5144 lines (3337 loc) · 239 KB
/
changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
--------------------------
Changes in 1.9 (not yet released)
- Removed VS6 .dsw / .dsp project files - VS6 is no longer supported.
- Added support for PVR textures. Loader offer support for compressed DXT1-5, PVRTC/PVRTC-II, ETC1/ETC2 texture formats.
- Improve speed for finalizing skinned meshes (removal of unnecessary frames after loading) (thx @ichtyander for the testmodel)
- Collada loader now instantiates camera nodes which had been ignore so far (thx @NemoStein for the test .dae)
- line2d::intersectWith has a new parameter to allow ignoring intersections with coincident lines
- vector2d::equals now has an tolerance parameter for passing the epsilon (like vector3d had). Note that this changes the default
behavior of vector2d::equals as well as functions using it like the operators for ==, !=, <, >, <=, >= when using vector2d with f64
as the tolerance is increased in that case (for f32 and integer values it shouldn't make any difference).
- Material renderers which offers blending feature (eg. EMT_TRANSPARENT_ALPHA_CHANNEL, EMT_ONETEXTURE_BLEND etc.) require SMaterial::BlendOperation set to other value than EBO_NONE.
- Removed support for built-in T&L variables in ASM/GLSL shaders (variables related to vertices eg. gl_MultiTexCoord0 are still supported). This change allow us to reduce CPU overhead in shader material renderers.
- IGUIEnvironment::hasFocus has now a parameter checkSubElements as subelements are usually seen as part of an element. Default unfortunately must be false due to backward compatibility.
- Add IGUIElement::isTrulyVisible which works like ISceneNode::isTrulyVisible and checks for parent visibility as well.
- Improved DDS loader and added support for DXTn (DXT1-5) compressed textures in OpenGL and Direct3D9 drivers.
- Add function ISceneNode::getTransformedBoundingBoxEdges.
- Improve automatic compiling under solaris (proposed by curaga)
- Add in IGUICheckBox: setDrawBackground, isDrawBackgroundEnabled, setDrawBorder, isDrawBorderEnabled
- IGUISpinBox now passes on the EGET_BUTTON_CLICKED, EGET_EDITBOX_CHANGED and EGET_EDITBOX_ENTER events from it's sub-elements.
- IGUISpinBox no longer validates values after each character type but only on KEY_ENTER and when losing focus. New behavior can be set with IGUISpinBox::setValidateOn
- IAttributes::getAttributeAs functions now can have a customizable default-parameter to return when attributeName is not found
- Added ECFN_DISABLED value (it works like ECFN_NEVER worked before) and changed ECFN_NEVER behaviour
(it works like its equivalent value in OpenGL/Direct3D).
- Removed boolean interface from IShaderConstantSetCallBack, please use integer interface instead of them.
- Add a LeakHunter class which can be enabled with compile-flag _IRR_COMPILE_WITH_LEAK_HUNTER_ to find leaking IReferenceCounted objects.
- Add _IRR_COMPILE_WITH_XML_ define to allow compiling Irrlicht without xml (patch written by curaga)
- Add functions to set/get cursor character and blinktime to IGUIEditBox
- Collada exporter calculates values for orthographic camera now on export
- Collada exporter now exports the camera up-vector correctly.
- Add IColladaMeshWriter::findGeometryNameForNode
- Add getters IGUIButton::isDrawBorderEnabled and IGUIButton::isDrawBackgroundEnabled
--------------------------
Changes in 1.8.1 (17.11.2013)
- Improved OpenGL performance under OSX (Thanks devonsoft for reporting).
- Fixed OSX compilation issues.
- [KNOWN BUG] Software driver doesn't work properly under OSX 10.9.
- For speed improvement the following attributes accessible by ISceneManager::getParameters() are no longer updated in release:
"culled", "calls", "drawn_solid", "drawn_transparent", "drawn_transparent_effect".
They can be enabled by compiling Irrlicht with the define _IRR_SCENEMANAGER_DEBUG.
Thanks @hendu for reporting, see http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=48211 for the discussion.
- Fix compile problem with CIrrDeviceSDL on VS2008 (and maybe other systems). Thanks @HellFlip for reporting.
- Fix quaternion::rotationFromTo() (Thanks @takamoto for reporting)
- Fix iszero for s64 (Thanks @chronologicaldot for reporting)
- Fix crash in SoftwareDriver2 when Material was EMT_DETAIL_MAP but texture[1] was not set (Thanks for fix by chronologicaldot)
- Fix buffer overrun in x-loader (Thanks for fix by Otaka)
- Fix cursor visibility update problem under Windows 8 (Thanks @luthyr for reporting)
- Fix irredit links in loadScene/saveScene docs.
- Fix issue in CAnimatedMeshSceneNode::clone which caused a crash. (reported and fixed by luthyr)
- Fix compiling errors for c++ builder (thx @Greatwolf for many patches and @cfanderek for reminding)
- Initialized IColladaMeshWriter::GeometryWriting which was uninitialized.
- Fix linker trouble with irr::core::equalsByUl when compiling Irrlicht as managed code (thx @ Memorial76 for a report + testcase)
- Fix crashes in CCubeSceneNode::clone and CSphereSceneNode::clone (reported by marsupial)
- Fix the clipping in the listbox drawing which was only showing the right line of the sunken pane (reported by Mloren and Abraxas).
- Initialize slider in example 05 correct (reported by Zerochen)
- Fix crash in CMeshSceneNode::clone when the mesh had no shadow (reported by christianclavet, bug-fix found by Nadro)
--------------------------
Changes in 1.8 (7.11.2012)
- Let sphere mesh use full opaque color, just as all the other ones do
- Gcc on Win32 (MinGW) now also works with the _w file access functions when compiled with _IRR_WCHAR_FILESYSTEM. (thx @ alexzk for reporting compile troubles)
- Fix a bunch of off-by one errors in irr::core::string in functions equals_substring_ignore_case, findFirst, findFirstChar, findNext, findLast, findLastChar, replace, remove and removeChars.
This prevents some potential memory access errors, find functions no longer try to find the \0, replace no longer replaces the \0 and remove no longer tries to remove it (which did remove the last character instead).
- matrix4::setRotationAxisRadians added
- user clipplanes fixed
- Skip rendering of lines, points, and polygons, as these lead to crahses due to wrong access to the vertex lists. A fix would need major rewrite of the vertex cache, or at least some other render methods.
- Add mipmap generation for makeColorKeyTexture
- Add another saveScene overload which allows to pass in a user-created XMLWriter. Patch suggested by eversilver.
- quaternion conversions to and from matrix4 no longer invert rotations.
To test if your code was affected by this you can set IRR_TEST_BROKEN_QUATERNION_USE in quaternion.h and try to compile your application.
Then on all compile-errors when you pass the matrix to the quaternion you can replace the matrix transposed matrix.
For all errors you get on getMatrix() you can use quaternion::getMatrix_transposed instead.
- CGUIEnvironment::loadGui - loading a gui into a target-element no longer messes up when the gui-file contained guienvironment serialization.
- Colladawriter now exports materials per node when those are used in Irrlicht
- Colladawriter now writing matrices for node transformations as old solution did not work with CDummyTransformationSceneNode's.
- Colladawriter no longer create an extra node for the scenemanger as <visual_scene> has that job in Collada.
- Colladwriter no longer makes all Scenenodes children of ambient-light as that can be parallel on the same layer instead.
- Colladareader now creates the ambient-light correct instead of creating a point-light for it.
- Add new parameter to array reallocate function. This prevents a reallocation in case the array would become smaller. As the reallocation operation is quite time consuming, this can be avoided on request now, on the expense of more memory consumption.
- Add IAnimatedMeshSceneNode::getLoopMode (asked for by JLouisB)
- CSceneNodeAnimatorCameraFPS now resets the key-input when it was disabled (thx @ gerdb for reporting and patch-proposal)
- Properly destroy OpenGL resources on linux (thx @curaga for the patch)
- Fix diplay bux in the attribute-panel of the GUIEditor. Fixes bug 3517314 (thx @Darkcoder for reporting).
- Allow caching cursor position on X11 to work around slow XQueryPointer calls (thx @Hendu for reporting+patch proposal)
- Make sure after EGET_EDITBOX_ENTER and EGET_COMBO_BOX_CHANGED event processing no more code is executed for the corresponding editbox or combobox objects to allow clearing the environment on those actions (see comments on bug-id 2995838).
- Fix string::replace which failed replacing substrings at the end when the replacement was longer
- Struct packing works now with gcc 4.7 changes on MinGW (thx @Sudi for reporting).
- Struct packing uses now same solution throughout (by including headers in corresponding places)
- User can now set characters used for decimal point in fast_atof for localisation.
- Add parameter useAlphaChannel to second IGUIEnvironment::addImage function.
- Get rid of unnecessary warning "Could not load sprite bank because the file does not exist" for "#defaultfont".
- Fix MRT disabling. Bug found and fixed by hendu.
- core:::array::reallocate returning now immediately when it has nothing to do. Should reduce a lot of memory thrashing on irrArrays.
- Start mesh animations at first OnAnimate , before start-frame was rather random. Thx @Auria for reporting and patch proposal.
- renderTargetTexture now working with ECF_R5G6B5
- add -fPic in c::b linux fast math shared build.
- Fix by Auria for starting the animated meshes only at first OnAnimate instead of at random times and animation frames.
- Add support for MAX_COMBINED_TEXTURES, which allows more texture support than with the original fixed pipeline texture check under OpenGL. Now, more than 4 textures should also work with newer gfx cards and drivers, which often only support 4 fixed pipeline textures.
- triangle3d::isPointInsideFast now using some epsilon to catch all points on the borders.
- triangle3d::getIntersectionOfPlaneWithLine calculates now with higher precision for more exact results.
- triangle3d::isOnSameSide (used by isPointInside) calculates now with higher precision and uses some epsilon to make it work with larger integers and less floating point troubles. Slightly slower now.
- new function equalsByUlp to test for spacing between floating point numbers.
- speedup for collada writing.
- speedup for xml-writing.
- Fix 8bit grey image TGAs, which were not working due to missing palette. Also switched to RGB8 format, as otherwise a loss in precision would occur. Thanks to Klunk for the error report and a test image.
- fixed issues with a D3D driver and Aero effects.
- Fix font-drawing in CGUIButton to use EGDF_BUTTON again (thx @DJLinux for reporting).
- Add texture cache with proper reference handling. This avoids deletion of textures while still being active on the GPU. Test case and fix by m(att)giuca
- CFileSystem::removeFileArchive now checking for normalized path
- Fix zip's with passwords on 64-bit systems (thx @ Dr. Gladman for writing the bugfix)
- replace asserts in tests with macro assert_log to allow running all tests through on problems.
- added IGUIElement::setName and IGUIElement::getName (similar to ISceneNode)
- irr::s64 support
- line2d::getClosestPoint can now also get the closest point on the line additional to only checking for closest point on the line-segment.
- avoid division by zero in line2d::getClosestPoint when start- and endpoint are identical
- Support for sw drivers under OSX
- Fix font-loading which got broken by fixed xml-loading. Thanks @ pc0de for finding and providing a test and patch.
- Don't crash draw2DSpriteBatch when it get's no textures.
- Add support for int passing in setShaderConstant
- Support for better collada texture wrapping support on loading.
- Fix for render context change where only the window id is given. We now try to change only the window ID, keeping context and display unchanged. Suggestion by vovo4ka from the forum.
- XML-reader now ignores all whitespace-only EXN_TEXT elements as old way didn't work in cross-platform way (and arguably also not well on Windows).
- CXMLReader initializes IsEmptyElement now.
- line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
- line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
- line2d::getMiddle and line3d::getMiddle work now also with integers. But can be slower for compilers which are not optimizing division by 2 to multiplication by 0.5 for floats.
- Add Nadro's initial Cg support. Example 10 is enhanced to allow also Cg shaders.
- Add mipmap support from FBO extension, patch by Nadro.
- Add vertex optimization algorithm submitted by curaga
- rename texureBlend functions to textureBlend
- Add threshold for slerp calculation, switching between linear and slerp at this point.
- Fix for bug 3401933 - vertex color interpolation with shadow volumes in the scene
- Fixed bug in button sprites reported by RdR
- Fixed button state sprite animations for pressed, focused and hovered.
- Added serialization for terrain smooth factor, patch by RdR
- Implemented more button states for sprite banks, patch submitted by RdR
- Add IGUIEnvironment::getHovered to get the element most recently known to be under the mouse cursor
- Add FPS settings for animated meshes, which allows to push animation speed from files to Irrlicht animation system
- Maya camera updates
- Add support for bsp brush entities. Written by Hendu.
- weighted normals recalculation fixed
- Billboard improvements
- API docs updates
- triangle selector improvements
- OSX improvements by Auria
- Add new methods for adding and removing file archives based on ifilearchive pointers.
- Add getBackgroundColor, isDrawBackgroundEnabled and isDrawBorderEnabled to IGUIStaticText (thx 4 patch from Nalin).
- Reduction of multiple skinning the same mesh and frame in one render cycle
- Added ISceneNodeAnimatorCameraFPS::getKeyMap and a new ISceneNodeAnimatorCameraFPS::setKeyMap.
- CSceneNodeAnimatorCameraFPS uses now SKeyMap instead of SCamKeyMap (structs were identical which was confusing and there wasn't any explanation in comments, so I decided to simplify it).
- Add some workaround to MeshViewer to show how we can currently fix the FPS-cam when users to alt-tab while moving. We can improve that some day when we have focus-events, but this works for now.
- Fix LZMA decompression
- Ply normal fixes
- HW buffers only support rendering with both vertex and index buffers
- Enables VBOs for water node
- Octree support for non-standard vertex meshes
- Fix rotationFromTo
- Added ConstIterator
- Fix for getScreenCoordinatesFrom3DPosition to use proper RTT sizes
- Add IGUIComboBox::setMaxSelectionRows and IGUIComboBox::getMaxSelectionRows
- Scenemanager switches from type ESNT_UNKNOWN to type ESNT_SCENE_MANAGER.
- Add getActiveFont to all elements which have setOverrideFont for cleaner code
- Add getOverrideFont to all elements which have setOverrideFont to have a consistent interface
- IGUIEditBox: added missing serialization for Border
- IGUIEditBox: remove bug that added spaces to the end of each line
- IGUIEditBox: fix crash that happened when wordwrapping was enabled, spaces were entered beyond the border and then cursor-key was pressed.
- IGUIEditBox::setDrawBackground added.
- CGUISkin::draw3DSunkenPane no longer ignores fillBackGround in non-flat mode. Also borderlines are no longer drawn overlapping to avoid ugly corners.
- CDummyTransformationSceneNode::clone() added.
- IParticleSystemSceneNode::doParticleSystem now public to allow rendering outside scenegraph.
- getRelativeFilenames updates and fixes
- Renamed IOSOperator::getOperationSystemVersion to getOperatingSystemVersion. Changed return type from wchar_t to core::stringc, as that's the internal representation the name is built on.
- Added IGUITabControl::insertTab, IGUITabControl::removeTab, IGUITabControl::clear and IGUITabControl::getTabAt
- Add 32bit support to some mesh manipulator methods
- Fix mipmap locking under OpenGL
- Improvement of screenshot function to support more color formats and targets
- getAngle fix to avoid NaNs
- Available gfx memory output in log messages
- Improved 2d render settings and caching
- Initial suppport for sRGB render functions
- Improved terrain scene node rendering
- Paletted png image support fixed
- Gamma settings in image loaders improved
- Support for relative filenames in serialization
- Access to selectors inside meta selectors implemented
- DirectInput joystick support
- Support for scaling with draw2dimage with burnings video
- More gl extensions have correctly initialised return values
- Some fixes for quaternion to euler function
- Properly return nullptr if RTT creation fails on low levels
- Added IGUIListBox::getItemAt
- Add more image formats tried to load by q3 level loader
- Add fast_atof improvements from assimp, also strtoul10 method
- Add blend equation function for MRTs
- Add new material fields for blend operation and polygon offset (depth bias).
- Reorder texture stage assignments
- Improved VSync handling
- Fix Ogre loader for materials with more than one texture
- Fix createMeshCopy material handling
- Framework target for OSX project added
- Terrain scene node fixes
- Fix HSL color class
- Fix color selection GUI element
- Transparency issues in particle system fixed
- Particle sphere emitter rand values fixed
- Support Unicode SHY dynamic hypen in word wrap
- Fix OBJ reader sometimes running over EOF
- Added IGUITable::getColumnWidth
- Billboard text animates in OnAnimate now
- Fix mountpoint reader to properly sync file names and firectories
- Added the ability to open an archive from an IReadFile*, added a FileToHeader tool with instructions of how to make a portable app that consists of a single executable file.
- Added suppport for right-to-left (RTL) text, supplied by Auria from STK
- Added ISceneManager::createSceneNodeAnimator to create animators by name
- The Makefile now creates a symlink from the soname to the binary name during install. Binary compatibility is only confirmed between same minor releases.
- Added SMF mesh loader, loads meshes from 3D World Studio. Originally written by Joseph Ellis
- The loader selection process now consistently checks loader lists in reverse order, so new loaders added to Irrlicht override the internal ones. This applies when adding external mesh, image, scene and archive loaders, image writers, plus node, animator and GUI element factories.
- Added getters to retrieve mesh, scene and archive loaders.
- Added ISceneLoader interface and .irr loader. Users can now add their own scene loaders to the scene manager and use them by calling loadScene.
- Renamed IGUIElement::bringToBack to sendToBack, like in Windows
- Send EGET_ELEMENT_CLOSED event when context menus should be closed (thx @ Mloren for reporting).
- Added treeview to GUI editor, provided by Armen
- Added root type for GUI environment
- zip archive fixes: Fix directory tags in file list. Fix loading of stream zip files which have file sizes only in the central directory.
- Fixed panel scrollbars in GUI editor, reported by Armen
- Fix b3d loading of files with mixed mesh/bone sections.
- Fix particle emitters which used integer random numbers so far. The distributions of the particles should be much better (and the code also somewhat faster) now.
- Add new random method frand: Returns a random number in the interval [0..1] and gives better distributions than using fmodf on the integer number.
- Add node parameter to saveScene and loadScene. saveScene saves the given node and all descendants to the file (if 0, the full scene is saved as before). loadScene loads all elements of the scene as childs of the given node. As before, 0 would load the file on the top level (scenemanager).
- Add method to make a filename relative to a given directory.
- Fix setMesh to correctly update the joints cache.
- Fix setting transition time of skinned meshes back to 0.
- Add some getters to IGUIImage: getImage, getColor
- Fix OpenGL FBODepthTexture to create less overhead
- Fix MRT disabling under OpenGL
- API change: Added write only lock mode for textures. The lock method has changed the signature and uses an enum parameter now instead of a bool. The default is still to lock for read/write (previously 'false'). The old 'true' value should be replaced by ETLM_READ_ONLY.
- Speedup deleting of particles
- Add function IParticleSystemSceneNode::clearParticles
- Fix RTT render states under OpenGL
- Fix AntiAliasing setup under Windows/OpenGL in case no AA is available
- Fix transformation matrices when RTT used
- API change: getScreenCoordinatesFrom3DPosition has a new parameter, which needs to be set to true to get the original behavior. Now, the method returns coordinates which would fit as render coordinates of a currently enabled viewport. With the parameter set to true the result would fit only after the viewport is reset to full window rendering.
- More checks for Stencilbuffer
- Improve render state resets
- Fix MRT handling
- Fix file search
- Add flag and method to disable clipping of the text to the gui element rectangle in GUI static text.
- addShadowVolumeSceneNode now replaces an existing shadow. One should avoid to call this method multiple times without changing any parameter, as it is quite time consuming and cannot recognize the duplicate calls.
- Add function IGUIEnvironment::removeFont (TODO: Does not remove the texture from cache so far)
- Fixed mem leak in mountfilesystem
- Update to libjpeg 8b, zlib 1.2.5, bzip2 1.0.6, libpng 1.4.4 and lzma from 9.20 SDK
- Functions in IMeshCache expecting IAnimatedMesh* parameters removed as similar functions with IMesh* can be used since a while. Fixes also problems when IAnimatedMesh* got upcasted to IMesh*. (thx @ Greenya for reporting)
- Fix blend states for MRTs
- 64bit targets for MSVC added
- The following functions will now use a "ISceneNode *" instead of a "const ISceneNode *":
ITriangleSelector::getSceneNodeForTriangle, ISceneNodeAnimatorCollisionResponse::getCollisionNode, ISceneCollisionManager::getCollisionPoint and ISceneCollisionManager::getCollisionResultPosition.
As collision functions often are followed by changing node positions users where so far forced to using const_casts (found by Greenya).
- Add vector3d::getAs3Values (patch provided by slavik262)
- Add function to SViewFrustum to get corners of the near plane (patch provided by Matt Kline, aka slavik262)
- ParticleFadeOutAffector::setFadeOutTime can no longer be set to invalid values
- ParticleFadeOutAffector uses now throughout u32 for fadeOutTime (found by greenya)
- Add missing access function CParticleSystemSceneNode::getAffectors() (seen by B@z)
- Add missing setters/getters for particle emitters (seen by B@z)
- Compile-defines can now be disabled from Makefiles/Projectfiles instead of having to change IrrCompileConfig.h each time.
- IGUITabControl::setActiveTab should only take IGUITab* and not IGUIElement* (thx to greenya for finding)
- Add new skin-colors: EGDC_GRAY_WINDOW_SYMBOL, EGDC_EDITABLE, EGDC_GRAY_EDITABLE, EGDC_FOCUSED_EDITABLE
- Disabled state is now extended to sub-elements
- Make disabled state for several elements more visible
- Bugfix: Icons in tabcontrol get now affected immediately by skin-changes
- Proper cleanup if visual not created
- XML reader bugfix
- Disable mipmaps in 2d mode everywhere
- Add xml example written by Yoran Bosman.
- Fix cursor cleanup under Linux when using multiple devices
- Fix collada parser
- Fix MRT reset under D3D
- Add a generic attribute interface for querying video driver attributes which are not necessarily of type bool. This interface allows to check certain supported features, such as the number of user clip planes, supported lights and textures, MRTs, and other things. The interface might change in the future, but it's fully functional already. The supported attributes are listed in the API docs of the function:
The following names can be queried for the given types:
* MaxTextures (int) The maximum number of simultaneous textures supported by the driver. This can be less than the supported number of textures of the driver. Use _IRR_MATERIAL_MAX_TEXTURES_ to adapt the number.
* MaxSupportedTextures (int) The maximum number of simultaneous textures supported by the fixed function pipeline of the (hw) driver. The actual supported number of textures supported by the engine can be lower.
* MaxLights (int) Number of hardware lights supported in the fixed function pipieline of the driver, typically 6-8. Use light manager or deferred shading for more.
* MaxAnisotropy (int) Number of anisotropy levels supported for filtering. At least 1, max is typically at 16 or 32.
* MaxUserClipPlanes (int) Number of additional clip planes, which can be set by the user via dedicated driver methods.
* MaxAuxBuffers (int) Special render buffers, which are currently not really usable inside Irrlicht. Only supported by OpenGL
* MaxMultipleRenderTargets (int) Number of render targets which can be bound simultaneously. Rendering to MRTs is done via shaders.
* MaxIndices (int) Number of indices which can be used in one render call (i.e. one mesh buffer).
* MaxTextureSize (int) Dimension that a texture may have, both in width and height.
* MaxGeometryVerticesOut (int) Number of vertices the geometry shader can output in one pass. Only OpenGL so far.
* MaxTextureLODBias (float) Maximum value for LOD bias. Is usually at around 16, but can be lower on some systems.
* Version (int) Version of the driver. Should be Major*100+Minor
* ShaderLanguageVersion (int) Version of the high level shader language. Should be Major*100+Minor.
- Fix getRotationDegrees
- Add creation parameter which allows to disable highres timers on Windows upon device creation.
- Several transparency setup bugs fixed. Now, alpha_vertex_blend uses proper alpha blending instead of a mixed add/alpha blending.
- Added a method to get real time and date in a human readable struct
- Fix add folder archives method to support files without trailing slashes.
- fix transparent_reflection_2_layers
- Add support for MSVC 2010
- Fix "unsupported format" warning on RTT usage
- Add IGUIElement::bringToBack (patch written by DtD, although I'm to blame for the function-name)
- BurningVideo
- add Normalmap Rendering (one light only), pushed Burningvideo to 0.46
- add Stencil Shadow Rendering (one color only and 32 bit only),
pushed Burningvideo to 0.47
- internal vertexformat changed
- changed fixpoint from 9 to 10 bit fract resolution
- renamed createBurningVideoDriver to createBurningVideoDriver and uses SIrrlichtCreationParameters like opengl
- internal interfaces for the trianglerenders unified.
- Example 11, changed the light billboards to use the light color.
allow to disable the bump/parallax on the earth like in the room ( with transparency )
- added DDS Image files, DXT2, DXT3, DXT4, DXT5, based on code from nvidia and Randy Reddig
- added Halflife 1 Model Loader (based on code by Fabio Concas)
Halflife 1.1.0.8, Counter-Strike 1.6 working
-> Load all Textures ( can even optimize it to texture atlas ), all bone animation, all submodels.
-> But to make use of the values (named animation, mouth animation)
the Interface for IAnimatedMeshSceneNode has to be redone.
TODO:
->can handle float frames numbers, the interface for getMesh should be reworked
This is my idea of a new getMesh interface for IAnimatedMesh
//! Returns the IMesh interface for a frame.
/** \param frameA: Frame number as zero based index.
The Blend Factor is in the fractional part of frameA
The Mesh will be calculated as
frame = integer(frameA) * (1-fractional(frameA )) + frameB * fractional(frameA)
FrameNr KeyFrameA KeyFrameB
40.0 1 0
40.1 0.9 0.1
40.5 0.5 0.5
40.9 0.1 0.9
41.0 0 1
\param frameB: Frame number as zero based index. The other KeyFrame which is blended with FrameA.
\param userParam: for Example Level of detail, or something else
*/
virtual IMesh* getMesh(f32 frameA, s32 frameB = 0,s32 param = 0) = 0;
For now i used the (unused, always 255) detail level parameter and set a blend percentage as
s32 frameNr = (s32) getFrameNr();
s32 frameBlend = (s32) (core::fract ( getFrameNr() ) * 1000.f);
return Mesh->getMesh(frameNr, frameBlend, StartFrame, EndFrame);
So no interface is affected.
-> TODO: Quaternion Rotation is done private hand made and should be done with irrlicht quaternions
- Included 357kb Yodan.mdl mesh and copyright info file from Doug Hillyer
to the media directory, used in example 7. collision as 4th model.
- added Halflife 1 Texture Loader
Valve uses WAL archive types like quake2. textures are inside model files
I reworked the existing ImageloaderWAL and added named Halflife textures to wal2 ( they have no extension )
and an LMP (palette/texture) loader into the same file (all using 32bit now)
- added WAD Archive Loader (Quake2 (WAL2) and Halflife (WAL3) are supported)
- CFileList
added Offset Parameter to SFileListEntry and removed the private array from the archive loaders.
CFileList::addItem now uses automatic incremental id if id = 0
- added void splitFilename, splits a path into components
- added parameter make_lower to substring ( copy just lower case )
string<T> subString(u32 begin, s32 length, bool make_lower = false ) const
- ColorConverter added
//! converts a 8 bit palettized or non palettized image (A8) into R8G8B8
static void convert8BitTo24Bit(const u8* in, s16* out, s32 width, s32 height, const s32* palette, s32 linepad = 0, bool flip=false);
//! converts a 8 bit palettized or non palettized image (A8) into A8R8G8B8
static void convert8BitTo32Bit(const u8* in, u8* out, s32 width, s32 height, const u8* palette, s32 linepad = 0, bool flip=false);
- In IGUITreeView "clearChilds" and "hasChilds" deprecated for "clearChildren" and "hasChildren" (thx @Greenya for noticing)
- add CGUIEditBox::getOverrideColor and CGUIEditBox::isOverrideColorEnabled
- add dimension2d::operator-
- Add logging level ELL_DEBUG
- Add parameter DisplayAdapter to creation params to allow selecting the card when more than one card is in the system.
- Added support for custom cursors
- WM_SYSCOMMAND - SC_KEYMENU message is now ignored (F10 and ALT in Win32 windowed mode)
- Avoid argument lookup ambiguity in swap when used in combination with stl. Using same trick as boost now and use 2 different template parameters in it.
- Add UseMipMap flag in material
- Add occlusion query support. Based on code by Nadro
- Add support for vertex_array_bgra extension in OpenGL driver. This will speed up OpenGL rendering quite a lot as it skips the silly color conversion thing we have to do otherwise.
- Replace raw xml char implementation with template struct in order to decouple the type from POD types. May also help for 64bit problems or changes needed there.
- Fixed bug causing memory access violation in string::replace found and patched by Nalin.
- Fix windows32 class unregister
- Add parameter to line2d::intersectWith to allow getting intersections outside the segments (thx Yoran).
- External windows are not destroyed anymore
- clamp values in getRotationDegrees to avoid nan values
- texture size in terrain mesh fixed
- ms3d fixes
- Add new matrix methods for infinite projection matrix
- Support new OpenGL 2.x shader creation
-----------------------------
Changes in 1.7.4 (not yet released)
- fixed getDepthFunction in IQ3Shader which always returned ECFN_EQUAL due to missing break (found by the cppcheck tool)
- STL loader improved to handle arbitrary file starts
- Compiler problem with gcc4.6 and big endian systems fixed
- Change include order to get example 21 compiling on MinGW.
- Irrlicht.dll has correct name now again (was named libIrrlicht.dll in c::b). This fixes bugreport 3518765 reported by tetho.
- Fix linker path in example 16 for C::B project file (linker path was in include path section).
- Link with opengl32 and gdi32 in Example 14 in C::B.
- Remove --no-export-all-symbols which got recently added to the windows build as that flag is not known by gcc on Windows.
- Fix bug in example 23 where Width and Height got mixed up. Thanks @Lazier for reporting.
- Fix for R5G6B5 converter submitted by XMight
- Fix conversion warning under mingw, found by Randajad
- Set EMF_NORMALIZE_NORMALS correct for syndey model in Demo (thanks @ Midnight for reporting).
- SceneNodeAnimatorFlyCircle fixes serialization of RadiusEllipsoid (was writing Radius). Thx @ wing64 for reporting.
- Yield on Linux now uses nanosleep with 1ns as 0 isn't guaranteed to yield (thx @ hendu for finding + fix)
-----------------------------
Changes in 1.7.3 (20.02.2012)
- SceneNodeAnimatorFlyCircle fixes serialization of RadiusEllipsoid (was writing Radius). Thx @ wing64 for reporting.
- Yield on Linux now uses nanosleep with 1ns as 0 isn't guaranteed to yield (thx @ hendu for finding + fix)
- GUIEditor attributes have now scrollbar to be editable
- Remove warning when compiling line2d::intersectWith with other types than f32.
- Document that triangle3d::isPointInside should not be used with int's.
- triangle3d::isPointInsideFast handles 'on-border' cases now consistently.
- Some more editbox fixes
- Harden Linux joystick usage, in case the driver returns illegal values
- Some more editbox fixes
- Harden Linux joystick usage, in case the driver returns illegal values
- Bugfix: vector2d.normalize() and vector3d.normalize() had returned wrong results with very short vectors since Irrlicht 1.5. Thanks to Willem Swart for Bugreport + testcase.
- Unknown keymappings now use the X11 keycode instead of 0 to make such keys at least usable in games.
- KeyMapping for KeyInput.Key on X11 ignores states like shift&ctrl now like on Windows.
- Additional keymappings for X11 (tested with german and us keyboards which seem to work now in all cases).
- Fix crash in multiline editbox when pasting several lines into it on Windows (found by Reiko)
- example 09.Meshviewer no longer catches keys while a modal dialog is open
- Fix SSharedMeshBuffer
- Fix right handed ortho matrix
- editbox no longer displays cursor when disabled
- editbox autoscrolling now at least works good enough to actually show the text which the user is typing in.
- editbox no longer moves text into next line when it fails wrapping creating senseless empty lines which mess up scrolling.
- Fix crash in editbox when scrolling up with empty first lines caused by textwrapping.
- Fix endianess conversions
- Changes to isPointInside
- Fix focus problem when removing an unfocused modal dialog reported by Reiko here: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=44358
- Fix md2 normals problem again
- Add integer template specialization for vector3d::getSphericalCoordinateAngles which rounds angles to nearest integer now.
- Recalculate FrameRect and ScrollPos in CGUIEditBox when AbsoluteRect gets changed (thx @ serengeor for report + testcase)
- Fix crash in editbox
- Fix crash in editbox
- Fix 'k' in bigfont.png (thx @ Scrappi for reporting)
- fix serialization for CBillboardSceneNode, it had missed 2 color (thx for finding + patch from pc0de)
- EMIE_MOUSE_WHEEL messages now handled correctly in several gui-element when wheel isn't just 1.0 or -1.0 (thx @ Reiko for reporting)
- Fix problems in Textwrapping in CGUIStaticText. Did use wrong size and did ignore last word of the text (thx @ Reiko for bugreport)
- Fix crash in collada (.dae) loading
- Fix bug handling in case RTT is not properly created
- Fix SColorf interpolation
- Fix bug handling in case RTT is not properly created
- Fix SColorf interpolation
- Fix memory-leaks in example 22 MaterialViewer
- Fix array::erase which did destroy objects more than once when used with a range (thx @ RedDragCZ for reporting + testcase).
- Copy now all membervariables for CCameraSceneNode when cloning.
- ICameraSceneNode::IsOrthogonal is correctly serialized and cloned now.
- CGUIScrollBar passes unused mousemove-events now to parent element. Fixes focus-bug in ComboBox reported by REDDemon here: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=43474&highlight=
- Fix getAngle and getAngleWith
- Fix clipping in CGUITabControl
- Fix clipping in CGUITable, reported by ceyron
- Skip bone weights and additional information in ms3d file if no joint was defined before.
- Fix mem leak in CImage, found by mloren.
- Fix tga writing, reported by xirtamatrix
- Tab-positions care now about the borders correctly
- TabControl now respositions it's tabs when setTabVerticalAlignment is changed (thx @ ceyron for reporting+testcase)
- CGUIModalScreen now no longer takes focus itself, but tries to give it first child when possible to fix modal windows losing focus all the time
- Modal screens no longer blinks when gui-elements call removeFocus on themself (thx @ yaten for reporting+testcase)
- Fix crash in multiline-editbox when selecting with mouse (thx @ ceyron for reporting and testcase)
- Fix render context creation for OpenGL under Windows.
- Fix the reset problem of d3d9 driver in combination with hardware buffers.
- Fix .x loader in case of unused vertices.
- Avoid empty line in texts with very large words. Text wrapping would introduce an empty line in earlier versions.
- Add a new attribute which assigns hw mapping hint to the whole Mesh.
- Allow creation of water scene node without mesh.
- Fix regeneration of skydome.
- Fix scene node type and factory support for volume light
- Q3 maps no longer crash when faces try accessing lightmaps which are not mentioned to be loaded in the file.
- Fix crash on null-readfile in texture loading
- Get particles saved before 1.7.2 (for example in irrEdit) working again (thx to smashly for problem reporting)
- Fix IGUIScrollBar setMax and setMin which had been restricted wrongly (reported by REDDemon)
- Fix CNullDriver::createImage - Creating the image from a texture-rectangle which doesn't start at 0,0 works now again (thx @ ceyron for bugreport+testcase)
- Menu no longer sets highlight state when clicking disabled menu-item (reported by Mloren)
- Treeview can now be disabled
-----------------------------
Changes in 1.7.2 (15.11.2010)
- Fix in d3d9 driver, which caused a crash when device creation failed. Bug found and fixed by Kostya
- Fix a wrong access to Value instead of ValueW. Found and fixed by vroad.
- Fix line loop rendering in d3d drivers. Fix submitted by tonic.
- Fix tar recognition in tar reader.
- Fix blend mode setup in OpenGL driver, when using the material2d override, as pointed out by Auria
- Avoid crash due to tcoords2 handling. Might need some more fixing to work correctly.
- Fix 2d line intersections. Has had problems with consecutive, but non-overlapping line segments and with overlapping line segments.
- Fix image creation from texture, found by dataslayer
- Fix crashes when taking Screenhots for DirectX in Windowed mode (thx to agamemnus for reporting)
- StaticText does now serialize the background color
- Fix gui-elements which didn't care when skin-colors changed. That made it impossible to make the gui slowly transparent (thx to PI for reporting).
Note that it couldn't be completely fixed for the SpinBox without breaking the interface, so for that element you have to enforce this by calling for example element->setValue(element->getValue()) once.
- Fix CXMLReaderImpl::getAttributeValueAsInt which returned wrong values with large integers (thx to squisher for finding)
- Fix compile problem in swap when using irrlicht in combination with stl (backport from trunk r3281)
- Add EGET_TREEVIEW_NODE_COLLAPSE and deprecate EGET_TREEVIEW_NODE_COLLAPS (found by greenya)
- Fix serialization in CParticleSystemSceneNode (found by B@z)
- Prevent crash in BillboardTextSceneNode when a custom font is used. Found and fixed by Nalin (bugtracker id: 3020487)
- Fix problem in animation system that currentFrame got messed up after long pauses (especially when not starting at frame 0).
See forum thread (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=210537#210537) and bug id 2898876.
Also remove BeginFrameTime in CAnimatedMeshSceneNode as it hasn't been used anymore since some time.
- Add framerate and current frame information for animations in example 09 and do some minor cleanup.
- Added another test for xml-reader.
- Fix serialization in several particle emitters and affectors (thx to Ion Dune for reporting).
- Fix compile-error on VS for vector2d::getAngleTrig when used with integers. (thx to greenya for reporting)
- Fix bug in dimension2d::getInterpolated that caused wrong results when used with integers as template parameter. (thx to Greenya for noticing a warning which made me look over this code).
- Remove 2 minor memory leaks in meshloaders (found by tool cppcheck-1.43)
- reduce file dependencies for IGUIEventReceiver.h (thx ngc92)
- Initialize GUIEvent.Element in several places (found by greenya)
- Add EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH and deprecated EGDS_MESSAGE_BOX_MAX_TEST_WIDTH (thx to greenya for reporting).
- Fix colors in irr files.
- Fix several places where "used" in core::string was used wrongly preventing some memory corruption
- Remove additional slash in pathnames in X-Loader
- Fix crash in CGUIListBox when environment was cleared on events
- Bugfix: Clear up depth-textures which could not be attached in OpenGL to prevent crashes.
- Fix arrowMesh boundingbox.
- Fix rounding problem in getInterpolated in the color classes
- Scrollbar in GUIListbox now uses default id -1 instead of 0
- Fix octree clipping issues.
- Fix obj loader.
- clone function fixes.
- Fix tooltips.
- Fix Ogre parser.
-----------------------------
Changes in 1.7.1 (17.02.2010)
- Fix octree with frustum+parent checks enabled (didn't clip at all before). Now using plane-checks instead of edge-checks for frustum-box intersection.
- Prevent that X11 selects larger resolutions in fullscreen even when perfect fits are available.
- Ignore setResizable also on X11 when we're fullscreen to avoid messing up the window mode.
- Work around a crash when pressing ESC after closing a Messagebox (found by Acki)
- Prevent borland compile warnings in SColorHSL::FromRGB and in SVertexColorThresholdManipulator (found by mdeininger)
- Improve Windows version detection rules (Patch from brferreira)
- Make it compile on Borland compilers (thx to mdeininger)
- Make sure that CAnimatedMeshSceneNode::clone calls the virtual updateAbsolutePosition for the new object
- Fix that clones got dropped too often when SceneNodes without parent got cloned (found by Ulf)
- Make sure TAB is still recognized on X11 when shift+tab is pressed. This does also fix going to the previous tabstop on X11.
- Send EGET_ELEMENT_LEFT also when there won't be a new hovered element
- Update docs for EGET_ELEMENT_LEFT and EGET_ELEMENT_HOVERED
- Fix tooltips: Remove them when the element is hidden or removed (thx to seven for finding)
- Fix tooltips: Make (more) sure they don't get confused by gui-subelements
- Fix tooltips: Get faster relaunch times working
- Fix tooltips: Make sure hovered element is never the tooltip itself
- Fix string::remove which got in an endless loop when remove was called with an empty string (found and fixed by Ulf)
- Correctly release the GLSL shaders
- Make sure we only release an X11 atom when it was actually created
- Fix aabbox collision test, which not only broke the collision test routines, but also frustum culling, octree tests, etc.
- Fix compilation problem under OSX due to wrong glProgramParameteri usage
- mem leak in OBJ loader fixed
- Removed some default parameters to reduce ambigious situations
---------------------------
Changes in 1.7 (03.02.2010)
- Implement minimize and deminimize under OSX.
- Define sorting order for vector2d and vector3d in operators <, <=, > and >= to fix bugs 2783509 and 2783510. Operators order now by X,Y,Z and use float tolerances.
- Ogre mesh 32bit indices fixed.
- Fix tooltips for gui-elements with sub-element like IGUISpinBox (id: 2927079, found by ArakisTheKitsune)
- ITimer no longer stops when started twice
- wchar_t filesystem updates under Windows.
- Joystick POV fixed under Windows, ids fixed under OSX.
- Some updates to skinned mesh for better bones support and scaling animations.
- OSX supports external window id in creation parameters now.
- Fix bbox collision tests.
- Updates for win32 key handling
- new convenience method for flat plane creation.
- Sky dome and other meshes use VBOs by default now.
- Speed up b3d loading for files with many frames, material color flags and vertex color support enhanced.
- Add hasType to IGUIElement as a dynamic_cast substitute.
- Add another parameter to IGUISkin::draw3DWindowBackground to allow getting the client area without actually drawing
- Add function getClientRect to IGUIWindow for getting the draw-able area
- Fix bug that menus on IGUIWindows with titlebar got drawn too high (id: 2714400)
- Renamed OctTree to Octree
- Allow getting a ConstIterator from a non-const core:list
- Add swap functions to irrMath and to the core classes.
- Deprecate map::isEmpty() and replace it with map::empty() to make it similar to other base classes.
- Allow to set the logging level already in SIrrlichtCreationParameters.
- Add clearSystemMessages to devices (implemented only for Linux and Win32 so far).
- Support changing the render window from beginScene also with OpenGL driver.
- Add getMaterial2D which allows to alter the 2d render state settings, such as filtering, anti-aliasing, thickness, etc.