Resources for Learning Graphics Programming


A bunch of people are asking what resources I recommend to start learning graphics programming. So you get a thread on it!

I really enjoy giving beginner-level workshops. Here are two that focus on graphics:

https://www.slideshare.net/StephanieHurlburt/graphics-programming-workshop

https://docs.google.com/presentation/d/1yJSQy4QtcQxcMjr9Wj6kjMd2R1BLNA1mUebDtnaXDL8/edit?usp=sharing

If you're a graphics coder reading this wondering how you can host a workshop too, I've written about that:

http://stephaniehurlburt.com/blog/2016/11/1/guide-to-running-technology-workshops

I also wrote my own little writeup on graphics, notes from when Rich & I were helping Sophia learn graphics.

http://stephaniehurlburt.com/blog/2016/10/28/casual-introduction-to-low-level-graphics-programming

One more graphics workshop-- this one includes a raytracing and particle demo for you to play with.

https://docs.google.com/presentation/d/1d0StEQMEdz4JUEHXfTPbwKIGYex2p5Mko1Rj66e5M80/edit

I love @baldurk 's blog series, "Graphics in Plain Language"

https://renderdoc.org/blog/Graphics-in-Plain-Language/

For those ready to wade into advanced waters, "A trip through the graphics pipeline" by @rygorous is great

https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/

This online book is just an amazing introduction to shaders, by @patriciogv and @_jenlowe_

https://thebookofshaders.com/ 

Prepare yourself for a monster list of graphics resources on this site! My favorite is the SIGGRAPH papers.

http://kesen.realtimerendering.com/ 

I'm a big fan of Cinder and OpenFramworks, both C++/graphics. They are what I started from.

https://libcinder.org/docs/guides/opengl/index.html

http://openframeworks.cc/learning/ 

BGFX is also great!

https://github.com/bkaradzic/bgfx

For a more beginner friendly library, Processing is simply lovely.

https://processing.org/tutorials/ 

Shaders! GLSLSandbox is more beginner-friendly, Shadertoy if you want to see some crazy shit http://glslsandbox.com/  https://www.shadertoy.com/ 

Can't go without mentioning @CasualEffects 's Graphics Codex-- excellent and comprehensive graphics resource. http://graphicscodex.com/ 

I stand by this advice on how to approach learning graphics programming.

https://pastebin.com/qp167uKV

Since we're now on the topic of getting jobs, do mock interviews and get mentors and talk to people.

https://twitter.com/sehurlburt/status/872919452718727168

My mentor list is FULL of graphics programmers. They all love helping you. I do need to update it with more.

http://stephaniehurlburt.com/blog/2016/11/14/list-of-engineers-willing-to-mentor-you

People ask me about learning math and I point them to @EricLengyel 's book

https://www.amazon.com/Foundations-Game-Engine-Development-Mathematics/dp/0985811749/ref=asap_bc?ie=UTF8

GPU Performance for Game Artists by @keithoconor

http://fragmentbuffer.com/gpu-performance-for-game-artists/

There are more resources I didn't mention. Check out the last two slides of this https://www.slideshare.net/StephanieHurlburt/graphics-programming-workshop … , and http://www.realtimerendering.com 

This is a good little collection of resources on advanced GPU optimization and documentation.

https://github.com/g-truc/sdk/tree/master/documentation/hardware/amd/Southern%20Islands

Destiny's Multithreaded Rendering Architecture by @mirror2mask

https://www.gdcvault.com/play/1021926/Destiny-s-Multithreaded-Rendering

An important point: The vast majority of graphics coders I know don't know math very well. Don't be scared away if you aren't a math person.

I say this as someone who adores math, was expecting to use it all the time, & only ever needed basic linear algebra for my graphics work.