aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp/opengl/util
Commit message (Collapse)AuthorAgeFilesLines
...
* Bug 1452 - Decouple math functionality to 'com.jogamp.math' to be toolkit ↵Sven Gothel2023-09-207-34/+29
| | | | | | | | | | | | | | | | | | | | agnostic (PMVMatrix, Matrix4f, Vec4f, ..) Math functionality (PMVMatrix, Matrix4f, Vec4f, ..) - shall be used toolkit agnostic, e.g. independent from OpenGL - shall be reused within our upcoming Vulkan implementation - may also move outside of JOGL, i.e. GlueGen or within its own package to be reused for other purposed. The 'com.jogamp.opengl.util.PMVMatrix' currently also used to feed in GLUniformData via the toolkit agnostic SyncAction and SyncBuffer shall also be split to a toolkit agnostic variant. An OpenGL PMVMatrix specialization implementing GLMatrixFunc can still exist, being derived from the toolkit agnostic base implementation. +++ Initial commit .. compile clean, passing most unit tests.
* Texture ctor w/ external textureID: Pass `ownsTextureID` where true hands ↵Sven Gothel2023-08-131-1/+10
| | | | | | | | | over ownership and allows destroy() to delete it, otherwise not. Fixes GraphUI's GLButton. GraphUI's GLButton uses the offscreen's FBO texture and hence can't pass over ownership of the texture. Hence the Texture instance is created w/o handing over ownership! GLMediaPlayerImpl does hand over ownership of the generated and passed texture to the Texture ctor.
* GLMediaPlayer: Show more reasonable DEBUG output in factory; Impl initGL(GL) ↵Sven Gothel2023-08-111-4/+6
| | | | shall handle null streamWorker, i.e. when using NullGLMediaPlayer
* GLMediaPlayer: Add setAudioChannelLimit(..), correlating with ↵Sven Gothel2023-05-232-1/+14
| | | | | | | AudioSink.setChannelLimit() .. May be utilized to enforce 1 channel (mono) downsampling in combination with JOAL/OpenAL to experience spatial 3D position effects.
* *MediaPlayer: Adop to JOAL 39a32fd56de313c31bd197ee6022288e97f9729aSven Gothel2023-05-212-2/+6
|
* FFMPEGMediaPlayer: Adjust to AudioFormat changesSven Gothel2023-05-201-2/+2
|
* FFMPEGMediaPlayer: AudioFormat is now a stand-alone class (gluegen ↵Sven Gothel2023-05-181-2/+2
| | | | 2b339721a4d6dd4f3af129a4654375b15c7ea340)
* Common av classes (*AudioSink, ..) are promoted to gluegen (commit ↵Sven Gothel2023-05-175-420/+8
| | | | 270172bcbd91f96d4a38a3d73e23d744f57a25b8) and joal (commit 03f4bb63ce8a358b1c2ef303480e1887d72ecb2e)
* Fix GLMediaPlayerImpl.initGL(GL): Allow null==gl and audio-only mode ↵Sven Gothel2023-05-091-16/+33
| | | | (regression to initial implementation)
* GLMediaPlayer: Replace GLMediaEventListener.EVENT_CHANGE_* 'int event_mask' ↵Sven Gothel2023-05-091-41/+44
| | | | with EventMask.Bit/EventMask
* Matrix4f.mapWin*(): Drop unused temp matrices, map*() returns false on ↵Sven Gothel2023-04-092-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | invPMv null; PMVMatrix: Make Mvi, Mvit optional at ctor, add user PMv and PMvi - used at gluUnProject() .. Matrix4f.mapWin*() variants w/ invPMv don't need temp matrices, they also shall handle null invPMv -> return false to streamline usage w/ PMVMatrix if inversion failed. PMVMatrix adds user space common premultiplies Pmv and Pmvi on demand like Frustum. These are commonly required for e.g. gluUnProject(..)/mapWinToObj(..) and might benefit from caching if stack is maintained and no modification occured. PMVMatrix now has the shader related Mvi and Mvit optional at construction(!), so its backing buffers. This reduces footprint for other use cases. The 2nd temp matrix is also on-demand, to reduce footprint for certain use cases. Removed public access to temporary storage. +++ While these additional matrices are on demand and/or at request @ ctor, general memory footprint is reduced per default and hence deemed acceptable while still having PMVMatrix acting as a core flexible matrix provider.
* PMVMatrix rewrite using Matrix4f, providing SyncMatrix4f* for GLUniformData; ↵Sven Gothel2023-04-072-8/+10
| | | | | | | | | | | | | | | | | Utilize Vec3f, Recti, .. throughout API (Matrix4f, AABBox, .. Graph*) Big Easter Cleanup - Net -214 lines of code, despite new classes. - GLUniformData buffer can be synced w/ underlying data via SyncAction/SyncBuffer, e.g. SyncMatrix4f + SyncMatrices4f - PMVMatrix rewrite using Matrix4f and providing SyncMatrix4f/Matrices4f to sync w/ GLUniformData - Additional SyncMatrix4f16 + SyncMatrices4f16 covering Matrix4f sync w/ GLUniformData w/o PMVMatrix - Utilize Vec3f, Recti, .. throughout API (Matrix4f, AABBox, .. Graph*) - Moved FloatUtil -> Matrix4f, kept a few basic matrix ops for ProjectFloat - Most, if not all, float[] and int[] should have been moved to proper classes - int[] -> Recti for viewport rectangle - Matrix4f and PMVMatrix is covered by math unit tests (as was FloatUtil before) -> save Passed all unit tests on AMD64 GNU/Linux
* Math: Complete Matrix4f w/ Vec[234]f and adopt it throughout Quaternion, ↵Sven Gothel2023-04-052-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | Ray, AABBox, Frustum, Stereo*, ... adding hook to PMVMatrix Motivation was to simplify matrix + vector math usage, ease review and avoid usage bugs. Matrix4f implementation uses dedicated float fields instead of an array. Performance didn't increase much, as JVM >= 11(?) has some optimizations to drop the array bounds check. AMD64 + OpenJDK17 - Matrix4f.mul(a, b) got a roughly ~10% enhancement over FloatUtil.multMatrix(a, b, dest) - Matrix4f.mul(b) roughly ~3% slower than FloatUtil.multMatrix(a, b, dest) - FloatUtil.multMatrix(a, a_off, b, b_off, dest) is considerable slower than all - Matrix4f.invert(..) roughly ~3% slower than FloatUtil.invertMatrix(..) RaspberryPi 4b aarch64 + OpenJDK17 - Matrix4f.mul(a, b) got a roughly ~10% enhancement over FloatUtil.multMatrix(a, b, dest) - Matrix4f.mul(b) roughly ~20% slower than FloatUtil.multMatrix(a, b) - FloatUtil.multMatrix(a, a_off, b, b_off, dest) is considerable slower than all - Matrix4f.invert(..) roughly ~4% slower than FloatUtil.invertMatrix(..) Conclusion - Matrix4f.mul(b) needs to be revised (esp for aarch64) - Matrix4f.invert(..) should also not be slower ..
* GLMediaPlayerImpl: Only kick-off StreamWorker at initGL(..)Sven Gothel2023-03-141-5/+0
|
* GLMediaPlayerImpl: Zero textureFragmentShaderHashCode and default ↵Sven Gothel2023-03-141-6/+3
| | | | lookupFunction on Uninitialized state
* FFMPEGMediaPlayer: More detailed DEBUG messages on audioSinkSven Gothel2023-03-141-3/+3
|
* TextureSequence (API Change): Use setTextureLookupFunctionName(..) ↵Sven Gothel2023-03-142-15/+31
| | | | explicitly to set the name upfront, clarifying workflow. Impl: ImageSequence + GLMediaPlayerImpl
* GLMediaPlayerImpl: isTextureAvailable() is always true after lastFrame init; ↵Sven Gothel2023-03-131-2/+6
| | | | Use private isPausedOrPlaying() to determine shaderCodeHash
* GLMediaPlayer: Overhaul and simplify states, allow usage before stream ready ↵Sven Gothel2023-03-134-77/+182
| | | | | | | | | | | | | | | showing test-texture. Adding stop(); (API Change) - allow multiple initGL(..) @ uninitialized and initialized - allows usage before stream is ready - using a test-texture @ uninitialized - adding stop() API change - initStream() -> playStream() - play() -> resume() FFMPEG: Added 'ready' check for robustness
* Move png assets (NEWT icons + GLMediaPlayer dummy/test) to simple classpath, ↵Sven Gothel2023-03-131-1/+1
| | | | allowing access w/o jars. TODO: Test Android.
* GLArrayData: Promote sealed() from GLArrayDataEditable, to correctly being ↵Sven Gothel2023-03-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | used for getElemCount() instead of 0==position, ... (API change) API Change - sealed() moved up from GLArrayDataEditable -> GLArrayData - GLArrayDataWrapper is sealed by default - getSizeInBytes() -> getByteCount() - Semantics of getElemCount() and getByteCount() - Correctly use sealed() to switch from position to limit - instead of 0==position Aligned method names: - getElemCount() - elemPosition() - remainingElems() - getElemCapacity() to corresponding byte counts: - getByteCount() - bytePosition() - remainingBytes() - getByteCapacity()
* FFMPEGMediaPlayer: Cleanup API doc FFmpeg versionsSven Gothel2023-03-051-4/+4
|
* GLDrawableFactoryImpl:createDummySurfaceImpl() and createSurfacelessImpl(): ↵Sven Gothel2023-03-041-1/+1
| | | | | | | Pass orig AbstractGraphicsDevice to allow EGLDrawableFactory to use the original device's native-dislay-ID for sharing resources. EGLDrawableFactory to use the original device's native-dislay-ID for sharing resources, e.g. GLContext. EGL 1.4 requires same native-display-ID of share-list context and newly created context!
* GLMediaPlayerImpl: destroyImpl(..) @ initGL(..) exception: Don't wait for ↵Sven Gothel2023-03-041-5/+8
| | | | streamWorker stop result (-> deadlock)
* GLArrayData*: Shorten methods (*API Change*), use proper constructor and ↵Sven Gothel2023-02-242-2/+2
| | | | | | | | | | | | | finalize immutables, add growthFactor (default golden ratio 1.618), add getCapacity*() and printStats(..) The growthFactor becomes essential for better growth behavior and can be set via setGrowthFactor(). The other changes were merely to clean up the GLArrayData interface and its 4 implementations. Not great to change its API, but one name was misleading ['getComponentCount' -> 'getCompsPerEleme'], so overall .. readability is enhanced. Motivation for this change was the performance analysis and improvement of our Graph Curve Renderer.
* FFMPEGMediaPlayer: Add implementation update for FFmpeg version 4.* (Debian ↵Sven Gothel2023-02-238-341/+197
| | | | | | | | | | | | | | | | | | | | | | | 11), 5.* (Debian 12) and 6.* (Current Development trunk) From here on, libav support has been dropped. Required FFmpeg libraries to be fully matched by their major runtime- and compiletime-versions are: - avcodec - avformat - avutil - swresample Library avdevice is optional and only used for video input devices (camera). Library avresample has been removed, since FFmpeg dropped it as well in version 6.* and swresample is preferred for lower versions. The matching major-versions of each library to the FFmpeg version is documented within FFMPEGMediaPlayer class API-doc. Each implementation version uses the non-deprecated FFmpeg code-path and compilation using matching header files is warning-free.
* Replace AccessController.doPrivileged() w/ SecurityUtil.doPrivileged()Sven Gothel2023-01-142-4/+4
|
* Bug 1420: Add FFMpeg 4.* versioned lib-names and provide optional internal ↵Sven Gothel2020-01-032-59/+153
| | | | | | | | | | | | | | | | | | | | | lib lookup New property 'jogl.ffmpeg.lib' may be set to 'internal', setting PREFER_SYSTEM_LIBS:=false (default it true) Non system internal libraries are named 'internal_<basename>', e.g. 'internal_avutil'. System default libraries are named '<basename>', e.g. 'avutil'. If PREFER_SYSTEM_LIBS is true (default), we lookup the default library first, then the versioned library names and last the internal library. If PREFER_SYSTEM_LIBS is false, we lookup the internal library first, then the versioned library names and last the default library.
* make void* an opaque long in EGL generated classErik De Rijcke2019-11-211-11/+9
|
* Bug 1283: Remove shader include filename quotes if exists at start and end onlySven Gothel2019-03-262-9/+9
|
* Bug 1270 - Fix OSX El Capitan 10.11 stuttering: ALAudioSink: DEBUG: Show ↵Sven Gothel2015-11-151-7/+10
| | | | OpenAL Version
* Bug 1268: Adapt to GlueGen commit 2034bbfac88b7d1360f9c939e173ff758f7f47acSven Gothel2015-11-151-0/+10
|
* Bug 1239: Support OSX input via 'avfoundation' ; Use remaining camera ID ↵Sven Gothel2015-10-051-3/+1
| | | | (index) as filename for OSX
* Bug 1239: Update FFMPEGMediaPlayer API doc (versions and OSX resources)Sven Gothel2015-10-051-5/+14
|
* Bug 1239: Add support for UYVY422 (swizzled YUYV422)Sven Gothel2015-10-052-3/+28
|
* Bug 1239: Fix GLMediaPlayer.CameraInputScheme API doc; ↵Sven Gothel2015-10-051-1/+6
| | | | GLMediaPlayerImpl.updateAttributes avoid div-by-zero (fps inf)
* FFMPEGDynamicLibraryBundleInfo.initSymbols(): Just return null instead of ↵Sven Gothel2015-09-171-4/+8
| | | | throwing an exception, it is OK not to have ffmpeg/libav
* Bug 1211: Fix regression of GLMediaPlayerImpl caused by commit ↵Sven Gothel2015-09-171-3/+12
| | | | | | | | | | | 68c8e39fa8d6e700f0a99241c1a01a435b7f6284 GLMediaPlayerImpl.updateAttributes(..): - always set state -> Initialized if it was Uninitialized, regardless whether we start StreamWorker. - No need to handle exceptions here, just throw/pass/propagate them, since called catches them and deals w/ 'em.
* Bug 1211: Hardening Condition-Wait from Spurious-Wakeups and unintended ↵Sven Gothel2015-09-151-84/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | InterruptedException(s) Below is an updated list of Condition-Wait classifications as described in Bug 1211. This list includes recent changes on GlueGen regarding this Bug 1211. A followup commit will address the unit tests. - Noncancelable + Persistent-Wait - GLMediaPlayerImpl.StreamWorker thread (changed) - pauses thread in case of intr - Cancelable + Persistent-Wait: - LFRingbuffer.getImpl(..) - LFRingbuffer.waitForFreeSlots(int) - SyncedRingbuffer.getImpl(..) - SyncedRingbuffer.waitForFreeSlots(int) - FunctionTask.invokeOnNewThread(..) (changed) - RunnableTask.invokeOnNewThread(..) (changed) - SharedResourceRunner.run() - SharedResourceRunner.doAndWait() (changed) - SharedResourceRunner.start() (changed) - SharedResourceRunner.stop() (changed) - GLMediaPlayerImpl.StreamWorker ctor (changed) - GLMediaPlayerImpl caller thread actions do*() (changed) - AndroidGLMediaPlayerAPI14.getNextTextureImpl(..) (changed) - DisplayImpl.enqueueEvent(..) (changed) -> Persistent-Wait -> Cancels wait and NEWTEvent -> dispatchMessage(NEWTEventTask): always notifyCaller! - GLDrawableHelper.invoke(..) (changed) - DefaultEDTUtil.waitUntilIdle() (changed) - DefaultEDTUtil.waitUntilStopped() (changed) - DefaultEDTUtil.invokeImpl(..) (changed) - DefaultEDTUtil.NEDT.run(..) (changed) - AWTEDTUtil.waitUntilStopped(..) (changed) - AWTEDTUtil.invokeImpl(..) (changed) - AWTEDTUtil.NEDT.run(..) (changed) - SWTEDTUtil.invokeImpl(..) (changed) - SWTEDTUtil.waitUntilStopped(..) (changed) - SWTEDTUtil.NEDT.run(..) (changed) - GLWorkerThread.invokeAndWait(..) - GLWorkerThread.start() (changed) - GLWorkerThread.WorkerRunnable.run() (changed) - Animator.run() (changed) - AnimatorBase.finishLifecycleAction() (changed) - OSXUtil.RunOnMainThread(..) (changed) - SingletonInstanceServerSocket.Server.shutdown() (changed) - SingletonInstanceServerSocket.Server.start() (changed) - com.jogamp.audio.windows.waveout.Mixer.shutdown() (changed) - Extending/Using InterruptSource.Thread (changed) - DefaultEDTUtil.NEDT - AWTEDTUtil.NEDT - SWTEDTUtil.NEDT - GLWorkerThread.thread - Mixer.FillerThread - Mixer.MixerThread - Using InterruptSource.Thread (changed) - TempFileCache - LauncherTempFileCache - Animator.thread - SingletonInstanceServerSocket.Server.serverThread Deprecated: - FunctionTask.invoke(..) (changed) -> on current thread, no wait -> deprecated - RunnableTask.invoke(..) (changed) -> on current thread, no wait -> deprecated
* StereoDevice (Generic/OVR): Add knowledge about LocationSensorParameter and ↵Sven Gothel2015-07-201-0/+6
| | | | allow reset origin of location-sensor
* Clarify code in stereo/ovr: Comments, states, names, formatting.Sven Gothel2015-07-201-15/+6
|
* Bug 1151 - Working OculusVR SDK 0.5.0.1 on GNU/Linux w/ Positional Tracker (DK2)Sven Gothel2015-07-182-37/+65
| | | | | | | | | | | | | | | | | | | | | | | | | Note: The ovrd server must run, otherwise no device is being detected. General Stereo API Changes: - EyePose -> ViewerPose - We only use the viewer pose and derive the pupile position via EyeParameter. - Hence we reduce complexity. - A single ViewerPose will be maintained by StereoDeviceRenderer - position is in meter, allowing StereoGLEventListener to scale device independent. - StereoDevice receives knowledge of certain sensors, to be queried and used for start-sensors. OVR: - Simply apply the above general changes - Build: Remove [more] unused API entries for SDK rendering
* Bug 1153 - Adopt to ArrayHashSet change, don't use deprecated ctor (gluegen ↵Sven Gothel2015-04-011-1/+1
| | | | commit c156343fec33ceea7f238b9766a9f4985fb92687)
* Bug 1116: Add ShutdownHook for all factories and devices to ↵Sven Gothel2015-03-271-0/+5
| | | | StereoDeviceFactory using NativeWindowFactory
* Bug 1116 - Add OculusVR DK2 Support - Part-1 (DK2 on DK1 SDK w/o Eye Tracker)Sven Gothel2015-03-214-333/+129
| | | | | | | | | | | | | | | | | - DK2's screen on X11 (at least) starts in rotated mode, detect and apply MonitorDevice rotation via NEWT's OpenGL StereoDeviceUtil - Move StereoDevice.Config -> StereoDeviceConfig - Expose generic StereoDevice to public: GenericStereoDeviceConfig + GenericStereoDeviceFactory - GenericStereoDeviceFactory exposes public GenericStereoDeviceConfig creation for mono, sbs-stereo and lense-sbs-stereo w/ diff. parameters. - Pass eye surface/texture size for each eye from device to renderer, instead of assuming unified values. - Unify GenericStereoDevice.createRenderer(..) and OVRStereoDevice.createRenderer(..) code
* FFMPEGMediaPlayer: Add support for libav-11 and ffmpeg 2.[4-x] (Latest ↵Sven Gothel2015-02-053-26/+131
| | | | release, used in Debian 8, etc)
* Fix FFMPEGMediaPlayer: static init block issue, libavresample debian8 packagingSven Gothel2015-02-056-66/+74
| | | | | | | | | | | | - static init block issue commit 06a05d30fc026b21f59310986ea9eb7f3ff30d54 used a static final field initialized after the static {} block which was still null if called -> moved above static {} - libavresample debian8 packaging Debian8 packages a libav10 combination w/ libavresample version 2, which actually belongs to libav11 - libav10 uses libarvresample version 1. Allow libavresample and libswresample to be selectively skipped if version mismatch.
* Add missing privileged section for NativeLibrary lookup: GLContextImpl and ↵Sven Gothel2015-02-051-37/+32
| | | | | | | | | | FFMPEGDynamicLibraryBundleInfo Since GlueGen security fix commit 12feaa7d3b1544098f684d851e3caff1ec88cbc8 and its cleanup dd2440cbadc642a561d8f92c502fe822b2f11762 the GLContextImpl func lookup caused a security exception. Applied fix to FFMPEGDynamicLibraryBundleInfo as well.
* Bug 682 - Relocating javax.media.opengl.* -> com.jogamp.opengl.* (Part 1)Sven Gothel2015-02-0222-79/+79
| | | | | | | | | sed -i 's/javax\.media\.opengl/com\.jogamp\.opengl/g' `grep -Rl "javax\.media\.opengl" src` sed -i 's/javax\.media\.nativewindow/com\.jogamp\.nativewindow/g' `grep -Rl "javax\.media\.nativewindow" src` sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" src` sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" doc` Manually edited all occurences within make/**
* Bug 1096 - Expose EGL to public: com.jogamp.opengl.egl.EGL ; ↵Sven Gothel2015-01-232-3/+3
| | | | | | | | | | | | | | EGLDrawableFactory: Validate static EGL func-ptr, probe EGL/ES2 first - Move EGL to public package jogamp.opengl.egl.EGL -> com.jogamp.opengl.egl.EGL - EGLDrawableFactory - Validate static EGL func-ptr against EGL/ES2, ignoring EGL/[ES|GL] collisions w/ diff. native EGL implementations due to static EGL usage. - Probe EGL/ES2 first