buildaworldnet / irrlichtbaw Goto Github PK
View Code? Open in Web Editor NEWBuild A World fork of Irrlicht
Home Page: http://www.buildaworld.net
License: Apache License 2.0
Build A World fork of Irrlicht
Home Page: http://www.buildaworld.net
License: Apache License 2.0
Best idea would be to generate a 2D lookup texture as per Crytek.
Time to fill out the community crap.
Hi, I have tried to test your IrrlichtBaw engine but there is a crash on the node->addInstance(mat); when I execute the sample 08.HardwareInstancing.
I work with Irrlicht for a few years and I want to make some landscape with trees and grass ans I think instancing is the right way.
Compiled under Visual Studio 2015 without problems.
Maybe you know where is the problem.
Thanks for your good work :)
Give the ICPUMeshBuffers inside a score for contribution to Early/Hi-Z buffer and reorder them so that the first is the one likely to give the most occlusion
They are unimplemented for now...
What’s about using CMake as build system for Linux? (It actually works on other platforms, too.) It supports different compilers, automatic dependency management and makefile generation (or project file generation, if requested), and much more—virtually everything a build system needs. I have some experience with it, may convert CodeBlocks project to CMake easily; would you want such PR?
This is because Mobile GPUs do not have Transform Feedback
Did you ever manage to get SDL2 support for IrrBaw?
and fix up the MSAA example to give a choice between Renderbuffers and MultisampleTextures
Something maybe following this template
Involves:
sed
; the only question is whether to replace single tab with four spaces or vice versa?\r\n
and \n
are used, sometimes even in single file. Again, easy to fix with sed
. See #64In member function ‘float irr::core::vectorSIMDf::getLengthAsFloat() const’:
/usr/lib64/gcc/x86_64-suse-linux/5/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)
Find identical objects and merge them, and redirect the ISkinnedMesh references to the objects.
This is needed so that different meshes can use the same armature for GPU skinned mesh instancing and compute shader Boning.
It practically paves the way towards using an animation middleware such as SmartBody or Euphoria.
This is because each thread needs an OpenGL context and VAOs are not shared objects.
So use a per-context hash/cache of VAOs and use separate attribute binding.
Depends on #25 Implementing OpenGL State Tracking
Essentially add a special FileBlob type as an alias for ICPUBuffer blobs with filenames, which can yield IMemoryReadFiles :D
Explain the tutorials more in depth.
Some general GPU Programming Tips and Tricks would be nice in the wiki too, such as:
Troubleshooting and FAQ pages.
For higher performance, depends on the move to C++11
Most importantly:
This is the only exception to the rule of "We Don't Supply Rendering Techniques With The Engine" as there are the following reasons:
This is in stark contrast to things like Order Independent Transparency, Global Illumination, Direct Lighting and Shadows where multiple techniques exist of which none is overall best.
Compiler : GCC 6.3
Is is not permitted to use dynamic_cast
with the compiler flag -fno-rtti
Completing the ECF_ enum table and conversions.
A stub of this was going to be implemented in
IrrlichtBAW/source/Irrlicht/COpenGLDriver.cpp
Line 1185 in 0b457bb
However such a function would be slow, so the above COpenGLDriver member function would need its const E_MESH_DESC_CONVERT_BEHAVIOUR& bufferOptions
parameter removed, get moved into CNullDriver and have the function behave as if bufferOptions
has the default value EMDCB_CLONE_AND_MIRROR_LAYOUT.
Instead a ICPUMeshBuffer to ICPUMeshBuffer optimization function should be implemented as a function of scene::IMeshManipulator
Such a function would:
A) Create a new Index Buffer
B) For Triangle Meshes, carry out Forsyth (post vertex shader cache) or for Triangle/Line Meshes, Early-Z Optimization (or both combined with some weighin factors) of the index list to change the intra-mesh order of rendering the triangles
C) Reduce all index values by the minimum index buffer value and compensate by incrementing the BaseVertex offset
D) If index buffer does not repeat any vertices then get rid of it entirely (by reordering vertices in the vertex buffer) -- meshes with no index buffer behave as if the index buffer was simply 0,1,2,3,4,5
E) If index buffer is necessary reduce the index buffer precision from 32bit to 16bit if possible (if the new max index is less than 65536)
F) Create a new buffer to hold all vertex data
G) Re-quantize the vertex data, using two options (with 4D offset and rescale factor or not) i.e.
G1) Pass1: for each vertex attribute and channel/component gather the minimum, second smallest, penultimate largest and maximum value
G2) Pass2: see if using any smaller and compatibile format (byte-wise smaller and having equal or same amount of channels) every vertex attribute value in every channel can be represented to an acceptable precision either by NewFmt(x)rescale+offset ~ X for the offset and rescale factor version, and NewFmt(x) ~ X without
H) Copy and possibly reorder (look at pt. D) all vertex attributes to become interleaved while adding minimal padding (remember that byte offsets in the buffer need to be aligned to the size of the type of the vertex attribute)
H2) We could re-order the attributes' offsets (but not ATTRN binding points) so that padding is reduced by putting all the double-typed attributes first followed by all attributes which are multiples of 32bits (typeSizenumComponents), 16bits, then 24bit and 8bits
get/set Attribute would have to be extented by a parameter to take not only the vertexIx but also the instanceIx and do correct handling of attributes with an attribute divisor.
Also add a general swizzle template function for compile-time swizzling and a swizzle function for run-time swizzling.
Update: aesGladman, bzip2, lzma, zlib
Add: lz4
Followed by possibly: jpeglib, libpng
Naturally in the irr::asset namespace
Add 1bit to indicate whether the sampler is in comparison mode and 3 bits to hold a E_COMPARISON_FUNC value for the comparison operation
https://www.khronos.org/opengl/wiki/Sampler_Object#Comparison_mode
Note: after that we'd still have 8 bits left
To make sure that loading a blob with the incorrect password will not cause us to try and load garbage data, runAes128gcm needs to also perform GCM authentication.
Also, since GCM provides authentication, xxHash'ing of post encryption blob data is not necessary.
So if encryption is enabled, maybe the xxHash should be default set to 0 upon write and not even compared upon load in the validation function if blobheader specifies that the blob is compressed.
Create cached VAOs in the COpenGLDriver just like we create cached texture samplers, but associate them with a thread ID instead.
EVP_aes_128_gcm to be used to encrypt the data of the Blobs
https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption#C.2B.2B_Programs
OpenSSL to be moved into Irrlicht as a dependency
(could do same with lz4 and lzma)
There seems to be a window transparency issue going on in multiple examples, as can be seen on these screenshots, combined with my other issue this is 3 different examples that all have this problem.
As you can see in the dwarf's example the frame rates are rather low, with the discrete GPU I am now using, it should be very fast. Is there any other known issues with Irrlicht + Nvidia GPU's?
Need a per-thread (per-context) COpenGLStateManager and overrides for every GL function in COpenGLExtensionHandler which modifies global context state.
Very important for mesh optimization
Niko Irrlicht on original files + devsh on modified
DevSH on new files or completely changed files
Criss on his files
Fix up copyright notice in irrlicht.h and license
Which platforms has IrrlichtBAW worked on in production? (or in general?)
VAO Buffer Binds
Sampler Binds
Texture Binds
etc.
Just wondering if there has been any ongoing development on this?
I ran scripts/doc/irrlicht/makedocumentation.sh but didn't succeed. Here is the output:
out.txt
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.