commit 2965f17f1abd3c3af640407187ebedded29ad105 Author: Sven Gothel Date: Thu Aug 7 00:11:37 2014 +0200 NEWT Window setSurfaceSize(..): Add API doc comment about setting pixel-unit size after creation in multiple monitor mode. commit 609b3f6d28bb13b589cde815acdb0e72e58ebe44 Author: Sven Gothel Date: Thu Aug 7 00:10:41 2014 +0200 Bug 1021: Refine Stereo API; Fix GenericStereoDevice; Fix StereoDemo01 for movie playback and OSX usage (HiDPI surfaceSize) - StereoDevice.DeviceType: Add API doc - StereoDevice: Add getFactory() - GenericStereoDevice - Use common static vars for configurations for simplicity - Fix createRenderer(..)'s eyeViewport in case no post-processing is performed, i.e. needs viewport X offset. - StereoDemo01 - Use 'movie' eyePosition instead of default if: - using a movie player _and_ using lenses! - Fix NEWT window pixel-unit size after window creation! commit 8be4b87a9740229f09b1dc2b7265e3e73c4397dd Author: Sven Gothel Date: Thu Aug 7 00:05:47 2014 +0200 Bug 1021: Fix OculusVR detection, need to probe HMD count, otherwise native SDK code crashes w/ NPE commit 5c1214b26ad6c877a9c0f8099a7fc2a230a8b245 Author: Sven Gothel Date: Wed Aug 6 06:06:01 2014 +0200 Bug 1039: Rename GLAnimatorControl.UncaughtGLAnimatorExceptionHandler -> GLAnimatorControl.UncaughtExceptionHandler commit 88eef9e4eae8e63762252f1d11bca2bd0fde809b Author: Sven Gothel Date: Wed Aug 6 05:59:08 2014 +0200 Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while GLAutoDrawable processing [part-3] Add GLAnimatorControl.UncaughtGLAnimatorExceptionHandler interface to optionally handle uncaught exception within an animator thread by the user. Implementation also requires to flush all enqueued GLRunnable instances via GLAutoDrawable.invoked(..) in case such exception occurs. Hence 'GLAutoDrawable.flushGLRunnables()' has been added. Only subsequent exceptions, which cannot be thrown are dumped to System.stderr. +++ Handling of exceptions during dispose() Exception in NEWT's disposeGL*() are also caught and re-thrown after the NEWT window has been destroyed in WindowImpl.destroyAction: - GLEventListener.dispose(..) - GLDrawableHelper.disposeAllGLEventListener(..) - GLDrawableHelper.disposeGL(..) - GLAutoDrawableBase.destroyImplInLock(..) - GLWindow.GLLifecycleHook.destroyActionInLock(..) - WindowImpl.destroyAction on NEWT-EDT - WindowImpl.destroy Further more, exceptions occuring in native windowing toolkit triggered destroy() are ignored: - GLAutoDrawableBase.defaultWindowDestroyNotifyOp(..) It has to be seen whether such exception handling for dispose() shall be added to AWT/SWT. +++ TestGLException01NEWT covers all GLEventListener exception cases on-thread and off-thread (via animator). +++ commit 07a4801f3b5bfd4fba9a1a4a542ce2f2eae4396a Author: Sven Gothel Date: Tue Aug 5 23:01:28 2014 +0200 Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while GLAutoDrawable processing [part-2] In case of an exception thrown within an GLEventListener called off-thread by Animator: - Animator shall stop - Animator shall forward the exception GLDrawableHelper shall also flush all queued GLRunnable tasks in case of an exception, so that another thread waiting until it's completion is notified and continues processing. commit b66b068b5c1c238ea702ba7e8ea0c8a1c47cfcf1 Author: Sven Gothel Date: Tue Aug 5 17:09:40 2014 +0200 Bug 1028 - AMD Windows driver thread hinders JVM process to exit/end, caused by _not_ destroying the SharedResource context SharedResourceRunner stop() method is invoked by JMV shutdown hook and GLProfile/GLDrawableFactory.shutdown*(). It shall issue SharedResource.releaseSharedResource() for all implementations, e.g. X11/GLX and Windows/WGL. +++ Root cause is a GL driver thread keeping the process alive. +++ On X11/GLX we destroy the shared context and the shared drawable. On Windows/WGL we only destroy the shared drawable, knowing that destroying the shared context caused a driver bug in the past. Will enable the shared context destruction, which is the proper way. +++ Commiting this patch to see whether our jenkins builds won't crash due to previous experienced issues. commit 6cd0a28ff2cb3f1e249b524622abf411536be716 Author: Sven Gothel Date: Mon Aug 4 14:10:47 2014 +0200 Bug 1036: Renamed property to switch off NVidia Windows workaround 'jogl.windows.cpu_affinity_mode' (dropping '.debug') commit 60f397da5fd27e2140a0c1b3a102bba0e67c9f19 Author: Sven Gothel Date: Thu Jul 31 07:32:08 2014 +0200 Fix NPE regression of commit ba1ffe66697c3175b423cb7ab9b686d73959708d commit ba1ffe66697c3175b423cb7ab9b686d73959708d Author: Sven Gothel Date: Thu Jul 31 02:42:39 2014 +0200 Bug 1039 - Specify behavior of GLEventListener Exceptions occurring while GLAutoDrawable processing [part-1] Implements Specification as described on 'Bug 1039 Comment 1' TODO: - Offthread exception handler ++++ GLDrawableHelper is used in all GLAutoDrawable implementations and for most operations. GLAutoDrawable/GLDrawableHelper invoke(..) method: - invoke(..) forwards a caught exception - if blocking, it forwards an exception happening within the passed GLRunnable(s). Here the exception is caught, printed and then thrown by invoke itself. - if non-blocking, an exception happening within the passed GLRunnable(s) will be thrown in the thread issuing it's execution, i.e. display() call. Here the exception is not caught and simply thrown by the GLRunnable. GLAutoDrawable.destroy() -> GLDrawableHelper.disposeGL(..) method: - disposeAllGLEventListener() being invoked by disposeGL(..), catches exception thrown by GLEventListener.dispose(..) and prints them to stderr. The first caught exception is re-thrown at the end as an GLException. - disposeGL() catches re-thrown GLException by disposeAllGLEventListener() for GLEventListener.dispose(..) and re-throws it when operation is complete. - disposeGL() catches an exception thrown at context destruction or release and re-throws it when operation is complete. An early exception at context.makeCurrent() is _not_ caught, since it is the first operation which simply shall unwind the stack. GLAutoDrawable.display() -> GLDrawableHelper.invokeGLImpl(..) method: - invokeGLImpl(..) for display() follows disposeGL() mechanism, i.e. it catches exception thrown at GLEventListener's init(..), reshape(..) and display(..) methods and re-throws it when operation is complete. It also catches an exception thrown at context release and re-throws it when operation is complete. An early exception at context.makeCurrent() is _not_ caught, since it is the first operation which simply shall unwind the stack. ++++ None of the above thrown exception shall be caught and suppressed on the caller side. If an operation must be completed while an exception is caught, it shall be cached and re-thrown after the operations. In case multiple exception at multiple places are caught within an operation, they all shall be cached and the first one shall be re-thrown. In case of multiple exception from the same place, i.e. a loop through all GLEventListener, the first shall be cached and re-thrown after operation is completed. It has to be determined, whether we like to dump the exceptions, especially the ones who get suppressed in case of multiple exceptions. commit 2e1484f4c25605c6dc0307f12f3e4e434c429a37 Author: Sven Gothel Date: Thu Jul 31 00:54:24 2014 +0200 Bug 830 - Refine Heuristics for to query whether GLDrawableUtil.swapGLContextAndAllGLEventListener is safe: Add Accumulator Buffer bits commit a8ccbdf228727d8eef7e6684b738a118610b5744 Author: Sven Gothel Date: Thu Jul 31 00:48:40 2014 +0200 GLDrawable: Expose getRequestedGLCapabilities() (Include to public API) In certain cases, it is required to read the user requested capabilities from places other than the user code. Hence adding public method to GLDrawable interface. This removes the need to cast to private GLDrawableImpl, which included such method. commit 289ba90b9ce118ba987b47ee70870cca77287cc0 Author: Sven Gothel Date: Wed Jul 30 22:05:52 2014 +0200 Refine test ff5dba28610b4f680c9320e9e52669ed54d4de43: Perform context switch on GL capable thread if required. Add API doc note about this requirement. commit 6a130e4468fce954ac469e2e5fd78c8496fafe24 Author: Sven Gothel Date: Wed Jul 30 20:41:08 2014 +0200 Fix commit adf8e6e40aa9513036864489642cfef252804d08 (Bug 1036): long -> jlong in JNI func spec commit ff5dba28610b4f680c9320e9e52669ed54d4de43 Author: Sven Gothel Date: Wed Jul 30 20:13:34 2014 +0200 Bug 830 - Add Heuristics for to query whether GLDrawableUtil.swapGLContextAndAllGLEventListener is safe (Doesn't work w/ pre MSAA onscreen drawable) GLDrawableUtil.isSwapGLContextSafe(..) allows user to query whether 'we think' it's safe to utilize swapping of GLContext between GLAutoDrawable instances. Currently known unsafe cases are: - between on- and offscreen and one of the following: - MSAA involved, or - STEREO involved Enhanced unit tests in this regard: - TestGLContextDrawableSwitch02AWT - using GLContextDrawableSwitchBase0 - TestGLContextDrawableSwitch02NEWT - using GLContextDrawableSwitchBase0 Utilized safe query for setupPrint(..) action in: - AWT GLCanvas - AWT GLJPanel - NewtCanvasAWT commit adf8e6e40aa9513036864489642cfef252804d08 Author: Sven Gothel Date: Wed Jul 30 16:21:17 2014 +0200 Bug 1036: NVidia's Windows Driver Threaded optimization: Alternative affinity mask setting on all threads of process - Didn't work (disabled) commit 830feb65f4c3d0c633556fd39787328834ee51d2 Author: Sven Gothel Date: Wed Jul 30 04:51:14 2014 +0200 Bug 1038 - Fix: Allow skipping detection of certain GLProfiles: Skip 'ARB_create_context' Commit e5a55ede324ce500f50991d56491758803063a58 was incomplete, i.e. it lacked the required mappings for the non ARB profile, i.e.: GL4bc -> GL3bc, etc. These profile mappings have been added now. +++ Further more, GLContext's profile queries, isGL*() test the ctxOptions for CTX_IS_ARB_CREATED. This has to be removed to properly work w/ Skip 'ARB_create_context'. To remove the risk of inconcistency, i.e. context created via ARB and non-ARB, the 'GLX/WGL profile >= GL3 via non ARB' validation removed in commit e5a55ede324ce500f50991d56491758803063a58 has been brought back and refined. Note: if( glp.isGL3() && createContextARBTried ) { // We shall not allow context creation >= GL3 w/ non ARB methods if ARB is used, // otherwise context of similar profile but different creation method may not be share-able. .. THROW EXCEPTON .. } This limited validation removes the possibility of such having a context of same profile, one created via ARB and one without. Hence also validates the isGL*() change, where the CTX_IS_ARB_CREATED criteria is removed. +++ Note regarding commit 7314b47ae1e42997e9e6974b84709640f0ac2a1b (revert): While analyzing the mapping, it turns out that commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2 "Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing)" is not fully consistent with GLProfile's and GLContext's profile queries, i.e. isGL*(). We may reiterate over this change .. but have it be reverted for now. commit 7314b47ae1e42997e9e6974b84709640f0ac2a1b Author: Sven Gothel Date: Wed Jul 30 04:24:46 2014 +0200 Revert "GLContext: Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing) ; GLProfile does this - Simplification." This reverts commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2. commit e5a55ede324ce500f50991d56491758803063a58 Author: Sven Gothel Date: Wed Jul 30 03:06:30 2014 +0200 Bug 1038 - Allow skipping detection of certain GLProfiles: Skip 'ARB_create_context' context creation extension via property 'jogl.disable.openglarbcontext'; ... Only allow the exclusions if platform OS is not OSX: - jogl.disable.openglcore - jogl.disable.openglarbcontext Since on OSX they are known to work reliable and there is not other method if receiving a higher GL profile than core and ARB. This also removes the restrictions on X11 and Windows, where profiles >= GL3 must be created using ARB_create_context. Hence this is allowed now. commit c8b99d197769eaec53c2def562c0ef3fc0e6a9d2 Author: Sven Gothel Date: Wed Jul 30 02:37:47 2014 +0200 GLContext: Don't map compatibility profiles to core profile if the latter are not available (restrict profile aliasing) ; GLProfile does this - Simplification. GLContext shall not map compatibility profiles to core profile if the latter is are not available (restrict profile aliasing). If a user requests a straight GL3 core profile, don't answer with a compatibility profile, e.g. GL4bc. Hence this patch exposes the true GL profile situation more honestly the the user! User can already query profile mappings via GLProfile, i.e. - GL2GL3, - GL4ES3, or via - getMaximum - getMaxFixedFunc - getMaxProgrammable - getMaxProgrammableCore This also fixes an issue when a user requests 'getMaxProgrammableCore' but would receive a GL4bc profile. commit d55f1061a64f92d702a7f218d2f866fa4d5fa9dc Author: Sven Gothel Date: Tue Jul 29 22:55:56 2014 +0200 Bug 1038 - Allow skipping detection of certain GLProfiles: Skip native core profiles via property 'jogl.disable.openglcore' Also moved all GL profile properties to GLProfile class and made them public for better documentation. commit 53c6a6cde3b57b54c71b9c1dc341c46854e33487 Author: Sven Gothel Date: Tue Jul 29 21:13:17 2014 +0200 FixedFuncHook: Use downstream gl.getGLProfile().getImpl() for custom GL2ES1 impl. profile, reflecting true implementing profile. commit c391da73631aa551ad73d88068efebdb1e67e650 Author: Sven Gothel Date: Tue Jul 29 21:12:23 2014 +0200 Fix ShaderCode.es3_default_precision_fp: ES 3.x requires same precision for uniforms -> re-use es3_default_precision_vp; Fixes PointsDemoES2 commit 323fd68b6cce41de4980a909ef55273a98a8aad9 Author: Sven Gothel Date: Tue Jul 29 20:52:10 2014 +0200 BuildComposablePipeline: Handle synthetic isGL* and getGL* more generic, allow FixedFunctionHook to properly determine it's identity BuildComposablePipeline: Handle synthetic isGL* and getGL* more generic, allow using a prologue hook as needed for FixedFunctionHook's 'isGL*core()', 'isGLES*Compatible()' and 'getGLProfile()' methods. The latter FixedFunctionHook take the emulated GL profile GL2ES1 into account, allowing JOGL code to assume only having GL2ES1 available. Otherwise methods like Texture.enable(..) would skip the glEnable(TEXTURE_2D) call and FixedFunctionHook could not enable it's usage. GLProfile received a 'public static GLProfile createCustomGLProfile(final String profile, final GLProfile profileImpl)' allowing utilities like FixedFunctionHook to create a generic profile. BuildComposablePipeline sorts the methods before emitting for better readability. commit 67444b99f42e5a6db282e8a7dbc0e633713d0d48 Author: Sven Gothel Date: Tue Jul 29 20:43:06 2014 +0200 GLContext.hasNoDefaultVAO(): Remove ES 3.x, fixing issues w/ ES 3.x client side vertex arrays Commit 6136457f10d020c779adc78641d0048f77ab1635 defined hasNoDefaultVAO() as [ GL4, GL3, GLES3 ], however ES 3.x still supports (deprecated): - client side vertex arrays - default vertex array object (VAO) Setting a custom VAO leads to GL_INVALID_OPERATION for client side vertex arrays used w/ glVertexPointer(..). Hence removing GLES3 from hasNoDefaultVAO(). commit 3ad880dfe3d5eb1eaa9db9860acdf24a3f159a58 Author: Sven Gothel Date: Tue Jul 29 05:42:12 2014 +0200 WindowsWGLDrawableFactory: Fix html doc commit 70c6a54fa2b8dec880b5808d87b31f4afb09dd3b Author: Sven Gothel Date: Tue Jul 29 05:41:47 2014 +0200 Bug 1036: NVidia Windows Driver 'Threaded optimization' workaround. [3/3] Commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b added a workaround for NVidia's Windows Driver Threaded optimization bug existing in NVidia driver 260.99 for Window from 2010-12-11. Commit 007f120cd8d33e4231ef4d207b85ed156d1e0c82 fixed the workaround and made it optional, default: turned off! Rational of turning the workaround off was due to testing against the original test-case 'Applet and Webstart' with drivers >= 266.58 from 2011-01-24, which did not reproduce this issue. However, our unit tests reproduced the issue, e.g. test: com.jogamp.opengl.test.junit.jogl.caps.TestTranslucencyNEWT Hence we have to re-enable the workaround per default. Added the following documentation of the issue: +++ Since NV driver 260.99 from 2010-12-11 a 'Threaded optimization' feature has been introduced. The driver spawns off a dedicated thread to off-load certain OpenGL tasks from the calling thread to perform them async and off-thread. If 'Threaded optimization' is manually enabled 'on', the driver may crash with JOGL's consistent multi-threaded usage - this is a driver bug. If 'Threaded optimization' is manually disabled 'off', the driver always works correctly. 'Threaded optimization' default setting is 'auto' and the driver may crash without this workaround. If setting the process affinity to '1' (1st CPU) while initialization and launching the SharedResourceRunner, the driver does not crash anymore in 'auto' mode. This might be either because the driver does not enable 'Threaded optimization' or because the driver's worker thread is bound to the same CPU. Property integer value jogl.debug.windows.cpu_affinity_mode: 0 - none (no affinity, may cause driver crash with 'Threaded optimization' = ['auto', 'on']) 1 - process affinity (default, workaround for driver crash for 'Threaded optimization' = 'auto', still crashes if set to 'on') +++ Note: WindowsThreadAffinity does _not_ work. commit 3fe8ce051d6d0d2da456434a3f6e7bc4e95c9281 Author: Sven Gothel Date: Tue Jul 29 05:08:16 2014 +0200 WindowImpl: Fix intendation commit 9be28a33fa92cfa52bdf13ad5c21f8317f66c319 Author: Sven Gothel Date: Mon Jul 28 19:05:37 2014 +0200 Bug 1016 - GLJPanel Offscreen FBO size may exceed GL MAX TEXTURE SIZE, only use an FBO TextureAttachment if required We only require an FBO TextureAttachment if using GLSL vertical flip, otherwise we simply requires a color renderbuffer. Further, the 'FBO fboFlipped' in GLSL vertical flip mode also simply requires a color renderbuffer. commit 6361d12c0b03132c57d326750b7911b313f3664b Author: Sven Gothel Date: Mon Jul 28 18:39:18 2014 +0200 GLJPanel: Enhance API doc on setSkipGLOrientationVerticalFlip(..) commit 9e05d25c2ec65ddc6454d1b5d29a6726678a4b3f Author: Sven Gothel Date: Mon Jul 28 18:38:18 2014 +0200 GLJPanel: Only dump verbose debug on frameCount each frame if property 'jogl.debug.GLJPanel.Frames' is defined commit c223c64a195fb543167d66b7e9ce3661eb48d772 Author: Sven Gothel Date: Mon Jul 28 18:37:01 2014 +0200 GLJPanel: Enhance the class API-doc commit 1d813dbb19ee20c7d0a3a4614c88e3733fd489dc Author: Sven Gothel Date: Mon Jul 28 18:36:17 2014 +0200 Bug 1037 - FBObject: Add proper attachment size validation at init, reset and attachColorbuffer(..) / attachRenderbuffer(..) commit e96882ae569c681e1b28da6701bf547f6dd9eda8 Author: Sven Gothel Date: Mon Jul 28 15:29:59 2014 +0200 Bug 1037 - FBObject/GLFBODrawable: Do not assume using a TextureAttachment for a Colorbuffer, also make DEPTH optional. API Change +++ In certain cases a TextureAttachment for the FBO's color buffer is not desired, either for performance reasons where texture functionality is not required or to avoid texture restrictions like size, etc. +++ GLFBODrawable shall use TextureAttachment for the FBO's color buffer and a DEPTH buffer per default. However, the user shall be allowed to use a plain ColorAttachment (renderbuffer) and also no DEPTH buffer. +++ FBObject Details: - Colorbuffer interface exposes Attachment details like format, size, etc as well as it's implementation specifics, isTextureAttachment() and getTextureAttachment() allowing a clean cast and type query. - Allow ColorAttachment to be used for non MSAA - Make TextureAttachment optional for method 'use(GL, TextureAttachment)' - Only validate size against MAX_TEXTURESIZE if using a TextureAttachment - API Change: - rename: getColorAttachmentCount() -> getColorbufferCount() - add: getTextureAttachmentCount() - change 'TextureAttachment getSamplingSink()' -> 'Colorbuffer getSamplingSink()' commit 876a168f6757454e8a02543b53e32b89e54282bd Author: Sven Gothel Date: Mon Jul 28 00:47:33 2014 +0200 Bug 1029 - Memory leak in GLDrawableHelper: 'perThreadInitAction' shall use a WeakReference Static ThreadLocal 'perThreadInitAction' leaks memory if using a hard reference, utilizing a WeakReference allows the passed 'initAction' owner to be garbage collected. commit 15b9e36e80d6f62f7dfb5c45d00cd04de2007ee5 Author: Sven Gothel Date: Sun Jul 27 23:23:15 2014 +0200 Bug 1035 - Allow Gamma [Brightness, Contrast] settings to be performed on display/screen of a NativeSurface Currently GLDrawableFactoryImpl's gamma settings are performed only on the main screen. Allow passing a NativeSurface, so it's display/screen gamma values will be changed. Further, promote low-level gamma settings to GLDrawableFactory for direct usage. Change com.jogamp.opengl.util.Gamma to use a GLDrawable instead of a GL object to clarify that we use the drawable. Also add a GLAutoDrawable variant, allowing proper locking of its 'upstream-lock' to guarantee atomicity. +++ Tested manually w/ TestGearsES2NEWT on X11 and Windows using the 'g' and 'G' to modify gamma. Value is properly reset on exit. commit 007f120cd8d33e4231ef4d207b85ed156d1e0c82 Author: Sven Gothel Date: Sun Jul 27 04:00:26 2014 +0200 Fixed and Changed NVidia Windows Driver Threaded optimization bug workaround of commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b Commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b added a workaround for the NVidia driver 260.99 for Window from 2010-12-11 issue. [1] The workaround sets a process affinity while JOGL initialization to mitigate NVidia driver's 'Threaded optimization := On' race conditions. The process affinity is reset reset after initialization. [2] The process affinity reset code had a bug, i.e. instead to restore the original process's affinity mask, we restored the system's default affinity mask. [3] Further more, there seem to be issues with changing a process affinity mask regarding the process group. This patch: - Solves issue [2] by using the original process affinity mask - Solves issue [3] by allowing a custom affinity mode via the property 'jogl.debug.windows.cpu_affinity_mode': - 0 - none (default, no affinity required for Windows NV driver >= 266.58 from 2011-01-24) - 1 - process affinity (was required w/ Windows NV driver 260.99 from 2010-12-11, see commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b) - 2 - thread affinity (experimental) Hence the workaround is disabled by default, since the crash as dicumented in commit 5166d6a6b617ccb15c40fcb8d4eac2800527aa7b could not be reproduced with NV driver 266.58 from 2011-01-24. commit c77b8f586cb2553582a42f5b90aeee5ef85f1efe Author: Sven Gothel Date: Sun Jul 27 03:49:21 2014 +0200 Bug 1033: Guarantee atomicity of high-level GLAutoDrawable operations, avoiding race conditions. GLAutoDrawable (API CHANGE) allowing atomic operations: - Add class API-doc chapter about 'GLAutoDrawable Locking' - Add method invoke(..) API-doc description about throwing IllegalStateException in case of a detected deadlock situation ahead (Note: Implemented in GLDrawableHelper.invoke(..) for all implementations) - Add new methods for proper multithread handling: - public RecursiveLock getUpstreamLock(); - public boolean isThreadGLCapable(); +++ GLEventListenerState/GLDrawableUtil: - Perform operation in a atomic fashion, i.e. lock GLAutoDrawable during whole operations: - GLDrawableUtil.swapGLContext(..) - GLDrawableUtil.swapGLContextAndAllGLEventListener(..) - GLEventListenerState.moveFrom(..) - GLEventListenerState.moveTo(..) - ReshapeGLEventListener: - Moved from GLEventListenerState.ReshapeGLEventListener -> GLDrawableUtil.ReshapeGLEventListener - Takes 'displayAfterReshape' case into account. +++ javax.media.opengl.Threading Clarifications: - Public 'enum Mode', i.e. Threading.Mode - Public getMode() - Clarified 'isOpenGLThread()': - Take 'singleThreaded' into account directly, i.e. always return 'true' if singleThreaded == false commit 37760af388303834e359703aad9562ce6165845f Author: Sven Gothel Date: Fri Jul 11 03:09:58 2014 +0200 Bug 1024: Add fallback for native-jar-file location via classpath Adapt to GlueGen commit f5c48efcf546ba4e08e197ccced6df83b57e1755 commit 1b0ffca8d067037150e38c5b87f66a299f253dea Author: Sven Gothel Date: Thu Jul 10 16:58:36 2014 +0200 Refine commit 808d95cd692ab666271a83c70e8509859586de72 LICENSE.txt: Add optional removal of oculusvr artifacts from official builds, if user dislikes. commit 787cae330a837cf03d22004d86f8c808ee4f04df Author: Sven Gothel Date: Thu Jul 10 16:50:36 2014 +0200 StereoClientRenderer: Fix API doc anchor link commit 22918e26ac717d661d45c764177780454f06c937 Author: Sven Gothel Date: Thu Jul 10 16:50:16 2014 +0200 Refine 'GLSharedContextSetter' test cases: Use 'setSharedAutoDrawable(sharedAutoDrawable)' where possible; Fix/Refine API doc. commit 6e16950d5d4a87e84e34c93d44f49866183729d4 Author: Sven Gothel Date: Thu Jul 10 16:06:32 2014 +0200 Refine commit ec2d94ca26ddab8ec67135ebc5f2d0a43f6a4c25: Call 'areAllGLEventListenerInitialized()' directly from GLAutoDrawable commit 808d95cd692ab666271a83c70e8509859586de72 Author: Sven Gothel Date: Thu Jul 10 15:32:37 2014 +0200 Refine JOGL's LICENSE.txt: Distinguish between 'New BSD 2-Clause License' compatible and not-compatible materials! OculusVR RIFT SDK license is not compatible, but usable and optional! .. also refine A.7) Oculus VR Rift SDK Software License commit 94f850ba9fdbec76b6c74eea5d4322352d3021a6 Author: Sven Gothel Date: Thu Jul 10 15:03:52 2014 +0200 StereoDeviceRenderer/ClientRenderer: Add note about 'Correct Asymmetric FOV Rendering', using FovHVHalves - incl. references commit 9d7a7e55c95fcf29ce1ed0804fd7791c1c1147de Author: Sven Gothel Date: Thu Jul 10 14:03:34 2014 +0200 Bug 982: Adding test TGA file for confirmation - No bug commit ec2d94ca26ddab8ec67135ebc5f2d0a43f6a4c25 Author: Sven Gothel Date: Thu Jul 10 01:11:00 2014 +0200 Bug 1031: Remove Deprecated Classes and Methods (JOGL) Removed Deprecated Class: - com/jogamp/opengl/util/TGAWriter.java - Use TextureIO w/ .tga suffix - com/jogamp/opengl/util/awt/Screenshot.java - Use: - com.jogamp.opengl.util.GLReadBufferUtil, or - com.jogamp.opengl.util.awt.AWTGLReadBufferUtil The latter for reading into AWT BufferedImage See: TestBug461FBOSupersamplingSwingAWT, TestBug605FlippedImageAWT - javax/media/opengl/GLPbuffer.java - Use: caps.setPBuffer(true); final GLAutoDrawable pbuffer = GLDrawableFactory.getFactory( caps.getGLProfile() ).createOffscreenAutoDrawable(null, caps, null, 512, 512); - See: TestPBufferDeadlockAWT, .. Removed Deprecated Methods: - Constructor of AWT-GLCanvas, SWT-GLCanvas, AWT-GLJPanel with argument 'final GLContext shareWith' See GLSharedContextSetter, i.e. glCanvas.setSharedContext(..) ! - GLDrawableFactory.createOffscreenAutoDrawable(..) with argument 'final GLContext shareWith' See GLSharedContextSetter, i.e. offscreenAutoDrawable.setSharedContext(..) ! - GLDrawableFactory.createGLPbuffer(..), see above! - com.jogamp.opengl.util.av.AudioSink 'enqueueData(AudioDataFrame audioDataFrame)', use 'enqueueData(int, ByteBuffer, int)' - GLSharedContextSetter.areAllGLEventListenerInitialized(), migrated to GLAutoDrawable ! - GLBase's - glGetBoundBuffer(int), use getBoundBuffer(int) - glGetBufferSize(int), use getBufferStorage(int).getSize() - glIsVBOArrayBound(), use isVBOArrayBound() - glIsVBOElementArrayBound(), use isVBOElementArrayBound() - NEWT MouseEvent.BUTTON_NUMBER, use BUTTON_COUNT commit efa5f1110725d41b7ea58010fe34b2a8aacd185b Author: Sven Gothel Date: Wed Jul 9 21:32:13 2014 +0200 Bug 801: Add Graph pass-2 shader for VBAA 'odd' sample count commit 4fd8983ecce4c95ff502604fbeb4ecabcf1f5c26 Author: Sven Gothel Date: Tue Jul 8 23:17:49 2014 +0200 StereoDevice: Don't make inner class's method private due to wrapper generation (still, findbugs didn't report this) commit 59125627b731705f656c1aac99d08b864665b445 Author: Sven Gothel Date: Tue Jul 8 23:17:03 2014 +0200 Findbugs: Comment on some issues (OK, they are) ; Remove dead branches commit 947bf9c45261013d81cc7199cb71c89b88b18fdf Author: Sven Gothel Date: Tue Jul 8 23:16:10 2014 +0200 Findbugs: Use static fields where possible commit 27115b5f050e881f959a33c04e7d3988bfe676bf Author: Sven Gothel Date: Tue Jul 8 23:15:33 2014 +0200 Findbugs: Use inner static class where possible commit a2b75f52db38be223261cd378a4bc330cc2d3ede Author: Sven Gothel Date: Tue Jul 8 22:14:45 2014 +0200 Findbugs: Misc issues (Use private accessors of static fields; Use boolean operator; Avoid NPE commit a00ee5f8126aeb7deadb3fbd4a7210b8ea0feda1 Author: Sven Gothel Date: Tue Jul 8 22:12:48 2014 +0200 Findbugs: Use 'float' division instead of integer for float results commit cc9361f542d3b8bcbbf5edbd07c8e686b06ce66e Author: Sven Gothel Date: Tue Jul 8 22:11:55 2014 +0200 Findbugs: Use AtomicInteger for synchronized increment access commit 9f0d303c2c325a5580054fe92f384c9a4076b065 Author: Sven Gothel Date: Tue Jul 8 22:10:47 2014 +0200 AnimatorBase: Use cached synchronized value instead of unsynchronized (sloppy left-over code) commit de53d193c86a02a3cdc46c5c8758192d957d1c67 Author: Sven Gothel Date: Tue Jul 8 22:10:03 2014 +0200 Findbugs: Misc minor issues (see below) - remove duplicate code in branch - Use Type.valueOf(primitive) - Don't use array.toString() directly - remove dead code commit be2b608e22d9a2a3a80eb547bee6180c2ca22678 Author: Sven Gothel Date: Tue Jul 8 22:05:56 2014 +0200 Findbugs: Add comments that FB warnings are of no concern .. commit f37592d54f3633c0f195a10770020cbb5a732809 Author: Sven Gothel Date: Tue Jul 8 22:03:51 2014 +0200 Findbugs: Remove dead-code / unused [temp] storage and it's assignment commit 815776c5760e42c8b3c858a9bab982b203c59c24 Author: Sven Gothel Date: Tue Jul 8 21:13:15 2014 +0200 Findbugs: Remove branches where reference cannot be null commit a41db57df54863566b0e286cd100bbbc5518eb7f Author: Sven Gothel Date: Tue Jul 8 21:09:30 2014 +0200 Findbugs: Use .valueOf(..) instead of 'new (..)' commit b740161d456c059d1b51029c603ce144eb2b2d44 Author: Sven Gothel Date: Tue Jul 8 19:03:06 2014 +0200 Fix regression of commit 96d530e7127c89db9991080e6268c6e8430d0619: EGLDisplayUtil.eglCreateEGLGraphicsDevice(..) call w/ uninitialized 'surface' commit 6770a6b013f2950a10bbc6c351a1fbe53412be30 Author: Sven Gothel Date: Tue Jul 8 12:41:11 2014 +0200 Findbugs: Add comment about intended setting of static field by instance method. commit 3a5c8c722ae23b7724d285a53aa5c7e3e6e400d9 Author: Sven Gothel Date: Tue Jul 8 12:40:28 2014 +0200 Findbugs: Fix WindowImpl.getReconfigureFlags(..): Remove sloppy useless assignment-or, replace by plain or commit 81af9b231847f695e6ba1d734209e1e532bbf922 Author: Sven Gothel Date: Tue Jul 8 12:39:31 2014 +0200 Findbugs: Add FIXME comment regarding float comparison (consider using FloatUtil.isEqual(ax, bx, epsilon), FloatUtil.isZero(bx, epsilon), ..) commit 2fd70277c17c2efff8b5a6c3fc5bd4dddc66736b Author: Sven Gothel Date: Tue Jul 8 12:38:53 2014 +0200 Findbugs: Use Integer.parseInt(string) for int values to avoid boxing and unboxing commit b388a572c8ef9c971dbc16b89069429cc67c0928 Author: Sven Gothel Date: Tue Jul 8 12:37:14 2014 +0200 Findbugs: Remove redundant instanceof checks commit 109e162a78ef5bab0a7481a8499ad1da48cea094 Author: Sven Gothel Date: Tue Jul 8 12:36:13 2014 +0200 Findbugs.static_final_immutable: Use final qualifier for static immutable instances. commit 98053b73f1ba937108e03556456e51aa95b09b70 Author: Sven Gothel Date: Tue Jul 8 10:51:54 2014 +0200 GenericStereoDevice: Cast to float before operating division, requesting float. Base aspect-ratio on eyeTextureSize commit 7d0c81f28d44179c7dafeeff1f3787f8aec622aa Author: Sven Gothel Date: Tue Jul 8 10:50:52 2014 +0200 Findbugs.increment_volatile: Use AtomicInteger or add comment that operation is safe! commit 73d2a436f92e360126167d9ce09b3d9637204921 Author: Sven Gothel Date: Tue Jul 8 10:48:58 2014 +0200 Findbugs.switch-case: GLBuffers.bytesPerPixel(..) throw GLException for type BITMAP && format !COLOR_INDEX || !STENCIL_INDEX commit 96d530e7127c89db9991080e6268c6e8430d0619 Author: Sven Gothel Date: Tue Jul 8 10:47:41 2014 +0200 Findbugs.not-written.null: Fix referencing non-written fields (never written or due branching) - AWT TextRenderer: Add throw new InternalError("fontRenderContext never initialized!"); FIXME! - GLContextImpl.hasFBOImpl(): Fix serious NPE issue if extCache is null - GLDrawableFactoryImpl.createOffscreenDrawableImpl(..): - Fix NPE issue w/ null drawable - Fix resetting GammaRamp by ensuring originalGammaRamp will be set at 1st setGammaRamp(..) - AndroidGLMediaPlayerAPI14: Fix NPE: Use already resolved local referenced - EGLDrawableFactory: Fix NPE: Only operate on non null surface! - ALAudioSink.dequeueBuffer(..): Only resolve releasedBuffer elements if not null - commit db25b1ba6575210741e485838d0882a1590125e6 Author: Sven Gothel Date: Tue Jul 8 10:33:44 2014 +0200 Findbugs.synchronization: Fix double-check w/o volatile; Remove redundant synchronized from setter commit b5910f18f0b82a8a1f6f6252dc19971d5e487f39 Author: Sven Gothel Date: Tue Jul 8 10:10:39 2014 +0200 Findbugs.normal: Adding safeguard hashCode() implementation throwing InternalError("hashCode not designed") As long we don't use Object.hashCode() to idenitify the memory address, we can safeguard the code. commit 326cd5074f14d89a2cd8a6658472784aeda11a87 Author: Sven Gothel Date: Tue Jul 8 10:06:58 2014 +0200 Findbugs.minor: Fix 'array -> string', missing argument commit 38e51e4a5f6f35c658df10f6d48a33e3ffaea2f3 Author: Sven Gothel Date: Mon Jul 7 23:46:19 2014 +0200 Bug 1021: Add GenericStereoDevice* Supporting custom configurations; Hook-in 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. commit bda482e4eee76a5ba2139645682ae64dadacbc6b Author: Sven Gothel Date: Sat Jul 5 08:27:03 2014 +0200 Fix FloatUtil.makePerspective(..): The tan(fovy/2) shall be used, not 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. commit f8f0f051604721bceaee214b8e5218fd47d2eb9e Author: Sven Gothel Date: Sat Jul 5 04:04:43 2014 +0200 Bug 1021: Make OVR access vendor agnostic: Package '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. commit 2293a53ba04a8cf2881e8919f8be97c16a9af336 Author: Sven Gothel Date: Thu Jul 3 19:03:03 2014 +0200 build: Add oculusvr java-doc ; Add jogl-test-java-src.zip in 7z archive commit c1008db1863f96fb6d09d52154b6c37d1d01404d Author: Sven Gothel Date: Thu Jul 3 19:02:26 2014 +0200 HowToBuild: Add 'libudev-devel' for oculusvr-sdk sub-module compilation commit 043a9f751ab24e1c50a333d97a7f8f78e5e2a7a1 Author: Sven Gothel Date: Thu Jul 3 16:52:39 2014 +0200 Bug 1021: Fix remaining build issues if sub-module oculusvr-sdk is missing commit 556d92b63555a085b25e32b1cd55afce24edd07a Author: Sven Gothel Date: Thu Jul 3 16:21:36 2014 +0200 Code Clean-Up based on our Recommended Settings (jogamp-scripting 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 commit a90f4a51dffec3247278e3c683ed4462b1dd9ab5 Author: Sven Gothel Date: Thu Jul 3 15:06:12 2014 +0200 FloatUtil.makePick(..): Refine API doc, incl. PMVMatrix.gluPickMatrix(..) commit 62bc3219736ea003e69d8a63dc4ce29841d4129e Author: Sven Gothel Date: Thu Jul 3 13:55:56 2014 +0200 Bug 1021: OVRSBSRenderer*: Add texture filtering parameter (bilinear/none), 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. commit f37cab0d57697655279e32d5282bff8e9aa40715 Author: Sven Gothel Date: Thu Jul 3 12:13:51 2014 +0200 Bug 1021: OVRDistortion.getSBSUpstreamPMV(..): Use all cached eye parameter (example implementation only) commit 1e83f5436b0b504e299ba712e714cae9da1f87e7 Author: Sven Gothel Date: Thu Jul 3 10:16:17 2014 +0200 Bug 1021: OVRDistortion.getSBSUpstreamPMV(..): Use generic perspective matrix constructor (example implementation only) commit d44e8ada30d62149c5d4d4b8fdba7cc33f8c765b Author: Sven Gothel Date: Thu Jul 3 09:35:34 2014 +0200 Bug 1021: Refine Stereo Rendering API and OculusVR implementing renderer 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. +++ commit 36327e24cf586b50bf18e87d7d13d53eb41cf1d9 Author: Sven Gothel Date: Tue Jul 1 21:02:21 2014 +0200 Bug 1021: Add OculusVR distortion renderer (single FBO and dual FBO); Add 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 commit a0498e240b9dfde345a704ec6de1d6abcee7b318 Author: Sven Gothel Date: Tue Jul 1 18:28:18 2014 +0200 Fix (c) header: Due to copy & paste, wrong header was used for certain files .. (sorry) commit 5951b33b303df3a12888fe0fbc5ccc88112a3984 Author: Mark Raynsford Date: Mon Jun 30 12:45:53 2014 +0000 Attempt to remove aliasing from native libraries. Renamed: jogl-core.jar → jogl.jar nativewindow-core.jar → nativewindow.jar The build scripts have been edited to produce sets of natives for each "module" (as opposed to producing one set of natives and then have each module point to them via aliasing). Bug: 1023 Bug: 1024 Depends on 46faa59d439ef235d7691fc64d56eedc600ffa1a from gluegen. commit bd76d3fe74c518b509f86c38f8871bec7f5213a2 Author: Sven Gothel Date: Sun Jun 29 08:36:09 2014 +0200 Bug 1027: Fix usage of atomic jar files (NEWT) 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. commit a668ab82817c14c7b29052b1e6f892d19cb074ec Author: Sven Gothel Date: Sun Jun 29 08:23:56 2014 +0200 OculusVR: Add in eclipse classpath, and jogl-java-src.zip; Also create jogl-test-java-src.zip commit 43c85971bba8a188b8888f68133ad4ecc97131fd Author: Sven Gothel Date: Sat Jun 28 16:07:36 2014 +0200 Fix 'typo' in messages: 'Catched' -> 'Caught' commit f91dad1a0898959fb379f0f5a2081fe0fbb50f9d Author: Sven Gothel Date: Sat Jun 28 04:08:16 2014 +0200 WIP: Add Matrix4 OO wraper for FloatUtil matrix operations commit 2a93c7f6eb042f87176b55ccbf2fdedb5093374a Author: Sven Gothel Date: Sat Jun 28 03:07:40 2014 +0200 Add missing FloatUtil.invertMatrix(..) unit test, which impl. changed w/ commit ee774dce9e474e8ea961bd9b504d26e9321e1b15 commit ee774dce9e474e8ea961bd9b504d26e9321e1b15 Author: Sven Gothel Date: Sat Jun 28 03:02:25 2014 +0200 Enhance FloatUtil: More optimizations, concludes commit 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. commit 0bded476868c5fdfe44502bfd55957469d0d72bb Author: Sven Gothel Date: Fri Jun 27 18:16:43 2014 +0200 Enhance FloatUtil: Merge ProjectFloat features while adding optimized 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 commit 21b84da775fae5806481ecc658a207bf603126d5 Author: Sven Gothel Date: Fri Jun 27 08:57:09 2014 +0200 GLU: Make ProjectFloat/ProjectDouble final and deprecate GLU.destroy() method. commit 6611735d544a2e09d56213dbfff4a1cd8a029529 Author: Mark Raynsford Date: Thu Jun 26 15:02:32 2014 +0000 Produce duplicate natives in the build, in preparation for removing support for aliasing in native library loading. Specifically, produce: jogl-all-noawt-natives-${os_and_arch}.jar jogl-all-mobile-natives-${os_and_arch}.jar jogl-all-android-natives-${os_and_arch}.jar commit fd121c63a94c28b3a27a866c5c1316694d67c43a Author: Sven Gothel Date: Wed Jun 25 23:43:47 2014 +0200 Fix build if oculusvr-sdk submodule is missing commit 08649aec02bae161423871c9bb3ec9a011e91088 Author: Sven Gothel Date: Wed Jun 25 12:58:13 2014 +0200 Bug 1021: OVR GlueGen Mapping: Handle non-existent native oculusvr lib gracefully - query isAvailable() in ovr_Initialize(), ovrHmd_Create(..) and ovrHmd_CreateDebug(..) and return appropriate values. commit 008b3512be183cefc82e051b36c7a74d53c4906d Author: Sven Gothel Date: Wed Jun 25 12:39:48 2014 +0200 Bug 1021: OVR GlueGen Mapping: Compile all generated C files, add missing C ovrHmdStruct in generated files, reduce warnings. commit a515faf5e7d679b7ad87a05fa8fc81ab148bcd41 Author: Sven Gothel Date: Wed Jun 25 10:18:56 2014 +0200 Bug 1021: Enhance OVR GlueGen Mapping / Adapt to GlueGen commit 9ee44e1a289ecbac024662dd5a2ffc42e8add023 (Bug 1025) commit e1dc63254918092b1066983657194b198f6389e5 Author: Sven Gothel Date: Fri Jun 20 10:49:32 2014 +0200 www .. c3d desc (2) commit c28214ca693e2ee34183d2766cb46cfb4b7cdc37 Author: Sven Gothel Date: Fri Jun 20 10:46:25 2014 +0200 www: shorten c3d desc. commit c6884a48c2c51b9bfe2378d8d3be41138980d6d5 Author: Sven Gothel Date: Fri Jun 20 10:34:38 2014 +0200 WWW: Update CCT's C3D Entry commit ae17eca383cce89a000062c3a86e415a6753066b Author: Sven Gothel Date: Fri Jun 20 08:20:12 2014 +0200 Bug 1021: Add note about 'Oculus VR Rift SDK Software License' in LICENSE.txt commit d7d8d11abad1e4e17532068333dfe9dddf2942a2 Author: Sven Gothel Date: Fri Jun 20 08:05:06 2014 +0200 Bug 1021: Add OculusSDK binding (Bring-up on OSX w/ clang/clang++ ; Split native build: cc, c++, linkage) - Bring-up on OSX w/ clang/clang++ - Build and tested on OSX 10.9 - Split native build: cc, c++, linkage - Perform steps sequentually to not differentiate c and c++ compiler as required for clang/clang++ - compile c code - compile c++ code - link all object files commit b54e87d2cebf6aa0def18f172cbfa111c4efc837 Author: Sven Gothel Date: Fri Jun 20 06:36:08 2014 +0200 Bug 1021: Add OculusSDK binding / Basic OVR support (Bring-up on Windows w/ Mingw64 ; Solve static linkage of stdc++) - Bring-up on Windows w/ Mingw64 - Bumped oculusvr-sdk to commit 70e44b846ceaf9eebc336b12a07406c3a418a5c3 - Added required mingw64 linker statments - Builds and runs on x86_64 and i386 - Solve static linkage of stdc++ - "-Wl,-Bstatic -lstdc++ -Wl,-Bdynamic" MUST come AFTER all object files!! - No more manual '--undefined=symbol' required .. puhh :) - Cleanup linker cfg .. - Still runs on GNU/Linux x86_64 and i386 commit 589070da2be7e097b7415503011387ad1f6e14d5 Author: Sven Gothel Date: Fri Jun 20 00:02:14 2014 +0200 Bug 1021: Add OculusSDK binding / Basic OVR support (HowtoBuild.xml: Mention feature loss if not fetching submodules) commit 8a4dacf38c9d78bc0aafae91cbd256148835ee9b Author: Sven Gothel Date: Thu Jun 19 23:58:38 2014 +0200 Bug 1021: Add OculusSDK binding / Basic OVR support (Refine build exclusion) common: - property 'oculusvr.sdk.available' is only set if sub-module 'oculusvr-sdk' is available - if 'oculusvr.sdk.available' is not set build.xml will not issue build-oculusvr.xml's 'all' target build-oculusvr.xml: - propery 'oculusvr.build.enabled' is only enabled if 'oculusvr.sdk.available' is set and targer 'all' will only pass if set. commit 40d7d0d18ed11b8dbb0f16137f82eef828b822a4 Author: Sven Gothel Date: Thu Jun 19 23:21:19 2014 +0200 Bug 1021: Add OculusSDK binding / Basic OVR support Bring-up test only initializes the ovrHmdHandle data structure by OVR native code. See com.jogamp.oculusvr.OVRVersion Current evaluation build compiles all OVR-SDK source files itself w/o using provided libovr.a. We also skip the GL dependent renderer of the SDK, i.e. we prefer to utilize our JOGL 'barrel distortion' renderer. This eases the 'chicken-egg' problem of OVR SDK dependencies, i.e. libGL, libGLESv2 .. etc Since the OVR source code is C++, we may still have to figure out how to / and whether we shall link libstdc++ statically to remove platform dependencies. Right now we link libstdc++ statically if using GCC, see make/build-oculusvr.xml (hackish .. TODO: better way to include all symbols). Same consideration applies to GNU/Linux and libudev.so dependency, since there are: - libudev.so.0 and (Older distri's) - libudev.so.1 (Debian8, ..) ... Produced JAR artifacts are - jar/atomic/oculusvr.jar - jar/atomic/oculusvr-natives-.jar i.e. only in 'atomic' variants to not bloat the default 'all' JAR files. .... make/build-oculusvr.xml Notes: - Currently native build only enabled on GNU/Linux (isLinux) - Force disable native build via property 'c.build.oculusvr.skip' commit 20bf51f2ccbecf1ab21ef3dbd2ff06e04ebd40cc Author: Sven Gothel Date: Thu Jun 19 18:06:01 2014 +0200 Bug 1021: Adding submodule oculusvr-sdk and adjust HowToBuild (git clone --recurse-submodules ) commit 80335380a644ea37cc618ad1fd49c0ebd076a251 Author: Sven Gothel Date: Thu Jun 19 17:50:45 2014 +0200 Minor refinements: .gitignore HowToBuild commit 799e2c79eac6e45ad16eeffee9194f1a2677b167 Author: Sven Gothel Date: Wed Jun 18 03:50:19 2014 +0200 Adapt to GlueGen commit 2f6586292cd298bbc19d8acda0f7cf303c82078b (compount call-by-value extension) - GLU*: initializeImpl() is no more required, since it's not forced .. uncomment in manual static initializer - GLX: 'ForceStaticInitCode GLX', i.e. forcing native code, as used in our manual implementation. commit 4e91f5e085585481b542c476a1ba599f2e914bf1 Author: Sven Gothel Date: Tue Jun 17 23:42:58 2014 +0200 Fix regression due to GlueGen commit 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. commit 68ca3ae8fcce28c62034299bc6e6f7eaab50bd1f Author: Sven Gothel Date: Tue Jun 17 03:07:15 2014 +0200 Adapt to GlueGen commit c3054a01990e55ab35756ea23ab7d7c05f24dd37 (compount call-by-value extension), utilizing native JVMUtil_NewDirectByteBufferCopy(..) commit 321cac1e125f806eb437e528b343d07379b31163 Author: Sven Gothel Date: Fri Jun 13 04:22:17 2014 +0200 Fix Bug 826 Regression caused by commit 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. commit 1c5b41f01c9f31f7bd787c6b194f7939904e239b Author: Sven Gothel Date: Thu Jun 12 21:08:21 2014 +0200 Fix NEWT EDTUtil Deadlock on EDTUtil.start() 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. commit 5626740d14554acf7a17a73ec12b0893445832d0 Author: Sven Gothel Date: Thu Jun 12 08:20:38 2014 +0200 Fix Bug 1019 - Remedy of Bug 691 causes 'access/modify after free' and 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. commit 94de08a2b0661d072324677c729fc8d1b3d0ef0f Author: Sven Gothel Date: Wed Jun 11 03:35:45 2014 +0200 GraphUI Demo: Analyze issue w/ OSX and NewtCanvasAWT when rendering / 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) .. commit ea0f37d33acff83091fdb0e47a70cfad7186dfe8 Author: Sven Gothel Date: Wed Jun 11 02:36:43 2014 +0200 Graph RegionRenderer: Fix GL3 and ES3 GLSL issues Macro redefine 'texture2D -> texture' was added _after_ the custom texture lookup insertion causing GL3-core to fail. commit 3b6e6caeb24a112a2b1fbee5f54bbdc0bbf865c0 Author: Sven Gothel Date: Wed Jun 11 01:29:30 2014 +0200 Graph: Fix GLSL issue w/ ES3, add 'const float sample_count', since define SAMPLE_COUNT is of type 'int' commit bc905a107d83d291f6ea34391768d16a9842bfc1 Author: Sven Gothel Date: Wed Jun 11 01:28:14 2014 +0200 Bug 1011 / Bug 1012: GLMediaPlayer Audio/Video stuttering w/ OSX and OpenAL/JOAL (works using openal-soft default on all platforms now) commit 021735487716f15cef8d7d8d317b9cabbacea9dd Author: Sven Gothel Date: Wed Jun 11 01:01:37 2014 +0200 Remove explicit xcode.clang property files commit 2d50663d43b627b5569d8d9538a0507813ac0fc6 Author: Sven Gothel Date: Mon Jun 9 23:51:03 2014 +0200 GLMediaPlayer: Fix video stutter if using NullAudioSink NullAudioSink shall return the last enqueued PTS in getPTS() not causing a-v delta measure based on lagging audio in player. commit 99230cc04b6d0143088129ccc1a20d5c8799ca67 Author: Sven Gothel Date: Mon Jun 9 16:42:33 2014 +0200 GraphUI: Fix using multiple texture units w/ opt. colorTexUnit in GLRegion The texture unit has to be updated always, since program maybe used by multiple regions and diff. texUnits commit 4686a652d821efe04045333026be79270bc19bfd Author: Sven Gothel Date: Mon Jun 9 03:58:37 2014 +0200 Bug 741 HiDPI: Add ScalableSurface.getNativeSurfaceScale(..) to compute 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 .. commit 14ff638b63fc7adaa59f351891f6a38806d7fa5d Author: Sven Gothel Date: Sun Jun 8 22:50:22 2014 +0200 NEWT Window: Remove deprecated methods: HiDPI + reparentWindow(..) 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. commit 58153310faa4089417037e67e06c0812908cecd2 Author: Sven Gothel Date: Sun Jun 8 18:04:51 2014 +0200 Bug 741 HiDPI: Simplify ScalableSurface (2): Add request pixelScale API 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); commit 3fb76fcef1e6dd552ec0f677af67baf3186a1434 Author: Sven Gothel Date: Sun Jun 8 15:57:53 2014 +0200 Bug 741 HiDPI: Simplify ScalableSurface [set|get]SurfaceScale(..) spec, 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. commit 2571ed0b5ef14155d204540d38b564a7d4cd47b6 Author: Sven Gothel Date: Sun Jun 8 08:11:57 2014 +0200 Bug 741 HiDPI: Add ScalableSurface interface to get/set pixelScale w/ full 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 ' - Added basic auto unit test (setting pre-realization) commit ff7bf3122fd2007bbe70cfadca9f0f978ee96456 Author: Sven Gothel Date: Sun Jun 8 07:24:43 2014 +0200 Minor: API-Doc / DEBUG Typo, GDISurface: Make fields private commit 64518911395ee9698a326f4ca01b2ad28dabf673 Author: Sven Gothel Date: Sun Jun 8 07:23:14 2014 +0200 UpstreamSurfaceHook: Add 'NativeSurface getUpstreamSurface()' (from EGLUpstreamSurfaceHook) to generalize ProxySurfaceImpl.getUpstreamSurface() commit ebe980ad6ac40148bc84913d1ba1f7adf6200490 Author: Sven Gothel Date: Fri Jun 6 12:51:45 2014 +0200 Bug 741 HiDPI: Add new NativeSurfaceHolder interface to GLDrawable and 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 commit 026cade97eab6fbd04e8bc902f24a2b61723acb8 Author: Sven Gothel Date: Thu Jun 5 19:28:17 2014 +0200 NEWT AWTAdapter: Simplify event processing / Window.enqueueEvent(..): Add API doc Simplify event processing of NEWT's AWTAdapter: - enqueueEvent -> processEvent - add return value (new enum) determinating action Using processEvent(..) now reduces manual invocation of NEWT Window.enqeueEvent(..). commit f9ce025372b0b1cb9b8db78a0d4294861172bc1e Author: Sven Gothel Date: Wed May 28 00:50:59 2014 +0200 Bug 741 HiDPI: Fix missing window -> pixel unit conversion in AWTNewtEventFactory of commit 8b255eb303bba045b4eb087da1d1cb33b2e89e96 commit c142f237d171e1cd16918a2f897447444a709b56 Author: Sven Gothel Date: Tue May 27 23:45:52 2014 +0200 GraphUI: Fix label layout (absolute), add auto no-aa dpi threshold (200 dpi), add all modes to applet test-page commit 8b255eb303bba045b4eb087da1d1cb33b2e89e96 Author: Sven Gothel Date: Tue May 27 20:20:40 2014 +0200 Bug 741 HiDPI: Add missing window -> pixel unit conversion in AWTNewtEventFactory (e.g. for NewtCanvasAWT) commit fcd59768d776e202d3b03b7a9fee2aac69b3b663 Author: Sven Gothel Date: Tue May 27 19:56:43 2014 +0200 Bug 741 HiDPI: Fix OSX NEWT Offscreen Size Regression from commit 56d60b36798fa8dae48bf2aa5e2de6f3178ab0d1 Fix regression of commit 56d60b36798fa8dae48bf2aa5e2de6f3178ab0d1: createWindow(..) was issuing sizeChanged(..) to ensure size notification, however - the offscreen case used the dummy size 64x64. Fix issues the notifications in caller w/ true size. commit bcda2dad1a6569ffd4eba07b231d50fdafc60b7f Author: Sven Gothel Date: Tue May 27 03:55:38 2014 +0200 Bug 741 HiDPI: Fix regression MIN_MONITOR_DEVICE_PROPERTIES: Adding missing 'Rotated Viewport window-units' / Refine API doc in MonitorModeProps Regression of commit 56d60b36798fa8dae48bf2aa5e2de6f3178ab0d1 commit d149c554b453c86a880a4f0595bb8e340c80d041 Author: Sven Gothel Date: Tue May 27 00:05:17 2014 +0200 Bug 741 HiDPI: [Core API Change] Bring back get[Width|Height]() in 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. commit 8093767535b00f785fe89513ce43b02c97e267a5 Author: Sven Gothel Date: Mon May 26 19:20:03 2014 +0200 NewtCanvasSWT: Fixe newtChild NPE; Perform getParentLocationOnScreen() on valid SWT thread (OSX: on main-thread); unclutter updatePosSizeCheck(..) commit fc1e98790a02b4fa7922f3cdd9d437f87d7c99e5 Author: Sven Gothel Date: Mon May 26 19:18:43 2014 +0200 Bug 1010 - Fix ES3.glPixelStorei and revalidate GLPixelStorageModes 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 commit 93bbc064a1a4cf80079f28e48a5deb50de4a9e66 Author: Sven Gothel Date: Mon May 26 19:16:52 2014 +0200 Bug 1009: Refine test case (Add test06_GL3_Demo0Normal) commit d354cf767182c27f44ad4c00d2e975f8d689daa8 Author: Sven Gothel Date: Mon May 26 19:15:42 2014 +0200 Bug 1009: Make FBObject's sampling sink format compatible w/ sampling source if possible (ES3 spec requirement) Make FBObject's sampling sink format compatible w/ sampling source if possible, i.e. for all GL profiles but ES1 and ES2. This is an ES3 spec requirement: For ES3, sampling-sink colorbuffer format must be equal w/ the sampling-source Colorbuffer. ES3 BlitFramebuffer Requirements: OpenGL ES 3.0.2 p194: 4.3.2 Copying Pixels: If SAMPLE_BUFFERS for the read framebuffer is greater than zero, no copy is performed and an INVALID_OPERATION error is generated if the formats of the read and draw framebuffers are not identical or if the source and destination rectangles are not defined with the same (X0, Y 0) and (X1, Y 1) bounds. Texture and Renderbuffer format details: ES2 Base iFormat: OpenGL ES 2.0.24 p66: 3.7.1 Texture Image Specification, Table 3.8 - ALPHA, LUMINANCE, LUMINANCE_ALPHA, RGB, RGBA ES3 Base iFormat: OpenGL ES 3.0.2 p125: 3.8.3 Texture Image Specification, Table 3.11 - ALPHA, LUMINANCE, LUMINANCE_ALPHA, RGB, RGBA DEPTH_COMPONENT, STENCIL_COMPONENT, RED, RG ES3 Required Texture and Renderbuffer iFormat: OpenGL ES 3.0.2 p126: 3.8.3 Texture Image Specification - RGBA32I, RGBA32UI, RGBA16I, RGBA16UI, RGBA8, RGBA8I, RGBA8UI, SRGB8_ALPHA8, RGB10_A2, RGB10_A2UI, RGBA4, and RGB5_A1. - RGB8 and RGB565. - RG32I, RG32UI, RG16I, RG16UI, RG8, RG8I, and RG8UI. - R32I, R32UI, R16I, R16UI, R8, R8I, and R8UI. +++ Our implementation shall attempt to use the same format for the sampling-source and -sink wherever possible, e.g. GL2ES3 (excluding ES1 and ES2)! commit 2790c756d5b88448d14cc302036581a57f3ffd53 Author: Sven Gothel Date: Mon May 26 19:11:39 2014 +0200 Bug 1013: Fix switching monitor resolution for NEWT Window (content black after) / Bug 741 HiDPI: Update pixelScale after monitor mode change This seems to be a bug within QUARTZ .. hence this is a workaround Monitor-Mode-Changed Notification: - In case the window is not in fullscreen, render it temporary invisible until the mode change is completed. - Also update the HiDPI pixel-scale when the mode change is completed. commit 759d90674d977bae24ba58684fad3830f7f0d40f Author: Sven Gothel Date: Mon May 26 19:04:41 2014 +0200 Bug 1012: Fix erroneous handling of multiple monitor coordinates on OSX with NEWT To properly convert Top-Left (TL) from/to Bottom-Left (BL) coordinates we need to utilize the given CGDisplay viewport (TL) and NSScreen (BL) to perform the y-flip. This is especially true for the case of having multiple monitors covering different viewports (mixed resolution). commit 56d60b36798fa8dae48bf2aa5e2de6f3178ab0d1 Author: Sven Gothel Date: Mon May 26 18:54:27 2014 +0200 Bug 741 HiDPI: Refine Monitor/Screen [virtual] Viewport Definition / Add 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 commit 98ed02cdb7b325d8afde596a5ef04f97be2018d4 Author: Sven Gothel Date: Fri May 23 00:00:48 2014 +0200 Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units: 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 commit fb57c652fee6be133990cd7afbbd2fdfc084afaa Author: Sven Gothel Date: Thu May 22 07:09:23 2014 +0200 Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units: 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 commit f9a00b91dcd146c72a50237b62270f33bd0da98e Author: Sven Gothel Date: Wed May 21 08:53:54 2014 +0200 Bug 742 HiDPI: [Core API Change] Distinguish window-units and pixel-units; 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 commit 0ffba122ea5c4b8cc247234ca9f48ccfcce833cd Author: Sven Gothel Date: Tue May 20 21:01:21 2014 +0200 Bug 742 HiDPI: Add prelim HiDPI support to GLJPanel w/o API change and w/o fixing AWTPrintLifecycle DPI evaluation We also have to re-validating AWTPrintLifecycle's DPI semantics, since we currently are based on pixel dimension w/ 72 dpi! commit 83be0fa0ffe96c1acbc232965c2c03f40768184d Author: Sven Gothel Date: Tue May 20 20:58:40 2014 +0200 Bug 742 HiDPI: Add access to private HiDPI in AWT pixelScale value in JAWTUtil and JAWTWindow commit 0959f73ed6740724736c4871a7b63e3449f2f185 Author: Sven Gothel Date: Tue May 20 01:06:28 2014 +0200 GLMediaPlayerImpl: Change access of most fields to private for clarity and API stability commit cca2782818bec79f63a5da1719b11e15244dbea2 Author: Sven Gothel Date: Tue May 20 01:02:27 2014 +0200 Bug 801: Refine commit 9a15aad0e5388a4b927e44d3d2ce136f32474bc2 cache TextureSequence's fragment shader hash-code Adding TextureSequence.getTextureFragmentShaderHashCode() allowing to use a cached hash-code (performance, interface usability). Implemented in GLMediaPlayerImpl and ImageSequence. commit d73a4a37bd4a376fc712ecc03332b8cf8821d134 Author: Sven Gothel Date: Mon May 19 23:41:31 2014 +0200 Extract FFMPEGNatives's Audio + Video formats to their own class in AV private package. jogamp.opengl.util.av.impl.FFMPEGNatives.SampleFormat -> jogamp.opengl.util.av.AudioSampleFormat jogamp.opengl.util.av.impl.FFMPEGNatives.PixelFormat -> jogamp.opengl.util.av.VideoPixelFormat .. to be reused for other decoders later-on. commit 9a15aad0e5388a4b927e44d3d2ce136f32474bc2 Author: Sven Gothel Date: Mon May 19 23:38:37 2014 +0200 Bug 801: Fix RegionRenderer's TextureSequence shader program selection (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. commit fa9f2883664ba015f778c32df9aa69897db63d55 Author: Sven Gothel Date: Mon May 19 23:35:06 2014 +0200 Bug 801: Split GraphUI's TextureButton: TextureSeqButton (Base) and it's 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) commit 42107f055878d817b9a568f62564540f218eb57a Author: Sven Gothel Date: Mon May 19 23:24:23 2014 +0200 Minor edits: Fix comments / API-docs commit 1a10db565491d27d135cff898efec58e45cc306f Author: Sven Gothel Date: Mon May 19 23:22:49 2014 +0200 Texture/TextureIO: Make 'wrapping' Texture ctor public, remove same factory method from TextureIO commit c8b1eb11f143bb1d0b276554ff1455d8b7616e33 Author: Sven Gothel Date: Wed May 14 01:22:27 2014 +0200 TestVersionSemanticsNOUI: Derive from JunitTracer commit 8acae6df2ca6884f65ad4b32ed2d35d6a1c46f87 Author: Sven Gothel Date: Tue May 13 16:46:38 2014 +0200 Unit Test: Added Semantic Version Test (Current version agains v2.1.5) See GlueGen commits: - c06288d2a12586ab8df3715cf130549fdd7499fb - 64615f17a8c63f692159235e169dbdd14d30b737 - 1a504fa682e6f28c5543da4d5885c7f2ff4ed3f1 commit aa1c04ebee23d0803880d6d68ae73109c1a5c178 Author: Sven Gothel Date: Mon May 12 01:07:34 2014 +0200 JAWTWindow: Non intrusive workaround for Bug 1004 and providing AppContextInfo to mitigate related bugs, e.g. Bug 983 Bug 1004, as well as Bug 983, are caused by issueing certain AWT tasks from a Thread which ThreadGroup is not mapped to a valid sun.awt.AppContext (AppContext). The 'certain AWT tasks' are all quering the current EventQueue instance, which is associated to the AppContext. This operation will fail and cause a NullPointerException. This workaround simply gathers a ThreadGroup which is mapped to the desired AppContext. This AppContext ThreadGroup is being used to launch a new Thread which is then mapped to an AppContext and hence can issue all AWT commands. +++ In the Bug 1004 scenario, JAWTWindow is constructed from within the AWT EDT, which ThreadGroup does belong to the AppContext. Here the issue is that an AWT operation was invoked from the OSX main thread, which itself does not belong to the AppContext. The workaround as described above solves this issue. +++ For Bug 983 the scenario is different, since JAWTWindow is _not_ constructed from a thread which ThreadGroup is mapped to the AppContext. [It is also not constructed on the AWT-EDT]. It is recommended to have Java3D gathering the AppContextInfo itself early and issues the JAWTWindow creation on an eligible thread using AppContextInfo.invokeOnAppContextThread(..) similar to JAWTWindow.attachSurfaceLayer(..). This will allow removing the more intrusive remedy of Java3D commit bdda2ac20bfef85271da764d1989ec3434d5c67a and simply issuing the crucial commands on a proper thread. +++ The more intrusive workaround of above commit does not work in general at least for Bug 1004 (OSX and Applets). While forcing the mapping of the 'alien' thread-group to the AppContext work for the 1st launch w/ the 1st AppContext, a second launch w/ a new AppContext will fail. Here we did update the new AppContext knowledge in AppContextInfo, however a NPE is received in getEventQueue() .. since the AppContext is gathered after patching, but the EventQueue is still null. Further more, using static knowledge of AppContext/ThreadGroup mapping violates at least the Applet lifecycle. Here we can have one ClassLoader with multiple AppContext - i.e. Applets. commit f4d15c7f664d8048ada6ef39f99818062a6701b4 Author: Sven Gothel Date: Fri May 9 09:47:08 2014 +0200 Add generic manual build script to test against distribution's default openjdk + ant commit 6c5f79e6c8144ed5b238b3612abefe9f64d9b18a Author: Sven Gothel Date: Fri May 9 09:23:06 2014 +0200 FFMPEGMediaPlayer / FFMPEGv10Natives: Fix libav-10 and ffmpeg-2.x version validation (libavutil) commit 00a163e328c772e83fc4d3d67c1ced9a51db4993 Author: Sven Gothel Date: Fri May 9 08:45:01 2014 +0200 Libav/FFMpeg: Bump headers of final version libav-10 / ffmpeg-2.2 commit fc4eed03e537991c6744f931589cf8dbc963ca75 Author: Sven Gothel Date: Fri May 9 07:56:40 2014 +0200 Fix MovieCube/MovieSimple Graph-Text Usage: Add Alpha Blending otherwise shader cannot work properly commit 3cde33e0ef3a79cefa0a56b29d6912bb3f6b7988 Author: Sven Gothel Date: Fri May 9 07:54:15 2014 +0200 manual tests: Add exp. gluegen-rt-alt.jar to 'ALT' classpath commit 82df5f664a3dfe136031deae0b0db28fcb3a3f31 Author: Sven Gothel Date: Fri May 9 07:53:11 2014 +0200 Fix some unit tests: Add ant-junit4.jar to classpath commit 2c33be06787d300c7ec1e406c8425ad1e3a7f72d Author: Sven Gothel Date: Fri May 9 07:51:14 2014 +0200 HowToBuild: ant 1.8.2 ; Complete GNU/Linux dependencies w/ openjdk, ant and p7zip, refine Debian 7 and 8 i386 on amd64 details commit ea0f6946bff1bc9032a2db86971d053191d331a6 Author: Sven Gothel Date: Fri May 9 07:31:38 2014 +0200 Manual test scripts: Pass classpath via '-cp' instead of env CLASSPATH commit 81aa171cd79c10fde9ebd02af516eabbd7283e48 Author: Harvey Harrison Date: Fri Apr 11 11:02:37 2014 -0700 jogl: avoid writing into an uninitialized array in nurbs code pspec is never initialized, this would have always crashed. Signed-off-by: Harvey Harrison commit e0241be09419849ed88c68ea2a387a46bde2b77f Author: Harvey Harrison Date: Fri Apr 11 10:58:09 2014 -0700 jogl: avoid bugs with sign-extension in JPEGDecoder Signed-off-by: Harvey Harrison commit b222d19e5f45fc3683b58dd788262597a1e14635 Author: Sven Gothel Date: Thu Apr 10 06:52:16 2014 +0200 Reduce jar-size / cleanup: Replace 1 kB test-ntsc01-57x32.png w/ 400kB test-ntsc01-28x16.png asset ; Generalize TextureSequenceDemo01 -> SingleTextureSeqFrame ; Unit tests use test-data, not assets. commit 45395696c252c215a8a22d05e5da7e98c662d07e Author: Sven Gothel Date: Thu Apr 10 00:31:52 2014 +0200 Bug 801: Introd. RenderState.BITHINT_GLOBAL_DEPTH_TEST_ENABLED hinting to 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. commit 16324b8f8369379ab4db013c4785a496b25c7094 Author: Sven Gothel Date: Thu Apr 10 00:28:09 2014 +0200 GraphUISceneDemo Applet: Add JOAL for GLMediaPlayer usage commit b4beeec1423d0d25b834fb41d957f4409441d413 Author: Sven Gothel Date: Wed Apr 9 16:42:02 2014 +0200 build-test.xml: Handle hs_err_pid*.log files, i.e. clean-up and archive commit 1c4a353b7edbbc03440197db3c2dabfc37f8010d Author: Sven Gothel Date: Wed Apr 9 16:41:17 2014 +0200 Bug 801: LabelButton uses DEFAULT_2PASS_LABEL_ZOFFSET in any mode, due to disabled depth buffer in blend mode commit 11021769c78343b842b723a432a08946a65a1ceb Author: Sven Gothel Date: Wed Apr 9 16:40:13 2014 +0200 NEWT MouseEvent: Decouple pointerIds from single-pointer button, i.e. always use proper pointerId >= 0 In case of single-pointer mouse events, always use pointerId 0, don't derive from button name. Multiple pointer events still derive button name from the 'action' pointerId. This allows applications to utilize pointerId equally for single and multiple pointer events. Passed all 'junit.run.newt.event' unit tests commit 38365e14977714df3f19fb6b5880dd6f4d4d5743 Author: Sven Gothel Date: Wed Apr 9 09:25:55 2014 +0200 VectorUtil: Fix method names, i.e. use type-suffix in end of function for clarity and unique method naming commit fe47c613e3e07681a5366d6ec3f071fdc4ade65d Author: Sven Gothel Date: Wed Apr 9 09:09:51 2014 +0200 Bug 801: Region Dirty Update; TextureSequence GLMediaPlayer Fix; Blending Fix ; - 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 commit ff4e2b1996d2cfab1eb154020106004fb71471fd Author: Sven Gothel Date: Wed Apr 9 08:38:09 2014 +0200 Fix ShaderCode.insertShaderSource(..): Return 'position' if nothing has been added; ShaderCode.addDefaultShaderPrecision(..): Branch GLES3 before GLES2, since gles2.isGLES2() == true commit 9bcf943a1c149fd2a196a321260a32b51814a0b0 Author: Sven Gothel Date: Wed Apr 9 08:35:30 2014 +0200 FFMPEGMediaPlayer: Use 'const' qualifier in shader stub commit f43b1f946159007b31162f765b1fa7b37991f940 Author: Sven Gothel Date: Wed Apr 9 08:34:50 2014 +0200 PinchToZoomGesture: Add 'delta' value [-1..1], move 'InputEvent trigger' up to GestureHandler commit 7ff2fcb36540aaed087e3a2ba2f0f84916bce2e2 Author: Sven Gothel Date: Wed Apr 9 08:33:00 2014 +0200 Add TextureSequence.isTextureAvailable(), allowing triggering action only when source becomes ready commit be8d0765317cdcb44bbe3016cc18273ecace9324 Author: Sven Gothel Date: Wed Apr 9 08:31:41 2014 +0200 Add AABBox.getRayIntersection(..), VectorUtil.line2PlaneIntersection(..) incl. getNormal*(..) and getPlane*(..) AABBox.getRayIntersection(..) provides the intersecting coordinates, where the fast alternative AABBox.intersectsRay(..) does not. commit 0234452455511713fcbfd5df1987c3958cca781b Author: Sven Gothel Date: Wed Apr 9 08:25:30 2014 +0200 Fix Quaternion.rotateByEuler(..): Zero rotation shall lead to NOP instead of setting identity commit 56bd8f3007005ecbf31a19b6a02788b33910c90b Author: Sven Gothel Date: Sat Apr 5 03:13:56 2014 +0200 NEWT Events: Use final .. (minor edit) commit 71f96087bb8f3d171dba718668db7cd32f254bdf Author: Sven Gothel Date: Fri Apr 4 03:02:54 2014 +0200 Bug 801: Fix regressions from 9c71f276d1fcc87b69b413847fd1da34b30d0932 (UIShape blend clear-color, RegionRenderer initialized) .. commit 9c71f276d1fcc87b69b413847fd1da34b30d0932 Author: Sven Gothel Date: Fri Apr 4 02:30:00 2014 +0200 Bug 801: Cleanup shader-program location/data update ; Add COLORTEXTURE + 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) commit abc833631e0ab30a06c7aff47a39a551544fd735 Author: Sven Gothel Date: Wed Apr 2 19:25:16 2014 +0200 Bug 801: Reduce temp. object creation, i.e. GC load commit e8a5a1cbb988670ca206ab1ac633e19a91bfa478 Author: Sven Gothel Date: Wed Apr 2 04:41:48 2014 +0200 Bug 801: WIP 2/2 - Add color attribute; Switch Shader instead of branching 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 commit d6d9db6334193ec1cf3c1f00b2a9e154a15d779f Author: Sven Gothel Date: Tue Apr 1 16:43:59 2014 +0200 X11/WGL GLContext Impl: setGLFunctionAvailability(..) w/ withinGLVersionsMapping:=true if null == sharedContext .. otherwise no quirk could be set on non ARB ctx GL implementations. null == sharedContext, always for first context creation, i.e. indeed within GL version mapping. commit 6bee2a236e4ca4e1fac5d6f975e32b5942e1edf6 Author: Sven Gothel Date: Tue Apr 1 16:34:41 2014 +0200 Cleanup *GraphicsDevice: Use 'final' for ctor parameter; DefaultGraphicsDevice.getUniqueID(..) shall perform 'intern()' only once. commit b935d5248aef79e2386a284b32f5888348a382d6 Author: Sven Gothel Date: Tue Apr 1 16:31:05 2014 +0200 Bug 801: WIP 1/2 - Add color attribute; Switch Shader instead of branching 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, .. commit 07d1c5a272e528d130daf37b9aa7077aac8d748e Author: Sven Gothel Date: Wed Mar 26 13:20:00 2014 +0100 Demos MovieCube/Simple: Update video URLs .. since download.blender.org seems to be down / Use h264 stream for 'desktop' as well commit 592bb0d90e08747e87aa7c9e23167d12e3de788c Author: Sven Gothel Date: Wed Mar 26 11:07:21 2014 +0100 MovieCube/Simple on Android/GLES: Cache FPS Region (updated only each second) to mitigate low-performance (update is CPU bound) commit d7e710c7be9cfc26e2c35d5332f3dc5002538d75 Author: Sven Gothel Date: Wed Mar 26 10:38:28 2014 +0100 Fix test applets: GraphTextDemo (No MSAA, add VBAA def. ctor GPUTextGLListener0A); MovieCube (Size 800x600) commit 38febaa43f91e389ffdaf64a2cdd8145629e0b8d Author: Sven Gothel Date: Tue Mar 25 23:55:39 2014 +0100 Bug 801: Adjust Tests: GPUUIScene* use window proportional button size; Add Android MovieCubeActivity0a for 'no text' version commit b078f74cc707e7fc962efde08ab5d9cc6667e27c Author: Sven Gothel Date: Tue Mar 25 16:39:18 2014 +0100 Bug 801: Graph OpenGL ES2 and ES3 Compatibility - Remove 'const' qualifier in shader graph code for non 'absolute' const values - Use extension directive OES_standard_derivatives only for ES2.0, not ES3.0 (graph shader) - Compare float w/ float literals, not int literals! - Android Demo NEWTGraphUI2pActivity: - Is a VBAA example, hence disable scene MSAA! commit ec5724493bb9398134553a7354e08497e778a9cb Author: Sven Gothel Date: Tue Mar 25 15:49:42 2014 +0100 Bug 801: Use allsamples 'brute force' for VBAA (best quality) ; Demos: Reduce text contrast by 1/10th allowing better AA ; GPUUISceneGLListener0A uses proportional window height font size and one label w/ 10pt commit dcb4a911a7df6caa0da71ebf8f77edc8d83b0c24 Author: Sven Gothel Date: Tue Mar 25 14:22:02 2014 +0100 TypecastRenderer: Validate Shape Generation - Result: OK commit 923ca6e77c03d602f9a5a71713cf5d973451687b Author: Sven Gothel Date: Tue Mar 25 06:41:21 2014 +0100 ShaderCode: Allow 'srcRoot' to be optional ; RegionRendererImpl01: Allos custom shader commit b71f91e67270958bdb2940615a83e4d1ccc9ca0a Author: Sven Gothel Date: Tue Mar 25 06:40:08 2014 +0100 Bug 801: Elaborate on multisampling performance/quality: Flipquad, RGSS, Quincunx Using poles only as sampling points is not as effective as: flipquad > rgss >> quincunx Best quality would be 'wholeedge', i.e. average every supersample, however performance is worse here. References: commit b4817d053d7af20dae33774e430bf79a3d3c6fcd Author: Sven Gothel Date: Sat Mar 22 06:23:50 2014 +0100 Bug 801: Revise Graph VBAA (Add border dropping MSAA; Test diff. AA modes 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: commit 523d1dae2431fdd56d39d3ea06220cfed412a0b5 Author: Sven Gothel Date: Wed Mar 19 22:35:52 2014 +0100 GLRendererQuirks.NoMultiSamplingBuffers: Prelim detection of this quirk due to Gallium/Nouveau Driver (TODO: Handle it in GLCapabilities Selection) commit ba6668b012ab201bc566119a63f45ff70555afbb Author: Sven Gothel Date: Tue Mar 18 00:08:18 2014 +0100 Adding missing jogl-applet-runner-newt-GraphUISceneDemo03-napplet.html (Now testing all 3: MSAA, VBAA, VBAA+MSAA) commit 928c9cacad95605de2855753f87254fd4577df20 Author: Sven Gothel Date: Mon Mar 17 23:57:23 2014 +0100 Adding missing jogl-applet-runner-newt-GraphUISceneDemo02-napplet.html commit 2a643528c9107d4e96598058b0a6bc392683c557 Author: Sven Gothel Date: Mon Mar 17 20:44:21 2014 +0100 Graph: Fix NPE in case of double destroy call .. (VBORegion2PMSAAES2) commit 5ff1300ddc9daadb885614462a769f6407487e59 Author: Sven Gothel Date: Mon Mar 17 20:42:44 2014 +0100 Graph: Fix NPE in case of double destroy call .. commit f572da5aef6d0cb0731495254578a87e5b668a13 Author: Sven Gothel Date: Mon Mar 17 17:13:06 2014 +0100 SceneUIController: Remove unused (and not commited) Matrix reference commit b8d551939b3d27b5c680c202f0a36836b29a5ab8 Author: Sven Gothel Date: Mon Mar 17 17:11:37 2014 +0100 Fix GraphUI - Remove MSAA if in VBAA mode (double AA not so good) - Adding NApplet for VBAA commit ec721c80b9e490cbec1ecbf67a5f79bbeb073885 Author: Sven Gothel Date: Mon Mar 17 16:18:10 2014 +0100 Bug 801: GraphUI .. Missed 'CrossHair' Class (Commit 6382ee094953fd4fef35a8e60a29b482ae1b79c3) commit 6382ee094953fd4fef35a8e60a29b482ae1b79c3 Author: Sven Gothel Date: Mon Mar 17 16:14:44 2014 +0100 Bug 801: GraphUI .. Fixed transformations, cleanup - All shape-object oriented actions. http://jogamp.org/files/screenshots/graphui/01/ commit 8e39433ee85835a0e4a8b1bdac6c31c2518ba5b4 Author: Sven Gothel Date: Mon Mar 17 16:13:50 2014 +0100 AABBox: Add rotate(..) commit 3595f18c35676ed5e420174acd8f2f8dd75ca3be Author: Sven Gothel Date: Mon Mar 17 09:22:51 2014 +0100 Quaternion: Add rotateByEuler(..); AABBox: Add translate(..); Minor edits .. commit 5e728baa72517865d602580b920d9bdfdfb26c65 Author: Sven Gothel Date: Sun Mar 16 06:07:07 2014 +0100 Bug 801: Revisit UIShape/SceneController (Ray-Picking, Full Object/Model 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 commit 8352cb7c5d8cc971c87f13fe9f61e346c4d2c541 Author: Sven Gothel Date: Sun Mar 16 01:43:27 2014 +0100 Add generic support for picking via raycast intersection and AABBox (or similar) - New simple type Ray, denominating a .. ray - Added PMVMatrix.gluUnProjectRay(..) similar to gluUnproject(..) however, result is a Ray. - Added AABBox.intersectsRay(Ray) .. commit f0bb162ab18cb39e6b8e07649aa826fbe84c6950 Author: Sven Gothel Date: Sun Mar 16 01:36:59 2014 +0100 NEWT: Minor edits commit 101567f5f16d91a13c8067764d5e14eefb2b9936 Author: Sven Gothel Date: Sat Mar 15 16:54:34 2014 +0100 FloatUtil/VectorUtil: Enhance isEqual/compare w/ and w/o epsilon, add unit tests - Cleanup VectorUtil (vec2/3 naming, remove dedundant functions) commit 06fbb390d28bc247945931699e1d59bdd76230c6 Author: Sven Gothel Date: Sat Mar 15 11:29:52 2014 +0100 Bug 801: Fix GPUUISceneGLListener0A (GraphUI Demo) .. Transformations .. etc commit 7e2512c8f63cee63ab2f74407fb94859fe20043a Author: Sven Gothel Date: Sat Mar 15 10:21:36 2014 +0100 Quaternion: User EPSILON for all tests against zero and one (identity .. ) and document the same. ; Minor edits .. commit 0b61e9a2641e38475a330303e49f6becf99158e1 Author: Sven Gothel Date: Sat Mar 15 07:02:35 2014 +0100 Bug 801: Remove Vertex.Factory from AffineTransform ; Add AABBox tranformed resize. commit e4641e304fbc64a5d185a39c6ca6357cc678e013 Author: Sven Gothel Date: Sat Mar 15 05:47:01 2014 +0100 Bug 801: Outline/OutlineShape tranform and sort fixes ; Quaternion: Reduce 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 in sortOutlines to avoid reversal of list - Extract OutlineShapeXForm, pairing { OutlineShape, AffineTransform } commit e2ceb1af352ec73967f2c15341d10fa3069b0a84 Author: Sven Gothel Date: Fri Mar 14 08:26:01 2014 +0100 PMVMatrix.glLoadMatrix(Quaternion): Load Quaternion's directly w/o intermediate matrix commit e16e974a3e2b38c65355838eeb010954354097d2 Author: Sven Gothel Date: Fri Mar 14 08:13:42 2014 +0100 Bug 801: Add Frustum support to Region; Misc .. 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 .. commit 70979247aad156418c32959bbf4962f175191ec2 Author: Sven Gothel Date: Fri Mar 14 08:05:07 2014 +0100 Quaternion: Fix and enhance class incl. Extensive Unit Tests (all passed) - 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) commit b3fb80b4e03818f1f7dfdddd1ffcb01e6a0a8acc Author: Sven Gothel Date: Fri Mar 14 07:50:20 2014 +0100 Math and PMVMatrix: Cleanup and Refine - Added final qualifier where possible - Refined API doc - FloatUtil: - Add machine EPSILON - fixed value and runtime computed (real machEps) - incl. isZero(..), isEqual(..) - Add makeRotationAxis(..) - Moved from PMVMatrix for reusage - Add makeRotationEuler(..) - New, not recommended due to Gimbal-Lock - Add copyMatrix[Column|Row](..) - Add more PI variations and trigo-func float mappings - Removed cross and normalize, use VectorUtil! VectorUtil: - Add copyVec* - Add equals and isZero w/ and w/o EPSILON - Add distance[Square] - Add length[Square] PMVMatrix: - Removed 'destroy' method in favor of making most fields 'final'. AffineTransform: - Added AABBox transform - Public multiply commit 3a3bbd87955321d790ba0f63402c573047304b1a Author: Sven Gothel Date: Fri Mar 14 07:26:51 2014 +0100 Doc NEWT-Overview: Add notion about Window Parenting commit 68eb9f1ea136428b64fe9246865fbabb8c82f6ac Author: Sven Gothel Date: Thu Mar 6 23:30:03 2014 +0100 Bug 801: AffineTransform: Remove Serializable, make methods final; FloatUtil: Add DEBUG and description about Row-Major and Column-Major Order. AABBOX: Use FloatUtil.DEBUG for mapToWindow(..) commit 0799ac2fd303c86b09194cfcdad916cf1f94c96d Author: Sven Gothel Date: Thu Mar 6 23:26:48 2014 +0100 Bug 801: Fix UI-Graph Demo (Part-1) ; TextRegionUtil: Add Generic processString(..) using ShapeVisitor interface (visitor pattern) commit 200fe22baae4047e6d22152c760662c85be54fba Author: Sven Gothel Date: Wed Mar 5 03:27:47 2014 +0100 Bug 801: Fix 183e1bc1868699b99eb9f9c8bf18d646d1120a48 'window box' Calculation Commit 183e1bc1868699b99eb9f9c8bf18d646d1120a48 only mapped object's bbox max/min points to window space, which is wrong due to possible rotation in 3d space. This commit adds AABBox.mapToWindow(..) method, which correctly either uses 4 points of the bbox in 3d space (using center-z) or all 8-points and creating a new bounding box. The resulting width and height of this window bbox gives the maximum amount of rectangular pixels for AA. commit 79156e080ef919857f1624543e37b62794fb5a64 Author: Sven Gothel Date: Wed Mar 5 03:23:44 2014 +0100 Bug 801: VectorUtil: Pass result vector, allowing caller to manage memory (performance, reduce temp objects) commit fe3daea00da48c90a4e0c90cf37514a3ab7093d6 Author: Sven Gothel Date: Wed Mar 5 00:14:47 2014 +0100 Bug 801: Refine 'blend' usage and modes (API-doc and demo-code) - 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 commit 8bab15934fe63e44084294e315492420e07a902b Author: Sven Gothel Date: Tue Mar 4 18:11:06 2014 +0100 Bug 801: Fix VBAA Distortions (VBO-size fractional delta) and AA (Sample 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. commit 7b1a0c17fe5471557ab5e0db0334bed34edb553a Author: Sven Gothel Date: Sun Mar 2 00:19:35 2014 +0100 Bug 801: Add MSAA_RENDERING_BIT ; VBAA: Uses GL_NEAREST (good result) ; Demos: Use local GLRegion for uncached text (perf.) .. commit c1218a7bcf42ae64b41e3d30bb1ee39c44b20a9f Author: Sven Gothel Date: Sat Mar 1 17:16:03 2014 +0100 TestRulerNEWT01: Use new MonitorDevice.getPixelsPerMM(store) commit 3dc6b1b9205e3e6e381903f8a1499253f11f64ae Author: Sven Gothel Date: Sat Mar 1 17:15:35 2014 +0100 Bug 801: Cleanup CDTriangulator2D - CDTriangulator2D.getContainerLoop(..) can exit at first 'inside' loop - Make loops field 'final' and clear at reset. - Add more 'final' qualifier commit 0d73e966093ecdce124cef682f12d7a8c223de29 Author: Sven Gothel Date: Sat Mar 1 16:49:15 2014 +0100 AudioSink: Fix API doc (minor edit) commit d18df847b17a89fdc4b47fa9cfe010af1a61690b Author: Sven Gothel Date: Sat Mar 1 16:48:48 2014 +0100 Bug 801: TypecastRenderer: Don't use Cubic, but 'double quad' / GlyfCompositeDescript: Fix NPE commit 183e1bc1868699b99eb9f9c8bf18d646d1120a48 Author: Sven Gothel Date: Sat Mar 1 16:47:30 2014 +0100 Bug 801: VBAA Render-Mode Based on SampleCount (not a user-based texWidth) ; 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 commit 7a1dbd0d87a15f582f568a20adbbe42505bdca33 Author: Sven Gothel Date: Sat Mar 1 12:27:59 2014 +0100 NEWT MonitorDevice: Add convenient getPixelsPerMM(..) method to retrieve the pixels-per-millimeter (Requires manual Conversion to dpi) commit 9aba47241419a7115ebb638e4deb04322ff26d8b Author: Sven Gothel Date: Fri Feb 28 15:36:24 2014 +0100 Bug 801: Drop TypecastRenderer's CUBIC mode if p3 is 'looped' commit 4701edd64be6a7c4e57d176344fb29ee71699744 Author: Sven Gothel Date: Fri Feb 28 15:35:17 2014 +0100 Bug 801: TextRenderUtil/TextRendererGLELBase - Pass Font and fontSize to all methods ; TestTextRendererNEWT00 make font/fontSize configurable, animate fontSize commit af621a92250681a83e76293e7d33f685a0fc07e6 Author: Sven Gothel Date: Fri Feb 28 15:31:12 2014 +0100 Bug 801: Enhance API doc of FontSet and FontFactory commit 7e4ac89fc561f4b106bda377998a8b3e1dee7c1d Author: Sven Gothel Date: Fri Feb 28 13:54:19 2014 +0100 Bug 801: TypecastRenderer: Rename local point vars for better review commit 0af9df19efc3bc31beafdd63e3487b74a97c80a7 Author: Sven Gothel Date: Fri Feb 28 13:26:25 2014 +0100 Bug 801: TypecastRenderer: Disable DEBUG ; Performance Note: ~800-1200 fps on uncached text line Performance Note: ~800-1200 fps on uncached text line Compared to c3621221b9a563495b4f54fe60e18e8db8cc57fb: ~600 fps and previous impl. ~60fps. commit 0d7101305ab66c4730ba299f1634889bee5c500a Author: Sven Gothel Date: Fri Feb 28 12:31:26 2014 +0100 Bug 801: Fix TypecastRenderer End-Of-Contour and Shape-Closing; add cubic path - 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 ? commit 8920cf318b99c4e30e35b37c963609fa12d5ce04 Author: Sven Gothel Date: Fri Feb 28 12:16:09 2014 +0100 Bug 801: TextRegionUtil add 'special' for cache-key; Minor edits 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 commit ea0059f01866bd6257d4a06164db1b6c906a2949 Author: Sven Gothel Date: Fri Feb 28 12:12:58 2014 +0100 Bug 801: Outline.setClosed(boolean [closed->closeTail]): Always close, but allow to either close-tail or head; OutlineShape/Triangulator: Pass 'sharpness' (very little effect though) commit caa9ba036179d3a644e258c444f5b464df480c27 Author: Sven Gothel Date: Fri Feb 28 00:02:09 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-6: Fix TypecastRenderer; Minor Editing Fix TypecastRenderer: - Ensure quad shapes are closed! - Revalidate point -> shape interpretation using orig. Typcast code - Fix 'midPoint(..)' use float values commit 34aebbf54491b8f7e98bee3f45f8b58b817a6db5 Author: Sven Gothel Date: Thu Feb 27 23:59:40 2014 +0100 Bug 802: Graph TextRenderer Performance Part-3: Reuse 'float[] coordsEx' storage, ease on GC commit bd43319992d02f8194dce94587de476ee421891b Author: Sven Gothel Date: Thu Feb 27 23:57:39 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-5: *Region API Cleanup (protected impl. part) commit 67ec86e539a3db0d06e5cc3550db453589594384 Author: Sven Gothel Date: Thu Feb 27 23:56:13 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-4: Text[Render->Region]Util API: Better separation of cached and uncached regions commit 2cafc01f08f9ab05748be6eeb82c417de38b31f7 Author: Sven Gothel Date: Thu Feb 27 10:53:06 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-3: Region.addOutlineShape(..) Push 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 commit 073ac5ab63af792d8468d8bf074b982f7c44ef33 Author: Sven Gothel Date: Thu Feb 27 09:43:25 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-2: Remove Path2D from 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. commit d84812b6fb398c73cb3f339ab13d74b7e6822181 Author: Sven Gothel Date: Tue Feb 25 23:10:06 2014 +0100 Bug 802: Graph TextRenderer Performance Part-2 (fix artifacts, cleanup, 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'. commit c3621221b9a563495b4f54fe60e18e8db8cc57fb Author: Sven Gothel Date: Mon Feb 24 13:32:34 2014 +0100 Bug 802: Graph TextRenderer Performance Part-1 (incomplete, rendering artifacts) 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. commit f69df875d0b9f969a816d143ed589b25e50cd9e7 Author: Sven Gothel Date: Sun Feb 23 15:40:49 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-1b (clean) Concludes commit f51933f0ebe9ae030c26c066e59a728ce08b8559 w/ final fixes on merge commit 3352601e0860584509adf2b76f993d03893ded4b. commit f51933f0ebe9ae030c26c066e59a728ce08b8559 Author: Sven Gothel Date: Sun Feb 23 06:11:11 2014 +0100 Bug 801: Graph TextRenderer Cleanup Part-1a (unclean) Remark: This commit is unclean and requires 'Part-1b' due to merging this commit after more than 2 years! Graph: - Use List instead of array allowing more flexible memory managment. - GLRegion -> Region promotion: - Region create(List outlineShapes, int renderModes) - Region create(OutlineShape outlineShape, int renderModes) - Region additions - void addOutlineShape(OutlineShape shape) - void addOutlineShapes(List shapes) - RegionRenderer - draw(..) remove 'position', redundant - - Deprecate 'TextRenderer' and 'GlyphString' Use Region.create(Font.getOutlineShapes(...)) + RegionRenderer instead. - FontInt -> Font promotion (make public) - getOutlineShape and getOutlineShapes - Font.Glyph additions - 'getID(), hashCode()' - 'float getScale(float pixelSize)' - GlyphShape - Add reference to Glyph allowing GlyphString to access the font metrics for translation and scaling - Experimental pre-scale/translation in GlyphString using default font size and it's metrics commit b68794ae48cf2f133abd9d822f08207cf3404c17 Author: Sven Gothel Date: Wed May 16 16:47:52 2012 +0200 graph test: TestTextRendererNEWT10 cleanup commit f86a7893490bc1295b6f8dfb1611c14645b00371 Author: Sven Gothel Date: Wed May 16 16:47:30 2012 +0200 Graph minor linear optimization: use vertexInTriangle3(..) reduces redundant computations commit e1d954439572d7e6776c0d928d1882e1cf200675 Author: Sven Gothel Date: Wed May 16 15:30:27 2012 +0200 Graph minor linear optimization: Passing array storage (reduce temp array) and use array ref access.