Jump to content
  • Advertisement
Sign in to follow this  
Dragon_Strike

shadow mapping coordiantes

This topic is 4191 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.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!