I've noticed that a number of top universities are offering courses where students are taught subjects relating to Computer Graphics for their CS majors. Sadly this is something not offered by my university and something I would really like to get into sometime in the next couple of years.
A couple of the projects I've found from some universities are great, although I'm mostly interested in two things:
Sorry for posting such vague and, let's be honest, stupid questions. It's just something I've wanted to do for a while and something that'd be good as a large project for me to develop in my own time.
The ray tracer computes the closest intersection point between the scene objects and this ray. It then determines the color of the intersected object at that point, and paints the picture that color. So this pixel would be colored brown, this one yellow, and so forth for the other pixels.
Ray tracing is important for creating photorealism and affects how light is simulated in various applications. Up until recently, the technique was limited and not feasible for use in video games and was used mostly in the film making industry.
This lets computers accurately render things like shadows, reflections, highlights, and bounced light. The result is a scene that looks more realistic with less work. The only downside is that ray tracing usually takes so much processing power that film studios have to spend days rendering highly detailed scenes.
Ray tracing is a method of graphics rendering that simulates the physical behavior of light. NVIDIA has made real-time ray tracing possible with NVIDIA RTX™ —the first-ever real-time ray tracing GPU—and has continued to pioneer the technology since.
I can recommend pbrt, it's a book and a physically-based renderer used to teach computer science graduates. The description of the maths used is nice and clear, and since it is written in the 'literate programming' you can see the appropriate code (in C++) too.
The book "Computer Graphics: Principles and Practice" (known in the Computer Graphics circles as the "Foley-VanDam") is the basic for most computer graphics courses, and it covers the topic of implementing a ray-tracer in much detail. It is quite dated, but it's still the best, afaik, and the basic principles remain the same.
I also second the recommendation for Eric Lengyel's Mathematics for 3D Game Programming and Computer Graphics. It's not as thorough, but it's a wonderful review of the math basics you need for 3D programming, it has very useful summaries at the end of each chapter, and it's written in an approachable, not too scary way.
In addition, you'll probably want some OpenGL or DirectX basics. It's easier to start working with a 3D API, then learn the underlying maths than the opposite (in my opinion), but both options are possible. Just look for OpenGL on SO and you should find a couple of good references as well.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With