Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderManager.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderManager.cpp	(revision 3128)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderManager.cpp	(revision 3144)
@@ -44,5 +44,5 @@
 	CGerror lastError = cgGetError();
 
-	if(lastError)
+	if (lastError)
 	{
 		printf("Cg error, exiting...\n");
@@ -124,8 +124,8 @@
 
 	
-	//ShaderProgram *normalMappingVertexMrt, *normalMappingFragmentMrt;
-
-	//normalMappingVertexMrt = CreateFragmentProgram("normalMapping", "vtx", "normalMappingVertexMrt");
-	//normalMappingFragmentMrt = CreateFragmentProgram("normalMapping", "frag", "normalMappingFragmentMrt");
+	ShaderProgram *normalMappingVertexMrt, *normalMappingFragmentMrt;
+
+	normalMappingVertexMrt = CreateVertexProgram("normalMapping", "vtx", "normalMappingVertexMrt");
+	normalMappingFragmentMrt = CreateFragmentProgram("normalMapping", "frag", "normalMappingFragmentMrt");
 
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/normalMapping.cg
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/normalMapping.cg	(revision 3131)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/normalMapping.cg	(revision 3144)
@@ -2,9 +2,4 @@
 /*    Shader for normal mapped geoemtry    */
 /*******************************************/
-
-/**************************************************************/
-/* Shader computing the MRT output for normal mapped geoemtry */
-/**************************************************************/
-
 
 // input
@@ -13,5 +8,5 @@
   float4 position: POSITION;
   float4 normal: NORMAL;
-  float4 tangent: COLOR0;
+  float4 color: COLOR0;
   float4 texCoord: TEXCOORD0;
 };
@@ -24,5 +19,5 @@
 	float4 texCoord: TEXCOORD0;    
 
-	float4 tangent: COLOR0;  
+	float4 tangent: TEXCOORD6;  
 	 // eye position
 	float4 eyePos: TEXCOORD1;
@@ -31,5 +26,5 @@
 	float4 worldPos: TEXCOORD3;
 	float4 oldWorldPos: TEXCOORD4;
-	float4 bitangent: TEXCOORD5
+	float4 bitangent: TEXCOORD5;
 };
 
@@ -38,5 +33,5 @@
 struct fragin
 {
-	float4 tangent: COLOR0;  
+	float4 tangent: TEXCOORD6;  
 	float4 texCoord: TEXCOORD0;    
 
@@ -47,5 +42,5 @@
 	float4 worldPos: TEXCOORD3;
 	float4 oldWorldPos: TEXCOORD4;
-	float4 bitangent: TEXCOORD5
+	float4 bitangent: TEXCOORD5;
 };
 
@@ -69,5 +64,5 @@
 	vtxout OUT;
 
-	OUT.color = IN.color;
+	OUT.tangent = IN.color;
 	OUT.texCoord = IN.texCoord;
 
@@ -84,8 +79,14 @@
 	OUT.tangent = mul(glstate.matrix.invtrans.modelview[0], IN.color); 
 
-	OUT.bitangent = cross(IN.tangent, IN.normal);
+	OUT.bitangent = float4(cross(IN.color.xyz, IN.normal.xyz), 1);
 
 	return OUT;
 }
+
+
+
+/**************************************************************/
+/* Shader computing the MRT output for normal mapped geoemtry */
+/**************************************************************/
 
 
@@ -126,5 +127,5 @@
 	// as it is the inverse of a rotation matrix 
 	float3x3 tangToWorldTrafo = transpose(float3x3(IN.tangent, IN.bitangent, IN.normal));
-	const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy).xyz);
+	const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy, 0, 0)).xyz;
 	pix.normal = mul(tangToWorldTrafo, tangentSpaceNorm);
 
@@ -133,15 +134,17 @@
 
 
-pixel frag(fragin IN, uniform float4x4 viewMatrix)
+pixel frag(fragin IN,
+		   uniform float4x4 viewMatrix,
+		   uniform sampler2D normalMap: TEXUNIT1)
 {
 	pixel pix;
 	// hack: use comination of emmisive + diffuse (emmisive used as constant ambient term)
-	pix.col = glstate.material.diffuse + glstate.material.emission;
+	pix.color = glstate.material.diffuse + glstate.material.emission;
 	// save world space normal in rt => transform back into world space by
 	// multiplying with inverse view. since transforming normal with T means to 
 	// multiply with the inverse transpose of T, we multiple with Transp(Inv(Inv(view))) = Transp(view)
-	pix.norm = mul(transpose(viewMatrix), IN.normal).xyz;
+	pix.normal = mul(transpose(viewMatrix), IN.normal).xyz;
 	// eye space depth
-	pix.col.w = length(IN.eyePos.xyz);
+	pix.color.w = length(IN.eyePos.xyz);
 	// the scene entity id
 	//pix.id = glstate.fog.color.xyz;
@@ -149,5 +152,4 @@
 	pix.offsVec = IN.oldWorldPos.xyz - IN.worldPos.xyz;
 
-	pixel pix;
 	// compute tanget space in world space => transform basis vectors back into world space by
 	// multiplying with inverse view. since transforming normal with T means to 
@@ -160,6 +162,6 @@
 	// compute tangent space - world space transform which is the transpose,
 	// as it is the inverse of a rotation matrix 
-	float3x3 tangToWorldTrafo = transpose(float3x3(IN.tangent, IN.bitangent, IN.normal));
-	const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy).xyz);
+	float3x3 tangToWorldTrafo = transpose(float3x3(IN.tangent.xyz, IN.bitangent.xyz, IN.normal.xyz));
+	const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy, 0, 0)).xyz;
 	pix.normal = mul(tangToWorldTrafo, tangentSpaceNorm);
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg	(revision 3142)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg	(revision 3144)
@@ -1,3 +1,4 @@
 #include "../shaderenv.h"
+
 
 ////////////////////
@@ -5,6 +6,6 @@
 // based on shader of Alexander Kusternig
 
+
 #define USE_EYESPACE_DEPTH 1
-
 
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp	(revision 3128)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp	(revision 3144)
@@ -287,6 +287,6 @@
 	static ShaderProgram *sDefaultVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("defaultVertexMrt");
 
-	//static ShaderProgram *sNormalMappingVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingVertexMrt");
-	//static ShaderProgram *sNormalMappingFragmentProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingFragmentMrt");
+	static ShaderProgram *sNormalMappingVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingVertexMrt");
+	static ShaderProgram *sNormalMappingFragmentProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingFragmentMrt");
 
 
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp	(revision 3135)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp	(revision 3144)
@@ -471,9 +471,9 @@
 	//-- load some dynamic stuff
 
-	//resourceManager->mUseNormalMapping = true;
-	resourceManager->mUseNormalMapping = false;
-
-	//LoadModel("fisch.dem", dynamicObjects);
-	LoadModel("hbuddha.dem", dynamicObjects);
+	resourceManager->mUseNormalMapping = true;
+	//resourceManager->mUseNormalMapping = false;
+
+	LoadModel("fisch.dem", dynamicObjects);
+	//LoadModel("hbuddha.dem", dynamicObjects);
 
 	resourceManager->mUseNormalMapping = false;
Index: /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.cpp
===================================================================
--- /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.cpp	(revision 3143)
+++ /GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.cpp	(revision 3144)
@@ -477,5 +477,5 @@
 #endif
 
-	///////
+	/////////
 	//-- pcf tabs for shadowing
 
@@ -526,5 +526,5 @@
 	case SSAO:
 		ComputeSsao(fbo, tempCohFactor);
-		SmoothSsao(fbo);
+		//SmoothSsao(fbo);
 		CombineSsao(fbo);
 		break;
@@ -810,6 +810,6 @@
 	GLuint colorsTex = fbo->GetColorBuffer(colorBufferIdx)->GetTexture();
 	GLuint normalsTex = fbo->GetColorBuffer(1)->GetTexture();
-	GLuint ssaoTex = mIllumFbo->GetColorBuffer(2 - mIllumFboIndex)->GetTexture();
-	//GLuint ssaoTex = mIllumFbo->GetColorBuffer(mIllumFboIndex)->GetTexture();
+	//GLuint ssaoTex = mIllumFbo->GetColorBuffer(2 - mIllumFboIndex)->GetTexture();
+	GLuint ssaoTex = mIllumFbo->GetColorBuffer(mIllumFboIndex)->GetTexture();
 	
 	FlipFbos(fbo);
