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.
Progress with the MeshFile app.
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.
Only show the OpenGL Error dialog when the underlying hardwarre does not support OpenGL ES 3.0.
Preparation for saving/reading Meshes to/from a file.
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.
1) Cube: convert it to the latest library. Main difference: objects are rendered better, individual cubits have rounded corners.2) Examples: some adjustments to MeshJoin & Predeform3) Library: fix a bug in main_vertex_shader's 'degree' function, which didn't work proprely in case of a vertex which was exactly at the center (i.e. vector PS was zero)
In library: allow a mixture of a deep and shallow copy of a Mesh ( mVertAttribs1 might be copied deeply or shallowly, mVertAttribs2 are always copied deeeply).Port RubikCube to the new library.
Fix VertexEffectRotate.'MeshJoin' app now back it its functionality from 'master'
Some progress with 'MeshJoin' app.
Change 'tag' to a more appropriate name - 'association'.
Introduce 'tags' (soon to be renamed to 'associations') to Mesh and VertexEffect.A 'tag' is a way to associate a Vertex Effect only to a subgroup of a given Mesh's vertices (more precisely, only to an arbitrary subset of its Components)
Fix licenses :)
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 the Predeform app; deepCopy for the Meshes; various fixes.
Progress (?) with Predeform: give up trying to render the Mesh in Activity1.
First attempt at the MeshBase.apply(VertexEffect) API.
Remove the MeshBase.{set/get}Stretch API altogether.
Fix for a crash when exiting an app:
Activity.onPause() -> MessageSender.stopSending sets mThis to null, then a last message gets sent and a crash in newMessage().
Fix this by
1) making the Message inner class static (so that we can create a new one without a reference to mThis)...
Change the Postprocessing effects: separate the radius and the halo.Reason: we needed a way to specify the size of the halo around a postprocessed object; before it was automatically (and not very correctly) computed from the radius - before we knew the size of the object's bounding box, so this automatic computation was possible. Now we're removing the MashBase.getBounding(0 API, so the size of the halo has to be explicitly given by the user. This way is more correct anyway and gives the user more control (as the Multiblur app proves!)...
Simplify a bit the place where we got a crash once.
A lot of changes.
1) main vertex shader: remove support for degree_object. This functionality will hopefully come back when we introduce other than circular regions.2) MeshBase: remove the need to set a Bounding box (this is the point of the whole thing - we wanted to get rid of this so that the advances in MeshJoined will be easier)...
new VertexEffectShear
new VertexEffectScale
bugfix for VertexEffectRotate
new VertexEffectRotate
Add the first two VERTEX 'pseudo-matrix' effects: VERTEX_MOVE & VERTEX_QUATERNION i.e. implementations of those two MATRIX effects in VERTEX queue.
The point(s):
1) preparation for the upcoming MeshBase.preApply(VertexEffect effect) API that's going to supersede the current much more limited MeshBase.apply(MatrixEffect effect)...
Do not crash if we failed to compile some programs.
Do not allow more than 15 characters in the NAME.
Move to AndroidX, target API level 29.
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.
Progress implementing RubikCube.retObjectString()
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
More support for the 3x3x3 Solver: more of the actual 3x3x3 solver mechanism.
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!
Fixes for the Projection matrix, FOV.
There was a confusion between the Projection of the Node onto the Screen, and the Projection of the Cubits on the Node.
Progress with of Pyraminx.Bugfix for joining a single Mesh!
Improve setTextureMap.
Make MeshBase.setTextureMap() work.
Minor.Looks like MeshBase.join() actually works.
Fix MeshBase.join()Only upload Mesh Buffers to GPU when we actually use them.
New MeshJoined.Test app says it's not working - bug in MeshBase.join().
Further corrections.
Port Listener to the new setStretch-less API.
Convert Projection to not use the depreciated MeshBase.setStretch() API.
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() )
Minor.
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.