21:9 aspect ratio is huge. You’ve got a stable 5ms going into Present
which is the basically GPU command flush + VSync (if it’s on). Render-doc is your friend here to be sure but I’d think you’re chewing fill-rate.
A LQ-HDR
can be done by copying the PostProcess file and changing the divisors (something other than 2->4->8->16, like 4->8->16->32 or 8->16->32->64). The #ifdefs in that shader are mostly just for using the right auto-uniforms (target size and inv-size). But you shouldn’t save more than a handful of frames from doing that. It’ll get more Oblivion-bloom-hell-esque the more you divide though - it’s easy to check though to see if it makes a meaningful difference. It isn’t that meaningful for me, but 1080p is the largest res I have.
3 - 4 ms going to occlusion drawing is probably the upper limit that you want to see. Might want to see if terrain really needs to be an occluder and if maybe an LOD set to an enormous LOD distance for the cliff meshes helps that. Occlusion drawing uses the lowest LOD available for both terrain and meshes, so in the case of a mesh if you set the LOD distance to something like FLT_MAX
that will actually pass tests then the LOD will be used solely by the occlusion software renderer.
See the asset importer docs on how to use it to merge seperate meshes into 1 with LOD. It can also be done in code with something like IGL + Eigen which is more work code-side instead of content-side.