# Graphics Programming - Resources for Beginners
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)
- [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.
- 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/).