Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


combineing 2d rhw raster polys with 3d TH&L polys

This topic is 5390 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

I have a game engine that I have been upgradeing from a software T&L system to a hardware one, and I now have the only component of the old system (the model rendering code) that will realy benifit from HT&L, fully operatinal. the problem is it seems the old software rotated transformed and projected polys now have an incompatable z value, the question is, is an RHW 2d poly somehow incopmpatable with a 3d poly as in it will always render over, becase no matter how much I add or subtract from the z and or w values of the ST&L polys they always render on top of what ever I'm rendering (they are rendered after the model as they are additive alpha effects) and I'm not sure how much help this will be without any sort of point of reference but the code used by the old ST&L engine was this
ubyte g3_rotate_vertex(vertex *dest,vector *src)
#if 0
	vector tempv;
	Assert( G3_count == 1 );
	vm_vec_rotate( (vector *)&dest->x, &tempv, &View_matrix );
	dest->flags = 0;	//not projected

	return g3_code_vertex(dest);
	float tx, ty, tz, x,y,z;
	ubyte codes;

	MONITOR_INC( NumRotations, 1 );	

	tx = src->xyz.x - View_position.xyz.x;
	ty = src->xyz.y - View_position.xyz.y;
	tz = src->xyz.z - View_position.xyz.z;

	x = tx * View_matrix.vec.rvec.xyz.x;
	x += ty * View_matrix.vec.rvec.xyz.y;
	x += tz * View_matrix.vec.rvec.xyz.z;

	y = tx * View_matrix.vec.uvec.xyz.x;
	y += ty * View_matrix.vec.uvec.xyz.y;
	y += tz * View_matrix.vec.uvec.xyz.z;

	z = tx * View_matrix.vec.fvec.xyz.x;
	z += ty * View_matrix.vec.fvec.xyz.y;
	z += tz * View_matrix.vec.fvec.xyz.z;

	codes = 0;

	if (x > z)			codes |= CC_OFF_RIGHT;
	if (x < -z)			codes |= CC_OFF_LEFT;
	if (y > z)			codes |= CC_OFF_TOP;
	if (y < -z)			codes |= CC_OFF_BOT;
	if (z < MIN_Z )	codes |= CC_BEHIND;

	dest->x = x;
	dest->y = y;
	dest->z = z;

	if ( G3_user_clip )	{
		// Check if behind user plane

		if ( g3_point_behind_user_plane((vector *)&dest->x))	{
			codes |= CC_OFF_USER;

	dest->codes = codes;

	dest->flags = 0;	// not projected

	vm_vec_copy_scale(&dest->real_pos, src,1);

	return codes;

   int g3_project_vertex(vertex *p)
	float w;

	Assert( G3_count == 1 );

	if ( p->flags & PF_PROJECTED )
		return p->flags;

	//if ( p->z < MIN_Z ) {

	if ( p->z <= MIN_Z ) {
		p->flags |= PF_OVERFLOW;
	} else {
		// w = (p->z == 0.0f) ? 100.0f : 1.0f / p->z;

		w = 1.0f / p->z;
		p->sx = (Canvas_width + (p->x*Canvas_width*w))*0.5f;
		p->sy = (Canvas_height - (p->y*Canvas_height*w))*0.5f;

		if(gr_screen.mode == GR_GLIDE){
			if ( w > 61439.0f ) w = 61439.0f;
		} else {
			if ( w > 1.0f ) w = 1.0f;		
		p->sw = w;
		p->flags |= PF_PROJECTED;
	return p->flags;
the fact that it makes references to glide should be an indication as to how old this stuff is, we have prety much dropped suport for glide and added suport for OGL (as well as upgradeing the exsisting DX (version 3 I think) infastruture to 8.1b) one more thing, are RHW polys even effected by the transformation matrices? [edited by - Bobboau on October 13, 2003 10:23:41 PM]

Share this post

Link to post
Share on other sites
Original post by Bobboau
one more thing, are RHW polys even effected by the transformation matrices?


Share this post

Link to post
Share on other sites
well, that should make some things a little easier, good.

now any idea on the z buffer thingy?

Bobboau, bringing you products that work... in theory

Share this post

Link to post
Share on other sites

  • 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!