aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp
Commit message (Collapse)AuthorAgeFilesLines
* Debug.debugExplicit(): Define and use explicit symbol debug flag; Use it for ↵Sven Gothel2023-09-165-8/+18
| | | | certain debug output to keep most silence for debugAll()
* Graph Font + Glyph: Fix whitespace definition: Include 'no original ↵Sven Gothel2023-09-011-7/+9
| | | | | | | | | | | | | | underlying shape' and add API doc Regression was introduced with commit 920e529516bb264f04138ed1caca80d4925e3773 'Robust detetection and API definition of non-contour/whitespace Glyphs'. Issue was mistaken a glyph as undefined if not having an underlying shape, which is true for some fonts (e.g. 'space'). +++ Also Use post table's name if no underlying shape exists.
* Graph Font: Make TypecastRenderer.DEBUG package private to be used by ↵Sven Gothel2023-08-281-1/+1
| | | | TypecastFont
* Graph Font + Glyph: More robust detetection and API definition of ↵Sven Gothel2023-08-282-55/+109
| | | | | | non-contour/whitespace Glyphs (detect and allow to skip 'em) We also drop shapes for both, but for id 0 (unknown).
* Graph Loop: Make initFromPolyline() and locateClosestVertex() more robust, ↵Sven Gothel2023-08-283-11/+33
| | | | | | report error but do not crash. This behavior has been evaluated with a few fonts and the WIP FontView01 demo application.
* Minor cleanup of imports, etc: FBObject, GLContext*, Texture, ..Sven Gothel2023-08-132-13/+6
| | | | TODO: Full cleanup perhaps
* Texture ctor w/ external textureID: Pass `ownsTextureID` where true hands ↵Sven Gothel2023-08-131-1/+10
| | | | | | | | | over ownership and allows destroy() to delete it, otherwise not. Fixes GraphUI's GLButton. GraphUI's GLButton uses the offscreen's FBO texture and hence can't pass over ownership of the texture. Hence the Texture instance is created w/o handing over ownership! GLMediaPlayerImpl does hand over ownership of the generated and passed texture to the Texture ctor.
* GLMediaPlayer: Show more reasonable DEBUG output in factory; Impl initGL(GL) ↵Sven Gothel2023-08-111-4/+6
| | | | shall handle null streamWorker, i.e. when using NullGLMediaPlayer
* Graph Add {GLRegion, GraphShape}.setTextureUnit(int): Allowing to set ↵Sven Gothel2023-08-013-0/+15
| | | | texture unit after ctor
* GLStateTracker: Add tracking of blending states (part-1)Sven Gothel2023-08-011-2/+129
|
* GLStateTracker: Encapsulate PixelStateMap for PixelStorei states (prepare ↵Sven Gothel2023-08-011-44/+69
| | | | for tracking of blending states)
* Add {GL, GLContext}.getDefaultDrawBuffer() to complement getDefaultReadBuffer()Sven Gothel2023-07-153-0/+18
|
* GLMediaPlayer: Add setAudioChannelLimit(..), correlating with ↵Sven Gothel2023-05-232-1/+14
| | | | | | | AudioSink.setChannelLimit() .. May be utilized to enforce 1 channel (mono) downsampling in combination with JOAL/OpenAL to experience spatial 3D position effects.
* *MediaPlayer: Adop to JOAL 39a32fd56de313c31bd197ee6022288e97f9729aSven Gothel2023-05-212-2/+6
|
* Relocate 'jar/atomic/jogl-fonts-p0.jar' -> 'jar/jogl-fonts-p0.jar' to ↵Sven Gothel2023-05-201-2/+1
| | | | | | | simplify inclusion in distribution; UbuntuFontLoader's Uri is patched accordingly. This font jar file is actually not an atomic in the sense it being aggregated to e.g. jogl-all.jar or even a fat jar. Hence it is more suitable to have it all visible in the top-dir next to the main jars.
* FFMPEGMediaPlayer: Adjust to AudioFormat changesSven Gothel2023-05-201-2/+2
|
* FFMPEGMediaPlayer: AudioFormat is now a stand-alone class (gluegen ↵Sven Gothel2023-05-181-2/+2
| | | | 2b339721a4d6dd4f3af129a4654375b15c7ea340)
* Common av classes (*AudioSink, ..) are promoted to gluegen (commit ↵Sven Gothel2023-05-178-1430/+9
| | | | 270172bcbd91f96d4a38a3d73e23d744f57a25b8) and joal (commit 03f4bb63ce8a358b1c2ef303480e1887d72ecb2e)
* Fix GLMediaPlayerImpl.initGL(GL): Allow null==gl and audio-only mode ↵Sven Gothel2023-05-091-16/+33
| | | | (regression to initial implementation)
* GLMediaPlayer: Replace GLMediaEventListener.EVENT_CHANGE_* 'int event_mask' ↵Sven Gothel2023-05-091-41/+44
| | | | with EventMask.Bit/EventMask
* MacOSXCGLDrawableFactory.canCreateGLPbuffer(): Disabled for MacOS >= 10.13 ↵Sven Gothel2023-05-062-2/+6
| | | | | | (High Sierra) This expands blocking Pbuffer on MacOS, see commit 1562a6d4c71b27378612306f825c2530c938f859
* Graph CDTriangulator2D: Drop invalid innerPoly, avoiding ↵Sven Gothel2023-05-051-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | Loop.initFromPolyline(..) outline.getGraphPoint().size() < 3 IllegalArgumentException This issue has to be added to our CD .. /* * Font FreeMono-Bold: ID 0 + 465: Glyph[id 465 'uni020F', advance 600, leftSideBearings 42, kerning[size 0, horiz true, cross true], shape true], OutlineShape@5e8a459[outlines 2, vertices 34] Drop innerPoly ctrlpts < 3 - innerPo[vertices 2, ctrlpts 2] < 3 - outline[vertices 4, ctrlpts 4] - Input[vertices 4] * * Font FreeSans-Regular: ID 0 + 409: Glyph[id 409 'Udieresiscaron', advance 720, leftSideBearings 80, kerning[size 0, horiz true, cross false], shape true], OutlineShape@5eb97ced[outlines 3, vertices 33] Drop innerPoly ctrlpts < 3 - innerPo[vertices 1, ctrlpts 1] < 3 - outline[vertices 1, ctrlpts 1] - Input[vertices 1] * Stack: at jogamp.graph.curve.tess.CDTriangulator2D.addCurve(CDTriangulator2D.java:97) at com.jogamp.graph.curve.OutlineShape.triangulateImpl(OutlineShape.java:988) at com.jogamp.graph.curve.OutlineShape.getTriangles(OutlineShape.java:1012) at com.jogamp.graph.curve.Region.countOutlineShape(Region.java:503) at com.jogamp.graph.ui.shapes.GlyphShape.<init>(GlyphShape.java:77) */
* Graph OutlineShape.get{Outline->}VectexCount() renamedSven Gothel2023-04-201-1/+1
|
* Graph GLRegion*: Utilize interleaved GLSL buffers for vertices, curveParams ↵Sven Gothel2023-04-203-104/+14
| | | | | | | | | | | and the optional colors (GPU effeciency and performance; Increased CPU buffer growth performance) Besides simplification, interleaved GPU memory boosts - effeciency - performance Since only one underlying backing buffer on the CPU (host) has to be managed, it also increases buffer growth performance.
* Graph VBORegion2P*.renderVBO(): Add comment on ↵Sven Gothel2023-04-192-0/+9
| | | | BITHINT_GLOBAL_DEPTH_TEST_ENABLED usage -> To be investigated.
* Graph GLRegion: Consolidate pass-1 common data (indices, vertices, ..) and ↵Sven Gothel2023-04-193-462/+2
| | | | all related methods. Add growCount stat.
* Graph Font.getGlyphShapeBounds(): Use variant w/ 2 temp AffineTransform ↵Sven Gothel2023-04-181-4/+5
| | | | matching getGlyphBounds()
* Graph + GraphUI: Consolidate Vertex: Drop SVertex and factory, use Vec[234]f ↵Sven Gothel2023-04-189-108/+118
| | | | | | | | | | | instead of float[] and remove unused VectorUtil methods After Matrix4f consolidation and proving same or better performance on non array types, this enhances code readability, simplifies API, reduces bugs and may improve performance. GraphUI: - Have RoundButton as a functional class to make a round or rectangular backdrop, i.e. impl. addShapeToRegion() via reused addRoundShapeToRegion()
* Typecast Font.getGlyph(..): Fix Glyph case w/ 0 getOutlineVectexCount() -> ↵Sven Gothel2023-04-141-4/+14
| | | | isWhiteSpace = true, use emptyShape
* Typecast Font.Glyph: Expose isUndefined(), i.e. name == ".notdef"Sven Gothel2023-04-141-0/+3
|
* Typecast: Expose (new) getGlyphCount(): GlyfTable.getSize() -> ↵Sven Gothel2023-04-144-1/+13
| | | | (OTFont,Font).getGlyphCount()
* Typecast GlyfTable: Use `final` qualifier (cleanup)Sven Gothel2023-04-141-14/+14
|
* Graph TypecastFont: Avoid PostTable (out-of-bounds) for glyph_name when not ↵Sven Gothel2023-04-141-3/+7
| | | | even a Glyph was mapped to the ID
* Matrix4f.mapWin*(): Drop unused temp matrices, map*() returns false on ↵Sven Gothel2023-04-094-13/+10
| | | | | | | | | | | | | | | | | | | | | | | | invPMv null; PMVMatrix: Make Mvi, Mvit optional at ctor, add user PMv and PMvi - used at gluUnProject() .. Matrix4f.mapWin*() variants w/ invPMv don't need temp matrices, they also shall handle null invPMv -> return false to streamline usage w/ PMVMatrix if inversion failed. PMVMatrix adds user space common premultiplies Pmv and Pmvi on demand like Frustum. These are commonly required for e.g. gluUnProject(..)/mapWinToObj(..) and might benefit from caching if stack is maintained and no modification occured. PMVMatrix now has the shader related Mvi and Mvit optional at construction(!), so its backing buffers. This reduces footprint for other use cases. The 2nd temp matrix is also on-demand, to reduce footprint for certain use cases. Removed public access to temporary storage. +++ While these additional matrices are on demand and/or at request @ ctor, general memory footprint is reduced per default and hence deemed acceptable while still having PMVMatrix acting as a core flexible matrix provider.
* VBORegion2P*ES2: Just instantiate SyncMatrices4f16 in place, drop local refSven Gothel2023-04-072-5/+2
|
* PMVMatrix rewrite using Matrix4f, providing SyncMatrix4f* for GLUniformData; ↵Sven Gothel2023-04-076-48/+45
| | | | | | | | | | | | | | | | | Utilize Vec3f, Recti, .. throughout API (Matrix4f, AABBox, .. Graph*) Big Easter Cleanup - Net -214 lines of code, despite new classes. - GLUniformData buffer can be synced w/ underlying data via SyncAction/SyncBuffer, e.g. SyncMatrix4f + SyncMatrices4f - PMVMatrix rewrite using Matrix4f and providing SyncMatrix4f/Matrices4f to sync w/ GLUniformData - Additional SyncMatrix4f16 + SyncMatrices4f16 covering Matrix4f sync w/ GLUniformData w/o PMVMatrix - Utilize Vec3f, Recti, .. throughout API (Matrix4f, AABBox, .. Graph*) - Moved FloatUtil -> Matrix4f, kept a few basic matrix ops for ProjectFloat - Most, if not all, float[] and int[] should have been moved to proper classes - int[] -> Recti for viewport rectangle - Matrix4f and PMVMatrix is covered by math unit tests (as was FloatUtil before) -> save Passed all unit tests on AMD64 GNU/Linux
* Math: Complete Matrix4f w/ Vec[234]f and adopt it throughout Quaternion, ↵Sven Gothel2023-04-056-18/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | Ray, AABBox, Frustum, Stereo*, ... adding hook to PMVMatrix Motivation was to simplify matrix + vector math usage, ease review and avoid usage bugs. Matrix4f implementation uses dedicated float fields instead of an array. Performance didn't increase much, as JVM >= 11(?) has some optimizations to drop the array bounds check. AMD64 + OpenJDK17 - Matrix4f.mul(a, b) got a roughly ~10% enhancement over FloatUtil.multMatrix(a, b, dest) - Matrix4f.mul(b) roughly ~3% slower than FloatUtil.multMatrix(a, b, dest) - FloatUtil.multMatrix(a, a_off, b, b_off, dest) is considerable slower than all - Matrix4f.invert(..) roughly ~3% slower than FloatUtil.invertMatrix(..) RaspberryPi 4b aarch64 + OpenJDK17 - Matrix4f.mul(a, b) got a roughly ~10% enhancement over FloatUtil.multMatrix(a, b, dest) - Matrix4f.mul(b) roughly ~20% slower than FloatUtil.multMatrix(a, b) - FloatUtil.multMatrix(a, a_off, b, b_off, dest) is considerable slower than all - Matrix4f.invert(..) roughly ~4% slower than FloatUtil.invertMatrix(..) Conclusion - Matrix4f.mul(b) needs to be revised (esp for aarch64) - Matrix4f.invert(..) should also not be slower ..
* Graph Shader: Complete the USE_DISCARD logic avoiding output set after ↵Sven Gothel2023-03-3012-36/+67
| | | | discard, even though technically allowed (ignored after discard)
* Graph GLSL: Enable 'discard' in fragment shader w/o ↵Sven Gothel2023-03-3013-50/+53
| | | | | | | | | GLRendererQuirks.GLSLBuggyDiscard to avoid overdraw of such regions. Historically we disabled `discard` due to an old NV tegra2 compiler bug, which caused the compiler to freeze. Today we no more seem to have this GLSL compiler issue, i.e. GLRendererQuirks.GLSLBuggyDiscard never gets set.
* Graph Font: TypecastFont: getGlyphBoundsFU() + processString(): If ↵Sven Gothel2023-03-281-4/+6
| | | | isWhitespace() continue w/ AABBox resize, but don't earmark this (whitespace) glyph for next left_glyph (kerning).
* Graph Font.GlyphVisitor*: Pass 'char symbol' to visitor, passing full ↵Sven Gothel2023-03-281-5/+3
| | | | text-processing information
* Graph Font.Glyph: Add getFont() (the owner)Sven Gothel2023-03-281-0/+5
|
* Graph Font: Rename getBBox*() -> getBounds*() to preserve a common semantic nameSven Gothel2023-03-273-8/+8
|
* Graph: Fix Font.getGlyphBoundsFU(): FU of advance is requested here.Sven Gothel2023-03-271-1/+1
| | | | Regression from commit a5d593478afa2298282a0624b2490fde84c3a292
* Graph Font Processing: Use Font.GlyphVisitor instead of ↵Sven Gothel2023-03-221-9/+15
| | | | OutlineShape.Visitor, allowing to use the Glyph (information).
* Graph Font Processing: Produce a 'whitespace' Glyph w/ an OutlineShape (box) ↵Sven Gothel2023-03-223-5/+76
| | | | to allow better handling of such non-contour symbols.
* Graph: Cleanup Vertex.Factory referencing: Only bind to OutlineShape and use ↵Sven Gothel2023-03-211-11/+8
| | | | | | | its default. GraphUI: Always use default. Graph RegionRenderer, its RenderState as well as GraphUI's Scene don't need to have knowledge of Vertex.Factory, which is only used within OutlineShape and its 'inner geom workings'.
* Graph: GLRegion: Pass curRenderModes to updateImpl() + drawImpl(), prepare ↵Sven Gothel2023-03-193-65/+100
| | | | switch by sampleCount; Don't use any resource not requested by curRenderModes
* API doc cleanup, add + refine math testsSven Gothel2023-03-191-1/+1
| | | | API doc
* Fix ShaderProgram ownership bug, introduced in commit ↵Sven Gothel2023-03-153-35/+9
| | | | | | | | | 67a723477ecd818fbc5859fe20ee536a3b4efae5 (reverting and clarifying) All Graph ShaderPrograms used are owned by RegionRenderer, not RenderState nor [GL]Region*, hence [GL]Region* shall only nullify the resources but not destroy the shader currently in use. One RegionRenderer maybe used for multuple Regions.