Skip to content

Commit 87325c9

Browse files
committed
Merge remote-tracking branch 'remotes/origin/master' into release
Conflicts: include/version.h
2 parents 99e21e6 + 0132da9 commit 87325c9

32 files changed

+763
-377
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ before_install:
1414
- sudo apt-get install -qq git || /bin/true
1515
- sudo apt-get install -qq libgl1-mesa-dev || /bin/true
1616
- sudo apt-get install -qq libglewmx1.6-dev || /bin/true
17+
- sudo apt-get install -qq libxxf86vm-dev || /bin/true
1718
- sudo chmod +x external/setup-travis.sh
1819
- external/setup-travis.sh

Authors.txt

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
INSTITUTIONS
22
---------------------------------------
33
Work on Omegalib core and modules was supported by the following institutions:
4-
The Electronic Visualization Lab, University of Illinois at Chicago
5-
Northwestern University, Chicago
6-
Monash University, Melbourne
7-
Politecnico di Milano, Milan
4+
The Electronic Visualization Lab at the University of Illinois at Chicago, Chicago, US
5+
Northwestern University, Evanston, US
6+
Monash University, Melbourne, Australia
7+
Politecnico di Milano, Milan, Italy
8+
Center for Visual Computing at Stony Brook University, Stony Brook, US
89

910

1011
AUTHORS
@@ -13,28 +14,31 @@ Lead Developer:
1314
Alessandro Febretti
1415

1516
Contributors:
16-
Arthur Nishimoto
17+
Dennis Chau
1718
Victor Mateviitsi
19+
Koosha Mirhosseini
1820
Brad McGinnis
19-
Dennis Chau
21+
Arthur Nishimoto
2022
JD Pirtle
23+
Qi Sun
2124

2225
Module Contributors:
23-
Jason Leigh
24-
Andrew Johnson
25-
Thomas Marrinan
2626
David Barnes
27+
Daniele Donghi
28+
Andrew Johnson
2729
Owen Kaluza
2830
Andreas Limbera
29-
Daniele Donghi
31+
Jason Leigh
32+
Thomas Marrinan
33+
Matt McCrory
3034
Alex Simes
3135

3236
Patch Contributors:
33-
Shi Yin
34-
Cai Shanli
3537
J Markus Maunus
3638
Jonathan Khoo
39+
Cai Shanli
3740
Connor Taffe
41+
Shi Yin
3842

3943
Academic Supervisors:
4044
Andrew Johnson

CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,13 @@ execute_process(
2222
OUTPUT_VARIABLE GIT_BRANCH
2323
OUTPUT_STRIP_TRAILING_WHITESPACE
2424
)
25-
25+
if(CMAKE_GENERATOR STREQUAL "Xcode")
26+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
27+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
28+
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
29+
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
30+
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
31+
endif(CMAKE_GENERATOR STREQUAL "Xcode")
2632
#-------------------------------------------------------------------------------
2733
# Create a build name depending on the OS, Toolset and architecture.
2834
if(CMAKE_GENERATOR STREQUAL "Visual Studio 9 2008")

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<img src="https://github.com/uic-evl/omegalib/wiki/intro/banner.jpg"/>
66

7-
A framework for virtual reality and cluster-driven display systems.
7+
A hybrid visualization framework for desktops, large immersive displays and the web.
88

99
- Intro page: http://uic-evl.github.io/omegalib/
1010
- Wiki: https://github.com/uic-evl/omegalib/wiki

external/UseEqualizer.cmake

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ set(EQUALIZER_BASE_DIR ${CMAKE_BINARY_DIR}/3rdparty/equalizer)
22

33
# Equalizer support enabled: uncompress and prepare the external project.
44
if(APPLE)
5+
string(REGEX MATCH "[0-9]+\\.[0-9]+" OSX_FAMILY ${CURRENT_OSX_VERSION} )
56
ExternalProject_Add(
67
equalizer
78
URL http://github.com/omega-hub/Equalizer-1.0.2/archive/master.tar.gz
@@ -12,14 +13,14 @@ if(APPLE)
1213
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
1314
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
1415
#-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}
15-
-DCMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${CURRENT_OSX_VERSION}.sdk
16-
-DCMAKE_OSX_DEPLOYMENT_TARGET:VAR=${CURRENT_OSX_VERSION}
16+
-DCMAKE_OSX_SYSROOT:PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${OSX_FAMILY}.sdk
17+
-DCMAKE_OSX_DEPLOYMENT_TARGET:VAR=${OSX_FAMILY}
1718
-DEQUALIZER_PREFER_AGL:BOOL=OFF
1819
-DEQUALIZER_USE_CUDA:BOOL=OFF
1920
-DEQUALIZER_USE_BOOST:BOOL=OFF
2021
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
2122
INSTALL_COMMAND ""
22-
PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/external/equalizer.${CURRENT_OSX_VERSION}.patch
23+
PATCH_COMMAND patch -p1 < ${CMAKE_SOURCE_DIR}/external/equalizer.${OSX_FAMILY}.patch
2324
# directories
2425
TMP_DIR ${CMAKE_BINARY_DIR}/3rdparty/tmp
2526
STAMP_DIR ${CMAKE_BINARY_DIR}/3rdparty/stamp
@@ -79,14 +80,18 @@ if(WIN32)
7980

8081
else()
8182
if(APPLE)
82-
set(EQUALIZER_EQ_LIB_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libEqualizer.dylib)
83-
set(EQUALIZER_CO_LIB_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libCollage.dylib)
83+
set(EQUALIZER_EQ_LIB_DEBUG debug ${EQUALIZER_BINARY_DIR}/libs/client/Debug/libEqualizer.dylib)
84+
set(EQUALIZER_CO_LIB_DEBUG debug ${EQUALIZER_BINARY_DIR}/libs/collage/Debug/libCollage.dylib)
85+
set(EQUALIZER_EQ_LIB_RELEASE optimized ${EQUALIZER_BINARY_DIR}/libs/client/Release/libEqualizer.dylib)
86+
set(EQUALIZER_CO_LIB_RELEASE optimized ${EQUALIZER_BINARY_DIR}/libs/collage/Release/libCollage.dylib)
8487
else()
8588
set(EQUALIZER_EQ_LIB_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libEqualizer.so)
8689
set(EQUALIZER_CO_LIB_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libCollage.so)
90+
set(EQUALIZER_EQ_LIB_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libEqualizer.so)
91+
set(EQUALIZER_CO_LIB_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/libCollage.so)
8792
endif()
8893
set(EQUALIZER_LIBS_DEBUG ${EQUALIZER_EQ_LIB_DEBUG} ${EQUALIZER_CO_LIB_DEBUG})
89-
set(EQUALIZER_LIBS_RELEASE ${EQUALIZER_EQ_LIB_DEBUG} ${EQUALIZER_CO_LIB_DEBUG})
94+
set(EQUALIZER_LIBS_RELEASE ${EQUALIZER_EQ_LIB_RELEASE} ${EQUALIZER_CO_LIB_RELEASE})
9095
endif()
9196
set(EQUALIZER_LIBS ${EQUALIZER_LIBS_DEBUG} ${EQUALIZER_LIBS_RELEASE})
9297
set(EQUALIZER_INCLUDES ${EQUALIZER_BINARY_DIR}/include)

external/UseOmicron.cmake

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,19 @@ else()
8282

8383
###################################################################################################
8484
# Set the output directories for libraries and binary files
85-
if(MSVC OR CMAKE_GENERATOR STREQUAL "Xcode")
85+
if(MSVC)
8686
# omicron
8787
set(OMICRON_LIB_DEBUG ${OMICRON_LIB_DIR_DEBUG}/omicron.lib)
8888
set(OMICRON_LIB_RELEASE ${OMICRON_LIB_DIR_RELEASE}/omicron.lib)
8989
else()
9090
if(APPLE)
91-
set(OMICRON_LIB_DEBUG ${OMICRON_BIN_DIR}/libomicron.dylib)
92-
set(OMICRON_LIB_RELEASE ${OMICRON_BIN_DIR}/libomicron.dylib)
91+
if(CMAKE_GENERATOR STREQUAL "Xcode")
92+
set(OMICRON_LIB_DEBUG ${OMICRON_BIN_DIR}/debug/libomicron.dylib)
93+
set(OMICRON_LIB_RELEASE ${OMICRON_BIN_DIR}/release/libomicron.dylib)
94+
else(CMAKE_GENERATOR STREQUAL "Xcode")
95+
set(OMICRON_LIB_DEBUG ${OMICRON_BIN_DIR}/libomicron.dylib)
96+
set(OMICRON_LIB_RELEASE ${OMICRON_BIN_DIR}/libomicron.dylib)
97+
endif(CMAKE_GENERATOR STREQUAL "Xcode")
9398
else(APPLE)
9499
set(OMICRON_LIB_DEBUG ${OMICRON_BIN_DIR}/libomicron.so)
95100
set(OMICRON_LIB_RELEASE ${OMICRON_BIN_DIR}/libomicron.so)

external/equalizer.10.10.patch

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,20 @@ diff -Naur Equalizer-1.0.2/CMake/Equalizer.spec equalizer/CMake/Equalizer.spec
2020
diff -Naur Equalizer-1.0.2/CMakeLists.txt equalizer/CMakeLists.txt
2121
--- Equalizer-1.0.2/CMakeLists.txt 2013-04-01 15:38:52.000000000 -0500
2222
+++ equalizer/CMakeLists.txt 2014-03-13 17:29:21.000000000 -0500
23-
@@ -137,17 +137,17 @@
23+
@@ -137,17 +137,24 @@
2424
if(X11_FOUND)
2525
if(APPLE)
2626
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ") # Disabled by GNU.cmake!?
2727
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.6" )
2828
- if(EXISTS /Developer/SDKs/MacOSX10.6.sdk)
2929
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.6 -stdlib=libstdc++" )
30+
+ if(CMAKE_GENERATOR STREQUAL "Xcode")
31+
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
32+
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
33+
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
34+
+ SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
35+
+ SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libstdc++" CACHE STRING "" FORCE)
36+
+ endif(CMAKE_GENERATOR STREQUAL "Xcode")
3037
+ if(EXISTS /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk)
3138
if(EQUALIZER_PREFER_AGL)
3239
set(EQ_AGL_USED 1)
@@ -42,7 +49,7 @@ diff -Naur Equalizer-1.0.2/CMakeLists.txt equalizer/CMakeLists.txt
4249
else(APPLE)
4350
set(EQ_GLX_USED 1)
4451
endif(APPLE)
45-
@@ -191,7 +191,7 @@
52+
@@ -191,7 +198,7 @@
4653
if(_CMAKE_OSX_MACHINE MATCHES "ppc")
4754
set(CMAKE_OSX_ARCHITECTURES "ppc")
4855
else()
@@ -51,7 +58,7 @@ diff -Naur Equalizer-1.0.2/CMakeLists.txt equalizer/CMakeLists.txt
5158
endif()
5259
endif()
5360
set(CUDA_64_BIT_DEVICE_CODE OFF)
54-
@@ -219,7 +219,7 @@
61+
@@ -219,7 +226,7 @@
5562
set(EQ_DEFINITIONS -DEQ_BUILD_DIR="${CMAKE_BINARY_DIR}/" -DEQ_SOURCE_DIR="${CMAKE_SOURCE_DIR}/")
5663
if(EQUALIZER_RELEASE)
5764
set(EQ_DEFINITIONS ${EQ_DEFINITIONS} -DEQ_RELEASE)

include/omega/ApplicationBase.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,23 @@ namespace omega
6969
// Some useful properties parsed from the command line or settable by
7070
// an application before calling omain
7171

72+
//!! Application interactive mode
73+
enum InteractiveMode
74+
{
75+
//!! Use the interactive mode specified in the configuration filesyn s
76+
FromConfig,
77+
//!! Force interactive mode
78+
Interactive,
79+
//! Force non-interactive mode
80+
NonInteractive
81+
};
82+
7283
//! Runs the program in interactive mode, even if the script console
7384
//! is not enabled in the system configuration
74-
bool interactive;
85+
InteractiveMode interactive;
7586

7687
public:
77-
ApplicationBase() : interactive(false) {}
88+
ApplicationBase() : interactive(FromConfig) {}
7889

7990
virtual const char* getName() { return "OmegaLib"; }
8091
virtual void setName(const String& name) = 0;

include/omega/Camera.h

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ namespace omega {
5454
//! Implements a listener that can be attached to cameras to listen to draw
5555
//! methods. All user method implementations must be reentrant, since they
5656
//! can be called from mulitple threads.
57-
class ICameraListener
57+
class OMEGA_API ICameraListener
5858
{
5959
public:
6060
virtual void endDraw(Camera* cam, DrawContext& context) {}
@@ -75,6 +75,7 @@ namespace omega {
7575
{
7676
DrawScene = 1 << 1,
7777
DrawOverlay = 1 << 2,
78+
CullingEnabled = 1 << 3,
7879
DefaultFlags = DrawScene | DrawOverlay
7980
};
8081

@@ -122,6 +123,14 @@ namespace omega {
122123
//! this camera. Set to true by default.
123124
void setOverlayEnabled(bool value);
124125
bool isOverlayEnabled();
126+
//! When set to false, disables all culling for this camera.
127+
//! All drawables will attempt drawing, even the ones that
128+
//! are outside of this camera frustum.
129+
//! This is useful to force drawing of all objects when we want to
130+
//! use vertex shaders with custom projections.
131+
//! By default, culling is enabled.
132+
void setCullingEnabled(bool value);
133+
bool isCullingEnabled();
125134
//@}
126135

127136
//! Navigation management
@@ -144,6 +153,10 @@ namespace omega {
144153
//! render. If it's enabled it will still be checked agains the active
145154
//! draw context.
146155
void setEnabled(bool value);
156+
//! Returns true if the frame is enabled, false otherwise
157+
//! @remarks even if the camera is enabled, this method can return
158+
//! false if on-demand frame drawing is on and the camera is not
159+
//! currently scheduled to draw a frame
147160
bool isEnabled();
148161

149162
//! Observer control
@@ -209,6 +222,20 @@ namespace omega {
209222
bool isClearDepthEnabled() { return myClearDepth; }
210223
//@}
211224

225+
//! On-demand drawing
226+
//@{
227+
//! Queues one frame for drawing. Use this to force a frame
228+
//! draw when MaxFps is set to 0.
229+
void queueFrameDraw();
230+
//! Set the maximum fps that this camera will render at.
231+
//! Use 0 to stop camera drawing and use queueFrameDraw to
232+
//! draw frames on-demand.
233+
//! Use -1 to disable the fps cap and let this camera draw
234+
//! at the maximum renderer speed (typically 60fps)
235+
void setMaxFps(float fps);
236+
float getMaxFps();
237+
//@}
238+
212239
//! DEPRECATED
213240
//@{
214241
Vector3f localToWorldPosition(const Vector3f& position);
@@ -299,6 +326,11 @@ namespace omega {
299326
Vector3f myCanvasPosition;
300327
Quaternion myCanvasOrientation;
301328
Vector3f myCanvasScale;
329+
330+
// On-demand drawing
331+
bool myDrawNextFrame;
332+
float myMaxFps;
333+
float myTimeSinceLastFrame;
302334
};
303335

304336
///////////////////////////////////////////////////////////////////////////
@@ -373,7 +405,7 @@ namespace omega {
373405

374406
///////////////////////////////////////////////////////////////////////////
375407
inline bool Camera::isEnabled()
376-
{ return myEnabled; }
408+
{ return myEnabled && (myDrawNextFrame || myMaxFps < 0); }
377409

378410
///////////////////////////////////////////////////////////////////////////
379411
inline void Camera::setSceneEnabled(bool value)
@@ -391,6 +423,18 @@ namespace omega {
391423
inline bool Camera::isOverlayEnabled()
392424
{ return myFlags & DrawOverlay; }
393425

426+
///////////////////////////////////////////////////////////////////////////
427+
inline void Camera::setCullingEnabled(bool value)
428+
{
429+
if(value) myFlags |= CullingEnabled; else myFlags &= ~CullingEnabled;
430+
}
431+
432+
///////////////////////////////////////////////////////////////////////////
433+
inline bool Camera::isCullingEnabled()
434+
{
435+
return myFlags & CullingEnabled;
436+
}
437+
394438
///////////////////////////////////////////////////////////////////////////
395439
inline const Vector3f& Camera::getCanvasPosition() const
396440
{ return myCanvasPosition; }
@@ -403,6 +447,19 @@ namespace omega {
403447
inline const Vector3f& Camera::getCanvasScale() const
404448
{ return myCanvasScale; }
405449

450+
///////////////////////////////////////////////////////////////////////////
451+
inline void Camera::queueFrameDraw()
452+
{ myDrawNextFrame = true; }
453+
454+
///////////////////////////////////////////////////////////////////////////
455+
inline void Camera::setMaxFps(float fps)
456+
{ myMaxFps = fps; }
457+
458+
///////////////////////////////////////////////////////////////////////////
459+
inline float Camera::getMaxFps()
460+
{ return myMaxFps; }
461+
462+
406463
}; // namespace omega
407464

408465
#endif

include/omega/DisplayTileConfig.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* University of Illinois at Chicago
66
* Authors:
77
* Alessandro Febretti [email protected]
8+
* Koosha Mirhosseini [email protected]
89
*-----------------------------------------------------------------------------
910
* Copyright (c) 2010-2015, Electronic Visualization Laboratory,
1011
* University of Illinois at Chicago
@@ -63,7 +64,7 @@ namespace omega
6364
class OMEGA_API DisplayTileConfig: public ReferenceType
6465
{
6566
public:
66-
enum StereoMode { Mono, LineInterleaved, ColumnInterleaved, PixelInterleaved, SideBySide, Default };
67+
enum StereoMode { Mono, LineInterleaved, ColumnInterleaved, PixelInterleaved, SideBySide, Quad, Default };
6768

6869
DisplayTileConfig(DisplayConfig& dc) :
6970
displayConfig(dc),

0 commit comments

Comments
 (0)