Realtime Raytracing - Part 2 (Adding Reflections and Animation)

Written by Dean Edis on .

Welcome to the Gimpy Software article on creating a GPU-powered Raytracer! (Part 2)

In this article we'll be extending our implementation to cover reflections and a simple animation. The former will add another level of realism, and the latter will help show the real-time nature of the rendering.

Let’s start with the code, which you can paste directly into the shader editor:

Realtime Raytracing - Part 1

Written by Dean Edis on .

Welcome to the Gimpy Software article on creating a GPU-powered Raytracer! (Part 1)

I've always been interested in computer graphics implementations. As a teenager in the 90s I used to watch 4Kb and 64Kb graphics demos and be amazed at the effects I saw, all being drawn in 'real time'. This prompted me to recreate some of the demo effects, and inspired my first experiments in 3D. In those days it meant hand-rolling my own assembly code to plot pixels, lines, polygons, etc - A very challenging, but rewarding learning experience!

As time moved on, and CPUs got more powerful, I developed an interest in ray tracing. I added a mental note onto my computing 'bucket list' of projects, but never seemed to have the time to implement my own.

Fast forward (quite!) a few years, and finally I achieved my goal - I wrote a simple ray tracer in C++. It gave good results, and the implementation was surprisingly simple. I was astounded at how little code was needed to achieve some visual output, and then again at how a few (relatively simple!) incremental tweaks to the ray tracing algorithm could result in significant improvements in the rendered scene.

I'm now going to revisit this project again, but this time using a GLSL pixel shader - Allowing REAL-TIME ray tracing - Something I couldn't event contemplate before. Instead of your CPU doing the image processing, a pixel shader allows your GPU to do it instead, and in a very ‘parallel’ fasion. To keep the development cycle as fast as possible I will use an online pixel shader editor:

This compiles the code 'as you type' which makes seeing the results of your changes immediate - I totally recommend the site.

Gimpy Bomber

Written by Adrian Killens on .

After a few beers and some furious coding our first ever iOS game is now complete and you can purchase it for a mere 79p from the App Store. It's based on a game that I used to play many years ago on my Mattel Aquarius in which you have to bomb an alien city whilst dealing with declining fuel levels. We hope you like it and if you do then feel free to leave us a review on the App Store ;-)

Check it out here:

Gimpy Bomber

Thoughts on Developer-based Testing

Written by Dean Edis on .

Developers write code. Code contains bugs. As a developer, there is a small chance that the code that you have just written is perfect, bug free, and works every time on every person's machine. If you're like me, there is an even better chance that this is not the case.

In my early days as a professional software developer I lost count of the number of times I confidently passed a feature over to the QA team, only for them to find a bug within a handful of minutes. Now, after 15 years of experience, I have built up a small arsenal of techniques to try and reduce this situation. The motivation for this? Well obviously it is so I can be an effective member of the team, creating complex and STABLE applications... But mostly it is because it's also very annoying, as usually by the time a bug is found I am well into thinking about the next developer task - Putting this on hold to revisit old code can be a major interruption. But to be honest my main motivation is to save personal embarrassment.

At "work" I have the luxury of depending on a small QA team to help test features. At home, this is not the case. Gimpy Software is a small team with no dedicated QA personnel, making the emphasis on developer testing much more important.

Over the years I have known a handful of developers who state "I do not know how to test", or "it is not my job to test". Anyone in the latter camp either needs a serious wake-up call, or a career change. For those in the first camp there is definitely hope. Like any skill, testing is something that can be learnt, and even a rudimentary level of test knowledge can make a big difference in the quality of your output.