Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/FrameBufferObject.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/FrameBufferObject.cpp	(revision 2878)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/FrameBufferObject.cpp	(revision 2879)
@@ -16,5 +16,5 @@
 	{
 	case GL_FRAMEBUFFER_COMPLETE_EXT:
-		cout << "frame buffer object complete" << endl;
+		//cout << "frame buffer object complete" << endl;
 		break;
 	case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
@@ -68,9 +68,11 @@
 	}
 
+
 	glGenRenderbuffersEXT(1, &mId);
 	glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mId);
+	
 	glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, internalFormat, w, h);
-	
 	glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, color_attachment[attachment_idx], GL_RENDERBUFFER_EXT, mId);
+
 
 	glGenTextures(1, &mTexId);
@@ -141,6 +143,4 @@
 	Bind();
 
-	cout << "creating fbo" << endl;
-
 	///////////
 	//-- create depth buffer
@@ -150,6 +150,4 @@
 		glGenRenderbuffersEXT(1, &mDepthId);	
 		glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mDepthId);
-
-		cout << "adding depth buffer" << endl;
 
 		GLuint depthFormat;
@@ -167,11 +165,11 @@
 		}
 
-		glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, depthFormat, mWidth, mHeight);
+		glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, depthFormat, w, h);
+		
+
 		glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mDepthId);
 
 		if (useDepthTex)
 		{
-			//cout << "adding depth texture" << endl;
-
 			glGenTextures(1, &mDepthTexId);
 			glBindTexture(GL_TEXTURE_2D, mDepthTexId);
@@ -210,6 +208,4 @@
 									  bool useMipMap)
 {
-	cout << "adding color buffer" << endl;
-
 	Bind();
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneQuery.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneQuery.cpp	(revision 2878)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneQuery.cpp	(revision 2879)
@@ -143,5 +143,4 @@
 	fbo->AddColorBuffer(ColorBufferObject::BUFFER_UBYTE, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST, false);
 
-	PrintGLerror("here667");
 
 	fbo->Bind();
@@ -152,5 +151,4 @@
 	glPushAttrib(GL_VIEWPORT_BIT);
 
-	glClearColor(1, 1, 1, 1);
 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -188,5 +186,4 @@
 
 	GrabDepthBuffer(mDepth, fbo->GetDepthTex());
-	
 	//ExportDepthBuffer(mDepth); PrintGLerror("grab");
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/glInterface.h
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/glInterface.h	(revision 2782)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/glInterface.h	(revision 2879)
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SsaoShader.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SsaoShader.cpp	(revision 2875)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SsaoShader.cpp	(revision 2879)
@@ -9,5 +9,5 @@
 using namespace std;
 
-static GLenum mymrt[] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT};
+static GLenum mymrt[] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT, GL_COLOR_ATTACHMENT3_EXT};
 
 namespace CHCDemoEngine
@@ -72,6 +72,5 @@
 static CGparameter sNormalsTexAntiAliasingParam;
 
-
-static GLuint noiseTex;
+static GLuint noiseTex = 0;
 
 // ssao random spherical samples
@@ -98,4 +97,48 @@
 	static PoissonDiscSampleGenerator poisson(NUM_SAMPLES, 1.0f);
 	poisson.Generate((Sample2 *)samples);
+}
+
+
+static void CreateNoiseTex2D(int w, int h)
+{
+	// hack: should be able to recalc noise texture
+	//if (noiseTex > 0) return;
+
+	//GLubyte *randomNormals = new GLubyte[mWidth * mHeight * 3];
+	float *randomNormals = new float[w * h * 3];
+
+	for (int i = 0; i < w * h * 3; i += 3)
+	{
+		// create random samples on a circle
+		const float rx = RandomValue(0, 1);
+		const float theta = 2.0f * acos(sqrt(1.0f - rx));
+
+		//randomNormals[i + 0] = (GLubyte)((cos(theta) * 0.5f + 0.5f) * 255.0f);
+		//randomNormals[i + 1] = (GLubyte)((sin(theta) * 0.5f + 0.5f) * 255.0f);
+		randomNormals[i + 0] = cos(theta);
+		randomNormals[i + 1] = sin(theta);
+		randomNormals[i + 2] = 0;
+	}
+
+	glEnable(GL_TEXTURE_2D);
+	glGenTextures(1, &noiseTex);
+	glBindTexture(GL_TEXTURE_2D, noiseTex);
+		
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+
+	//glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, mWidth, mHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, randomNormals);
+	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, w, h, 0, GL_RGB, GL_FLOAT, randomNormals);
+
+	glBindTexture(GL_TEXTURE_2D, 0);
+	glDisable(GL_TEXTURE_2D);
+
+	delete [] randomNormals;
+
+	cout << "created noise texture" << endl;
+
+	PrintGLerror("noisetexture");
 }
 
@@ -108,9 +151,11 @@
 mUseGlobIllum(false)
 {
+	// create noise texture for ssao
+	CreateNoiseTex2D(w, h);
+
 	///////////
 	//-- the flip-flop fbos
 
 	mNewFbo = new FrameBufferObject(w, h, FrameBufferObject::DEPTH_NONE);
-	// the diffuse color buffer
 	mNewFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
 	mNewFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
@@ -118,26 +163,25 @@
 	
 	mOldFbo = new FrameBufferObject(w, h, FrameBufferObject::DEPTH_NONE);
-	// the diffuse color buffer
 	mOldFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
 	mOldFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
 	mOldFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
 	
-	mFbo3 = new FrameBufferObject(w, h, FrameBufferObject::DEPTH_NONE);
-	// the diffuse color buffer
-	mFbo3->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
-		
-
-	// create noise texture for ssao
-	CreateNoiseTex2D();
+	//mFbo = new FrameBufferObject(w, h, FrameBufferObject::DEPTH_NONE);
+	//mFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);*/
 }
 
 
 SsaoShader::~SsaoShader() 
-{
-	if (sCgSsaoProgram)
-		cgDestroyProgram(sCgSsaoProgram);
+
+{
+	if (sCgSsaoProgram)	cgDestroyProgram(sCgSsaoProgram);
+	if (sCgDeferredProgram)	cgDestroyProgram(sCgDeferredProgram);
+	if (sCgSsaoProgram)	cgDestroyProgram(sCgSsaoProgram);
+	if (sCgGiProgram) cgDestroyProgram(sCgGiProgram);
+	if (sCgAntiAliasingProgram) cgDestroyProgram(sCgAntiAliasingProgram);
 
 	DEL_PTR(mNewFbo);
 	DEL_PTR(mOldFbo);
+	//DEL_PTR(mFbo);
 
 	glDeleteTextures(1, &noiseTex);
@@ -295,6 +339,4 @@
 	FrameBufferObject::Release();
 
-	glDrawBuffers(1, mymrt);
-
 	cgGLEnableProfile(RenderState::sCgFragmentProfile);
 
@@ -345,5 +387,6 @@
 	cgGLSetMatrixParameterfc(sOldModelViewProjMatrixParam, (const float *)oldProjViewMatrix.x);
 
-	GLuint colorsTex = mFbo3->GetColorBuffer(0)->GetTexture();
+//	GLuint colorsTex = mFbo->GetColorBuffer(0)->GetTexture();
+	GLuint colorsTex = fbo->GetColorBuffer(3)->GetTexture();
 	GLuint positionsTex = fbo->GetColorBuffer(1)->GetTexture();
 	GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture();
@@ -462,45 +505,4 @@
 
 
-void SsaoShader::CreateNoiseTex2D()
-{
-	//GLubyte *randomNormals = new GLubyte[mWidth * mHeight * 3];
-	float *randomNormals = new float[mWidth * mHeight * 3];
-
-	for (int i = 0; i < mWidth * mHeight * 3; i += 3)
-	{
-		// create random samples on a circle
-		const float rx = RandomValue(0, 1);
-		const float theta = 2.0f * acos(sqrt(1.0f - rx));
-
-		//randomNormals[i + 0] = (GLubyte)((cos(theta) * 0.5f + 0.5f) * 255.0f);
-		//randomNormals[i + 1] = (GLubyte)((sin(theta) * 0.5f + 0.5f) * 255.0f);
-		randomNormals[i + 0] = cos(theta);
-		randomNormals[i + 1] = sin(theta);
-		randomNormals[i + 2] = 0;
-	}
-
-	glEnable(GL_TEXTURE_2D);
-	glGenTextures(1, &noiseTex);
-	glBindTexture(GL_TEXTURE_2D, noiseTex);
-		
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
-	//glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, mWidth, mHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, randomNormals);
-	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, mWidth, mHeight, 0, GL_RGB, GL_FLOAT, randomNormals);
-
-	glBindTexture(GL_TEXTURE_2D, 0);
-	glDisable(GL_TEXTURE_2D);
-
-	delete [] randomNormals;
-
-	cout << "created noise texture" << endl;
-
-	PrintGLerror("noisetexture");
-}
-
-
 
 static void SetVertex(float x, float y, float x_offs, float y_offs)
@@ -521,5 +523,4 @@
 void SsaoShader::AntiAliasing(FrameBufferObject *fbo)
 {
-	//GLuint colorsTex = mFbo4->GetColorBuffer(0)->GetTexture();
 	GLuint colorsTex = mNewFbo->GetColorBuffer(1)->GetTexture();
 	GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture();
@@ -566,11 +567,10 @@
 	GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture();
 
-	mFbo3->Bind();
-	//mNewFbo->Bind();
+	fbo->Bind();
+
+	glDrawBuffers(1, mymrt + 3);
 
 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 	
-	glDrawBuffers(1, mymrt);
-
 	cgGLEnableProfile(RenderState::sCgFragmentProfile);
 
@@ -618,5 +618,6 @@
 	cgGLSetMatrixParameterfc(sOldModelViewProjMatrixGiParam, (const float *)oldProjViewMatrix.x);
 
-	GLuint colorsTex = mFbo3->GetColorBuffer(0)->GetTexture();
+	//GLuint colorsTex = mFbo->GetColorBuffer(0)->GetTexture();
+	GLuint colorsTex = fbo->GetColorBuffer(3)->GetTexture();
 	GLuint positionsTex = fbo->GetColorBuffer(1)->GetTexture();
 	GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture();
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.h
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.h	(revision 2865)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.h	(revision 2879)
@@ -44,5 +44,5 @@
 	int mHeight;
 
-	FrameBufferObject *mFbo;
+	//FrameBufferObject *mFbo;
 };
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SsaoShader.h
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SsaoShader.h	(revision 2875)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SsaoShader.h	(revision 2879)
@@ -58,5 +58,4 @@
 	void AntiAliasing(FrameBufferObject *fbo);
 
-	void CreateNoiseTex2D();
 	void ComputeViewVectors(Vector3 &tl, Vector3 &tr, Vector3 &bl, Vector3 &br);
 
@@ -74,5 +73,5 @@
 	FrameBufferObject *mOldFbo;
 	FrameBufferObject *mNewFbo;
-	FrameBufferObject *mFbo3;
+	//FrameBufferObject *mFbo;
 
 	bool mUseGlobIllum;
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp	(revision 2878)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp	(revision 2879)
@@ -47,5 +47,5 @@
 //-- fbos
 
-FrameBufferObject *fbo;
+FrameBufferObject *fbo = NULL;
 
 bool isFirstTexture = true;
@@ -376,6 +376,4 @@
 	glHint(GL_MULTISAMPLE_FILTER_HINT_NV, GL_NICEST);
 
-	InitFBO();
-	
 	LeftMotion(0, 0);
 	MiddleMotion(0, 0);
@@ -432,6 +430,6 @@
 	SsaoShader::Init(sCgContext);
 
-	deferredShader = new DeferredShader(texWidth, texHeight);
-	ssaoShader = new SsaoShader(texWidth, texHeight, camera, myfar / 10.0f);
+	//deferredShader = new DeferredShader(texWidth, texHeight);
+	//ssaoShader = new SsaoShader(texWidth, texHeight, camera, myfar / 10.0f);
 
 	// initialize the render traverser
@@ -539,5 +537,5 @@
 	// this fbo basicly stores the scene information we get from standard rendering of a frame
 	// we store colors, normals, positions (for the ssao)
-	fbo = new FrameBufferObject(texWidth, texHeight, FrameBufferObject::DEPTH_24);
+	fbo = new FrameBufferObject(texWidth, texHeight, FrameBufferObject::DEPTH_32);
 
 	// the diffuse color buffer
@@ -551,4 +549,7 @@
 	// the normals buffer
 	//fbo->AddColorBuffer(ColorBufferObject::BUFFER_UBYTE, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST, false);
+	fbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_16, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST, false);
+
+	// another color buffer
 	fbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_16, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST, false);
 
@@ -574,5 +575,5 @@
 void InitGLstate() 
 {
-	glClearColor(0.5f, 0.5f, 0.8f, 0.0f);
+	glClearColor(0.0f, 0.0, 0.2f, 0.0f);
 	
 	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
@@ -871,6 +872,5 @@
 	
 		glEnable(GL_MULTISAMPLE_ARB);
-		fbo->Release();
-
+		
 		state.SetRenderType(RenderState::FIXED);
 		glEnable(GL_LIGHTING);
@@ -888,6 +888,5 @@
 
 		glEnable(GL_MULTISAMPLE_ARB);
-		fbo->Release();
-
+		
 		cgGLDisableProfile(RenderState::sCgFragmentProfile);
 		cgGLDisableProfile(RenderState::sCgVertexProfile);
@@ -907,4 +906,6 @@
 	
 	case RenderState::DEFERRED:
+
+		if (!fbo) InitFBO();
 
 		// multisampling does not work with deferred shading
@@ -987,7 +988,25 @@
 
 		if (useSsao)
+		{
+			if (!ssaoShader) ssaoShader = new SsaoShader(texWidth, texHeight, camera, myfar / 10.0f);
+			//DEL_PTR(deferredShader);
+			
 			ssaoShader->Render(fbo, oldViewProjMatrix, ssaoExpFactor);
+
+		}
 		else
+		{
+			if (!deferredShader) deferredShader = new DeferredShader(texWidth, texHeight);
+			//DEL_PTR(ssaoShader);
+
 			deferredShader->Render(fbo);
+		}
+	}
+	else
+	{
+		/*DEL_PTR(fbo);
+		DEL_PTR(ssaoShader);
+		DEL_PTR(deferredShader);
+		*/
 	}
 	
@@ -1174,4 +1193,5 @@
 	switch (c) 
 	{
+
 	case 'A':
 	case 'a':
@@ -1531,4 +1551,8 @@
 	DEL_PTR(renderQueue);
 	DEL_PTR(perfGraph);
+
+	DEL_PTR(fbo);
+	DEL_PTR(ssaoShader);
+	DEL_PTR(deferredShader);
 
 	if (sCgMrtVertexProgram)
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.cpp	(revision 2868)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredShader.cpp	(revision 2879)
@@ -24,4 +24,6 @@
 
 
+static GLenum mymrt[] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT, GL_COLOR_ATTACHMENT2_EXT,  GL_COLOR_ATTACHMENT3_EXT};
+
 
 static CGprogram sCgDeferredProgram;
@@ -40,7 +42,6 @@
 mWidth(w), mHeight(h)
 {
-	mFbo = new FrameBufferObject(w, h, FrameBufferObject::DEPTH_NONE);
-	// the diffuse color buffer
-	mFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
+	//mFbo = new FrameBufferObject(w, h, FrameBufferObject::DEPTH_NONE);
+	//mFbo->AddColorBuffer(ColorBufferObject::BUFFER_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, false);
 }
 
@@ -50,4 +51,6 @@
 	if (sCgDeferredProgram)
 		cgDestroyProgram(sCgDeferredProgram);
+
+	//DEL_PTR(mFbo);
 }
 
@@ -111,5 +114,7 @@
 	GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture();
 
-	mFbo->Bind();
+	fbo->Bind();
+	glDrawBuffers(1, mymrt + 3);
+
 
 	glPushAttrib(GL_VIEWPORT_BIT);
@@ -199,5 +204,5 @@
 void DeferredShader::AntiAliasing(FrameBufferObject *fbo)
 {
-	GLuint colorsTex = mFbo->GetColorBuffer(0)->GetTexture();
+	GLuint colorsTex = fbo->GetColorBuffer(3)->GetTexture();
 	GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture();
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/common.h
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/common.h	(revision 2844)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/common.h	(revision 2879)
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/FriendlyCulling.vcproj
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/FriendlyCulling.vcproj	(revision 2877)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/FriendlyCulling.vcproj	(revision 2879)
@@ -308,4 +308,12 @@
 			</File>
 			<File
+				RelativePath=".\src\ShadowMapping.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\src\ShadowMapping.h"
+				>
+			</File>
+			<File
 				RelativePath=".\src\SsaoShader.cpp"
 				>
