Jump to content
  • Advertisement
Sign in to follow this  
Dragon_Strike

shadow mapping coordiantes

This topic is 4096 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

im having some trouble projecting my shadowmap onto geoemtry... so far i would kjust like to render the texture coordinates for the shadowmap onto the terrain... but i get all black values...
	glActiveTexture(GL_TEXTURE3);
	DepthFBO.Begin();

		gluLookAt( 500,200,500, // Look from the light's position
				0.0f, -0.0f, 0.0f,   /
				0.0f, 1.0f, 0.0f ); 
		m_Cam->Frustum.setCamDef(vec3(500,200,500), vec3(0.0,0.0,0.0), vec3(0.0,1.0,0.0));

		float lightproj_matrix[16];
		float lightmodel_matrix[16];

		glGetFloatv(GL_MODELVIEW_MATRIX, lightmodel_matrix);	
		glGetFloatv(GL_PROJECTION_MATRIX, lightproj_matrix);	

		Terrain->DepthShader->use();
		Terrain->Render();
		Terrain->DepthShader->disable;

	DepthFBO.End();

	glActiveTexture(GL_TEXTURE2);
	MainFBO.Begin();
		m_Cam->Update();

		Terrain->Shader->use();
		Terrain->Shader->sendUniform("TextureMap", 1);
		Terrain->Shader->sendUniform("ShadowMap", 3);

		Terrain->Shader->sendUniform("lightprojmatrix", lightproj_matrix, false, 4);	
		Terrain->Shader->sendUniform("lightmodelviewmatrix", lightmodel_matrix, false, 4);	

			if (WireFrame)
				glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
			else
				glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );

			Terrain->Render();

		Terrain->Shader->disable;

	MainFBO.End();


//"Shader"

//VERTEX

varying vec4 lightProj;

uniform mat4 lightprojmatrix;
uniform mat4 lightmodelviewmatrix;

void main()
{
        /* removed code */

	gl_Position =  gl_ModelViewProjectionMatrix * vec4(WorldPos, 1.0);
	
	lightProj = lightprojmatrix * lightmodelviewmatrix * vec4(WorldPos, 1.0);
	
}

// FRAGMENT

#version 110

uniform sampler2D TextureMap;
uniform sampler2D ShadowMap;

varying vec4 lightProj;

void main()
{	
	vec3 pos = (lightProj.xyz/lightProj.w)*0.5+0.5;
	
	gl_FragColor = vec4(pos,1.0);
}



i suspect im doin something wrong with the lights matrices.. but i dont know what... if i use the current modelprojection matrix it looks just fine... only when i try to use the lights it gets black..

Share this post


Link to post
Share on other sites
Advertisement
i tried another code.. still doesnt work correctly.. this time i just want to get the texturecoordiantes as colors onto the terrain.. i get some colors but its wrong



glActiveTexture(GL_TEXTURE3);
DepthFBO.Begin();

gluPerspective(45.0f, (GLfloat)1024/(GLfloat)768, 1.0f, 1000.0f);
gluLookAt( 500,200,500, // Look from the light's position
0.0f, -0.0f, 0.0f,
0.0f, 1.0f, 0.0f );
m_Cam->Frustum.setCamDef(vec3(500,200,500), vec3(0.0,0.0,0.0), vec3(0.0,1.0,0.0));

Terrain->DepthShader->use();
Terrain->Render();
Terrain->DepthShader->disable;

DepthFBO.End();

glActiveTexture(GL_TEXTURE2);
MainFBO.Begin();
m_Cam->Update();

glMatrixMode(GL_TEXTURE);
{
glLoadIdentity();
glTranslatef(0.5f, 0.5f, 0.5f);
glScalef(0.5f, 0.5f, 0.5f);
gluPerspective(45.0f, (GLfloat)1024/(GLfloat)768, 1.0f, 1000.0f);
gluLookAt( 500,200,500,
0.0f, -0.0f, 0.0f,
0.0f, 1.0f, 0.0f );
}
glMatrixMode(GL_MODELVIEW);


Terrain->Shader->use();
Terrain->Shader->sendUniform("TextureMap", 1);
Terrain->Shader->sendUniform("ShadowMap", 3);

if (WireFrame)
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
else
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );

Terrain->Render();

Terrain->Shader->disable;

MainFBO.End();
// VERTEX

lightProj = gl_TextureMatrix[0] * vec4(WorldPos, 1.0);

//FRAGMENT

vec3 pos = (lightProj.xyz/lightProj.w);

gl_FragColor = pos.xyzz;

}



http://img95.imageshack.us/img95/5038/shadowcoordgk3.jpg

EDIT::

actually it seems i get the same results even if i dont multiply by hte texturematrix in the vertex shader...??

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!