Heightmap Shadowmapping

Started by
21 comments, last by szecs 14 years, 7 months ago
void BeginShadow(){    glTexGenfv(GL_S, GL_EYE_PLANE, row0);     glTexGenfv(GL_T, GL_EYE_PLANE, row1);       glTexGenfv(GL_R, GL_EYE_PLANE, row2);       glTexGenfv(GL_Q, GL_EYE_PLANE, row3);    glEnable(GL_ALPHA_TEST);    glEnable(GL_TEXTURE_2D);    glEnable(GL_TEXTURE_GEN_S);    glEnable(GL_TEXTURE_GEN_T);    glEnable(GL_TEXTURE_GEN_R);    glEnable(GL_TEXTURE_GEN_Q);}......// first pass (shadows)glColor4f(1, 1, 1, 0);     //!!!!!!!!!!!!!!!glColorMask(1, 1, 1, 1);float clr[] = {0.3,0.3,0.3,1}; float clr2[] = {1,1,1,1};glActiveTextureARB(GL_TEXTURE1_ARB);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_GREATER);glPushAttrib(GL_ENABLE_BIT);BeginShadow();glLightfv(GL_LIGHT0, GL_DIFFUSE, clr);RenderScene();// second passglActiveTextureARB(GL_TEXTURE1_ARB);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL );glLightfv(GL_LIGHT0, GL_DIFFUSE, clr2);RenderScene();...glPopAttrib();
Ambient (set at initialization): float ambient0[] = { 1.6, 1.6, 1.6, 1 };
You can copy the code completely in yours.
Advertisement
Ok, thanks mate -let me try.
Xynapse | http://szczerbiec.net/
Sh!@# still the same..



FIRST PASS

		//SHADOW PASS 1		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		glLoadIdentity();		glViewport(0, 0, (int)SHADOW_WIDTH, (int)SHADOW_HEIGHT);		glMatrixMode(GL_PROJECTION);		float ambient0[] = { 1.6, 1.6, 1.6, 1 };			float clr[] = {0.3,0.3,0.3,1}; 		glEnable(GL_LIGHTING);       	glLightfv( GL_LIGHT0, GL_AMBIENT,  ambient0 );				glLightfv(GL_LIGHT0, GL_DIFFUSE, clr);		glColor4f(1, 1, 1, 0);     //!!!!!!!!!!!!!!!		glColorMask(1, 1, 1, 1);		glPushMatrix();			glLoadMatrixf(g_mProjection);			glMatrixMode(GL_MODELVIEW);			glLoadMatrixf(g_mModelView); 			glPolygonOffset( 1.5f,0.0f); 			glEnable(GL_POLYGON_OFFSET_FILL);			RenderHeightMap_notex(g_HeightMap);			glEnable(GL_TEXTURE_2D);	//		glEnable(GL_ALPHA_TEST);	//		glAlphaFunc(GL_GREATER,0.05);  			RENDER_gameobjects(0);			glDisable(GL_TEXTURE_2D);			glDisable(GL_ALPHA_TEST);	 		glActiveTextureARB(GL_TEXTURE0_ARB);			glBindTexture(GL_TEXTURE_2D, shadowtexture[SHADOW_ID]);			glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, (int)SHADOW_WIDTH, (int)SHADOW_HEIGHT);			glDisable(GL_POLYGON_OFFSET_FILL);			glViewport(0, 0, (int)GAME_X, (int)GAME_Y);		 			glMatrixMode(GL_PROJECTION);		glPopMatrix();



Lets go into details for every pass i make.

Anything wrong here? i disabled alpha testing on the models to have it clear..
Xynapse | http://szczerbiec.net/
hold on,
i thinkg i might have it...


gimme few minutes.
Xynapse | http://szczerbiec.net/
Szecs,
you enable

GL_ALPHA_TEST

do you set any

glAlphaFunc(GL_GREATER,xxx);


?
Xynapse | http://szczerbiec.net/
I think that's irrelevant, since GL_TEXTURE_COMPARE_FUNC_ARB returns 1.0 or 0.0, but
glAlphaFunc(GL_GREATER,0.5);

But I think I can't help you more, or do you want me to post my entire code here?

I can't see

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_GREATER);
and
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);

Anywhere in your code
COPY MY CODE, REPLACE RenderScene WITH YOURS!

Or my codes are invisible for you?
My last reply, sorry, rate me down if you want.
Quote:Original post by szecs
I posted the whole code here, and it works perfectly for me.
I used glColor4f(0.3,0.3,0.3,1.0);
Sorry, my fault, I meant lightcolor, as I posted before, Sorry again.
Szecs, no bad rating - i know your code is ok.

Gotta work with mine more.. i'll come back shortly.

Thanks for your replies!
Xynapse | http://szczerbiec.net/
Last question szecs


glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB,GL_COMPARE_R_TO_TEXTURE_ARB);

do you use that ? what compare mode do you apply for

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
Xynapse | http://szczerbiec.net/
Did you see this code snippet he posted? Also, you didn't copy his code line for line like he instructed you to do. Please read his replies to you again line for line.

void BeginShadow(){    glTexGenfv(GL_S, GL_EYE_PLANE, row0);     glTexGenfv(GL_T, GL_EYE_PLANE, row1);       glTexGenfv(GL_R, GL_EYE_PLANE, row2);       glTexGenfv(GL_Q, GL_EYE_PLANE, row3);    glEnable(GL_ALPHA_TEST);    glEnable(GL_TEXTURE_2D);    glEnable(GL_TEXTURE_GEN_S);    glEnable(GL_TEXTURE_GEN_T);    glEnable(GL_TEXTURE_GEN_R);    glEnable(GL_TEXTURE_GEN_Q);}......// first pass (shadows)glColor4f(1, 1, 1, 0);     //!!!!!!!!!!!!!!!glColorMask(1, 1, 1, 1);float clr[] = {0.3,0.3,0.3,1}; float clr2[] = {1,1,1,1};glActiveTextureARB(GL_TEXTURE1_ARB);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_GREATER);glPushAttrib(GL_ENABLE_BIT);BeginShadow();glLightfv(GL_LIGHT0, GL_DIFFUSE, clr);RenderScene();// second passglActiveTextureARB(GL_TEXTURE1_ARB);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL );glLightfv(GL_LIGHT0, GL_DIFFUSE, clr2);RenderScene();...glPopAttrib();

This topic is closed to new replies.

Advertisement