Deferred pipeline + indirect rendering

Hi, I am building an engine with an indirect rendering pipeline in combination with deferred shading. When generating the required information for the G Buffer, it seems that Nsight marks the events following the indirect call as writing some of the geometries positions in incorrect places and then removing them, maybe causing problems with the light calculations. Does anyone know anything about any issues related with draw commands and stuff with Nsight?

“Nsight” is a generic prefix that NVIDIA embeds in the names of most of their developer tools:

Which one are you talking about? I’m going to assume Nsight Graphics:

There are a few quirks I’ve noticed with Nsight Graphics, but nothing specific to GL indirect draw calls that I’ve noticed. That said…:

I’m not sure what you’re seeing here to make you think the above.

  • Are you looking at the values of specific pixels in the render target preview window? In the Resource Viewer?
  • Are you using the Scrubber to move the current frame render point back and forth in the frame?
  • What’s making you think that “events following the indirect call” are writing some geometries? Are these other draw calls?
  • Keep in mind that Nsight Graphics tends to expand glMultiDraw*Indirect() draw calls into multiple individual glDraw*Indirect() calls, which gives you visibility into the subdraws within a multidraw. Does that have anything to do with what you’re seeing?
  • What GL internal format are you using for the positions channel of your G-Buffer? Is this format well supported by Nsight Graphics? Is this just a depth channel?
  • Does app markup have anything to do with what you’re seeing? Which markup are you using? NVTX? KHR_debug?

Sorry for the confusion on which nsight tool I am refering to, yes, I meant nsight Graphics. To answer your questions:

Yes, I am looking at the pixels in the textures in the resource viewer and yes I am using the scrubber to check for the render point, and all of these result in points where things are rendered in the wrong locations. As for the internal format, I am using GL_RGBA16F.

Here are some sample images: