Postprocessing buffers mBuffer[] are now shared among all postprocessing operations. This saves a lot of memory, but also means that when doing each particular postprocessing, the textures backing up the mBuffer might be too large. We need to fix two things here: when outputting to those too large textures, we need to adjust the Viewport, and when binding those too large textures as input - we need to adjust the TexCoords to compensate....
SSBO: now we have a more-or-less correct running average of the count of transparent fragments over the last few frames.
SSBO: correct various things.
SSBO: handle the fact that we might run out of space in our SSBO if we keep creating new Surfaces.
SSBO: counting of transparent fragments more or less works now. Still the counters are zeroed out in the wrong place - every time we start rendering something to a given Surface, rather than once per frame.
SSBO: more and more works...
SSBO: something is working already, although we still get the 4 bytes back from the shader in reverse order ( so '17'=0x00000011 written by the shader becomes '285212672 = 0x11000000' )
First try at the SSBO (doesn't work - reads in the application don't pick up changes in the shader; crashes.
Simplification in PostprocessEffects
Move all the knowledge about Vertex and Fragment effects to their respective classes.
Progress with support for Effect classes.
Beginnings of the GLOW unit test.
Move on to Stencil on both stages of the BLUR + separate 'blit with depth'.
This works wonders on Nexus 5X ( r=50 quality=HIGHIEST 1,4,8 cubes: 59.3,43.6,41.0 FPS! ) but it somehow fails to clear the DEPTH and STENCIL buffers on Nexus 4....
Move to a new way to detecting depth of postprocessing halos.This switches off stenciling (hopefully temporarily!)
Use Transform Feedback to (optionally) display the Normal vectors.
Dynamic display of bounding rectangles (with coords computed by Vertex Shader and gotten with Transform Feedback) works now.
Major problem: the glMapBufferRange() slows doewn rendering in a major way. Multiblur's FPS:
Nexus5X : 35.4 before -> 12.6 after...
Make the Feedback APP work again.
Revert "Progress with TransferFeedback app - introduce two modes: USEPOINTS 'true' or 'false'."
This reverts commit 21304c55380460c5882b789ea13eb00ffd9a686c.
Revert "This commit (and reading the OpenGL ES 3.0 spec) pretty conclusively proves that, sadly, Nexus 4's Transform Feedback implementation is incomplete (doesn't work with GL_TRIANGLES primitiveMode)"
This reverts commit 5ba19814852de1762e452662a13c4944792014a9.
Revert "Some progress with Transform Feedback. Still many bugs all over."
This reverts commit 79921db22e4ff5a3b2e6e3466a39445f5607a695.
Some progress with Transform Feedback. Still many bugs all over.
This commit (and reading the OpenGL ES 3.0 spec) pretty conclusively proves that, sadly, Nexus 4's Transform Feedback implementation is incomplete (doesn't work with GL_TRIANGLES primitiveMode)
Progress with TransferFeedback app - introduce two modes: USEPOINTS 'true' or 'false'.
On Nexus5X, it works with 'true' and 'false'. On Nexus 4, it works with 'true', but returns GL_INVALID_OPERATION with 'false'.
Progress with moving the Transform Feedback functionality from the APP to the library.
Simplifications.
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)
Merging blurred surfaces mostly ok now (blurred image still appears a bit shifted down for some reason)
Simplify shaders.
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.
Simplify drawRecursive
simplify blitPriv()
Introduce Effects.blitPriv() (faster than previous drawNoEffectsPriv)
Minor
Speed up shaders (both compilation and execution) by explicitly enabling only the needed effects.
Preparation for shader optimization
Back out the last change.
Effect-independent normals.
Preparation for effect-independent computation of the nermal vectors.
minor.
Separable Box blur fully works now!
Separable Box blur (almost) works.
Small progress with Blur.
Define float precision in Vertex Shaders to the same like in Fragment Shaders.
improve Postprocessing; new icon; minor things.
Progress with getting Mesh'es bounding rectangle. Still doesn't quite work yet (visible : 'Cubes' app with a 0111 Mesh)
Naive implementation of blur works now!
Blurred image visible now!
NUM_POSTPROCESS corectly #defined now.
Further progress with Postprocessing. Now the missing bits are:
- implement Distorted.getFBO()- implement Distorted.clean()- improve compilation of DistortedPrograms so that the NUM_POSTPROCESSING and names of POSTPROCESSING effects will be #defined.
progress with Postprocessing.
Beginnings of support for postprocessing Effects.
Add 3rd dimension to the Deform effect.
Improve the Deform app
DEFORM: add support for Regions
Polish up DEFORM.
re-write the deform effect
rearrange comments
New vertex effect 'PINCH'
Complete moving center to 3D.
re-generate noise after passing each Point.
1. Workaround for th issue that my shitty Nexus 4 crashes while compiling the vertext shader (actually the wave function)2. Improvements to the Dynamics app
minor stuff
Make the WAVE effect 5D (extra parameter 'offset')
swap the 2nd and the 3rd parameters in the WAVE effect and improve comments for the WAVE user API.
Switch off the pre-compulting of sin and cos in CPU as it turns out that those two are single-instruction functions on any modern GPU ( http://www.gamedev.net/topic/322422-number-of-gpu-cycles-for-cos-and-sin-functions/ - link form 2005 ! )
Improve the comment the WAVE effect.
Correct one more issue with computation of WAVE.
Correct one issue with incorrect shadows in WAVE when V.z <0 .
Now we can add up the WAVE effect to others with smooth shading! Remaining issues:
- when angle A < 0, the shades are wrong- sometimes (check with the 3D vertex & Fragment effects' app) we get black spots at seemingly random points. Looks like computational instability again.
Shades in the WAVE effect fully working, if the effect is the only one.
Remaining: combine the shades with other effects!
Shades of the WAVE effect (almost!) working.
small improvements in DISTORT
Better normals in DISTORT
Vertex positions fully 3D now. Remaining: normals!
Preparation to make the WAVE effect fully 3D
Adjustments for EffectQueueVertex.postprocess()
Improvements for WAVE
Beginnings of the WAVE effect.
Correct an important bug in the vertex shader.
b = 1/a if a!=0, 1 otherwise was incorrectly computed as b = 1.0 / (a+1.0-sign(a)). This, when 0<a<2^-24, suffers from 'round-off error': then a+1.0 = 1.0 (sic!) thus b = 1/0 !.
Correct way: b = 1.0 / ( a - (sign(a)-1.0) )
Fix for Bug #17: Regions of Fragment Effects migrate.
Fix is: don't send vertex position and the Fragment Effect region to the fragment shader already multiplied by the ModelView matrix (that introduces the imprecise interpolation because of the projection effect) but simply send both of them in local coords.
Remove the MACROBLOCK Effect altogether.
Fix for Bug #16: When rotated at an angle, surfaces get increasingly transparent.
This also fixes the saturation, chroma, alpha + contrast effects, while completely breaking macroblocks :)
Fix for Bug #18: DISTORT effect: disappearing triangles
Fix for Bug 19: SWIRL effect: mess if Center out of Region.
revert latest changes to the fragment shader.small things in DistortedObjects.
some improvements for the way we test DistortedObjects.
fix fragment effects :)
remove the 'Color' vertex attribute.
switch precision to low in fragment shader
Make the 'deform' effect continuous when 'center' point passes through (0,0) i.e. middle of the Object.
fix in vertex shader
Bugfix in vertex shader (vertices were shot into outer space if P==S, i.e. if center point was exactly equal to the vertex being computed)
Progress with Vertex3D
Important bugfix in the vertex shader: there was division by 0 in case Center point was on the edge of the Object, resulting in some vertices being shot into outer space.