]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_rmain.c
Several changes to the SFX lock code in the sound engine, mainly to make sure SFXs...
[xonotic/darkplaces.git] / gl_rmain.c
index 2f9d3f31fadc774b256208777ccb9228e84b5e14..45314004fa819b39995ca5920d138a4c706df78e 100644 (file)
@@ -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;
        }
@@ -589,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_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
@@ -639,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);
@@ -836,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]));
@@ -868,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);
 }