Secret Garden – Versailles

A friend of mine pointed out this Dior video and it certainly caught my attention. Playing with black and white or color images, natural or artificial light, indoor or outdoor scenes, it presents three models wandering in the Galerie des Glaces and the gardens of the Château de Versailles.

As usual with world class fashion material, the image is absolutely flawless: you can pause the video at pretty much any moment and get a picture that is perfect. The montage is synchronized with the Depeche Mode song, Enjoy the Silence, and I would be curious to hearing the underlying idea that led the direction.

Splitscreen: A Love Story

The following is a short by James W. Griffiths. I completely forgot to mention it here; fortunately I remembered it today and felt like watching it again.

While it is simple, the direction and care for details are outstanding. The images were shot entirely using a Nokia N8 mobile phone, which sure puts in perspective the kind of stuff one can do with just such a device.

Is tiled forward rendering the new hot thing?

I see more and more people talking about tiled forward rendering, and it seems to be the new hot thing everyone wants to try. AMD recently released a tech demo using such a technique: Leo.

Aras Pranckevičius, rendering architect at Unity, discussed modern forward rendering in an article, 2012 Theory for Forward Rendering, and later dropped a bunch of Tiled Forward Shading Links (which I won’t duplicate here so just click). Wolfgang Engel argues tiled based approaches don’t pay back when many lights cast shadows, compared to deferred lighting. At last Brian Keris discusses Tiled Light Culling, for the diffuse and specular contributions.

Tools of Love

Talking about The Toolsmiths and content creation, the single most impressive content creation workflow demonstration I have seen so far is probably the one they made a post about a few years ago.

In this video, Eskil Steenberg presents the tool he wrote for his game, Love. The tool gives an instant feedback and shows the results of modifications just as they go, while any concept of loading, saving, exporting, synchronizing or even file in general is gone, abstracted away.

Bret Victor – Inventing on Principle

The Toolsmiths, a blog focused on content creation tools for video games, mentioned this enlightening talk by Bret Victor. The first part has some thought provoking ideas for programmers and anyone in a creation process in general. This will certainly strike a chord or two if you’re in the demoscene or in the video game industry.

Readings on vector class optimization

Now that Revision has passed, we feel tempted to grab the ax and happily chop into parts of our code base we wanted to change but couldn’t really since we had other priorities. One tempting part is the linear algebra one: vector, quaternion and matrix data structures. Lets say vector for a start. Not that it’s really necessary, but the transformations are the most time consuming parts after the rendering itself, and the problem itself is somewhat interesting.

After a little googling, I basically found three approaches to this problem:

Every here and there, people seem to think of SSE instructions as a silver bullet and propose various examples of code, snippets or full implementations. The idea being to use dedicated processor instructions to apply operations on four components at a time instead of one after another.

Quite on the opposite, Fabian Giesen argued some years ago that it was not such a good idea. A quick look at the recently publicly released Farbrausch codebase shows they indeed used purely conventional C++ code for it.

At last this quite dated article (with regards to hardware evolution) by Tomas Arce takes a completely orthogonal approach, consisting of using C++ templates to evaluate a full expression component after component, thus avoiding wasting time moving and copying things around.

I am curious to implement and compare them on nowadays hardware.


Update: this is 2016 and the topic was brought back recently when someone wrote the article How to write a math library in 2016.

The point of the article is that the old advice to not bother with SSE and stick with floats doesn’t apply anymore, and it goes on to show results and sample code. This sparked a few discussions on Twitter, with opinions voiced to put it mildly.

It seemed the consensus was still against the use of SSE for the following reasons:

  • Implementation is tedious.
  • For 3 dimensional vector, which is the most common case, there is a 25% waste.
  • For 4 dimensional vectors, like homogeneous coordinates and RGBA, it doesn’t work so well either since the fourth component is treated differently than the other ones.
  • Even if the implementation detail is hidden behind a nice interface, the alignment requirements will leak and become constraints to the rest of the code.
  • Compilers like clang are smart enough to generate SSE code from usual float operations.