A Proposal for OpenGL 1.4 Matt Craighead NVIDIA Corporation

Size: px
Start display at page:

Download "A Proposal for OpenGL 1.4 Matt Craighead NVIDIA Corporation"

Transcription

1 1. Introduction A Proposal for OpenGL 1.4 Matt Craighead NVIDIA Corporation mcraighead@nvidia.com This document proposes OpenGL 1.4. This standard, if adopted by the ARB, would build on the successful base of OpenGL 1.3 by incorporating a set of proven extensions into the core specification. Standardizing OpenGL 1.4 is compatible with efforts to standardize OpenGL 2.0. We believe OpenGL 1.4 provides an improved feature set for OpenGL 2.0 standardization. There is no reason to believe that OpenGL 1.4 will present a significant distraction from work on OpenGL 2.0, as demonstrated by the rapid ratification, adoption, and rollout of OpenGL 1.3. Realistically, an OpenGL 2.0 standard is some time off. The OpenGL 1.4 standard serves the interests of OpenGL in the interim between now and OpenGL 2.0 s standardization and widespread adoption. We believe that the standardization of OpenGL 1.4 can occur quickly and without adversely affecting the OpenGL 2.0 efforts if OpenGL 1.4 focuses on standardizing existing proven extensions. OpenGL 1.3 showed how this can be done rapidly. There was a substantial body of existing ARB extensions to work from, and there was general consensus about which ones made sense to standardize and which ones did not. NVIDIA believes a similar consensus can be reached today for OpenGL 1.4. This proposal presents a coherent set of proven extensions that are well-qualified to be added as new core OpenGL features. There are good reasons for an OpenGL 1.4. OpenGL has, in numerous areas, fallen behind Direct3D in functionality; standardizing new functionality keeps OpenGL competitive. Some of the extensions we propose match functionality available in Direct3D; others add functionality beyond what Direct3D offers. And, in general, standardizing new functionality as part of the core OpenGL standard drives the adoption of new features far more rapidly than if those features are exposed only through extensions. 2. Criteria for Including New Extensions NVIDIA has identified the following criteria for deciding which features to add and not to add. None of these criteria should be taken as a deciding factor all by itself, but each Copyright 2001, NVIDIA Corporation Page 1 of 7

2 one is important. The criteria are listed in order of importance, from most important to least. Consider extensions with shipping, proven implementations from three or more vendors; extensions with no shipping implementations should not be considered. Prefer ARB and EXT extensions over vendor extensions. Avoid extensions with outstanding intellectual property concerns. Avoid functionality exposed by different extensions in divergent ways. Consider extensions that bring OpenGL closer to parity with Direct3D or fix significant deficiencies in OpenGL. Prefer extensions used by real applications. 3. Vertex Programmability The topic of vertex programmability deserves mention. It has been proposed that OpenGL 1.4 might standardize vertex programmability in OpenGL. This proposal does not include any vertex programmability extensions. While standardizing vertex programmability might appear to give OpenGL 1.4 a single killer feature, it would in fact threaten the very goals of this proposal especially the goal that the proposal could be adopted quickly. Examining the criteria above puts the issue in perspective. There is currently no vertex programmability extension implemented by three or more OpenGL vendors. There are several different proposals. The feature is clearly controversial. Additionally, the feature is not free of intellectual property concerns. NVIDIA recommends that the ARB continue to consider vertex programmability in parallel with this proposal, waiting until a single final proposal emerges and the intellectual property concerns are addressed. Until then, it is better to agree to leave vertex programmability for a future standard rather than jeopardize this opportunity to adopt a new standard quickly. 4. Proposed OpenGL 1.4 Feature Set The extensions NVIDIA recommends for inclusion in OpenGL 1.4 are the following: ARB_depth_texture ARB_point_parameters ARB_shadow ARB_window_pos EXT_fog_coord EXT_multi_draw_arrays EXT_secondary_color EXT_stencil_wrap EXT_texture_lod_bias NV_blend_square Copyright 2001, NVIDIA Corporation Page 2 of 7

3 SGIS_generate_mipmap Our reasoning in choosing each of these extensions follows. We attempt to list vendors that support each particular extension based on available information. ARB_depth_texture, ARB_shadow: The only mechanism that OpenGL currently supports for rendering arbitrary shadows is stencil shadow volumes. While shadow volumes work, they are complicated to implement correctly and impose a significant burden on the CPU for shadow volume computation. Shadow maps provide a useful alternative mechanism for rendering shadows. Pixar s RenderMan and numerous other software renderers use shadow maps as the basis for their shadow generation. Shadow mapping techniques are well-developed. Although these two extensions have not yet been approved by the ARB, Brian Paul has written ARB proposals based on the existing SGIX extensions. The SGIX_depth_texture and SGIX_shadow extensions have existed for years on SGI s RealityEngine and InfiniteReality systems. Brian Paul s ARB proposals address the couple of minor specification issues with the original SGIX specifications. Brian has also proposed an ARB version of SGIX_shadow_ambient. NVIDIA considers this extension controversial because it requires an extra dedicated per-texture unit blend operation. Existing ARB_texture_env extensions and other extensions provide more general ways to account for ambient terms. The ARB_shadow_ambient extension is useful and should be approved as an ARB standard, but is not justified for inclusion in the core OpenGL standard. Mesa, NVIDIA, and SGI support this functionality. Note that DirectX 8 does not support this feature. ARB_point_parameters: In its EXT form, this functionality has been a de facto standard feature for some time, starting with its inclusion in the Quake2 engine. It is useful for particle effects. DirectX 7 also supports the functionality. The widespread support for and usage of this feature single it out as a good candidate for being adopted as a core API feature. ATI, Mesa, NVIDIA, SGI, and other OpenGL implementations support this functionality. ARB_window_pos: This extension has not yet been adopted officially by the ARB, but it solves numerous long-standing gripes about OpenGL raster positions that have widely been recognized as flaws in the API both regarding the unintuitive need to disable all transform and lighting functionality before calling glrasterpos, and glrasterpos s behavior with respect to clipping. In turn, applications have been compelled to use strange workarounds for these problems, such as the glbitmap hack for moving the raster position outside the viewport. This extension requires no special hardware support. Copyright 2001, NVIDIA Corporation Page 3 of 7

4 Mesa implements this extension today. EXT_fog_coord: DirectX 5 allows applications to specify a fog blend factor using the alpha component of the secondary color. Though this design decision has been criticized as unintuitive, it remains useful functionality. EXT_fog_coord goes one step further by allowing applications to specify a per-vertex fog distance. GL_LINEAR fog can be used to match DirectX 5 s fog factor functionality. ATI, IBM, Mesa, NVIDIA, and other OpenGL vendors support this extension today. NVIDIA recommends that the eye distance and fog coordinate vertex processing outputs be folded into a single fog coordinate output. The present behavior creates unnecessary extra state and poses an implementation burden, especially if glrasterpos is implemented in hardware. EXT_multi_draw_arrays: This extension provides a faster interface for applications to submit multiple groups of primitives. The most obvious application for it is to submit several triangle strips at once, reducing the significant API overhead from calling into OpenGL multiple times and avoiding the use of degenerate triangles (which also cost performance). It can also allow implementations to process larger batches of data at a time. IBM, NVIDIA, Sun, and other OpenGL vendors support this extension today. NVIDIA recommends that, as part of adopting this extension, a new glmultidrawrangeelements entry point be added that takes a single start and end value for all of the groups of primitives submitted. This allows for many additional driver optimizations. (Adding pointers to arrays of start and end values is clumsier and will likely force drivers to simply traverse these arrays to find the real minimum and maximum index in order to take advantage of vertex reuse across many primitives.) EXT_secondary_color: Although separate specular color, introduced in OpenGL 1.2, was a welcome addition to the API, OpenGL still lacks parity with DirectX 5 in that applications not using GL lighting cannot specify their own per-vertex secondary color. This extension can also play a role in fragment programmability by providing applications with another interpolated color. ATI, IBM, Mesa, NVIDIA, and other OpenGL implementations support this extension today. EXT_stencil_wrap: These stencil modes are useful in many circumstances, not the least of which is for stencil shadow volumes. These modes are in DirectX 6 and beyond. ATI, IBM, Matrox, Mesa, NVIDIA, 3Dlabs, S3, and other OpenGL implementations support this extension today. Copyright 2001, NVIDIA Corporation Page 4 of 7

5 EXT_texture_lod_bias: This feature has been supported in Direct3D since at least DirectX 6. Uses for this extension include allowing applications to make interesting performance/image quality tradeoffs; sharpening textures before applying accumulation buffer antialiasing; producing a generally blurry look as a special effect; and many other possibilities. Apple, ATI, Mesa, NVIDIA, and other OpenGL implementations support this extension today. Most DirectX 6-capable hardware supports this functionality. NVIDIA recommends that this feature be adopted without adding a per-texture-object LOD bias. We believe that this is not widely useful, and that in most circumstances this extra state will simply add overhead. On the other hand, having a single texture bound with multiple LOD biases is useful in some applications. We are willing to consider adding this per-texture-object LOD bias, but we prefer that it be omitted unless some compelling justification exists. NV_blend_square: This extension cleans up a small non-orthogonality in the OpenGL API by allowing all of the blend factors to be used for both source and destination (with the exception of source alpha saturate as destination factor). DirectX 5 and beyond have supported this feature. The most obvious application for this is for certain shader effects where an additional squaring is desired to produce a power term, but it can be used for other purposes at well. Although this is a vendor extension, we believe that this is a worthwhile feature to add. It should also be noted that the current limitation is confusing to many; some developers have even remarked that they had long been using NV_blend_square without even realizing that it was an extension! Mesa, NVIDIA, and other OpenGL implementations implement this extension. Most DirectX 5-capable hardware supports the functionality. SGIS_generate_mipmap: Although GLU has long supported building mipmaps automatically, this extension is worthwhile in the context of dynamic textures, especially when glcopyteximage and/or the render-to-texture extensions are used. NVIDIA has also found that, in many cases, its own implementation of this extension outperforms GLU in constructing mipmaps. Though this is a vendor extension, we believe that it should be included as well. ATI, Mesa, NVIDIA, and SGI support this extension today. NVIDIA recommends that this extension be amended to state that no texture levels beyond TEXTURE_MAX_LEVEL are constructed. This may present a possible backwards compatibility dilemma, and as a result it may be necessary to add a new parameter, but the current behavior does seem to be somewhat inconsistent with the intent of the base level/max level functionality. NVIDIA would appreciate feedback from other vendors on this issue. Copyright 2001, NVIDIA Corporation Page 5 of 7

6 NVIDIA is open to the inclusion of other extensions, but believes that, for an extension to be considered, it should meet most or all of the criteria listed in Section 2. We would also like to see the extensions above adopted unmodified whenever possible, except as noted; changing them will increase the implementation burden of the new specification and may jeopardize the timely standardization of OpenGL What Needs to be Done? The new features need to be integrated into the core OpenGL specification. In general, the existing extension specifications adequately explain how the specification needs to be updated, but in some cases they may be missing some details or may turn out to have unforeseen interactions with other features. Conformance tests need to be written for each of the new features. Such tests need to be sufficiently detailed to ensure that each new feature is essentially working, but not so detailed as to prevent vendors from implementing the features in good faith. The ARB should officially approve these conformance tests once they are written. NVIDIA volunteers to help Jon Leech at SGI with updating the OpenGL specification however Jon sees fit. NVIDIA also volunteers to lead the effort to specify conformance tests for OpenGL 1.4 and to implement all such tests. NVIDIA proposes a preliminary deadline that final draft -quality versions of the specification and conformance tests be finished no later than the March 2002 ARB meeting, assuming that the ARB can agree on the functionality soon. There are also questions as to how OpenGL 1.4 ought to be launched, promoted, etc., but these are beyond the scope of this whitepaper. We hope that by SIGGRAPH 2002, Mesa and multiple other OpenGL implementations of OpenGL 1.4 will be available. 6. Conclusion and Call to Action This proposal for OpenGL 1.4 adds a number of proven features to the core OpenGL API, helping to ensure that OpenGL is up-to-date and competitive. NVIDIA urges that this proposal be expedited. Specifically, we would like the ARB to hold a non-binding vote on whether to move forward on this functionality at the December 2001 meeting, and would then like to press for a deadline of rolling out OpenGL 1.4 no later than, and hopefully earlier than, SIGGRAPH NVIDIA pledges to commit the resources necessary to get the job done. NVIDIA also urges the ARB to move rapidly to adopt those ARB extensions suggested as features within this proposal, namely, ARB_depth_texture, ARB_shadow, and ARB_window_pos. Reaching agreement on these features as soon as possible will not only assist in achieving an aggressive OpenGL 1.4 schedule, but also enlarge the base of ARB-endorsed extensions, a benefit in its own right. Copyright 2001, NVIDIA Corporation Page 6 of 7

7 Finally, this proposal should not be held up by either the concern that it will delay OpenGL 2.0 (for we believe it will do nothing of the sort) or that the proposal does not include vertex program functionality (for the reasons stated earlier). When the ARB comes to a resolution of the issues surrounding vertex programmability, we suggest rolling it into a possible OpenGL 1.5 specification. Copyright 2001, NVIDIA Corporation Page 7 of 7

Graphics Pipeline & APIs

Graphics Pipeline & APIs Graphics Pipeline & APIs CPU Vertex Processing Rasterization Fragment Processing glclear (GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT); glpushmatrix (); gltranslatef (-0.15, -0.15, solidz); glmaterialfv(gl_front,

More information

Rationale for Non-Programmable Additions to OpenGL 2.0

Rationale for Non-Programmable Additions to OpenGL 2.0 Rationale for Non-Programmable Additions to OpenGL 2.0 NVIDIA Corporation March 23, 2004 This white paper provides a rationale for a set of functional additions to the 2.0 revision of the OpenGL graphics

More information

Graphics Pipeline & APIs

Graphics Pipeline & APIs 3 2 4 Graphics Pipeline & APIs CPU Vertex Processing Rasterization Processing glclear (GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT); glpushmatrix (); gltranslatef (-0.15, -0.15, solidz); glmaterialfv(gl_front,

More information

Introduction to the OpenGL Shading Language

Introduction to the OpenGL Shading Language Introduction to the OpenGL Shading Language Randi Rost Director of Developer Relations, 3Dlabs 08-Dec-2005 1 Why use graphics programmability? Graphics hardware has changed radically Fixed functionality

More information

Mention driver developers in the room. Because of time this will be fairly high level, feel free to come talk to us afterwards

Mention driver developers in the room. Because of time this will be fairly high level, feel free to come talk to us afterwards 1 Introduce Mark, Michael Poll: Who is a software developer or works for a software company? Who s in management? Who knows what the OpenGL ARB standards body is? Mention driver developers in the room.

More information

Graphics Hardware, Graphics APIs, and Computation on GPUs. Mark Segal

Graphics Hardware, Graphics APIs, and Computation on GPUs. Mark Segal Graphics Hardware, Graphics APIs, and Computation on GPUs Mark Segal Overview Graphics Pipeline Graphics Hardware Graphics APIs ATI s low-level interface for computation on GPUs 2 Graphics Hardware High

More information

1.2.3 The Graphics Hardware Pipeline

1.2.3 The Graphics Hardware Pipeline Figure 1-3. The Graphics Hardware Pipeline 1.2.3 The Graphics Hardware Pipeline A pipeline is a sequence of stages operating in parallel and in a fixed order. Each stage receives its input from the prior

More information

E.Order of Operations

E.Order of Operations Appendix E E.Order of Operations This book describes all the performed between initial specification of vertices and final writing of fragments into the framebuffer. The chapters of this book are arranged

More information

Lecture 2. Shaders, GLSL and GPGPU

Lecture 2. Shaders, GLSL and GPGPU Lecture 2 Shaders, GLSL and GPGPU Is it interesting to do GPU computing with graphics APIs today? Lecture overview Why care about shaders for computing? Shaders for graphics GLSL Computing with shaders

More information

Grafica Computazionale: Lezione 30. Grafica Computazionale. Hiding complexity... ;) Introduction to OpenGL. lezione30 Introduction to OpenGL

Grafica Computazionale: Lezione 30. Grafica Computazionale. Hiding complexity... ;) Introduction to OpenGL. lezione30 Introduction to OpenGL Grafica Computazionale: Lezione 30 Grafica Computazionale lezione30 Introduction to OpenGL Informatica e Automazione, "Roma Tre" May 20, 2010 OpenGL Shading Language Introduction to OpenGL OpenGL (Open

More information

Hardware-driven visibility culling

Hardware-driven visibility culling Hardware-driven visibility culling I. Introduction 20073114 김정현 The goal of the 3D graphics is to generate a realistic and accurate 3D image. To achieve this, it needs to process not only large amount

More information

Shadow Mapping. Render Scene and Access the Depth Texture. What is Projective Texturing? About Projective Texturing (1) About Projective Texturing (3)

Shadow Mapping. Render Scene and Access the Depth Texture. What is Projective Texturing? About Projective Texturing (1) About Projective Texturing (3) Render Scene and Access the Depth Texture Shadow Mapping Cass Everitt NVIDIA Corporation cass@nvidia.com Realizing the theory in practice Fragment s light position can be generated using eye-linear texture

More information

Building scalable 3D applications. Ville Miettinen Hybrid Graphics

Building scalable 3D applications. Ville Miettinen Hybrid Graphics Building scalable 3D applications Ville Miettinen Hybrid Graphics What s going to happen... (1/2) Mass market: 3D apps will become a huge success on low-end and mid-tier cell phones Retro-gaming New game

More information

Real-Time Rendering (Echtzeitgraphik) Michael Wimmer

Real-Time Rendering (Echtzeitgraphik) Michael Wimmer Real-Time Rendering (Echtzeitgraphik) Michael Wimmer wimmer@cg.tuwien.ac.at Walking down the graphics pipeline Application Geometry Rasterizer What for? Understanding the rendering pipeline is the key

More information

Mattan Erez. The University of Texas at Austin

Mattan Erez. The University of Texas at Austin EE382V: Principles in Computer Architecture Parallelism and Locality Fall 2008 Lecture 10 The Graphics Processing Unit Mattan Erez The University of Texas at Austin Outline What is a GPU? Why should we

More information

CS 4620 Program 3: Pipeline

CS 4620 Program 3: Pipeline CS 4620 Program 3: Pipeline out: Wednesday 14 October 2009 due: Friday 30 October 2009 1 Introduction In this assignment, you will implement several types of shading in a simple software graphics pipeline.

More information

CS450/550. Pipeline Architecture. Adapted From: Angel and Shreiner: Interactive Computer Graphics6E Addison-Wesley 2012

CS450/550. Pipeline Architecture. Adapted From: Angel and Shreiner: Interactive Computer Graphics6E Addison-Wesley 2012 CS450/550 Pipeline Architecture Adapted From: Angel and Shreiner: Interactive Computer Graphics6E Addison-Wesley 2012 0 Objectives Learn the basic components of a graphics system Introduce the OpenGL pipeline

More information

X. GPU Programming. Jacobs University Visualization and Computer Graphics Lab : Advanced Graphics - Chapter X 1

X. GPU Programming. Jacobs University Visualization and Computer Graphics Lab : Advanced Graphics - Chapter X 1 X. GPU Programming 320491: Advanced Graphics - Chapter X 1 X.1 GPU Architecture 320491: Advanced Graphics - Chapter X 2 GPU Graphics Processing Unit Parallelized SIMD Architecture 112 processing cores

More information

20 Years of OpenGL. Kurt Akeley. Copyright Khronos Group, Page 1

20 Years of OpenGL. Kurt Akeley. Copyright Khronos Group, Page 1 20 Years of OpenGL Kurt Akeley Copyright Khronos Group, 2010 - Page 1 So many deprecations! Application-generated object names Color index mode SL versions 1.10 and 1.20 Begin / End primitive specification

More information

Introduction to OpenGL ES 3.0

Introduction to OpenGL ES 3.0 Introduction to OpenGL ES 3.0 Eisaku Ohbuchi Digital Media Professionals Inc. 2012 Digital Media Professionals Inc. All rights reserved. 12/Sep/2012 Page 1 Agenda DMP overview (quick!) OpenGL ES 3.0 update

More information

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský

Real - Time Rendering. Graphics pipeline. Michal Červeňanský Juraj Starinský Real - Time Rendering Graphics pipeline Michal Červeňanský Juraj Starinský Overview History of Graphics HW Rendering pipeline Shaders Debugging 2 History of Graphics HW First generation Second generation

More information

Introduction to Shaders.

Introduction to Shaders. Introduction to Shaders Marco Benvegnù hiforce@gmx.it www.benve.org Summer 2005 Overview Rendering pipeline Shaders concepts Shading Languages Shading Tools Effects showcase Setup of a Shader in OpenGL

More information

Tutorial on GPU Programming #2. Joong-Youn Lee Supercomputing Center, KISTI

Tutorial on GPU Programming #2. Joong-Youn Lee Supercomputing Center, KISTI Tutorial on GPU Programming #2 Joong-Youn Lee Supercomputing Center, KISTI Contents Graphics Pipeline Vertex Programming Fragment Programming Introduction to Cg Language Graphics Pipeline The process to

More information

Next-Generation Graphics on Larrabee. Tim Foley Intel Corp

Next-Generation Graphics on Larrabee. Tim Foley Intel Corp Next-Generation Graphics on Larrabee Tim Foley Intel Corp Motivation The killer app for GPGPU is graphics We ve seen Abstract models for parallel programming How those models map efficiently to Larrabee

More information

Parallelizing Graphics Pipeline Execution (+ Basics of Characterizing a Rendering Workload)

Parallelizing Graphics Pipeline Execution (+ Basics of Characterizing a Rendering Workload) Lecture 2: Parallelizing Graphics Pipeline Execution (+ Basics of Characterizing a Rendering Workload) Visual Computing Systems Today Finishing up from last time Brief discussion of graphics workload metrics

More information

Shaders CSCI 4239/5239 Advanced Computer Graphics Spring 2014

Shaders CSCI 4239/5239 Advanced Computer Graphics Spring 2014 Shaders CSCI 4239/5239 Advanced Computer Graphics Spring 2014 What is a Shader? Wikipedia: A shader is a computer program used in 3D computer graphics to determine the final surface properties of an object

More information

RSX Best Practices. Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog

RSX Best Practices. Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog RSX Best Practices Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog RSX Best Practices About libgcm Using the SPUs with the RSX Brief overview of GCM Replay December 7 th, 2004

More information

Graphics Performance Optimisation. John Spitzer Director of European Developer Technology

Graphics Performance Optimisation. John Spitzer Director of European Developer Technology Graphics Performance Optimisation John Spitzer Director of European Developer Technology Overview Understand the stages of the graphics pipeline Cherchez la bottleneck Once found, either eliminate or balance

More information

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics

Graphics Hardware. Graphics Processing Unit (GPU) is a Subsidiary hardware. With massively multi-threaded many-core. Dedicated to 2D and 3D graphics Why GPU? Chapter 1 Graphics Hardware Graphics Processing Unit (GPU) is a Subsidiary hardware With massively multi-threaded many-core Dedicated to 2D and 3D graphics Special purpose low functionality, high

More information

Graphics Processing Unit Architecture (GPU Arch)

Graphics Processing Unit Architecture (GPU Arch) Graphics Processing Unit Architecture (GPU Arch) With a focus on NVIDIA GeForce 6800 GPU 1 What is a GPU From Wikipedia : A specialized processor efficient at manipulating and displaying computer graphics

More information

Optimisation. CS7GV3 Real-time Rendering

Optimisation. CS7GV3 Real-time Rendering Optimisation CS7GV3 Real-time Rendering Introduction Talk about lower-level optimization Higher-level optimization is better algorithms Example: not using a spatial data structure vs. using one After that

More information

Why modern versions of OpenGL should be used Some useful API commands and extensions

Why modern versions of OpenGL should be used Some useful API commands and extensions Michał Radziszewski Why modern versions of OpenGL should be used Some useful API commands and extensions Timer Query EXT Direct State Access (DSA) Geometry Programs Position in pipeline Rendering wireframe

More information

CS451Real-time Rendering Pipeline

CS451Real-time Rendering Pipeline 1 CS451Real-time Rendering Pipeline JYH-MING LIEN DEPARTMENT OF COMPUTER SCIENCE GEORGE MASON UNIVERSITY Based on Tomas Akenine-Möller s lecture note You say that you render a 3D 2 scene, but what does

More information

DEFERRED RENDERING STEFAN MÜLLER ARISONA, ETH ZURICH SMA/

DEFERRED RENDERING STEFAN MÜLLER ARISONA, ETH ZURICH SMA/ DEFERRED RENDERING STEFAN MÜLLER ARISONA, ETH ZURICH SMA/2013-11-04 DEFERRED RENDERING? CONTENTS 1. The traditional approach: Forward rendering 2. Deferred rendering (DR) overview 3. Example uses of DR:

More information

Rasterization Overview

Rasterization Overview Rendering Overview The process of generating an image given a virtual camera objects light sources Various techniques rasterization (topic of this course) raytracing (topic of the course Advanced Computer

More information

CHAPTER 1 Graphics Systems and Models 3

CHAPTER 1 Graphics Systems and Models 3 ?????? 1 CHAPTER 1 Graphics Systems and Models 3 1.1 Applications of Computer Graphics 4 1.1.1 Display of Information............. 4 1.1.2 Design.................... 5 1.1.3 Simulation and Animation...........

More information

3D Computer Games Technology and History. Markus Hadwiger VRVis Research Center

3D Computer Games Technology and History. Markus Hadwiger VRVis Research Center 3D Computer Games Technology and History VRVis Research Center Lecture Outline Overview of the last ten years A look at seminal 3D computer games Most important techniques employed Graphics research and

More information

Overview Discussion September 2001 Copyright 3Dlabs, Page 1

Overview Discussion September 2001 Copyright 3Dlabs, Page 1 Future Directions Overview Discussion September 2001 Copyright 3Dlabs, 2000 - Page 1 Agenda Cooperative discussion for the future of OpenGL Setting the scene - Why we think OpenGL needs to quickly make

More information

Shaders CSCI 4229/5229 Computer Graphics Fall 2017

Shaders CSCI 4229/5229 Computer Graphics Fall 2017 Shaders CSCI 4229/5229 Computer Graphics Fall 2017 What is a Shader? A shader is a computer program that runs on the GPU to calculate the properties of vertexes, pixels and other graphical processing Examples:

More information

December 11, 2001 Copyright 3Dlabs, Page 1

December 11, 2001 Copyright 3Dlabs, Page 1 Status Update December 11, 2001 Copyright 3Dlabs, 2001 - Page 1 OpenGL 2.0 Progress Update White Papers Followed timeline established at September ARB meeting Distributed to identified reviewers in mid-october

More information

API Background. Prof. George Wolberg Dept. of Computer Science City College of New York

API Background. Prof. George Wolberg Dept. of Computer Science City College of New York API Background Prof. George Wolberg Dept. of Computer Science City College of New York Objectives Graphics API history OpenGL API OpenGL function format Immediate Mode vs Retained Mode Examples The Programmer

More information

Chapter 7 - Light, Materials, Appearance

Chapter 7 - Light, Materials, Appearance Chapter 7 - Light, Materials, Appearance Types of light in nature and in CG Shadows Using lights in CG Illumination models Textures and maps Procedural surface descriptions Literature: E. Angel/D. Shreiner,

More information

Real-Time Graphics Architecture

Real-Time Graphics Architecture Real-Time Graphics Architecture Kurt Akeley Pat Hanrahan http://www.graphics.stanford.edu/courses/cs448a-01-fall Geometry Outline Vertex and primitive operations System examples emphasis on clipping Primitive

More information

Programmable GPUS. Last Time? Reading for Today. Homework 4. Planar Shadows Projective Texture Shadows Shadow Maps Shadow Volumes

Programmable GPUS. Last Time? Reading for Today. Homework 4. Planar Shadows Projective Texture Shadows Shadow Maps Shadow Volumes Last Time? Programmable GPUS Planar Shadows Projective Texture Shadows Shadow Maps Shadow Volumes frame buffer depth buffer stencil buffer Stencil Buffer Homework 4 Reading for Create some geometry "Rendering

More information

Cornell University CS 569: Interactive Computer Graphics. Introduction. Lecture 1. [John C. Stone, UIUC] NASA. University of Calgary

Cornell University CS 569: Interactive Computer Graphics. Introduction. Lecture 1. [John C. Stone, UIUC] NASA. University of Calgary Cornell University CS 569: Interactive Computer Graphics Introduction Lecture 1 [John C. Stone, UIUC] 2008 Steve Marschner 1 2008 Steve Marschner 2 NASA University of Calgary 2008 Steve Marschner 3 2008

More information

Direct Rendering of Trimmed NURBS Surfaces

Direct Rendering of Trimmed NURBS Surfaces Direct Rendering of Trimmed NURBS Surfaces Hardware Graphics Pipeline 2/ 81 Hardware Graphics Pipeline GPU Video Memory CPU Vertex Processor Raster Unit Fragment Processor Render Target Screen Extended

More information

Real-Time Graphics Architecture

Real-Time Graphics Architecture Real-Time Graphics Architecture Kurt Akeley Pat Hanrahan http://www.graphics.stanford.edu/courses/cs448a-01-fall The OpenGL Graphics System Outline Introduction and history Block diagrams Goals and approaches

More information

Comparing Reyes and OpenGL on a Stream Architecture

Comparing Reyes and OpenGL on a Stream Architecture Comparing Reyes and OpenGL on a Stream Architecture John D. Owens Brucek Khailany Brian Towles William J. Dally Computer Systems Laboratory Stanford University Motivation Frame from Quake III Arena id

More information

Spring 2011 Prof. Hyesoon Kim

Spring 2011 Prof. Hyesoon Kim Spring 2011 Prof. Hyesoon Kim Application Geometry Rasterizer CPU Each stage cane be also pipelined The slowest of the pipeline stage determines the rendering speed. Frames per second (fps) Executes on

More information

Standards Readiness Criteria. Tier 2

Standards Readiness Criteria. Tier 2 Document Number: HITSP 06 N 85 Date: June 1, 2006 Standards Readiness Criteria Tier 2 Version 1.0 May 12, 2006 HITSP Standards Harmonization Committee V 1.0 (5/12/2006) 1 Introduction...3 Background Information...3

More information

Lecturer Athanasios Nikolaidis

Lecturer Athanasios Nikolaidis Lecturer Athanasios Nikolaidis Computer Graphics: Graphics primitives 2D viewing and clipping 2D and 3D transformations Curves and surfaces Rendering and ray tracing Illumination models Shading models

More information

SIGGRAPH Briefing August 2014

SIGGRAPH Briefing August 2014 Copyright Khronos Group 2014 - Page 1 SIGGRAPH Briefing August 2014 Neil Trevett VP Mobile Ecosystem, NVIDIA President, Khronos Copyright Khronos Group 2014 - Page 2 Significant Khronos API Ecosystem Advances

More information

Hardware-Assisted Relief Texture Mapping

Hardware-Assisted Relief Texture Mapping EUROGRAPHICS 0x / N.N. and N.N. Short Presentations Hardware-Assisted Relief Texture Mapping Masahiro Fujita and Takashi Kanai Keio University Shonan-Fujisawa Campus, Fujisawa, Kanagawa, Japan Abstract

More information

frame buffer depth buffer stencil buffer

frame buffer depth buffer stencil buffer Final Project Proposals Programmable GPUS You should all have received an email with feedback Just about everyone was told: Test cases weren t detailed enough Project was possibly too big Motivation could

More information

Early History of APIs. PHIGS and X. SGI and GL. Programming with OpenGL Part 1: Background. Objectives

Early History of APIs. PHIGS and X. SGI and GL. Programming with OpenGL Part 1: Background. Objectives Programming with OpenGL Part 1: Background Early History of APIs Objectives Development of the OpenGL API OpenGL Architecture - OpenGL as a state machine Functions - Types -Formats Simple program IFIPS

More information

Real-time Shadow Mapping

Real-time Shadow Mapping Electrical Engineering Faculty Technion Israel Institute of Technology Haifa, ISRAEL Real-time Shadow Mapping Joined Project in Computer Graphics for Rafael Armament Development Authority Igor Naigovzin

More information

Cg Toolkit. Cg 1.2 Release Notes

Cg Toolkit. Cg 1.2 Release Notes Cg Toolkit Cg 1.2 Release Notes Cg Toolkit Release Notes The Cg Toolkit allows developers to write and run Cg programs using a wide variety of hardware platforms and graphics APIs. Originally released

More information

CS 179 GPU Programming

CS 179 GPU Programming CS179: GPU Programming Lecture 7: Render to Texture Lecture originally by Luke Durant, Russell McClellan, Tamas Szalay 1 Today: Render to Texture Render to texture in OpenGL Framebuffers and renderbuffers

More information

Models and Architectures

Models and Architectures Models and Architectures Objectives Learn the basic design of a graphics system Introduce graphics pipeline architecture Examine software components for an interactive graphics system 1 Image Formation

More information

Real Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03

Real Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03 1 Real Time Rendering of Complex Height Maps Walking an infinite realistic landscape By: Jeffrey Riaboy Written 9/7/03 Table of Contents 1 I. Overview 2 II. Creation of the landscape using fractals 3 A.

More information

Rendering Objects. Need to transform all geometry then

Rendering Objects. Need to transform all geometry then Intro to OpenGL Rendering Objects Object has internal geometry (Model) Object relative to other objects (World) Object relative to camera (View) Object relative to screen (Projection) Need to transform

More information

GeForce3 OpenGL Performance. John Spitzer

GeForce3 OpenGL Performance. John Spitzer GeForce3 OpenGL Performance John Spitzer GeForce3 OpenGL Performance John Spitzer Manager, OpenGL Applications Engineering jspitzer@nvidia.com Possible Performance Bottlenecks They mirror the OpenGL pipeline

More information

Programming Graphics Hardware

Programming Graphics Hardware Tutorial 5 Programming Graphics Hardware Randy Fernando, Mark Harris, Matthias Wloka, Cyril Zeller Overview of the Tutorial: Morning 8:30 9:30 10:15 10:45 Introduction to the Hardware Graphics Pipeline

More information

OpenGL BOF Siggraph 2011

OpenGL BOF Siggraph 2011 OpenGL BOF Siggraph 2011 OpenGL BOF Agenda OpenGL 4 update Barthold Lichtenbelt, NVIDIA OpenGL Shading Language Hints/Kinks Bill Licea-Kane, AMD Ecosystem update Jon Leech, Khronos Viewperf 12, a new beginning

More information

Spring 2009 Prof. Hyesoon Kim

Spring 2009 Prof. Hyesoon Kim Spring 2009 Prof. Hyesoon Kim Application Geometry Rasterizer CPU Each stage cane be also pipelined The slowest of the pipeline stage determines the rendering speed. Frames per second (fps) Executes on

More information

Rendering Grass with Instancing in DirectX* 10

Rendering Grass with Instancing in DirectX* 10 Rendering Grass with Instancing in DirectX* 10 By Anu Kalra Because of the geometric complexity, rendering realistic grass in real-time is difficult, especially on consumer graphics hardware. This article

More information

Next Generation OpenGL Neil Trevett Khronos President NVIDIA VP Mobile Copyright Khronos Group Page 1

Next Generation OpenGL Neil Trevett Khronos President NVIDIA VP Mobile Copyright Khronos Group Page 1 Next Generation OpenGL Neil Trevett Khronos President NVIDIA VP Mobile Ecosystem @neilt3d Copyright Khronos Group 2015 - Page 1 Copyright Khronos Group 2015 - Page 2 Khronos Connects Software to Silicon

More information

PowerVR Series5. Architecture Guide for Developers

PowerVR Series5. Architecture Guide for Developers Public Imagination Technologies PowerVR Series5 Public. This publication contains proprietary information which is subject to change without notice and is supplied 'as is' without warranty of any kind.

More information

Programming with OpenGL Part 1: Background

Programming with OpenGL Part 1: Background Programming with OpenGL Part 1: Background Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts University of New Mexico 1 Objectives Development of the OpenGL API

More information

Cg Toolkit. Cg 1.4 rc 1 Release Notes

Cg Toolkit. Cg 1.4 rc 1 Release Notes Cg Toolkit Cg 1.4 rc 1 Release Notes Cg Toolkit Release Notes The Cg Toolkit allows developers to write and run Cg programs using a wide variety of hardware platforms and graphics APIs. Originally released

More information

Computer Graphics: Programming, Problem Solving, and Visual Communication

Computer Graphics: Programming, Problem Solving, and Visual Communication Computer Graphics: Programming, Problem Solving, and Visual Communication Dr. Steve Cunningham Computer Science Department California State University Stanislaus Turlock, CA 95382 copyright 2002, Steve

More information

The Transition from RenderMan to the OpenGL Shading Language (GLSL)

The Transition from RenderMan to the OpenGL Shading Language (GLSL) 1 The Transition from RenderMan to the OpenGL Shading Language (GLSL) Mike Bailey mjb@cs.oregonstate.edu This work is licensed under a Creative Commons Attribution-NonCommercial- NoDerivatives 4.0 International

More information

Supplement to Lecture 22

Supplement to Lecture 22 Supplement to Lecture 22 Programmable GPUs Programmable Pipelines Introduce programmable pipelines - Vertex shaders - Fragment shaders Introduce shading languages - Needed to describe shaders - RenderMan

More information

Evolution of GPUs Chris Seitz

Evolution of GPUs Chris Seitz Evolution of GPUs Chris Seitz Overview Concepts: Real-time rendering Hardware graphics pipeline Evolution of the PC hardware graphics pipeline: 1995-1998: Texture mapping and z-buffer 1998: Multitexturing

More information

Cg 2.0. Mark Kilgard

Cg 2.0. Mark Kilgard Cg 2.0 Mark Kilgard What is Cg? Cg is a GPU shading language C/C++ like language Write vertex-, geometry-, and fragmentprocessing kernels that execute on massively parallel GPUs Productivity through a

More information

Order Independent Transparency with Dual Depth Peeling. Louis Bavoil, Kevin Myers

Order Independent Transparency with Dual Depth Peeling. Louis Bavoil, Kevin Myers Order Independent Transparency with Dual Depth Peeling Louis Bavoil, Kevin Myers Document Change History Version Date Responsible Reason for Change 1.0 February 9 2008 Louis Bavoil Initial release Abstract

More information

2.11 Particle Systems

2.11 Particle Systems 2.11 Particle Systems 320491: Advanced Graphics - Chapter 2 152 Particle Systems Lagrangian method not mesh-based set of particles to model time-dependent phenomena such as snow fire smoke 320491: Advanced

More information

Multi-View Soft Shadows. Louis Bavoil

Multi-View Soft Shadows. Louis Bavoil Multi-View Soft Shadows Louis Bavoil lbavoil@nvidia.com Document Change History Version Date Responsible Reason for Change 1.0 March 16, 2011 Louis Bavoil Initial release Overview The Multi-View Soft Shadows

More information

Rendering Subdivision Surfaces Efficiently on the GPU

Rendering Subdivision Surfaces Efficiently on the GPU Rendering Subdivision Surfaces Efficiently on the GPU Gy. Antal, L. Szirmay-Kalos and L. A. Jeni Department of Algorithms and their Applications, Faculty of Informatics, Eötvös Loránd Science University,

More information

Shaders. Slide credit to Prof. Zwicker

Shaders. Slide credit to Prof. Zwicker Shaders Slide credit to Prof. Zwicker 2 Today Shader programming 3 Complete model Blinn model with several light sources i diffuse specular ambient How is this implemented on the graphics processor (GPU)?

More information

Rendering Algorithms: Real-time indirect illumination. Spring 2010 Matthias Zwicker

Rendering Algorithms: Real-time indirect illumination. Spring 2010 Matthias Zwicker Rendering Algorithms: Real-time indirect illumination Spring 2010 Matthias Zwicker Today Real-time indirect illumination Ray tracing vs. Rasterization Screen space techniques Visibility & shadows Instant

More information

CS427 Multicore Architecture and Parallel Computing

CS427 Multicore Architecture and Parallel Computing CS427 Multicore Architecture and Parallel Computing Lecture 6 GPU Architecture Li Jiang 2014/10/9 1 GPU Scaling A quiet revolution and potential build-up Calculation: 936 GFLOPS vs. 102 GFLOPS Memory Bandwidth:

More information

CSE 167: Introduction to Computer Graphics Lecture #5: Rasterization. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2015

CSE 167: Introduction to Computer Graphics Lecture #5: Rasterization. Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2015 CSE 167: Introduction to Computer Graphics Lecture #5: Rasterization Jürgen P. Schulze, Ph.D. University of California, San Diego Fall Quarter 2015 Announcements Project 2 due tomorrow at 2pm Grading window

More information

OpenGL. Toolkits.

OpenGL. Toolkits. http://www.opengl.org OpenGL Open Graphics Library Graphics API Delivered with UNIX, Win9x/2000/Me/Nt/Xp, Mac OS Direct3D (DirectX) is only Windows Utilizes the window system and event handling of the

More information

Advanced Shading and Texturing

Advanced Shading and Texturing Real-Time Graphics Architecture Kurt Akeley Pat Hanrahan http://www.graphics.stanford.edu/courses/cs448a-01-fall Advanced Shading and Texturing 1 Topics Features Bump mapping Environment mapping Shadow

More information

Module 13C: Using The 3D Graphics APIs OpenGL ES

Module 13C: Using The 3D Graphics APIs OpenGL ES Module 13C: Using The 3D Graphics APIs OpenGL ES BREW TM Developer Training Module Objectives See the steps involved in 3D rendering View the 3D graphics capabilities 2 1 3D Overview The 3D graphics library

More information

Real - Time Rendering. Pipeline optimization. Michal Červeňanský Juraj Starinský

Real - Time Rendering. Pipeline optimization. Michal Červeňanský Juraj Starinský Real - Time Rendering Pipeline optimization Michal Červeňanský Juraj Starinský Motivation Resolution 1600x1200, at 60 fps Hw power not enough Acceleration is still necessary 3.3.2010 2 Overview Application

More information

Pipeline Operations. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 11

Pipeline Operations. CS 4620 Lecture Steve Marschner. Cornell CS4620 Spring 2018 Lecture 11 Pipeline Operations CS 4620 Lecture 11 1 Pipeline you are here APPLICATION COMMAND STREAM 3D transformations; shading VERTEX PROCESSING TRANSFORMED GEOMETRY conversion of primitives to pixels RASTERIZATION

More information

GDC 2014 Barthold Lichtenbelt OpenGL ARB chair

GDC 2014 Barthold Lichtenbelt OpenGL ARB chair GDC 2014 Barthold Lichtenbelt OpenGL ARB chair Agenda OpenGL 4.4, news and updates - Barthold Lichtenbelt, NVIDIA Low Overhead Rendering with OpenGL - Cass Everitt, NVIDIA Copyright Khronos Group, 2010

More information

gems_ch28.qxp 2/26/ :49 AM Page 469 PART V PERFORMANCE AND PRACTICALITIES

gems_ch28.qxp 2/26/ :49 AM Page 469 PART V PERFORMANCE AND PRACTICALITIES gems_ch28.qxp 2/26/2004 12:49 AM Page 469 PART V PERFORMANCE AND PRACTICALITIES gems_ch28.qxp 2/26/2004 12:49 AM Page 470 gems_ch28.qxp 2/26/2004 12:49 AM Page 471 As GPUs become more complex, incorporating

More information

EE 4702 GPU Programming

EE 4702 GPU Programming fr 1 Final Exam Review When / Where EE 4702 GPU Programming fr 1 Tuesday, 4 December 2018, 12:30-14:30 (12:30 PM - 2:30 PM) CST Room 226 Tureaud Hall (Here) Conditions Closed Book, Closed Notes Bring one

More information

Could you make the XNA functions yourself?

Could you make the XNA functions yourself? 1 Could you make the XNA functions yourself? For the second and especially the third assignment, you need to globally understand what s going on inside the graphics hardware. You will write shaders, which

More information

Shaders in Eve Online Páll Ragnar Pálsson

Shaders in Eve Online Páll Ragnar Pálsson Shaders in Eve Online Páll Ragnar Pálsson EVE Online Eve Online Trinity First released 2003 Proprietary graphics engine DirectX 9 (DX11 on its way) Shader Model 3 (4 & 5 in development) HLSL Turning this

More information

Programmable Graphics Hardware

Programmable Graphics Hardware Programmable Graphics Hardware Outline 2/ 49 A brief Introduction into Programmable Graphics Hardware Hardware Graphics Pipeline Shading Languages Tools GPGPU Resources Hardware Graphics Pipeline 3/ 49

More information

Mattan Erez. The University of Texas at Austin

Mattan Erez. The University of Texas at Austin EE382V (17325): Principles in Computer Architecture Parallelism and Locality Fall 2007 Lecture 11 The Graphics Processing Unit Mattan Erez The University of Texas at Austin Outline What is a GPU? Why should

More information

CMT315 - Computer Graphics & Visual Computing

CMT315 - Computer Graphics & Visual Computing UNIVERSITI SAINS MALAYSIA Stamford College First Semester Examination 2004/2005 Academic Session October 2004 External Degree Programme Bachelor of Computer Science (Hons.) CMT315 - Computer Graphics &

More information

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June Optimizing and Profiling Unity Games for Mobile Platforms Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June 1 Agenda Introduction ARM and the presenter Preliminary knowledge

More information

Computer Graphics. Shadows

Computer Graphics. Shadows Computer Graphics Lecture 10 Shadows Taku Komura Today Shadows Overview Projective shadows Shadow texture Shadow volume Shadow map Soft shadows Why Shadows? Shadows tell us about the relative locations

More information

OpenGL SUPERBIBLE. Fifth Edition. Comprehensive Tutorial and Reference. Richard S. Wright, Jr. Nicholas Haemel Graham Sellers Benjamin Lipchak

OpenGL SUPERBIBLE. Fifth Edition. Comprehensive Tutorial and Reference. Richard S. Wright, Jr. Nicholas Haemel Graham Sellers Benjamin Lipchak OpenGL SUPERBIBLE Fifth Edition Comprehensive Tutorial and Reference Richard S. Wright, Jr. Nicholas Haemel Graham Sellers Benjamin Lipchak AAddison-Wesley Upper Saddle River, NJ Boston Indianapolis San

More information

A Trip Down The (2011) Rasterization Pipeline

A Trip Down The (2011) Rasterization Pipeline A Trip Down The (2011) Rasterization Pipeline Aaron Lefohn - Intel / University of Washington Mike Houston AMD / Stanford 1 This talk Overview of the real-time rendering pipeline available in ~2011 corresponding

More information