A brief introduction to ray and path tracing

Rendering, the process of generating a image from a 2D or 3D model. Possibly the most important component in any video game or CGI. In which there are a variety of techniques to choose from the most common of which at the moment is rasterization which is what you will find in all modern day games. In this technique you take in vertices and normals of a model, interpolate these across pixel space to create an image. For example if you have 2 points A and B and want to draw a line, interpolate from A to B and fill in all the pixels along the way. This technique is decades old and very highly optimized but as time moves on the visual effects demands higher quality images which requires more complicated techniques of rendering. This is where ray and path tracing comes in. You will find this very common in CGI as it creates very high quality images but is in no way fast enough for for games (Yet!). In this post I will try to give you a basic idea of what they are and how you would implement them in computer graphics.

In layman’s terms the process of ray tracing is the attempt to simulate photons of light through mathematical formulae such that we can create images on the screen. In reality billions of photons come from a light source bounce off objects in many different directions of which the photons angled correctly hit our eyes enabling us to see.l001lighttoeyebounce This is exactly the what we are trying to simulate with ray tracing but with some cheats so that our computers can handle it. In our scene we will have a light source, some objects and finally a camera which represents our eye. In reality billions of photons are emitted from our light source in infinite directions and the small percentage of rays land in our camera/eye would create our image. Sadly we can’t simulate this in computing, or at least if we did it would take years to do due to the vast quantity of rays we would have to calculate which may not even land in our camera. To overcome this we use a method very imaginatively named Backward Tracing. In this method we will back trace rays from our camera to an object and then to the light source. This saves us calculating all the billions of unnecessary rays and just keep the ones that create our image. So at our current state we have one ray hitting something in our scene creating a small dot of our image. Now to create our full image all we have to do is send more rays. Imagine if you will you are painting a picture but can only use dots, if you paint enough dots you will eventually be able to create a full image. 875px-Ray_trace_diagram.svgTo convert this into terms of rendering we effectively need a ray for every pixel we are trying to draw. So image we have a plane in front of our camera. We divide this plane into a grid and fire a ray from our camera through one of the cells (our pixels) of our grid. We calculate whether or not it intercepts with something in our scene and if it does we use the colour of that object for that pixel. Effectively at a very basic level this is how our ray tracer works.

Path tracing is almost an extension to ray tracing. It is a lot more physically accurate creating even higher quality images but again but sacrifices speed in calculations. Instead of the rays hitting the object and then sending it straight to the light source it will continue to bounce around the scene accumulating colour values until it eventually hits a light. Some materials behave differently, some may have a high reflectivity and others a level of refraction or transparency which mean our rays will have to behave differently as well to colour them correctly. For example if we have a shiny red sphere next to a blue sphere, the red sphere will reflect some of the blue from the other sphere. This means our rays must do more “bounces” before reaching our light source, this in turn means more calculations which equals longer rendering times.

So that’s a brief introduction to ray and path tracers. Soon I hope to look into explaining more in depth about the mathematics used in these techniques such as shading formulae and how to calculate the reflections of the rays in the scene.

For more info:

A good explanation about simple ray tracers and how to implement. With source code

Ray tracers Vs Path Tracers


My student experiences and advice to those interested in getting into VFX/Games


Welcome and behold my very first blog post ever! Exciting isn’t it. Well now that you’ve had a moment calm down and those shivers down your spine to settle let me get on to the point of this blog post. I feel that currently in schools and sixth form education there is a lack of information about the VFX/Games industry and how to get into it. I often remember talking to the careers teacher in my college, telling them that I wanted to make games and the responding advice is generally the same. Either “Oh you should probably to IT then” or “I have no idea about that industry”. Both pretty useless pieces of advice. Which I find saddening because its one of the most creative, interesting and fast growing industries around to date. I mean Grand Theft Auto V generated over $800 million in revenue world wide.. On its FIRST DAY! If that’s not worth schools talking about then I don’t know what is. Its time that people loose the stereotype that making games is just a dream because its more within your grasp than you may think. Please remember though these are just my personal opinions so don’t take my word as law!

So before tell you what I think it takes to be achieve in this field let me tell you a little about myself to give you a little more context. My name is Declan Russell (That handsome devil in the picture above 😉 ) I’m currently in my third and final year studying BSc Software Development in Animation, Games and Effects at the NCCA which resides in Bournemouth University. All or at least most of the work I have created here is on my portfolio here so be sure to check that out *shameless self advertising*. In college (sixth form) I studied Maths, Further Maths and Computing A levels, where I originally wanted to be an accountant but after 2 years of having maths for 2/3rds of my week it got a bit stale. I honestly only did the course I’m doing now on a whim! I enjoyed my computing A level and liked playing computer games. I had no real knowledge of the field at all but haven’t regretted the decision since!

Now one of the first questions you may have, at least this is what I always wanted to know was what qualification at sixth form do I need? Overall I would highly recommend doing maths! I know lots of people don’t get on with it but its everywhere in visual effects and you will get really far if you have a good understanding of it. I can’t stress enough how useful maths is! Other than that it really depends on what you are doing. If you want to be some kind of artist, modeller or animator you will need some kind of art qualification and portfolio for most uni courses to consider you. If you’re looking into programming or making games I would consider doing computing. Don’t get this confused with IT! Computing is programming and learning about how a pc works. IT is taking many a screenshot showing that you have achieved the incredibly advanced skill of renaming a file or using word. Computing will give you a basic understanding of how a computer works and even give you some basic coding skills. On a side note though if you’re looking into games I personally feel that you should stay clear from games development courses. As much fun as they sound in sixth form they may give you some basic coding skills but really fall short on the maths side of things and you will struggle later on.

Do I have to be able to program before I go for a VFX degree? No, universities will teach you the coding you need but a bit of experience before and is only ever a bonus!

What application do we use to make VFX? The first applications you are likely to encounter in VFX are applications from the Autodesk suite. The most common and my favourite of which is Maya. This is used for modelling, rigging, animating, rendering and so much more. Maya is a good application to start learning and its free for students! Its got a pretty intuitive interface and there are loads of books on how to use it. A good read to get a lot of the basics is this

What programming languages do you use? The most common programming language you will come across is C++ and as time goes on for graphics you are more likely to learn OpenGL than DirectX now a days, mainly due to its cross compatibility. If you’re want to learn these some good books to read are Beginning C++ Through Game Programming, OpenGL Programming Guide and OpenGL 4.0 Shading Language Cook Book 

Finally, what uni’s should I look at? Bournemouth! (I may be biased but I don’t care everyone should come here!)

Well that concludes today’s blog post as its now gone midnight and brain functionality is plummeting! Hope I have been of some help and feel free to contact me with any further questions you have about this subject 🙂