Skip to content

Commit 479a6c9

Browse files
committed
Fixed water culling issue #498
1 parent c556897 commit 479a6c9

File tree

5 files changed

+16
-4
lines changed

5 files changed

+16
-4
lines changed

Plugins/Renderer/gl_local.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,8 @@ void R_DrawWorld(void);
350350
void R_DrawSkyBox(void);
351351
void R_CheckVariables(void);
352352
void R_AnimateLight(void);
353+
void R_SetupFrame(void);
354+
void R_SetFrustum(void);
353355
void R_SetupSceneUBO(void);
354356
void R_RenderPreFrame();
355357
void R_RenderStartFrame();

Plugins/Renderer/gl_rmain.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3186,9 +3186,10 @@ void R_SetupFrame(void)
31863186
//R_CheckVariables();
31873187
//R_AnimateLight();
31883188

3189-
VectorCopy((*r_refdef.vieworg), r_origin);
3189+
R_UpdateRefDef();
3190+
//VectorCopy((*r_refdef.vieworg), r_origin);
31903191

3191-
gEngfuncs.pfnAngleVectors((*r_refdef.viewangles), vpn, vright, vup);
3192+
//gEngfuncs.pfnAngleVectors((*r_refdef.viewangles), vpn, vright, vup);
31923193

31933194
(*r_oldviewleaf) = (*r_viewleaf);
31943195

Plugins/Renderer/gl_rmisc.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,10 @@ void R_PushRefDef(void)
229229
++save_refdef_stack;
230230
}
231231

232+
/*
233+
Purpose: Update r_origin, vpn, vright and vup according to r_refdef stuffs
234+
*/
235+
232236
void R_UpdateRefDef(void)
233237
{
234238
VectorCopy((*r_refdef.vieworg), r_origin);

Plugins/Renderer/gl_water.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,9 @@ void R_RenderWaterPass(void)
865865
g_VisibleWaterEntity.clear();
866866
R_ClearWaterReflectCaches();
867867

868+
//Mainly for updating frustrum
869+
R_UpdateRefDef();
870+
868871
mleaf_t *viewleaf = NULL;
869872

870873
if (r_refdef_SvEngine && r_refdef_SvEngine->useCamera)
@@ -875,6 +878,8 @@ void R_RenderWaterPass(void)
875878
{
876879
viewleaf = Mod_PointInLeaf(r_origin, r_worldmodel);
877880
}
881+
R_SetupGL();
882+
R_SetFrustum();
878883

879884
auto pModel = R_GetWorldSurfaceModel(r_worldmodel);
880885

@@ -893,7 +898,7 @@ void R_RenderWaterPass(void)
893898
g_VisibleWaterSurfaceModels.emplace_back(pWaterModel);
894899
}
895900
}
896-
901+
897902
for (int i = 0; i < (*cl_numvisedicts); ++i)
898903
{
899904
auto e = cl_visedicts[i];

Plugins/Renderer/gl_wsurf.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3527,7 +3527,7 @@ void R_ParseBSPEntity_Env_Water_Control(bspentity_t *ent)
35273527
}
35283528
else
35293529
{
3530-
int lv;
3530+
int lv = 0;
35313531
if (sscanf(level_string, "%d", &lv) == 1)
35323532
{
35333533
pWaterControl->level = math_clamp(lv, WATER_LEVEL_LEGACY, WATER_LEVEL_MAX - 1);

0 commit comments

Comments
 (0)