| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
FloatUtil.isEqual(ax, bx, epsilon), FloatUtil.isZero(bx, epsilon), ..)
|
| |
|
|
|
|
| |
instances.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
or due branching)
- AWT TextRenderer: Add throw new InternalError("fontRenderContext never initialized!"); FIXME!
- GLContextImpl.hasFBOImpl(): Fix serious NPE issue if extCache is null
- GLDrawableFactoryImpl.createOffscreenDrawableImpl(..):
- Fix NPE issue w/ null drawable
- Fix resetting GammaRamp by ensuring originalGammaRamp will be set at 1st setGammaRamp(..)
- AndroidGLMediaPlayerAPI14: Fix NPE: Use already resolved local referenced
- EGLDrawableFactory: Fix NPE: Only operate on non null surface!
- ALAudioSink.dequeueBuffer(..): Only resolve releasedBuffer elements if not null
-
|
|
|
|
|
|
| |
InternalError("hashCode not designed")
As long we don't use Object.hashCode() to idenitify the memory address, we can safeguard the code.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
c47bc86ae2ee268a1f38c5580d11f93d7f8d6e74)
- Change non static accesses to static members using declaring type
- Change indirect accesses to static members to direct accesses (accesses through subtypes)
- Add final modifier to private fields
- Add final modifier to method parameters
- Add final modifier to local variables
- Remove unnecessary casts
- Remove unnecessary '$NON-NLS$' tags
- Remove trailing white spaces on all lines
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
variations; PMVMatrix: Remove NIO buffer path, use backing-array only and FloatUtil direct.
- FloatUtil pptimized variants:
- mapObjToWinCoords (gluProject) passing 'P x Mv' for batch operations
- mapWinToObjCoords (gluUnProject) passing 'Inv(P x Mv)' for batch operations
- mapWinToObjCoords (gluUnProject) passing 'Inv(P x Mv)' and two winz values
for two ray picking resulting in two obj positions. (-> mapWinToRay)
- PMVMatrix
- dropped low performance NIO mode
- simply use common backing-array and fixed offsets directly
- drop ProjectFloat usage in favor of FloatUtil
- reduce number of temporary arrays
|
|
|
|
|
|
| |
Macro redefine 'texture2D -> texture'
was added _after_ the custom texture lookup insertion
causing GL3-core to fail.
|
|
|
|
| |
SAMPLE_COUNT is of type 'int'
|
|
|
|
|
| |
The texture unit has to be updated always,
since program maybe used by multiple regions and diff. texUnits
|
|
|
|
|
|
|
|
|
|
|
|
| |
deal w/ GL_DEPTH_TEST accordingly
Fixes VBORegion2PMSAAES2 no-depth-buffer usage
and allows user to control behavior w/o quering GL state.
If BITHINT_GLOBAL_DEPTH_TEST_ENABLED set:
- RegionRenderer.defaultBlendEnable: glDepthMask(false)
- RegionRenderer.defaultBlendDisable: glDepthMask(true)
- VBORegion2PMSAAES2 enables/disables GL_DEPTH_TEST, otherwise MSAA is corrupt.
|
|
|
|
| |
clarity and unique method naming
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Region Dirty Update
- Split dirty -> ShapeDirty + StateDirty,
where StateDirty forces re-rendering content
w/o geometry update as req. for 2-pass mode.
- Fix TextureSequence (GLMediaPlayer) usage in RegionRenderer / GLRegion*
- handle GL_TEXTURE_EXTERNAL_OES incl. Android ES3 bug
- inject TextureSequence's shader stubs
- shader: Use abstract lookup 'texture2D' -> 'gcuTexture2D'
- flip scaled colorTexBBox if TextureSequence 'tex.getMustFlipVertically()'
- TODO: Handle multiple TextureSequence shader programs!
- Fix Blending: GLRegion* / RegionRenderer / RenderState
- Disable/Enable depth-writing w/ blending
- Region impl. sets proper glBlendFunc*(..),
i.e. 2-pass:
- render2FBO: glClearColor(0f, 0f, 0f, 0f)
glBlendFuncSeparate(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA, GL.GL_ONE, GL.GL_ONE_MINUS_SRC_ALPHA)
- renderFBO: glBlendFunc(GL.GL_ONE, GL.GL_ONE_MINUS_SRC_ALPHA)
- User code shall not set glClearColor(..) for 2-pass anymore
- Graph-UI Demo
- UIShape:
- Add MouseGestureListener, combining MouseListener + GestureListener
- EventDetails -> PointerEventInfo
- PointerEventInfo contains objPos (ray-intersection) and glWin-pos
- Toggle:
- Separate color (on/off) if enabled
- Toggle on click if enabled
- SceneUIController
- Use PinchToZoomGesture and propagete same gesture to UIShape
- Use AABBox.getRayIntersection(..) using 'real' shape coordinates
for 1st picking.
- Use shape PMV for secondary picking (drag, zoom 2-pointer, etc),
see windowToShapeCoords(..)
- Sort shapes according to z-value (render: ascending; picking: descending)
- Only 'drag' if pointerId matches 1st pressed pointer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TextureSequence to Region (Demo: TextureButton)
Cleanup shader-program location/data update
- GLUniformData:
- Allow lazy data setup, as used for
RenderState.ProgramLocal, see below
- RenderState
- Separate data (pmv, weight, colorStatic) from
program-local uniforms -> add class ProgramLocal.
Reduces uniform location lookups, since
ProgramLocal is bound to Region impl.
- ProgramLocal.update(..) needs to write uniform data always,
since data is being used in multiple programs!
- No 'dirty' tracking possible, removed - see above.
- RegionRenderer
- Fix shader-selection: 2-pass programs differ from 1-pass!
- No shader-setup at init
+++
Add COLORTEXTURE + TextureSequence to Region
- Create color-texture coords in vertex-shader via region's bounding box (pass-1)
- Use color-texture unit in pass-1 if enabled (own shader program)
- Use TextureSequence in Region impl. providing all required data (unit + texture-name)
- Demo: TextureButton (a UIShape)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in shader; Update attributes and uniforms manually, drop ShaderState;
- Due to shader-switching,
'renderModes' are now local to Region, e.g. UIShape etc
- Remove RegionRenderer.renderModes
- VBORegion2P*:
- Use simple 2x float matrix for orthogonal P+Mv
- Cleanup shader
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in shader; Update attributes and uniforms manually, drop ShaderState;
- ShaderCode
- add int insertShaderSource(int shaderIdx, int position, Class<?> context, String path)
- insertShaderSource(..): pos==-1 -> append code
- VectorUtil
- add isVec3InTriangle3(..., float epsilon)
- add testSeg2SegIntersection(..., float epsilon)
- add testTri2SegIntersection(..., float epsilon)
- AffineTransform: Return result for chaining
- Font
- Add pixel precise 'getPointsBounds(final AffineTransform transform, CharSequence string, float pixelSize)'
- Rename getString*() -> getMetric*()
- OTGlyph: Release _points field, no more used
-
- Graph Triangulation
- Count additional vertices in: Triangulator, CDTriangulator2D
- OutlineShape:
- Allow skipping of 'transformOutlines2Quadratic', i.e. allow tagging
OutlineShape to be quadratic_nurbs via 'setIsQuadraticNurbs()'
- Clarify cleanup ot outlines in same method 'cleanupOutlines()'
- Count additional vertices ..
- Graph Shader:
- Start splitting and segmenting shader code for:
- pass1 / pass2
- features, i.e. sampleCont, color-channel, ..
|
|
|
|
|
|
|
|
|
|
|
| |
- Remove 'const' qualifier in shader graph code for non 'absolute' const values
- Use extension directive OES_standard_derivatives only for ES2.0, not ES3.0 (graph shader)
- Compare float w/ float literals, not int literals!
- Android Demo NEWTGraphUI2pActivity:
- Is a VBAA example, hence disable scene MSAA!
|
|
|
|
| |
Reduce text contrast by 1/10th allowing better AA ; GPUUISceneGLListener0A uses proportional window height font size and one label w/ 10pt
|
| |
|
|
|
|
| |
custom shader
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quincunx
Using poles only as sampling points is not as effective as: flipquad > rgss >> quincunx
Best quality would be 'wholeedge', i.e. average every supersample,
however performance is worse here.
References:
<http://fileadmin.cs.lth.se/graphics/research/papers/inexp_ms2005/>
<http://fileadmin.cs.lth.se/graphics/research/papers/masses2003/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
incl. FXAA2) ; Test exp. LineAA ; Misc Changes
- Revise VBAA
- Add border to FBO dropping MSAA
- This automatically gives AA for edges on FBO boundary
- Correcting ceil-diff, use object-diff instead of win-diff (diff := ceil(a)-a, w/ float a)
- Reorg shader - using includes to test diff. AA modes:
- [poles, wholeedge] * [equalweight, propweight]
- fxaa2
- Exp. LineAA (disabled)
- Test ROESSLER-2012-OGLES for detected rectangles only
- Test boundary line detection
See screenshots: <http://jogamp.org/files/screenshots/graphui/20140322/>
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
- New simple type Ray, denominating a .. ray
- Added PMVMatrix.gluUnProjectRay(..) similar to gluUnproject(..)
however, result is a Ray.
- Added AABBox.intersectsRay(Ray) ..
|
|
|
|
| |
tests - Cleanup VectorUtil (vec2/3 naming, remove dedundant functions)
|
|
|
|
| |
and document the same. ; Minor edits ..
|
|
|
|
| |
resize.
|
|
|
|
|
|
|
|
|
|
|
| |
Region: Add Frustum support, to drop 'out of sight' shapes
RenderState: Add hints, e.g. BITHINT_BLENDING_ENABLED,
allowing user code to toggle background color etc
Demos: Incomplete - WIP
- Reuse mapped object to window coords computed at reshape
- TODO: Use minimal Scenegraph for Graph-UI ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added final qualifier where possible
- Refined API doc
- FloatUtil:
- Add machine EPSILON
- fixed value and runtime computed (real machEps)
- incl. isZero(..), isEqual(..)
- Add makeRotationAxis(..)
- Moved from PMVMatrix for reusage
- Add makeRotationEuler(..)
- New, not recommended due to Gimbal-Lock
- Add copyMatrix[Column|Row](..)
- Add more PI variations and trigo-func float mappings
- Removed cross and normalize, use VectorUtil!
VectorUtil:
- Add copyVec*
- Add equals and isZero w/ and w/o EPSILON
- Add distance[Square]
- Add length[Square]
PMVMatrix:
- Removed 'destroy' method in favor of making most fields 'final'.
AffineTransform:
- Added AABBox transform
- Public multiply
|
|
|
|
| |
FloatUtil: Add DEBUG and description about Row-Major and Column-Major Order. AABBOX: Use FloatUtil.DEBUG for mapToWindow(..)
|
|
|
|
|
|
|
|
|
|
|
|
| |
Commit 183e1bc1868699b99eb9f9c8bf18d646d1120a48 only mapped object's bbox max/min points
to window space, which is wrong due to possible rotation in 3d space.
This commit adds AABBox.mapToWindow(..) method,
which correctly either uses 4 points of the bbox in 3d space (using center-z)
or all 8-points and creating a new bounding box.
The resulting width and height of this window bbox gives the
maximum amount of rectangular pixels for AA.
|
|
|
|
| |
(performance, reduce temp objects)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- RegionRenderer: Make 'blend' setup pluggable via new GLCallbacks
- 'GLCallback's for enable/disable, passed via 'create' method.
Add 'defaultBlendEnable' and 'defaultBlendDisable',
replacing previos fixed calls.
- GLRegion.draw(..) added API-doc notes about:
- Decorating call with RegionRenderer.enable(..)
- glClearColor impact and blending
- VBORegion2P*: Remove fixed glClearColor(..) call
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fragment position and count)
Inflating the FBO pixel-size of the region using a 'samples count'
multiplier to the projected window bounding box
allows controlling the AA distortion as well as defining the
fragment position due to it's grid-fitting nature, see below.
- Fix VBAA Distortions (FBO-size fractional delta)
Inflated framebuffer exceeds 'box-size * sampleCount'
since it must be the ceiling of the latter due to it's integer number nature.
This difference either must reflect the texture-coords -or- the
texture bounding vertices-box in the 2nd pass, otherwise a distorion will appear
which is quite visible explicit w/ text.
Using texture-coords is not suitable, due to floating point accuracy,
hence this patch extends the texture bounding vertices-box about the ceiling delta.
A comparible distortion existed with the previous implementation as well,
since it used an arbitrary FBO-size and hence the magnification was not grid-fitting.
Current implementation is grid-fitting, or at least matches the non-inflated grid,
since it inflates the original window-size of the region about samples-count.
- AA (Sample fragment position and count)
Using a sample-count w/ a multiple of 2 (currently 2, 4 and 8 are properly implemented),
based on the projected window bounding box will give the 2nd-pass fragment shader (AA)
a fragment-postion in center of the sample pixels exposing one AA pixel.
Hence we need to use the diagonal coords (NW, SW, ..) off by half a pixel
to reach the 1st sample-pixel .. and 1.5 pixels to reach the 2nd .. and so forth.
|
|
|
|
| |
Demos: Use local GLRegion for uncached text (perf.) ..
|
|
|
|
|
|
| |
- CDTriangulator2D.getContainerLoop(..) can exit at first 'inside' loop
- Make loops field 'final' and clear at reset.
- Add more 'final' qualifier
|
|
|
|
| |
GlyfCompositeDescript: Fix NPE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Proper FontSize -> PixelSize
VBAA Render-Mode Based on SampleCount (not a user-based texWidth)
- All Region based APIs now use 'sampleCount' instead of 'texWidth'
- VBORegion2PES2 calculates perspective FBO width/height considering the sampleCount
Proper FontSize -> PixelSize
- Font: Add getPixelSize(fontSize, dpi)
- Text* Demos/Classes: Use proper fontSize -> PixelSize
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
on uncached text line
Performance Note: ~800-1200 fps on uncached text line
Compared to c3621221b9a563495b4f54fe60e18e8db8cc57fb: ~600 fps
and previous impl. ~60fps.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix TypecastRenderer End-Of-Contour (EOC)
- Iterate through contour block up-until EOC-1,
not trying to create a new 'path' from EOC.
- Add cubic path
- Detect a cubic path and use it, i.e. on-off-off-on
- Fix Shape-Closing
- Close shape at head, not tail, since we add vertices from the head.
- Misc
- addShape*(..) uses Point parameter 'onCurve' field
reflecting proper handling.
Status:
Ubuntu Font: No artifacts
Lucida: Removed all artifacts, but for character 'M' !?
- No odd MID point
- Maybe inside-outside (inner) detection is buggy ?
|
|
|
|
|
|
| |
Minor edits:
- Add some docs to curve-shader and remove FIXME remark about gcu_Alpha, which will be used < 1.0.
- Font: Add more TTF references
|
|
|
|
| |
allow to either close-tail or head; OutlineShape/Triangulator: Pass 'sharpness' (very little effect though)
|
|
|
|
|
|
|
| |
Fix TypecastRenderer:
- Ensure quad shapes are closed!
- Revalidate point -> shape interpretation using orig. Typcast code
- Fix 'midPoint(..)' use float values
|
|
|
|
| |
impl. part)
|
|
|
|
| |
Better separation of cached and uncached regions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GL data directly incl. all index validations
Region:
- Remove redundant methods to make
OutlineShape the unique source.
- addVertex(..)
- addTriangles(..)
- Perform all index validations in addOutlineShape(..)
- Push OutlineShape's vertex data
and it's triangle indices directly to VBO.
GLRegion: Add clear(..) method, allowing to clear the region
for new data, i.e. OutlineShapes
|