| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
pixels-per-millimeter (Requires manual Conversion to dpi)
|
| |
|
|
|
|
| |
methods ; TestTextRendererNEWT00 make font/fontSize configurable, animate fontSize
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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)
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
native libs and null-cursor creation in headless mode
Commit 9fb1e46e43900ec9b2f9c9af1fc8984e101c8811 exposed sideffects,
i.e. libjawt.so could not be loaded in JAWTUtil's static-init while in headless mode.
JAWTUtil's static init block was triggered from AWTMisc debug flag changes.
Fix drops operations in headless mode:
- JAWTUtil
- awt native lib loading
- querying headfull features (locking, java2d ..)
- AWTMisc
- creating null cursor
|
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
parameters for mapBufferRange(..) and mapNamedBufferRange(..)
GLBufferObjectTracker.mapBuffer(..) variant for mapBufferRange(..) and mapNamedBufferRange(..)
used wrong parameters in it's mapBufferImpl(..) call.
Fixed and added mapBufferRange(..) test in TestMapBufferRead01NEWT
|
| |
| |
| |
| | |
headless)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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'.
|
|\| |
|
| |
| |
| |
| | |
WindowImpl comment
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
(14:15:13) sgothel: @Xerxes: In doResume .. do a 'while( !isActive && !shallPause && isRunning ) {'
(14:15:52) sgothel: doPause: while( isActive && !shallPause && isRunning )
(14:31:55) sgothel: doPause only: while( isActive && isRunning ) {
|
| |\ \ |
|
| | |/
| | |
| | | |
in bug https://jogamp.org/bugzilla/show_bug.cgi?id=969
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(which disables print if !isShowing())
Commit 071bdd6ce9f8c41ccecdbf8bc74f276ccd7ff651
uses 'isShowing' state to determine whether to display or not.
It also uses 'isShowing' instead of 'isVisible' for printing,
which is a regression, since not showing elements offscreen shall be able to be printed.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
Concludes commit f51933f0ebe9ae030c26c066e59a728ce08b8559
w/ final fixes on merge commit 3352601e0860584509adf2b76f993d03893ded4b.
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| | |
that commands shall be off-loaded on another thread!
|
| |
| |
| |
| | |
exception at destroy
|
| |
| |
| |
| |
| |
| |
| | |
Add global synchronization around ALAudioSink constructor code,
which 'magically' solves the openal-soft multithreading issues ..
This is a workaround.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
FFMPEG Natives:
- Move 'mutex_avcodec_openclose' to local static and initialize at initSymbols0
- setStream0:
- Add another locked mutex block around:
- [ sp_avformat_open_input .. sp_avformat_find_stream_info ]
This solves the issue of:
[NULL @ 0x89d20c60] insufficient thread locking around avcodec_open/close()
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Parallel media player that demonstrate CrossFade of audio volume during playback.
This player also demonstrate audio only playback of the GLMediaPlayer.
The CrossFadePlayer is a reproducer for
FFMPEGMediaPlayer libav multithreading initialization errors.
[NULL @ 0x7ff904065280] insufficient thread locking around avcodec_open/close()
reproducer:
java -cp gluegen/build/gluegen-rt.jar:jogl/build/jar/jogl-all-mobile.jar:jogl/build/jar/jogl-test.jar:joal/build/jar/joal.jar com.jogamp.opengl.test.junit.jogl.demos.es2.av.CrossFadePlayer *.mp3
Signed-off-by: Xerxes Rånby <[email protected]>
|
| | |
| | |
| | |
| | | |
4447232af0d95a4348d09d4ed03fbef48394ca3a
|
| | | |
|
| |/ |
|
| |
| |
| |
| | |
dedicated read-drawable is being used (double buffering)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
mechanism ; Refined API doc getDefaultReadBuffer() ; Add GLDrawableUtil.swapBuffersBeforeRead(..)
Commit 82f679b064784213591b460fc5eaa1f5f196fbd1 which introduces the default swap-buffers
mechanism is erroneous:
The OffscreenBack backend requires the following operation order:
Order-1:
[1] - GL display
[2] - GL swapBuffers (always due to single-buffer non-MSAA or MSAA offscreen drawable)
[3] - readPixels
+++
Commit 82f679b064784213591b460fc5eaa1f5f196fbd1 however introduced:
Order-2:
[a] - GL display
[b] - readPixels
[c] - GL swapBuffers (always due to single-buffer non-MSAA or MSAA offscreen drawable)
since [a] and [b] happened in Updater's display method, and [c] followed the same
triggered by GLAutoDrawableHelper.
+++
The proof, commit d46d9ad8f998a7128d9f023294d5f489673d6d8a, is faulty,
since it always included the 'snapshot' GL event listener
which turned-off auto-swap and swapped before read-pixels.
TL;DR it enforced proper Order-1.
+++
This fix allows the Backend to intercept disable GLDrawableHelper's setAutoSwapBufferMode(..)
and perform the auto-swap mode itself in the proper Order-1.
The unit test has been refined to optionally disable the snapshot
to validate auto-swap mode.
+++
Refined GLBase and GLContext's API doc for 'getDefaultReadBuffer()'
+++
Add GLDrawableUtil.swapBuffersBeforeRead(..)
and reuse it for TileRendererBase (original impl.).
|