Put new things to the StackFrame.
Minor.
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!
Fix MeshBase.join()Only upload Mesh Buffers to GPU when we actually use them.
Further corrections.
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() )
Remove width & height from InternalSurface and move it to InternalOutputSurface.
Hide the InternalSurface class inside its package.
Convert RubikCube to the new V&F center schema!
Moving the Vertex and Fragment centers of effect to the center of the Mesh.
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)
Making the Dialogs more consistent.
Adjustment to Static's API.
remove an unused, redundant API.
Yes! new commit, a fix to a comment :)
Simplify the way applications can get notifications when an effect finishes.
Now, instead of the 'DistortedEffects.(de)registerForNotifications()' 2 APIs, we call a single 'Effect.notifyWhenFinished()'.
Progress with DistortedCube.
Correct the Legal notice.
Rename all the classes that are not exported to application to 'Internal'
Finally move the EffectQueues to their own package.
Cut another interdependency between the Queues and the rest: it is no longer necessary to add DNodes to PostprocessQueue to rearrange the Nodes by buckets. The rearranging is now done on next render instead.
Move all Program-related stuff to Distorted. Now the DistortedEffects class is very simple.
Make DistortedEffects oblivious of the effect types.
Cut one interdependency between the EffectQueuePreprocess and DistortedNode
Cut one interdependency between the EffectQueuePreprocess and DistortedEffects
Carve the 'children list' from DOutputSurface and DNode into a separate class of its own, DistortedChildrenList.
Split the DistortedNode class into two - DistortedNode and DistortedNodeData
Some simplifications to the Node.
Fixes for memory leak problems uncovered by the 'Rubik' app. (mainly: new method DistortedNode.markForDeletion)
We don't have to mark Textures for creation until we fill them up with data.
Correct the same bug for DistortedTextures and DistortedFramebuffers: only mark them for creation when we actually have everything ready, i.e. as the last statement in the constructor.
Correct a bug in DistortedBuffer: we only mark it for creation when we actually have all the data ready, otherwise it can happen that create(0 is called before setData() !
Improve locking in DistortedObject.DistortedMaster: slaves can be NULL !
Many things.
1) make the Dynamic.setDuration() able to be called AFTER the Dynamic has already been run. (and rename it to 'makeRunNowFor()' )2) remove the automatic removal of zero Effects from EffectQueues.3) adjust several Apps to cope with 2)4) add post-rotation to Rubik (still not finished)
Finish the Rubik app.
Avoid a potential crash on exit
Before we start rendering, effects can always be added.
Relax requirements on when we can call DistortedEffects.setMax().
Before this change one had to call it before creation of shaders and before any of the DistortedEffects classes got created.This commit removes the second requirement so now with setMax it's just like with enabling effects: it's best done in onSurfaceCreated.
Massive: make the coordinate system agree with that of OpenGL (i.e. invert the Y axis).
Correct the z-axis of the center of fragment effects (it was inverted)
Make the Fragment effects truly 3D: change their 4D 'region' into a 3D 'center' (a point in 3D) and 3D 'region' (which is now a set of 3 radii defining an ellipsoid around the center)
Also corresponding changes to the applications.
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.
Fix the bug where the postprocessed GLOW halo of a Cube would be of different colors depending on the order of rendring of the cube sides. (one needed to switch off BLENDing while preprocessing )
Fix the bug where the postprocessed halo would not work for the first few frames of each quality level (before this commit the bug was visible in the 'GLOW' app).
Properly clean up static varaibles in the Effect classes!
Bugfix for the situation when we would be BLURring an object, then we remove the BLUR and apply a GLOW, then remove the GLOW and apply BLUR again - the second BLUR would assume the color of the GLOW.
Important bugfix in MeshCubes for the Inflate vectors.