libraryexamples
Another attempt at fixing tthings on early Qualcomm OpenGL ES 3.0 drivers.
The previous version does not work on Adreno 405 driver V@100, present for example in a Asus ZenPad 8.Revert the packed 'ivec2' UBO in the vertex shader back to a 'std140' ivec4. This comes at a price if bumping into the bug on Qualcomm driver version 331 on Adreno 308 - i.e. Samsung Galaxy J4+ again....
Make the 'Component Associations' UBO (on most devices) twice smaller -use the 'packed' layout and 'ivec2' in place of 'ivec4'.
This forces us to dynamically probe the 'Stride' - number of 4-byte entities that the UBO's 'ivec4' takes - and correct the already-constructed UniformBlockAssociation objects in case this turns out to be different than the expected 2, i.e. tightly-packed....
Make per-component centers optional, controlled by API MeshBase.setUseCenters()
Remove UBO from the fragment shader and come back to the default of only 5 concurrent fragment effects. All because UBOs in fragment shader crash on Adreno 510 and Adreno 506.
Introduce another Uniform Block Object. Now we can have much more vertex and fragment effects - up their default number to 100.
Convert the Integer part (i.e. effect names and the two associations) of vertex and fragment shaders to Uniform Buffer Objects.Next: convert the last part, i.e. the float effect parameters.
Remove the 'binding' parameter from the UBO in the vertex shader - this is not part of OpenGL ES 3.0, only introduced in 3.1, and we want to be compatible with 3.0.Now we need to dynamically detect the UBO index and form a BlockBinding ourselves.
Update all the dmeshes to versions 2. Add the Dino dmesh.
Remove the 'inflate' vertex attributs from the Mesh and file format, and replace that with a per-component 'inflate centers' (which are as of yet untested)
Turn the vName, vEffAnd and vEffEqu integer array uniforms into a one ivec4.The point: ivec4s are always packed tightly in UBOs (which is going to be the next step)
View revisions
Also available in: Atom