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() )
Moving the Vertex and Fragment centers of effect to the center of the Mesh.
Fixes for the merge.
Merge branch 'empty-matrix-effects-in-the-center' into modern-empty-matrix-effects-in-the-center
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)
Rename MeshFlat MeshRectangles.
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()'.
Correct the Legal notice.
Rename all the classes that are not exported to application to 'Internal'
Fix several more apps for the 'center-of-matrix-effects-in-screen-center' change.
Massive: make the coordinate system agree with that of OpenGL (i.e. invert the Y axis).
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.
Fully move the Meshes to their own package.
Convert everythig to GLES31 (there were some GLES30 remnants)
Move all the knowledge about Vertex and Fragment effects to their respective classes.
Change of API: move setting the EGL context back to the APP.
Further progress with Apps: 29 (out of 31) compile now.
Further progress with Apps: 28 (out of 31) compile now.
Progress with support for Effect classes.
Simplify setting up DistortedScreen.
Revert "Major refactoring: convert the Matrix Effects to be independent of the resolution of the surface we render to."
This reverts commit d79a56d3bc6cc7a22b21abeb180353a1818bd6ad.
Revert "Convert a few more APPs to the new resolution-independent Matrix Effects."
This reverts commit 51554e4700774b72e18e97c7cc72ef887dfbf551.
Convert a few more APPs to the new resolution-independent Matrix Effects.
Major refactoring: convert the Matrix Effects to be independent of the resolution of the surface we render to.
Re-write the first 15 apps to work with this.
Convert (almost) all remaining Apps to the new API which avoids memory leaks with Surfaces.
Remaining problematic Apps: 15. FBO 16. Star Wars (both leak Tree FBOs) 22. SurfaceView (does not work at all after going to background)
New 'glClearColor' and 'glClearDepthf' APIs in OutputSurface. This fixes the 'transparency' regressions from last commit.
Speed up shaders (both compilation and execution) by explicitly enabling only the needed effects.
Fix Crawl transparency in StarWars.
Small improvements for StarWars, but the main issue - non-working transparency of the Crawl - not solved.
Fixes for z-fighting.
Make it possible to render each DistortedNode with adjustable OpeGL state (writeing to Color, Depth,Stencil buffers, DEPTH, STENCIL, BLENDING on.off, etc)
- workaround for the issue with flashing in StarWars- return number of objects rendered from OutputSurface.render() and use this in Olympic- rework tree isomorphism so that it now works even if we don't render the whole tree (and also we don't have to reset() the Tree anymore!)...
Fix issue with Blur / Multiblur apps
1. Make it possible to enable/disable DEPTH test when rendering to a Screen2. Using this, remove the 'Root' Node from StarWars.
A lot of different fixes.
A lot of issues still there:
1) if we only render part of the tree, tree isomorphism will sometimes not work correctly2) when we change Effects that are inside Trees mid-render, even if we detach() the affected parts of the Tree first, for the last frame the new Effects will be used...
New, cleaner way to create/destroy DistortedSurfaces.
Serious regression in StarWars (crashes!). Looks like the Node's internal FBO is being deleted and not re-created in time.
Change the the render() API!
THis introduces some regressions with the Effects3D app.
Preparation for change of the render API.
Major: change of API.
Split DFramebuffer into Framebuffer and Screen; introduce the 'DistortedInputSurface' and 'DistortedOutputSurface' interfaces.
Try using OpenGL ES 3.0 everywhere (but if device does not support it, try creating 2.0 context - this is important because of the emulator!)
Rename Grid to Mesh
New DistortedProgram class.
Fix Lint warnings, correct a lot of comments, adjust EffectListener interface.
Again change of API. Now instead of the 'DistortedEffects.draw() and DistortedTree.draw()' we have 'DistortedFramebuffer.renderTo()'
Change of names.
Change in the API: we always have to create a DistortedFramebuffer to render to.
onPause(): fix StarWars
Some improvements for StarWars's behaviour after onPause(), but it doesn't really work yet.
Remaining 'onPause-buggy' apps: StarWars, Save.
Major restructuring with DistortedTexture. One now is able to create Textures anywhere, even from a thread which does not hold the OpenGL context. Same for DistortedFramebuffers.
Hide the 'depth' of a DistortedTexture inside the library, so users do not get exposed to this weirdness.
Star Wars: release memory.
Complete the split DistortedObject -> (DistortedTexture,DistortedEffectQueue)
Rename various classes; fix a bug in Around the World.
Major change in API: separate the GRID from DistortedObject; completely remove classes derived from DistortedObject.
Turn the former 'FOV' app into 'Projection' app that also checks the (x,y) the camera looks at.
Minor stuff
Fix 4D and 5D noise, make noise N dimensional.
Cleanup, consistent variable names, minor details.
- Javadoc for EffectNames- make Matrix effects consistent with the rest (center of effect as last parameter!)- bugfix for yesterday's bugfix (we only want to send 'EFFECT_REMOVED' messages if it was really the Application that called 'abortAll' and not when we are cleaning up everything)
Further reduce the distortedObject's API - now only 26 methods, 1/4 of the 104 before the reorganization.
Major push towards simplifying DistortedObject's public API.All Fragment effects are using the new API - the 'DataND' marker interfaces.
Major push towards simplifying DistortedObject's public API.All MATRIX effects are using the new API - the 'DataND' marker interfaces.
1. new package 'message'2. Rename the 'Grid' classes to match
move data types, like FlatND and InterpolatorND, to a separate package.
Add License
Save PNG effect almost finished. Supporting App (hopefully!) completely finished.
What remains to be done: put actual saving of the Bitmap in a separate thread, away from the Graphics thread!!
Switch to sending a Context (rather than a GLSurfaceView) to the library.
Initial commit