Index: trunk/nv.lua
===================================================================
--- trunk/nv.lua	(revision 465)
+++ trunk/nv.lua	(revision 466)
@@ -1,4 +1,6 @@
+NV_RUNTIME = NV_RUNTIME or "scrt"
+
 project "nv-core"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -7,5 +9,5 @@
 
 project "nv-lib"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -15,5 +17,5 @@
 
 project "nv-curses"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -23,5 +25,5 @@
 
 project "nv-fmod"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -31,5 +33,5 @@
 
 project "nv-sdl"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -39,5 +41,5 @@
 
 project "nv-gl"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -47,5 +49,5 @@
 
 project "nv-lua"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -55,5 +57,5 @@
 
 project "nv-rogue"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -63,5 +65,5 @@
 
 project "nv-io"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -71,5 +73,5 @@
 
 project "nv-gfx"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -79,5 +81,5 @@
 
 project "nv-engine"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -87,5 +89,5 @@
 
 project "nv-formats"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
@@ -95,5 +97,5 @@
 
 project "nv-gui"
-	location (_ACTION)
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
Index: trunk/nv/wx/wx.hh
===================================================================
--- trunk/nv/wx/wx.hh	(revision 465)
+++ trunk/nv/wx/wx.hh	(revision 466)
@@ -14,5 +14,5 @@
 #define __GL_H__
 #include <stddef.h>
-#include <nv/lib/detail/gl_types.inc>
+#include <nv/lib/detail/gl_core/gl_types_3_1.inc>
 #include "wx/wx.h"
 #undef near
Index: trunk/nv_wx.lua
===================================================================
--- trunk/nv_wx.lua	(revision 465)
+++ trunk/nv_wx.lua	(revision 466)
@@ -1,3 +1,6 @@
+assert( NV_RUNTIME == "dcrt" )
+
 project "nv-wx"
+	location (_ACTION.."/"..NV_RUNTIME)
 	language "C++"
 	kind "StaticLib"
Index: trunk/src/gl/gl_context.cc
===================================================================
--- trunk/src/gl/gl_context.cc	(revision 465)
+++ trunk/src/gl/gl_context.cc	(revision 466)
@@ -177,6 +177,6 @@
 		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete attachment!" ); break;
 		case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : NV_LOG_ERROR( "gl_context::check : Framebuffer missing attachment!" ); break;
-		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete dimensions!" ); break;
-		case GL_FRAMEBUFFER_INCOMPLETE_FORMATS            : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete formats!" ); break;
+//		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete dimensions!" ); break;
+//		case GL_FRAMEBUFFER_INCOMPLETE_FORMATS            : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete formats!" ); break;
 		case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER        : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete draw buffer!" ); break;
 		case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER        : NV_LOG_ERROR( "gl_context::check : Framebuffer incomplete read buffer!" ); break;
Index: trunk/src/gl/gl_device.cc
===================================================================
--- trunk/src/gl/gl_device.cc	(revision 465)
+++ trunk/src/gl/gl_device.cc	(revision 466)
@@ -17,5 +17,5 @@
 gl_device::gl_device()
 {
-	m_shader_header.append( "#version 120\n#extension GL_EXT_texture_array : require\n" );
+	m_shader_header.append( "#version 330\n" );
 	for ( auto& i : get_uniform_factory() ) 
 		m_shader_header.append( "uniform "+datatype_to_glsl_type( i.second->get_datatype() )+" "+ i.first +";\n" );
@@ -124,17 +124,10 @@
 	if ( is_depth )
 	{
-#define GL_TEXTURE_DEPTH_SIZE 0x884A
-#define GL_DEPTH_TEXTURE_MODE 0x884B
-#define GL_TEXTURE_COMPARE_MODE 0x884C
-#define GL_TEXTURE_COMPARE_FUNC 0x884D
-#define GL_COMPARE_R_TO_TEXTURE 0x884E
-
-#define GL_INTENSITY 0x8049
-#define GL_LUMINANCE 0x1909
-// 		glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE );
-// 		glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL );
-// 		glTexParameteri( GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE );
-//    		glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, 0 );
-//    		glTexParameteri( GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY );
+		glTexParameteri( gl_type, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
+		glTexParameteri( gl_type, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
+
+		// This is to allow usage of shadow2DProj function in the shader
+		glTexParameteri( gl_type, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE );
+		glTexParameteri( gl_type, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL );
 	}
 
@@ -182,4 +175,14 @@
 	glTexParameteri( gl_type, GL_TEXTURE_WRAP_T, GLint( nv::sampler_wrap_to_enum( asampler.wrap_t ) ) );
 
+	if ( is_depth )
+	{
+		glTexParameteri( gl_type, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
+		glTexParameteri( gl_type, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
+
+		// This is to allow usage of shadow2DProj function in the shader
+		glTexParameteri( gl_type, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE );
+		glTexParameteri( gl_type, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL );
+	}
+
 	//glTexStorage3D( GL_TEXTURE_2D_ARRAY, mipLevelCount, GL_RGBA8, width, height, layerCount );
 	glTexImage3D( gl_type, 0, GLint( nv::image_format_to_internal_enum( aformat.format ) ), size.x, size.y, size.z, 0, nv::image_format_to_enum( aformat.format ), nv::datatype_to_gl_enum( aformat.type ), data );
@@ -366,5 +369,5 @@
 	if ( length > 0 )
 	{
-		NV_LOG_INFO( "Program #", p->glid, " log: ", buffer );
+		NV_LOG_INFO( "Program #", p->glid, " log: ", string_view( buffer, size_t( length ) ) );
 	}
 
Index: trunk/src/gl/gl_window.cc
===================================================================
--- trunk/src/gl/gl_window.cc	(revision 465)
+++ trunk/src/gl/gl_window.cc	(revision 466)
@@ -75,5 +75,5 @@
 	int attribs[] =
 	{
-		WGL_CONTEXT_MAJOR_VERSION_ARB,   2,
+		WGL_CONTEXT_MAJOR_VERSION_ARB,   3,
 		WGL_CONTEXT_MINOR_VERSION_ARB,   1,
 		WGL_CONTEXT_PROFILE_MASK_ARB,  WGL_CONTEXT_CORE_PROFILE_BIT_ARB, 
Index: trunk/src/lib/gl.cc
===================================================================
--- trunk/src/lib/gl.cc	(revision 465)
+++ trunk/src/lib/gl.cc	(revision 466)
@@ -26,9 +26,8 @@
 #define NV_GL_FUN_REN( rtype, fname, rname, fparams ) rtype (NV_GL_APIENTRY *rname) fparams = nullptr;
 #define NV_GL_FUN_EXT NV_GL_FUN
-#include <nv/lib/detail/gl_functions.inc>
+#include <nv/lib/detail/gl_core/gl_functions_3_1.inc>
 #if NV_PLATFORM == NV_WINDOWS
 #include <nv/lib/detail/wgl_functions.inc>
 #endif
-#include <nv/lib/detail/gl_ext/gl_ext_all_functions.inc>
 #undef NV_GL_FUN_REN
 #undef NV_GL_FUN_EXT
@@ -107,5 +106,5 @@
 #	define NV_GL_FUN( rtype, fname, fparams ) NV_GL_LOAD( fname )
 #	define NV_GL_FUN_EXT( rtype, fname, fparams ) NV_GL_LOAD_EXT( fname )
-#	include <nv/lib/detail/gl_functions.inc>
+#	include <nv/lib/detail/gl_core/gl_functions_3_1.inc>
 #	undef NV_GL_FUN_EXT
 #	undef NV_GL_FUN
