NVIDIA Opengl in 2012 Mark Kilgard

NVIDIA Opengl in 2012 Mark Kilgard

<p><strong>NVIDIA OpenGL in 2012 </strong></p><p><strong>Mark Kilgard </strong></p><p>• Principal System Software Engineer </p><p>– OpenGL driver and API evolution </p><p>– Cg (“C for graphics”) shading language </p><p>– GPU-accelerated path rendering </p><p>• OpenGL Utility Toolkit (GLUT) implementer </p><p>• Author of <em>OpenGL for the X Window System </em>• Co-author of <em>Cg T u torial </em></p><p><strong>Outline </strong></p><p>• OpenGL’s importance to NVIDIA </p><p>• OpenGL API improvements &amp; new features </p><p>– OpenGL 4.2 – Direct3D interoperability </p><p>– GPU-accelerated path rendering </p><p>– Kepler Improvements </p><p>• Bindless Textures </p><p>• Linux improvements &amp; new features </p><p>• Cg 3.1 update </p><p><strong>NVIDIA’s OpenGL Leverage </strong></p><p><strong>GeForce </strong></p><p><strong>Cg </strong><br><strong>Parallel Nsight </strong><br><strong>Quadro </strong><br><strong>Tegra </strong><br><strong>OptiX </strong></p><p><strong>Example of Hybrid Rendering with OptiX </strong></p><p>OpenGL (Rasterization) <br>OptiX (Ray tracing) </p><p><strong>Parallel Nsight Provides OpenGL Profiling </strong></p><p><strong>Configure </strong></p><p><strong>Application </strong></p><p><strong>Trace Settings </strong></p><p><strong>Parallel Nsight Provides OpenGL Profiling </strong></p><p><strong>Magnified trace options shows specific OpenGL (and Cg) tracing options </strong></p><p></p><ul style="display: flex;"><li style="flex:1"><strong>Parallel Nsight Provides OpenGL Profiling </strong></li><li style="flex:1"><strong>Parallel Nsight Provides OpenGL Profiling </strong></li></ul><p></p><p><strong>Trace of mix of OpenGL and CUDA shows glFinish &amp; OpenGL draw calls </strong></p><p><strong>Only Cross Platform 3D API </strong><br><strong>OpenGL 3D Graphics API </strong></p><p>• <strong>cross-platform </strong>• <strong>most functional </strong></p><p>• <strong>peak performance </strong></p><p>• <strong>open standard </strong>• <strong>inter-operable </strong>• <strong>well specified &amp; documented </strong>• <strong>20 years of compatibility </strong></p><p><strong>OpenGL Spawns Closely Related Standards </strong></p><p>Congratulations: WebGL&nbsp;officially approved, February 2012 </p><p>“<em>The web is now 3D enabled</em>” </p><p><strong>Buffer and </strong><br><strong>Event </strong></p><p><strong>Interop </strong></p><p><strong>OpenGL 4 – DirectX 11 Superset </strong></p><p>• Interop with a complete compute solution </p><p>– OpenGL is for graphics – CUDA / OpenCL is for compute </p><p>• Shaders can be saved to and loaded from binary blobs </p><p>– Ability to query a binary shader, and save it for reuse later </p><p>• Flow of content between desktop and mobile </p><p>– All of OpenGL ES 2.0 capabilities available on desktop – EGL on Desktop in the works </p><p>– WebGL bridging desktop and mobile </p><p>• Cross platform </p><p>– Mac, Windows, Linux, Android, Solaris, FreeBSD </p><p>– Result of being an open standard </p><p><strong>Increasing Functionality of OpenGL </strong></p><p><strong>Tessellation and Compute Features </strong></p><p><strong>4.X </strong></p><p><strong>Geometry Shaders </strong></p><p><strong>3.X </strong></p><p><strong>Vertex and Fragment Shaders </strong></p><p><strong>2.X </strong></p><p><strong>Fixed Function </strong></p><p><strong>1.X </strong></p><p><strong>Classic OpenGL State Machine </strong></p><p>• From 1991-2007 </p><p>* vertex &amp; fragment processing got programmable 2001 &amp; 2003 </p><p><strong>[source: GL 1.0 specification, 1992] </strong></p><p>Complicated from inception </p><p><strong>OpenGL 3.x Conceptual Processing Flow (pre-2010) </strong></p><p>uniform/ </p><p>parameters buffer objects </p><p>primitive topology, </p><p><em>Legend </em></p><p>transformed vertex data </p><p>Geometric primitive assembly &amp; <br>Vertex assembly <br>Vertex processing </p><p>vertices primitive </p><p>batch type, </p><p>programmable operations </p><p>processing </p><p>transformed vertex attributes </p><p>pixels </p><p>fragments </p><p>filtered texels </p><p>buffer data </p><p>vertex data </p><p>point, line, and polygon fragments </p><p>fixed-function operations </p><p>geometry texture </p><p>fetches </p><p>Transform </p><p>feedback </p><p>vertex buffer transform feedback buffer objects </p><p>pixels in framebuffer object textures </p><p>objects </p><p>stenciling, depth testing, blending, accumulation </p><p>primitive batch type, vertex indices, vertex attributes </p><p>vertex </p><p>texture </p><p>fetches </p><p>texture buffer objects buffer data, </p><p>unmap buffer </p><p>Texture mapping <br>Fragment processing <br>Raster operations <br>Framebuffer </p><p>fragment texture fetches </p><p>Command parser <br>Buffer store </p><p>pixel pack buffer objects map buffer, get buffer data </p><p>image and bitmap fragments </p><p>texture image specification </p><p>pixel </p><p>pixel image or texture image specification </p><p>unpack buffer objects </p><p>Pixel packing </p><p><em>OpenGL 3.2 </em></p><p></p><ul style="display: flex;"><li style="flex:1">pixels to pack </li><li style="flex:1">image </li></ul><p></p><p>rectangles, bitmaps </p><p>Image primitive </p><p>processing </p><p>Pixel unpacking <br>Pixel processing </p><p>unpacked pixels copy pixels, copy texture image </p><p>Patch assembly &amp; processing <br>Control point processing <br>Patch tessellation generation <br>Patch evaluation processing </p><p>transformed control points </p><ul style="display: flex;"><li style="flex:1">transformed </li><li style="flex:1">transformed </li></ul><p></p><p>patch, bivariate </p><p>domain transformed </p><p>patch </p><p>patch control points patch </p><p>tessellation texture fetches </p><p>patch topology, evaluated patch vertex primitive topology, </p><p><em>Legend </em></p><p>transformed vertex data </p><p>Geometric primitive assembly &amp; <br>Vertex assembly <br>Vertex processing </p><p>patch data </p><p>primitive batch type, </p><p>programmable operations </p><p>vertices </p><p>processing </p><p>transformed vertex attributes </p><p>pixels </p><p>point, line, </p><p>and polygon </p><p>fragments </p><p>vertex data </p><p>fragments </p><p>filtered texels </p><p>buffer data </p><p>fixed-function </p><p>operations </p><p>geometry texture fetches </p><p>Transform feedback </p><p>vertex buffer objects transform feedback buffer </p><p>pixels in framebuffer object textures stenciling, depth testing, blending, accumulation </p><p>objects </p><p>primitive batch type, vertex indices, vertex attributes </p><p>vertex </p><p>texture fetches </p><p>texture buffer </p><p>Texture mapping <br>Fragment processing <br>Raster operations </p><p>buffer data, unmap objects </p><p>Framebuffer </p><p>fragment texture fetches </p><p>pixel pack buffer </p><p>objects </p><p>buffer </p><p>Command parser <br>Buffer store </p><p>map buffer, get buffer data </p><p>image and bitmap fragments </p><p>texture image specification </p><p>pixel </p><p>Pixel packing </p><p>pixel image or texture image </p><p>specification </p><p>unpack buffer objects </p><p><em>OpenGL 4.2 </em></p><p>pixels to pack image </p><p>rectangles, bitmaps </p><p>Image primitive processing <br>Pixel unpacking <br>Pixel processing </p><p>copy pixels, copy texture image unpacked pixels </p><p><strong>Accelerating OpenGL Innovation </strong></p><p><strong>NOW! </strong></p><p>2012 <br>2011 <br>2010 </p><ul style="display: flex;"><li style="flex:1">2006 </li><li style="flex:1">2008 </li><li style="flex:1">2009 </li></ul><p></p><ul style="display: flex;"><li style="flex:1">2004 </li><li style="flex:1">2005 </li><li style="flex:1">2007 </li></ul><p></p><p>DirectX 11 </p><ul style="display: flex;"><li style="flex:1">DirectX 10.0 </li><li style="flex:1">DirectX 10.1 </li></ul><p>DirectX 9.0c </p><p>It’s </p><p>cooking! </p><p>OpenGL 3.3 <br>+<br>OpenGL 3.1 </p><p></p><ul style="display: flex;"><li style="flex:1">OpenGL 2.0 </li><li style="flex:1">OpenGL 2.1 </li><li style="flex:1">OpenGL 3.0 </li><li style="flex:1">OpenGL 3.2 </li></ul><p></p><p>OpenGL 4.0 </p><p><strong>OpenGL 4.1 </strong></p><p>• <strong>OpenGL increased pace of innovation </strong></p><p>- Expect 8 new spec versions in four years </p><p>- Actual implementations following specifications closely </p><p><strong>OpenGL 4.2 </strong></p><p>• <strong>OpenGL 4.2 is a superset of DirectX 11 functionality </strong></p><p>- While retaining backwards compatibility </p>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    80 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us