Преглед на файлове

Finished adding support for Terrain material files.
Added a default res/materials/terrain.material file to the gameplay folder and added a modified terrain.material file supporting lighting to the Terrain sample in the sample browser.

sgrenier преди 12 години
родител
ревизия
2270db15a1

+ 46 - 0
gameplay/res/materials/terrain.material

@@ -0,0 +1,46 @@
+//
+// Terrain material file.
+// 
+// Supported terrain-specific auto-bindings:
+//
+// TERRAIN_WORLD_MATRIX                 : terrain world matrix
+// TERRAIN_WORLD_VIEW_MATRIX            : terrain world*view matrix
+// TERRAIN_WORLD_VIEW_PROJECTION_MATRIX : terrain world*view*projection matrix for vertex transformations
+// TERRAIN_INVERSE_WORLD_MATRIX         : terrain inverse world matrix
+// TERRAIN_NORMAL_MATRIX                : matrix for normal vector transformations (if NOT using a normal map)
+// TERRAIN_NORMAL_MAP                   : normal map sampler (if using a normal map)
+// TERRAIN_LAYER_MAPS                   : array of texture samplers for each terrain layer
+// TERRAIN_ROW                          : row index of the current terrain patch
+// TERRAIN_COLUMN                       : column index of the current terrain patch
+//
+// To add lighting (other than ambient) to a terrain, you can add additional pass defines and 
+// uniform bindings and handle them in your specific game or renderer. See the gameplay
+// terrain sample for an example.
+//
+material terrain
+{
+    u_worldViewProjectionMatrix = TERRAIN_WORLD_VIEW_PROJECTION_MATRIX
+
+    // For terrain lighting, use either u_normalMatrix
+    u_normalMatrix = TERRAIN_NORMAL_MATRIX
+    //u_normalMap = TERRAIN_NORMAL_MAP
+
+    u_surfaceLayerMaps = TERRAIN_LAYER_MAPS
+
+    u_ambientColor = SCENE_AMBIENT_COLOR
+
+    renderState
+    {
+        cullFace = true
+        depthTest = true
+    }
+
+    technique
+    {
+        pass
+        {
+            vertexShader = res/shaders/terrain.vert
+            fragmentShader = res/shaders/terrain.frag
+        }
+    }
+}

+ 14 - 6
gameplay/src/Terrain.cpp

@@ -7,9 +7,11 @@
 namespace gameplay
 {
 
+// Default terrain material path
+#define TERRAIN_MATERIAL "res/materials/terrain.material"
+
 // The default square size of terrain patches for a terrain that
 // does not have an explicitly specified patch size.
-//
 #define DEFAULT_TERRAIN_PATCH_SIZE 32
 
 // The default height of a terrain that does not have an explicitly
@@ -68,6 +70,7 @@ Terrain* Terrain::create(const char* path, Properties* properties)
     int detailLevels = 1;
     float skirtScale = 0;
     const char* normalMap = NULL;
+    std::string materialPath;
 
     if (!p && path)
     {
@@ -192,6 +195,9 @@ Terrain* Terrain::create(const char* path, Properties* properties)
 
         // Read 'normalMap'
         normalMap = pTerrain->getString("normalMap");
+
+        // Read 'material'
+        materialPath = pTerrain->getString("material", "");
     }
 
     if (heightfield == NULL)
@@ -222,8 +228,7 @@ Terrain* Terrain::create(const char* path, Properties* properties)
     Vector3 scale(terrainSize.x / (heightfield->getColumnCount()-1), terrainSize.y, terrainSize.z / (heightfield->getRowCount()-1));
 
     // Create terrain
-    Terrain* terrain = create(heightfield, scale, (unsigned int)patchSize, (unsigned int)detailLevels, skirtScale, normalMap, pTerrain);
-
+    Terrain* terrain = create(heightfield, scale, (unsigned int)patchSize, (unsigned int)detailLevels, skirtScale, normalMap, materialPath.c_str(), pTerrain);
 
     if (!externalProperties)
         SAFE_DELETE(p);
@@ -231,12 +236,14 @@ Terrain* Terrain::create(const char* path, Properties* properties)
     return terrain;
 }
 
-Terrain* Terrain::create(HeightField* heightfield, const Vector3& scale, unsigned int patchSize, unsigned int detailLevels, float skirtScale, const char* normalMapPath)
+Terrain* Terrain::create(HeightField* heightfield, const Vector3& scale, unsigned int patchSize, unsigned int detailLevels, float skirtScale, const char* normalMapPath, const char* materialPath)
 {
-    return create(heightfield, scale, patchSize, detailLevels, skirtScale, normalMapPath, NULL);
+    return create(heightfield, scale, patchSize, detailLevels, skirtScale, normalMapPath, materialPath, NULL);
 }
 
-Terrain* Terrain::create(HeightField* heightfield, const Vector3& scale, unsigned int patchSize, unsigned int detailLevels, float skirtScale, const char* normalMapPath, Properties* properties)
+Terrain* Terrain::create(HeightField* heightfield, const Vector3& scale,
+    unsigned int patchSize, unsigned int detailLevels, float skirtScale,
+    const char* normalMapPath, const char* materialPath, Properties* properties)
 {
     GP_ASSERT(heightfield);
 
@@ -247,6 +254,7 @@ Terrain* Terrain::create(HeightField* heightfield, const Vector3& scale, unsigne
     Terrain* terrain = new Terrain();
     terrain->_heightfield = heightfield;
     terrain->_localScale = scale;
+    terrain->_materialPath = (materialPath == NULL || strlen(materialPath) == 0) ? TERRAIN_MATERIAL : materialPath;
 
     // Store reference to bounding box (it is calculated and updated from TerrainPatch)
     BoundingBox& bounds = terrain->_boundingBox;

+ 10 - 3
gameplay/src/Terrain.h

@@ -119,7 +119,8 @@ public:
      *
      * The specified properties file can contain a full terrain definition, including a
      * heightmap (PNG, RAW8, RAW16), level of detail information, patch size, layer texture
-     * details and vertical skirt size.
+     * details and vertical skirt size. A custom terrain material file can also be specified,
+     * otherwise the terrain will look for a material file at res/materials/terrain.material.
      *
      * @param path Path to a properties file describing the terrain.
      *
@@ -160,12 +161,15 @@ public:
      *      vertical skirts should extend down by half of the maximum height of the terrain. A value of zero
      *      disables vertical skirts.
      * @param normalMapPath Path to an object-space normal map to use for terrain lighting, instead of vertex normals.
+     * @param materialPath Optional path to a material file to use for the terrain (if not specified, looks for a material
+     *      file at res/materials/terrain.material.
      *
      * @return A new Terrain.
      * @script{create}
      */
     static Terrain* create(HeightField* heightfield, const Vector3& scale = Vector3::one(), unsigned int patchSize = 32,
-                           unsigned int detailLevels = 1, float skirtScale = 0.0f, const char* normalMapPath = NULL);
+                           unsigned int detailLevels = 1, float skirtScale = 0.0f, const char* normalMapPath = NULL,
+                           const char* materialPath = NULL);
 
     /**
      * Returns the node that this terrain is bound to.
@@ -294,7 +298,9 @@ private:
     /**
      * Internal method for creating terrain.
      */
-    static Terrain* create(HeightField* heightfield, const Vector3& scale, unsigned int patchSize, unsigned int detailLevels, float skirtScale, const char* normalMapPath, Properties* properties);
+    static Terrain* create(HeightField* heightfield, const Vector3& scale, 
+        unsigned int patchSize, unsigned int detailLevels, float skirtScale, 
+        const char* normalMapPath, const char* materialPath, Properties* properties);
 
     /**
      * Internal method for creating terrain.
@@ -355,6 +361,7 @@ private:
      */
     BoundingBox getBoundingBox(bool worldSpace) const;
 
+    std::string _materialPath;
     HeightField* _heightfield;
     Node* _node;
     std::vector<TerrainPatch*> _patches;

+ 3 - 4
gameplay/src/TerrainPatch.cpp

@@ -5,9 +5,6 @@
 #include "Scene.h"
 #include "Game.h"
 
-// Default terrain material
-#define TERRAIN_MATERIAL "res/materials/terrain.material"
-
 namespace gameplay
 {
 
@@ -531,9 +528,11 @@ bool TerrainPatch::updateMaterial()
 
     for (size_t i = 0, count = _levels.size(); i < count; ++i)
     {
-        Material* material = Material::create(TERRAIN_MATERIAL, &passCallback, this);
+        Material* material = Material::create(_terrain->_materialPath.c_str(), &passCallback, this);
+        GP_ASSERT(material);
         if (!material)
         {
+            GP_WARN("Failed to load material for terrain patch: %s", _terrain->_materialPath.c_str());
             __currentPatchIndex = -1;
             return false;
         }

+ 11 - 0
samples/browser/res/common/terrain/sample.scene

@@ -23,6 +23,17 @@ scene terrainSampleScene
         translate = 0,25000,0
     }
 
+    node directionalLight
+    {
+        light
+        {
+            type = DIRECTIONAL
+            color = 1,1,1
+        }
+
+        rotate = 1,0,0, -45
+    }
+
 	node camera
 	{
 		camera

+ 2 - 0
samples/browser/res/common/terrain/sample.terrain

@@ -1,5 +1,7 @@
 terrain
 {
+    material = res/common/terrain/terrain.material
+
 	heightmap
 	{
 		path = res/common/terrain/heightmap.r16

+ 30 - 0
samples/browser/res/common/terrain/terrain.material

@@ -0,0 +1,30 @@
+
+material terrain
+{
+    u_worldViewProjectionMatrix = TERRAIN_WORLD_VIEW_PROJECTION_MATRIX
+
+    //u_normalMatrix = TERRAIN_NORMAL_MATRIX
+    u_normalMap = TERRAIN_NORMAL_MAP
+
+    u_surfaceLayerMaps = TERRAIN_LAYER_MAPS
+
+    u_ambientColor = SCENE_AMBIENT_COLOR
+    u_directionalLightDirection[0] = DIRECTIONAL_LIGHT_DIRECTION
+    u_directionalLightColor[0] = DIRECTIONAL_LIGHT_COLOR
+
+    renderState
+    {
+        cullFace = true
+        depthTest = true
+    }
+
+    technique
+    {
+        pass
+        {
+            vertexShader = res/shaders/terrain.vert
+            fragmentShader = res/shaders/terrain.frag
+            defines = DIRECTIONAL_LIGHT_COUNT 1
+        }
+    }
+}

+ 482 - 481
samples/browser/sample-browser.vcxproj

@@ -1,485 +1,486 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="DebugMem|Win32">
-      <Configuration>DebugMem</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="DebugMem|x64">
-      <Configuration>DebugMem</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>sample-browser</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(Configuration)\</OutDir>
-    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(Configuration)\</OutDir>
-    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
-    <CustomBuildBeforeTargets />
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(Configuration)\</OutDir>
-    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
-    <CustomBuildBeforeTargets />
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'">
-    <LinkIncremental>true</LinkIncremental>
-    <OutDir>$(Configuration)\</OutDir>
-    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
-    <CustomBuildBeforeTargets />
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(Configuration)\</OutDir>
-    <CustomBuildBeforeTargets>
-    </CustomBuildBeforeTargets>
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <LinkIncremental>false</LinkIncremental>
-    <OutDir>$(Configuration)\</OutDir>
-    <CustomBuildBeforeTargets />
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x86;..\..\external-deps\bullet\lib\windows\x86;..\..\external-deps\openal\lib\windows\x86;..\..\external-deps\oggvorbis\lib\windows\x86;..\..\external-deps\glew\lib\windows\x86;..\..\external-deps\png\lib\windows\x86;..\..\external-deps\zlib\lib\windows\x86;..\..\gameplay\windows\x86\$(Configuration)</AdditionalLibraryDirectories>
-    </Link>
-    <PostBuildEvent>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="DebugMem|Win32">
+      <Configuration>DebugMem</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="DebugMem|x64">
+      <Configuration>DebugMem</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>sample-browser</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(Configuration)\</OutDir>
+    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
+    <CustomBuildBeforeTargets>
+    </CustomBuildBeforeTargets>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(Configuration)\</OutDir>
+    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
+    <CustomBuildBeforeTargets />
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(Configuration)\</OutDir>
+    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
+    <CustomBuildBeforeTargets />
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'">
+    <LinkIncremental>true</LinkIncremental>
+    <OutDir>$(Configuration)\</OutDir>
+    <ExecutablePath>$(ExecutablePath)</ExecutablePath>
+    <CustomBuildBeforeTargets />
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(Configuration)\</OutDir>
+    <CustomBuildBeforeTargets>
+    </CustomBuildBeforeTargets>
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <LinkIncremental>false</LinkIncremental>
+    <OutDir>$(Configuration)\</OutDir>
+    <CustomBuildBeforeTargets />
+    <IntDir>$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <DisableSpecificWarnings>
+      </DisableSpecificWarnings>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x86;..\..\external-deps\bullet\lib\windows\x86;..\..\external-deps\openal\lib\windows\x86;..\..\external-deps\oggvorbis\lib\windows\x86;..\..\external-deps\glew\lib\windows\x86;..\..\external-deps\png\lib\windows\x86;..\..\external-deps\zlib\lib\windows\x86;..\..\gameplay\windows\x86\$(Configuration)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
       <Command>xcopy ..\..\gameplay\res\shaders res\shaders\* /s /y
-copy ..\..\gameplay\res\logo_powered_white.png res</Command>
-    </PostBuildEvent>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Message>
-      </Message>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x64;..\..\external-deps\bullet\lib\windows\x64;..\..\external-deps\openal\lib\windows\x64;..\..\external-deps\oggvorbis\lib\windows\x64;..\..\external-deps\glew\lib\windows\x64;..\..\external-deps\png\lib\windows\x64;..\..\external-deps\zlib\lib\windows\x64;..\..\gameplay\windows\x64\$(Configuration)</AdditionalLibraryDirectories>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Message>
-      </Message>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;GP_USE_MEM_LEAK_DETECTION;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <ShowIncludes>false</ShowIncludes>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <DisableSpecificWarnings>
-      </DisableSpecificWarnings>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x86;..\..\external-deps\bullet\lib\windows\x86;..\..\external-deps\openal\lib\windows\x86;..\..\external-deps\oggvorbis\lib\windows\x86;..\..\external-deps\glew\lib\windows\x86;..\..\external-deps\png\lib\windows\x86;..\..\external-deps\zlib\lib\windows\x86;..\..\gameplay\windows\x86\$(Configuration)</AdditionalLibraryDirectories>
-    </Link>
-    <PostBuildEvent>
+copy ..\..\gameplay\res\logo_powered_white.png res</Command>
+    </PostBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+      <Message>
+      </Message>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x64;..\..\external-deps\bullet\lib\windows\x64;..\..\external-deps\openal\lib\windows\x64;..\..\external-deps\oggvorbis\lib\windows\x64;..\..\external-deps\glew\lib\windows\x64;..\..\external-deps\png\lib\windows\x64;..\..\external-deps\zlib\lib\windows\x64;..\..\gameplay\windows\x64\$(Configuration)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+      <Message>
+      </Message>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;GP_USE_MEM_LEAK_DETECTION;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <ShowIncludes>false</ShowIncludes>
+      <PreprocessToFile>false</PreprocessToFile>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <DisableSpecificWarnings>
+      </DisableSpecificWarnings>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x86;..\..\external-deps\bullet\lib\windows\x86;..\..\external-deps\openal\lib\windows\x86;..\..\external-deps\oggvorbis\lib\windows\x86;..\..\external-deps\glew\lib\windows\x86;..\..\external-deps\png\lib\windows\x86;..\..\external-deps\zlib\lib\windows\x86;..\..\gameplay\windows\x86\$(Configuration)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
       <Command>xcopy ..\..\gameplay\res\shaders res\shaders\* /s /y
-copy ..\..\gameplay\res\logo_powered_white.png res</Command>
-    </PostBuildEvent>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Message>
-      </Message>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;GP_USE_MEM_LEAK_DETECTION;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <ShowIncludes>false</ShowIncludes>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x64;..\..\external-deps\bullet\lib\windows\x64;..\..\external-deps\openal\lib\windows\x64;..\..\external-deps\oggvorbis\lib\windows\x64;..\..\external-deps\glew\lib\windows\x64;..\..\external-deps\png\lib\windows\x64;..\..\external-deps\zlib\lib\windows\x64;..\..\gameplay\windows\x64\$(Configuration)</AdditionalLibraryDirectories>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Message>
-      </Message>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x86;..\..\external-deps\bullet\lib\windows\x86;..\..\external-deps\openal\lib\windows\x86;..\..\external-deps\oggvorbis\lib\windows\x86;..\..\external-deps\glew\lib\windows\x86;..\..\external-deps\png\lib\windows\x86;..\..\external-deps\zlib\lib\windows\x86;..\..\gameplay\windows\x86\$(Configuration)</AdditionalLibraryDirectories>
-    </Link>
-    <PostBuildEvent>
+copy ..\..\gameplay\res\logo_powered_white.png res</Command>
+    </PostBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+      <Message>
+      </Message>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;GP_USE_MEM_LEAK_DETECTION;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <ShowIncludes>false</ShowIncludes>
+      <PreprocessToFile>false</PreprocessToFile>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x64;..\..\external-deps\bullet\lib\windows\x64;..\..\external-deps\openal\lib\windows\x64;..\..\external-deps\oggvorbis\lib\windows\x64;..\..\external-deps\glew\lib\windows\x64;..\..\external-deps\png\lib\windows\x64;..\..\external-deps\zlib\lib\windows\x64;..\..\gameplay\windows\x64\$(Configuration)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+      <Message>
+      </Message>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x86;..\..\external-deps\bullet\lib\windows\x86;..\..\external-deps\openal\lib\windows\x86;..\..\external-deps\oggvorbis\lib\windows\x86;..\..\external-deps\glew\lib\windows\x86;..\..\external-deps\png\lib\windows\x86;..\..\external-deps\zlib\lib\windows\x86;..\..\gameplay\windows\x86\$(Configuration)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
       <Command>xcopy ..\..\gameplay\res\shaders res\shaders\* /s /y
-copy ..\..\gameplay\res\logo_powered_white.png res</Command>
-    </PostBuildEvent>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Message>
-      </Message>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x64;..\..\external-deps\bullet\lib\windows\x64;..\..\external-deps\openal\lib\windows\x64;..\..\external-deps\oggvorbis\lib\windows\x64;..\..\external-deps\glew\lib\windows\x64;..\..\external-deps\png\lib\windows\x64;..\..\external-deps\zlib\lib\windows\x64;..\..\gameplay\windows\x64\$(Configuration)</AdditionalLibraryDirectories>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-    <CustomBuildStep>
-      <Command>
-      </Command>
-      <Message>
-      </Message>
-      <Outputs>
-      </Outputs>
-    </CustomBuildStep>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <None Include="bar-descriptor.xml">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="game.config">
-      <SubType>Designer</SubType>
-    </None>
-    <None Include="icon.png" />
-    <None Include="res\common\arial-distance.gpb" />
-    <None Include="res\common\arial.gpb" />
-    <None Include="res\common\badaboom.gpb" />
-    <None Include="res\common\box.gpb" />
-    <None Include="res\common\box.material" />
-    <None Include="res\common\camera.lua" />
-    <None Include="res\common\constraints.gpb" />
-    <None Include="res\common\constraints.physics" />
-    <None Include="res\common\constraints.scene" />
-    <None Include="res\common\custom.gpb" />
-    <None Include="res\common\default.theme" />
-    <None Include="res\common\duck.gpb" />
-    <None Include="res\common\duck.material" />
-    <None Include="res\common\fishfingers.gpb" />
-    <None Include="res\common\forms\formBasicControls.form" />
-    <None Include="res\common\forms\formFlowLayout.form" />
-    <None Include="res\common\forms\formScrolling.form" />
-    <None Include="res\common\forms\formSelect.form" />
-    <None Include="res\common\forms\formVerticalLayout.form" />
-    <None Include="res\common\forms\formZOrder.form" />
-    <None Include="res\common\gamepad.form" />
-    <None Include="res\common\gamepad.theme" />
-    <None Include="res\common\grid.material" />
-    <None Include="res\common\inputs.form" />
-    <None Include="res\common\light.form" />
-    <None Include="res\common\light.material" />
-    <None Include="res\common\lightBrickWall.gpb" />
-    <None Include="res\common\neuropol.gpb" />
-    <None Include="res\common\physics.form" />
-    <None Include="res\common\physics.gpb" />
-    <None Include="res\common\physics.material" />
-    <None Include="res\common\physics.physics" />
-    <None Include="res\common\physics.scene" />
-    <None Include="res\common\postprocess\postprocess.material" />
-    <None Include="res\common\postprocess\postprocess.vert" />
-    <None Include="res\common\postprocess\postprocess_gaussianblur.frag" />
-    <None Include="res\common\postprocess\postprocess_grayscale.frag" />
-    <None Include="res\common\postprocess\postprocess_oldfilm.frag" />
-    <None Include="res\common\postprocess\postprocess_passthrough.frag" />
-    <None Include="res\common\postprocess\postprocess_pixelate.frag" />
-    <None Include="res\common\postprocess\postprocess_sepia.frag" />
-    <None Include="res\common\postprocess\postprocess_sobeledge.frag" />
-    <None Include="res\common\sample.gpb" />
-    <None Include="res\common\sample.material" />
-    <None Include="res\common\sample.scene" />
-    <None Include="res\common\sphere.gpb" />
-    <None Include="res\common\terrain\encode.bat" />
-    <None Include="res\common\terrain\heightmap.r16" />
-    <None Include="res\common\terrain\sample.scene" />
-    <None Include="res\common\terrain\sample.terrain" />
-    <None Include="res\common\terrain\shapes.material" />
-    <None Include="res\common\terrain\sky.fbx" />
-    <None Include="res\common\terrain\sky.gpb" />
-    <None Include="res\common\terrain\sky.material" />
-    <None Include="res\common\terrain\terrain.form" />
-    <None Include="res\common\text.form" />
-    <None Include="res\shaders\colored.frag" />
-    <None Include="res\shaders\colored.vert" />
-    <None Include="res\shaders\font.frag" />
-    <None Include="res\shaders\font.vert" />
-    <None Include="res\shaders\form.frag" />
-    <None Include="res\shaders\form.vert" />
-    <None Include="res\shaders\lighting.frag" />
-    <None Include="res\shaders\lighting.vert" />
-    <None Include="res\shaders\skinning-none.vert" />
-    <None Include="res\shaders\skinning.vert" />
-    <None Include="res\shaders\sprite.frag" />
-    <None Include="res\shaders\sprite.vert" />
-    <None Include="res\shaders\terrain.frag" />
-    <None Include="res\shaders\terrain.vert" />
-    <None Include="res\shaders\textured.frag" />
-    <None Include="res\shaders\textured.vert" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="src\Audio3DSample.cpp" />
-    <ClCompile Include="src\BillboardSample.cpp" />
-    <ClCompile Include="src\CreateSceneSample.cpp" />
-    <ClCompile Include="src\FormsSample.cpp" />
-    <ClCompile Include="src\GamepadSample.cpp" />
-    <ClCompile Include="src\GestureSample.cpp" />
-    <ClCompile Include="src\LightSample.cpp" />
-    <ClCompile Include="src\PostProcessSample.cpp" />
-    <ClCompile Include="src\TerrainSample.cpp" />
-    <ClCompile Include="src\TriangleSample.cpp" />
-    <ClCompile Include="src\FirstPersonCamera.cpp" />
-    <ClCompile Include="src\Grid.cpp" />
-    <ClCompile Include="src\InputSample.cpp" />
-    <ClCompile Include="src\LoadSceneSample.cpp" />
-    <ClCompile Include="src\MeshPrimitiveSample.cpp" />
-    <ClCompile Include="src\PhysicsCollisionObjectSample.cpp" />
-    <ClCompile Include="src\SpriteBatchSample.cpp" />
-    <ClCompile Include="src\Sample.cpp" />
-    <ClCompile Include="src\SamplesGame.cpp" />
-    <ClCompile Include="src\TextSample.cpp" />
-    <ClCompile Include="src\TextureSample.cpp" />
-    <ClCompile Include="src\MeshBatchSample.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="src\Audio3DSample.h" />
-    <ClInclude Include="src\BillboardSample.h" />
-    <ClInclude Include="src\CreateSceneSample.h" />
-    <ClInclude Include="src\FormsSample.h" />
-    <ClInclude Include="src\GamepadSample.h" />
-    <ClInclude Include="src\GestureSample.h" />
-    <ClInclude Include="src\LightSample.h" />
-    <ClInclude Include="src\PostProcessSample.h" />
-    <ClInclude Include="src\TerrainSample.h" />
-    <ClInclude Include="src\TriangleSample.h" />
-    <ClInclude Include="src\FirstPersonCamera.h" />
-    <ClInclude Include="src\Grid.h" />
-    <ClInclude Include="src\InputSample.h" />
-    <ClInclude Include="src\LoadSceneSample.h" />
-    <ClInclude Include="src\MeshPrimitiveSample.h" />
-    <ClInclude Include="src\PhysicsCollisionObjectSample.h" />
-    <ClInclude Include="src\SpriteBatchSample.h" />
-    <ClInclude Include="src\Sample.h" />
-    <ClInclude Include="src\SamplesGame.h" />
-    <ClInclude Include="src\TextSample.h" />
-    <ClInclude Include="src\TextureSample.h" />
-    <ClInclude Include="src\MeshBatchSample.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="res\common\terrain\dirt.dds" />
-    <Image Include="res\common\terrain\grass.dds" />
-    <Image Include="res\common\terrain\normalmap.dds" />
-    <Image Include="res\common\terrain\rock.dds" />
-    <Image Include="res\common\terrain\sky.dds" />
-    <Image Include="res\logo_powered_white.png" />
-    <Image Include="res\png\brick.png" />
-    <Image Include="res\png\brickn.png" />
-    <Image Include="res\png\color-wheel.png" />
-    <Image Include="res\png\crate.png" />
-    <Image Include="res\png\default-theme.png" />
-    <Image Include="res\png\dirt.png" />
-    <Image Include="res\png\duck.png" />
-    <Image Include="res\png\gamepad.png" />
-    <Image Include="res\png\grass.png" />
-    <Image Include="res\png\light-directional.png" />
-    <Image Include="res\png\light-point.png" />
-    <Image Include="res\png\light-spot.png" />
-    <Image Include="res\png\logo.png" />
-  </ItemGroup>
-  <ItemGroup>
-    <Media Include="res\common\footsteps.wav" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+copy ..\..\gameplay\res\logo_powered_white.png res</Command>
+    </PostBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+      <Message>
+      </Message>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_ITERATOR_DEBUG_LEVEL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>..\..\gameplay\src;..\..\external-deps\lua\include;..\..\external-deps\bullet\include;..\..\external-deps\openal\include\AL;..\..\external-deps\oggvorbis\include;..\..\external-deps\png\include;..\..\external-deps\zlib\include;..\..\external-deps\glew\include</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>lua.lib;OpenAL32.lib;OpenGL32.lib;GLU32.lib;glew32.lib;libpng.lib;zlib.lib;gameplay.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\..\external-deps\lua\lib\windows\x64;..\..\external-deps\bullet\lib\windows\x64;..\..\external-deps\openal\lib\windows\x64;..\..\external-deps\oggvorbis\lib\windows\x64;..\..\external-deps\glew\lib\windows\x64;..\..\external-deps\png\lib\windows\x64;..\..\external-deps\zlib\lib\windows\x64;..\..\gameplay\windows\x64\$(Configuration)</AdditionalLibraryDirectories>
+    </Link>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <CustomBuildStep>
+      <Command>
+      </Command>
+      <Message>
+      </Message>
+      <Outputs>
+      </Outputs>
+    </CustomBuildStep>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <None Include="bar-descriptor.xml">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="game.config">
+      <SubType>Designer</SubType>
+    </None>
+    <None Include="icon.png" />
+    <None Include="res\common\arial-distance.gpb" />
+    <None Include="res\common\arial.gpb" />
+    <None Include="res\common\badaboom.gpb" />
+    <None Include="res\common\box.gpb" />
+    <None Include="res\common\box.material" />
+    <None Include="res\common\camera.lua" />
+    <None Include="res\common\constraints.gpb" />
+    <None Include="res\common\constraints.physics" />
+    <None Include="res\common\constraints.scene" />
+    <None Include="res\common\custom.gpb" />
+    <None Include="res\common\default.theme" />
+    <None Include="res\common\duck.gpb" />
+    <None Include="res\common\duck.material" />
+    <None Include="res\common\fishfingers.gpb" />
+    <None Include="res\common\forms\formBasicControls.form" />
+    <None Include="res\common\forms\formFlowLayout.form" />
+    <None Include="res\common\forms\formScrolling.form" />
+    <None Include="res\common\forms\formSelect.form" />
+    <None Include="res\common\forms\formVerticalLayout.form" />
+    <None Include="res\common\forms\formZOrder.form" />
+    <None Include="res\common\gamepad.form" />
+    <None Include="res\common\gamepad.theme" />
+    <None Include="res\common\grid.material" />
+    <None Include="res\common\inputs.form" />
+    <None Include="res\common\light.form" />
+    <None Include="res\common\light.material" />
+    <None Include="res\common\lightBrickWall.gpb" />
+    <None Include="res\common\neuropol.gpb" />
+    <None Include="res\common\physics.form" />
+    <None Include="res\common\physics.gpb" />
+    <None Include="res\common\physics.material" />
+    <None Include="res\common\physics.physics" />
+    <None Include="res\common\physics.scene" />
+    <None Include="res\common\postprocess\postprocess.material" />
+    <None Include="res\common\postprocess\postprocess.vert" />
+    <None Include="res\common\postprocess\postprocess_gaussianblur.frag" />
+    <None Include="res\common\postprocess\postprocess_grayscale.frag" />
+    <None Include="res\common\postprocess\postprocess_oldfilm.frag" />
+    <None Include="res\common\postprocess\postprocess_passthrough.frag" />
+    <None Include="res\common\postprocess\postprocess_pixelate.frag" />
+    <None Include="res\common\postprocess\postprocess_sepia.frag" />
+    <None Include="res\common\postprocess\postprocess_sobeledge.frag" />
+    <None Include="res\common\sample.gpb" />
+    <None Include="res\common\sample.material" />
+    <None Include="res\common\sample.scene" />
+    <None Include="res\common\sphere.gpb" />
+    <None Include="res\common\terrain\encode.bat" />
+    <None Include="res\common\terrain\heightmap.r16" />
+    <None Include="res\common\terrain\sample.scene" />
+    <None Include="res\common\terrain\sample.terrain" />
+    <None Include="res\common\terrain\shapes.material" />
+    <None Include="res\common\terrain\sky.fbx" />
+    <None Include="res\common\terrain\sky.gpb" />
+    <None Include="res\common\terrain\sky.material" />
+    <None Include="res\common\terrain\terrain.form" />
+    <None Include="res\common\terrain\terrain.material" />
+    <None Include="res\common\text.form" />
+    <None Include="res\shaders\colored.frag" />
+    <None Include="res\shaders\colored.vert" />
+    <None Include="res\shaders\font.frag" />
+    <None Include="res\shaders\font.vert" />
+    <None Include="res\shaders\form.frag" />
+    <None Include="res\shaders\form.vert" />
+    <None Include="res\shaders\lighting.frag" />
+    <None Include="res\shaders\lighting.vert" />
+    <None Include="res\shaders\skinning-none.vert" />
+    <None Include="res\shaders\skinning.vert" />
+    <None Include="res\shaders\sprite.frag" />
+    <None Include="res\shaders\sprite.vert" />
+    <None Include="res\shaders\terrain.frag" />
+    <None Include="res\shaders\terrain.vert" />
+    <None Include="res\shaders\textured.frag" />
+    <None Include="res\shaders\textured.vert" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="src\Audio3DSample.cpp" />
+    <ClCompile Include="src\BillboardSample.cpp" />
+    <ClCompile Include="src\CreateSceneSample.cpp" />
+    <ClCompile Include="src\FormsSample.cpp" />
+    <ClCompile Include="src\GamepadSample.cpp" />
+    <ClCompile Include="src\GestureSample.cpp" />
+    <ClCompile Include="src\LightSample.cpp" />
+    <ClCompile Include="src\PostProcessSample.cpp" />
+    <ClCompile Include="src\TerrainSample.cpp" />
+    <ClCompile Include="src\TriangleSample.cpp" />
+    <ClCompile Include="src\FirstPersonCamera.cpp" />
+    <ClCompile Include="src\Grid.cpp" />
+    <ClCompile Include="src\InputSample.cpp" />
+    <ClCompile Include="src\LoadSceneSample.cpp" />
+    <ClCompile Include="src\MeshPrimitiveSample.cpp" />
+    <ClCompile Include="src\PhysicsCollisionObjectSample.cpp" />
+    <ClCompile Include="src\SpriteBatchSample.cpp" />
+    <ClCompile Include="src\Sample.cpp" />
+    <ClCompile Include="src\SamplesGame.cpp" />
+    <ClCompile Include="src\TextSample.cpp" />
+    <ClCompile Include="src\TextureSample.cpp" />
+    <ClCompile Include="src\MeshBatchSample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="src\Audio3DSample.h" />
+    <ClInclude Include="src\BillboardSample.h" />
+    <ClInclude Include="src\CreateSceneSample.h" />
+    <ClInclude Include="src\FormsSample.h" />
+    <ClInclude Include="src\GamepadSample.h" />
+    <ClInclude Include="src\GestureSample.h" />
+    <ClInclude Include="src\LightSample.h" />
+    <ClInclude Include="src\PostProcessSample.h" />
+    <ClInclude Include="src\TerrainSample.h" />
+    <ClInclude Include="src\TriangleSample.h" />
+    <ClInclude Include="src\FirstPersonCamera.h" />
+    <ClInclude Include="src\Grid.h" />
+    <ClInclude Include="src\InputSample.h" />
+    <ClInclude Include="src\LoadSceneSample.h" />
+    <ClInclude Include="src\MeshPrimitiveSample.h" />
+    <ClInclude Include="src\PhysicsCollisionObjectSample.h" />
+    <ClInclude Include="src\SpriteBatchSample.h" />
+    <ClInclude Include="src\Sample.h" />
+    <ClInclude Include="src\SamplesGame.h" />
+    <ClInclude Include="src\TextSample.h" />
+    <ClInclude Include="src\TextureSample.h" />
+    <ClInclude Include="src\MeshBatchSample.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <Image Include="res\common\terrain\dirt.dds" />
+    <Image Include="res\common\terrain\grass.dds" />
+    <Image Include="res\common\terrain\normalmap.dds" />
+    <Image Include="res\common\terrain\rock.dds" />
+    <Image Include="res\common\terrain\sky.dds" />
+    <Image Include="res\logo_powered_white.png" />
+    <Image Include="res\png\brick.png" />
+    <Image Include="res\png\brickn.png" />
+    <Image Include="res\png\color-wheel.png" />
+    <Image Include="res\png\crate.png" />
+    <Image Include="res\png\default-theme.png" />
+    <Image Include="res\png\dirt.png" />
+    <Image Include="res\png\duck.png" />
+    <Image Include="res\png\gamepad.png" />
+    <Image Include="res\png\grass.png" />
+    <Image Include="res\png\light-directional.png" />
+    <Image Include="res\png\light-point.png" />
+    <Image Include="res\png\light-spot.png" />
+    <Image Include="res\png\logo.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <Media Include="res\common\footsteps.wav" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>

+ 3 - 0
samples/browser/sample-browser.vcxproj.filters

@@ -248,6 +248,9 @@
     <None Include="res\shaders\textured.vert">
       <Filter>res\shaders</Filter>
     </None>
+    <None Include="res\common\terrain\terrain.material">
+      <Filter>res\common\terrain</Filter>
+    </None>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="src\MeshPrimitiveSample.h">

+ 1 - 6
samples/browser/src/TerrainSample.cpp

@@ -91,12 +91,7 @@ void TerrainSample::initialize()
 	enableScriptCamera(true);
     setScriptCameraSpeed(20, 80);
 
-    _directionalLight = Light::createDirectional(1, 1, 1);
-    Node* lightNode = Node::create("directionalLight");
-    _scene->addNode(lightNode);
-    lightNode->setLight(_directionalLight);
-    lightNode->setRotation(Vector3(1, 0, 0), -MATH_DEG_TO_RAD(45));
-    _directionalLight->release();
+    _directionalLight = _scene->findNode("directionalLight")->getLight();
 }
 
 void TerrainSample::finalize()