DEV Community

Discussion on: My programming journey: Learning math!

Collapse
 
alexgwartney profile image
Alex Gwartney

Now as where to begin starting I would say begin with math depending upon where your skill level that is. I would say you need to know at least calc to begin. If you know math I would then start with

Computer Graphics: Principles and Practice
John F. Hughes, Morgan McGuire, Andries Van Dam
Kindle Edition

and then move on to learning c++ and reading the OpenGL red book. And continue on from there.

Also here is some other advice I found on twitter.

"1. learn linear algebra well. the concepts you will mostly be needing in graphics are

  • Cross Product
  • Dot Product
  • Transformation Matrix
  • Orthonormal Bases.
  • intersection calculations. e.g., intersection between ray and sphere

focus your efforts on groking the above.
"
"
Good linear algebra book:
immersivemath.com/ila/index.html
"

"

  1. Learn and start using RenderDoc AS EARLY AS POSSIBLE. It will save you so much time in the long run.(or use something similar like Nvidia Nsight, if you prefer that) "

"More

  1. Study the graphics pipeline, and make sure you roughly understand it. Otherwise, it's actually difficult to even write a Hello Program in OpenGL or DirectX. (see e.g. gamedev.net/articles/programming/g... …) "

"

  1. OpenGL and DirectX can unfortunately be pretty opaque API:s, to a beginner. If you find them difficult, try your hand at instead writing a ray tracer or a software rasterizer. Once you've done this, the graphics API:s are much easier to grok. "

"See Peter Shirley's ray tracing books, if you want to learn ray tracing
twitter.com/Peter_shirley/status/9...

See scratchapixel, for an intro to software rasterization:
scratchapixel.com/lessons/3d-basic...

Eric Arnebäck added,
"

"5. Keep dependencies to a minimum. big libraries can easily waste your time,
which takes away time you could be using for coding graphics. In the beginning,
the only libraries you will ever need will probably be GLFW and a simple image loader(I use lodepng)
"

"7. Now I'm gonna suggest some good beginner's projects. These projects don't take that
much code to implement.

  • blinn-phong shading
  • bare-bones minecraft renderer.
  • directional lights, point lights and spotlights.
  • heightmap rendering "

"more projects:

  • reflection rendering, using cubemaps.
  • shadow rendering, with shadow maps
  • view frustum culling.
  • particle systems.
  • cloth simulation. "