A while ago I started to play with OpenGL and OpenGL shaders again. I thought that it would be nice to write down some good tips about good sources and tools for your learning process. I think that learning OpenGl 4 (the latest major version at time of writing) is more useful to learn than earlier versions because when you are done learning OpenGL 4 basics it is probably what most hardware will support.
If you have no knowledge at all about OpenGL I think this is a good starting point: Render hell. It is probably the best (and the most fun) overview you can find for a render beginner.
After reading that short but colorful introduction you should buy your self these OpenGL books:
- OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition)
- OpenGL SuperBible: Comprehensive Tutorial and Reference (6th Edition)
- OpenGL 4 Shading Language Cookbook - Second Edition
To learn OpenGl yo need to code. Most of what you need is covered in the books above or in many of the online tutorials you can find. However if you are mostly interested in programming in the OpenGL shading language then there are two tools that can be of interest: Shadertoy and ShaderTool.
During my play I have found a very useful sandbox called Shadertoy. Shadertoy is a webpage where you can write WebGL pixel/fragment shader code and see the result directly so it is a perfect tool for learning and play around with pixel (fragment) shader code. WebGL is based o OpenGL ES 2.0 and OpenGL ES is a subset of OpenGL. It is pure joy! So go there and have fun: https://www.shadertoy.com/
ShaderTool is a desktop application only available for Windows at the time of this writing (will be available for Windows, Mac and Linux in the future). It supports writing Vertex, Control (Hull), Evaluation (Domain), Geometry and Pixel shaders. So ShaderTool is much more powerful tool than Shadertoy, but it costs money. Here is a list of some features ripped directly from the developer:
- Write shaders and view results instantly
- Support of HLSL and GLSL (DirectX and OpenGL)
- Latest shader models fully supported
- Code editor with syntax highlighting, warning and error output
- Easy-to-use node-based render pipeline
- Import models, textures, audio files and other resources per drag'n drop
- Export your shaders and share them with others
- Create template projects for more efficient shader development
- Direct use of shaders in DirectX or OpenGL applications
- Oculus Rift DK 2 fully supported (Direct Acces Mode)
- Use audio streams for shader input to create stunning effects
- Post-Effects fully supported
- Create multiple render-pipelines and combine them to create AAA shaders used in games