Exemplo n.º 1
0
void recalcLightViewMats(light_t *l){
//	printf("updatin");
	//todo if it is attached, just grab the attached matrix (same as entities do it)
	Matrix4x4_CreateRotate(&l->view, l->angle[2], 0.0f, 0.0f, 1.0f);
	Matrix4x4_ConcatRotate(&l->view, l->angle[0], 1.0f, 0.0f, 0.0f);
	Matrix4x4_ConcatRotate(&l->view, l->angle[1], 0.0f, 1.0f, 0.0f);
	Matrix4x4_ConcatTranslate(&l->view, -l->pos[0], -l->pos[1], -l->pos[2]);
//	Matrix4x4_CreateFromQuakeEntity(&l->cam, l->pos[0], l->pos[1], l->pos[2], l->angle[2], l->angle[1], l->angle[0], 1.0);
//	Matrix4x4_CreateFromQuakeEntity(&l->cam, l->pos[0], l->pos[1], l->pos[2], l->angle[2], l->angle[1], l->angle[0], l->scale);
	Matrix4x4_Invert_Simple(&l->cam, &l->view); //temp? hack

}
Exemplo n.º 2
0
/*
=============
R_SetupModelviewMatrix
=============
*/
static void R_SetupModelviewMatrix( const ref_params_t *fd, matrix4x4 m )
{
#if 0
	Matrix4x4_LoadIdentity( m );
	Matrix4x4_ConcatRotate( m, -90, 1, 0, 0 );
	Matrix4x4_ConcatRotate( m, 90, 0, 0, 1 );
#else
	Matrix4x4_CreateModelview( m );
#endif
	Matrix4x4_ConcatRotate( m, -fd->viewangles[2], 1, 0, 0 );
	Matrix4x4_ConcatRotate( m, -fd->viewangles[0], 0, 1, 0 );
	Matrix4x4_ConcatRotate( m, -fd->viewangles[1], 0, 0, 1 );
	Matrix4x4_ConcatTranslate( m, -fd->vieworg[0], -fd->vieworg[1], -fd->vieworg[2] );
}
Exemplo n.º 3
0
/*
================
R_BeginDrawMirror

Setup texture matrix for mirror texture
================
*/
void R_BeginDrawMirror( msurface_t *fa )
{
	matrix4x4		m1, m2, matrix;
	GLfloat		genVector[4][4];
	mextrasurf_t	*es;
	int		i;

	es = SURF_INFO( fa, RI.currentmodel );
	Matrix4x4_Copy( matrix, es->mirrormatrix );

	Matrix4x4_LoadIdentity( m1 );
	Matrix4x4_ConcatScale( m1, 0.5f );
	Matrix4x4_Concat( m2, m1, matrix );

	Matrix4x4_LoadIdentity( m1 );
	Matrix4x4_ConcatTranslate( m1, 0.5f, 0.5f, 0.5f );
	Matrix4x4_Concat( matrix, m1, m2 );

	for( i = 0; i < 4; i++ )
	{
		genVector[0][i] = i == 0 ? 1 : 0;
		genVector[1][i] = i == 1 ? 1 : 0;
		genVector[2][i] = i == 2 ? 1 : 0;
		genVector[3][i] = i == 3 ? 1 : 0;
	}

	GL_TexGen( GL_S, GL_OBJECT_LINEAR );
	GL_TexGen( GL_T, GL_OBJECT_LINEAR );
	GL_TexGen( GL_R, GL_OBJECT_LINEAR );
	GL_TexGen( GL_Q, GL_OBJECT_LINEAR );

	pglTexGenfv( GL_S, GL_OBJECT_PLANE, genVector[0] );
	pglTexGenfv( GL_T, GL_OBJECT_PLANE, genVector[1] );
	pglTexGenfv( GL_R, GL_OBJECT_PLANE, genVector[2] );
	pglTexGenfv( GL_Q, GL_OBJECT_PLANE, genVector[3] );

	GL_LoadTexMatrix( matrix );
}
Exemplo n.º 4
0
/**
 * @see View::render(View *, Renderer *)
 */
static void render(View *self, Renderer *renderer) {

	super(View, self, render, renderer);

	PlayerModelView *this = (PlayerModelView *) self;

	if (this->client.torso == NULL) {
		$(self, updateBindings);
	}

	if (this->client.torso) {
		$(this, animate);

		cgi.PushMatrix(R_MATRIX_PROJECTION);
		cgi.PushMatrix(R_MATRIX_MODELVIEW);

		const SDL_Rect viewport = $(self, viewport);
		cgi.SetViewport(viewport.x, viewport.y, viewport.w, viewport.h, false);

		// create projection matrix
		const vec_t aspect = (vec_t) viewport.w / (vec_t) viewport.h;

		const vec_t ymax = NEAR_Z * tan(Radians(35));
		const vec_t ymin = -ymax;

		const vec_t xmin = ymin * aspect;
		const vec_t xmax = ymax * aspect;
		matrix4x4_t mat;

		Matrix4x4_FromFrustum(&mat, xmin, xmax, ymin, ymax, NEAR_Z, FAR_Z);

		cgi.SetMatrix(R_MATRIX_PROJECTION, &mat);

		// create base modelview matrix
		Matrix4x4_CreateIdentity(&mat);

		// Quake is retarded: rotate so that Z is up
		Matrix4x4_ConcatRotate(&mat, -90.0, 1.0, 0.0, 0.0);
		Matrix4x4_ConcatRotate(&mat,  90.0, 0.0, 0.0, 1.0);
		Matrix4x4_ConcatTranslate(&mat, 64.0, 0.0, -8.0);

		Matrix4x4_ConcatRotate(&mat, cgi.client->unclamped_time * 0.08, 0.0, 0.0, 1.0);

		cgi.SetMatrix(R_MATRIX_MODELVIEW, &mat);

		cgi.EnableDepthTest(true);
		cgi.DepthRange(0.0, 0.1);

		renderMeshEntity(&this->legs);
		renderMeshEntity(&this->torso);
		renderMeshEntity(&this->head);
		renderMeshEntity(&this->weapon);

		cgi.DepthRange(0.0, 1.0);
		cgi.EnableDepthTest(false);

		cgi.SetViewport(0, 0, cgi.context->width, cgi.context->height, false);

		cgi.PopMatrix(R_MATRIX_MODELVIEW);
		cgi.PopMatrix(R_MATRIX_PROJECTION);
	}
}