2ef6909d9b
Deferred rendering is now the de-facto standard rendering technique in many modern game engines, hence I think it is important to have this technique demonstrated in an osg code example. This particular sample adds soft shadows as well as bump mapping into the rendering pipeline. The image files whitemetal_diffuse.jpg and whitemetal_normal.jpg from OpenSceneGraph-Data images folder are required (The OSG_FILE_PATH environment variable must be set correctly) Two additional osgt models are included with the demo (best to also put them into OpenSceneGraph-Data, I think. The shaders are currently defined in separate .frag and .vert files.
273 lines
8.2 KiB
CMake
273 lines
8.2 KiB
CMake
#######################################################
|
|
# this are setting used in SETUP_EXAMPLE macro
|
|
#######################################################
|
|
SET(TARGET_DEFAULT_PREFIX "example_")
|
|
SET(TARGET_DEFAULT_LABEL_PREFIX "Examples")
|
|
|
|
SET(TARGET_COMMON_LIBRARIES
|
|
OpenThreads
|
|
osg
|
|
osgDB
|
|
osgUtil
|
|
osgGA
|
|
osgViewer
|
|
osgText
|
|
)
|
|
|
|
IF(ANDROID)
|
|
# ADD_SUBDIRECTORY(osgandroidsimple)
|
|
ELSE(ANDROID)
|
|
|
|
IF(DYNAMIC_OPENSCENEGRAPH)
|
|
|
|
ADD_SUBDIRECTORY(osg2cpp)
|
|
ADD_SUBDIRECTORY(osganalysis)
|
|
ADD_SUBDIRECTORY(osganimate)
|
|
ADD_SUBDIRECTORY(osgatomiccounter)
|
|
ADD_SUBDIRECTORY(osgautocapture)
|
|
ADD_SUBDIRECTORY(osgautotransform)
|
|
ADD_SUBDIRECTORY(osgbillboard)
|
|
ADD_SUBDIRECTORY(osgblenddrawbuffers)
|
|
ADD_SUBDIRECTORY(osgblendequation)
|
|
ADD_SUBDIRECTORY(osgcallback)
|
|
ADD_SUBDIRECTORY(osgcamera)
|
|
ADD_SUBDIRECTORY(osgcatch)
|
|
ADD_SUBDIRECTORY(osgclip)
|
|
ADD_SUBDIRECTORY(osgcompositeviewer)
|
|
ADD_SUBDIRECTORY(osgcopy)
|
|
ADD_SUBDIRECTORY(osgcubemap)
|
|
ADD_SUBDIRECTORY(osgdelaunay)
|
|
ADD_SUBDIRECTORY(osgdeferred)
|
|
ADD_SUBDIRECTORY(osgcluster)
|
|
ADD_SUBDIRECTORY(osgdatabaserevisions)
|
|
ADD_SUBDIRECTORY(osgdepthpartition)
|
|
ADD_SUBDIRECTORY(osgdepthpeeling)
|
|
ADD_SUBDIRECTORY(osgdrawinstanced)
|
|
ADD_SUBDIRECTORY(osgdistortion)
|
|
ADD_SUBDIRECTORY(osgfadetext)
|
|
ADD_SUBDIRECTORY(osgfont)
|
|
ADD_SUBDIRECTORY(osgforest)
|
|
ADD_SUBDIRECTORY(osgfxbrowser)
|
|
ADD_SUBDIRECTORY(osgoutline)
|
|
ADD_SUBDIRECTORY(osggameoflife)
|
|
ADD_SUBDIRECTORY(osggeometry)
|
|
ADD_SUBDIRECTORY(osggeometryshaders)
|
|
ADD_SUBDIRECTORY(osghangglide)
|
|
ADD_SUBDIRECTORY(osghud)
|
|
ADD_SUBDIRECTORY(osgimagesequence)
|
|
ADD_SUBDIRECTORY(osgimpostor)
|
|
ADD_SUBDIRECTORY(osgintersection)
|
|
ADD_SUBDIRECTORY(osgkdtree)
|
|
ADD_SUBDIRECTORY(osgkeyboard)
|
|
ADD_SUBDIRECTORY(osgkeyboardmouse)
|
|
ADD_SUBDIRECTORY(osgkeystone)
|
|
ADD_SUBDIRECTORY(osglauncher)
|
|
ADD_SUBDIRECTORY(osglight)
|
|
ADD_SUBDIRECTORY(osglightpoint)
|
|
ADD_SUBDIRECTORY(osglogicop)
|
|
ADD_SUBDIRECTORY(osglogo)
|
|
ADD_SUBDIRECTORY(osggpucull)
|
|
ADD_SUBDIRECTORY(osggpx)
|
|
ADD_SUBDIRECTORY(osggraphicscost)
|
|
ADD_SUBDIRECTORY(osgmanipulator)
|
|
ADD_SUBDIRECTORY(osgmovie)
|
|
ADD_SUBDIRECTORY(osgmultiplemovies)
|
|
ADD_SUBDIRECTORY(osgmultiplerendertargets)
|
|
ADD_SUBDIRECTORY(osgmultitexture)
|
|
ADD_SUBDIRECTORY(osgmultitexturecontrol)
|
|
ADD_SUBDIRECTORY(osgmultitouch)
|
|
ADD_SUBDIRECTORY(osgmultiviewpaging)
|
|
ADD_SUBDIRECTORY(osgoccluder)
|
|
ADD_SUBDIRECTORY(osgocclusionquery)
|
|
ADD_SUBDIRECTORY(osgoit)
|
|
ADD_SUBDIRECTORY(osgoscdevice)
|
|
ADD_SUBDIRECTORY(osgpackeddepthstencil)
|
|
ADD_SUBDIRECTORY(osgpagedlod)
|
|
ADD_SUBDIRECTORY(osgparametric)
|
|
ADD_SUBDIRECTORY(osgparticle)
|
|
ADD_SUBDIRECTORY(osgparticleeffects)
|
|
ADD_SUBDIRECTORY(osgparticleshader)
|
|
ADD_SUBDIRECTORY(osgpick)
|
|
ADD_SUBDIRECTORY(osgplanets)
|
|
ADD_SUBDIRECTORY(osgpoints)
|
|
ADD_SUBDIRECTORY(osgpointsprite)
|
|
ADD_SUBDIRECTORY(osgposter)
|
|
ADD_SUBDIRECTORY(osgprecipitation)
|
|
ADD_SUBDIRECTORY(osgprerender)
|
|
ADD_SUBDIRECTORY(osgprerendercubemap)
|
|
ADD_SUBDIRECTORY(osgreflect)
|
|
ADD_SUBDIRECTORY(osgrobot)
|
|
ADD_SUBDIRECTORY(osgSSBO)
|
|
ADD_SUBDIRECTORY(osgscalarbar)
|
|
ADD_SUBDIRECTORY(osgscribe)
|
|
ADD_SUBDIRECTORY(osgsequence)
|
|
ADD_SUBDIRECTORY(osgshaders)
|
|
ADD_SUBDIRECTORY(osgshadercomposition)
|
|
ADD_SUBDIRECTORY(osgshadergen)
|
|
ADD_SUBDIRECTORY(osgshaderterrain)
|
|
# ADD_SUBDIRECTORY(osgshadercompositor)
|
|
ADD_SUBDIRECTORY(osgshadow)
|
|
ADD_SUBDIRECTORY(osgshape)
|
|
ADD_SUBDIRECTORY(osgsharedarray)
|
|
ADD_SUBDIRECTORY(osgsimpleshaders)
|
|
ADD_SUBDIRECTORY(osgsimplifier)
|
|
ADD_SUBDIRECTORY(osgsimulation)
|
|
ADD_SUBDIRECTORY(osgsidebyside)
|
|
ADD_SUBDIRECTORY(osgslice)
|
|
ADD_SUBDIRECTORY(osgspacewarp)
|
|
ADD_SUBDIRECTORY(osgspheresegment)
|
|
ADD_SUBDIRECTORY(osgspotlight)
|
|
ADD_SUBDIRECTORY(osgstereoimage)
|
|
ADD_SUBDIRECTORY(osgstereomatch)
|
|
ADD_SUBDIRECTORY(osgterrain)
|
|
ADD_SUBDIRECTORY(osgthreadedterrain)
|
|
ADD_SUBDIRECTORY(osgtransferfunction)
|
|
ADD_SUBDIRECTORY(osgtext)
|
|
ADD_SUBDIRECTORY(osgtext3D)
|
|
ADD_SUBDIRECTORY(osgtexture1D)
|
|
ADD_SUBDIRECTORY(osgtexture2D)
|
|
ADD_SUBDIRECTORY(osgtexture2DArray)
|
|
ADD_SUBDIRECTORY(osgtexture3D)
|
|
ADD_SUBDIRECTORY(osgtexturerectangle)
|
|
ADD_SUBDIRECTORY(osgtexturecompression)
|
|
ADD_SUBDIRECTORY(osgthirdpersonview)
|
|
ADD_SUBDIRECTORY(osgtransformfeedback)
|
|
ADD_SUBDIRECTORY(osguniformbuffer)
|
|
ADD_SUBDIRECTORY(osguserstats)
|
|
ADD_SUBDIRECTORY(osgvertexprogram)
|
|
ADD_SUBDIRECTORY(osgvertexattributes)
|
|
ADD_SUBDIRECTORY(osgvolume)
|
|
ADD_SUBDIRECTORY(osgwindows)
|
|
ADD_SUBDIRECTORY(osgvirtualprogram)
|
|
ADD_SUBDIRECTORY(osganimationhardware)
|
|
ADD_SUBDIRECTORY(osganimationtimeline)
|
|
ADD_SUBDIRECTORY(osganimationnode)
|
|
ADD_SUBDIRECTORY(osganimationmakepath)
|
|
ADD_SUBDIRECTORY(osganimationmorph)
|
|
ADD_SUBDIRECTORY(osganimationskinning)
|
|
ADD_SUBDIRECTORY(osganimationsolid)
|
|
ADD_SUBDIRECTORY(osganimationviewer)
|
|
ADD_SUBDIRECTORY(osganimationeasemotion)
|
|
ADD_SUBDIRECTORY(osgwidgetaddremove)
|
|
ADD_SUBDIRECTORY(osgwidgetbox)
|
|
ADD_SUBDIRECTORY(osgwidgetcanvas)
|
|
ADD_SUBDIRECTORY(osgwidgetframe)
|
|
ADD_SUBDIRECTORY(osgwidgetinput)
|
|
ADD_SUBDIRECTORY(osgwidgetlabel)
|
|
ADD_SUBDIRECTORY(osgwidgetmessagebox)
|
|
ADD_SUBDIRECTORY(osgwidgetmenu)
|
|
ADD_SUBDIRECTORY(osgwidgetnotebook)
|
|
ADD_SUBDIRECTORY(osgwidgetperformance)
|
|
ADD_SUBDIRECTORY(osgwidgetscrolled)
|
|
ADD_SUBDIRECTORY(osgwidgetshader)
|
|
ADD_SUBDIRECTORY(osgwidgetstyled)
|
|
ADD_SUBDIRECTORY(osgwidgettable)
|
|
ADD_SUBDIRECTORY(osgwidgetwindow)
|
|
ADD_SUBDIRECTORY(osguserdata)
|
|
|
|
# GL3/GL4 example
|
|
ADD_SUBDIRECTORY(osgsimplegl3)
|
|
|
|
IF(OSG_CPP_EXCEPTIONS_AVAILABLE)
|
|
ADD_SUBDIRECTORY(osgunittests)
|
|
ADD_SUBDIRECTORY(osgmemorytest)
|
|
ENDIF()
|
|
|
|
IF(NOT OSG_GL3_AVAILABLE)
|
|
ADD_SUBDIRECTORY(osgfpdepth)
|
|
ENDIF()
|
|
|
|
IF(NOT OSG_GLES1_AVAILABLE AND NOT OSG_GLES2_AVAILABLE AND NOT OSG_GL3_AVAILABLE)
|
|
ADD_SUBDIRECTORY(osgscreencapture)
|
|
ADD_SUBDIRECTORY(osgmotionblur)
|
|
ADD_SUBDIRECTORY(osgteapot)
|
|
ENDIF()
|
|
|
|
ADD_SUBDIRECTORY(osgphotoalbum)
|
|
ADD_SUBDIRECTORY(osgtessellate)
|
|
ADD_SUBDIRECTORY(osgtessellationshaders)
|
|
ADD_SUBDIRECTORY(osgcomputeshaders)
|
|
|
|
ADD_SUBDIRECTORY(osgpdf)
|
|
|
|
IF (GLUT_FOUND)
|
|
ADD_SUBDIRECTORY(osgviewerGLUT)
|
|
ENDIF(GLUT_FOUND)
|
|
|
|
IF (SDL_FOUND)
|
|
ADD_SUBDIRECTORY(osgviewerSDL)
|
|
ENDIF(SDL_FOUND)
|
|
|
|
IF (GTKGL_FOUND)
|
|
ADD_SUBDIRECTORY(osgviewerGTK)
|
|
ENDIF(GTKGL_FOUND)
|
|
|
|
IF (FOX_FOUND)
|
|
ADD_SUBDIRECTORY(osgviewerFOX)
|
|
ENDIF(FOX_FOUND)
|
|
|
|
IF (wxWidgets_FOUND AND CMAKE_BUILD_TYPE)
|
|
IF (${CMAKE_BUILD_TYPE} STREQUAL "Release")
|
|
ADD_SUBDIRECTORY(osgviewerWX)
|
|
ENDIF()
|
|
ENDIF()
|
|
|
|
IF ( (QT4_FOUND OR Qt5Widgets_FOUND) AND NOT OSG_GLES1_AVAILABLE AND NOT OSG_GLES2_AVAILABLE AND NOT OSG_GL3_AVAILABLE)
|
|
|
|
IF ( QT4_FOUND OR Qt5Widgets_FOUND)
|
|
ADD_SUBDIRECTORY(osgviewerQt)
|
|
ADD_SUBDIRECTORY(osgqfont)
|
|
ENDIF()
|
|
|
|
IF ( (QT4_FOUND AND QT_QTWEBKIT_FOUND) OR Qt5WebKitWidgets_FOUND )
|
|
ADD_SUBDIRECTORY(osgQtWidgets)
|
|
ADD_SUBDIRECTORY(osgQtBrowser)
|
|
ENDIF()
|
|
|
|
ENDIF()
|
|
|
|
IF (FLTK_FOUND AND FLTK_GL_LIBRARY)
|
|
ADD_SUBDIRECTORY(osgviewerFLTK)
|
|
ENDIF()
|
|
|
|
IF (WIN32)
|
|
|
|
OPTION(BUILD_MFC_EXAMPLE "Enable the build of the MFC Example" OFF)
|
|
|
|
IF (BUILD_MFC_EXAMPLE)
|
|
ADD_SUBDIRECTORY(osgviewerMFC)
|
|
ENDIF(BUILD_MFC_EXAMPLE)
|
|
|
|
ENDIF(WIN32)
|
|
|
|
IF (APPLE)
|
|
ADD_SUBDIRECTORY(osgviewerCocoa)
|
|
ENDIF(APPLE)
|
|
|
|
IF(DIRECTINPUT_FOUND)
|
|
ADD_SUBDIRECTORY(osgdirectinput)
|
|
ENDIF(DIRECTINPUT_FOUND)
|
|
|
|
IF (LIBVNCSERVER_FOUND)
|
|
ADD_SUBDIRECTORY(osgvnc)
|
|
ENDIF(LIBVNCSERVER_FOUND)
|
|
|
|
#to add subject to find socket#ADD_SUBDIRECTORY(osgcluster)
|
|
|
|
ELSE(DYNAMIC_OPENSCENEGRAPH)
|
|
#needed on win32 or the linker get confused by _declspec declarations
|
|
ADD_DEFINITIONS(-DOSG_LIBRARY_STATIC)
|
|
|
|
ADD_SUBDIRECTORY(osgstaticviewer)
|
|
|
|
# IPHONE_PORT@tom
|
|
IF(OSG_BUILD_PLATFORM_IPHONE OR OSG_BUILD_PLATFORM_IPHONE_SIMULATOR)
|
|
ADD_SUBDIRECTORY(osgviewerIPhone)
|
|
ENDIF()
|
|
# IPHONE_PORT@tom
|
|
|
|
ENDIF(DYNAMIC_OPENSCENEGRAPH)
|
|
|
|
ENDIF(ANDROID)
|
|
|