3000th commit - IrrlichtBAW (GIT repo, v 0.3.0-gamma1)

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

currently working on:
1) Getting rid of fast_atof.h
2) using stdint.h instead of irrlicht types (removal of irrlicht types like s8,u8,c8 etc.)
3) booting out core::string and io::path
4) Quaternion only rotations
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

For now the plan is to make Irrlicht compile with LTO, gold and to omit frame pointers

And include either jemalloc or tcmalloc as the memory allocators, patched to force 512-bit alignment on *alloc.

Finally we will explore aligned memory pools for items requiring a lot of reallocation... (and custom STL allocators to go with it)
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

Removed glPolygonOffset , but left the SMaterial variables (which are useless without a shader making use of them).

Polygon offsetting to be done by user in a shader.

Here is an example assuming the irrBAW-default (reverse) Z-Buffer is used.

Code: Select all

gl_FragDepth = intBitsToFloat(floatBitsToInt(gl_FragCoord.z)+32768)+0.5*fwidth(gl_FragCoord.z);
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

Work on version 0.3 underway, done so far:
1) Improvement on glSyncFences
2) Removed PolygonOffset
3) Implemented certain ISceneNode s blocking or skipping rendering depending on a glFence
*4) removed core::string
5) Simplified creating Auxillary contexts (no longer need user-specified linear thread-context IDs)
*6) removed of irrlicht types like s8,u8,c8 etc.
7) Fixed the getCPUMhz function to work on Linux (irr 1.8.x doesn't have that)
8) Various stack-smashing bugs found with stack-protector-all
9) Full memory leak and address protection analysis performed, finding two leak bugs in COpenGLDriver and OBJ loader
10) Thread-Safe debug Object Tracker, which can register objects (not only allocated from the heap, but also unreleased GL handles etc.) and unwind the stack using libunwind giving the location from which the lost resource (leak) originates
11) Introduced additional 3rd party tools, such as xx256Hash (super-fast non-crypto-secure hash) and UTF8 to WString conversion library.

Work not yet complete:
A) Separation of BaseMaterial (essentially Blend State) from actual shader programs
B) New Material State Tracking system
C) Shader Subroutines and Uniform Buffers
D) GPU Boned and Instanced Skinned Meshes
E) Quaternion only rotations
F) SDL2 device
Last edited by devsh on Mon Aug 14, 2017 6:57 pm, edited 2 times in total.
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

Bugfix release with linear and quadratic splines coming soon...
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

Release Notes For the Coming Release:
1) Fixed a padding issue in IMeshSceneNodeInstanced when using extraData with size not a 4 byte multiple
2) Added an ISpline class with two intepolating splines (Linear and Quadratic) with perfect arc-length parametrisation (and optimization hints for the parameter to arcLen functions) Note: A looped version of CQuadraticSpline is not ready yet
If anyone can drop me a line on how to solve the equations for the a,b coefficients of the quadratic splines such that every point in the loop has a continuous gradient... I will make it.
Do not expect Cubic Splines any time soon, the arclength function is impossible to find and requires numerical integration. And in turn the inverse mapping of arclen to parameter requires root finding where every single iteration needs the precise arclength for every parameter.
3) irrList, irrMap removed (irrArray planned to go as well)... irrAllocator not used anywhere but left behind for future custom STD::Allocators
4) WinCE device removed
5) Custom new/delete operators on SIMD classes no longer used, this is because IrrlichtBAW is an exclusively 64bit library.. hence the heap allocators on Windows and Linux always return 16byte aligned memory.
CuteAlien
Admin
Posts: 9628
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by CuteAlien »

2) I only know cubic splines, but probably quadratic the same. Line of a control point to the end-point is the same as the tangent at the end-point. The connection is smooth if the tangents before/after the connecting end-point are identical (aka - straight line through all 3 points involved). Users then don't control the control-points - only end-points.
edit: For arclenght of cubic splines I tend to cheat. Using a mixture of a fixed number of steps (like add lengths of lines at X points along the spline) + maybe some additional lines if the middle of one of those lines is too far off from the spline. It's not exact and there can be pathological cases - but still works good enough for most situations. And yeah - that hack was always feeling ugly, so I never added it to Irrlicht (which has some splines internally somewhere I think, but only the curve-calculation).
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

I think you're talking cubic hermite spline interpolation.

I dont use cubic because there is no closed form expression for arclength from parameter, so its very difficult and imprecise to find an inverse function of parameter from arclength.

Quadratic are still C1, ergo continuous gradient, BUT have a closed form expression for arclen involving only one sqrt, so I can use Newton Raphson iteration to find an accurate inverse of the function leading to arc-length parametrisation (One could skip the iteration and work out a power series expansion of up to 32 terms around some point, i.e. Taylor {around 0}, to give us the inverse function).

In quadratic splines, the cool thing is that if you specify the gradient at the start of the curve, the rest is given implicitly.
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

We're adding a cool thing to our binary builds, allowing for binary blob releases compatible with other Linux distros (especially older)

https://github.com/devshgraphicsprogram ... es/tag/1.0
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

We cancelled the 0.2.4 release as it was missing some essential stuff. So far we've also added the following,

A) Replaced list<> with an insertion sorted vector<> for keeping track of children and animators
B) Bumped required OpenGL version to 4.3
C) DSA Shader Uniform setting

Currently a new material state manager system is in the works...
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

Released version 0.2.5
https://github.com/buildaworldnet/Irrli ... tag/v0.2.5

Plans for version 0.2.6:
1) Finishing the OpenGL full state tracker
2) Changing the Material system (more flexible blending and better state-change sorting)
3) Decoupling baseMaterial from shader
4) Introducing OpenGL 4.0 shader subroutine support

Plans for versions 0.3.x:
1) Moving to UBOs and getting rid of setUniform
2) Atomic and ShaderStorage Buffers (ARB_image_load_store support as well)
3) Compute Shaders
4) Refactoring of Texture classes and pipeline (to support 1D textures and Multisample textures)
5) Bounding Box culling to avoid animating/boning meshes which are guaranteed to be off-screen
6) GPU Boning and Instanced Skinned Meshes
7) Replacing core::array with std::vector
8) Replacing irrTypes with stdint.h
9) booting out core::string and io::path
10) Getting rid of fast_atof.h
11) Order Independent Transparency Examples

Future Versions:
1) SDL 2 Device
2) Quaternion Only rotation
3) SIMD only 2D+ math
4) Parallel ASSIMP model import/export with optional GPUBuffer and Texture creation
5) Global mesh optimization function (do forsyth index optimization and re-quantization into vertex attribute formats with less bit-depth)
6) Better CPU to GPU Mesh conversion modes (making sure vertex attributes are interleaved)
7) Quantization optimization post-load for CPU mesh vertex attributes
8) Native irrlicht mesh format save and load + encryption (index and attribute buffers)
9) TCmalloc replacement for system allocator
10) Full-GPU compute shader scenegraph update and drawcommand generation
11) Driver state tracking across multiple threads
12) MultiDraw{Indirect} and some other Vulkan like features
13) AVX/AVX2 versions of all SIMD stuff with separate library builds
14) Nvidia Bindless, Sparse Textures and NV command-list
15) Vulkan Renderer
16) Android builds
17) Better multi-threading support
18) Extreme Deferred Rendering Examples

Sometime Later:
A) Atomic Reference Counting
B) Bumping C++ version to C++x11 and use C++x11 mutexes and maybe some other stuff
C) SSE3 SIMD Dual Quaternion Class
D) Dual Quaternion Skinning
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

The full OpenGL state tracker has been commited along with a SilverLining integration example.

We've also gained a pull request, and maybe more examples will be made by a new contributor on the horizon.
devsh
Competition winner
Posts: 2057
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK
Contact:

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.

Post by devsh »

Adding functionality for MSAA on render targets, example using renderbuffers ready for committing.

A new material struct is on the horizon with explicit specification of blending modes on all render targets.

The Render State system will get a wonderful update allowing for deferred change of GL states.
Post Reply