| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
test-ntsc01-28x16.png asset ; Generalize TextureSequenceDemo01 -> SingleTextureSeqFrame ; Unit tests use test-data, not assets.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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, ..
|
|
|
|
| |
Android MovieCubeActivity0a for 'no text' version
|
|
|
|
| |
Reduce text contrast by 1/10th allowing better AA ; GPUUISceneGLListener0A uses proportional window height font size and one label w/ 10pt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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 ..
|
|
|
|
|
|
|
|
|
|
|
| |
- Add documentation incl references (Matrix-FAQ, Euclideanspace, ..)
- Compared w/ other impl., i.e. WildMagic, Ardor3D, ..
and added missing functionality incl unit tests.
- PMVMatrix: Added convenient Quaternion 'hooks'
- glRotate(Quaternion)
- glLoadMatrix(Quaternion)
|
|\ |
|
| |
| |
| |
| |
| |
| | |
byte-count)
memmove's byte-count was just giving the element-count, missing the element-size multiplier to actually pass byte-count
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Against OpenGL Bugs ; Fix glXGetFBConfigs
- glXChooseFBConfig(..)
- Remove NULL FBConfig pointer from result in native code,
which has been observed in Mesa 8.0.5-4 libgl1-mesa-swx11 (Debian-7).
- glXGetFBConfigs
- Add manual implementation similar to glXChooseFBConfig
- glXGetFBConfigAttrib(..)
- glXGetFBConfig(..)
- Returns boolean reflecting success, don't throw exception - caller handles error
- Caller ignore failure if not essential (i.e. already chosen config)
|
|\| |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- 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.) ..
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
on uncached text line
Performance Note: ~800-1200 fps on uncached text line
Compared to c3621221b9a563495b4f54fe60e18e8db8cc57fb: ~600 fps
and previous impl. ~60fps.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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!
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Issue:
[NULL @ 0x35bde60] insufficient thread locking around avcodec_open/close()
Decorating said libav functions w/ mutex lock/release.
Abstract impl. to either use pthread or JNI Monitor,
but using the latter to reduce dependencies (ming64 windows).
FFMPEGNatives is now an abstract class containing the
'static final Object mutex_avcodec_openclose'
|
| | |
|
| |
| |
| |
| | |
Add reshapeNotify(..) for NOP PMV reshape notification
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- Using update openal-soft (commit 7297c3214a4c648aaee81a9877da15b88f798197)
- Analyzed openal-soft threading issues:
- a global-lock would have removed the issue
- turns out that using ALC_EXT_thread_local_context's alcSetThreadContext(..)
instead of alcMakeContextCurrent(..) solves the issue
- Cleaned up al*GetError() queries and handling
- Simplified flush/dequeue buffers
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
auto-swap mechanims
Refines commit 908ebd99d1eb57ce773a1fdd67c76886da86b9e6
Note that the test case decide whether to auto-swap (after read-pixels)
or not auto-swap (manual swap before read-pixels).
See UITestCase.swapBuffersBeforeRead(GLCapabilitiesImmutable chosenCaps):
Determines whether the chosen GLCapabilitiesImmutable requires a swap-buffers before reading pixels.
Usually one uses the default-read-buffer, i.e. GL.GL_FRONT for single-buffer
and GL.GL_BACK for double-buffer GLDrawables
and GL.GL_COLOR_ATTACHMENT0 for offscreen framebuffer objects.
Here swap-buffers shall happen after calling reading pixels, the default.
However, multisampling offscreen GLFBODrawables utilize swap-buffers to downsample
the multisamples into the readable sampling sink.
In this case, we require a swap-buffers before reading pixels.
Returns: chosenCaps.isFBO() && chosenCaps.getSampleBuffers()
+++
- GLJPanel:
- Remove SurfaceUpdatedListener mechanism in favor of
default auto-swap-buffer via GLDrawableHelper.
This removes complexity.
- postGL does not need to perform explicit swapBuffer operation,
but rely on GLDrawableHelper and the default mechanism.
This is also compatible w/ J2D backend.
- Use GLDrawableHelper for setAutoSwapBufferMode(..) and getAutoSwapBufferMode()
+++
UnitTests:
- UITestCase:
- Add 'boolean swapBuffersBeforeRead(GLCapabilitiesImmutable chosenCaps)'
to determine whether swapBuffers() must occure before read-pixels. See above.
- GLReadBuffer00Base*
- remove explicit addSnapshotGLEL/removeSnapshotGLEL
- add TextRendererGLEL, to display frame-count and -dimension
- SnapshotGLEL*
- simply toggle auto-swap in their init(..) and dispose(..) method!
- clear back-buffer if 'swapBuffersBeforeRead'
to test whether the right buffer is being used for read-pixels.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
GLEventListener using [AWT]GLReadBufferUtil)
When utilizing [AWT]GLReadBufferUtil it is usually desired to read from the front-buffer
instead the back-buffer. The latter may not be defined, e.g. when using MSAA.
A GLEventListener utilizing [AWT]GLReadBufferUtil,
must perform the drawable.swapBuffers() to be able to read from the front-buffer.
Usually GLAutoDrawable.setAutoSwapBuffer(false) should be called here,
to avoid a double swap - however GLJPanel does not support toggling auto-swap
since it requires to control swap for it's own read-pixels.
Remedy for GLJPanel:
- GLJPanel issues helper.setAutoSwapBufferMode(false) - immutable
- Enable GLJPanel.swapBuffer() if initializes
This was previously disabled.
- GLJPanel's OffscreenBackend listens to surfaceUpdated,
to be notified whether postGL needs to swap buffer
or the drawable.swapBuffer() was already called between preGL and postGL.
See unit tests adding/removing a snapshot GLEventListener
performing swapBuffers() and setting auto-swap accordingly.
|
| |
| |
| |
| | |
long indirect_offset, int drawcount, int stride)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
images]; Fix GLReadBufferUtil GL_PACK_ROW_LENGTH
AWTGLPixelBuffer is being reused when used via AWTGLPixelBufferProvider
even when resized.
AWTGLPixelBufferProvider uses GLPixelBufferProvider's requiresNewBuffer(..)
which returns true if
- allowRowStride==true and pixel-buffer size < required-size, or
- allowRowStride==false and pixel-buffer size < required _or_ width doesn't match
otherwise it returns true, i.e. the AWTGLPixelBuffer is reused.
Hence the used BufferedImage might need to be aligned,
i.e. using AWTGLPixelBuffer's getAlignedImage(..).
+++
GLReadBufferUtil shall use current texture-data width for GL_PACK_ROW_LENGTH,
not the static GLPixelBuffer's width, which may not reflect image dimension (resize)
+++
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
GLContextImpl, DisplayImpl
GLProfile, GLContextImpl:
- ReflectionUtil.DEBUG_STATS_FORNAME: Dump forName stats if set
- Cache GL*Impl and GL*ProcAddressTable Constructor<?> for GLContextImpl's createInstance(..)
- Remove off-thread early classloading thread which only adds complications
DisplayImpl:
- Remove one redundant availability test
|
| | |
|
| |
| |
| |
| |
| |
| | |
- Adding 'plugin3-public' jar and sources for Applet3 support, copied from icedtea-web3
- Added com.jogamp.newt.util.applet.JOGLNewtApplet3Run capable to run Applet3
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
multiple instances in parallel
Tested on GNU/Linux x86_64,
Result: Plays well here audio and video, i.e. audio is actually mixed from both movies.
Even if one movie (below) stops and restarts (AL buffer reset),
it didn't crash.
+++
LIB_AV Codec : 54.92.100 [cc 54]
LIB_AV Format : 54.63.104 [cc 54]
LIB_AV Util : 52.18.100 [cc 52]
LIB_AV Resample: 1.0.1 [cc 1, loaded true]
LIB_SW Resample: 0.17.102 [cc 0, loaded true]
LIB_AV Device : [loaded true]
LIB_AV Class : FFMPEGv09Natives
+++
(enable MovieSimple in scripts/tests.sh)
bash scripts/tests-x64.sh -loop -windows 2 \
-urlN 0 http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_surround.avi \
-urlN 1 http://video.webmfiles.org/elephants-dream.webm
+++
2 Streaming threads, i.e. decoder threads:
"Thread-5-StreamWorker_1" daemon prio=10 tid=0x00007f994c102000 nid=0x5826 in Object.wait() [0x00007f996fa37000]
at jogamp.opengl.util.av.GLMediaPlayerImpl$StreamWorker.run(GLMediaPlayerImpl.java:1231)
"Thread-4-StreamWorker_0" daemon prio=10 tid=0x00007f99600ed000 nid=0x5825 in Object.wait() [0x00007f996cd09000]
at jogamp.opengl.util.av.GLMediaPlayerImpl$StreamWorker.run(GLMediaPlayerImpl.java:1231)
|
| |
| |
| |
| | |
on for NewtVersionActivity)
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Refines commit fbe00e6f5dca8043b40dd96f096fecc9424e0cc3
Instead of querying driver artifacts (vendor, platform, version ..)
we simply can autodetect this quirk by trying to get a second egl-display handle
when initializing the EGLDrawablFactory's default device:
EGL.eglGetDisplay(EGL.EGL_DEFAULT_DISPLAY)
|
| |
| |
| |
| | |
a.so.N' symlinks for debian i386 libs on x86_64
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Display via eglGetDisplay(..)
NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL Display via eglGetDisplay.
- Subsequent eglGetDisplay(..) calls fail.
- Using the same 'global' egl-display does work though
Remedy: Add 'GLRendererQuirks.SingletonEGLDisplayOnly'
Detection of quirk is done as usual in GLContextImpl.setRendererQuirks(..),
and EGLDrawableFactory passes the quirk, if detected, down to EGLDisplayUtil.
The latter implements the singleton eglDisplay handle.
EGLDisplayUtil: Cleaned up ..
- EGLDisplayRef employs the reference handling incl. eglInitialize(..) and eglTerminate(),
as well as the new singleton quirk.
- Mark all internal methods 'private',
to remove possible [untested] sideffects.
|
| |
| |
| |
| | |
duh), add 'Application-Library-Allowable-Codebase: *'
|
| | |
|
| |
| |
| |
| | |
09fc7aa5539731bb0fba835caee61f6eb837ecff
|