| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(example implementation only)
|
|
|
|
| |
matrix constructor (example implementation only)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
+++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
.. (sorry)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
jogl-test-java-src.zip
|
| |
|
| |
|
|
|
|
| |
commit ee774dce9e474e8ea961bd9b504d26e9321e1b15
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
|
|
|
|
|
|
| |
gracefully
- query isAvailable() in ovr_Initialize(), ovrHmd_Create(..) and ovrHmd_CreateDebug(..)
and return appropriate values.
|
|
|
|
| |
ovrHmdStruct in generated files, reduce warnings.
|
|
|
|
| |
9ee44e1a289ecbac024662dd5a2ffc42e8add023 (Bug 1025)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
feature loss if not fetching submodules)
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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-<os.and.arch>.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'
|
|
|
|
| |
--recurse-submodules <jogl-url>)
|
| |
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
call-by-value extension), utilizing native JVMUtil_NewDirectByteBufferCopy(..)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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) ..
|
|
|
|
|
|
| |
Macro redefine 'texture2D -> texture'
was added _after_ the custom texture lookup insertion
causing GL3-core to fail.
|
|
|
|
| |
SAMPLE_COUNT is of type 'int'
|
|
|
|
| |
OpenAL/JOAL (works using openal-soft default on all platforms now)
|
| |
|
|
|
|
|
| |
NullAudioSink shall return the last enqueued PTS in getPTS()
not causing a-v delta measure based on lagging audio in player.
|
|
|
|
|
| |
The texture unit has to be updated always,
since program maybe used by multiple regions and diff. texUnits
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 ..
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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);
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
OSX impl.
Add ScalableSurface interface
- To set pixelScale before and after realization
- To get pixelScale
- Implemented on:
- NEWT Window
- Generic impl. in WindowImpl
- OSX WindowDriver impl.
- Also propagetes pixelScale to parent JAWTWindow if offscreen (NewtCanvasAWT)
- AWT WindowDriver impl.
- JAWTWindow / OSXCalayer
- AWT GLCanvas
- AWT GLJPanel
- NEWTCanvasAWT:
- Propagates NEWT Window's pixelScale to underlying JAWTWindow
- WrappedSurface for pixelScale propagation
using offscreen drawables, i.e. GLJPanel
- Generic helper in SurfaceScaleUtils (nativewindow package)
- Fully implemented on OSX
- Capable to switch pixelScale before realization,
i.e. native-creation, as well as on-the-fly.
- Impl. uses int[2] for pixelScale to support
non-uniform scale.
Test cases:
- com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT
- com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2AWT
- com.jogamp.opengl.test.junit.jogl.demos.es2.awt.TestGearsES2GLJPanelAWT
- com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NewtCanvasAWT
- Press 'x' to toggle HiDPI
- Commandline '-pixelScale <value>'
- Added basic auto unit test (setting pre-realization)
|
| |
|
|
|
|
| |
EGLUpstreamSurfaceHook) to generalize ProxySurfaceImpl.getUpstreamSurface()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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(..).
|