Fixes for the merge.
Merge branch 'empty-matrix-effects-in-the-center' into modern-empty-matrix-effects-in-the-center
Fix for MeshBase.apply()
New API: MeshBase.join() and a skeleton of an App to test it.
New Mesh 'Triangles' and updated Inflate & Generic apps to test it.
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)
New API MeshBase.apply(MatrixEffect[])
Rename MeshFlat MeshRectangles.
Making the Dialogs more consistent.
Adjustment to Static's API.
remove an unused, redundant API.
RubikCube: make finishingRotation more flexible (can now finish any rotation which did finish interpolating (nearly) to the end - and not only the single-static 'manual' rotation)
Dynamics App: fix moving Quat PointsLibrary: remove negating the Quat Points in the DynamicQuat in order to always go the shortest route.
library: Fix DynamicQuatcube app: progress with ScrambleEffects
fix a bug: in certain places when we use reflection, it needs to be getDeclaredMethod and not getMethod because the methods are not public!
Yes! new commit, a fix to a comment :)
Modify the 'convexity' param in Dynamics.
This finally satisfies the requirements of the 'Spin' effect in MagicCube: achieving constant speed ( by setting a 1D Dynamic's convexity to 0)
Add the 'convexity' param to Dynamics and the Dynamic app.
Improvements to comments and function names in Dynamics
Improve the Dynamic app.
Minor improvements in the Dynamics.
1. Change the API of Dynamic: split makeNowRunFor into two separate 'setDuration' and 'resetToBeginning'2. Major changes to the 'Dynamic' app so that we can check more about the Dynamics.
Invert the order of Matrix Effects. Now, just as in the other queues, the first matrix effect is actually the first to act on the object - not the other way around!
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 EffectMessageSender.
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.
Minor.
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)
Add correct normal vectors to the PINCH effect. The effect is now fully 3D.
Make the 'PINCH' effect fully 3D (define its acting line in terms of (latitude,longitude) angle pair).
Still, something is not fully working in the Earth app with the effect - investigate.
Add (simplified, approximated) shading to the Sink effect, i.e. move the normal vectors.
Remove unused imports.
Finish the Rubik app.
Refactor the 'Generic' app.
Avoid a potential crash on exit
Before we start rendering, effects can always be added.
Bugfix: default, MAX region cannot be of Float.MAX_VALUE radius - then in the shader we can have an overflow. Make it 1000000 in radius.
1) new 'Rubik' app (skeleton)2) MeshCubes: add support for custom texture mappings on each side (Rubik needs that!)
Some improvements to the Wind app - still does not look very realistic though :(
Correct Distort.
Make Distort truly 3D.
Fixes for some stuff discovered while making the Distort effect fully 3D:
- make MeshSphere's normal lengths be 1 (used to be 0.5)- make the Effect3D app display precise values of the Center and Region vars.
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).
Make the Sink effect fully 3D.
Correct the z-axis of the center of fragment effects (it was inverted)
Progress with the Earth app.
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.
Further fixes for the new fully 3D vertex region.
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.
Simplify MeshSphere by deriving it not from a regular icosahedron (which has a problem of a wiggly seam line at the 'change of date' in the back of the sphere) but something that at the back has a straight vertical border between triangles: a diamond-like 16-faced solid.
Make Matrix effects Rotate and Quaternion actually correct when it comes to the Z-axis. Also corresponding adjustments in apps.
Sphere: map the texture a bit better around the seam and the poles.
Fix (hopefully the last!) probelm with texturing the Sphere: the seam in the back.
One more improvement with texturing the Sphere.
Still one problem with texturing remains.
Further fix for the Sphere. Now hopefully only the texture mapping is wrong.
Some fixes for Sphere; still not completely ok though.
Add support for MeshSphere (add ability to display it in the 'Effects3D' and 'Inflate' apps).Still a bit buggy!
New MeshQuad class.
- new icon for the GLOW app- rename the BitmapTree app to ObjectTree
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).
Minor cleanups.
Properly clean up static varaibles in the Effect classes!
Improve computation of the thickness of the postprocessing halo - should be independent of the size of underlying object now.Still it is not completely ok, it appears to depend on the ModelView matrix (use the Effects3D app to rotate the object around Z-axis to see this)
MeshCubes: Correct texturing of side walls. Everything should be correct now.
MeshCubes: Correct texturing of side walls. (still not everything is right there)
Make the Effects3D app a bit more user-friendly.
Bugfix: make the Inflate distances equal in all 3 dimensions regardless of dimensions of the Mesh. (still MeshFlat's Z dim needs to be corrected)
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.
Translate the size of the Halo around postprocessed objects from 'number pixels around the object' (as held in the Effects themselves) to a float suitable for Inflating the underlying Mesh with the per-vertex Inflate vectors.
Progress with the Inflate vector in MeshCubes.
Pretty much works now - what remains is calibration.
Progress with Inflate (building block of postprocessing effects: the proper way of marking a halo around a Mesh)'Inflate' app testing the machanism. MeshFlat appears to be working, now we only need to fill up the per-vertex Inflate vector in the MeshCubes.
Minor simplifications in Mesh.
Added a new attribute to vertices of a MeshBase object: the vec3 'inflate' vector.This vector describes the direction where the vertex needs to be moved when we 'inflate' the whole mesh.If the mesh is locally smooth, this is simply the normal vector; otherwise (for example in the corners of the MeshCubes) - not....
Some simplifications in Meshes. Hide stuff inside MeshBase.
Fix the preprocess shader. This makes the 'Postprocess Tree' app look good again.