Comments on: Thoughts on the knowledge of an up-to-date Graphics Programmer Jealous indeed! Jealous indeed!

]]>
By: Andrew Lauritzen/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1626 Andrew Lauritzen Tue, 15 Mar 2011 19:05:43 +0000 Licensing animation = good :-) Sorry I mis-spoke - I really meant "deformation", i.e. the rendering part of animation. I'm usually pedantic about the difference between animation and deformation and then I went and screwed it up myself. Licensing animation = good :-) Sorry I mis-spoke – I really meant “deformation”, i.e. the rendering part of animation. I’m usually pedantic about the difference between animation and deformation and then I went and screwed it up myself.

]]>
By: Wolfgang-Engel/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1624 Wolfgang-Engel Tue, 15 Mar 2011 18:44:19 +0000 ( sorry for the long reply in advance ) Wolfgang: I understand your strategy and point of view, and you are right. Starting with high-level is very interesting and a great hook-into the course material, then drilling down into the lower level of the work after-wards make sense once you have implemented something. I am just offering up an alternative strategy that may get students to answer your questions by themselves using techniques you mentioned above. I always learn and retain information better when I had to find / discover the answers myself to hit a goal, not just presented with a technique and told to use it. Also, I think teaching the "process" of developing techniques at the proper stages is important, I outlined this below. Here is an example I thought of last night: Goal is to implement a high-quality and fast dynamic shadow mapping solution. Step 1 - ( get it to work first ) Render geometry into depth buffer Render geometry and sample shadow depth buffer to do shadow test. Step 2 - ( make it look better, student chooses a technique / does his own ) Maybe implement variance here, or turn problem around to create a shadow mask in screen space so that can do a smart screen space blur instead Step 3 - ( make it work on large scenes, students choose a technique again etc... ) Some maybe will do PSM ( help them out here please ), others CSM etc... Step 4 - ( teach them profiling and get tools setup to measure costs on GPU and CPU ) Pix or NVShaderPerf. Write custom timestamp measurement probes in GPU command buffer so can see how long different passes take etc... Advise them perhaps to clean up parts of their code to help in optimization step next etc... Step 5 - ( now looks good, and understand complexity, now time to make it "shippable / fast" without compromising quality ) Give them a goal to optimize GPU as best as they can, get them to find a drive to keep going, even when they think they have done as much as they can. Pull constants out of pixel into vertex into CPU, render z only depth buffers for better geometry render efficiency, let them find and ask you about "stencil", use stencil for masks to remove work on screen space shadowing shaders for example. Maybe render some things to lower rez buffer, use depth re-projection to spread a kernel over several frames, etc... Step 6 - compare results and share experience with other classmates This kind of competition against classmates to see who can get the highest quality and fastest shadows would be cool, and kind of reflect the real work how we all in various game studios compete with each-other on the same rendering techniques in a ways. Maybe good to do this in a group instead of solo... Not sure... As a side note, one tough thing about this problem is that decisions of what technique the student choose to use in steps 2 and 3 can have very wide implications on how it can be optimized / and may get them in a squeeze if they implemented it sloppy. This may be very valuable experience to go through in school, instead of doing it in the professional world, and missing deadlines with shipping games. Take it for what it's worth, just sharing ideas I had on the subject. ( sorry for the long reply in advance )

Wolfgang: I understand your strategy and point of view, and you are right. Starting with high-level is very interesting and a great hook-into the course material, then drilling down into the lower level of the work after-wards make sense once you have implemented something. I am just offering up an alternative strategy that may get students to answer your questions by themselves using techniques you mentioned above. I always learn and retain information better when I had to find / discover the answers myself to hit a goal, not just presented with a technique and told to use it. Also, I think teaching the “process” of developing techniques at the proper stages is important, I outlined this below.

Here is an example I thought of last night:
Goal is to implement a high-quality and fast dynamic shadow mapping solution.

Step 1 – ( get it to work first )
Render geometry into depth buffer
Render geometry and sample shadow depth buffer to do shadow test.

Step 2 – ( make it look better, student chooses a technique / does his own )
Maybe implement variance here, or turn problem around to create a shadow mask in screen space so that can do a smart screen space blur instead

Step 3 – ( make it work on large scenes, students choose a technique again etc… )
Some maybe will do PSM ( help them out here please ), others CSM etc…

Step 4 – ( teach them profiling and get tools setup to measure costs on GPU and CPU )
Pix or NVShaderPerf. Write custom timestamp measurement probes in GPU command buffer so can see how long different passes take etc… Advise them perhaps to clean up parts of their code to help in optimization step next etc…

Step 5 – ( now looks good, and understand complexity, now time to make it “shippable / fast” without compromising quality )
Give them a goal to optimize GPU as best as they can, get them to find a drive to keep going, even when they think they have done as much as they can. Pull constants out of pixel into vertex into CPU, render z only depth buffers for better geometry render efficiency, let them find and ask you about “stencil”, use stencil for masks to remove work on screen space shadowing shaders for example. Maybe render some things to lower rez buffer, use depth re-projection to spread a kernel over several frames, etc…

Step 6 – compare results and share experience with other classmates
This kind of competition against classmates to see who can get the highest quality and fastest shadows would be cool, and kind of reflect the real work how we all in various game studios compete with each-other on the same rendering techniques in a ways. Maybe good to do this in a group instead of solo… Not sure… As a side note, one tough thing about this problem is that decisions of what technique the student choose to use in steps 2 and 3 can have very wide implications on how it can be optimized / and may get them in a squeeze if they implemented it sloppy. This may be very valuable experience to go through in school, instead of doing it in the professional world, and missing deadlines with shipping games.

Take it for what it’s worth, just sharing ideas I had on the subject.

]]>
By: Wolfgang-Engel/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1618 Wolfgang-Engel Tue, 15 Mar 2011 16:33:11 +0000 Lots of good stuff, but there's also a bunch of higher-level stuff a graphics coder needs to know as well. Visibility culling, runtime asset management (loading, streaming, etc), baking (mipmap & mesh generation, etc). And Nick says, animation is a huge topic all by itself. It's pretty daunting. Good luck! Lots of good stuff, but there’s also a bunch of higher-level stuff a graphics coder needs to know as well. Visibility culling, runtime asset management (loading, streaming, etc), baking (mipmap & mesh generation, etc). And Nick says, animation is a huge topic all by itself. It’s pretty daunting. Good luck!

]]>
By: Szymon Swistun/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1609 Szymon Swistun Tue, 15 Mar 2011 07:12:05 +0000 Haven't had time to read through the post (being it 3:00 am, I should really get to sleep!), but let me just say, as a student I'm completely jealous of your students! I look forward to reading this post in full. Do you post lecture slides to your course online? Haven’t had time to read through the post (being it 3:00 am, I should really get to sleep!), but let me just say, as a student I’m completely jealous of your students! I look forward to reading this post in full. Do you post lecture slides to your course online?

]]>
By: Gustavo/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1607 Gustavo Tue, 15 Mar 2011 06:48:14 +0000 Totally jealous of your students... Totally jealous of your students…

]]>
By: Nick Darnell/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1604 Nick Darnell Tue, 15 Mar 2011 06:04:24 +0000 Sadly the course hasn’t evolved with the times. They’re teaching the general graphics theory stuff which is important. However, all the assignments are still old OpenGL 1.4, fixed function pipelines. It’s one thing to tell the students, here is the formula for the Phong lighting model. It’s another thing entirely to actually have the students implement a shader that performs it and then let them play with the formula, add rim lighting or some other crazy effect. *sigh*

]]>
By: Erwin Coumans/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/#comment-1603 Erwin Coumans Tue, 15 Mar 2011 05:17:38 +0000