| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
sed -i 's/javax\.media\.opengl/com\.jogamp\.opengl/g' `grep -Rl "javax\.media\.opengl" src`
sed -i 's/javax\.media\.nativewindow/com\.jogamp\.nativewindow/g' `grep -Rl "javax\.media\.nativewindow" src`
sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" src`
sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" doc`
Manually edited all occurences within make/**
|
| |
|
| |
|
|
|
|
| |
super.hashCode(), due to InternalError("hashCode not designed")
|
| |
|
| |
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Macro redefine 'texture2D -> texture'
was added _after_ the custom texture lookup insertion
causing GL3-core to fail.
|
|
|
|
| |
SAMPLE_COUNT is of type 'int'
|
|
|
|
|
|
|
|
| |
TextureSequence's fragment shader hash-code
Adding TextureSequence.getTextureFragmentShaderHashCode() allowing to use a cached hash-code (performance, interface usability).
Implemented in GLMediaPlayerImpl and ImageSequence.
|
|
|
|
|
|
|
|
|
|
| |
(recognize diff. TextureLookupFragmentShader and TextureSampler2DType)
Fix RegionRenderer's TextureSequence shader program selection,
i.e. TextureLookupFragmentShader and TextureSampler2DType are considered in the ShaderProgram hash key selector.
Now the proper ShaderProgram for different TextureSequence objects will be selected,
e.g. diff video pixel formats and/or texture sampler types.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
(UIShape blend clear-color, RegionRenderer initialized) ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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, ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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/>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
driven, ..) TODO: Transformations
SceneUIController handles shapes generic: Rendering, selecting and event traversing.
All data (transforms ..) are provided by UIShape.
UIShape:
- Dispatching NEWT MouseEvent's on MouseEventListener
- Separates the 2d-transforms for shape/region
and 3d transform, scale and rotation
GPUUISceneGLListener0A Demo code merely
aggregates the shapes and attaches listener, hence includes
the 'application logic'.
Working:
- picking any shape
- dragging, zooming, actions
TODO:
- Fix transformations, actually the rotations (button) look odd
probably due to 'unlucky' rotation center and axis.
+++
RegionRenderer: Removed Matrix ops, which shall be applied on PMVMatrix
|
|
|
|
| |
tests - Cleanup VectorUtil (vec2/3 naming, remove dedundant functions)
|
|
|
|
| |
and document the same. ; Minor edits ..
|
|
|
|
| |
resize.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
muls in rotateVector
Quaternion:
- rotateVector(..): Reduce multiplication count by 17
Graph:
- Outline
- add: transform
- fix compareTo .. use EPSILON
- OutlineShape
- add transform
- fix compareTo .. use EPSILON
- use Comparator<Outline> in sortOutlines
to avoid reversal of list
- Extract OutlineShapeXForm, pairing { OutlineShape, AffineTransform }
|
|
|
|
|
|
|
|
|
|
|
| |
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 ..
|
|
|
|
| |
processString(..) using ShapeVisitor interface (visitor pattern)
|
|
|
|
| |
(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
|
|
|
|
| |
Demos: Use local GLRegion for uncached text (perf.) ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
methods ; TestTextRendererNEWT00 make font/fontSize configurable, animate fontSize
|
|
|
|
|
|
| |
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
|
|
|
|
| |
storage, ease on GC
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
Glyph/Typecast* ; Misc Cleanup
Commit c3621221b9a563495b4f54fe60e18e8db8cc57fb introduced
create an OutlineShape per Glyph from it's data w/o going through Path2D.
Misc Cleanup: Remove unused code/fields, use private/final where possible.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
incomplete)
- OutlineShape
- Add DIRTY_VERTICES bit in triangulation,
which in turn solves the rendering artifact issue.
- transformOutlines(..) -> protected
- Note: Always pick triangles first, then vertices.
The former renders vertices dirty.
- Region
- Make triangles / vertices accessible
- Add 'validateIndices()' to add indices for triangles,
code moved from the GLRegion* impl.
Shall be refined later!
- GLRegion
- Passing 'RegionRenderer' instead of RenderState ..
reducing argument numbers and aligning all related
'render' methods while giving association to the RegionRenderer.
- Renderer -> RegionRenderer,
dropping 'intermediate' RegionRenderer
- Dropping draw() in RegionRenderer, should be issued simply
by GLRegion in a unique fashion.
- Dropping RegionFactory
Too simple code as-is, simply invoke in Region.create(..)
- Overall:
- Add 'final' qualifier
- Remove overloaded methods
where rither default args can be used
or a followup method call completes the 'intention'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Strategy Change:
- Font.Glyph itself holds it's OutlineShape
with it's default scaling.
Triangulation is done only once per glyph!
- A CharSequence produces a Region
by translating and scaling each Glyphs's OutlineShape.
This removes the need for re-triangulate - see above.
See: TextRendererUtil
- The indices of re-added Triangles are
offset to the new vertices (FIXME, seems not be be accurate yet).
- OutlineShape's vertices and triangles are reused if 'clean'.
- Simplified code
- Reduced copies
API Changes:
- OutlineShape, Region, ...: See above
- Removed TextRenderer, GlyphShape and GlyphString: Redundant
- Added TextRendererUtil to produce the Region from CharSequence
Result:
- Over 600 fps while changing text for each frame.
Previously only ~60fps max.
TODO:
- Region shall not hold the triangles itself,
but the indices instead.
This will remove the need to swizzle w/ vertices in the Region Renderer impl
and easies reusage of OutlineShapes.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
make/scripts/tests.sh
src/jogl/classes/com/jogamp/graph/curve/OutlineShape.java
src/jogl/classes/com/jogamp/graph/curve/Region.java
src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java
src/jogl/classes/com/jogamp/graph/curve/opengl/RegionRenderer.java
src/jogl/classes/com/jogamp/graph/curve/opengl/Renderer.java
src/jogl/classes/com/jogamp/graph/curve/opengl/TextRenderer.java
src/jogl/classes/com/jogamp/graph/font/Font.java
src/jogl/classes/com/jogamp/opengl/math/VectorUtil.java
src/jogl/classes/jogamp/graph/curve/text/GlyphShape.java
src/jogl/classes/jogamp/graph/curve/text/GlyphString.java
src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java
src/jogl/classes/jogamp/graph/font/typecast/TypecastGlyph.java
src/jogl/classes/jogamp/graph/font/typecast/TypecastRenderer.java
|
| |
| |
| |
| | |
Add reshapeNotify(..) for NOP PMV reshape notification
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Validate isGLES*() usage and definition ; Add and use ShaderCode.createExtensionDirective(..)
- Fix GLES3 Profile Mapping, i.e. GL2ES2 queries and mappings
- GLProfile: Add GL2ES2 -> ES3 mapping
- EGLContext: Reuqest major '3' for ES3
- EGLGLCapabilities/EGLGraphicsConfiguration: Consider EGLExt.EGL_OPENGL_ES3_BIT_KHR
- Validate isGLES*() usage and definition
- Fix BuildComposablePipeline's isGLES() code
- For GLSL related queries use isGLES() instead of isGLES2(),
which would exclude ES3
- Add and use ShaderCode.createExtensionDirective(..)
- Supporting creating GLSL extension directives while reusing strings from GLExtensions
- Minor cleanup of GLContextImpl.setGLFuncAvail(..)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit:
d75835796900cac602f7e5789601ffba0a27efe2 (Graph: More std. functionality (equals, clone) / Better in-place transformation (cubic -> quadratic))
Added a clone method, but did not implement Cloneable, meaning Object.clone() will
always throw CloneNotSupportedException. This method never returns anythng but null.
Signed-off-by: Harvey Harrison <[email protected]>
|
| |
| |
| |
| | |
Signed-off-by: Harvey Harrison <[email protected]>
|
| |
| |
| |
| | |
Signed-off-by: Harvey Harrison <[email protected]>
|