Browse Source

GL with new depth stencil works

Marko Pintera 13 years ago
parent
commit
f31858229c

+ 49 - 49
CamelotClient/CamelotClient.cpp

@@ -26,9 +26,9 @@ using namespace CamelotEngine;
 
 int _tmain(int argc, _TCHAR* argv[])
 {
-	//gApplication().startUp("CamelotGLRenderSystem", "CamelotForwardRenderer");
+	gApplication().startUp("CamelotGLRenderSystem", "CamelotForwardRenderer");
 	//gApplication().startUp("CamelotD3D9RenderSystem", "CamelotForwardRenderer");
-	gApplication().startUp("CamelotD3D11RenderSystem", "CamelotForwardRenderer");
+	//gApplication().startUp("CamelotD3D11RenderSystem", "CamelotForwardRenderer");
 
 	RenderSystem* renderSystem = RenderSystem::instancePtr();
 	RenderWindowPtr renderWindow = gApplication().getPrimaryRenderWindow();
@@ -74,28 +74,28 @@ int _tmain(int argc, _TCHAR* argv[])
 	//vertProg =  HighLevelGpuProgram::create(vertShaderCode, "vs_main", "hlsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
 
 	/////////////////// HLSL 11 SHADERS //////////////////////////
-	String fragShaderCode = "SamplerState samp : register(s0);			\
-							Texture2D tex : register(t0); \
-							float4 ps_main(in float4 inPos : SV_Position, float2 uv : TEXCOORD0) : SV_Target		\
-							{														\
-							float4 color = tex.Sample(samp, uv);				\
-							return color;										\
-							}";
-
-	fragProg =  HighLevelGpuProgram::create(fragShaderCode, "ps_main", "hlsl", GPT_FRAGMENT_PROGRAM, GPP_PS_4_0);
-
-	String vertShaderCode = "float4x4 matViewProjection;	\
-							void vs_main(										\
-							in float4 inPos : POSITION,							\
-							in float2 uv : TEXCOORD0,								\
-							out float4 oPosition : SV_Position,					\
-							out float2 oUv : TEXCOORD0)							\
-							{														\
-							oPosition = mul(matViewProjection, inPos);			\
-							oUv = uv;											\
-							}";
-
-	vertProg =  HighLevelGpuProgram::create(vertShaderCode, "vs_main", "hlsl", GPT_VERTEX_PROGRAM, GPP_VS_4_0);
+	//String fragShaderCode = "SamplerState samp : register(s0);			\
+	//						Texture2D tex : register(t0); \
+	//						float4 ps_main(in float4 inPos : SV_Position, float2 uv : TEXCOORD0) : SV_Target		\
+	//						{														\
+	//						float4 color = tex.Sample(samp, uv);				\
+	//						return color;										\
+	//						}";
+
+	//fragProg =  HighLevelGpuProgram::create(fragShaderCode, "ps_main", "hlsl", GPT_FRAGMENT_PROGRAM, GPP_PS_4_0);
+
+	//String vertShaderCode = "float4x4 matViewProjection;	\
+	//						void vs_main(										\
+	//						in float4 inPos : POSITION,							\
+	//						in float2 uv : TEXCOORD0,								\
+	//						out float4 oPosition : SV_Position,					\
+	//						out float2 oUv : TEXCOORD0)							\
+	//						{														\
+	//						oPosition = mul(matViewProjection, inPos);			\
+	//						oUv = uv;											\
+	//						}";
+
+	//vertProg =  HighLevelGpuProgram::create(vertShaderCode, "vs_main", "hlsl", GPT_VERTEX_PROGRAM, GPP_VS_4_0);
 
 	/////////////////// CG SHADERS //////////////////////////
 	//String fragShaderCode = "sampler2D tex;					\
@@ -121,31 +121,31 @@ int _tmain(int argc, _TCHAR* argv[])
 	//vertProg =  HighLevelGpuProgram::create(vertShaderCode, "vs_main", "cg", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
 
 	///////////////// GLSL SHADERS ////////////////////////////
-	//String fragShaderCode = " #version 400 \n \
-	//						  uniform sampler2D tex; \
-	//						  in vec2 texcoord0; \
-	//						  out vec4 fragColor; \
-	//						  void main() \
-	//						  {\
-	//							  vec4 texColor = texture2D(tex, texcoord0.st);\
-	//							  fragColor = texColor; \
-	//						  }";
-
-	//fragProg = HighLevelGpuProgram::create(fragShaderCode, "main", "glsl", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
-
-	//// TODO - Make sure to document the strict input parameter naming. (Exact supported names are in GLSLParamParser)
-	//String vertShaderCode = "#version 400 \n \
-	//						 uniform mainFragBlock { mat4 matViewProjection; }; \
-	//						 in vec4 cm_position; \
-	//						 in vec2 cm_texcoord0; \
-	//						 out vec2 texcoord0; \
-	//						 void main() \
-	//						 { \
-	//							texcoord0 = cm_texcoord0; \
-	//							gl_Position = cm_position * matViewProjection; \
-	//						 }";
-
-	//vertProg = HighLevelGpuProgram::create(vertShaderCode, "main", "glsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
+	String fragShaderCode = " #version 400 \n \
+							  uniform sampler2D tex; \
+							  in vec2 texcoord0; \
+							  out vec4 fragColor; \
+							  void main() \
+							  {\
+								  vec4 texColor = texture2D(tex, texcoord0.st);\
+								  fragColor = texColor; \
+							  }";
+
+	fragProg = HighLevelGpuProgram::create(fragShaderCode, "main", "glsl", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
+
+	// TODO - Make sure to document the strict input parameter naming. (Exact supported names are in GLSLParamParser)
+	String vertShaderCode = "#version 400 \n \
+							 uniform mainFragBlock { mat4 matViewProjection; }; \
+							 in vec4 cm_position; \
+							 in vec2 cm_texcoord0; \
+							 out vec2 texcoord0; \
+							 void main() \
+							 { \
+								texcoord0 = cm_texcoord0; \
+								gl_Position = cm_position * matViewProjection; \
+							 }";
+
+	vertProg = HighLevelGpuProgram::create(vertShaderCode, "main", "glsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
 
 	HighLevelGpuProgramHandle vertProgRef(vertProg);
 

+ 0 - 2
CamelotGLRenderer/CamelotGLRenderer.vcxproj

@@ -148,7 +148,6 @@
   </ItemDefinitionGroup>
   <ItemGroup>
     <ClInclude Include="Include\CmGLContext.h" />
-    <ClInclude Include="Include\CmGLDepthStencilBuffer.h" />
     <ClInclude Include="Include\CmGLFrameBufferObject.h" />
     <ClInclude Include="Include\CmGLGenericBuffer.h" />
     <ClInclude Include="Include\CmGLGpuParamBlock.h" />
@@ -185,7 +184,6 @@
   <ItemGroup>
     <ClCompile Include="CmGLPlugin.cpp" />
     <ClCompile Include="Source\CmGLContext.cpp" />
-    <ClCompile Include="Source\CmGLDepthStencilBuffer.cpp" />
     <ClCompile Include="Source\CmGLFrameBufferObject.cpp" />
     <ClCompile Include="Source\CmGLGenericBuffer.cpp" />
     <ClCompile Include="Source\CmGLGpuParamBlock.cpp" />

+ 0 - 6
CamelotGLRenderer/CamelotGLRenderer.vcxproj.filters

@@ -96,9 +96,6 @@
     <ClInclude Include="Include\CmGLRenderWindowManager.h">
       <Filter>Header Files</Filter>
     </ClInclude>
-    <ClInclude Include="Include\CmGLDepthStencilBuffer.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
     <ClInclude Include="Include\CmGLMultiRenderTexture.h">
       <Filter>Header Files</Filter>
     </ClInclude>
@@ -194,9 +191,6 @@
     <ClCompile Include="Source\CmGLRenderWindowManager.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="Source\CmGLDepthStencilBuffer.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="Source\CmGLMultiRenderTexture.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>

+ 0 - 19
CamelotGLRenderer/Include/CmGLDepthStencilBuffer.h

@@ -1,19 +0,0 @@
-#pragma once
-
-#include "CmGLPrerequisites.h"
-#include "CmDepthStencilBuffer.h"
-
-namespace CamelotEngine
-{
-	class CM_RSGL_EXPORT GLDepthStencilBuffer : public DepthStencilBuffer
-	{
-	public:
-		GLDepthStencilBuffer(DepthStencilFormat format, UINT32 width, UINT32 height, UINT32 fsaa, const String &fsaaHint);
-		~GLDepthStencilBuffer();
-
-		GLRenderBufferPtr getGLRenderBuffer() const { return mDepthStencilRenderBuffer; }
-
-	protected:
-		GLRenderBufferPtr mDepthStencilRenderBuffer;
-	};
-}

+ 3 - 3
CamelotGLRenderer/Include/CmGLFrameBufferObject.h

@@ -40,7 +40,7 @@ namespace CamelotEngine
     struct CM_RSGL_EXPORT GLSurfaceDesc
     {
     public:
-        GLHardwarePixelBufferPtr buffer;
+        GLPixelBufferPtr buffer;
         UINT32 zoffset;
 		UINT32 numSamples;
 
@@ -67,7 +67,7 @@ namespace CamelotEngine
 		/**
 		 * @brief	Bind depth stencil buffer.
 		 */
-		void bindDepthStencil(GLHardwarePixelBufferPtr depthStencilBuffer);
+		void bindDepthStencil(GLPixelBufferPtr depthStencilBuffer);
 
 		/**
 		 * @brief	Unbinds depth stencil buffer.
@@ -91,7 +91,7 @@ namespace CamelotEngine
 		GLsizei mNumSamples;
         GLuint mFB;
 
-        GLHardwarePixelBufferPtr mDepthStencilBuffer;
+        GLPixelBufferPtr mDepthStencilBuffer;
         // Arbitrary number of texture surfaces
         GLSurfaceDesc mColor[CM_MAX_MULTIPLE_RENDER_TARGETS];
 

+ 1 - 1
CamelotGLRenderer/Include/CmGLMultiRenderTexture.h

@@ -20,7 +20,7 @@ namespace CamelotEngine
 		void initialize();
 
 		void setColorSurfaceImpl(UINT32 surfaceIdx, TexturePtr texture, UINT32 face = 0, UINT32 numFaces = 0, UINT32 mipLevel = 0);
-		void setDepthStencilImpl(DepthStencilBufferPtr depthStencilbuffer);
+		void setDepthStencilImpl(TexturePtr depthStencilSurface);
 	private:
 		GLFrameBufferObject* mFB;
 	};

+ 6 - 5
CamelotGLRenderer/Include/CmGLPixelFormat.h

@@ -65,6 +65,12 @@ namespace CamelotEngine {
 		*/
 		static GLenum getClosestGLInternalFormat(PixelFormat mFormat, bool hwGamma = false);
 		
+		/**
+		 * @brief	Returns a valid type that should be used for creating a buffer for the specified
+		 * 			depth/stencil format.
+		 */
+		static GLenum getDepthStencilTypeFromFormat(PixelFormat mFormat);
+
 		/**	Function to get the closest matching engine format to an internal GL format. To be
 			precise, the format will be chosen that is most efficient to transfer to the card 
 			without losing precision.
@@ -72,11 +78,6 @@ namespace CamelotEngine {
 		*/
 		static PixelFormat getClosestEngineFormat(GLenum fmt);
 
-		/**
-		 * @brief	Returns closest OpenGL depth/stencil format.
-		 */
-		static GLenum getDepthStencilFormat(DepthStencilFormat fmt);
-
 		/**
 		 * @brief	Gets OpenGL format based on a compressed OpenGL internal format.
 		 * 			e.g. GL_COMPRESSED_RGBA_S3TC_DXT1_EXT will return GL_RGBA

+ 1 - 3
CamelotGLRenderer/Include/CmGLPrerequisites.h

@@ -40,13 +40,11 @@ namespace CamelotEngine {
     class GLContext;
     class GLRTTManager;
     class GLPixelBuffer;
-    class GLRenderBuffer;
 	class GLGpuParamBlock;
 	struct GLSLProgramPipeline;
 	class GLSLProgramPipelineManager;
 
-	typedef std::shared_ptr<GLPixelBuffer> GLHardwarePixelBufferPtr;
-	typedef std::shared_ptr<GLRenderBuffer> GLRenderBufferPtr;
+	typedef std::shared_ptr<GLPixelBuffer> GLPixelBufferPtr;
 	typedef std::shared_ptr<GLGpuParamBlock> GLGpuParamBlockPtr;
 
 	enum TypeID_D3D9

+ 1 - 1
CamelotGLRenderer/Include/CmGLTexture.h

@@ -42,7 +42,7 @@ namespace CamelotEngine {
     public:
         virtual ~GLTexture();      
 
-        // Takes the OGRE texture type (1d/2d/3d/cube) and returns the appropriate GL one
+        // Takes the engine texture type (1d/2d/3d/cube) and returns the appropriate GL one
         GLenum getGLTextureTarget(void) const;
 
         GLuint getGLID() const;

+ 0 - 18
CamelotGLRenderer/Source/CmGLDepthStencilBuffer.cpp

@@ -1,18 +0,0 @@
-#include "CmGLDepthStencilBuffer.h"
-#include "CmGLPixelBuffer.h"
-#include "CmGLPixelFormat.h"
-
-namespace CamelotEngine
-{
-	GLDepthStencilBuffer::GLDepthStencilBuffer(DepthStencilFormat format, UINT32 width, UINT32 height, UINT32 fsaa, const String &fsaaHint)
-		:DepthStencilBuffer(format, width, height, fsaa, fsaaHint)
-	{
-		GLenum glDepthFormat = GLPixelUtil::getDepthStencilFormat(format);
-		mDepthStencilRenderBuffer = GLRenderBufferPtr(new GLRenderBuffer(glDepthFormat, width, height, fsaa));
-	}
-
-	GLDepthStencilBuffer::~GLDepthStencilBuffer()
-	{
-
-	}
-}

+ 1 - 1
CamelotGLRenderer/Source/CmGLFrameBufferObject.cpp

@@ -86,7 +86,7 @@ namespace CamelotEngine
 		}
     }
 
-	void GLFrameBufferObject::bindDepthStencil(GLHardwarePixelBufferPtr depthStencilBuffer)
+	void GLFrameBufferObject::bindDepthStencil(GLPixelBufferPtr depthStencilBuffer)
 	{
 		mDepthStencilBuffer = depthStencilBuffer;
 	}

+ 5 - 5
CamelotGLRenderer/Source/CmGLMultiRenderTexture.cpp

@@ -1,5 +1,4 @@
 #include "CmGLMultiRenderTexture.h"
-#include "CmGLDepthStencilBuffer.h"
 #include "CmGLTexture.h"
 
 namespace CamelotEngine
@@ -35,13 +34,14 @@ namespace CamelotEngine
 		}
 	}
 
-	void GLMultiRenderTexture::setDepthStencilImpl(DepthStencilBufferPtr depthStencilBuffer)
+	void GLMultiRenderTexture::setDepthStencilImpl(TexturePtr depthStencilSurface)
 	{
-		if(depthStencilBuffer != nullptr)
+		if(depthStencilSurface != nullptr)
 		{
-			GLDepthStencilBuffer* glDepthStencilBuffer = static_cast<GLDepthStencilBuffer*>(mDepthStencilSurface.get());
+			GLTexture* glDepthStencilSurface = static_cast<GLTexture*>(mDepthStencilSurface.get());
+			GLPixelBufferPtr depthStencilBuffer = std::static_pointer_cast<GLPixelBuffer>(glDepthStencilSurface->getBuffer(0, 0));
 
-			mFB->bindDepthStencil(glDepthStencilBuffer->getGLRenderBuffer());
+			mFB->bindDepthStencil(depthStencilBuffer);
 		}
 		else
 		{

+ 3 - 0
CamelotGLRenderer/Source/CmGLPixelBuffer.cpp

@@ -378,6 +378,9 @@ namespace CamelotEngine
 		if((mUsage & TU_RENDERTARGET) != 0)
 			CM_EXCEPT(NotImplementedException, "Reading from render texture to CPU not supported."); // TODO: This needs to be implemented
 
+		if((mUsage & TU_DEPTHSTENCIL) != 0)
+			CM_EXCEPT(NotImplementedException, "Reading from depth stencil texture to CPU not supported."); // TODO: This needs to be implemented
+
 		if(data.getWidth() != getWidth() ||
 			data.getHeight() != getHeight() ||
 			data.getDepth() != getDepth())

+ 25 - 19
CamelotGLRenderer/Source/CmGLPixelFormat.cpp

@@ -283,6 +283,14 @@ namespace CamelotEngine  {
 					return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;
 				else
 	                return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
+			case PF_D16:
+				return GL_DEPTH_COMPONENT16;
+			case PF_D32:
+				return GL_DEPTH_COMPONENT32F;
+			case PF_D24S8:
+				return GL_DEPTH24_STENCIL8;
+			case PF_D32_S8X24:
+				return GL_DEPTH32F_STENCIL8;
             default:
                 return GL_NONE;
         }
@@ -301,6 +309,23 @@ namespace CamelotEngine  {
         else
             return format;
     }
+
+	GLenum GLPixelUtil::getDepthStencilTypeFromFormat(PixelFormat mFormat)
+	{
+		switch(mFormat)
+		{
+		case PF_D32_S8X24:
+			return GL_FLOAT_32_UNSIGNED_INT_24_8_REV;
+		case PF_D24S8:
+			return GL_UNSIGNED_INT_24_8;
+		case PF_D32:
+			return GL_FLOAT;
+		case PF_D16:
+			return GL_UNSIGNED_SHORT;
+		}
+
+		CM_EXCEPT(InvalidParametersException, "Invalid depth stencil format");
+	}
 	
 	//----------------------------------------------------------------------------- 	
 	PixelFormat GLPixelUtil::getClosestEngineFormat(GLenum fmt)
@@ -372,25 +397,6 @@ namespace CamelotEngine  {
 		};
 	}
 	//----------------------------------------------------------------------------- 
-	GLenum GLPixelUtil::getDepthStencilFormat(DepthStencilFormat fmt)
-	{
-		switch(fmt)
-		{
-		case DFMT_D32_S8X24:
-			return GL_DEPTH32F_STENCIL8;
-		case DFMT_D24S8:
-			return GL_DEPTH24_STENCIL8;
-		case DFMT_D32:
-			return GL_DEPTH_COMPONENT32F;
-		case DFMT_D16:
-			return GL_DEPTH_COMPONENT16;
-		}
-
-		LOGWRN("Requesting unsupported DepthStencilFormat. Using D24S8 format instead.");
-
-		return GL_DEPTH24_STENCIL8;
-	}
-	//----------------------------------------------------------------------------- 
 	UINT32 GLPixelUtil::getMaxMipmaps(UINT32 width, UINT32 height, UINT32 depth, PixelFormat format)
 	{
 		UINT32 count = 0;

+ 3 - 3
CamelotGLRenderer/Source/CmGLRenderTexture.cpp

@@ -27,7 +27,6 @@ THE SOFTWARE.
 */
 #include "CmGLRenderTexture.h"
 #include "CmGLPixelFormat.h"
-#include "CmGLDepthStencilBuffer.h"
 #include "CmGLPixelBuffer.h"
 
 namespace CamelotEngine 
@@ -59,9 +58,10 @@ namespace CamelotEngine
 
 		mFB->bindSurface(0, surfaceDesc);
 
-		GLDepthStencilBuffer* glDepthStencilBuffer = static_cast<GLDepthStencilBuffer*>(mDepthStencilSurface.get());
+		GLTexture* glDepthStencilTexture = static_cast<GLTexture*>(mDepthStencilSurface.get());
+		GLPixelBufferPtr depthStencilBuffer = std::static_pointer_cast<GLPixelBuffer>(glDepthStencilTexture->getBuffer(0, 0));
 
-		mFB->bindDepthStencil(glDepthStencilBuffer->getGLRenderBuffer());
+		mFB->bindDepthStencil(depthStencilBuffer);
 	}
 
 	void GLRenderTexture::getCustomAttribute(const String& name, void* pData)

+ 30 - 8
CamelotGLRenderer/Source/CmGLTexture.cpp

@@ -147,10 +147,6 @@ namespace CamelotEngine {
 	/****************************************************************************************/
 	void GLTexture::createInternalResourcesImpl(void)
     {
-		if (!GLEW_VERSION_1_2 && mTextureType == TEX_TYPE_3D)
-			CM_EXCEPT(NotImplementedException, 
-				"3D Textures not supported before OpenGL 1.2");
-
 		// Convert to nearest power-of-two size if required
         mWidth = GLPixelUtil::optionalPO2(mWidth);      
         mHeight = GLPixelUtil::optionalPO2(mHeight);
@@ -172,6 +168,17 @@ namespace CamelotEngine {
 				CM_EXCEPT(NotImplementedException, "Only 2D render targets are supported at the moment");
 		}
 
+		if((mUsage & TU_DEPTHSTENCIL) != 0)
+		{
+			mNumMipmaps = 1;
+
+			if(mTextureType != TEX_TYPE_2D)
+				CM_EXCEPT(NotImplementedException, "Only 2D depth stencil targets are supported at the moment");
+
+			if(!PixelUtil::isDepth(mFormat))
+				CM_EXCEPT(NotImplementedException, "Supplied format is not a depth stencil format. Format: " + toString(mFormat));
+		}
+
 		// Generate texture name
         glGenTextures( 1, &mTextureID );
 		
@@ -179,8 +186,7 @@ namespace CamelotEngine {
 		glBindTexture( getGLTextureTarget(), mTextureID );
         
 		// This needs to be set otherwise the texture doesn't get rendered
-		if (GLEW_VERSION_1_2)
-			glTexParameteri( getGLTextureTarget(), GL_TEXTURE_MAX_LEVEL, mNumMipmaps );
+		glTexParameteri( getGLTextureTarget(), GL_TEXTURE_MAX_LEVEL, mNumMipmaps );
         
         // Set some misc default parameters so NVidia won't complain, these can of course be changed later
         glTexParameteri(getGLTextureTarget(), GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@@ -198,13 +204,13 @@ namespace CamelotEngine {
 		UINT32 height = mHeight;
 		UINT32 depth = mDepth;
 
-		GLenum glFormat = GL_RGBA;
 		if(PixelUtil::isCompressed(mFormat))
 		{
 			if((mUsage & TU_RENDERTARGET) != 0)
 				CM_EXCEPT(InvalidParametersException, "Cannot use a compressed format for a render target.");
 
-			glFormat = GLPixelUtil::getBaseFormatFromCompressedInternalFormat(mFormat);
+			if((mUsage & TU_DEPTHSTENCIL) != 0)
+				CM_EXCEPT(InvalidParametersException, "Cannot use a compressed format for a depth stencil target.");
 		}
 
 		if((mUsage & TU_RENDERTARGET) != 0 && mTextureType == TEX_TYPE_2D && mFSAA > 0)
@@ -212,6 +218,22 @@ namespace CamelotEngine {
 			glTexImage2DMultisample(GL_TEXTURE_2D, mFSAA, format,
 				width, height, GL_FALSE);
 		}
+		else if((mUsage & TU_DEPTHSTENCIL) != 0)
+		{
+			if(mFSAA > 0)
+			{
+				glTexImage2DMultisample(GL_TEXTURE_2D, mFSAA, format,
+					width, height, GL_FALSE);
+			}
+			else
+			{
+				GLenum depthStencilFormat = GLPixelUtil::getDepthStencilTypeFromFormat(mFormat);
+
+				glTexImage2D(GL_TEXTURE_2D, 0, format,
+					width, height, 0, 
+					GL_DEPTH_STENCIL, depthStencilFormat, nullptr);
+			}
+		}
 		else
 		{
 			// Run through this process to pregenerate mipmap piramid

+ 0 - 1
CamelotGLRenderer/Source/CmGLTextureManager.cpp

@@ -29,7 +29,6 @@ THE SOFTWARE.
 #include "CmGLTextureManager.h"
 #include "CmRenderSystem.h"
 #include "CmGLRenderTexture.h"
-#include "CmGLDepthStencilBuffer.h"
 #include "CmGLMultiRenderTexture.h"
 
 namespace CamelotEngine {

+ 1 - 0
CamelotRenderer.sln

@@ -18,6 +18,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CamelotClient", "CamelotCli
 		{9B21D41C-516B-43BF-9B10-E99B599C7589} = {9B21D41C-516B-43BF-9B10-E99B599C7589}
 		{122B7A22-0C62-4B35-B661-EBF3F394EA79} = {122B7A22-0C62-4B35-B661-EBF3F394EA79}
 		{1437BB4E-DDB3-4307-AA41-8C035DA3014B} = {1437BB4E-DDB3-4307-AA41-8C035DA3014B}
+		{F58FF869-2EA6-4FFF-AB84-328C531BA9D9} = {F58FF869-2EA6-4FFF-AB84-328C531BA9D9}
 		{08975177-4A13-4EE7-BB21-3BB92FB3F3CC} = {08975177-4A13-4EE7-BB21-3BB92FB3F3CC}
 		{7F449698-73DF-4203-9F31-0877DBF01695} = {7F449698-73DF-4203-9F31-0877DBF01695}
 		{BFEBBAF8-8A84-4899-8899-D0D7196AF9A1} = {BFEBBAF8-8A84-4899-8899-D0D7196AF9A1}

+ 4 - 1
CamelotRenderer/TODO.txt

@@ -14,8 +14,11 @@
 
 
 >>>>>>>>>>FINAL SPRINT BEFORE EDITOR WORK
+Port depth stencil buffer for OpenGL
+Make sure that I am able to blit contents from render textures on all render systems
+Get rid of SurfaceDesc in CmRenderTarget. I should probably add a resource view similar as I did with buffers.
+ - Also in render and multirender textures whenever get depth stencil surface I always use 0 mip and 0 face, however it should use a surface desc same as color surface
 Once I get DX11 running make sure to test if driver complains about missing shader attributes or invalid size ones
-delete d3d11 vertex declaration
  Working generic buffers
  A way to bind buffers to a Pass, while specifying buffer range
  Better creation of PrimaryWindow