aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
Commit message (Collapse)AuthorAgeFilesLines
* Findbugs.increment_volatile: Use AtomicInteger or add comment that operation ↵Sven Gothel2014-07-086-67/+73
| | | | is safe!
* Findbugs.minor: Fix 'array -> string', missing argumentSven Gothel2014-07-081-1/+1
|
* Bug 1021: Add GenericStereoDevice* Supporting custom configurations; Hook-in ↵Sven Gothel2014-07-071-16/+65
| | | | | | | | | | | | | | | | | | | | | | oculusvr-sdk java distortion-mesh calculation if available StereoDeviceFactory support new GenericStereoDeviceFactory, with it's GenericStereoDevice and GenericStereoDeviceRenderer. GenericStereoDevice maintains different configurations, triggered either by passing a GenericStereoDevice.Config instance directly or by the device-index parameter: - 0: monoscopi device: No post-processing - 1: stereoscopic device SBS: No post-processing - 2: stereoscopic device SBS + Lenses: Distortion post-processing (only available w/ oculusvr-sdk sub-module) Producing a 'GenericStereoDevice.Config' instance is self containing and may extend if supporting more device types like top-bottom, interlaced etc. StereoDemo01 handles all use-cases and may be used as a test-bed to add and experiment with stereoscopy, devices and settings.
* Fix FloatUtil.makePerspective(..): The tan(fovy/2) shall be used, not ↵Sven Gothel2014-07-051-0/+2
| | | | | | | | | | | | | tan(fovy), fix callers; Simplify FloatUtil.makePerspective(..FovHVHalves..) Fix FloatUtil.makePerspective(..): The tan(fovy/2) shall be used, not tan(fovy), fix callers - This bug didn't hit (yet), since callers already performed the division (degree -> radian) by falsly claiming the passed value is in radian - where it was actually fov/2 in radians. Simplify FloatUtil.makePerspective(..FovHVHalves..) - Due to the fix above, it became pretty clear that the makeFrustum(..) method can be utilized. Simply apply all our tan-half-fov values on zNear.
* Bug 1021: Make OVR access vendor agnostic: Package ↵Sven Gothel2014-07-055-248/+1182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 'com.jogamp.opengl.util.stereo' contains all public interfaces/classes Renamed interfaces: CustomRendererListener -> CustomGLEventListener StereoRendererListener -> StereoGLEventListener New vendor agnostic 'stuff' in com.jogamp.opengl.util.stereo: 1 - StereoDeviceFactory To create a vendor specific StereoDeviceFactory instance, which creates the StereoDevice. 2 - StereoDevice For vendor specific implementation. Can create StereoDeviceRenderer. 3 - StereoDeviceRenderer For vendor specific implementation. 4 - StereoClientRenderer Vendor agnostic client StereoGLEventListener renderer, using a StereoDeviceRenderer. Now supports multiple StereoGLEventListener, via add/remove. - MovieSBSStereo demo-able via StereoDemo01 can show SBS 3D movies.
* Code Clean-Up based on our Recommended Settings (jogamp-scripting ↵Sven Gothel2014-07-03423-8248/+8341
| | | | | | | | | | | | | 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
* Bug 1021: OVRSBSRenderer*: Add texture filtering parameter (bilinear/none), ↵Sven Gothel2014-07-031-19/+41
| | | | | | | | | | | | | | adjust FBO texture params (alpha, filtering); Demo: Pass all parameters w/ arguments, use sane good defaults. Turns out that using bilinear texture filtering w/o multisampling is 'good enough' .. - OVRSBSRenderer*: - Add texture filtering parameter (bilinear/none) - Adjust FBO texture params (alpha, filtering) No alpha needed in FBO sink/target! - Demo: Pass all parameters w/ arguments, use sane good defaults.
* Bug 1021: Refine Stereo Rendering API and OculusVR implementing rendererSven Gothel2014-07-032-14/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refine API in regards to proper package names, interface and high-level access to eye specific constant parameter and variable eye movement. +++ Commit 36327e24cf586b50bf18e87d7d13d53eb41cf1d9 introduced 'GLEventListener2' Move javax.media.opengl.GLEventListener2 -> com.jogamp.opengl.util.CustomRendererListener -> com.jogamp.opengl.util.stereo.StereoRendererListener StereoRendererListener adds stereoscopic specific: public void reshapeEye(final GLAutoDrawable drawable, final int x, final int y, final int width, final int height, final EyeParameter eyeParam, final EyePose eyePose); .. see below. ++ Add com.jogamp.opengl.util.stereo: - EyeParameter (Constant eye parameters, like IPD and FOV) - EyePose (Current eye position and orientation) +++ Add com.jogamp.opengl.math.FovHVHalves to support non-centered bi-directional FOV for lenses. Add respective FloatUtil.makePerspective(.. FovHVHalves fovhv ) variant. +++
* Bug 1021: Add OculusVR distortion renderer (single FBO and dual FBO); Add ↵Sven Gothel2014-07-012-64/+308
| | | | | | | | | | | | | | | | | | | | | | | | | | GLEventListener2 (WIP); Refine FloatUtil - GLEventListener2 extends GLEventListener adds refined control: - display w/ flags, i.e. repeat, don't clear - setProjectionModelview(..) - FloatUtil.* Add return value for chaining, where missing +++ - jogamp.opengl.oculusvr.OVRDistortion - Handles all OVR related data and maps it to shader + GL buffers - display method - com.jogamp.opengl.oculusvr.OVRSBSRendererSingleFBO implements GLEventListener - Simple OVRDistortion renderer using single FBO - Using upstream GLEventListener2 (the content) - com.jogamp.opengl.oculusvr.OVRSBSRendererDualFBO implements GLEventListener - Simple OVRDistortion renderer using two FBOs - Using upstream GLEventListener2 (the content) Manual Test: com.jogamp.opengl.test.junit.jogl.stereo.ovr.OVRDemo01
* Fix (c) header: Due to copy & paste, wrong header was used for certain files ↵Sven Gothel2014-07-015-343/+378
| | | | .. (sorry)
* Bug 1027: Fix usage of atomic jar files (NEWT)Sven Gothel2014-06-293-1/+15
| | | | | | | | | | | | | | | | | | Issue was that 'com.jogamp.opengl.util.PNGPixelRect' was included in jogl-core.jar and that NEWT assumes PNG conversion is possible having this class available. However, PNGPixelRect requires 'jogamp.opengl.util.pngj' which is only included within jogl-util.jar. Moved PNGPixelRect from jogl-core.jar to jogl-util.jar. +++ Added manual test launch 'testnoawtatomics' in make/scripts/tests.sh to test atomic usage. Works now w/ com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT, showing that the window/application icon is _not_ set due to not having PNG* available.
* Fix 'typo' in messages: 'Catched' -> 'Caught'Sven Gothel2014-06-287-12/+12
|
* Add missing FloatUtil.invertMatrix(..) unit test, which impl. changed w/ ↵Sven Gothel2014-06-281-0/+262
| | | | commit ee774dce9e474e8ea961bd9b504d26e9321e1b15
* Enhance FloatUtil: More optimizations, concludes commit ↵Sven Gothel2014-06-281-17/+17
| | | | | | | | | | | | | | | | | 0bded476868c5fdfe44502bfd55957469d0d72bb FloatUtil optimizations (unroll and linear memeory access): - transposeMatrix - invertMatrix (diff algo as well - 50% speed bump) - multMatrix - multMatrixVec FloatUtil added - matrixDeterminant(..) FloatUtil removed - Certain FloatBuffer variants are removed or at least marked deprecated.
* Enhance FloatUtil: Merge ProjectFloat features while adding optimized ↵Sven Gothel2014-06-279-200/+196
| | | | | | | | | | | | | | | | | | 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
* GLU: Make ProjectFloat/ProjectDouble final and deprecate GLU.destroy() method.Sven Gothel2014-06-272-3/+1
|
* Fix regression due to GlueGen commit ↵Sven Gothel2014-06-171-22/+23
| | | | | | | | | | | | | | c3054a01990e55ab35756ea23ab7d7c05f24dd37, completes JOGL commit 68ca3ae8fcce28c62034299bc6e6f7eaab50bd1f Add handling of 'initializeImpl()' of generated GLU* classes: - GLU : no 'initializeImpl()' <- no libs - GLUgl2es1: no 'initializeImpl()' <- no libs - GLUgl: call 'initializeImpl()' in manual static init impl. Further more, we shall not initialize the GLU* classes in GLU static init method, querying GLU* class availability. Tested via OlympicES1.
* Fix Bug 826 Regression caused by commit ↵Sven Gothel2014-06-131-35/+68
| | | | | | | | | | | | | 41190c3830157abdf9649cbf7767e57108f55075 (Bug 975) Commit 41190c3830157abdf9649cbf7767e57108f55075, fix for 'Bug 975 GLJPanel's OffscreenDrawable double swap', caused a regression of commit c427ed22244df44b71a0f1f000b0f93e56c283c2, fix for 'Bug 826: GLJPanel: Fully restore TextureState and Viewport'. Commit 41190c3830157abdf9649cbf7767e57108f55075 issues offscreenDrawable.swapBuffers() and hence modifying the texture unit settings before saving the TextureState, the whole purpose of commit c427ed22244df44b71a0f1f000b0f93e56c283c2.
* Fix NEWT EDTUtil Deadlock on EDTUtil.start()Sven Gothel2014-06-121-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | DisplayImpl.runOnEDTIfAvail(..) issues EDTUtil.start() while holding it's object-lock - if the EDT is not running, then invokes the given task. EDTUtil.start() impl. holds it's own edt-lock while starting, then releases it's edt-lock while issuing a null-task. If another thread injects a blocking task right in-between which also acquires the display's object-lock it deadlocks. Simply remove issuing the null-task, so EDTUtil.start() can return immediatly (releasing edt-lock) and allowing DisplayImpl.runOnEDTIfAvail(..) also to release it's object-lock. The other threads task then can be executed, where the 'starting task' would come second - which is OK, even though a rare occasion. Above situation was triggered via AWT/NEWT reparenting w/ forced recreation via TestParenting01dAWT. +++ The null-task at EDTUtil.start() was remaining code to ensure that the EDT completed starting, which is redundant.
* Fix Bug 1019 - Remedy of Bug 691 causes 'access/modify after free' and ↵Sven Gothel2014-06-121-40/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | crashes the app The 'magic' MyNSOpenGLContext::dealloc (MacOSXWindowSystemInterface-calayer.m) of force destroying the underlying CGLContextObj of it's associated NSOpenGLContext as introduced as a remedy of Bug 691 is plain wrong. It was added in commit f6e6fab2a7ddfb5c9b614cb072c27ff697629161 to mitigate the experience behavior of delayed GL context destruction when creating/destroying them multiple times as exposed in unit test TestGLCanvasAddRemove01SwingAWT. While this 'hack' worked for some reason on some OSX versions, it caused a 'access/modify after free' issue exposed under some circumstances and crashes the application. The actual culprit of the delayed GL context destruction is different. The offthread CALayer detachment and hence final destruction issued on the main-thread is _not_ issued immediately due to some referencing holding by NSApp. Issuing an empty event on the NSApp (thread) will wake up the thread and release claimed resources. This has been found while realizing that the GL context are released if the mouse is being moved (duh!). This issue is also known when triggering stop on the NSApp (NEWT MainThread), same remedy has been implemented here for a long time.
* GraphUI Demo: Analyze issue w/ OSX and NewtCanvasAWT when rendering / ↵Sven Gothel2014-06-115-18/+53
| | | | | | | | | | animating GLEventListenerButton Analyze issue w/ OSX and NewtCanvasAWT when rendering / animating GLEventListenerButton. FBO of main 'window' is _not_ updated .. Probably related to CALayer - FBO - FBO* (of this button) ..
* Graph RegionRenderer: Fix GL3 and ES3 GLSL issuesSven Gothel2014-06-112-2/+76
| | | | | | Macro redefine 'texture2D -> texture' was added _after_ the custom texture lookup insertion causing GL3-core to fail.
* GraphUI: Fix using multiple texture units w/ opt. colorTexUnit in GLRegionSven Gothel2014-06-091-2/+14
| | | | | The texture unit has to be updated always, since program maybe used by multiple regions and diff. texUnits
* Bug 741 HiDPI: Add ScalableSurface.getNativeSurfaceScale(..) to compute ↵Sven Gothel2014-06-098-129/+218
| | | | | | | | | | | | | | surface DPI ; Add NEWT Window.getPixelsPerMM(..) to query surface DPI With HiDPI and surface scale, we need knowledge of the native surface's pixel-scale matching the monitor's pixel-per-millimeter value. Preserving the queried native pixel-scale and exposing it via ScalableSurface.getNativeSurfaceScale(..) to compute surface DPI. Add NEWT Window.getPixelsPerMM(..) to query surface DPI. Surface DPI is demonstrated in GraphUI's GPUUISceneGLListener0A .. and TestRulerNEWT01, etc ..
* NEWT Window: Remove deprecated methods: HiDPI + reparentWindow(..)Sven Gothel2014-06-084-20/+25
| | | | | | | | Remove HiDPI pixel- from/to window-unit conversion and getter methods: Rectangle HiDPI pixel- from/to window-units are erroneous in case of multiple monitor setup where a mixed pixel-scale exist, since the methods didn't take the monitor viewport and each of it's pixel-scale into account (expensive). Remove deprecated reparentWindow(..) methods.
* Bug 741 HiDPI: Simplify ScalableSurface (2): Add request pixelScale API ↵Sven Gothel2014-06-084-20/+28
| | | | | | | | | | | | | | | | | | | entry, fixed NewtCanvasAWT use-case We require the requested pixelScale in NewtCanvasAWT if the NEWT window (child) is not yet realized, so the JAWTWindow can receive the request, since realized/current pixelScale is still 1. Remove return value (requested pixel scale): - public int[] setSurfaceScale(final int[] result, final int[] pixelScale); + public void setSurfaceScale(final int[] pixelScale); Add API hook to query requested pixel scale: + int[] getRequestedSurfaceScale(final int[] result); Unique name for get[Current]*: - public int[] getSurfaceScale(final int[] result); + public int[] getCurrentSurfaceScale(final int[] result);
* Bug 741 HiDPI: Simplify ScalableSurface [set|get]SurfaceScale(..) spec, ↵Sven Gothel2014-06-084-24/+33
| | | | | | | | | | | | which also fixed JAWTWindow getSurfaceScale() issue on Windows Let setSurfaceScale(..) return the validated requested values and getSurfaceScale(..) always the current values. This removes complication and solves a bug w/ JAWTWindow on Windows, where we used 'drawable' as an indicator for 'previous locked' state. The latter is not true since on Windows 'drawable' is set to null in unlock, getWindowHandle() should be taken instead.
* Bug 741 HiDPI: Add ScalableSurface interface to get/set pixelScale w/ full ↵Sven Gothel2014-06-084-51/+291
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OSX impl. Add ScalableSurface interface - To set pixelScale before and after realization - To get pixelScale - Implemented on: - NEWT Window - Generic impl. in WindowImpl - OSX WindowDriver impl. - Also propagetes pixelScale to parent JAWTWindow if offscreen (NewtCanvasAWT) - AWT WindowDriver impl. - JAWTWindow / OSXCalayer - AWT GLCanvas - AWT GLJPanel - NEWTCanvasAWT: - Propagates NEWT Window's pixelScale to underlying JAWTWindow - WrappedSurface for pixelScale propagation using offscreen drawables, i.e. GLJPanel - Generic helper in SurfaceScaleUtils (nativewindow package) - Fully implemented on OSX - Capable to switch pixelScale before realization, i.e. native-creation, as well as on-the-fly. - Impl. uses int[2] for pixelScale to support non-uniform scale. Test cases: - com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT - com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2AWT - com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2GLJPanelAWT - com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NewtCanvasAWT - Press 'x' to toggle HiDPI - Commandline '-pixelScale <value>' - Added basic auto unit test (setting pre-realization)
* Bug 741 HiDPI: Add new NativeSurfaceHolder interface to GLDrawable and ↵Sven Gothel2014-06-0626-302/+304
| | | | | | | | | | | | | | NativeWindow; [AWT|SWT]NewtEventFactory use NativeSurfaceHolder as source, fixes pixel unit conversion - Add new NativeSurfaceHolder interface to GLDrawable and NativeWindow, allowing NativeSurface access (pixel unit conversion) A NativeSurfaceHolder is e.g.: - NativeWindow (is-a) - NEWT [GL]Window - GLDrawable (has-a) - [AWT|SWT]GLCanvas - [AWT|SWT]NewtEventFactory use NativeSurfaceHolder as source, fixes pixel unit conversion
* GraphUI: Fix label layout (absolute), add auto no-aa dpi threshold (200 ↵Sven Gothel2014-05-274-19/+237
| | | | dpi), add all modes to applet test-page
* Bug 741 HiDPI: [Core API Change] Bring back get[Width|Height]() in ↵Sven Gothel2014-05-274-14/+14
| | | | | | | | | | | NativeWindow, i.e. getWindow[Width|Height]() -> get[Width|Height]() We have distinguished pixel- and window units in commit f9a00b91dcd146c72a50237b62270f33bd0da98e and introduced NativeWindow.getWindow[Width|Height]() and NativeSurface.getSurface[Width|Height](). To have a unique naming scheme, we could rename all method using 'Window', but for simplicity and since there will be no 'semantic override' just use the simple version.
* Bug 1010 - Fix ES3.glPixelStorei and revalidate GLPixelStorageModesSven Gothel2014-05-261-23/+25
| | | | | | | | | | | | Remove GLES3Impl.glPixelStorei pname validation which was true for ES2 impl, but is no more valid for ES3, which accepts more values than GL_PACK_ALIGNMENT & GL_UNPACK_ALIGNMENT. Revalidate GLPixelStorageModes: - Properly support ES3 PixelStorageModes - Revalidate PixelStorageModes for all GL profiles - Properly reset values at save - Separate PACK and UNPACK save/reset/restore implementation
* Bug 1009: Refine test case (Add test06_GL3_Demo0Normal)Sven Gothel2014-05-261-9/+18
|
* Bug 741 HiDPI: Refine Monitor/Screen [virtual] Viewport Definition / Add ↵Sven Gothel2014-05-2628-508/+812
| | | | | | | | | | | | | | | | | | | | NEWT Support / Fix JAWT getPixelScale deadlock - NativeWindow/Surface/NEWT API DOC: Define Coordinate System of Window and Screen - OSXUtil: Add getPixelScale(..) via Screen index and 'windowOrView' - JAWTWindow/JAWTUtil.getPixelScale(..): Use pre-fetched AWT GraphicsConfiguration to solve AWT-TreeLock (deadlock) - [Virtual] Viewport of MonitorDevice and Screen: - Properly calculate and expose [virtual] viewport in window and pixel units - OSX Monitor viewports in pixel units are 'reconstructed' - Window/Viewport to Monitor selection shall be perfomed via window units (unique) - OSX NEWT Window create/init (native): Use given size and coordinates even in fullscreen mode Don't override by quering NSScreen coordinates, trust given values. - Fix test cases, i.e. usage of pixel- and window-units
* Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units: ↵Sven Gothel2014-05-2311-354/+388
| | | | | | | | | | | | | | | Refine commit fb57c652fee6be133990cd7afbbd2fdfc084afaa - NEWT Screen, Monitor, MonitorMode, .. - All Units are in pixel units, not window units! - On OSX HiDPI, we report the current scaled monitor resolution, instead of the native pixel sized. Need to filter out those, i.e. report only native unscaled resolutions, since out MonitorMode analogy is per MonitorDevice and not per window! - Fix usage (one by one) of - Screen and Monitor viewport usage
* Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units: ↵Sven Gothel2014-05-2219-56/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refine commit f9a00b91dcd146c72a50237b62270f33bd0da98e - Using comment tag 'FIXME HiDPI' to locate remaining issues - Fix remaining 'getPixel*(..)' -> 'getSurface*(..)' - UpstreamSurfaceHook - Fix usage (one by one) of - NativeWindow: getWindowWidth() / getWindowHeight() - NativeSurface/GLDrawable: getSurfaceWidth() / getSurfaceHeight() - mention window- or pixel units in API doc where required - use 'setSurfaceSize(..)' where appropriate to match 'getSurface*()' - GLFBODrawable - GLOffscreenAutoDrawable - UpstreamSurfaceHook.MutableSize - NativeWindow's Point: Add API doc and 'Point scaleInv(..)' - NativeSurface Simplify new conversion methods and use single in-place storage - 'int[] getWindowUnitXY(int[], int[])' -> 'int[] convertToWindowUnits(int[], int[])' - 'int[] getPixelUnitXY(int[], int[])' -> 'int[] convertToPixelUnits(int[], int[])' - NEWT Screen/Monitor - Assume screen/window units - TODO: Refine semantics - Monitor resolution probably is in pixel units ?! - Including the Rectangle/Monitor association etc etc - NEWT Window - Add setSurfaceSize(..) for convenience - Add 'Point convertToWindowUnits(final Point pixelUnitsAndResult)', etc .. - All window ops are using window units (size, pos, ..), but methods operating on the surface/drawable: windowRepaint(..) .. - TODO: Consider changing method names 'window*(..)' to 'surface*(..)' actually operating on surface/drawable - Window.windowRepaint(..) - GLAutoDrawableDelegate.windowResizedOp(..) (maybe all similar methods in here) - NEWT Mouse/Pointer Events - Using pixel units
* Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units; ↵Sven Gothel2014-05-2182-247/+247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add HiDPI for AWT GLCanvas w/ OSX CALayer Core API Change: To support HiDPI thoroughly in JOGL (NativeWindow, JOGL, NEWT) we need to separate window- and pixel units. NativeWindow and NativeSurface now have distinguished access methods for window units and pixel units. NativeWindow: Using window units - getWindowWidth() * NEW Method * - getWindowHeight() * NEW Method * - getX(), getY(), ... NativeSurface: Using pixel units - getWidth() -> getSurfaceWidth() * RENAMED * - getHeight() -> getSurfaceHeight() * RENAMED * GLDrawable: Using pixel units - getWidth() -> getSurfaceWidth() * RENAMED, aligned w/ NativeSurface * - getHeight() -> getSurfaceHeight() * RENAMED, aligned w/ NativeSurface * Above changes also removes API collision w/ other windowing TK, e.g. AWT's getWidth()/getHeight() in GLCanvas and the same method names in GLDrawable before this change. +++ Now preliminary 'working': - AWT GLCanvas - AWT GLJPanel Tested manually on OSX w/ and w/o HiDPI Retina: java com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2AWT -manual -noanim -time 1000000 java com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2GLJPanelAWT -manual -noanim -time 1000000 +++ TODO: - NEWT - Change Window.setSize(..) to use pixel units ? - OSX HiDPI support - Testing .. - API refinement
* Bug 801: Split GraphUI's TextureButton: TextureSeqButton (Base) and it's ↵Sven Gothel2014-05-1911-240/+459
| | | | | | | | | | | | | | | | | | | | | | derivations ImageSeqButton + GLEventListenerButton + MediaPlayerButton Split GraphUI's TextureButton to TextureSeqButton (Base) and it's derivations: - ImageSeqButton - displays an ImageSequence - GLEventListenerButton - displays any GLEventListener as rendered into FBO as an ImageSequence - MediaPlayerButton - displays movies - Added public ImageSequence impl. TextureSequence, was private SingleTextureSeqFrame. - Demo GPUUISceneGLListener0A shows: - MediaPlayerButton w/ Big Buck Bunny film - GLEventListenerButton w/ GearsES2 - ImageSeqButton w/ 2 textures (pressed/released)
* Minor edits: Fix comments / API-docsSven Gothel2014-05-191-0/+27
|
* TestVersionSemanticsNOUI: Derive from JunitTracerSven Gothel2014-05-141-2/+2
|
* Unit Test: Added Semantic Version Test (Current version agains v2.1.5)Sven Gothel2014-05-131-0/+114
| | | | | | | See GlueGen commits: - c06288d2a12586ab8df3715cf130549fdd7499fb - 64615f17a8c63f692159235e169dbdd14d30b737 - 1a504fa682e6f28c5543da4d5885c7f2ff4ed3f1
* Fix MovieCube/MovieSimple Graph-Text Usage: Add Alpha Blending otherwise ↵Sven Gothel2014-05-092-4/+4
| | | | shader cannot work properly
* Reduce jar-size / cleanup: Replace 1 kB test-ntsc01-57x32.png w/ 400kB ↵Sven Gothel2014-04-105-50/+52
| | | | test-ntsc01-28x16.png asset ; Generalize TextureSequenceDemo01 -> SingleTextureSeqFrame ; Unit tests use test-data, not assets.
* Bug 801: Introd. RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED hinting to ↵Sven Gothel2014-04-106-0/+6
| | | | | | | | | | | | 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.
* Bug 801: LabelButton uses DEFAULT_2PASS_LABEL_ZOFFSET in any mode, due to ↵Sven Gothel2014-04-093-38/+23
| | | | disabled depth buffer in blend mode
* VectorUtil: Fix method names, i.e. use type-suffix in end of function for ↵Sven Gothel2014-04-091-50/+50
| | | | clarity and unique method naming
* Bug 801: Region Dirty Update; TextureSequence GLMediaPlayer Fix; Blending Fix ;Sven Gothel2014-04-0910-285/+586
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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
* Add TextureSequence.isTextureAvailable(), allowing triggering action only ↵Sven Gothel2014-04-091-0/+3
| | | | when source becomes ready
* Bug 801: Fix regressions from 9c71f276d1fcc87b69b413847fd1da34b30d0932 ↵Sven Gothel2014-04-043-17/+18
| | | | (UIShape blend clear-color, RegionRenderer initialized) ..
* Bug 801: Cleanup shader-program location/data update ; Add COLORTEXTURE + ↵Sven Gothel2014-04-0420-205/+357
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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)