Matrix4x4_OriginFromMatrix(&ent->matrix, ent->origin);
// some of the renderer still relies on scale...
ent->scale = Matrix4x4_ScaleFromMatrix(&ent->matrix);
- R_LerpAnimation(ent);
R_UpdateEntLights(ent);
if ((chase_active.integer || !(ent->flags & RENDER_EXTERIORMODEL))
- && !VIS_CullBox(ent->mins, ent->maxs)
+ && (!VIS_CullBox(ent->mins, ent->maxs) || (ent->effects & EF_NODEPTHTEST))
&& (!envmap || !(ent->flags & (RENDER_VIEWMODEL | RENDER_EXTERIORMODEL))))
ent->visframe = r_framecount;
}
R_Mesh_Draw(3, 1, polygonelements);
}
-void R_UpdateWorld(void)
-{
- if (!r_refdef.entities/* || !cl.worldmodel*/)
- return; //Host_Error ("R_RenderView: NULL worldmodel");
-
- /*
- if (r_shadow_realtime_world.integer && !gl_stencil)
- {
- Con_Print("Realtime world lighting requires 32bit color; turning off r_shadow_realtime_world, please type vid_bitsperpixel 32;vid_restart and try again\n");
- Cvar_SetValueQuick(&r_shadow_realtime_world, 0);
- }
- */
-
- // don't allow cheats in multiplayer
- if (!cl.islocalgame && cl.worldmodel)
- {
- if (r_fullbright.integer != 0)
- Cvar_Set ("r_fullbright", "0");
- if (r_ambient.value != 0)
- Cvar_Set ("r_ambient", "0");
- }
-
- R_Textures_Frame();
- R_UpdateFog();
- R_UpdateLights();
-}
-
void R_RenderScene(void);
/*
{
if (!r_refdef.entities/* || !cl.worldmodel*/)
return; //Host_Error ("R_RenderView: NULL worldmodel");
-
+
r_view_width = bound(0, r_refdef.width, vid.realwidth);
r_view_height = bound(0, r_refdef.height, vid.realheight);
r_view_depth = 1;
r_view_matrix = r_refdef.viewentitymatrix;
GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1);
r_rtworld = r_shadow_realtime_world.integer;
- r_rtworldshadows = r_rtworld && r_shadow_realtime_world_shadows.integer;
+ r_rtworldshadows = r_rtworld && r_shadow_realtime_world_shadows.integer && gl_stencil;
r_rtdlight = r_shadow_realtime_world.integer || r_shadow_realtime_dlight.integer;
- r_rtdlightshadows = r_rtdlight && (r_rtworld ? r_shadow_realtime_world_dlightshadows.integer : r_shadow_realtime_dlight_shadows.integer);
+ r_rtdlightshadows = r_rtdlight && (r_rtworld ? r_shadow_realtime_world_dlightshadows.integer : r_shadow_realtime_dlight_shadows.integer) && gl_stencil;
r_lightmapintensity = r_rtworld ? r_shadow_realtime_world_lightmaps.value : 1;
// GL is weird because it's bottom to top, r_view_y is top to bottom
GL_ScissorTest(true);
GL_DepthMask(true);
R_ClearScreen();
+ R_Textures_Frame();
+ R_UpdateFog();
+ R_UpdateLights();
R_TimeReport("setup");
qglDepthFunc(GL_LEQUAL);
R_SetFrustum();
r_farclip = R_FarClip(r_vieworigin, r_viewforward, 768.0f) + 256.0f;
- if (gl_stencil && (r_rtworldshadows || r_rtdlightshadows))
+ if (r_rtworldshadows || r_rtdlightshadows)
GL_SetupView_Mode_PerspectiveInfiniteFarClip(r_view_fov_x, r_view_fov_y, 1.0f);
else
GL_SetupView_Mode_Perspective(r_view_fov_x, r_view_fov_y, 1.0f, r_farclip);
GL_BlendFunc(GL_ONE, GL_ZERO);
GL_DepthMask(true);
}
- GL_DepthTest(true);
+ GL_DepthTest(!(ent->effects & EF_NODEPTHTEST));
if (fogenabled)
{
memcpy(color4f, nomodelcolor4f, sizeof(float[6*4]));
void R_DrawNoModel(entity_render_t *ent)
{
//if ((ent->effects & EF_ADDITIVE) || (ent->alpha < 1))
- R_MeshQueue_AddTransparent(ent->origin, R_DrawNoModelCallback, ent, 0);
+ R_MeshQueue_AddTransparent(ent->effects & EF_NODEPTHTEST ? r_vieworigin : ent->origin, R_DrawNoModelCallback, ent, 0);
//else
// R_DrawNoModelCallback(ent, 0);
}