Open GL ES 2.0 An Introduction to the programmable pipeline
|
|
|
- Maximilian Cunningham
- 9 years ago
- Views:
Transcription
1 Open GL ES 2.0 An Introduction to the programmable pipeline Robert J. Simpson Architect, ATI Research. Copyright Khronos Group, Page 1
2 Outline OpenGL ES 2.0 Philosophy The shader model OpenGL ES Shading Language (GLSL ES) Example shaders Compiling s Performance Tips Roadmap for shaders Copyright Khronos Group, Page 2
3 ES 2.0 Philosophy Based on GLSL as used in OpenGL Open standard - Proven on desktop Pure programmable model - Most fixed functionality removed. Not 100% backward compatible with ES1.x - Embedded systems do not have the legacy requirements of the desktop No Software Fallback - Implementations (usually) hardware or nothing - Running graphics routines in software doesn t make sense on embedded platforms Optimized for use in Embedded devices - Aim is to reduce silicon cost - Reduced shader program sizes - Reduced register usage - Reduced numeric precision Copyright Khronos Group, Page 3
4 Copyright Khronos Group, Page 4 Existing Fixed Function Pipeline Triangles/Lines/Points API API Processing Primitive Primitive Processing Vertices Transform Transform and Lighting and Lighting Assembly Primitive Primitive Assembly Rasterizer Rasterizer Vertex Buffer Vertex Objects Buffer Objects Environment Texture Texture Environment Colour Colour Sum Sum Fog Fog Alpha Test Alpha Test Stencil Depth Depth Stencil Colour Buffer Colour Blend Buffer Blend Dither Dither Frame Frame Buffer Buffer
5 Copyright Khronos Group, Page 5 ES2.0 Programmable Pipeline Triangles/Lines/Points API API Processing Primitive Primitive Processing Vertices Vertex Vertex Assembly Primitive Primitive Assembly Rasterizer Rasterizer Vertex Buffer Vertex Objects Buffer Objects Fragment Fragment Stencil Depth Depth Stencil Colour Buffer Colour Blend Buffer Blend Dither Dither Frame Frame Buffer Buffer
6 Copyright Khronos Group, Page 6 Programmer s model Attributes Attributes (~8) (~8) Vertex Vertex Uniforms (~96) Uniforms (~96) Vertex Vertex Primitive Assembly Primitive & Assembly & Rasterize Rasterize s s (~8) (~8) Fragment Fragment Uniforms (~16) Uniforms (~16) Fragment Fragment Per-Sample Operations Per-Sample Operations
7 Copyright Khronos Group, Page 7 Vertex Uniforms Uniforms Textures Textures Attribute Attribute 0 0 Attribute Attribute 1 1 Attribute Attribute 2 2 Attribute Attribute 3 3 Attribute Attribute 4 4 Attribute Attribute 5 5 Attribute Attribute 6 6 Attribute Attribute 7 7 Vertex Vertex Temporary variables Temporary variables gl_position gl_position gl_frontfacing gl_frontfacing gl_pointsize gl_pointsize
8 Copyright Khronos Group, Page 8 Fragment Uniforms Uniforms Textures Textures gl_position gl_position gl_frontfacing gl_frontfacing gl_pointposition gl_pointposition Fragment Fragment Temporary variables Temporary variables gl_fragcolor gl_fragcolor gl_position gl_position
9 GLSL ES Overview C like language Many simplifications - No pointers - No implicit type conversion - Simplified preprocessor Some graphics-specific additions - Built-in vector and matrix types - Built-in functions Similar to desktop GLSL - Removal of most OpenGL fixed function state - Restrictions on shader complexity - Fewer sampler modes - No access to frag depth - Support for mixed precisions - More general invariance mechanism. Copyright Khronos Group, Page 9
10 Copyright Khronos Group, Page 10 GLSL ES Preprocessor Comments // /* */ Macros # #define #undef Control #if #ifdef #ifndef #else #elif #endif #error Operators defined Extensions #pragma #extension #version #line
11 Copyright Khronos Group, Page 11 GLSL ES Types Scalar void float int bool Vector - boolean bvec2 bvec3 bvec4 - integer ivec2 ivec3 ivec4 - floating point vec2 vec3 vec4 Matrix mat2 mat3 mat4 Sampler sampler2d Container struct Arrays
12 GLSL ES Storage Qualifiers GLSL ES Storage Qualifiers const - Local constants within a shader. uniform - Constant shader parameters (light position/direction, texture units, ) - Do not change per vertex. attribute - Per-vertex values (position, normal, ) varying - Generated by vertex shader - Interpolated by the rasterizer to generate per pixel values - Used as inputs to Fragment - e.g. texture coordinates Copyright Khronos Group, Page 12
13 GLSL ES Function Parameter Qualifiers Functions parameters can be used to pass values in or out or both Call by value copy in, copy out semantics. Qualifiers: in (default) out inout Can use const with in. Functions can still return a value - But use a parameter if returning an array e.g. bool f(const in vec2 v, out int a[2]) {...} Copyright Khronos Group, Page 13
14 Copyright Khronos Group, Page 14 GLSL ES Precision Qualifiers Rationale - ALU and register resources are scarce. - Many operations require only limited precision Available float precisions - lowp float - mediump float - highp float Available int precisions - lowp int - mediump int - highp int
15 GLSL ES Precision Qualifiers lowp float - Typically implemented by fixed point sign fixed point. - Range is -2.0 < x < Resolution 1/256 - Use for simple colour blending mediump float - Typically implemented by sign floating point < x < Resolution 1 part in Use for HDR blending, some texture coordinate calculations highp float - Typically implemented by 24 bit float (16 bits of mantissa) - range ± Resolution 1 part in Use of texture coordinate calculation e.g. environment mapping single precision - Not explicit in GLSL but usually available in the vertex shader Copyright Khronos Group, Page 15
16 GLSL ES Precision Qualifiers Can specify per variable or set a default. Per Variable: mediump float x; Set default: precision mediump float; Can change the default: { } precision mediump float; float x; // x is a medium precision float precision lowp float; float y; // y is a low precision float Copyright Khronos Group, Page 16
17 GLSL ES Precision Precision of a sub-expression depends entirely on the operands Evaluated at the highest precision of lowp float x; mediump float y; highp float z = x * y; // * evaluated at // medium precision Literals do not have any defined precision lowp float x; highp float z = x * ; // evaluated at // low precision Some special cases - If no operands have a precision, use outer-level sub-expression: lowp float x = 1.0 / 3.0; // evaluated at // low precision - Use default precision if required bool b = (1.0/3.0 > 0.33); // Must have default // precision defined. Copyright Khronos Group, Page 17
18 GLSL ES Constructors Replaces type casting All named types have constructors available - Includes built-in types, structs - Excludes arrays No implicit conversion: must use constructors Int to Float: int n = 1; float x,y; x = float(n); y = float(2); Concatenation: float x = 1.0,y = 2.0; vec2 v = vec2(x,y); Struct initialization struct S {int a; float b;}; S s = S(2, 3.5); Copyright Khronos Group, Page 18
19 Copyright Khronos Group, Page 19 GLSL ES Swizzle operators Use to select a set of components from a vector Can be used in L-values vec2 u,v; v.x = 2.0; float a = v.x; v.xy = u.yx; v = v.xx; v.xx = u; Component sets Use one of: xyzw rgba stpq // Assignment to single component // Component selection // swap components // replicate components // Error Indexing operator vec4 u,v; float x = u[0]; // equivalent to u.x Must use indexing operator for matrices
20 GLSL ES Features cont. Operators ! () [] - * / < <= > >= - ==!= - && ^^ -?: - = *= /= += -= Flow control - <expression>? <expression_1> : <expression_2> - if else - for while do - return break continue - discard (fragment shader only) Copyright Khronos Group, Page 20
21 Copyright Khronos Group, Page 21 GLSL Built-in in Variables Aim of ES is to reduce the amount of fixed functionality - Ideal would be a totally pure programmable model - But still need some Vertex shader - vec4 gl_position; // Write-only (required) - float gl_pointsize; // Write-only Fragment shader - vec4 gl_fragcoord; // Read-only - bool gl_frontfacing; // Read-only - vec2 gl_pointcoord; // Read-only - float gl_fragcolor; // Write only (required)
22 Copyright Khronos Group, Page 22 GLSL ES Built-in in Functions General - pow, exp2, log2, sqrt, inversesqrt - abs, sign, floor, ceil, fract, mod, min, max, clamp Trig functions - radians, degrees, sin, cos, tan, asin, acos, atan Geometric - length, distance, cross, dot, normalize, faceforward, reflect, refract Interpolations - mix(x,y,alpha) x*( 1.0-alpha) + y*alpha) - step(edge,x) x <= edge? 0.0 : smoothstep(edge0,edge1,x) t = (x-edge0)/(edge1-edge0); t = clamp( t, 0.0, 1.0); return t*t*( *t); Texture - texture1d, texture2d, texture3d, texturecube - texture1dproj, texture2dproj, texturecubeproj
23 Copyright Khronos Group, Page 23 GLSL ES Built-in in Functions Vector comparison (vecn, ivecn) - bvecn lessthan(vecn, vecn) - bvecn lessthanequal(vecn, vecn) - bvecn greaterthan(vecn, vecn) - bvecn greaterthanequal(vecn, vecn) Vector comparison (vecn, ivecn, bvecn) - bvecn equal(vecn, vecn) - bvecn notequal(vecn, vecn) Vector (bvecn) - bvecn any(bvecn) - bvecn all(bvecn) - bvecn not(bvecn) Matrix - matrixcompmult (matn, matn)
24 Copyright Khronos Group, Page 24 GLSL ES: Invariance GLSL ES: Invariance the problem the problem Consider a simple transform in the vertex shader: = w z y x p o n m l k j i h g f e d c b a w z y x x = ax + by + cz + dw But how is this calculated in practice? - There may be several possible code sequences
25 GLSL ES: Invariance e.g. MUL R1, a, x or MUL R2, b, y MUL R3, c, z MUL R4, d, w ADD R1, R1, R2 ADD R3, R3, R4 ADD R1, R1, R3 MUL R1, a, x MADD R1, b, y MADD R1, c, z MADD R1, d, w Copyright Khronos Group, Page 25
26 GLSL ES: Invariance Three reasons the result may differ: - Use of different instructions - Instructions executed in a different order - Different precisions used for intermediate results (only minimum precisions are defined) But it gets worse... Modern compilers may rearrange your code - Values may lose precision when written to a register - Sometimes it is cheaper to recalculate a value rather than store it in a register. But will it be calculated the same way? e.g. uniform sampler2d tex1, tex2;... const vec2 pos =...; vec4 col1 = texture2d(tex1, pos);... vec4 col2 = texture2d(tex2, pos);// is this the same value? gl_fragcolor = col1 col2; Copyright Khronos Group, Page 26
27 Copyright Khronos Group, Page 27 GLSL ES: Invariance The solution Solution is in three parts: invariant keyword to specify specific variables are invariant invariant varying vec3 LightPosition; - Currently can only be used on outputs Global switch to make all variable invariant #pragma STDGL invariant(all) General invariance rule within shaders. - Values of variables do not change between assignments Usage - Turn on invariance to make programs safe and easier to debug - Turn off invariance to get the maximum optimization from the compiler.
28 Copyright Khronos Group, Page 28 GLSL ES Examples: Null Vertex attribute vec4 VertexPositionIn; // Input to Vertex attribute vec4 VertexColourIn; // Input to Vertex varying vec4 VertexColorOut; // Output from Vertex shader void main() { VertexColorOut = VertexColorIn gl_position = VertexPositionIn; } Fragment varying vec4 FragmentColorIn; // Input to Fragment void main() { gl_fragcolor = FragmentColorIn; }
29 Copyright Khronos Group, Page 29 Vertex functions The vertex shader can do: - Transformation of position using model-view and projection matrices - Transformation of normals, including renormalization - Texture coordinate generation and transformation - Per-vertex lighting - Calculation of values for lighting per pixel The vertex shader cannot do: - Anything that requires information from more than one vertex - Anything that depends on connectivity. - Any triangle operations (e.g. clipping, culling) - Access colour buffer
30 Copyright Khronos Group, Page 30 Example Vertex Diffuse lighting uniform mat4 ModelViewProjectionMatrix, NormalMatrix; uniform vec4 LightSourceDiffuse, LightSourcePosition, MaterialDiffuse; attribute vec4 InputPosition, InputNormal, InputTextureCoordinates; varying vec4 VertexColour; varying vec4 TextureCoordinates; void main() { vec3 normal, lightdirection; vec4 diffuse; float NdotL; normal = normalize(normalmatrix * Normal); lightdirection = normalize(vec3(lightsourceposition)); NdotL = max(dot(normal, lightdirection), 0.0); diffuse = MaterialDiffuse * LightSourceDiffuse; VertexColor = NdotL * diffuse; TextureCoordinates = InputTextureCoordinates; gl_position = ModelViewProjectionMatrix * position; }
31 Copyright Khronos Group, Page 31 Fragment Functions The fragment shader can do: - Texture blending - Fog - Alpha testing - Dependent textures - Pixel discard - Bump and environment mapping The fragment shader cannot do: - Blending with colour buffer - ROP operations - Depth or stencil tests - Write depth
32 Copyright Khronos Group, Page 32 Example Fragment Simple Texture Blend uniform sampler2d TextureHandle; varying vec2 TextureCoordinates; varying vec4 VertexColour; void main() { vec4 texel = texture2d (TextureHandle, TextureCoordinates); gl_fragcolor = texel * VertexColour; }
33 Copyright Khronos Group, Page 33 Gooch (Vertex) uniform vec4 lightpos; varying vec3 normal; varying vec3 lightvec; varying vec3 viewvec; void main() { gl_position = gl_modelviewprojectionmatrix * gl_vertex; vec4 vert = gl_modelviewmatrix * gl_vertex; normal = gl_normalmatrix * gl_normal; lightvec = vec3(lightpos - vert); viewvec = -vec3(vert); }
34 Gooch (Fragment) uniform vec3 ambient; varying vec3 normal; varying vec3 lightvec; varying vec3 viewvec; void main(){ const float b = 0.55; const float y = 0.3; const float Ka = 1.0; const float Kd = 0.8; const float Ks = 0.9; vec3 specularcolor = vec3(1.0, 1.0, 1.0); vec3 norm = normalize(normal); vec3 L = normalize (lightvec); vec3 V = normalize (viewvec); vec3 halfangle = normalize (L + V); vec3 orange = vec3(.88,.81,.49); vec3 purple = vec3(.58,.10,.76); vec3 kcool = purple; vec3 kwarm = orange; float NdotL = dot(l, norm); float NdotH = clamp(dot(halfangle, norm), 0.0, 1.0); float specular = pow(ndoth, 64.0); float blendval = 0.5 * NdotL + 0.5; vec3 Cgooch = mix(kwarm, kcool, blendval); vec3 result = Ka * ambient + Kd * Cgooch + specularcolor * Ks * specular; } gl_fragcolor = vec4(result, 1.0); Copyright Khronos Group, Page 34
35 Gooch Copyright Khronos Group, Page 35
36 Copyright Khronos Group, Page 36 Compiling and using a shader Vertex glcreateobject glsource glcompile gldeleteobject glcreateprogramobject glattachobject Fragment glcreateobject glattachobject glsource gllinkprogram glcompile gluseprogramobject gldeleteobject gldeleteobject
37 Copyright Khronos Group, Page 37 Compiling and using a shader: : The code // Create Objects GLhandleARB programobject = glcreateprogramobjectarb(); GLhandleARB vertexobject = glcreateobjectarb(gl_vertex_shader_arb); GLhandleARB fragmentobject = glcreateobjectarb(gl_fragment_shader_arb); GLcharARB *vertexsource = readfile(vertexfilename); GLcharARB *fragmentsource = readfile(fragmentfilename); // Load code into shader objects glsourcearb(vertexobject, 1, vertexsource, NULL); glsourcearb(fragmentobject, 1, fragmentsource, NULL); glcompilearb(vertexobject); glcompilearb(fragmentobject); glattachobjectarb(programobject, vertexobject); glattachobjectarb(programobject, fragmentobject); gllinkprogramarb(programobject); gluseprogramobjectarb(programobject);
38 Performance Tips Keep fragment shaders simple - Fragment shader hardware is expensive. - Early implementations will not have good performance with complex shaders. Try to avoid using textures for function lookups. - Calculation is quite cheap, accessing textures is expensive. - This is more important with embedded devices. Minimize register usage - Embedded devices do not support the same number of registers compared with desktop devices. Spilling registers to memory is expensive. Minimize the number of shader changes - s contain a lot of state - May require the pipeline to be flushed - Use uniforms to change behaviour in preference to loading a new shader. Copyright Khronos Group, Page 38
39 Copyright Khronos Group, Page 39 Uniform s Problem: How to calculate uniforms? - e.g. how to generate inverse matrices Issues: - Want to remove legacy fixed functions from API - Embedded devices may have slow CPU or no floating point Possible solutions: - Put code in vertex shader and rely on compiler to hoist code and run only once - Put fixed functions back - Uniform shaders - Allow vertex shaders to write results to memory.
40 Copyright Khronos Group, Page 40 Uniform s Uniform Uniform API API Uniforms Uniforms Uniforms Uniforms Vertices Vertex Vertex Rasterizer PA PA & & Rasterizer Fragment Fragment Frame Frame Buffer Buffer
41 Copyright Khronos Group, Page 41 Future Directions Sample s - Enables alpha testing at per-sample resolution - Enables more of the fixed function pipeline to be removed. - Allows more programmability when using multi-sampling. - e.g. Read and write depth and stencil Object (Geometry) s - Programmable tessellation - Higher order surfaces - Procedural geometry - Possibility of accelerating many more algorithms e.g. shadows, occlusion culling.
42 Copyright Khronos Group, Page 42 Future ES Pipeline? Uniform Uniform API API Vertex Buffer Vertex Objects Buffer Objects Processing Primitive Primitive Processing Vertex Vertex Assembly Primitive Primitive Assembly Object Object Rasterizer Rasterizer Fragment Fragment Sample Sample Frame Frame Buffer Buffer
43 Any Questions? Copyright Khronos Group, Page 43
Vertex and fragment programs
Vertex and fragment programs Jon Hjelmervik email: [email protected] 1 Fixed function transform and lighting Each vertex is treated separately Affine transformation transforms the vertex by matrix multiplication
Introduction to Computer Graphics with WebGL
Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science Laboratory University of New Mexico 1 Programming
Image Processing and Computer Graphics. Rendering Pipeline. Matthias Teschner. Computer Science Department University of Freiburg
Image Processing and Computer Graphics Rendering Pipeline Matthias Teschner Computer Science Department University of Freiburg Outline introduction rendering pipeline vertex processing primitive processing
Recent Advances and Future Trends in Graphics Hardware. Michael Doggett Architect November 23, 2005
Recent Advances and Future Trends in Graphics Hardware Michael Doggett Architect November 23, 2005 Overview XBOX360 GPU : Xenos Rendering performance GPU architecture Unified shader Memory Export Texture/Vertex
CSE 564: Visualization. GPU Programming (First Steps) GPU Generations. Klaus Mueller. Computer Science Department Stony Brook University
GPU Generations CSE 564: Visualization GPU Programming (First Steps) Klaus Mueller Computer Science Department Stony Brook University For the labs, 4th generation is desirable Graphics Hardware Pipeline
The OpenGL ES Shading Language
The OpenGL ES Shading Language Language Version: 1.00 Document Revision: 17 12 May, 2009 Editor: Robert J. Simpson (Editor, version 1.00, revisions 1-11: John Kessenich) ii Copyright (c) 2006-2009 The
Shader Model 3.0. Ashu Rege. NVIDIA Developer Technology Group
Shader Model 3.0 Ashu Rege NVIDIA Developer Technology Group Talk Outline Quick Intro GeForce 6 Series (NV4X family) New Vertex Shader Features Vertex Texture Fetch Longer Programs and Dynamic Flow Control
CS418 GLSL Shader Programming Tutorial (I) Shader Introduction. Presented by : Wei-Wen Feng 3/12/2008
CS418 GLSL Shader Programming Tutorial (I) Shader Introduction Presented by : Wei-Wen Feng 3/12/2008 MP3 MP3 will be available around Spring Break Don t worry, you got two more weeks after break. Use shader
The OpenGL ES Shading Language
The OpenGL ES Shading Language Language Version: 3.10 Document Revision: 4 29 April 2015 Editor: Robert J. Simpson, Qualcomm OpenGL GLSL editor: John Kessenich, LunarG GLSL version 1.1 Authors: John Kessenich,
Introduction to GPGPU. Tiziano Diamanti [email protected]
[email protected] Agenda From GPUs to GPGPUs GPGPU architecture CUDA programming model Perspective projection Vectors that connect the vanishing point to every point of the 3D model will intersecate
LLVM for OpenGL and other stuff. Chris Lattner Apple Computer [email protected]
LLVM for OpenGL and other stuff Chris Lattner Apple Computer [email protected] OpenGL JIT OpenGL Vertex/Pixel Shaders OpenGL Pixel/Vertex Shaders Small program, provided at run-time, to be run on each
OpenGL Performance Tuning
OpenGL Performance Tuning Evan Hart ATI Pipeline slides courtesy John Spitzer - NVIDIA Overview What to look for in tuning How it relates to the graphics pipeline Modern areas of interest Vertex Buffer
Monash University Clayton s School of Information Technology CSE3313 Computer Graphics Sample Exam Questions 2007
Monash University Clayton s School of Information Technology CSE3313 Computer Graphics Questions 2007 INSTRUCTIONS: Answer all questions. Spend approximately 1 minute per mark. Question 1 30 Marks Total
GPU(Graphics Processing Unit) with a Focus on Nvidia GeForce 6 Series. By: Binesh Tuladhar Clay Smith
GPU(Graphics Processing Unit) with a Focus on Nvidia GeForce 6 Series By: Binesh Tuladhar Clay Smith Overview History of GPU s GPU Definition Classical Graphics Pipeline Geforce 6 Series Architecture Vertex
GPUs Under the Hood. Prof. Aaron Lanterman School of Electrical and Computer Engineering Georgia Institute of Technology
GPUs Under the Hood Prof. Aaron Lanterman School of Electrical and Computer Engineering Georgia Institute of Technology Bandwidth Gravity of modern computer systems The bandwidth between key components
Computer Graphics Hardware An Overview
Computer Graphics Hardware An Overview Graphics System Monitor Input devices CPU/Memory GPU Raster Graphics System Raster: An array of picture elements Based on raster-scan TV technology The screen (and
OpenGL Shading Language Course. Chapter 5 Appendix. By Jacobo Rodriguez Villar [email protected]
OpenGL Shading Language Course Chapter 5 Appendix By Jacobo Rodriguez Villar [email protected] TyphoonLabs GLSL Course 1/1 APPENDIX INDEX Using GLSL Shaders Within OpenGL Applications 2
GPU Architecture. Michael Doggett ATI
GPU Architecture Michael Doggett ATI GPU Architecture RADEON X1800/X1900 Microsoft s XBOX360 Xenos GPU GPU research areas ATI - Driving the Visual Experience Everywhere Products from cell phones to super
Optimizing AAA Games for Mobile Platforms
Optimizing AAA Games for Mobile Platforms Niklas Smedberg Senior Engine Programmer, Epic Games Who Am I A.k.a. Smedis Epic Games, Unreal Engine 15 years in the industry 30 years of programming C64 demo
GPGPU Computing. Yong Cao
GPGPU Computing Yong Cao Why Graphics Card? It s powerful! A quiet trend Copyright 2009 by Yong Cao Why Graphics Card? It s powerful! Processor Processing Units FLOPs per Unit Clock Speed Processing Power
Midgard GPU Architecture. October 2014
Midgard GPU Architecture October 2014 1 The Midgard Architecture HARDWARE EVOLUTION 2 3 Mali GPU Roadmap Mali-T760 High-Level Architecture Distributes tasks to shader cores Efficient mapping of geometry
3D Graphics and Cameras
3D Graphics and Cameras Kari Pulli Senior Director Overview OpenGL ES 1.x OpenGL ES 2.0 WebGL OpenCV FCam All examples on this session on Android OpenGL: Project vertices to camera connect them to triangles
The OpenGL Shading Language
The OpenGL Shading Language Language Version: 1.50 Document Revision: 11 04-Dec-2009 John Kessenich Version 1.1 Authors: John Kessenich, Dave Baldwin, Randi Rost Copyright (c) 2008-2009 The Khronos Group
Image Synthesis. Transparency. computer graphics & visualization
Image Synthesis Transparency Inter-Object realism Covers different kinds of interactions between objects Increasing realism in the scene Relationships between objects easier to understand Shadows, Reflections,
Overview Motivation and applications Challenges. Dynamic Volume Computation and Visualization on the GPU. GPU feature requests Conclusions
Module 4: Beyond Static Scalar Fields Dynamic Volume Computation and Visualization on the GPU Visualization and Computer Graphics Group University of California, Davis Overview Motivation and applications
Writing Applications for the GPU Using the RapidMind Development Platform
Writing Applications for the GPU Using the RapidMind Development Platform Contents Introduction... 1 Graphics Processing Units... 1 RapidMind Development Platform... 2 Writing RapidMind Enabled Applications...
Optimizing Unity Games for Mobile Platforms. Angelo Theodorou Software Engineer Unite 2013, 28 th -30 th August
Optimizing Unity Games for Mobile Platforms Angelo Theodorou Software Engineer Unite 2013, 28 th -30 th August Agenda Introduction The author and ARM Preliminary knowledge Unity Pro, OpenGL ES 3.0 Identify
Radeon HD 2900 and Geometry Generation. Michael Doggett
Radeon HD 2900 and Geometry Generation Michael Doggett September 11, 2007 Overview Introduction to 3D Graphics Radeon 2900 Starting Point Requirements Top level Pipeline Blocks from top to bottom Command
The OpenGL Shading Language
The OpenGL Shading Language Language Version: 1.30 Document Revision: 10 22-Nov-2009 John Kessenich Version 1.1 Authors: John Kessenich, Dave Baldwin, Randi Rost Copyright (c) 2008 The Khronos Group Inc.
2: Introducing image synthesis. Some orientation how did we get here? Graphics system architecture Overview of OpenGL / GLU / GLUT
COMP27112 Computer Graphics and Image Processing 2: Introducing image synthesis [email protected] 1 Introduction In these notes we ll cover: Some orientation how did we get here? Graphics system
The OpenGL R Graphics System: A Specification (Version 3.3 (Core Profile) - March 11, 2010)
The OpenGL R Graphics System: A Specification (Version 3.3 (Core Profile) - March 11, 2010) Mark Segal Kurt Akeley Editor (version 1.1): Chris Frazier Editor (versions 1.2-3.3): Jon Leech Editor (version
How To Teach Computer Graphics
Computer Graphics Thilo Kielmann Lecture 1: 1 Introduction (basic administrative information) Course Overview + Examples (a.o. Pixar, Blender, ) Graphics Systems Hands-on Session General Introduction http://www.cs.vu.nl/~graphics/
Advanced Visual Effects with Direct3D
Advanced Visual Effects with Direct3D Presenters: Mike Burrows, Sim Dietrich, David Gosselin, Kev Gee, Jeff Grills, Shawn Hargreaves, Richard Huddy, Gary McTaggart, Jason Mitchell, Ashutosh Rege and Matthias
INTRODUCTION TO RENDERING TECHNIQUES
INTRODUCTION TO RENDERING TECHNIQUES 22 Mar. 212 Yanir Kleiman What is 3D Graphics? Why 3D? Draw one frame at a time Model only once X 24 frames per second Color / texture only once 15, frames for a feature
Performance Optimization and Debug Tools for mobile games with PlayCanvas
Performance Optimization and Debug Tools for mobile games with PlayCanvas Jonathan Kirkham, Senior Software Engineer, ARM Will Eastcott, CEO, PlayCanvas 1 Introduction Jonathan Kirkham, ARM Worked with
AMD GPU Architecture. OpenCL Tutorial, PPAM 2009. Dominik Behr September 13th, 2009
AMD GPU Architecture OpenCL Tutorial, PPAM 2009 Dominik Behr September 13th, 2009 Overview AMD GPU architecture How OpenCL maps on GPU and CPU How to optimize for AMD GPUs and CPUs in OpenCL 2 AMD GPU
Computer Applications in Textile Engineering. Computer Applications in Textile Engineering
3. Computer Graphics Sungmin Kim http://latam.jnu.ac.kr Computer Graphics Definition Introduction Research field related to the activities that includes graphics as input and output Importance Interactive
A Crash Course on Programmable Graphics Hardware
A Crash Course on Programmable Graphics Hardware Li-Yi Wei Abstract Recent years have witnessed tremendous growth for programmable graphics hardware (GPU), both in terms of performance and functionality.
Computer Graphics CS 543 Lecture 12 (Part 1) Curves. Prof Emmanuel Agu. Computer Science Dept. Worcester Polytechnic Institute (WPI)
Computer Graphics CS 54 Lecture 1 (Part 1) Curves Prof Emmanuel Agu Computer Science Dept. Worcester Polytechnic Institute (WPI) So Far Dealt with straight lines and flat surfaces Real world objects include
NVPRO-PIPELINE A RESEARCH RENDERING PIPELINE MARKUS TAVENRATH [email protected] SENIOR DEVELOPER TECHNOLOGY ENGINEER, NVIDIA
NVPRO-PIPELINE A RESEARCH RENDERING PIPELINE MARKUS TAVENRATH [email protected] SENIOR DEVELOPER TECHNOLOGY ENGINEER, NVIDIA GFLOPS 3500 3000 NVPRO-PIPELINE Peak Double Precision FLOPS GPU perf improved
Developer Tools. Tim Purcell NVIDIA
Developer Tools Tim Purcell NVIDIA Programming Soap Box Successful programming systems require at least three tools High level language compiler Cg, HLSL, GLSL, RTSL, Brook Debugger Profiler Debugging
The Evolution of Computer Graphics. SVP, Content & Technology, NVIDIA
The Evolution of Computer Graphics Tony Tamasi SVP, Content & Technology, NVIDIA Graphics Make great images intricate shapes complex optical effects seamless motion Make them fast invent clever techniques
Introduction to GPU Architecture
Introduction to GPU Architecture Ofer Rosenberg, PMTS SW, OpenCL Dev. Team AMD Based on From Shader Code to a Teraflop: How GPU Shader Cores Work, By Kayvon Fatahalian, Stanford University Content 1. Three
Shadows. Shadows. Thanks to: Frédo Durand and Seth Teller MIT. Realism Depth cue
Shadows Thanks to: Frédo Durand and Seth Teller MIT 1 Shadows Realism Depth cue 2 1 Shadows as depth cue 3 Spatial relationship between objects Michael McCool Univ of Waterloo 4 2 Spatial relationship
Computer Graphics on Mobile Devices VL SS2010 3.0 ECTS
Computer Graphics on Mobile Devices VL SS2010 3.0 ECTS Peter Rautek Rückblick Motivation Vorbesprechung Spiel VL Framework Ablauf Android Basics Android Specifics Activity, Layouts, Service, Intent, Permission,
Introduction to Game Programming. Steven Osman [email protected]
Introduction to Game Programming Steven Osman [email protected] Introduction to Game Programming Introductory stuff Look at a game console: PS2 Some Techniques (Cheats?) What is a Game? Half-Life 2, Valve
DATA VISUALIZATION OF THE GRAPHICS PIPELINE: TRACKING STATE WITH THE STATEVIEWER
DATA VISUALIZATION OF THE GRAPHICS PIPELINE: TRACKING STATE WITH THE STATEVIEWER RAMA HOETZLEIN, DEVELOPER TECHNOLOGY, NVIDIA Data Visualizations assist humans with data analysis by representing information
Tutorial 9: Skeletal Animation
Tutorial 9: Skeletal Animation Summary In the last couple of tutorials, you ve seen how to create a scene graph, and implemented a simple animating cube robot using them. You re probably wondering how
A.R.I.S.E. Architectural Real-time Interactive Showing Environment. Supervisor: Scott Chase
A.R.I.S.E Architectural Real-time Interactive Showing Environment Supervisor: Scott Chase Kasper Grande, Nina T. Hansen Kasper J. Knutzen, Anders Kokholm Long T. Truong Contents A Unity 2 A.1 Unity in
Color correction in 3D environments Nicholas Blackhawk
Color correction in 3D environments Nicholas Blackhawk Abstract In 3D display technologies, as reviewers will say, color quality is often a factor. Depending on the type of display, either professional
Computer Graphics. Anders Hast
Computer Graphics Anders Hast Who am I?! 5 years in Industry after graduation, 2 years as high school teacher.! 1996 Teacher, University of Gävle! 2004 PhD, Computerised Image Processing " Computer Graphics!
GPU Architecture. An OpenCL Programmer s Introduction. Lee Howes November 3, 2010
GPU Architecture An OpenCL Programmer s Introduction Lee Howes November 3, 2010 The aim of this webinar To provide a general background to modern GPU architectures To place the AMD GPU designs in context:
NVFX : A NEW SCENE AND MATERIAL EFFECT FRAMEWORK FOR OPENGL AND DIRECTX. TRISTAN LORACH Senior Devtech Engineer SIGGRAPH 2013
NVFX : A NEW SCENE AND MATERIAL EFFECT FRAMEWORK FOR OPENGL AND DIRECTX TRISTAN LORACH Senior Devtech Engineer SIGGRAPH 2013 nvfx : Plan What is an Effect New Approach and new ideas of nvfx Examples Walkthrough
Parallel Web Programming
Parallel Web Programming Tobias Groß, Björn Meier Hardware/Software Co-Design, University of Erlangen-Nuremberg May 23, 2013 Outline WebGL OpenGL Rendering Pipeline Shader WebCL Motivation Development
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Dynamic Resolution Rendering
Dynamic Resolution Rendering Doug Binks Introduction The resolution selection screen has been one of the defining aspects of PC gaming since the birth of games. In this whitepaper and the accompanying
Scan-Line Fill. Scan-Line Algorithm. Sort by scan line Fill each span vertex order generated by vertex list
Scan-Line Fill Can also fill by maintaining a data structure of all intersections of polygons with scan lines Sort by scan line Fill each span vertex order generated by vertex list desired order Scan-Line
Web Based 3D Visualization for COMSOL Multiphysics
Web Based 3D Visualization for COMSOL Multiphysics M. Jüttner* 1, S. Grabmaier 1, W. M. Rucker 1 1 University of Stuttgart Institute for Theory of Electrical Engineering *Corresponding author: Pfaffenwaldring
GPU Shading and Rendering: Introduction & Graphics Hardware
GPU Shading and Rendering: Introduction & Graphics Hardware Marc Olano Computer Science and Electrical Engineering University of Maryland, Baltimore County SIGGRAPH 2005 Schedule Shading Technolgy 8:30
A Pipeline From COLLADA to WebGL for Skeletal Animation
A Pipeline From COLLADA to WebGL for Skeletal Animation Jeffery McRiffey, Ralph M. Butler, and Chrisila C. Pettey Computer Science Department, Middle Tennessee State University, Murfreesboro, TN, USA Abstract
Procedural Shaders: A Feature Animation Perspective
Procedural Shaders: A Feature Animation Perspective Hector Yee, Rendering Specialist, PDI/DreamWorks David Hart, Senior FX Developer, PDI/DreamWorks Arcot J. Preetham, Senior Engineer, ATI Research Motivation
Introduction GPU Hardware GPU Computing Today GPU Computing Example Outlook Summary. GPU Computing. Numerical Simulation - from Models to Software
GPU Computing Numerical Simulation - from Models to Software Andreas Barthels JASS 2009, Course 2, St. Petersburg, Russia Prof. Dr. Sergey Y. Slavyanov St. Petersburg State University Prof. Dr. Thomas
Modern Graphics Engine Design. Sim Dietrich NVIDIA Corporation [email protected]
Modern Graphics Engine Design Sim Dietrich NVIDIA Corporation [email protected] Overview Modern Engine Features Modern Engine Challenges Scene Management Culling & Batching Geometry Management Collision
Programmable Graphics Hardware
Programmable Graphics Hardware Alessandro Martinelli [email protected] 6 November 2011 Rendering Pipeline (6): Programmable Graphics Hardware Rendering Architecture First Rendering Pipeline
Silverlight for Windows Embedded Graphics and Rendering Pipeline 1
Silverlight for Windows Embedded Graphics and Rendering Pipeline 1 Silverlight for Windows Embedded Graphics and Rendering Pipeline Windows Embedded Compact 7 Technical Article Writers: David Franklin,
Real-Time BC6H Compression on GPU. Krzysztof Narkowicz Lead Engine Programmer Flying Wild Hog
Real-Time BC6H Compression on GPU Krzysztof Narkowicz Lead Engine Programmer Flying Wild Hog Introduction BC6H is lossy block based compression designed for FP16 HDR textures Hardware supported since DX11
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
Real-Time Realistic Rendering. Michael Doggett Docent Department of Computer Science Lund university
Real-Time Realistic Rendering Michael Doggett Docent Department of Computer Science Lund university 30-5-2011 Visually realistic goal force[d] us to completely rethink the entire rendering process. Cook
3D Math Overview and 3D Graphics Foundations
Freescale Semiconductor Application Note Document Number: AN4132 Rev. 0, 05/2010 3D Math Overview and 3D Graphics Foundations by Multimedia Applications Division Freescale Semiconductor, Inc. Austin, TX
Introduction to Computer Graphics
Introduction to Computer Graphics Torsten Möller TASC 8021 778-782-2215 [email protected] www.cs.sfu.ca/~torsten Today What is computer graphics? Contents of this course Syllabus Overview of course topics
How To Understand The Power Of Unity 3D (Pro) And The Power Behind It (Pro/Pro)
Optimizing Unity Games for Mobile Platforms Angelo Theodorou Software Engineer Brains Eden, 28 th June 2013 Agenda Introduction The author ARM Ltd. What do you need to have What do you need to know Identify
L20: GPU Architecture and Models
L20: GPU Architecture and Models scribe(s): Abdul Khalifa 20.1 Overview GPUs (Graphics Processing Units) are large parallel structure of processing cores capable of rendering graphics efficiently on displays.
Realtime 3D Computer Graphics Virtual Reality
Realtime 3D Computer Graphics Virtual Realit Viewing and projection Classical and General Viewing Transformation Pipeline CPU Pol. DL Pixel Per Vertex Texture Raster Frag FB object ee clip normalized device
3D Computer Games History and Technology
3D Computer Games History and Technology VRVis Research Center http://www.vrvis.at Lecture Outline Overview of the last 10-15 15 years A look at seminal 3D computer games Most important techniques employed
Lecture Notes, CEng 477
Computer Graphics Hardware and Software Lecture Notes, CEng 477 What is Computer Graphics? Different things in different contexts: pictures, scenes that are generated by a computer. tools used to make
QCD as a Video Game?
QCD as a Video Game? Sándor D. Katz Eötvös University Budapest in collaboration with Győző Egri, Zoltán Fodor, Christian Hoelbling Dániel Nógrádi, Kálmán Szabó Outline 1. Introduction 2. GPU architecture
Low power GPUs a view from the industry. Edvard Sørgård
Low power GPUs a view from the industry Edvard Sørgård 1 ARM in Trondheim Graphics technology design centre From 2006 acquisition of Falanx Microsystems AS Origin of the ARM Mali GPUs Main activities today
Volume Rendering on Mobile Devices. Mika Pesonen
Volume Rendering on Mobile Devices Mika Pesonen University of Tampere School of Information Sciences Computer Science M.Sc. Thesis Supervisor: Martti Juhola June 2015 i University of Tampere School of
OpenGL & Delphi. Max Kleiner. http://max.kleiner.com/download/openssl_opengl.pdf 1/22
OpenGL & Delphi Max Kleiner http://max.kleiner.com/download/openssl_opengl.pdf 1/22 OpenGL http://www.opengl.org Evolution of Graphics Assembler (demo pascalspeed.exe) 2D 3D Animation, Simulation (Terrain_delphi.exe)
Experiences with 2-D and 3-D Mathematical Plots on the Java Platform
Experiences with 2-D and 3-D Mathematical Plots on the Java Platform David Clayworth Maplesoft What you will learn > Techniques for writing software that plots mathematical and scientific data > How to
Graphics Cards and Graphics Processing Units. Ben Johnstone Russ Martin November 15, 2011
Graphics Cards and Graphics Processing Units Ben Johnstone Russ Martin November 15, 2011 Contents Graphics Processing Units (GPUs) Graphics Pipeline Architectures 8800-GTX200 Fermi Cayman Performance Analysis
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
Fast Arithmetic Coding (FastAC) Implementations
Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by
Interactive Computer Graphics
Interactive Computer Graphics A Top-Down Approach Using OpenGL FIFTH EDITION EDWARD ANGEL UNIVERSITY OF NEW MEXICO PEARSON Addison Wesley Boston San Francisco New York London Toronto Sydney Tokyo Singapore
Press Briefing. GDC, March 2014. Neil Trevett Vice President Mobile Ecosystem, NVIDIA President Khronos. Copyright Khronos Group 2014 - Page 1
Copyright Khronos Group 2014 - Page 1 Press Briefing GDC, March 2014 Neil Trevett Vice President Mobile Ecosystem, NVIDIA President Khronos Copyright Khronos Group 2014 - Page 2 Lots of Khronos News at
Android and OpenGL. Android Smartphone Programming. Matthias Keil. University of Freiburg
Android and OpenGL Android Smartphone Programming Matthias Keil Institute for Computer Science Faculty of Engineering 16. Dezember 2013 Outline 1 OpenGL Introduction 2 Displaying Graphics 3 Interaction
How To Use An Amd Graphics Card In Greece 2.5.1 And 2.4.1 (Amd) With Greege 2.3.5 (Greege) With An Amd Greeper 2.2.
AMD GPU Association Targeting GPUs for Load Balancing in OpenGL The contents of this document are provided in connection with Advanced Micro Devices, Inc. ( AMD ) products. THE INFORMATION IN THIS PUBLICATION
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Making natural looking Volumetric Clouds In Blender 2.48a
I think that everyone using Blender has made some trials about making volumetric clouds. The truth is that a kind of volumetric clouds is already available in Blender for a long time, thanks to the 3D
Introduction to Computer Graphics
Introduction to Computer Graphics Version 1.1, January 2016 David J. Eck Hobart and William Smith Colleges This is a PDF version of a free, on-line book that is available at http://math.hws.edu/graphicsbook/.
Optimization for DirectX9 Graphics. Ashu Rege
Optimization for DirectX9 Graphics Ashu Rege Last Year: Batch, Batch, Batch Moral of the story: Small batches BAD What is a batch Every DrawIndexedPrimitive call is a batch All render, texture, shader,...
Chapter 5 Functions. Introducing Functions
Chapter 5 Functions 1 Introducing Functions A function is a collection of statements that are grouped together to perform an operation Define a function Invoke a funciton return value type method name
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is
Multichoice Quetions 1. Atributes a. are listed in the second part of the class box b. its time is preceded by a colon. c. its default value is preceded by an equal sign d. its name has undereline 2. Associations
