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....
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....
Progress with Megaminx.
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.
Properly initialize DynamicQuat.
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.
Fixes for the Rex Cube (mostly works now)
Bugfix: fix a long-standing bug where switching on normal vector drawing would interfere with transparency.
Bugfix: always normalize the normal vector after modifying it, otherwise the next effect might not work correctly (Distort!)
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.
Improve the Skewb; set max components to 110 in MeshBase so that all of Professor Skewb's components fit.
Detect if the texture we are trying to upload is too large and return an error.
Do not crash if we try to map a texture component out of range.
New API for the library: add an empty texture component to a Mesh.Use this in thr Magic Cube to add empty texture components to some types of cubits.
Add an extra option to MeshPolygon: making triangles located around the vertices of the polygon smaller.
Progress with MeshPolygon.
First attempt at new mesh - Polygon. Unfinished (normal vector!), untested
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.
Add component centers to dmesh version 2.
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)
Speedup: remember the mesh associations of VertexEffects only once, when they actually change, and not every time we compute() a VertexQueue.
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)
Merge branch 'effects-ubo'
Introducing UBO to Effect Queues: step 1.
Move the 'effect association' part of MeshBase to a separate class.
Introduce an UBO to the vertex shader holding info about mesh effect associations.
Progress with the MeshFile app.
New effect VertexEffectDisappear
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.
Fix modifications of normals in VertexEffectScale and VertexEffectShear.
Progress with the Dino.
When blurring or glowing, we need to CLAMP_TO_EDGE the texture - otherwise part of the blur or glow could appear on the other end of the texture.
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.
Correct Inflate vectors in Triangles mesh
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 Distort was rotating normals outside of its region!
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.
Improve setting text size in Spinners (forgotten part).
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)
Library: introduce a new form of the MeshRectangular grid, where the individual rows and columns can be each of different width. This help reduce the number of vertices in objects as typically we are only interested at distorting a certain subregion.
Modify the Bean app to take advantage of this.
Reading a mesh from the .dmesh file works now.
Reading a mesh from the .dmesh file might work now. Checked on two small meshes.
Initial support for a writing a Mesh to a file and restoring it from a file (new class MeshFile).Untested!
new app icons; skeleton of reading/write a Mesh from/to a file.
- 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.
More progreess porting RubikCube.
Bugfix and new debugging methods in MeshBaseDeferredJob app rewritten to show the (just fixed) bug
Begin porting RubikCube to the new SingleMesh library. This will make rendering much faster - e.g. in case of Cube 5, instead of 98 renders of individual Cubits, there will be one render of the whole Mesh.
Extend the MeshBase.setTextureMaps API so that we are able to set a single texture map to a single texture component, or a few consecutive at a time, not necessarily starting from component 0.
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.
Library: make setEffectAssociation a deferred job (because we do copy the uniforms during join!)SingleMesh App: almost finished.
Progres with SingleMesh; bugfix in MeshBase.apply(Matrix)
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....
Update Myanmar flag.
DeferredJobs app/lib works now
Progress with DeferredJobs app/lib (still does not work though)
Progress with DeferredJobs app (proves with the library part does not work :)
Progress with DeferredJobs (apply, copy, merge & join should be working now - untested)
1. New icon for PreDeform app2. Library: advances with DeferredMeshJobs
Bugfix ( Mesh shallow copy wasn't working )
First attempt at Deferred Mesh Jobs.Only apply(VertexEffect) supported for now.
Correct VertexEffectQueue in the Mesh. There's no need to have a separate Queue in every component.