Because of the game being in a first-person perspective, culling was a lot more important than before. To solve this issue and improve performance, I implemented 2 layers of culling.
The first being a grid-based frustum culling, roughly culling most objects out of view. The cells are selected based on the camera frustum in this method.
The second layer of culling removed objects that had a dot product less than a set angle, relative to the camera. This removed a lot of the objects missed by the previous rougher method.
These culling systems were applied to the shadow map rendering as well, for increased performance.