More support for using the library from more than one activity
Improve debugging in DistortedScreen
Only insert the 'Mali r12' FBO queue fix if we actually are running on a Mali GPU with driver version <22. (then FBOQueue=4 - unless we manually overide this down to 1 - else, always 1)
New option to display current frame number in the upper-left corner of a DistortedScreen.
Lower requirements - now only OpenGL ES 3.0 is required; if running on such platform, OIT part of the API ( which is the only one which actually requires 3.1) is switched off.
Correct the Rubik app for the recent changes to the library's Node.
Size of the FBO internal to Nodes is now NO MORE taken from the Mesh's stretch values.Instead, the size is copied from child's FBO size (if there is one) or if the child is a leaf with texture in it (which is sizeless) then we get the default 100x100 ( which means we probably have to explicitly call Node.resizeFBO() )
Fixes for the merge.
Move the Effects.setStretch to Meshbase.setStretch
Move the 'pre-multiply mesh before applying any effects' thing from [(Xsize of texture, Ysize of texture) x Mesh's zFactor] to Effects.setStretch(sx,sy,sz)
Adjustment to Static's API.
Correct the Legal notice.
Rename all the classes that are not exported to application to 'Internal'
Move all Program-related stuff to Distorted. Now the DistortedEffects class is very simple.
Minor.
Massive: make the coordinate system agree with that of OpenGL (i.e. invert the Y axis).
Redefine the Vertex Region from (x,y,r,unused) to (x,y,z,r). This takes into account the 'Z', which makes it possible to warp only one side of a 3D Mesh like Sphere.
Also corresponding changes in applications.
New MeshQuad class.
Rename MeshObject to MeshBase.
Fully move the Meshes to their own package.
Progress with a more generic 'preprocess' stage of Postprocessing Effects.
Port some obvious stuff from OIT branch.
I am pretty sure this time the flashing issues on Mali T880 r12 driver are finally fixed.
The fix: a queue of FBOs render to, just like before, but this time in DistortedScreen we blit not the current FBO, but the one computed several frames ago.
This of course introduces a delay and uses more memory, but it appears to work and does not seem to have any effects on speed.
I spoke too soon, the ARM Mali flashing is of course not fixed yet. The previous commit fixed Triblur, but the bug is still reproducible elsewhere (only in the 'postprocessed' apps though).
This commit introduces a circular queue in case of the postprocessing FBOs - with little success though.
Finally properly fix the flashing on ARM Mali T880 GPU.
The flashing is caused by a 'full pipeline flush' (see DarkPhoton, https://www.opengl.org/discussion_boards/showthread.php/200754-Flashes-on-ARM-Mali?p=1291679&viewfull=1#post1291679 ). In order to combat it, first introduce the possibility that a single DistortedOutputSurface is backed up by more than one FBO. Then make DistortedScreen be derived from DistortedFramebuffer (which itself is derived from DistortedOutputSurface) and make it contain 3 FBOs, render to them in a circular queue fashion, and blit from a given FBO to the system FBO. The 'more than 1 intermediate FBO' queue prevents the pipeline flush....
Port all the 'non-controversial' changes from order-independent-transparency branch.
Fixes ported from the 'OIT' branch:
- remove counting of transparent pixels- various fixes for the Mali GPU
SSBO: something is working already, although we still get the 4 bytes back from the shader in reverse order ( so '17'=0x00000011 written by the shader becomes '285212672 = 0x11000000' )
First try at the SSBO (doesn't work - reads in the application don't pick up changes in the shader; crashes.
Up library requirements to OpenGL ES 3.1 (needed for the upcoming GL_SHADER_STORAGE_BUFFER)
Change of API: move setting the EGL context back to the APP.
Reorganize the way we add and remove all Effects (do it through DistortedMaster and is POSTPROCES - adjust Bucket and SORT Nodes).
Buggy: removing effects does not work.
Progress with support for Effect classes. Last error in the library before it compiles!
Progress with support for Effect classes.