Page 8 of 18

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Thu Jul 14, 2016 11:25 am
by sodandk
test of dry/wet. see at 3:00

blocks can be moist and will dry over time, and as we put rain in soon, then stuff get moisty :-)
currently moist spreading can be seen around small lakes and ocean.

https://www.youtube.com/watch?v=g5axCbGkLWM

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Fri Jul 15, 2016 9:26 pm
by devsh
Roadmap for version 0.3:
1) Disable setShaderConstant and deal with uniform blocks just through uniform buffers (with suggested max buffer size of 16k, less than 12 blocks per shader stage and less than 24 in total)
2) stdint use throughout, u{8,16,32,64} and s{8,16,32,64} as well as c8 will be abandoned
3) SIMD matrix4x3 and matrix4 classes only
4) Counters of drawcall and other API calls
5) DrawIndirect (and MultiDrawIndirect)
6) Compute Shaders
7) Compute Shader LoD determination for all InstancedMeshSceneNodes at once (instead of 1 per 4 LoDs if ARB_transform_feedback3 or 1 at a time with ARB_transform_feedback2 only)

Version 0.4:
1) SIMD replacements for all 2D and 3D math classes
2) Corrected allocation and new/delete operators for all classes which use SIMD vectors etc.
3) custom std::allocator which allocates on 16,32,64 or 4096byte boundaries

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Tue Jul 19, 2016 11:16 am
by devsh
Skipping Transform feedback the 3.3 GL core version and running straight ahead to ARB_transform_feedback2 because it seems to be a much more sane version of the functionality

So the engine support will be for Nvidia GeForce 200 series, Radeon HD 4000 series, and Intel HD Graphics bundled with Ivy Bridge CPUs and up

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Thu Jul 28, 2016 6:26 pm
by bkeys
Hey you guys, I got IrrlichtBAW working with CMake not sure if that peaks anyone's interest in this thread. I do not have the link in my clipboard but it is in the same one I posted in earlier. Hopefully someone finds it helpful :D

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Fri Jul 29, 2016 9:42 am
by sodandk

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Tue Aug 16, 2016 10:50 am
by sodandk

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sun Sep 04, 2016 6:12 pm
by Virion
Really good work!

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sat Sep 10, 2016 5:19 pm
by The_Glitch
Hey Devsh can I uses hlsl with this it seems really great a lot of things that shader pipeline is missing?

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sat Sep 10, 2016 5:40 pm
by devsh
GLSL only, OpenGL only, Vulkan when Android support will be incorporated.

We're holding back the release until we can implement Texture Buffer Objects and fix animated skinning to GPU-powered.

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sun Sep 25, 2016 2:39 am
by christianclavet
Great! You got examples in the repo! Somebody found a way to integrate a GUI with this?

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sun Sep 25, 2016 9:08 am
by sodandk
We did our own GUI system.... We might release the GUI system at some point.

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sun Sep 25, 2016 5:07 pm
by devsh
Our GUI was written for old irrlicht, and fixed for our fork.

The ideal GUI could be drawn in one drawcall (trust me).

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Sun Sep 25, 2016 5:29 pm
by sodandk
Yup

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Mon Sep 26, 2016 4:29 pm
by devsh
GPU Skinning, Boning and Instancing of Skinned Meshes is coming

Re: To The Rescue of Your FPS - BAW Irrlicht (GIT repo, ver

Posted: Mon Oct 03, 2016 7:39 am
by pool
Hi devsh, tried compiling your irrlicht fork from the git repo and ran into a few issues using GCC 6.2.1 20160830 on Linux 4.7.4-1-ARCH x86_64

1) Compiling straight after cloning repo gave the following errors, looked SIMD related (not full output):

Code: Select all

In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/immintrin.h:33:0,
                 from ../../include/IrrCompileConfig.h:25,
                 from COBJMeshFileLoader.cpp:5:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/pmmintrin.h: In member function ‘float irr::core::vectorSIMDf::getLengthAsFloat() const’:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/pmmintrin.h:56:1: error: inlining failed in call to always_inline ‘__m128 _mm_hadd_ps(__m128, __m128)’: target specific option mismatch
 _mm_hadd_ps (__m128 __X, __m128 __Y)
 ^~~~~~~~~~~
In file included from ../../include/IMeshBuffer.h:16:0,
                 from ../../include/IMesh.h:10,
                 from ../../include/IAnimatedMesh.h:9,
                 from ../../include/IMeshLoader.h:8,
                 from COBJMeshFileLoader.h:8,
                 from COBJMeshFileLoader.cpp:8:
../../include/vectorSIMD.h:402:25: note: called from here
       xmm0 = _mm_sqrt_ps(_mm_hadd_ps(xmm0,xmm0));
              ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/immintrin.h:33:0,
                 from ../../include/IrrCompileConfig.h:25,
                 from COBJMeshFileLoader.cpp:5:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/pmmintrin.h:56:1: error: inlining failed in call to always_inline ‘__m128 _mm_hadd_ps(__m128, __m128)’: target specific option mismatch
 _mm_hadd_ps (__m128 __X, __m128 __Y)
 ^~~~~~~~~~~
In file included from ../../include/IMeshBuffer.h:16:0,
                 from ../../include/IMesh.h:10,
                 from ../../include/IAnimatedMesh.h:9,
                 from ../../include/IMeshLoader.h:8,
                 from COBJMeshFileLoader.h:8,
                 from COBJMeshFileLoader.cpp:8:
../../include/vectorSIMD.h:401:36: note: called from here
       xmm0 = _mm_hadd_ps(xmm0,xmm0);
                                    ^
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/immintrin.h:33:0,
                 from ../../include/IrrCompileConfig.h:25,
                 from COBJMeshFileLoader.cpp:5:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/pmmintrin.h:56:1: error: inlining failed in call to always_inline ‘__m128 _mm_hadd_ps(__m128, __m128)’: target specific option mismatch
 _mm_hadd_ps (__m128 __X, __m128 __Y)
 ^~~~~~~~~~~
In file included from ../../include/IMeshBuffer.h:16:0,
                 from ../../include/IMesh.h:10,
                 from ../../include/IAnimatedMesh.h:9,
                 from ../../include/IMeshLoader.h:8,
                 from COBJMeshFileLoader.h:8,
                 from COBJMeshFileLoader.cpp:8:
../../include/vectorSIMD.h:402:25: note: called from here
       xmm0 = _mm_sqrt_ps(_mm_hadd_ps(xmm0,xmm0));
              ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/immintrin.h:33:0,
                 from ../../include/IrrCompileConfig.h:25,
                 from COBJMeshFileLoader.cpp:5:
/usr/lib/gcc/x86_64-pc-linux-gnu/6.2.1/include/pmmintrin.h:56:1: error: inlining failed in call to always_inline ‘__m128 _mm_hadd_ps(__m128, __m128)’: target specific option mismatch
 _mm_hadd_ps (__m128 __X, __m128 __Y)
 ^~~~~~~~~~~
In file included from ../../include/IMeshBuffer.h:16:0,
                 from ../../include/IMesh.h:10,
                 from ../../include/IAnimatedMesh.h:9,
                 from ../../include/IMeshLoader.h:8,
                 from COBJMeshFileLoader.h:8,
                 from COBJMeshFileLoader.cpp:8:
../../include/vectorSIMD.h:401:36: note: called from here
       xmm0 = _mm_hadd_ps(xmm0,xmm0);
                                    ^
make: *** [<builtin>: COBJMeshFileLoader.o] Error 1
 
2) Tried compiing release mode with "make NDEBUG=1" and received the following:

Code: Select all

COpenGLDriver.cpp: In member function ‘virtual irr::scene::SGPUMesh* irr::video::COpenGLDriver::createGPUMeshFromCPU(irr::scene::SCPUMesh*, const irr::video::E_MESH_DESC_CONVERT_BEHAVIOUR&)’:
COpenGLDriver.cpp:1072:131: error: ‘dynamic_cast’ not permitted with -fno-rtti
         scene::ICPUMeshDataFormatDesc* origdesc = dynamic_cast<scene::ICPUMeshDataFormatDesc*>(origmeshbuf->getMeshDataAndFormat());
                                                                                                                                   ^
COpenGLDriver.cpp:1287:28: warning: unused variable ‘allocatedGPUBuffers’ [-Wunused-variable]
                     size_t allocatedGPUBuffers = 0;
                            ^~~~~~~~~~~~~~~~~~~
COpenGLDriver.cpp: In member function ‘virtual void irr::video::COpenGLDriver::drawMeshBuffer(irr::scene::ICPUMeshBuffer*, irr::video::IOcclusionQuery*)’:
COpenGLDriver.cpp:1548:139: error: ‘dynamic_cast’ not permitted with -fno-rtti
     const scene::ICPUMeshDataFormatDesc* meshLayout = dynamic_cast<const scene::ICPUMeshDataFormatDesc*>(mbAsCPUMB->getMeshDataAndFormat());
                                                                                                                                           ^
COpenGLDriver.cpp:1603:16: warning: enumeration value ‘ECT_DOUBLE_IN_DOUBLE_OUT’ not handled in switch [-Wswitch]
         switch (meshLayout->getAttribType(attrId))
                ^
COpenGLDriver.cpp:1603:16: warning: enumeration value ‘ECT_COUNT’ not handled in switch [-Wswitch]
COpenGLDriver.cpp:1687:151: error: ‘dynamic_cast’ not permitted with -fno-rtti
                 COpenGLSLMaterialRenderer* shaderRenderer = dynamic_cast<COpenGLSLMaterialRenderer*>(MaterialRenderers[Material.MaterialType].Renderer);
                                                                                                                                                       ^
COpenGLDriver.cpp: In member function ‘virtual void irr::video::COpenGLDriver::drawMeshBuffer(irr::scene::IGPUMeshBuffer*, irr::video::IOcclusionQuery*)’:
COpenGLDriver.cpp:1733:85: error: ‘dynamic_cast’ not permitted with -fno-rtti
     COpenGLVAO* meshLayoutVAO = dynamic_cast<COpenGLVAO*>(mb->getMeshDataAndFormat());
                                                                                     ^
COpenGLDriver.cpp:1844:151: error: ‘dynamic_cast’ not permitted with -fno-rtti
                 COpenGLSLMaterialRenderer* shaderRenderer = dynamic_cast<COpenGLSLMaterialRenderer*>(MaterialRenderers[Material.MaterialType].Renderer);                                                                                                                                       
 
3) Disabled -fno-rtti flag and tried make again:

Code: Select all

g++ -Wall -pipe -fno-exceptions -fstrict-aliasing -g -D_DEBUG -I../../include -Izlib -Ijpeglib -Ilibpng -I/usr/X11R6/include -DIRRLICHT_EXPORTS=1  -c -o aesGladman/sha2.o aesGladman/sha2.cpp
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘13096744586834688815ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
 };
 ^
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘16840607885511220156ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘10538285296894168987ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘12329834152419229976ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘15566598209576043074ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘9286055187155687089ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘11230858885718282805ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘13951009754708518548ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘16472876342353939154ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘17275323862435702243ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘10970295158949994411ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘12119686244451234320ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘12683024718118986047ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘13788192230050041572ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘14330467153632333762ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘15395433587784984357ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘9350256976987008742ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘10552545826968843579ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘11727347734174303076ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘12113106623233404929ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘14000437183269869457ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘14369950271660146224ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘15101387698204529176ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘15463397548674623760ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘17586052441742319658ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘9568029438360202098ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘10144078919501101548ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘10430055236837252648ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘11840083180663258601ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘13761210420658862357ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘14299343276471374635ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘14566680578165727644ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘15097957966210449927ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘16922976911328602910ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:392:1: error: narrowing conversion of ‘17689382322260857208ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp: In function ‘void sha512_hash(const unsigned char*, long unsigned int, sha512_ctx*)’:
aesGladman/sha2.cpp:426:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if((ctx->count[0] += len) < len)
        ~~~~~~~~~~~~~~~~~~~~~~~^~~~~
aesGladman/sha2.cpp: At global scope:
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18374686479671623680ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
 };
 ^
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18446462598732840960ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18446742974197923840ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18446744069414584320ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18446744073692774400ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18446744073709486080ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:448:1: error: narrowing conversion of ‘18446744073709551360ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:456:1: error: narrowing conversion of ‘9223372036854775808ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
 };
 ^
aesGladman/sha2.cpp:514:1: error: narrowing conversion of ‘14680500436340154072ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
 };
 ^
aesGladman/sha2.cpp:514:1: error: narrowing conversion of ‘10473403895298186519ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:514:1: error: narrowing conversion of ‘10282925794625328401ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:514:1: error: narrowing conversion of ‘15784041429090275239ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:545:1: error: narrowing conversion of ‘13503953896175478587ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
 };
 ^
aesGladman/sha2.cpp:545:1: error: narrowing conversion of ‘11912009170470909681ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
aesGladman/sha2.cpp:545:1: error: narrowing conversion of ‘11170449401992604703ul’ from ‘long unsigned int’ to ‘sha2_64t {aka long int}’ inside { } [-Wnarrowing]
 
I'm guessing my gcc version is too recent for irr 1.8.3. Latest Irrlicht trunk revision compiles fine - I will try to look into this later.