Decouple (to a large degree) the OpenGL Library from Android.
Debugging the Node piraminds - print the whole piramind along with all the Effects attached to each Node.
Remove the requirement that not-postprocessed children in the render scene must be in the first bucket.Seriously simplify renderChildren().
Minor
license
FactorySticker: further improvements.
Properly detect which drivers are slow with compilation of TF programs.
Create the bandaged 3x3 icon: something works, the shape is drawn, but it's entirely black. Investigate.
Further progress with Bandaged 3x3.This requires a new API in DistortedNode to change the Mesh there.
new API to enable/disable face culling
Extra API for QuatHelper.
Minor.
Switch off the OpenGL error debug.
Important bugfix for the 'cube disappears when its mesh gets changed from nice to simple'.
The reason why recreating an InternalBuffer from within the 'create()' function doesn't work but doing the same from 'createImmediately' does work is not fully understood. Nevertheless the fix is correct in the sense that it...
Add DistortedProgram.stopUsingProgram()
Add a glGetError() call to the main render loop.
Add info about FPS.
Progress replacing the enum ObjetType with the class RubikObjectList.
Adjust ShapeChanging so that it can handle concave cubit faces.Now it is working also in case of the Ivy corner cubits.
Float vertices - scratchbook
Bugfix.
Major change: separate the notion of a TwistyObject and its Node. Now,
1) the Node stays when we change objects (this makes transitions faster)2) it's possible to just create an Object without adding it to the Screen (now app needs to explicitly create the Node and add it to its Screen itself)
Set possibility for the Postprocessing effects to eclipse the whole object or only work at the edges.
New postprocess effect 'Border' (not working yet) and adding it to the testing app 'Triblur'.
Move destroying most of statics from onDestroy() earlier, to onPause().
Reason: doing this in onDestroy() is too late, because when we have two activities, and switch between them, first the ending's Activity onPause() is called, then the starting Activity's onResume, then it's onSurfaceCreated(), then we insert all the effects, and only then the ending Activity onDestroy() gets fired off - and this might destroy the already enabled effects, like for example the Programs of the Postprocessing effects.
Move QuatHelpeer to distorted-library
Add debugging option to DistortedEffects.
Progress with RubikControl - sub-stages 1 and 2 of the 'whole' stage finished.
Actually reset Node's mLastTime back to 0 each time we attach it somewhere.
Move the information when was a EffectQueue last time evaluated from the EffectQueues all the way up to the Node which contains them.The point: we need to reset this time back to 0 every time we attach the Node (and thus start evaluating the Queues inside)
Only switch on 'BuggyUBOs' on Adreno 308 driver versions 331 and 415.
Workaround for the fact that one some devices (for example the LG K30's V@415 driver on the Adreno 308) the Glow halo wasn't visible.
Do not switch BuggyUBOs on Adreno 306, as I just saw a device - ZTE ZMax2 - which uses a 306 and driver V@100, which does not like packed UBOs...
Improve the 'buggy UBOs' detection.
- report the Graphics driver's Renderer and Version.- new Diamond, Skewb2 and Skewb3 meshes.
Always reset static variables in DistortedLibrary to default values.
Properly solve the issue with Qualcomm driver V@331 having buggy UBO size.
Correct comments; hide stuff from Javadoc.
Add a new API DistortedEffects.exists(long id)
Make per-component centers optional, controlled by API MeshBase.setUseCenters()
Bugfixes as a result of the Samsung Galaxy J4+ investigation:
1) By default, switch off transform feedback in the main program. Create a new API 'needTransformFeedback()' to call if someone still needs TF in the main program.2) lower the default max number of vertex effects to 30....
Remove all the calls to DistortedLibrary.setMax() (except for app 'Check', which explictly checks this API)
Introduce another Uniform Block Object. Now we can have much more vertex and fragment effects - up their default number to 100.
Plug two more memory leaks. It should be fine now.
Plug a major memory leak.Still one more leak remains - a similar UniformBuffer has to be markedForDeletion in the EffectQueues.
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.
Bugfix: fix a long-standing bug where switching on normal vector drawing would interfere with transparency.
Bugfix: we initially need to set the maxTextureSize to MAX_INT, because otherwise early (i.e. before a call to onSurfaceCreated) calls to setTexture() will fail.
Put new things to the StackFrame.
Fix the fact that the static DistortedEffects.mAllQueues was global, shared between all Activities.Completely replace this mechanism with a non-static list of links from a VertexEffect to all VertexEffectQueues this effect is a member of.
Fix the fact that we would keep adding new InternalBuffers to the 'Done' list - split 'invalidate()' and 'recreate()' to two separate actions!
Start creating the Tutorial Activity.
More support for using the library from more than one activity. Should be working now!
More support for using the library from more than one activity
1) Beginnings of support for using the library from more than one activity2) rename DistortedLibrary.onCreate() to onSurfaceCreated()3) (rubik) add Cambodia's flag.
Detect if the texture we are trying to upload is too large and return an error.
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.
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)
Speedup: remember the mesh associations of VertexEffects only once, when they actually change, and not every time we compute() a VertexQueue.
Simplify AssociationUniformBlock
Move the 'effect association' part of MeshBase to a separate class.
Introduce an UBO to the vertex shader holding info about mesh effect associations.
Correct an issue shown by Crashlytics: sometimes it would crash in the library in InternalOutputSurface.setAsOutput() when trying to 'read from null array' mFBOH[].
Fix normals in case of MatrixEffectScale / Shear.Fix displaying the normal vector.
Improve the Blur App to catch the bug where a small part of the Blur (and Glow) halo gets displayed on the other edge of the surface.
Improve debugging in DistortedScreen
Correct a subtle bug iin Framebuffer: in recreate(), we need to mark the FBOs as deleted on GPU; otherwise later we might delete them - and when we do, they might belong to another Framebuffer already!
Fix the fact that the Normal and OIT programs would not work after a period of being paused.
1) rename DistortedTexture's setColor to setColorARGB2) fix the Wiind app to take into account paused time3) fix the Dynamic so that if a single Dynamic is used more than once (in more than one effect) than it doesn't get adjusted for paused time multiple times.
Fixes for pausing and restarting.
Fixes for the previous commit.
Only compile the Full, Normal & OIT programs when they are actually needed.
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)
- Decrease FBO queue size to 3- do clean the output surface even if it doesn't have any children (in renderChildren)
New option to display current frame number in the upper-left corner of a DistortedScreen.
Do NOT sett viewport to (500,500) when pre-appllying vertex effects as that causes the first (few?) frames the pre-applied Mesh is displayed to be displayed in a wrong place on the screen.
Big change to MeshBase:1) split the list of Components into two: 'texture map' components and 'effect' components. Reason: imagine the Rubik Cube with a Solver. When setting up a initial position in the Solver, we need to be able to set texture maps of each individual face of each cubit....
First attempt at Deferred Mesh Jobs.Only apply(VertexEffect) supported for now.
Only show the OpenGL Error dialog when the underlying hardwarre does not support OpenGL ES 3.0.
Progress making it possible to apply Vertex Effects only to some Components of a Mesh.
Report a Crashlytics non-fatal if we fail to compile some shaders.
Have VERTEX_QUATERNION, VERTEX_ROTATE and VERTEX_SHEAR modify inflate vectors.Split Vertex attribute array into two (the one modified by preapply effects and the one not)
Change abortAll to removeAll in effectQueues (for consistency)Remove all pre-effects from the component queues when they are not used anymore.
Speedup for preapply
1 more fix for MeshBase.apply(VertexEffect). This still does not (fully) work though.
3 fixes for MeshBase.apply(VertexEffect).This still does not work though.
Progress (?) with Predeform: give up trying to render the Mesh in Activity1.
First attempt at the MeshBase.apply(VertexEffect) API.
Do not crash if we failed to compile some programs.
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.
Bugfixes in MeshBase:
1) improper buffer was being invalidated after apply and setTextureMap (TFO rather than VBO!)2) setTextureMap would only work if all components were being set
Speedup: only allocate one postprocessing buffer set of the quality we need, not all in one go.
1. library: new API DistortedNode.setProjection()2. cube: adjustments for Pyraminx.
Fix the memory test - we need to run one thing on the Graphics thread!