X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=gl_rmain.c;h=ec4d0dac51c9312d9d241258afc8e519d83072e7;hb=9bece63634dd6e8caa654123a7f856a266d9a9f9;hp=6816a436f5ef56e215767781c27e48ac557d8ba3;hpb=ea4fc545e8444f579d88d8f096b054dcd7bc482f;p=xonotic%2Fdarkplaces.git diff --git a/gl_rmain.c b/gl_rmain.c index 6816a436..ec4d0dac 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -450,10 +450,9 @@ static void R_MarkEntities (void) 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; } @@ -566,33 +565,6 @@ static void R_BlendView(void) 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); /* @@ -604,7 +576,7 @@ void R_RenderView(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; @@ -616,9 +588,9 @@ void R_RenderView(void) 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 @@ -627,6 +599,9 @@ void R_RenderView(void) GL_ScissorTest(true); GL_DepthMask(true); R_ClearScreen(); + R_Textures_Frame(); + R_UpdateFog(); + R_UpdateLights(); R_TimeReport("setup"); qglDepthFunc(GL_LEQUAL); @@ -663,7 +638,7 @@ void R_RenderScene(void) 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); @@ -860,7 +835,7 @@ void R_DrawNoModelCallback(const void *calldata1, int calldata2) 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])); @@ -892,7 +867,7 @@ void R_DrawNoModelCallback(const void *calldata1, int calldata2) 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); }