To The Rescue of Your FPS - BAW Irrlicht (GIT repo, v 0.2.5)

Discuss about anything related to the Irrlicht Engine, or read announcements about any significant features or usage changes.

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

Postby devsh » Thu Mar 16, 2017 6:48 pm

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
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Sat Mar 18, 2017 5:25 pm

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)
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Fri May 26, 2017 9:06 pm

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.
cpp Code: Select all
gl_FragDepth = intBitsToFloat(floatBitsToInt(gl_FragCoord.z)+32768)+0.5*fwidth(gl_FragCoord.z);
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Thu Jun 22, 2017 9:17 am

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.
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Tue Aug 15, 2017 6:21 pm

We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Fri Aug 18, 2017 11:59 am

Bugfix release with linear and quadratic splines coming soon...
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Sat Aug 19, 2017 5:38 pm

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.
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby CuteAlien » Sun Aug 20, 2017 1:42 am

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.freenode.net
Code snippets, patches&stuff: http://www.michaelzeilfelder.de/irrlicht.htm
Free racer created with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
User avatar
CuteAlien
Admin
 
Posts: 8291
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany

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

Postby devsh » Sun Aug 20, 2017 3:45 pm

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.
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Mon Aug 21, 2017 5:49 pm

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/devshgraphicsprogramming/glibc-forward-compatibility-headers/releases/tag/1.0
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Thu Aug 24, 2017 12:07 am

No glibc compatibility headers yet, but a new relase

https://github.com/buildaworldnet/IrrlichtBAW/releases/tag/v0.2.4
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Thu Aug 31, 2017 10:52 am

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...
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

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

Postby devsh » Thu Sep 07, 2017 12:08 pm

Released version 0.2.5
https://github.com/buildaworldnet/IrrlichtBAW/releases/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
We chose to stream mesh data from Multiple OpenGL Contexts in many threads and do the other things, not because they are easy, but because they are hard! - JFK
User avatar
devsh
Competition winner
 
Posts: 1758
Joined: Tue Dec 09, 2008 6:00 pm
Location: UK

Previous

Return to Open Discussion and Dev Announcements

Who is online

Users browsing this forum: No registered users and 1 guest