1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-24 00:45:52 +00:00

Add demeter 3.21, a C++ library to render 3D terrains using OpenGL.

PR:		71347
Submitted by:	Igor Pokrovsky
This commit is contained in:
Thierry Thomas 2004-09-03 19:49:42 +00:00
parent 60baa01555
commit 83026d2a1b
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=118074
10 changed files with 562 additions and 0 deletions

View File

@ -50,6 +50,7 @@
SUBDIR += dc3play
SUBDIR += dcraw
SUBDIR += deep_zoom
SUBDIR += demeter
SUBDIR += dia
SUBDIR += diacanvas
SUBDIR += diacanvas2

153
graphics/demeter/Makefile Normal file
View File

@ -0,0 +1,153 @@
# New ports collection makefile for: demeter
# Date created: 25 Jan 2004
# Whom: Igor Pokrovsky <ip@doom.homeunix.org>
#
# $FreeBSD$
#
PORTNAME= demeter
PORTVERSION= 3.21
CATEGORIES= graphics
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
.ifdef (WITH_SAMPLE_DATA)
DISTFILES= ${DISTNAME}${EXTRACT_SUFX} \
DemeterSampleData-${SAMPLE_DATA_VER}-2${EXTRACT_SUFX}
.endif
MAINTAINER= ip@doom.homeunix.org
COMMENT= A C++ library to render 3D terrains using OpenGL
USE_GMAKE= yes
USE_REINPLACE= yes
USE_GL= yes
USE_X_PREFIX= yes
WANT_GNOME= yes
WANT_SDL= yes
USE_AUTOCONF_VER= 253
USE_AUTOMAKE_VER= 15
USE_LIBTOOL_VER= 15
CONFIGURE_TARGET= --build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
CONFIGURE_ENV= CXXFLAGS="${CXXFLAGS} -I${X11BASE}/include -I${LOCALBASE}/include" \
LDFLAGS="-L${X11BASE}/lib -L${LOCALBASE}/lib"
INSTALLS_SHLIB= yes
SAMPLE_DATA_VER= 3.20
SAMPLE_DATA_SUBDIR= DemeterSampleData-${SAMPLE_DATA_VER}
WRKSRC_DATA= ${WRKDIR}/${SAMPLE_DATA_SUBDIR}
.include <bsd.port.pre.mk>
.if ${HAVE_SDL:Msdl} && ${HAVE_SDL:Mimage}
WITH_SDL= yes
.endif
# .if ${HAVE_GNOME:Mlibxml2}
.if exists(${LOCALBASE}/lib/libxml2.so)
WITH_LIBXML2= yes
.endif
.if exists(${X11BASE}/lib/libosg.so)
WITH_OSG= yes
.endif
.if exists(${LOCALBASE}/lib/libgdal.so)
WITH_GDAL= yes
.endif
.ifdef (WITH_SDL)
USE_SDL= sdl image
.endif
.ifdef (WITH_LIBXML2)
USE_GNOME= libxml2
.endif
.ifdef (WITH_OSG)
BUILD_DEPENDS+= ${X11BASE}/lib/libosg.so:${PORTSDIR}/graphics/osg
RUN_DEPENDS+= ${X11BASE}/lib/libosg.so:${PORTSDIR}/graphics/osg
.endif
.ifdef (WITH_GDAL)
BUILD_DEPENDS+= ${LOCALBASE}/lib/libgdal.so:${PORTSDIR}/graphics/gdal
RUN_DEPENDS+= ${LOCALBASE}/lib/libgdal.so:${PORTSDIR}/graphics/gdal
.endif
.if !defined(WITH_SDL)
PLIST_SUB= WITH_SDL="@comment "
.else
PLIST_SUB= WITH_SDL=""
.endif
.if !defined(WITH_LIBXML2)
PLIST_SUB+= WITH_LIBXML2="@comment "
.else
PLIST_SUB+= WITH_LIBXML2=""
.endif
.if !defined(WITH_OSG)
PLIST_SUB+= WITH_OSG="@comment "
.else
PLIST_SUB+= WITH_OSG=""
.endif
.if !defined(WITH_GDAL)
PLIST_SUB+= WITH_GDAL="@comment "
.else
PLIST_SUB+= WITH_GDAL=""
.endif
.if !defined(WITH_SAMPLE_DATA)
PLIST_SUB+= SAMPLE_DATA="@comment "
.else
PLIST_SUB+= SAMPLE_DATA="" \
SAMPLE_DATA_SUBDIR=${SAMPLE_DATA_SUBDIR}
.endif
pre-everything::
.ifndef (WITH_SDL)
@${ECHO_CMD} ""
@${ECHO_CMD} "Define WITH_SDL=yes to compile with SDL support"
@${ECHO_CMD} ""
.endif
.ifndef (WITH_LIBXML2)
@${ECHO_CMD} ""
@${ECHO_CMD} "Define WITH_LIBXML2=yes to compile with XML support"
@${ECHO_CMD} ""
.endif
.ifndef (WITH_OSG)
@${ECHO_CMD} ""
@${ECHO_CMD} "Define WITH_OSG=yes to compile with Open Scene Graph support"
@${ECHO_CMD} ""
.endif
.ifndef (WITH_GDAL)
@${ECHO_CMD} ""
@${ECHO_CMD} "Define WITH_GDAL=yes to compile with GDAL support"
@${ECHO_CMD} ""
.endif
.ifndef (WITH_SAMPLE_DATA)
@${ECHO_CMD} ""
@${ECHO_CMD} "Define WITH_SAMPLE_DATA=yes to download and install data for example programs"
@${ECHO_CMD} ""
.endif
post-patch:
@${REINPLACE_CMD} -e 's|sdl-config|${SDL_CONFIG:T}|g' \
${WRKSRC}/configure.ac
@${REINPLACE_CMD} -e 's|sdl-config|${SDL_CONFIG}|g; \
s|\(-lgdal\)\.1\.1|\1|g' \
`${FIND} ${WRKSRC} -name Makefile.am`
@${REINPLACE_CMD} -e 's|%%EXAMPLESDIR%%|${EXAMPLESDIR}|' \
${WRKSRC}/samples/SampleUtilities/Data.cpp
# install additional data files, required to run demo programs
.ifdef (WITH_SAMPLE_DATA)
post-install:
@${MKDIR} ${EXAMPLESDIR}
@${MKDIR} ${EXAMPLESDIR}/${SAMPLE_DATA_SUBDIR}
.for i in bmp jpg png raw rgba terrain
${INSTALL_DATA} ${WRKSRC_DATA}/*.${i} ${EXAMPLESDIR}/${SAMPLE_DATA_SUBDIR}
.endfor
.endif
.include <bsd.port.post.mk>

View File

@ -0,0 +1,2 @@
MD5 (demeter-3.21.tar.gz) = 529082a31444e3e9e89482f0cc96cfeb
MD5 (DemeterSampleData-3.20-2.tar.gz) = 1b713edde889f6c837ac106872e76277

View File

@ -0,0 +1,11 @@
--- configure.ac.orig Tue Jun 15 13:17:59 2004
+++ configure.ac Tue Jun 15 13:18:18 2004
@@ -56,7 +56,7 @@
AC_C_CONST
AC_C_INLINE
AC_STRUCT_TM
-AC_HEADER_STDBOOL
+dnl AC_HEADER_STDBOOL
AC_OUTPUT(Makefile \
src/Makefile \

View File

@ -0,0 +1,47 @@
--- samples/SampleRawApplication/SampleRawMain.cpp.orig Sat Dec 20 17:28:54 2003
+++ samples/SampleRawApplication/SampleRawMain.cpp Thu Sep 2 21:44:58 2004
@@ -28,6 +28,12 @@
#include <SDL.h>
#include "Elevations.h"
+#ifndef _WIN32
+#include <dlfcn.h>
+#undef GLX_GLXEXT_LEGACY
+#include <GL/glx.h>
+#endif
+
using namespace Demeter;
using namespace std;
@@ -37,6 +43,7 @@
#else
typedef void (*PFNGLFOGCOORDPOINTERFARBPROC) (GLenum type,GLint stride,const GLvoid* pointer);
#endif
+PFNGLXGETPROCADDRESSARBPROC glXGetProcAddressARB_ptr = NULL;
PFNGLFOGCOORDPOINTERFARBPROC FogCoordPointerEXT = NULL;
#ifndef FOG_COORDINATE_ARRAY_EXT
#define FOG_COORDINATE_ARRAY_EXT 0x8457
@@ -193,7 +200,22 @@
#ifdef _WIN32
FogCoordPointerEXT = (PFNGLFOGCOORDPOINTERFARBPROC) wglGetProcAddress("glFogCoordPointerEXT");
#else
- FogCoordPointerEXT = glFogCoordPointerEXT;
+ void* h;
+
+ if ((h = dlopen(NULL, RTLD_LAZY)) == NULL) {
+ string msg("Unable to find symbol list for the main program.");
+ throw new DemeterException(msg);
+ }
+
+ glXGetProcAddressARB_ptr = (PFNGLXGETPROCADDRESSARBPROC) dlsym(h, "glXGetProcAddressARB");
+ if (glXGetProcAddressARB_ptr == NULL) {
+ string msg("Unable to find symbol \"glXGetProcAddressARB\".");
+ throw new DemeterException(msg);
+ }
+
+ FogCoordPointerEXT = (PFNGLFOGCOORDPOINTERFARBPROC) glXGetProcAddressARB_ptr((GLubyte*)"glFogCoordPointerEXT");
+
+ dlclose(h);
#endif
if (FogCoordPointerEXT != NULL)
{

View File

@ -0,0 +1,11 @@
--- samples/SampleUtilities/Data.cpp.orig Mon Jan 26 13:46:44 2004
+++ samples/SampleUtilities/Data.cpp Mon Jan 26 13:49:15 2004
@@ -53,7 +53,7 @@
sprintf(szPath, szFullPath);
return true;
}
- sprintf(szFullPath, "/usr/local/share/DemeterSampleData-3.20/");
+ sprintf(szFullPath, "%%EXAMPLESDIR%%/DemeterSampleData-3.20/");
if (TestPath(szFullPath))
{
sprintf(szPath, szFullPath);

View File

@ -0,0 +1,10 @@
--- samples/SampleOSGApplication/SampleOSGMain.cpp.orig Tue Jun 15 13:22:12 2004
+++ samples/SampleOSGApplication/SampleOSGMain.cpp Tue Jun 15 13:22:52 2004
@@ -21,7 +21,6 @@
Boston, MA 02111-1307, USA.
*/
#include <stdlib.h>
-#include <malloc.h>
#include <memory.h>
#ifdef _WIN32
#include <tchar.h>

View File

@ -0,0 +1,63 @@
--- src/Terrain.cpp.orig Sat Dec 20 17:28:54 2003
+++ src/Terrain.cpp Thu Sep 2 22:00:19 2004
@@ -26,6 +26,13 @@
#include <iostream>
#include <string>
+#ifndef _WIN32
+#include <dlfcn.h>
+#undef GLX_GLXEXT_LEGACY
+#include <GL/glx.h>
+#endif
+
+
using namespace Demeter;
using namespace std;
@@ -45,6 +52,7 @@
PFNGLLOCKARRAYSEXTPROC glLockArraysEXT_ptr;
PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT_ptr;
PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB_ptr;
+PFNGLXGETPROCADDRESSARBPROC glXGetProcAddressARB_ptr;
extern void SafelyFillString(char *szSource, char *szTarget, int targetSize);
@@ -101,6 +109,8 @@
void LoadGLExtensions()
{
+ void* h;
+
#ifdef _WIN32
glMultiTexCoord2fARB_ptr = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress("glMultiTexCoord2fARB");
glActiveTextureARB_ptr = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress("glActiveTextureARB");
@@ -108,11 +118,24 @@
glUnlockArraysEXT_ptr = (PFNGLUNLOCKARRAYSEXTPROC) wglGetProcAddress("glUnlockArraysEXT");
glClientActiveTextureARB_ptr = (PFNGLCLIENTACTIVETEXTUREARBPROC) wglGetProcAddress("glClientActiveTextureARB");
#else
- glMultiTexCoord2fARB_ptr = glMultiTexCoord2fARB;
- glActiveTextureARB_ptr = glActiveTextureARB;
- glLockArraysEXT_ptr = glLockArraysEXT;
- glUnlockArraysEXT_ptr = glUnlockArraysEXT;
- glClientActiveTextureARB_ptr = glClientActiveTextureARB;
+ if ((h = dlopen(NULL, RTLD_LAZY)) == NULL) {
+ string msg("Unable to find symbol list for the main program.");
+ throw new DemeterException(msg);
+ }
+
+ glXGetProcAddressARB_ptr = (PFNGLXGETPROCADDRESSARBPROC) dlsym(h, "glXGetProcAddressARB");
+ if (glXGetProcAddressARB_ptr == NULL) {
+ string msg("Unable to find symbol \"glXGetProcAddressARB\".");
+ throw new DemeterException(msg);
+ }
+
+ glMultiTexCoord2fARB_ptr = (PFNGLMULTITEXCOORD2FARBPROC) glXGetProcAddressARB_ptr((GLubyte*)"glMultiTexCoord2fARB");
+ glActiveTextureARB_ptr = (PFNGLACTIVETEXTUREARBPROC) glXGetProcAddressARB_ptr((GLubyte*)"glActiveTextureARB");
+ glLockArraysEXT_ptr = (PFNGLLOCKARRAYSEXTPROC) glXGetProcAddressARB_ptr((GLubyte*)"glLockArraysEXT");
+ glUnlockArraysEXT_ptr = (PFNGLUNLOCKARRAYSEXTPROC) glXGetProcAddressARB_ptr((GLubyte*)"glUnlockArraysEXT");
+ glClientActiveTextureARB_ptr = (PFNGLCLIENTACTIVETEXTUREARBPROC) glXGetProcAddressARB_ptr((GLubyte*)"glClientActiveTextureARB");
+
+ dlclose(h);
#endif
}

View File

@ -0,0 +1,11 @@
Demeter is a cross-platform C++ library that renders 3D terrains using OpenGL.
Demeter is designed for fast performance and good visual quality and makes use
of advanced techniques such as dynamic tessellation (adaptive mesh) to render
vast landscapes in real-time, without the need for high-end hardware. It is
written as a stand-alone component that can be easily integrated into any kind
of application.
WWW: http://www.terrainengine.com/
- Igor Pokrovsky
ip@doom.homeunix.org

253
graphics/demeter/pkg-plist Normal file
View File

@ -0,0 +1,253 @@
%%WITH_SDL%%%%WITH_LIBXML2%%bin/SampleDemeterApplication
%%WITH_SDL%%bin/SampleEditApplication
%%WITH_SDL%%%%WITH_GDAL%%bin/SampleGDALApplication
%%WITH_SDL%%%%WITH_LIBXML2%%%%WITH_OSG%%bin/SampleOSGApplication
%%WITH_SDL%%bin/SamplePaintApplication
%%WITH_SDL%%bin/SampleProceduralTextureApplication
%%WITH_SDL%%bin/SampleRawApplication
%%WITH_SDL%%bin/SampleSkyBoxApplication
%%WITH_SDL%%bin/SampleTerrainLatticeApplication
include/Demeter/BitArray.h
include/Demeter/Box.h
include/Demeter/Brush.h
include/Demeter/Demeter.h
include/Demeter/DemeterDrawable.h
include/Demeter/DemeterException.h
include/Demeter/DetailTexture.h
include/Demeter/Globals.h
include/Demeter/ImageLoader.h
include/Demeter/Loader.h
include/Demeter/Plane.h
include/Demeter/Ray.h
include/Demeter/Settings.h
include/Demeter/SkyBox.h
include/Demeter/StdAfx.h
include/Demeter/Terrain.h
include/Demeter/TerrainBlock.h
include/Demeter/TerrainLattice.h
include/Demeter/TerrainLoadListener.h
include/Demeter/TerrainVertex.h
include/Demeter/Texture.h
include/Demeter/TextureCell.h
include/Demeter/TextureFactory.h
include/Demeter/TextureGenerator.h
include/Demeter/TextureSet.h
include/Demeter/Triangle.h
include/Demeter/TriangleFan.h
include/Demeter/TriangleStrip.h
include/Demeter/Vector.h
include/Demeter/config.h
@dirrm include/Demeter
lib/libDemeter.a
lib/libDemeter.so
lib/libDemeter.so.0
%%WITH_LIBXML2%%lib/libDemeterElevationLoader.a
%%WITH_LIBXML2%%lib/libDemeterElevationLoader.so
%%WITH_LIBXML2%%lib/libDemeterElevationLoader.so.0
%%WITH_OSG%%lib/libDemeterOSG.a
%%WITH_OSG%%lib/libDemeterOSG.so
%%WITH_OSG%%lib/libDemeterOSG.so.0
%%WITH_LIBXML2%%lib/libDemeterTextureLoader.a
%%WITH_LIBXML2%%lib/libDemeterTextureLoader.so
%%WITH_LIBXML2%%lib/libDemeterTextureLoader.so.0
%%WITH_GDAL%%lib/libGDALElevationLoader.a
%%WITH_GDAL%%lib/libGDALElevationLoader.so
%%WITH_GDAL%%lib/libGDALElevationLoader.so.0
%%WITH_SDL%%lib/libSDLTextureLoader.a
%%WITH_SDL%%lib/libSDLTextureLoader.so
%%WITH_SDL%%lib/libSDLTextureLoader.so.0
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt10.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt11.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt12.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt13.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt14.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt15.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt16.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt17.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt18.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt19.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt2.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt20.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt21.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt22.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt23.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt24.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt25.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt26.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt27.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt28.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt29.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt3.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt30.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt31.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt32.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt33.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt34.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt35.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt36.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt37.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt38.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt39.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt4.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt40.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt41.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt42.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt43.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt44.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt45.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt46.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt47.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt48.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt49.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt5.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt50.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt51.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt52.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt53.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt54.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt55.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt56.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt57.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt58.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt59.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt6.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt60.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt61.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt62.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt63.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt7.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt8.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.bt9.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm0-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm1-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm10-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm11-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm11-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm12-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm12-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm13-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm13-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm14-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm14-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm15-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm16-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm17-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm17-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm18-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm18-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm19-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm19-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm2-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm20-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm20-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm21-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm21-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm22-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm22-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm23-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm24-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm24-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm25-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm25-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm26-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm26-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm27-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm27-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm28-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm28-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm29-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm29-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm3-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm30-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm30-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm31-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm32-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm32-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm33-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm33-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm34-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm34-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm35-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm35-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm36-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm36-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm37-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm37-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm38-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm38-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm39-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm4-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm40-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm40-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm41-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm41-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm42-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm42-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm43-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm43-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm44-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm44-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm45-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm45-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm46-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm46-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm47-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm47-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm48-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm49-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm49-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm5-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm50-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm50-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm51-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm51-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm52-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm52-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm53-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm53-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm54-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm54-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm55-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm55-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm56-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm57-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm57-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm58-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm58-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm59-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm59-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm6-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm60-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm61-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm61-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm62-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm62-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm63-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm63-1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm7-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm8-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.dm9-0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.elevations.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.sdt0.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.sdt1.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/Llano.terrain.sdt2.raw
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/LlanoElev.jpg
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/LlanoElev.png
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/LlanoTex.jpg
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/SkyBox0000.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/SkyBox0001.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/SkyBox0002.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/SkyBox0003.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/SkyBox0004.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/SkyBox0005.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/dirt.jpg
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/dirt2.jpg
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/dirt2.png
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/mud.bmp
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/mud.png
%%SAMPLE_DATA%%%%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%/tree0.rgba
%%SAMPLE_DATA%%@dirrm %%EXAMPLESDIR%%/%%SAMPLE_DATA_SUBDIR%%
%%SAMPLE_DATA%%@dirrm %%EXAMPLESDIR%%