Best Resource for learning modern graphics techniques

Started by
10 comments, last by Jason Z 14 years, 8 months ago
What is the best resource, whether it be an academic journal, online resources, books, etc for getting up to speed with modern graphics programming and theory? You can assume that price is not a concern although free materials are obviously welcome, and also that I am very comfortable with math and have had some exposure to basic elements of 3d computer graphics math like projection matrices and whatnot. Ideally I'd like some code samples, especially for the more fundamental techniques. I see a lot of talk of different methods of culling, for example, but rarely does any of the literature I read this in include any code samples. I've looked through the past few years of siggraph proceedings and ACM TOG and I think I don't even have the pre-requisites for understanding the pre-requisites yet. There's Foley et al but I feel it might be somewhat outdated now. The closest I could find to a modern equivalent is Pharr's book Physically Based Rendering, but not sure if that assumes too much of the reader. For the time being, I'm more interested in going the D3D route than the OGL route, so I'd be hesitant (although not *completely* unwilling) to use any reference material that depends heavily on OGL. Thanks
Advertisement
You could check out our free online D3D10 book - it covers the basic API, and also covers quite a few different topics and has code samples throughout. If you take a look, I'd like to hear any feedback that you might have too... The link is in my signature below:
The biggest problem with this is that I don't have easy access to a box with Windows Vista :( So I've been learning D3D9 temporarily. Planning on buying a new computer in October or so, and then I was planning to switch over from 9 to 10. Hopefully there's some overlap so my time learning 9 hasn't all been wasted.

I do have a license of VMWare Workstation though, do you know if D3D10 plays well on VMWare?
My favorite resources are

the GPU gems series which is free online online at

http://developer.nvidia.com/object/gpu_gems_home.html

The shaderX series, so of the books are free at

http://tog.acm.org/resources/shaderx/

For something easier to digest, you can also try XNA, there are tons of code samples for it

http://msdn.microsoft.com/en-us/xna/default.aspx
http://www.ziggyware.com/articleCats.php
--------------------------gamedboy.com
Quote:Original post by cache_hit
The biggest problem with this is that I don't have easy access to a box with Windows Vista :( So I've been learning D3D9 temporarily. Planning on buying a new computer in October or so, and then I was planning to switch over from 9 to 10. Hopefully there's some overlap so my time learning 9 hasn't all been wasted.

I do have a license of VMWare Workstation though, do you know if D3D10 plays well on VMWare?
The last I heard was that you don't get hardware acceleration through a VM, but that was a while ago. I guess there is always the reference rasterizer...

Quote:Original post by Jason Z
Quote:Original post by cache_hit
The biggest problem with this is that I don't have easy access to a box with Windows Vista :( So I've been learning D3D9 temporarily. Planning on buying a new computer in October or so, and then I was planning to switch over from 9 to 10. Hopefully there's some overlap so my time learning 9 hasn't all been wasted.

I do have a license of VMWare Workstation though, do you know if D3D10 plays well on VMWare?
The last I heard was that you don't get hardware acceleration through a VM, but that was a while ago. I guess there is always the reference rasterizer...



Thanks, I suppose I'll take a look at it. If windows vista can run on VMWare, then I suppose it must have some support for d3d 10. I'll just see what happens when I try to attach to the hal device.

My first comment regarding the book would be to put Next / Back buttons on the pages so I don't have to click my browser back button and then find the next section in a chapter. :)
Quote:Original post by cache_hit
The biggest problem with this is that I don't have easy access to a box with Windows Vista :( So I've been learning D3D9 temporarily. Planning on buying a new computer in October or so, and then I was planning to switch over from 9 to 10. Hopefully there's some overlap so my time learning 9 hasn't all been wasted.

I do have a license of VMWare Workstation though, do you know if D3D10 plays well on VMWare?


Side note: At that point in time, just scrap 10 and go directly to 11. Do not pass GO, do not collect $200, etc. 11 is pretty much a superset of 10 and has a very comparable interface and API, new shader stages aside.

In regards to the thread purpose, there are a number of good resources available. The GPU Gems series is an excellent reference for a number of advanced/very interesting techniques, though I wouldn't go quite so far as to say they're a good general introduction to all the aspects of real-time 3D. The (also excellent) ShaderX series also has a similar set of advantages/drawbacks. Generally, I would recommend reading those once you have the basics of primitive drawing and the programmable pipeline down cold, as just jumping into them headfirst is a recipe for headache. I speak from personal experience there.

The samples in the DirectX SDK are very well put together, IMHO, though wading through DXUT can also be overwhelming. I think the samples on HDR, skinning, motion blur and postprocessing are some of the most directly applicable, though it's been a while since I've done much with the DX9-level examples. All the techniques presented are fairly simple and implemented with a minimum of cruft, not counting the aforementioned train wreck that is the DXUT code organization.

Additionally, there's a lot of buzz surrounding spherical harmonics and their many uses. Unfortunately, I find many articles/tutorials on the subject are rather vague on the how and why and give little coverage of how the reconstruction actually works in a proverbial step-by-step fashion, instead just throwing out wads of rather opaque summations and integrations along with rather unhelpful pictures of final rendering results. I *think* I understand how it works, and certainly grasp the process at a conceptual level, though it is also my understanding that many others suffer similar problems. YMMV.
clb: At the end of 2012, the positions of jupiter, saturn, mercury, and deimos are aligned so as to cause a denormalized flush-to-zero bug when computing earth's gravitational force, slinging it to the sun.
Quote:Original post by InvalidPointer
Quote:Original post by cache_hit
The biggest problem with this is that I don't have easy access to a box with Windows Vista :( So I've been learning D3D9 temporarily. Planning on buying a new computer in October or so, and then I was planning to switch over from 9 to 10. Hopefully there's some overlap so my time learning 9 hasn't all been wasted.

I do have a license of VMWare Workstation though, do you know if D3D10 plays well on VMWare?


Side note: At that point in time, just scrap 10 and go directly to 11. Do not pass GO, do not collect $200, etc. 11 is pretty much a superset of 10 and has a very comparable interface and API, new shader stages aside.

In regards to the thread purpose, there are a number of good resources available. The GPU Gems series is an excellent reference for a number of advanced/very interesting techniques, though I wouldn't go quite so far as to say they're a good general introduction to all the aspects of real-time 3D. The (also excellent) ShaderX series also has a similar set of advantages/drawbacks. Generally, I would recommend reading those once you have the basics of primitive drawing and the programmable pipeline down cold, as just jumping into them headfirst is a recipe for headache. I speak from personal experience there.

The samples in the DirectX SDK are very well put together, IMHO, though wading through DXUT can also be overwhelming. I think the samples on HDR, skinning, motion blur and postprocessing are some of the most directly applicable, though it's been a while since I've done much with the DX9-level examples. All the techniques presented are fairly simple and implemented with a minimum of cruft, not counting the aforementioned train wreck that is the DXUT code organization.

Additionally, there's a lot of buzz surrounding spherical harmonics and their many uses. Unfortunately, I find many articles/tutorials on the subject are rather vague on the how and why and give little coverage of how the reconstruction actually works in a proverbial step-by-step fashion, instead just throwing out wads of rather opaque summations and integrations along with rather unhelpful pictures of final rendering results. I *think* I understand how it works, and certainly grasp the process at a conceptual level, though it is also my understanding that many others suffer similar problems. YMMV.
I'll agree with the statement about D3D11 - I'm currently converting over to D3D11, and you can use it on down-level hardware too. However, it has the same limitation as D3D10 - it requires Vista or Win7 to use...

Realtime Rendering is maybe what you're after in a book.
[size="1"]
Appreciate all the suggestions. I might pick up a copy of RTR, it looks like it fits the bill. It's a shame there's no exercise, I always have a subtle distaste for technical books that provide no exercises. With a book containing a carefully crafted set of exercises, you can literally be an expert on the subject by the time you finish the book, although it might take you a year as opposed to a month to finish the book. But it looks good anyway.

Is the material in ShaderX and ShaderX2 outdated, or is much of it still relevant? I suppose the same question applies for GPU Gems.


And am I to understand that once Direct3D 11 goes RTM, Direct3D 10 will be completely obsolete? In the sense that you could take a program written for D3D10, #define all the functions, interfaces, and structures to contain the number 10 instead of the number 11, and it would behave identically? Does this require Direct3D 11 compatible hardware, or is it safe to code only for the Direct3D 11 interface and as long as you don't use any features that are new in D3D 11, it will work on all D3D-10 compatible hardware?

This topic is closed to new replies.

Advertisement