Category: Graphics

  • Blaze (Re-redux) Part 2

    Blaze (Re-redux) Part 2

    In my last Blaze-related post, I focused on improving performance without disturbing the structure too much. Asynchronous scrolling, dispatch tables, and a handful of other optimisations gave us a smoother, more responsive game. That worked – perhaps a little too well. Once the performance issues were out of the way,…

  • Blaze (Re-Redux)

    Blaze (Re-Redux)

    I’ve been somewhat busy working on the next module for Ataru over the past few weeks, so I decided to take a break. I have been writing inordinate amounts of Z80 assembly language, and a crazy thought possessed me: what if I picked up Blaze’s train wreck of a source…

  • Legend of ESPer Tetris

    Legend of ESPer Tetris

    Sometimes you stare at the mountain of dev boards on your desk and realise that none of them actually play Tetris. This is how bad ideas are born. I could have grabbed a phone, installed one of the thousand clones, and moved on with my life. Or pulled out my…

  • Card Path Tracer

    Card Path Tracer

    Some time ago I came across an excellent analysis of Andrew Kensler’s minimal ray tracer (a.k.a the business card ray tracer) whose entire source code could fit on the backside of a business card. The output is shown below: Being stuck at home, sick with a debilitating cold, I thought I’d…

  • Particle file format

    Particle file format

    One of the problems plaguing the distributed version of Illumina PRT is that of resource management. Precisely, when multiple task groups are running concurrently, switching resources from one task group to another can be a great time sink. A PE’s current data set (geometry, acceleration structures, textures, etc) has to…

  • An update long due

    An update long due

    These last weeks I was working on optimising the Interactive Global Illumination (IGI) integrator for Illumina. The implementation uses a technique known as interleaved-sampling, where the image space is divided into square regions, usually of 3×3 or 4×4 pixels, and the rays shot from the viewer through each pixel of the grid…

  • Image-based Lighting

    In the last few days I’ve been working on integrating image-based lighting into the Illumina renderer. At the moment, I have a preliminary setup running on light probes from low-dynamic range (LDR) images. The light probes are sampled using a simple cosine-weighted distribution which is far from optimal. In fact, when…

  • Scene script files

    I have finally added a means of loading scene scripts into the renderer… generated a render of Sponza to celebrate!

  • Illumina PRT – A distributed physically-based renderer

    Illumina PRT – A distributed physically-based renderer

    In the last couple of months I’ve been doing some work on a cross-platform distributed renderer, Illumina PRT. The renderer is still in its infancy and requires a substantial amount of work before it can be called decent by any standard. Hopefully I’ll be documenting any progress made in the…

  • Sandbox applications

    For the last few days we’ve all been working on wrapping up the projects and writing the dissertations which are due in three weeks’ time. I have created an application object for Vistas, allowing users to create and set up applications easily and quickly. Consequently I built a basic sandbox…