Bugfix: create the Postprocessing buffer immediately.
1) bugfix computing Gaussian BLUR kernel (for odd radii, the last offset was incorrectly computed)2) introduce more advanced method of detecting BLUR halo (compute depths in a new way)
Roll back the recent MIPMAP work.
Preliminary support for MIPMAP levels of the postprocessing buffers. (doesn't work yet)
Node: Sort children IDs when generating their list for the Map of (List<Children IDs>,NodeData).This makes two internal nodes with the same children always isomorphic, no matter what is their order.
Release all TREE FBOs in Distorted.onPause().
Major:
1) in the Library, fix the fact that some applications (those that were creating their DistortedSurface objects outside of onSurfaceCreated or onSurfaceChanged) would not render after the activity went to background (press POWER to see that).2) in the Apps, call the new 'Distorted.onPause()' API to fix the above problem...
Reset EffectsPostprocess' ID back in 0 on Destroy.
Children now properly sorted into Postprocessing Buckets.
Messing around with the AttachDaemon (from now on a more generic DistortedMaster).
In preparation for thr SORT job that will let us sort the children Nodes into postprocessing Buckets.
Actually implement proper postprocessing Buckets.
Bugfix (before we couldn't call postprocess() more than once per frame)
Separate the Postprocessing Effects to their own DistortedEffectsPostprocess queue.This partly breaks Multiblur (to be debugged)
Minor.
Move the Postprocessing buffers to OutputSurface.
When detaching Nodes, do make sure we also cancel any ATTACH jobs that might be pending.
Improve Projection.
Bugfix - POSTPROCESSING FBOs weren't properly released!
Merging blurred surfaces mostly ok now (blurred image still appears a bit shifted down for some reason)
Bugfix (samplers need to be sent to shaders as INTEGER Uniform
It now automatically chooses OpenGL ES 2.0 and GLSL 100 or OpenGL ES 3.0 and GLSL 300.
Postprocessing effects will not work on OpenGL ES 2.0 contexts.
Make it more flexible; now it can run almost all apps on OpenGL 2.0 contexts; OpenGL 3.0 ( with GLSL 3.00) required for POSTPROCESSING.
Upgrade from GLSL 1.00 to GLSL 3.00 ESIntroduce separate BLUR1 and BLUR2 shaders, the second one marging (writing to gl_FragDepth still does not work)
Simplify BLUR shader.
New 'glClearColor' and 'glClearDepthf' APIs in OutputSurface. This fixes the 'transparency' regressions from last commit.
Progress with Multiblur.
This introduces some regressions with transparency (see: 'Different Bitmaps' and 'Around the world' )
Bugfix: we need to have DepthMask and ColorMask both fully on when clearing the FBO in Nodes!
Important bugfix in Dynamic - sometimes it would never stop interpolating and never send a FINISHED message!
Advances in Multiblur - breaks BLUR for now.
Now there's a single place one can have a look at all the Meshes being rendered to a OutputSurface: OutputSurface.renderChildren().This will need to get modified for per-object post-processing.
Minor
New method of rendering.Advantage: now there's one (well, ATM two, but I hope soon really in one) place where we can have a look at all the Meshes that are being rendered to a OutputSurface.This should help with proper per-object POSTPROCESSING effects like Multiblur.
1. Move to Gradle 25.0.02. Bugfix in DistortedNode
Simplify drawRecursive
simplify blitPriv()
Introduce Effects.blitPriv() (faster than previous drawNoEffectsPriv)
Speed up shaders (both compilation and execution) by explicitly enabling only the needed effects.
Preparation for shader optimization
Fixes for z-fighting.
Bug fix in RenderState.
Make it possible to render each DistortedNode with adjustable OpeGL state (writeing to Color, Depth,Stencil buffers, DEPTH, STENCIL, BLENDING on.off, etc)
New 'RenderState' class which will be used to change OpenGL state when rendering Nodes.
The only operation which is now enabled 'statically' in render() is blending.
1) stop culling back face2) reset OpenGL state beore each render (and not in onCreate)3) Improve Matrix3D so that we can test negative Scales
Exclude still more methods from public documentation.
Exclude certain public methods from Javadoc API.
Things seem to be working - switch off all debugs.
Bugfix in EffectQueues: if we interpolate something, then stop and again start interpolating, it used to use the old position (position from the moment when we stopped interpolating!) during the first run after the resume. Fix that.
A Lot of fixes for the issues uncovered by Olimpic.
Still at least 1 known issue: sometimes, when we re-add a Surface, some garbage pops up on the screen for a brief split second. Visible in Olimpic.
a few lame fixes for the issues uncovered by Olimpic but it is still wrong
fix for the first issue uncovered by the new Olimpic.
Introduce 3 types of Surfaces: System, Tree, User
Do not add Screen to the Surface lists.
Fix OutputSurface.resize(): before it couldn't be called mid-render.
- 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.
Simplify yesterday's refactoring.
Major: change of API.
Split DFramebuffer into Framebuffer and Screen; introduce the 'DistortedInputSurface' and 'DistortedOutputSurface' interfaces.
Introduce Renderable to the Tree.
Fix the MultiBlur regression
progress with DistortedRenderable.
This introduces a regression with MultiBlur!
progress with DistortedRenderable
Introduce DistortedRenderable, a base class for Texture and Framebuffer
Some fixes for issues discovered by the Multiblur app.
Beginnings of the 'Multiblur' app.
BLUR: implemented caching of the BLUR kernels.
Minor progress with Gaussian. Still need to cache the Weights and Offests tables.
Separable Gaussian Blur with linear sampling done.
Linear sampling implemented - i.e. blurring by a (2N+1)x(2N+1) gaussian kernel (centeral pixel + N pixels in each direction) requires exactly 2N + (N%2==1 ? 4:2) texture fetches.
Precompute the standard normal distribution.
minor.
Separable Box blur fully works now!
Separable Box blur (almost) works.
Small progress with Blur.
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!)
Manifest: require OpenGL ES 3.0.
Still one more problem in boundingVertices.
improve Postprocessing; new icon; minor things.
Postprocessing effects: remove support for Center
boundingVertices fully work now!
Debugging
Progress with getting Mesh'es bounding rectangle. Still doesn't quite work yet (visible : 'Cubes' app with a 0111 Mesh)
Correct construction of boundingVertices in MeshCubes.
Progress with getting Mesh'es bounding rectangle.
Correct a bug with Postprocessing Shortcut.
Move more intelligence to EffectQueuePostprocess.