@@ -341,7 +341,7 @@ R_CullBox
341341Returns CULL_IN, CULL_CLIP, or CULL_OUT
342342=================
343343*/
344- cullResult_t R_CullBox ( vec3_t worldBounds[ 2 ] )
344+ cullResult_t R_CullBox ( const vec3_t worldBounds[ 2 ], int lastPlane )
345345{
346346 bool anyClip;
347347 cplane_t *frust;
@@ -355,7 +355,7 @@ cullResult_t R_CullBox( vec3_t worldBounds[ 2 ] )
355355 // check against frustum planes
356356 anyClip = false ;
357357
358- for ( i = 0 ; i < FRUSTUM_PLANES ; i++ )
358+ for ( i = 0 ; i <= lastPlane ; i++ )
359359 {
360360 frust = &tr.viewParms .frustum [ i ];
361361
@@ -837,7 +837,7 @@ static void R_SetupFrustum()
837837 MatrixAffineInverse (tr.viewParms .world .viewMatrix , invTransform);
838838
839839 // transform planes back to world space for culling
840- for (int i = 0 ; i <= FRUSTUM_NEAR ; i++)
840+ for (int i = 0 ; i < FRUSTUM_PLANES ; i++)
841841 {
842842 plane_t plane;
843843 VectorCopy (tr.viewParms .portalFrustum [i].normal , plane.normal );
@@ -881,13 +881,18 @@ static void R_SetupFrustum()
881881 SetPlaneSignbits ( &tr.viewParms .frustum [ i ] );
882882 }
883883
884- // Tr3B: set extra near plane which is required by the dynamic occlusion culling
885884 tr.viewParms .frustum [ FRUSTUM_NEAR ].type = PLANE_NON_AXIAL;
886885 VectorCopy ( tr.viewParms .orientation .axis [ 0 ], tr.viewParms .frustum [ FRUSTUM_NEAR ].normal );
887886
888887 VectorMA ( tr.viewParms .orientation .origin , r_znear->value , tr.viewParms .frustum [ FRUSTUM_NEAR ].normal , planeOrigin );
889888 tr.viewParms .frustum [ FRUSTUM_NEAR ].dist = DotProduct ( planeOrigin, tr.viewParms .frustum [ FRUSTUM_NEAR ].normal );
890889 SetPlaneSignbits ( &tr.viewParms .frustum [ FRUSTUM_NEAR ] );
890+
891+ tr.viewParms .frustum [ FRUSTUM_FAR ].type = PLANE_NON_AXIAL;
892+ VectorCopy ( tr.viewParms .orientation .axis [ 0 ], tr.viewParms .frustum [ FRUSTUM_FAR ].normal );
893+ tr.viewParms .frustum [ FRUSTUM_FAR ].dist = tr.viewParms .zFar +
894+ DotProduct ( tr.viewParms .orientation .origin , tr.viewParms .frustum [ FRUSTUM_FAR ].normal );
895+ SetPlaneSignbits ( &tr.viewParms .frustum [ FRUSTUM_FAR ] );
891896 }
892897}
893898
0 commit comments