Exemple #1
0
Frustum Camera::get_frustum(float aspect) const {
    //calculate the current
    mat4 view_proj = get_projection_matrix(aspect) * 
                     SceneObject::get_world_to_local();
    Frustum f(view_proj);
    return f;
}
Exemple #2
0
const nya_math::mat4 &transform::get_modelviewprojection_matrix() const
{
    if(!m_recalc_mvp)
        return m_modelviewproj;

    m_modelviewproj=m_modelview*get_projection_matrix();
    m_recalc_mvp=false;

    return m_modelviewproj;
}
Exemple #3
0
//DEBUG
static void render_axes()
{
	glUseProgram(0);
	glDisable(GL_LIGHTING);
	glLineWidth(10.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glLoadTransposeMatrixf(get_projection_matrix().m[0]);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glLoadTransposeMatrixf(get_view_matrix().m[0]);

	glBegin(GL_LINES);
	glColor3f(1, 0, 0);
	glVertex3f(30000, 0, 0);
	glVertex3f(-30000, 0, 0);
	glEnd();

	glBegin(GL_LINES);
	glColor3f(0, 1, 0);
	glVertex3f(0, -30000, 0);
	glVertex3f(0, 30000, 0);
	glEnd();

	glBegin(GL_LINES);
	glColor3f(0, 0, 1);
	glVertex3f(0, 0, 30000);
	glVertex3f(0, 0, -30000);
	glEnd();

	glBegin(GL_LINE_LOOP);
	for (int i = 0; i < 360; i++){
		float degInRad = DEG_TO_RAD(i);
		glVertex3f(cos(degInRad) * 10, sin(degInRad) * 10, 0);
	}
	glEnd();

	glBegin(GL_LINE_LOOP);
	glColor3f(0, 1, 0);
	for (int i = 0; i < 360; i++){
		float degInRad = DEG_TO_RAD(i);
		glVertex3f(cos(degInRad) * 10, 0, sin(degInRad) * 10);
	}
	glEnd();

	glBegin(GL_LINE_LOOP);
	glColor3f(1, 0, 0);
	for (int i = 0; i < 360; i++){
		float degInRad = DEG_TO_RAD(i);
		glVertex3f(0, cos(degInRad) * 10, sin(degInRad) * 10);
	}
	glEnd();

	glEnable(GL_LIGHTING);
}
Exemple #4
0
void transform::set_projection_matrix(const nya_math::mat4 &mat)
{
    m_projection=mat, m_recalc_mvp=true;
    if(m_has_orientation)
        m_orientated_proj=m_projection*m_orientation;

#ifndef MANUAL_MATRICES_ASSIGN
    glMatrixMode(GL_PROJECTION);
    glLoadMatrixf(get_projection_matrix().m[0]);
#endif
}
Exemple #5
0
void setup_gl_matrices()
{
#ifdef USE_OLDGL
	Matrix4x4 modelview = get_world_matrix() * get_view_matrix();
	Matrix4x4 proj = get_projection_matrix();
	Matrix4x4 tex = get_texture_matrix();

	glMatrixMode(GL_TEXTURE);
	glLoadTransposeMatrixf(tex[0]);
	glMatrixMode(GL_PROJECTION);
	glLoadTransposeMatrixf(proj[0]);
	glMatrixMode(GL_MODELVIEW);
	glLoadTransposeMatrixf(modelview[0]);
#endif
}
Exemple #6
0
void GameScreen::shadow_render_pass(bool ovr, long time)
{
	RenderTarget *rtarg;
	if (ovr){
		rtarg = &game::engine::ovr_manager.get_ovr_render_target();
	}
	else{
		rtarg = &game::engine::rtarg;
	}

	game::engine::rndr_pass_type = RNDR_PASS_SHADOW;

	Matrix4x4 orig_proj = get_projection_matrix();
	Matrix4x4 orig_view = get_view_matrix();

    Vector3 l_pos = Vector3(500, 500, -500);
	Vector3 l_target = -l_pos;

	glCullFace(GL_FRONT);

	rtarg->bind(RT_SHADOW);
	glClearColor(0, 1, 0, 1);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	Matrix4x4 l_proj;

	l_proj.set_perspective(DEG_TO_RAD(6.0), 1.0, 600, 890);
	set_projection_matrix(l_proj);

	glViewport(0, 0, game::engine::rtarg.get_shad_tex_width(), game::engine::rtarg.get_shad_tex_height());

	Matrix4x4 l_view;
	l_view.set_lookat(l_pos, l_target, Vector3(0, 1, 0));
	set_view_matrix(l_view);

	shad_mat.reset_identity();
	shad_mat = l_proj * l_view;

	glColorMask(0, 0, 0, 0);

	game::engine::current_sdr = game::engine::depth_pass_sdr;
	game::engine::active_stage->render(STAGE_RENDER_ENEMIES, time);

	glColorMask(1, 1, 1, 1);
	rtarg->unbind();

	/*2nd shadow pass*/
	game::engine::rtarg2.bind(RT_SHADOW);
	glClearColor(0, 1, 0, 1);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	l_proj.reset_identity();
	l_proj.set_perspective(DEG_TO_RAD(0.4), 1.0, 600, 890);
	set_projection_matrix(l_proj);

	glViewport(0, 0, game::engine::rtarg2.get_shad_tex_width(), game::engine::rtarg2.get_shad_tex_height());

	l_view.reset_identity();
	l_view.set_lookat(l_pos, l_target, Vector3(0, 1, 0));
	set_view_matrix(l_view);

	shad_mat2.reset_identity();
	shad_mat2 = l_proj * l_view;

	glColorMask(0, 0, 0, 0);

	game::engine::active_stage->render(STAGE_RENDER_GUNS | STAGE_RENDER_COCKPIT, time);

	glColorMask(1, 1, 1, 1);
	game::engine::rtarg2.unbind();
	/*------------------------------------------------------------*/

	set_projection_matrix(orig_proj);
	set_view_matrix(orig_view);

	glViewport(0, 0, game::engine::rtarg.get_fb_width(), game::engine::rtarg.get_fb_height());
	glCullFace(GL_BACK);
}