Commit Graph

196 Commits

Author SHA1 Message Date
cutealien
05fb5bc776 Fix compile-errors when compiling without _IRR_OPENGL_USE_EXTPOINTER_
Thanks @Maksym Hamarnyk for the patch.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6119 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-06-13 14:56:21 +00:00
cutealien
49b39e456d Fix potential reading/writing 1 byte behind it's own buffer in PLY loader.
Thanks @wolfgang for report and patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52627&p=305573#p305573)


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6113 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-06-10 21:21:57 +00:00
engineer_apple
2d67c2d92c Burningvideo: fix "Old HW Compatible blending" TextureLightMap2_Add
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6111 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-05-30 13:58:37 +00:00
cutealien
13a232aa9b updateTriangles in CTriangleSelector can handle some broken meshes without crash now.
Before it crashed when index-count wasn't a multiple of 3, now it just doesn't create the last triangle then.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6110 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-05-26 13:01:02 +00:00
cutealien
9062ac91af ICursorControl::isVisible is now always returning the flag that was set in setVisible.
This changes the behaviour on Win32 somewhat when Windows returned a CURSOR_SUPPRESSED state (touch-screen input hiding cursor globally).
Previously we set IsVisible it to false when CURSOR_SUPPRESSED was set.
Also we handle the CURSOR_SUPPRESSED state slightly different now and still try to hide cursors once when requested.
Reason for the change is that the old behaviour made it harder to recover from touch-screens hiding the cursor because Irrlicht didn't
know anymore which state is _should_ have. This also unifies the behaviour on all drivers as the other drivers already returned the visible
flag independent of the system being able to actually show the cursor.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6109 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-05-05 13:19:42 +00:00
cutealien
780eec5363 Improvements to B3D writer for speed, readability and handling of low framerate animations.
Thanks @JLouisB for the patch (For more info, see: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=50067&start=15)

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6108 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-04-27 20:52:21 +00:00
cutealien
a67b616fc9 Add another render pass ESNRP_GUI which is drawn last and is p.E. useful for rendering gui nodes in the scenemanager.
UI and scenenodes are often connected. And while it was possible to work around this already by using custom draw functions
or deriving from gui and scene-nodes at the same time, it did already lead a few times to uglier code for me. 
So I guess adding one more pass to the engine has it's uses.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6107 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-03-30 16:04:53 +00:00
engineer_apple
bca8023261 CSoftwareDriver2: Normalmap like Irrlicht. Lightpos in vertex space
CSoftwareTexture2: Tweaking (guessing linear Image)
CBlit.h: allow mirror image (SuperTuxKart)

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6105 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-03-01 22:33:55 +00:00
engineer_apple
f74abf1d2b burning: GL_FOG_COORDINATE_SOURCE ,GL_FRAGMENT_DEPTH -> abs(EyeSpace.vertex.z)
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6104 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-03-01 16:19:03 +00:00
cutealien
ae64a8ef22 Fix c::b project file.
Adding the new burnings files.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6103 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-29 14:45:18 +00:00
engineer_apple
92f3d266a0 removed OriginalFormat from CSoftwareTexture2, because ITexture has OriginalColorFormat;
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6102 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-29 01:13:48 +00:00
engineer_apple
704c9eec83 BurningVideo 0.51 - NormalMap
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6101 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-27 00:17:46 +00:00
cutealien
725391bf50 Fix VS2010 project file.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6100 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-27 00:07:39 +00:00
engineer_apple
5bf308139c expf throws floating point underflow exception on every value in VS2017.
switch to IEEE-compatible type double exp

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6099 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-23 14:15:53 +00:00
engineer_apple
f5362a658d burningvideo: regenerateMipMapLevels, allow mipmap upload
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6095 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-23 02:23:10 +00:00
engineer_apple
0de51c3c3d removed warning for VisualStudio 2012
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6093 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-22 22:54:23 +00:00
engineer_apple
a790b163ee remove source warnings
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6092 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-22 22:09:48 +00:00
engineer_apple
6f8b0cef96 remove source warnings
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6091 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-22 22:01:57 +00:00
engineer_apple
8554ec93f9 -burningvideo 0.5 revert
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6087 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-22 20:51:59 +00:00
engineer_apple
86dd0cde26 - BurningVideo: 0.50
- 10 year anniversary update
  - Lighting model reworked. moved to eyespace like openGL. [Specular Highlights, Fog, Sphere/Reflection Map] 
  - increased internal s4DVertex to support 4 Textures and 4 Colors [switchable]
  - Textures are handled as sRGB during Mipmap Generation. More accurate, less visual disruption
  - 2D is drawn as 3D like hardware drivers. [switchable]. enables viewport scaling, material2D
  - Texture Spatial Resolution Limiting working. [lower memory consumption,SOFTWARE_DRIVER_2_TEXTURE_MAXSIZE]
  - SuperTuxKart 8.0.1 playable


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6086 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-22 20:48:12 +00:00
cutealien
9c837aa41b Add more GlTextureParameter wrapper to COpenGLExtensionHandler
Sorry, just a hack to make it easier to work around Irrlicht :-(
Would be nice to have a general mechanism to load native gl functions in Irrlicht from apps...


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6074 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-11 14:14:59 +00:00
cutealien
7b1ee6468d Added 'uint' GLSL uniform support.
Thanks @devsh for the patch.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6073 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-10 15:01:11 +00:00
cutealien
dbf03c296c Add support for handling non square matrix uniform types in GLSL
Thanks @devsh for the patch.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6072 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-10 14:24:26 +00:00
cutealien
7beeb3d3f8 Fix several OpenGL version checking comparisons and add glGetTexImage.
Thanks @devsh for the patch.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6071 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-02-10 14:08:59 +00:00
cutealien
5451a2a8a0 Switch to 32bit meshes in CPLYMeshFileLoader now at > 65536 vertices.
65536th vertex has index 65535 which is still fine, was going 1 too low in last commit.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6053 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-08 11:14:57 +00:00
cutealien
bc41211482 CPLYMeshFileLoader now switching to 32-bit meshbuffers when more than 65535 vertices instead of more than 65565.
Thanks @randomMesh for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52563)

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6052 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-08 10:34:35 +00:00
cutealien
5db5cbadf5 Add another test for gl errors in debug.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6048 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-06 14:27:20 +00:00
cutealien
50f4bdecbe No longer try creating rtt's for compressed image formats
Those are not supported by any graphic card and we just end up with invalid textures.
Returning 0 now instead in addRenderTargetTexture for OpenGL and D3D9.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6047 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-06 14:05:26 +00:00
cutealien
83d368cef4 Replace compile-warnings for unsupported image formats in writers with a log message warning.
Having too many warnings makes it harder to see real warnings.
I know the idea to keep those around was to have them as reminder to work on those.
But going over the formats here - it just doesn't make sense in most cases.
And for the rest (like we could add converts from R8 or so) no-one is going to work on it until someone concretely needs it anyway. 


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6046 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-06 11:54:57 +00:00
cutealien
985997a755 Avoid warning.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6043 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-04 18:51:01 +00:00
cutealien
f1a3995965 Add define IRR_CASE_IIMAGE_COMPRESSED_FORMAT to help getting rid of a few more warnings.
Unlikely we ever support conversions with compressed image format.
Define is a bit ugly I guess, but nicest way I could think off.
Can probably be used in some image writers as well, have to check which support/don't support compressed formats first.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6042 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-04 18:42:12 +00:00
cutealien
66b24bb745 Avoid some warnings and unnecessary (slow) check in CImage::setPixel/getPixel
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6041 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-04 18:26:13 +00:00
cutealien
229c827870 Prevent some fallthrough warnings we got since gcc7 in aes
Interestingly those can be suppressed with simple comments.
Note that I didn't suppress those in zlib code yet as I'll check for updates for those libs before releasing (while we are pretty much stuck with this AES version unless we put in a lot more work).


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6040 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-04 16:22:12 +00:00
cutealien
34d09f7c63 Fix: CMeshSceneNode and CAnimatedMeshSceneNode still used wrong material in OnRegisterSceneNode.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6035 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-03 16:22:55 +00:00
cutealien
0b71328102 Use BlendFactor only when MaterialType != EMT_ONETEXTURE_BLEND
The way this was implemented BlendFactor and MaterialTypeParam could conflict otherwise as they both send the blend functions.

We could probably rewrite all places which use EMT_ONETEXTURE_BLEND+MaterialTypeParam to additionally check for BlendFactor, but it would still set the blend-functions twice. 
I'm not sure if BlendFactor works with 2D materials currently? (but we can't set those to shaders yet anyway except in the gles branch...).

I've also started documenting a few things about how I suppose it's working, I hope I got it all right.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6034 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-03 14:58:46 +00:00
cutealien
473ab1ea58 Unify checks if materials should use transparent render pass with new IVideoDriver::needsTransparentRenderPass function.
Fix bug that AnimatedMeshSceneNode ignored ReadOnlyMaterials flag when checking materials for transparent render passes.
Make IVideoDriver::getMaterialRenderer const.
Fix bugs in COctreeSceneNode, CMeshSceneNode and CAnimatedMeshSceneNode where check for transparency in OnRegisterSceneNode() and in render() where no longer identical (those got added after Irrlicht 1.8).

Some notes for future:
- Maybe we should have a getRenderPass instead of just needsTransparentRenderPass, but this way the code didn't need so much changes and behaves (aside from fixes) pretty much as before.
- Still wondering if the default implementation in CNullDriver::needsTransparentRenderPass should always return false when SMaterial.ZWriteEnable is set to EZW_ON.
  This might be nicer with another material flag. Thought then we might want a material enum to choose the renderpass and that's more work.
  And we get some recursion as needsTransparentRenderPass might want to check result of getWriteZBuffer which calls needsTransparentRenderPass, so we might need a second function or an additional flag there.
  But return false when SMaterial.ZWriteEnable == EZW_ON could still be done as EZW_ON is a new flag so existing behavior shouldn't break. I just don't know right now if having an extra render pass for transparent nodes might still make sense even when zbuffer is not written or if that's really the only reason to do that. Any feedback anyone?



git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6033 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-03 11:13:57 +00:00
cutealien
2928a632a4 Material.ZWriteEnable is now of type E_ZWRITE instead of bool and ZWriteFineControl get removed (or merged into ZWriteEnable).
This breaks compiling. To have old values replace false with EZW_OFF and true with EWZ_AUTO.

There's a bit history to this change. ZWriteFineControl got introduced after 1.8 so it was never in a released version.
Basically it was needed after some changes had been made to allow shaders to have zwrite enabled independent
of the material-type (which worked badly for shaders). This had caused other problems as it was then enabled too often instead. 
So to quickly fix those bugs and avoid breaking compatibility I had introduced a new enum ZWriteFineControl in SMaterial.
This worked and didn't break compiling - but I noticed by now that introducing a second flag for this made maintainance for an already 
very hard to understand problem (figuring out the implementation of transparency and zwriting) even more complicated. 
So to keep maintance somewhat sane I decided to break compiling now and merge those two flags. 
The behavior should not be affected by this commit - except for users which set this flag already in their code and have to switch to the enum now.

Serialization is switched on loading old files (so SMaterial has enum already and writes that out).


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6026 dfc29bdd-3216-0410-991c-e03cc46cb475
2020-01-02 15:34:52 +00:00
cutealien
c661373121 EMT_REFLECTION_2_LAYER and EMT_TRANSPARENT_REFLECTION_2_LAYER on OpenGL now same as D3D9 version.
Before OpenGL used GL_SPHERE_MAP instead of GL_REFLECTION_MAP in COpenGLMaterialRenderer. 
Not sure why, but documentation mentioned GL not being implemented, so maybe it was forgotten?
Or maybe I'm  missing something as this was a big too easy to fix :-)
Anyway - I tested it and with that change they seem to look now identical to the D3D9 version, so I think it's fine.
Obviously means whoever used the material before on OpenGL has now a changed material.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6014 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-17 14:05:34 +00:00
cutealien
3280b3319e Add floor32, ceil32, round32 compatibility functions for burnings renderer.
To avoid changing burnings now those functions have no IRRLICHT_FAST_MATH anymore, 
there's a new header irrMathFastCompat.h which has ..._fast functions doing the old behavior.
With the troubles they have documented.
I changed burnings to use those functions throughout.
Or as much as possible... Burnings probably also uses classes like SColor which also have functions 
using those, but I don't plan  to adapt them.
Maybe IRRLICHT_FAST_MATH should be a flag exlusive to burnings in the future, I don't think it makes 
much sense otherwise anymore (it often expects 32-bit asm).

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6012 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-16 16:15:04 +00:00
cutealien
5c8f0484da Remove clearFPUException which did nothing.
That function just returned true for years not doing anything.
As far as I can see from the web it's about some rare cases in DOS compatibility mode with 32-bit apps. 
But not sure why it was called exactly in this place in the past.
So no comments, no idea what it's about and not actually doing anything and probably not needed on any platform anyone still uses ... lets just kick it out.
(it did break compiling IRRLICHT_FAST_MATH on x64 which is why I noticed it)

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6009 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-16 13:49:38 +00:00
cutealien
6c5ae22d49 Get rid of gcc warnings.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6005 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-12 18:04:40 +00:00
cutealien
0b92a66c50 Replace list of hwnd -> IrrlichtDevice mapper with an array.
Single inserts/removes per device creating/destruction, but searchs on every event. Arrays are better for that than lists.
Also document a bit.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6004 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-12 17:31:22 +00:00
cutealien
6ad09a3a25 Remove unused function getEnvMapperFromHWnd
I suspect we could also get rid of the EnvMap list, not sure what that is about.


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6003 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-12 17:16:51 +00:00
cutealien
7061c42008 Avoid warning on gcc
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6002 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-12 17:04:46 +00:00
cutealien
2f84ab0cdc Avoid some gcc warnings.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6001 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-12 16:52:46 +00:00
cutealien
8310a3fbad Avoid warning and make local variable lower-case.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6000 dfc29bdd-3216-0410-991c-e03cc46cb475
2019-12-12 16:32:41 +00:00