SlideShare una empresa de Scribd logo
1 de 94
OpenGL 4 for 2010 Mark Kilgard Barthold Lichtenbelt SIGGRAPH Sponsored Session  July 28, 2010
Also: Listen to this Talk Online ,[object Object],[object Object],[object Object],[object Object],http://nvidia.fullviewmedia.com/siggraph2010/02-dev-barthold-lichtenbelt-mark-kilgard.html
Barthold Lichtenbelt  ,[object Object],[object Object],[object Object]
Quadro 5000 Quadro 4000 Quadro 6000 6 GB GDDR5 448 CUDA Cores ECC  Stereo G-Sync Compatible HD SDI Compatible 2.5 GB GDDR5 352 CUDA Cores ECC  Stereo G-Sync Compatible HD SDI Compatible 2   GB  GDDR5 256  CUDA  Cores Optional Stereo HD SDI Compatible QuadroPlex 7000 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Quadro 5000M: World’s Fastest Mobile Workstation Available in Dell and HP 17” Mobile Workstations!
Introducing NVIDIA 3D Vision Pro ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL Leverage Parallel Nsight Cg SceniX CompleX OptiX
Example of Hybrid Rendering with OptiX OptiX (Ray tracing) OpenGL (Rasterization)
OpenGL In Every NVIDIA Business
NVIDIA OpenGL Initiatives ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL on Quadro ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL Interoperability Multi-GPU
CUDA / OpenCL Interop example Application OpenGL driver CUDA driver Quadro or GeForce Display Tesla or GeForce Interop fast ,[object Object],[object Object],[object Object]
Multi-GPU OpenGL Interop Application OpenGL driver OpenGL driver Quadro Display Quadro Interop fast ,[object Object],[object Object],[object Object],GPU affinity Off-screen buffer
OpenGL and Tesla ,[object Object],[object Object],[object Object],[object Object],Tesla M2050 / M2070
OpenGL on Tegra ,[object Object]
OpenGL on GeForce ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object]
OpenGL 4 in 2010 What’s new in the API? Mark J. Kilgard
Mark J. Kilgard ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL Version Progression OpenGL  2.0   2.1  OpenGL  3.0  3.1  3.2  3.3  OpenGL  4.0  4.1   OpenGL  1.0  1.1  1.2.1  1.3  1.4  1.5  Silicon Graphics heritage DirectX 9 era GPUs DirectX 10 era GPUs DirectX 11 era GPUs (2008-2010) (1992-2003) (2004-2007) (2010-)
What a year for OpenGL  ! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 3.3 + 4.0 Additions are Focus of This Talk ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Classic OpenGL State Machine ,[object Object],[object Object],[source: GL 1.0 specification]
OpenGL 3.2 Conceptual Data Flow (pre-2010) Vertex processing Pixel processing Texture mapping Geometric primitive assembly & processing Image primitive processing Transform feedback Pixel unpacking Pixel packing Vertex assembly pixels in framebuffer object textures texture buffer objects texture image specification image rectangles, bitmaps primitive topology, transformed vertex data vertex texture fetches pixel pack buffer objects pixel unpack buffer objects vertex buffer objects transform feedback buffer objects buffer data, unmap buffer geometry texture fetches primitive batch type, vertex indices, vertex attributes primitive batch type, vertex data fragment texture fetches pixel image or texture image specification map buffer, get buffer data transformed vertex attributes image and bitmap fragments point, line, and polygon fragments pixels to pack unpacked pixels pixels fragments filtered texels buffer data vertices Legend programmable operations fixed-function operations copy pixels, copy texture image Buffer store uniform/ parameters buffer objects Fragment processing stenciling, depth testing, blending, accumulation OpenGL 3.2 Raster operations Framebuffer Command parser
Vertex processing Pixel processing Texture mapping Geometric primitive assembly & processing Image primitive processing Transform feedback Pixel unpacking Pixel packing Vertex assembly pixels in framebuffer object textures texture buffer objects texture image specification image rectangles, bitmaps primitive topology, transformed vertex data vertex texture fetches pixel pack buffer objects pixel unpack buffer objects vertex buffer objects transform feedback buffer objects buffer data, unmap buffer geometry texture fetches primitive batch type, vertex indices, vertex attributes primitive batch type, vertex data fragment texture fetches pixel image or texture image specification map buffer, get buffer data transformed vertex attributes image and bitmap fragments point, line, and polygon fragments pixels to pack unpacked pixels pixels fragments filtered texels buffer data vertices Legend programmable operations fixed-function operations copy pixels, copy texture image Buffer store Fragment processing stenciling, depth testing, blending, accumulation Control point processing Patch assembly & processing Patch tessellation generation Patch evaluation processing patch control points transformed control points transformed patch transformed patch, bivariate domain transformed patch tessellation texture fetches patch topology, evaluated patch vertex patch data OpenGL 4 Raster operations Framebuffer Command parser
OpenGL 3.3 Laundry List (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 3.3 Laundry List (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 3.3 Laundry List (3) ,[object Object],[object Object],[object Object],[object Object],R G B A 1 0 X Y Z W texture fetch result delivered to shader  fetched texture’s RGBA  ,[object Object],[object Object],[object Object],[object Object]
OpenGL 3.3 Laundry List (4) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 3.3 Support & Older GPUs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 4.0 Features Categories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Fairly broad categories
OpenGL 4.0 Texturing Features ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cube Map Texture Arrays ,[object Object],[object Object],[object Object],[object Object],[object Object],slice  i  = 0  slice  i  = 1  slice  i  = 2
OpenGL 4.0 Framebuffer Features ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 4.0 Transform Feedback Features ,[object Object],[object Object],[object Object],[object Object],[object Object],primitive processing rasterization pixel processing framebuffer transform feedback buffer data framebuffer buffer data
OpenGL Shading Language Update ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 4.0 Programmable Features: Indexing ,[object Object],[object Object],[object Object],[object Object]
OpenGL 4.0 Programmable Features: Numeric Data Type Control ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],OpenGL 4.0 Programmable Features: Double-Precision Numeric
OpenGL 4.0 Programmable Features: Subroutines ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 4.0 Programmable Features: Fragment Shaders ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],pixel center  relative offset  dx  dy  sample index  0  1  2  3  centroid centroid position of 3 covered samples pixel footprints interpolation modes
OpenGL 4.0 Programmable Features: Tessellation Shaders ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programmable Tessellation Data Flow vertex shader clipping, setup, & rasterization fragment shader assembled primitive fragments index to vertex attribute puller indices primitive topology & in-band vertex attributes vertex attributes vertex shader geometry shader clipping, setup, & rasterization fragment shader OpenGL 4.0 adds tessellation shaders assembled primitive fragments index to vertex attribute puller indices primitive topology & in-band vertex attributes vertex attributes tessellation control (hull) shader tessellation evaluation (domain) shader tessellation generator level-of-detail parameters patch control points & parameters fine primitive topology  (u, v) coordinates primitive stream control points control point (vertex) shader vertex attributes rectangular & triangluar patch OpenGL 3.2 programmable fixed-function Legend geometry shader primitive stream
Tessellated Triangle and Quad Notice fractional tessellation scheme in wire-frame pattern
Iso-line Tessellation ,[object Object],[object Object]
Bezier Triangle Patch
Bezier Triangle Control Points b 300 b 210 b 120 b 030 b 021 b 012 b 003 b 102 b 201 b 111 P(u,v) = u 3   b 300 + 3 u 2 v b 210 + 3 uv 2  b 120 + v 3  b 030 + 3 u 2 w b 201 + 6 uvw b 111 + 3 v 2 w b 021 + 3 uw 2  b 102 + 3 uw 2  b 012 + w 3  b 003 where  w=1-u-v
“Precise” Evaluation Math for Bezier Triangle Example ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Notice evaluation needs homogenous coordinates, hence vec4(x,1)
Bi-cubic Quadrilateral Patch
Bi-cubic Patch Mesh
Surfaces are Determined by Their Control Points Moving control points displaces the evaluated surfaces
Utah Teapot: Bi-cubic Patch Mesh
Ed Catmull’s Gumbo
Photo of the Live Tessellation Demo given during the Talk
Bi-cubic Patches Used in Production Rendering ,[object Object]
Amplification of Standard Triangle Meshes Original faceted mesh   Tessellation results in triangle amplification with curvature Results of Phong shading of curved
Art Pipeline for Tessellation … Generate LODs GPU Control Cage Smooth Surface Displaced Surface Polygon Mesh
 
 
Displacement Mapping ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tessellation Shader Example: Starting Simple ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GLSL Control Point (Vertex) Shader ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GLSL Tessellation  Control  Shader ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GLSL Tessellation  Evaluation  Shader ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Simple Example Rendered Original single triangle   Adaptive tessellation automatically tessellates distant, small triangle less and close, large triangle more Visualization of barycentric weights used by tessellation evaluation shader
More Complicated Example: Adaptive PN Triangles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Adaptive PN Triangle Tessellation  Control  Shader ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Adaptive PN Triangle Tessellation  Evaluation  Shader (1 of 3)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Adaptive PN Triangle Tessellation  Evaluation  Shader (2 of 3)
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Adaptive PN Triangle Tessellation  Evaluation  Shader (3 of 3)
Adaptive PN Triangles Tessellation Rendered Visualization of barycentric weights used by tessellation evaluation shader Original monkey head faceted mesh Tessellated & Phong shaded  Wire frame of adaptive tessellation
Careful About Cracks at Patch Seams ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],cracks
NVIDIA’s Position on OpenGL Deprecation: Core vs. Compatibility Profiles ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cg 3.0 Update (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cg 3.0 Update (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cg Off-line Compiler Compiles GLSL to Assembly ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
More NVIDIA OpenGL Features to Explore (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
More NVIDIA OpenGL Features to Explore (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
More NVIDIA OpenGL Features to Explore (3) ,[object Object],[object Object],[object Object]
[object Object]
OpenGL the 3D Graphics API Barthold Lichtenbelt
Only Cross Platform 3D API
OpenGL Leverage
Technology behind OpenGL 4.0 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Accelerating OpenGL Innovation ,[object Object],[object Object],[object Object],[object Object],[object Object],DirectX 10.1 2004 2006 2008 OpenGL 2.0 OpenGL 2.1 OpenGL 3.0 OpenGL 3.1 2009 DirectX 9.0c DirectX 10.0 DirectX 11 2005 2007 OpenGL 3.2 OpenGL 3.3 + OpenGL 4.0 2011 TODAY! OpenGL 4.1
What is in OpenGL 4.1? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
New ARB only Extensions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Technology behind OpenGL 4.1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OpenGL 4 – DX11 Superset ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Buffer  and Event Interop
Come to the OpenGL BOF – TODAY! ,[object Object],[object Object],[object Object],[object Object],OpenGL 4.1
Where To Find Us ,[object Object],[object Object],[object Object],0900-1000 Room 402B iray and Cloud Computing, Michael Kaplan 1015-1130 Room 402B OpenGL 4.0 for 2010,  Barthold Lichtenbelt and Mark Kilgard 1200-1300 Room 402B Parallel Nsight : GPU Computing and Graphics Development in Visual Studio, Jeff Kiel and Kumar Iyer 1315-1415 Room 402B Rapid GPU Ray Tracing Development with NVIDIA OptiX , Austin Robison 1430-1530 Room 402B Building Cutting-Edge Realtime 3D Applications , Holger Kunz and Phillip Miller 1545-1700 Room 402B APEX  : Creating scalable immersive game environments, Monier Maher and Aron Zoellner
Other NVIDIA Presentations ,[object Object],Wed, 28 July 2-3:30 pm ,[object Object],[object Object],Thu, 29 July, 9 am-12:15 pm ,[object Object],[object Object],[object Object]
GPU Technology Conference 2010 Monday, Sept. 20 — Thursday, Sept. 23, 2010 San Jose Convention Center, San Jose, California The most important event in  the GPU ecosystem http://www.nvidia.com/gtc

Más contenido relacionado

La actualidad más candente

SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
Mark Kilgard
 
Approaching zero driver overhead
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overhead
Cass Everitt
 
Oit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked ListsOit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked Lists
Holger Gruen
 

La actualidad más candente (20)

GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012GTC 2012: NVIDIA OpenGL in 2012
GTC 2012: NVIDIA OpenGL in 2012
 
GTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path RenderingGTC 2012: GPU-Accelerated Path Rendering
GTC 2012: GPU-Accelerated Path Rendering
 
NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016NVIDIA OpenGL in 2016
NVIDIA OpenGL in 2016
 
CS 354 Introduction
CS 354 IntroductionCS 354 Introduction
CS 354 Introduction
 
OpenGL Shading Language
OpenGL Shading LanguageOpenGL Shading Language
OpenGL Shading Language
 
SIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGLSIGGRAPH Asia 2008 Modern OpenGL
SIGGRAPH Asia 2008 Modern OpenGL
 
Approaching zero driver overhead
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overhead
 
Beyond porting
Beyond portingBeyond porting
Beyond porting
 
CS 354 Viewing Stuff
CS 354 Viewing StuffCS 354 Viewing Stuff
CS 354 Viewing Stuff
 
EXT_window_rectangles
EXT_window_rectanglesEXT_window_rectangles
EXT_window_rectangles
 
vkFX: Effect(ive) approach for Vulkan API
vkFX: Effect(ive) approach for Vulkan APIvkFX: Effect(ive) approach for Vulkan API
vkFX: Effect(ive) approach for Vulkan API
 
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and BeyondSIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
SIGGRAPH Asia 2012 Exhibitor Talk: OpenGL 4.3 and Beyond
 
Avoiding 19 Common OpenGL Pitfalls
Avoiding 19 Common OpenGL PitfallsAvoiding 19 Common OpenGL Pitfalls
Avoiding 19 Common OpenGL Pitfalls
 
NV_path rendering Functional Improvements
NV_path rendering Functional ImprovementsNV_path rendering Functional Improvements
NV_path rendering Functional Improvements
 
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
Slides: Accelerating Vector Graphics Rendering using the Graphics Hardware Pi...
 
Open gl
Open glOpen gl
Open gl
 
Oit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked ListsOit And Indirect Illumination Using Dx11 Linked Lists
Oit And Indirect Illumination Using Dx11 Linked Lists
 
CS 354 GPU Architecture
CS 354 GPU ArchitectureCS 354 GPU Architecture
CS 354 GPU Architecture
 
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...Programming with NV_path_rendering:  An Annex to the SIGGRAPH Asia 2012 paper...
Programming with NV_path_rendering: An Annex to the SIGGRAPH Asia 2012 paper...
 
Graphics programming in open gl
Graphics programming in open glGraphics programming in open gl
Graphics programming in open gl
 

Destacado

Gallium3D - Mesa's New Driver Model
Gallium3D - Mesa's New Driver ModelGallium3D - Mesa's New Driver Model
Gallium3D - Mesa's New Driver Model
Chia-I Wu
 
Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)
Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)
Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)
Matthias Trapp
 
Milestone Highway Construction
Milestone Highway ConstructionMilestone Highway Construction
Milestone Highway Construction
coreycarr
 
A visualization-oriented 3D method for efficient computation of urban solar r...
A visualization-oriented 3D method for efficient computation of urban solar r...A visualization-oriented 3D method for efficient computation of urban solar r...
A visualization-oriented 3D method for efficient computation of urban solar r...
Jianming Liang
 

Destacado (13)

Secret of Intel Management Engine by Igor Skochinsky
Secret of Intel Management Engine  by Igor SkochinskySecret of Intel Management Engine  by Igor Skochinsky
Secret of Intel Management Engine by Igor Skochinsky
 
Gallium3D - Mesa's New Driver Model
Gallium3D - Mesa's New Driver ModelGallium3D - Mesa's New Driver Model
Gallium3D - Mesa's New Driver Model
 
Machinery industrial parts
Machinery industrial partsMachinery industrial parts
Machinery industrial parts
 
Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)
Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)
Interactive Rendering Techniques for Highlighting (3D GeoInfo 2010)
 
Eternal Engineering Equipment (p.) Ltd., Pune, Vibration Laboratory
 Eternal Engineering Equipment (p.) Ltd., Pune, Vibration Laboratory Eternal Engineering Equipment (p.) Ltd., Pune, Vibration Laboratory
Eternal Engineering Equipment (p.) Ltd., Pune, Vibration Laboratory
 
Milestone Highway Construction
Milestone Highway ConstructionMilestone Highway Construction
Milestone Highway Construction
 
Global Power Systems Pvt. Ltd., Nagpur, Generators Set & Controller
Global Power Systems Pvt. Ltd., Nagpur, Generators Set & ControllerGlobal Power Systems Pvt. Ltd., Nagpur, Generators Set & Controller
Global Power Systems Pvt. Ltd., Nagpur, Generators Set & Controller
 
Regulators and rectifiers
Regulators and rectifiersRegulators and rectifiers
Regulators and rectifiers
 
Rancon Foundry: industrial parts supplier in Europe
Rancon Foundry: industrial parts supplier in EuropeRancon Foundry: industrial parts supplier in Europe
Rancon Foundry: industrial parts supplier in Europe
 
JMM Machining & Construction of parts
JMM Machining & Construction of partsJMM Machining & Construction of parts
JMM Machining & Construction of parts
 
Animation basics
Animation basicsAnimation basics
Animation basics
 
Mapping
MappingMapping
Mapping
 
A visualization-oriented 3D method for efficient computation of urban solar r...
A visualization-oriented 3D method for efficient computation of urban solar r...A visualization-oriented 3D method for efficient computation of urban solar r...
A visualization-oriented 3D method for efficient computation of urban solar r...
 

Similar a OpenGL 4 for 2010

Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02
RubnCuesta2
 
Introduction To Geometry Shaders
Introduction To Geometry ShadersIntroduction To Geometry Shaders
Introduction To Geometry Shaders
pjcozzi
 
Hardware Shaders
Hardware ShadersHardware Shaders
Hardware Shaders
gueste52f1b
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
changehee lee
 

Similar a OpenGL 4 for 2010 (20)

NVIDIA Graphics, Cg, and Transparency
NVIDIA Graphics, Cg, and TransparencyNVIDIA Graphics, Cg, and Transparency
NVIDIA Graphics, Cg, and Transparency
 
GTC 2009 OpenGL Barthold
GTC 2009 OpenGL BartholdGTC 2009 OpenGL Barthold
GTC 2009 OpenGL Barthold
 
Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011Advanced Graphics Workshop - GFX2011
Advanced Graphics Workshop - GFX2011
 
Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02Commandlistsiggraphasia2014 141204005310-conversion-gate02
Commandlistsiggraphasia2014 141204005310-conversion-gate02
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
GFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
GFX Part 1 - Introduction to GPU HW and OpenGL ES specificationsGFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
GFX Part 1 - Introduction to GPU HW and OpenGL ES specifications
 
Introduction To Geometry Shaders
Introduction To Geometry ShadersIntroduction To Geometry Shaders
Introduction To Geometry Shaders
 
CS 354 Programmable Shading
CS 354 Programmable ShadingCS 354 Programmable Shading
CS 354 Programmable Shading
 
Opengl basics
Opengl basicsOpengl basics
Opengl basics
 
Your Game Needs Direct3D 11, So Get Started Now!
Your Game Needs Direct3D 11, So Get Started Now!Your Game Needs Direct3D 11, So Get Started Now!
Your Game Needs Direct3D 11, So Get Started Now!
 
FrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in FrostbiteFrameGraph: Extensible Rendering Architecture in Frostbite
FrameGraph: Extensible Rendering Architecture in Frostbite
 
The Ring programming language version 1.6 book - Part 189 of 189
The Ring programming language version 1.6 book - Part 189 of 189The Ring programming language version 1.6 book - Part 189 of 189
The Ring programming language version 1.6 book - Part 189 of 189
 
Android native gl
Android native glAndroid native gl
Android native gl
 
OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI Platforms
 
XLcloud 3-d remote rendering
XLcloud 3-d remote renderingXLcloud 3-d remote rendering
XLcloud 3-d remote rendering
 
Hardware Shaders
Hardware ShadersHardware Shaders
Hardware Shaders
 
Open GL ES Android
Open GL ES AndroidOpen GL ES Android
Open GL ES Android
 
Dynamic sorting algorithm vizualizer.pdf
Dynamic sorting algorithm vizualizer.pdfDynamic sorting algorithm vizualizer.pdf
Dynamic sorting algorithm vizualizer.pdf
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Ge force fx
Ge force fxGe force fx
Ge force fx
 

Más de Mark Kilgard

Más de Mark Kilgard (18)

D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...D11: a high-performance, protocol-optional, transport-optional, window system...
D11: a high-performance, protocol-optional, transport-optional, window system...
 
Computers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School StudentsComputers, Graphics, Engineering, Math, and Video Games for High School Students
Computers, Graphics, Engineering, Math, and Video Games for High School Students
 
NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017NVIDIA OpenGL and Vulkan Support for 2017
NVIDIA OpenGL and Vulkan Support for 2017
 
NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017NVIDIA OpenGL 4.6 in 2017
NVIDIA OpenGL 4.6 in 2017
 
Virtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUsVirtual Reality Features of NVIDIA GPUs
Virtual Reality Features of NVIDIA GPUs
 
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware PipelineAccelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
Accelerating Vector Graphics Rendering using the Graphics Hardware Pipeline
 
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path RenderingSIGGRAPH Asia 2012: GPU-accelerated Path Rendering
SIGGRAPH Asia 2012: GPU-accelerated Path Rendering
 
GPU accelerated path rendering fastforward
GPU accelerated path rendering fastforwardGPU accelerated path rendering fastforward
GPU accelerated path rendering fastforward
 
GPU-accelerated Path Rendering
GPU-accelerated Path RenderingGPU-accelerated Path Rendering
GPU-accelerated Path Rendering
 
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web RenderingSIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
SIGGRAPH 2012: GPU-Accelerated 2D and Web Rendering
 
CS 354 Final Exam Review
CS 354 Final Exam ReviewCS 354 Final Exam Review
CS 354 Final Exam Review
 
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR GraphicsCS 354 Surfaces, Programmable Tessellation, and NPR Graphics
CS 354 Surfaces, Programmable Tessellation, and NPR Graphics
 
CS 354 Performance Analysis
CS 354 Performance AnalysisCS 354 Performance Analysis
CS 354 Performance Analysis
 
CS 354 Acceleration Structures
CS 354 Acceleration StructuresCS 354 Acceleration Structures
CS 354 Acceleration Structures
 
CS 354 Global Illumination
CS 354 Global IlluminationCS 354 Global Illumination
CS 354 Global Illumination
 
CS 354 Ray Casting & Tracing
CS 354 Ray Casting & TracingCS 354 Ray Casting & Tracing
CS 354 Ray Casting & Tracing
 
CS 354 Typography
CS 354 TypographyCS 354 Typography
CS 354 Typography
 
CS 354 Vector Graphics & Path Rendering
CS 354 Vector Graphics & Path RenderingCS 354 Vector Graphics & Path Rendering
CS 354 Vector Graphics & Path Rendering
 

OpenGL 4 for 2010

  • 1. OpenGL 4 for 2010 Mark Kilgard Barthold Lichtenbelt SIGGRAPH Sponsored Session July 28, 2010
  • 2.
  • 3.
  • 4.
  • 5. Quadro 5000M: World’s Fastest Mobile Workstation Available in Dell and HP 17” Mobile Workstations!
  • 6.
  • 7. OpenGL Leverage Parallel Nsight Cg SceniX CompleX OptiX
  • 8. Example of Hybrid Rendering with OptiX OptiX (Ray tracing) OpenGL (Rasterization)
  • 9. OpenGL In Every NVIDIA Business
  • 10.
  • 11.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. OpenGL 4 in 2010 What’s new in the API? Mark J. Kilgard
  • 20.
  • 21. OpenGL Version Progression OpenGL 2.0 2.1 OpenGL 3.0 3.1 3.2 3.3 OpenGL 4.0 4.1 OpenGL 1.0 1.1 1.2.1 1.3 1.4 1.5 Silicon Graphics heritage DirectX 9 era GPUs DirectX 10 era GPUs DirectX 11 era GPUs (2008-2010) (1992-2003) (2004-2007) (2010-)
  • 22.
  • 23.
  • 24.
  • 25. OpenGL 3.2 Conceptual Data Flow (pre-2010) Vertex processing Pixel processing Texture mapping Geometric primitive assembly & processing Image primitive processing Transform feedback Pixel unpacking Pixel packing Vertex assembly pixels in framebuffer object textures texture buffer objects texture image specification image rectangles, bitmaps primitive topology, transformed vertex data vertex texture fetches pixel pack buffer objects pixel unpack buffer objects vertex buffer objects transform feedback buffer objects buffer data, unmap buffer geometry texture fetches primitive batch type, vertex indices, vertex attributes primitive batch type, vertex data fragment texture fetches pixel image or texture image specification map buffer, get buffer data transformed vertex attributes image and bitmap fragments point, line, and polygon fragments pixels to pack unpacked pixels pixels fragments filtered texels buffer data vertices Legend programmable operations fixed-function operations copy pixels, copy texture image Buffer store uniform/ parameters buffer objects Fragment processing stenciling, depth testing, blending, accumulation OpenGL 3.2 Raster operations Framebuffer Command parser
  • 26. Vertex processing Pixel processing Texture mapping Geometric primitive assembly & processing Image primitive processing Transform feedback Pixel unpacking Pixel packing Vertex assembly pixels in framebuffer object textures texture buffer objects texture image specification image rectangles, bitmaps primitive topology, transformed vertex data vertex texture fetches pixel pack buffer objects pixel unpack buffer objects vertex buffer objects transform feedback buffer objects buffer data, unmap buffer geometry texture fetches primitive batch type, vertex indices, vertex attributes primitive batch type, vertex data fragment texture fetches pixel image or texture image specification map buffer, get buffer data transformed vertex attributes image and bitmap fragments point, line, and polygon fragments pixels to pack unpacked pixels pixels fragments filtered texels buffer data vertices Legend programmable operations fixed-function operations copy pixels, copy texture image Buffer store Fragment processing stenciling, depth testing, blending, accumulation Control point processing Patch assembly & processing Patch tessellation generation Patch evaluation processing patch control points transformed control points transformed patch transformed patch, bivariate domain transformed patch tessellation texture fetches patch topology, evaluated patch vertex patch data OpenGL 4 Raster operations Framebuffer Command parser
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44. Programmable Tessellation Data Flow vertex shader clipping, setup, & rasterization fragment shader assembled primitive fragments index to vertex attribute puller indices primitive topology & in-band vertex attributes vertex attributes vertex shader geometry shader clipping, setup, & rasterization fragment shader OpenGL 4.0 adds tessellation shaders assembled primitive fragments index to vertex attribute puller indices primitive topology & in-band vertex attributes vertex attributes tessellation control (hull) shader tessellation evaluation (domain) shader tessellation generator level-of-detail parameters patch control points & parameters fine primitive topology (u, v) coordinates primitive stream control points control point (vertex) shader vertex attributes rectangular & triangluar patch OpenGL 3.2 programmable fixed-function Legend geometry shader primitive stream
  • 45. Tessellated Triangle and Quad Notice fractional tessellation scheme in wire-frame pattern
  • 46.
  • 48. Bezier Triangle Control Points b 300 b 210 b 120 b 030 b 021 b 012 b 003 b 102 b 201 b 111 P(u,v) = u 3 b 300 + 3 u 2 v b 210 + 3 uv 2 b 120 + v 3 b 030 + 3 u 2 w b 201 + 6 uvw b 111 + 3 v 2 w b 021 + 3 uw 2 b 102 + 3 uw 2 b 012 + w 3 b 003 where w=1-u-v
  • 49.
  • 52. Surfaces are Determined by Their Control Points Moving control points displaces the evaluated surfaces
  • 53. Utah Teapot: Bi-cubic Patch Mesh
  • 55. Photo of the Live Tessellation Demo given during the Talk
  • 56.
  • 57. Amplification of Standard Triangle Meshes Original faceted mesh Tessellation results in triangle amplification with curvature Results of Phong shading of curved
  • 58. Art Pipeline for Tessellation … Generate LODs GPU Control Cage Smooth Surface Displaced Surface Polygon Mesh
  • 59.  
  • 60.  
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66. Simple Example Rendered Original single triangle Adaptive tessellation automatically tessellates distant, small triangle less and close, large triangle more Visualization of barycentric weights used by tessellation evaluation shader
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72. Adaptive PN Triangles Tessellation Rendered Visualization of barycentric weights used by tessellation evaluation shader Original monkey head faceted mesh Tessellated & Phong shaded Wire frame of adaptive tessellation
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82. OpenGL the 3D Graphics API Barthold Lichtenbelt
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94. GPU Technology Conference 2010 Monday, Sept. 20 — Thursday, Sept. 23, 2010 San Jose Convention Center, San Jose, California The most important event in the GPU ecosystem http://www.nvidia.com/gtc

Notas del editor

  1. Introduce Mark and myself
  2. Before we delve into OpenGL, I wanted to make you aware of four new Quadro cards we announced yesterday, based on the Fermi architecture. Check them out in the NVIDIA booth, their performance is impressive! DHIC – Dual Host Interface Card
  3. We also announced the new Mobile Workstation solution, the 5000m. We are showing one in use in the “family room” in the “HP Innovation Zone” in our booth.
  4. Finally, Siggraph is where we introduce 3D Vision Pro as well. Again, come to the booth for more information. Now on to OpenGL!
  5. One way to view the OpenGL offerings from NVIDIA is as a tool to enable awesome visual applications to be developed through a comprehensive stack of software solutions. We offer: Cg: A shading language and effects system to develop rendering effects and techniques, and deploy them on various platforms and APIs, including OpenGL. Scenix: OpenGL based professional scene graph used in many markets today. Automotive styling, visualization, simulation, broadcast graphics, and more. Applications can quickly add features such as stereo, SDI, 30-bit color, scene distribution and interactive ray tracing Optix: Is an interactive ray-tracing engine built on top of CUDA and OpenGL. Hybrid rendering, mixing of traditional graphics rendering and ray tracing, are also enabled. OptiX integrates with SceniX. With Optix, you accelerate an existing renderer, or build a new one yourself. Complex: Maintains interactivity for large scenes as they exceed the limits of a single GPU, allowing massive data sets to be explored, using multiple GPUs in a system. The CompleX engine can be adopted by any product using OpenGL, and can be enabled immediately by an application using SceniX Parallel Nsight is an advanced debugger and analyzer fully integrated with Visual Studio. It enables you to better see what is going on with your OpenGL, CUDA, Direct3D, DirectCompute or OpenCL application.
  6. This is a close-up taken out of the Fermi Rocket Sled demo. This shows how hybrid rendering works. With traditional OpenGL rendering you generate your image, for example using SceniX, and then enhance it by using OptiX to add reflection and shadows. One of our experts on this, Tristan, is available if you have more questions on how you can do this in your application. Tristan, raise your hand please.
  7. OpenGL enables every NVIDIA business, and therefore is extremely important for us. Some of them might not be immediately obvious, I will show more detail in the upcoming slides why this is the case.
  8. Here I tried to list what recent initiatives we’ve introduced to enhance OpenGL usage, and enable you to build better, faster, more visually rich applications. First, NVIDIA continues to enhance the OpenGL API, and leverage that into OpenGL ES and WebGL. More on that later. Second, we recognize that there are different APIs, each with their own strengths to get a specific problem solved. Hence, we have and are actively working on ways for you to transfer data into and out of OpenGL into those other APIs. Third, with OpenGL we enable a long list of Quadro features, specifically aimed at the professional workstation market. The list is so long it doesn’t fit here. Hence [next slide]
  9. I continued the list here. I am not going to go through the list in detail. I do want to point out that through Quadro and OpenGL you get access to all these workstation features, a top notch stable OpenGL implementation, and awesome support from our support team. We continuously add new features, based on feedback from you, our developers and customers.
  10. OpenGL Interoperability means the ability to share data among different APIs. You can, for example, map a D3D surface as a texture or renderbuffer in OpenGL directly. Or map an OpenGL buffer object as a CUDA memory object. It is also possible to transfer data between two OpenGL contexts in a multi-GPU situation with maximum efficiency.
  11. Here is an example of interop with CUDA. The application makes OpenGL and CUDA calls. For example, process a video stream in CUDA, then transfer it over to OpenGL using interop for more processing and display. This works on a single card as well as multi-card systems. Performance between Quadro cards will be higher than between GeForce cards.
  12. This slide is almost the same as the previous one, except it shows interop between two OpenGL contexts, each talking to a separate graphics card. The application is using GPU affinity to direct rendering to a particular GPU. Again, you need interop to transfer the data from one card to the other. For example, to composite the final frame of a rendering split over many GPUs. Note that both GPU affinity and fast GL to GL interop with NV_copy_image are Quadro only solutions.
  13. Tesla is the brand for high performance computing. Tesla solutions scale from a single board solution to multi-rack mounted data centers. Because of its extreme efficiency in computing, some developers see 100x times speedup over a quad-core CPU, which enables all kinds of new applications. In scientific fields like chemistry, fluid dynamics, electromagnetics, medical imaging, weather prediction, but also in financial analysis and prediction. Obviously, with a Tesla board and a Quadro board together in a system, you can build awesome visual applications. You will need to use interop, as I just talked about, for this.
  14. Tegra is a system on a chip – a super low power complete visual computing processor. It is, or will be, deployed in many different mobile devices. OpenGL ES is a version of the OpenGL API for mobile platforms. You can think of OpenGL ES as offering that subset of OpenGL that is suitable for the capabilities of the mobile devices of today. Smart phones doesn’t need more introduction. For Cars, think of augmented driver reality, in dash navigation, a fully electronic instrument cluster like your speedometer, movie players for the kids in the back, but not for the driver, etc. Tablets are another big target market for Tegra. A handheld, lightweight computer that needs to run forever on a battery charge. Tegra is ideally suited for this application. And finally, Tegra is deployed in music players, like the Zune HD. Tegra offers a whole suite of APIs to make this all possible, including native support for OpenGL ES.
  15. We fully support OpenGL 4 and GLSL 4 on GeForce, including the Compatibility and Core profiles. Traditionally, supporting OpenGL based games has and is important, however we realize you can do much more with OpenGL than write an awesome game. So called lifestyle applications use OpenGL, like the Adobe Creative Suite, to accelerate image processing and video processing. With the upcoming release of WebGL you’ll see more and more 3D content delivered through your browser. All these kind of applications we care about, and support on GeForce.
  16. Next, OpenGL 4.0 introduces now programmability features But first a word about GLSL
  17. After Mark’s deep-dive, I’ll pull you back up into the higher level view of where OpenGL fits in as the 3D graphics API.
  18. OpenGL is the only Cross Platform 3D API. Every major Operating System provides a version or flavor of OpenGL. Windows, Mac OS, iOS, Linux and Android.
  19. OpenGL is a desktop API, as you’ve seen by now. OpenGL ES is the sister API for mobile and embedded devices. By keeping both APIs closely aligned, content can flow from there up into OpenGL enabled platforms and back down to OpenGL ES enabled platforms. WebGL was announced last year. It provides JavaScript bindings to OpenGL ES and provides plug-in less 3D graphics in a web browser. WebGL gives you access to the GPU in the system inside of a browser. Beta implementations of WebGL are already available from Mozilla, Google and Opera. For NVIDIA this means we will support and enhance OpenGL and WebGL on GeForce and OpenGL ES and WebGL on Tegra for the mobile market.
  20. Joke about quiz. This slide is a bit of an eye sore. Don’t worry if you can’t read it in the back. There will be a quiz later to make sure you caught all of it. Two points to make here – OpenGL is defined by the OpenGL ARB, the standards body responsible for moving OpenGL forward. OpenGL 4 is a collaborative effort among several companies, that also compete with each other in the market place. Without these companies working well together, there would not be an OpenGL 4. Second point I wanted to make, NVIDIA contributes the most technology. Not all of it, but most of it.
  21. As you might know, I also chair the OpenGL ARB Working group. On Monday, OpenGL 4.1 was announced by The OpenGL ARB and Khronos. In early 2008 the OpenGL ARB realized it had to change the way it is developing APIs. As a result, the ARB has become very schedule driven, and is enabling all those HW gates in those advanced GPUs we all love, at a very rapid rate, in an incremental fashion. This in turn enables you, application developers, to build the best applications out there. Here is a quick overview of what is in OpenGL 4.1.
  22. With Get program binary you can retrieve and set the binary for a program object. This enables an application to avoid the cost of compiling GLSL shaders over and over again. One usage model would be to compile shaders once after the application is installed, query the program binaries, and then store them away to be used on the next application invocation. Program binaries can also be created by offline compilers. Loading a binary can fail, for example when the HW has changed or a driver has been updated. Therefore it is advised that the GLSL source code is always available to re-compile in an event like this. OpenGL 4 has five programmable stages. Vertex, Tessellation Control, Tessellation Evaluation, Geometry and Fragment stages. Separate Shader Objects adopts a "mix-and-match" approach to specifying GLSL shaders independently for these different shader stages. Allowing the application to populate program objects with only the shader stages that best suit its needs. ES2 compatibility adds a few API commands that OpenGL ES 2.0 has, but OpenGL does not. Examples are ReleaseShaderCompiler, ShaderBinary, GetShaderPrecisionFormat and the float versions of DepthRange and ClearDepth. Plus the FIXED data type for vertex attributes . Vertex attrib 64 builds on the general 64 bit floating point support we added with OpenGL 4.0. This extension offers GLSL support and API support for providing 64 bit fp per component vertex data. ARB_viewport_array – This enables more efficient rendering if an application wants to render to several rectangles, by providing multiple viewports for the same rendering surface. The geometry shader selects which viewport to render into. ARB_shader_precision more precisely documents precision requirements for several floating point operations. It provides a minimum precision guarantee for algorithms that fall apart in low-precision cases. Note that all functionality is also available as ARB extensions, enabling OpenGL implementers to provide select pieces of functionality for older hardware, if so desired.
  23. Robustness addresses three areas. 1) Out of bounds vertex buffer accesses cannot result in termination of an application. This behavior can be turned on and off with a context creation flag. 2) Queries that return data to the application now have an explicit parameter indicating how many bytes can be returned. 3) Detection of a graphics hw reset, so that an application can then decide to re-build the objects for that context, or not. A query is provided to indicate if the current context or another context was responsible for the graphics hw reset. This is an “opt in” behavior, which you specify when creating a context Shader stencil export effectively lets the fragment shader write a value to the stencil buffer, with a GL_REPLACE stencil operation. Debug output provides a mechanism to provide much more information about what is going on in the GL. Messages are returned back to the application through a callback mechanism or a list of messages that you can query. Messages can be generated by the GL API, the GLSL shader compiler, the application, a third-party library, or a debugger. Message can be errors, a performance warning, undefined behavior, affects portability etc. The stream of messages can be controlled by filtering various message properties. CL_event offers a mechanism to more efficiently share buffers between OpenGL and OpenCL, without flushing the graphics pipeline . You can associate a OpenCL event with an OpenGL sync object and then use the existing OpenGL Sync object API to synchronize your OpenGL commands with OpenCL commands.
  24. I showed a similar slide for OpenGL 4.0 earlier in the talk. As you can see, OpenGL 4.1 is again a collaborative effort, with NVIDIA again contributing the most technology. In fact, we’ve done that for all of OpenGL 3 as well.
  25. Come to the OpenGL BOF – and learn more about OpenGL 4.1, GLSL 4.1, Viewperf 11, updates to the OpenGL Ecosystem, and an awesome gDEBugger demonstration. To entice you to come, there will be free beer and soda, as well as some awesome give away prices, including a Quadro 5000 as a giveaway, just announced yesterday!