Programmable Shaders Dr. Scott Schaefer.

Slides:



Advertisements
Similar presentations
COMPUTER GRAPHICS SOFTWARE.
Advertisements

Perspective aperture ygyg yryr n zgzg y s = y g (n/z g ) ysys y s = y r (n/z r ) zrzr.
Lecture 38: Chapter 7: Multiprocessors Today’s topic –Vector processors –GPUs –An example 1.
Understanding the graphics pipeline Lecture 2 Original Slides by: Suresh Venkatasubramanian Updates by Joseph Kider.
Graphics Pipeline.
Patrick Cozzi University of Pennsylvania CIS Fall 2013
Graphics Hardware CMSC 435/634. Transform Shade Clip Project Rasterize Texture Z-buffer Interpolate Vertex Fragment Triangle A Graphics Pipeline.
The Programmable Graphics Hardware Pipeline Doug James Asst. Professor CS & Robotics.
Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc.
CS5500 Computer Graphics © Chun-Fa Chang, Spring 2007 CS5500 Computer Graphics April 19, 2007.
A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing.
© David Kirk/NVIDIA and Wen-mei W. Hwu, ECE408, University of Illinois, Urbana-Champaign 1 Programming Massively Parallel Processors Chapter.
Status – Week 277 Victor Moya.
GPU Simulator Victor Moya. Summary Rendering pipeline for 3D graphics. Rendering pipeline for 3D graphics. Graphic Processors. Graphic Processors. GPU.
Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS Spring 2011.
Status – Week 283 Victor Moya. 3D Graphics Pipeline Akeley & Hanrahan course. Akeley & Hanrahan course. Fixed vs Programmable. Fixed vs Programmable.
The Graphics Pipeline CS2150 Anthony Jones. Introduction What is this lecture about? – The graphics pipeline as a whole – With examples from the video.
Status – Week 260 Victor Moya. Summary shSim. shSim. GPU design. GPU design. Future Work. Future Work. Rumors and News. Rumors and News. Imagine. Imagine.
GPU Graphics Processing Unit. Graphics Pipeline Scene Transformations Lighting & Shading ViewingTransformations Rasterization GPUs evolved as hardware.
Under the Hood: 3D Pipeline. Motherboard & Chipset PCI Express x16.
GAM532 DPS932 – Week 1 Rendering Pipeline and Shaders.
REAL-TIME VOLUME GRAPHICS Christof Rezk Salama Computer Graphics and Multimedia Group, University of Siegen, Germany Eurographics 2006 Real-Time Volume.
Under the Hood: 3D Pipeline. Motherboard & Chipset PCI Express x16.
GPU Programming Robert Hero Quick Overview (The Old Way) Graphics cards process Triangles Graphics cards process Triangles Quads.
Programmable Pipelines. Objectives Introduce programmable pipelines ­Vertex shaders ­Fragment shaders Introduce shading languages ­Needed to describe.
Real-time Graphical Shader Programming with Cg (HLSL)
Computer Graphics Graphics Hardware
Geometric Objects and Transformations. Coordinate systems rial.html.
Programmable Pipelines. 2 Objectives Introduce programmable pipelines ­Vertex shaders ­Fragment shaders Introduce shading languages ­Needed to describe.
Chris Kerkhoff Matthew Sullivan 10/16/2009.  Shaders are simple programs that describe the traits of either a vertex or a pixel.  Shaders replace a.
A Crash Course in HLSL Matt Christian.
Week 3 - Monday.  What did we talk about last time?  Graphics rendering pipeline  Rasterizer Stage.
The Graphics Rendering Pipeline 3D SCENE Collection of 3D primitives IMAGE Array of pixels Primitives: Basic geometric structures (points, lines, triangles,
Computer graphics & visualization The programmable (D3D 10) Pipeline.
1 Dr. Scott Schaefer Programmable Shaders. 2/30 Graphics Cards Performance Nvidia Geforce 6800 GTX 1  6.4 billion pixels/sec Nvidia Geforce 7900 GTX.
Computer Graphics The Rendering Pipeline - Review CO2409 Computer Graphics Week 15.
Shading Languages & HW Giovanni Civati Dept. of Information Tecnology University of Milan, Italy Milan, 26 th May 2004.
GRAPHICS PIPELINE & SHADERS SET09115 Intro to Graphics Programming.
CS662 Computer Graphics Game Technologies Jim X. Chen, Ph.D. Computer Science Department George Mason University.
Programmable Pipelines Ed Angel Professor of Computer Science, Electrical and Computer Engineering, and Media Arts Director, Arts Technology Center University.
Fateme Hajikarami Spring  What is GPGPU ? ◦ General-Purpose computing on a Graphics Processing Unit ◦ Using graphic hardware for non-graphic computations.
© David Kirk/NVIDIA and Wen-mei W. Hwu, ECE408, University of Illinois, Urbana-Champaign 1 Programming Massively Parallel Processors Lecture.
09/25/03CS679 - Fall Copyright Univ. of Wisconsin Last Time Shadows Stage 2 outline.
Ray Tracing using Programmable Graphics Hardware
What are shaders? In the field of computer graphics, a shader is a computer program that runs on the graphics processing unit(GPU) and is used to do shading.
An Introduction to the Cg Shading Language Marco Leon Brandeis University Computer Science Department.
GLSL Review Monday, Nov OpenGL pipeline Command Stream Vertex Processing Geometry processing Rasterization Fragment processing Fragment Ops/Blending.
Graphics Pipeline Bringing it all together. Implementation The goal of computer graphics is to take the data out of computer memory and put it up on the.
Computer Graphics Graphics Hardware
GPU Architecture and Its Application
Programmable Pipelines
A Crash Course on Programmable Graphics Hardware
CS427 Multicore Architecture and Parallel Computing
Graphics Processing Unit
Chapter 6 GPU, Shaders, and Shading Languages
From Turing Machine to Global Illumination
GPGPU Applications Introduction
The Graphics Rendering Pipeline
GRAPHICS PROCESSING UNIT
CSC 2231: Parallel Computer Architecture and Programming GPUs
Models and Architectures
Introduction to Programmable Hardware
Graphics Processing Unit
Computer Graphics Graphics Hardware
CS5500 Computer Graphics April 17, 2006 CS5500 Computer Graphics
Ray Tracing on Programmable Graphics Hardware
Computer Graphics Introduction to Shaders
© 2012 Elsevier, Inc. All rights reserved.
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
CIS 6930: Chip Multiprocessor: GPU Architecture and Programming
Presentation transcript:

Programmable Shaders Dr. Scott Schaefer

Graphics Cards Performance Nvidia Geforce 6800 GTX1 6.4 billion pixels/sec Nvidia Geforce 7900 GTX2 15.6 billion pixels/sec Xbox 3603 16 billion pixels/sec (4X AA) Nvidia Geforce 8800 GTX4 36.8 billion pixels/sec Nvidia Geforce GTX 2955 92.2 billion pixels/sec 1: http://www.nvidia.com/page/geforce_6800.html 2: http://www.nvidia.com/page/geforce_7900.html 3: http://news.com.com/Xbox+specs+revealed/2100-1043_3-5705372.html 4: http://www.nvidia.com/page/geforce_8800.html 5: http://www.nvidia.com/object/geforce_gtx_295.html

Parallel Processing Power Nvidia Geforce Titan Z 5760 programmable processors 876 MHz each 672 GB/s memory bandwidth 12 GB memory http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan-z/specifications

Parallel Processing Power AMD’s Radeon R9 295X2 5632 processors, 11.5 TFLOPS IBM’s ASCI White 8192 cores, 12.2 TFLOPS Fastest Computer in the World 2001

Graphics Pipeline Vertices

Transformation/Lighting Graphics Pipeline Vertices Vertex Transformation/Lighting

Transformation/Lighting Graphics Pipeline Vertices Vertex Transformation/Lighting Transformed Vertices

Transformation/Lighting Viewport Transformation Graphics Pipeline Vertices Vertex Transformation/Lighting Transformed Vertices Viewport Transformation

Transformation/Lighting Viewport Transformation Graphics Pipeline Vertices Vertex Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup

Transformation/Lighting Viewport Transformation Graphics Pipeline Vertices Vertex Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup Backface Culling

Transformation/Lighting Viewport Transformation Graphics Pipeline Vertices Vertex Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup Backface Culling Clipping

Graphics Pipeline Vertices Vertex Index Stream Transformed Vertices Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup Backface Culling Clipping Interpolation/Rasterization

Graphics Pipeline Vertices Vertex Index Stream Transformed Vertices Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup Backface Culling Clipping Interpolation/Rasterization Pixel Location/Color/Depth

Graphics Pipeline Vertices Vertex Index Stream Transformed Vertices Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup Backface Culling Clipping Interpolation/Rasterization Pixel Location/Color/Depth Visibility Determination

Graphics Pipeline Vertices Vertex Index Stream Transformed Vertices Transformation/Lighting Vertex Index Stream Transformed Vertices Viewport Transformation Triangle Setup Backface Culling Clipping Interpolation/Rasterization Pixel Location/Color/Depth Visibility Determination Frame Buffer

Programmable Graphics Pipeline Vertices Vertex Shader Vertex Index Stream Transformed Vertices/ Normals/Texture coords/… Viewport Transformation Triangle Setup Backface Culling Clipping Interpolated Vertex Data Interpolation/Rasterization Pixel Shader Pixel Location Visibility Determination Color/Depth Frame Buffer

Shader Programming Many different languages Assembly OpenGL Shading Language Nvidia’s CG Microsoft’s HLSL Different capabilities based on shader model Register count Instructions Maximum number of instructions

Vertex Shaders Input: anything associated with vertices Position, normal, texture coordinates, etc… Output: transformed vertices MUST output position Can produce color, normal, texture coordinates, etc…

Vertex Shaders // vertex shader output structure struct VS_OUTPUT { float4 Pos : POSITION; };

Vertex Shaders VS_OUTPUT VS( float3 InPos : POSITION // Vertex position in model space ) { VS_OUTPUT Out = (VS_OUTPUT)0; // transform the position float3 transformedPos = mul(float4(InPos, 1), (float4x3)World); Out.Pos = mul(float4(transformedPos,1), ViewProjection); return Out; }

Pixel Shaders Input: Vertex data produced from vertex shader Output: MUST output color Can output depth as well Cannot change location of pixel on screen

Pixel Shaders float4 PS ( VS_OUTPUT In ) : COLOR { // may perform texture lookup, depth effects, fog, etc… return float4 ( 1, 1, 1, 1 ); }

Gouraud Shading Example // vertex shader output structure struct VS_OUTPUT { float4 Pos : POSITION; float4 Color : COLOR; };

Gouraud Shading Example VS_OUTPUT VS( float3 InPos : POSITION, // Vertex position in model space float3 InNormal : NORMAL // Vertex normal in model space ) { VS_OUTPUT Out = (VS_OUTPUT)0; // transform the position and normal float3 transformedPos = mul(float4(InPos, 1), (float4x3)World); Out.Pos = mul(float4(transformedPos,1), ViewProjection); float3 transNormal = mul(InNormal, (float3x3)World); // normal (view space) Out.Color = float4 ( calcColor ( normalize ( lightPos – transformedPos ), transNormal, normalize ( eyePos – transformedPos ) ), 1 ); return Out; }

Gouraud Shading Example float3 calcColor ( float3 lightVec, float3 normal, float3 eyeToVertex ) { float3 color = 0; color += lightColor * MaterialAmbient; color += lightColor * MaterialDiffuse * max ( 0, dot ( normal, lightVec ) ); float3 R = normalize ( reflect ( lightVec, normal ) ); color += lightColor * MaterialSpecular * pow ( max ( 0, dot ( R, eyeToVertex ) ), MaterialSpecularPower ); return color; }

Gouraud Shading Example float4 PS ( VS_OUTPUT In ) : COLOR { return In.Color; }

Phong Shading Example // vertex shader output structure struct VS_OUTPUT { float4 Pos : POSITION; float3 Normal : TEXCOORD0; float3 TransformedPos : TEXCOORD1; };

Phong Shading Example VS_OUTPUT VS( float3 InPos : POSITION, // Vertex position in model space float3 InNormal : NORMAL // Vertex normal in model space ) { VS_OUTPUT Out = (VS_OUTPUT)0; // transform the position and normal Out.TransformedPos = mul(float4(InPos, 1), (float4x3)World); Out.Pos = mul(float4(Out.TransformedPos,1), ViewProjection); Out.Normal = mul(InNormal, (float3x3)World); // normal (view space) return Out; }

Phong Shading Example float4 PS ( VS_OUTPUT In ) : COLOR { // vector from vertex towards eye float3 EyeToVertex = normalize ( In.TransformedPos - EyePos ); float3 normal = normalize ( In.Normal ); float4 color = calcColor ( normalize ( lightPos – In.TransformedPos ), normal, EyeToVertex ); return color; }

General Purpose GPU Programming Originally success was limited because problems had to be crammed into graphics pipeline General purpose computation now available Nvidia’s CUDA DirectX Compute OpenCL