UCSD Graphics group

CSE190, Winter 2011: GPU Programming

Welcome!

*01/05/2011*
The first lecture is in the SVN repository.

Here is the first project:
Project1: Framework Documentation
Write a 5+ page documentation of the rendering framework (Font: Arial, size 12) Describe the task and purpose of the rendering framework 
How does the framework abstract between different run-times (Direct3D9, Direct3D11, OpenGL, OpenGL? ES 2.0)? (55 points)
How does the framework manage constant buffers? (15 points)
What are the differences between the Direct3D9 and Direct3D11 run-time? (5 points)
How would you implement texture arrays? (5 points)
Optional:
how would you update the OpenGL run-time to the latest version? (20 points)
how would you implement Multi-Threading support into the Direct3D 11 run-time?

Please bring this into class at January 19th.

*01/04/2011*
Tomorrow is the first lecture in CSE190 and I am looking forward to it. The homework for this class will be:
- Read the first section of Programming Vertex, Geometry and Pixel Shaders
- Optional (hard-core): Read David Blythe’s paper on DirectX? 10
- Setup a machine to do DirectX? development with DirectX? SDK, Visual Studio and download and install the rendering framework of the course and become familiar with it
- Download and install RenderMonkey on your machine and get familiar with it
- Read Chapter 3 in Real-Time Rendering

Textbooks:
- Programming Vertex, Geometry and Pixel Shaders
- DirectX? documentation in DirectX? August 2009 SDK: look for the file windows_graphics.chm
- NVIDIA GPU Programming Guide
- ATI GPU Programming?
- Real-Time Rendering by Tomas Akenine-Moller, Eric Haines, Naty Hoffman, 3rd edition, AK Peters 

-- the per-sample shaders

02/16/2010
Please find a RenderMonkey? workspace with several different examples on how to implement HDR with a 8:8:8:8 render target here. This workspace shows the implementation of HSV, CIE Yxy, L16uv (modified LogLuv?), RGBE and RGB 12:12:12:8 color space.

02/11/2010
You can download now Lecture 6 from here. Oleg Bisker pointed out the link to the GDC 2008 PostFX talk by Alex Vlachos, who works for VALVE. You can find lots of images in there that show the differences between gamma space and linear space rendering. My GDC 2007 PostFX? talk can be found here. The written version of this talk is here. If you are interested in HDR rendering or imaging, you want to start with Paul Debevec's work and numerous SIGGRAPH talks. This wikipedia page provides many links for photographers. To prepare next weeks class you might read in Real-Time Rendering chapters 10.1 - 10.14.

02/06/2010
Here is an interesting blog entry on how to use C / C++ on multi-platform engines; specifically talking about the iPhone. I believe all of his points in the blog entry are useful in general for game development. If you are interested in another opinion on the usage of C / C++ in game development, I would recommend the following blog. This one is especially cool.

02/04/2010
You can download now Lecture 5 from here. An overview on how to store normals in a G-Buffer in the most precise / efficient way is given here.
If you are interested in increasing your knowledge about Cascaded Shadow Maps you can read this article on Parallel-Split Shadow Maps.

02/03/2010
Today we will start with shadow mapping. The next assignment that needs to be finished until next week Wednesday can be downloaded from from here. The homework for next week is reading the following articles:
- Real-Time Rendering, Shadow Mapping pp. 348 - 373
- Cascaded Shadow Maps:
-- Wolfgang Engel, “Cascaded Shadow Maps”, ShaderX5?, pp. 197 – 206
-- Michal Valient “Stable Rendering of Cascaded Shadow Maps”, ShaderX6?, pp. 231 – 238
-- Fan Zhang, Alexander Zaprjagaev, Allan Bentham, “Practical Cascaded Shadow Maps”, ShaderX7?, pp. 305 - 329

02/01/2010
In assignment #3 -Question 18- RenderMonkey?'s 1.82 HLSL compiler stumbles about the following code

float4 vec = float4(4.0f, -2.0f, 5.0f, 3.0f);
float4 vec2 = vec.yx;
vec2.zw = vec.zy;

You can try instead:

float4 vec = float4(4.0f, -2.0f, 5.0f, 3.0f);
float4 vec2;
vec2.xy = vec.yx;
vec2.zw = vec.zy;

01/28/2010
I fixed the link for the third assignment. Some of the textures for the Deferred Lighting example didn't make it into the SVN repository. Please get latest. They should be in now. The third assignment can be downloaded from here. Please download the fourth lecture as a pdf file from here.

Here are some of the results from Assignment 2.
Fabric

Snow

Cloth

Sub-Surface Scattering

Blackbody Radiation (charcoal)

Strauss Lighting Model

Stone

Skin

Metal

01/27/2010
Please bring in Assignment #2 this afternoon. I will look at each one of your material implementations in the last 45 minutes of class.
Please look into the Deferred Shading example that is located in the directory C:\Program Files (x86)\AMD\RenderMonkey 1.82\Examples\Dx9\Deferred Shading.rfx It shows a very basic setup of Deferred Shading.
The third assignment can be downloaded from here. Please send back the answers in a Word file until Wednesday February 3rd. Homework for this session is:
Read the overview on different Deferred Lighting Approaches by Naty Hoffman:
- http://www.realtimerendering.com/blog/deferred-lighting-approaches/
- Read in Real-Time Rendering Section 7.9.2
If you are interested in further reading please check out
- Fabio Policarpo et al., Deferred Shading Tutorial, here
- NVIDIA SDK Deferred Shading Example:
here
-> Shows how to project a box around a point light into clip space so that the surrounding rectangular can be calculated

01/20/2010
Please download the third lecture as a pdf file from here. The latest version of the RenderMonkey? project file can be found here (about 2.5 MB).
The homework for the upcoming week will be
- Please read again the Lighting section of Programming Vertex, Geometry and Pixel Shaders
To learn more about Oren-Nayar
- Wikipedia on Oren-Nayar
- Gamasutra article by Ron Fosner
- Download the written version of my SIGGRAPH presentation from hereand read it to find out more about Deferred Lighting.
- Project 2

Further reading suggestions for lighting models are:
- Jan Kautz, “Rendering with Handcrafted Shading Models”, Game Programming Gems 3, pp. 477 – 483, Charles River Media, 2002, ISBN 1-58450-233-9
- Kelly Dempski, Emmanuel Viale, “Advanced Lighting and Materials with Shaders”, Wordware 2005, ISBN 1-55622-292-0
- Andrew S. Glassner, “Principles of Digital Image Synthesis”, Morgan Kauffmann, ISBN 1-55860-276-3

01/19/2010
The lecture tomorrow will cover more advanced lighting models and Deferred Lighting. You can find the written version of my SIGGRAPH 2009 talk on Deferred Lighting / Light Pre-Pass here (It is about 5.6 MB). You will be given your second assignment:
Project 2: based on the lighting models we discussed, create two materials out of the list below until next week in RenderMonkey? or in the rendering framework.
Typical Game Materials
- Skin
- Cloth
- Leather
- Metal
- Wood
- Plastic
- Eyeballs
- Marble
Animal Materials
- Fur
- Fish Scales
- Elephant Skin

01/13/2010
Please download the second lecture as a pdf file from here. The latest version of the RenderMonkey? workspace file can be downloaded from here (about 1.5 MB). The first assignment for the upcoming week will be:

Project 1: Write a 5+ page documentation of the rendering framework (Font: Arial, size 12)
Describe the task and purpose of the rendering framework
- How does the framework abstract between different run-times (Direct3D9, Direct3D10, Direct3D11, OpenGL?)?
- How does the framework manage constant buffers?
- What are the differences between the Direct3D10 and Direct3D11 run-time?
- How are texture arrays implemented?
- Optional: how would you implement compute shader support into the Direct3D 11 run-time?
- Optional: how would you update the OpenGL? run-time to the latest version?
- Optional: how would you implement Multi-Threading support into the Direct3D 11 run-time?
- Optional: how would you implement Tesselator support into the Direct3D 11 run-time?
- Optional: how would you re-organize the math library of the framework?

Homework:
- Read the first section of Programming Vertex, Geometry and Pixel Shaders -> Lighting
- http://wiki.gamedev.net/index.php/D3DBook:Lighting
- Read chapter 6.7.2 in Real-Time Rendering about Normal Mapping
- Read chapter 5.6.2 in Real-Time Rendering about Screen-Based Antialiasing

More References
For the simplified attenuation term used: Sim Dietrich, "Attenuation Maps", Game Programming Gems, Charles River Media Inc., pp 543 - 548, 2000, ISBN 1-58450-049-2

01/12/2010
Tomorrow you will be given your first assignment. This assignment will help students to learn more about the provided rendering framework. Please make sure that you have the framework downloaded and installed. So far I received three e-mails with questions or asking for support. One question was related to the geometry shader and its functionality quoting David Blythe's article. The article mentions that the geometry shader performance will degrade quickly in case of larger scale amplifications. One of the large scale amplifications is tesselation. This is why DirectX? 11 has now a dedicated tesselation unit. The other e-mails were related to the setup of the rendering framework. One person couldn't get the example program to run one other person didn't know how to download it but solved it then. We can look into this at the beginning of class tomorrow.

01/07/2010
You can download the slides for Lecture #1 from here. Update 01/11/2010: there is also now a PDF download here

01/06/2010
Today we will have our first lecture. The homework for this lecture will be:
- Read the first section of Programming Vertex, Geometry and Pixel Shaders
- Optional (hard-core): Read David Blythe’s paper on DirectX? 10
- Setup a machine to do DirectX? development with DirectX? SDK, Visual Studio and download and install the rendering framework of the course and become familiar with it
- Download and install RenderMonkey on your machine and get familiar with it
- Read Chapter 3 in Real-Time Rendering

Textbooks:
- Programming Vertex, Geometry and Pixel Shaders
- DirectX? documentation in DirectX? August 2009 SDK: look for the file windows_graphics.chm
- NVIDIA GPU Programming Guide
- ATI GPU Programming?
- Real-Time Rendering by Tomas Akenine-Moller, Eric Haines, Naty Hoffman, 3rd edition, AK Peters  !-->

Contact:
_wremoId0 (just remove NOSPAM)

r36 - 06 Jan 2011 - 18:59:37 - WolfgangEngel
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding UCSD Graphics TWiki? Send feedback
Syndicate this site RSSATOM