--- image: https://i.pinimg.com/originals/b0/a8/ff/b0a8ff43c9c21062dcce0b066c60053b.gif --- # Graphics Programming - Resources for Beginners :::info All of the information here is sourced from [a tweet thread by Stephanie Hurlburt](https://twitter.com/sehurlburt/status/884470105320468481?s=21), graphics developer and co-founder of [Binomial](http://www.binomial.info/). ::: This is an introduction to graphics programming, below you will find some suggestions, resources, frameworks, and a list of mentors who can help! ## Pick a Project - Everyone is different with regards to how they learn. Often though, having a project and goal in mind can be very helpful. For example, "I'm going to build a particle system demo using Vulkan/C++". - Keep the project simple, especially at first. Focus on learning one technique and keep the rest of the work very easy. Don't try to build a whole game at once. Build a lighting effect or a little fluid/particle sim, or a shader. Keep the scope limited. - Focus your energy on relevant skills to developing that project or goal and ignore the rest at first. This is good because: - There's too much to learn all at once - Focusing on skills you need to build things as opposed to theory is important - Building demos can help you get jobs more easily than anything else - As you build a project or demo, post updates and post the source on Github. This can be a great way to meet people and get visibility for your work, get hired, etc. And you'll help teach other beginners as well. - Scanning the latest SIGGRAPH papers can give you an idea of what kind of work is interesting to graphics researchers. ## Beginning Resources Here are some great beginner friendly resources: - [Casual introduction to graphics programming by Stephanie](http://stephaniehurlburt.com/blog/2016/10/28/casual-introduction-to-low-level-graphics-programming) - [Graphics Programming Workshop](https://www.slideshare.net/StephanieHurlburt/graphics-programming-workshop) - [Introduction to VR Graphics](https://docs.google.com/presentation/d/1yJSQy4QtcQxcMjr9Wj6kjMd2R1BLNA1mUebDtnaXDL8/edit?usp=sharing) - [Introduction to C++ Graphics](https://docs.google.com/presentation/d/1d0StEQMEdz4JUEHXfTPbwKIGYex2p5Mko1Rj66e5M80/edit) - [Blog series, "Graphics in Plain Language"](https://renderdoc.org/blog/Graphics-in-Plain-Language/) - [Online book is an amazing introduction to shaders](https://t.co/QceyuUglwC) - [Monster list of graphics resources](http://kesen.realtimerendering.com/) - [@CasualEffects's Graphics Codex excellent resource](http://graphicscodex.com/) - [Math for Graphics Programmers](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/) - [@Peter_shirley's Raytracing in One Weekend](https://www.amazon.com/Ray-Tracing-Weekend-Minibooks-Book-ebook/dp/B01B5AODD8) If you're a graphics coder reading this wondering how you can host a workshop too, [check out this guide](http://stephaniehurlburt.com/blog/2016/11/1/guide-to-running-technology-workshops). ## Graphics Frameworks Here are a few great frameworks for graphics: - [Beginner friendly library, Processing](https://processing.org/tutorials/) - [GLSLSandbox is a beginner-friendly shader library](http://glslsandbox.com/) - [Cinder Framework](https://libcinder.org/docs/guides/opengl/index.html) - [OpenFrameworks](http://openframeworks.cc/learning/) - [BGFX Graphics Framework](https://github.com/bkaradzic/bgfx) ## Find a Mentor! Stephanie [maintains a mentor list](http://stephaniehurlburt.com/blog/2016/11/14/list-of-engineers-willing-to-mentor-you) with many graphics programmers. They all love helping others, so feel free to reach out to them! ## More Advanced - ["A trip through the graphics pipeline" by @rygorous](https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/) - [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) ## Relation to Math An important point: The vast majority of graphics coders don't know math very well. Don't be scared away if you aren't a math person. ## Attribution - The source of this is a [a tweet thread by Stephanie Hurlburt](https://twitter.com/sehurlburt/status/884470105320468481?s=21), graphics developer and co-founder of [Binomial](http://www.binomial.info/).