   View frustrum culling.
  This is a basic question about culling. Do  we need a separate view frustum culling?  All these days my understanding was the perspective projection, implicitly  does  the view frustum culling? 
  Read this article about View Frustum Culling.   ;  The GPU will do it for you, yes, but in order for that to happen you need to:Do a lot of scene traversal for objects that won't even be visible,Possibly add these objects to a dynamic vertex buffer,Submit them with draw calls,Send them through the per-vertex stages of the pipeline,Send them through the primitive assembly stage of the pipeline.That's a lot of potentially expensive work for something that's not even going to be in the scene.  It also occurs at earlier stages in the pipeline where bottlenecks tend to mount up and affect everything that comes after; if you're going to have a bottleneck that's not where you want it to be.  Frustum culling also nets you gains from being able to trivially accept or reject large amounts of geometry: assuming you've got your scene organised in some kind of tree structure, you'll realise that if any given node is rejected then all of it's child nodes are also rejected, and likewise for being accepted.  As a bonus it's so trivially easy to implement that there's no reason not to use it.