I'm currently trying to write my own game engine in C++ and I've started to implement a Forward+ Renderer based on the sample found on GPUOpen.

For the moment the lighting works fine. I then decided to add a terrain to test more complex lighting and also decided to gather information about terrain rendering.

I quickly realized that using tessellation was (more or less) the way to go.

But then I found a paper by NVIDIA called "From Terrain To Godrays: Better Use of DX11" on internet where they say that using tessellation during Depth Pre-Pass could "kill the performance benefits of depth pre-pass".

So my question is: Is there a way to overcome this problem? Or can I simply not use depth pre-pass?

So the better question to ask is what are you reasons for using a depth pre-pass ? Are you using it because you say it being used in the sample or are you using it for other reasons, such as being potentially fill bound ?. A depth pre-pass is just to lay down depth values, so it stand to reason that using the simplest of geometry during this pass would accelerate the pass. It does not make sense to use a highly tesselated mesh.

OK, I tried removing the depth pre-pass and I got the same results so I guess I believed that using Depth was mandatory to do Forward+ but I guess I was wrong and learned an lesson. Thanks for your advice !