cancel
Showing results for 
Search instead for 
Did you mean: 

Learning Modern 3D Graphics Programming

geekmaster
Protege
Free online book: Learning Modern 3D Graphics Programming
http://www.arcsynthesis.org/gltut/
This book is intended to teach you how to be a graphics programmer. It is not aimed at any particular graphics field; it is designed to cover most of the basics of 3D rendering. So if you want to be a game developer, a CAD program designer, do some computer visualization, or any number of things, this book can still be an asset for you.
This is a book for beginning graphics programmers. Graphics is a huge topic, and this book will not cover every possible effect, feature, or technique. This book will also not cover every technique in full detail. Sometimes techniques will be revisited in later materials, but there simply isn't enough space to say everything about everything. Therefore, when certain techniques are introduced, there will be a section at the end providing some cursory examination of more advanced techniques. This will help you further your own research into graphics programming, as you will know what to search for online or in other books.
This book is broken down into a number of general subjects. Each subject contains several numbered chapters called tutorials. Each tutorial describes several related concepts. In virtually every case, each concept is demonstrated by a companion set of code.

I stumbled across this book while looking for some information on quaternions (which are covered a bit in tutorial #8), and I thought that others here may be interested in it. It looks good so far...
3 REPLIES 3

geekmaster
Protege
While that book covers a lot of ground quickly, this document gives a lot more depth to the subject of "Rotating Objects Using Quaternions":
http://mathinfo.univ-reims.fr/image/dxBase/codes/04/Rotating%20Objects%20Using%20Quaternions.pdf

And of course, WikiPedia gives a lot of information on "Quaternions and spatial rotation" in a small space as well:
http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation

My background is in a lot of "old school" graphics and animation (mostly using direct framebuffer access and manipulating the bare pixels). We did some awesome computer graphics things with computers that were more than 1,000 times slower than modern computers, and did not even have a GPU, so I think that our "old school tricks" can do some amazing things just with a modern CPU alone. And applying "old school know-how" to modern GPUs might yield some interesting and unexpected results (when I get around to playing more with GPU programming).

I also have a lot of experience in robotics and factory automation, and I think that this will fit nicely in manipulating and controlling automated objects in VR space. My coding style is based on the original Unix C "K&R" style, which I have condensed to fit more on the screen to support my "coding trance" sessions, which others either love or find repulsive. But with the world going "GPU" even on small things like the Raspberry Pi, it looks like it is time to revisit the basics from a modern perspective (at least for me), and perhaps to start using C++ as well. Old dogs, new tricks, hmm...

Anyway, I see that there is plenty of free online documentation for things I need learn, and others may find useful as well, so I may continue to post valuable documentation links here. Learning new stuff helps keep the brain young.
😉

DieKatzchen
Honored Guest
Nice find! Thanks for this, my background is mostly console applications. All I know about graphics is from the one week we spent on 2D Java graphics it in SE101.

ganzuul
Honored Guest
Bookmarked! 😄

I have been playing with this today;

http://mikolalysenko.github.io/Isosurface/

It has a terrain generator in miniature. When you edit testdata.js to make the terrain bigger you slam face-first into how slow JavaScript is for this kind of work. - It's actually a lot slower than I expected, but all the work can be moved to the GPU for a massive speed-up.


Another interesting thing I got confirmed today; GPU's deal natively with float vec4 and whenever you transfer data from the GPU RAM it pads that last float in the array with 1s if it's unused. Since data transfer is the biggest bottleneck in GPU computation and most of your vectors (XYZW) and textures (RGBA) leave 25% of the memory bandwidth unused, there is a lot of potential to tap here. E.g you could include a bumpmap in the texture alpha channel, or make your vertices exist in space-time instead of only space!