Releases: buildaworldnet/IrrlichtBAW
Shader Pipeline Preview and working CMake INSTALL target
Over 1000 commits have been added since the last release, API has changed significantly and powerful features were added:
- Full access to all Vulkan GLSL input/output types
- Compute Shaders without raw-OpenGL hacks
- SPIR-V shader ingestion
- Shader Compiler and Processor
- C++ templated image filters
- Virtual Texturing
Framework for Built-In Assets and GPU Resources started
You can add more GLSL Includes to IGLSLCompiler.cpp and more IAssets to CNullDriver.cpp
All Shader Resources and Compute Shaders
GLSL now compiles to SPIR-V.
You can use #include
in shader sources.
OpenGL Texture Views can be created.
Multibind finally used.
Most loaders and writers don't work (only PNG loader does) and the scene
namespace is non functional.
Raytracing Example
Example 22 now raytraces Mitsuba scenes with Radeon Rays 2.0, only 1 light supported for now.
Asset Pipeline, Linear Space Rendering, 3-Click Build, CEGUI and Bullet Extensions
Asset Pipeline finally merged, now you can load models and images in threads while maintaining a cache safely.
All Vulkan and OpenGL supported texture, storage image and vertex color formats are supported, and there are C++ inline functions to convert between most formats not covered by patents.
sRGB Framebuffer is now used and images are loading and reporting their color formats correctly.
Most dependencies done as submodules, CMake configure script updates them as needed.
If git, CMake, Python, PERL, OpenGL (and NASM on Windows) are present then this is an easy 3 click build.
New CEGUI and Bullet middleware integration examples, with a framework for future extensions provided by @manhnt9.
Minor things:
- Smooth Normal computation by @Przemog1
- Our own
smart_refctd_ptr
that mimicksshared_ptr
without the overhead and memory cost - Precompiled Headers are used on the Irrlicht and IrrlichtServer targets
- Got rid of >50% of the compiler warnings when compiling the library
- Linux now builds with Ninja and CodeLite
- Allocators used for many many things (can now have custom allocators back ICPUBuffers and Memory Files)
WARNING: As this is a pre-release, the convert2BAW tool is not operational yet!
Visual Studio 2019 and Clip Control
WARNING: THE PROJECTION CLIP-SPACE IS NOW IDENTICAL TO VULKAN'S !
Plus stuff to make VS 2019 work with our template code.
Pool Allocator Resize Bugfix
When Pool Address Allocator was being resized it lost some data and pointers
Concurrency and Memory Managment
NOTE: This release replaces 0.3.0-alpha11, the address allocator API has changed slightly to account for a few things. This is the last release before the Asset Pipeline merge.
Made IReferenceCounted atomically thread-safe.
Added:
AlignedBase
to force alignment and override new/delete for aligned alloc, and derived most classes from it.aligned_allocator
with typedefcore::allocator
replacement forstd::allocator
- Typedefs for most STL containers using the aligned allocator
- Default Streaming buffers for staging upload and downloads to/from the GPU
- Address Allocators abstracted away from the representation of the resource from which sub-allocations take place
- Address Allocator adaptors
- GeneralpurposeAddressAllocator that is 4x faster than glibc malloc in a single thread
- EventDeferredHandler, which is basically a GPU object garbage collector triggered by API fences
- Mapped Memory Range Flushing
- Example
31.SkinningDataBenchmark
- Object caches
- New CMake build system
- Arrow, Cylinder and Cone meshbuffer generation
- GLSL-source function generation class
- Debug line drawing extension
- Simplified and updated examples
- Threw out the old irr::os global static thread-unsafe timer (also inlined ITimer)
- BaW bugfix backports (setScale)
Removed:
- IEmptySceneNode
- Various ISceneManager legacy functions
Others:
- matrixSIMD4 implementation and fixes
- Disallow MSAA non-PoT sample counts (Vulkan requires)
- Bound Buffer Range tracking bug fixed
- Got rid of copy ctors in most IReferenceCounted derived classes (esp. MeshBuffer)
- Improved the robustness and performance of ext::BlurPerformer
- Mesh requantization loop bug
- PLY/STL import/export improved
Threading and Vulkan API stubs
IGPUBuffer API restructure, most probably the final arrangement of classes.
Skipped Version
- Fixed a padding issue in IMeshSceneNodeInstanced when using extraData with size not a multiple of 4
- Added an ISpline class with three interpolating splines (Linear, Quadratic and Quadratic B-Spline) with perfect arc-length parametrisation (and optimization hints for the parameter to arc-length functions) Note: A looped version of CQuadraticSpline will most likely remain broken
- 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 fix it
- irrList and irrMap are now removed (irrArray is deprecated as well)... irrAllocator not used anywhere but left behind for the future to create custom std::Allocators allocating from pools, with alignment and similar
- Children and Animator lists changed into sorted arrays for faster traversal of the scene graph.
- WinCE device removed
- Custom new/delete operators on SIMD classes no longer used as IrrlichtBAW is exclusively a 64bit library... hence the heap allocators on Windows and Linux always return 16byte aligned memory.
- Added the OpenGL 4.6 glext.h
- Minimum required OpenGL version is now 4.3
- ARB_separate_shader_programs partially supported now, with DSA-style uniform setting