10
\$\begingroup\$

Recently at a job interview, I mentioned that I taught myself modern OpenGL and rendering with vertex buffer objects because my university only taught the fixed function pipeline with immediate mode rendering at the time. The interviewer briefly interrupted me to say that VBOs have effectively been replaced by something called "zero state rendering" and then let me continue.

I forgot to ask later on about what that meant, because we quickly moved onto different subjects and the interviewer had run out of time at the end due to a busy schedule.

Later, I searched online for "OpenGL zero state" and "zero state rendering" with no results that seemed relevant, mostly just things about the OpenGL state.

The organization in question is very heavily research based, so is there a chance that it is an extension with currently little support, or that the terminology used varies due to it's cutting edge nature?

\$\endgroup\$
  • \$\begingroup\$ Are you certain it was "zero state", or could it have been something else with a word "zero" in it? My guess is that he was talking about zero overhead: gdcvault.com/play/1020791 \$\endgroup\$ – Lasse Oct 26 '14 at 19:25
  • \$\begingroup\$ There's a good chance that it could be 'zero overheard', from skimming the video, although I am 100% certain his actual words were 'zero state'. My assumption was that he was referring to a single new feature used for draw calls, as opposed to optimizing what was already available. Is 'zero overhead' the new, recommended way of drawing things in OpenGL? \$\endgroup\$ – usm Oct 26 '14 at 19:47
  • 6
    \$\begingroup\$ Could it have been "zero attribute"? Zero-attribute rendering (often called "attributeless rendering") does replace VBOs. \$\endgroup\$ – Trevor Powell Oct 26 '14 at 21:15
  • 5
    \$\begingroup\$ This question is not off-topic, terminology questions are absolutely permitted. \$\endgroup\$ – Josh Oct 27 '14 at 16:16
  • 1
    \$\begingroup\$ I'm quite certain that what your interviewer was talking about was what is more commonly known as Bindless Rendering. In short, it removes the need to bind individual objects to global handles in order to change or utilize them. You should get better results searching for that. \$\endgroup\$ – kevintodisco Oct 29 '14 at 3:15
9
\$\begingroup\$

Your interviewer was talking, with his own words, about bindless API. nVidia made nice presentations recently about all that, which they call direct state access (1, 2). This does not replace VBOs.


EDIT: Actually, let's consider Trevor Powell's suggestion:

This seems like some people could definitely decide to drop VBOs, in favor of attribute-less rendering, using geometry shaders fetching uniform data or textures, as mentioned in this article.

I can see how somebody could decide to switch one's engine to full attirubte-less, but I would not condone such a move if I was in the team: The reason—if you read this overview of the pipeline carefully—is that with attribute-less, the vertex FIFO cache becomes unusable as it's skipped altogether. Attribute-less hence removes a nice optimization opportunity.

This needs benchmarking of course, but purely a-priori, it sounds like a bad idea for a generic, all purpose solution.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.