Simon Rodriguez
Writing a small software renderer
18/02/2017

In computer graphics there exist many rendering algorithms, i.e. methods to display a virtual scene onto a screen, with various approaches and refinements. But only two main classes of those are currently used at a large scale[1]. After starting to study in the field, I thought about trying to implement both to better grasp how they worked under the hood. This took a bit of ti...

MIDI visualization, a case study
28/12/2016

Recently, inspired by my girlfriend starting to practice piano again and showing me this video, I challenged myself to build a small MIDI visualizer. I wanted to be able to display a MIDI track as an animated score, with moving notes, similar to the one in the video. The main development steps were:loading a MIDI file, and parsing the notes contained,displaying a scrolling score with these notes,a...

Implementing FXAA
30/07/2016

When rendering 3D scenes on a computer screen, aliasing can occur. As each pixel can only belong to the specific object covering its area of the screen, and receives a unique color from it, jagged and saw-toothed effects can appear at the edges of such object. The same effects can be seen when there are thin lines (such as wires) displayed. Fighting aliasingMultiple anti-aliasing techniques have b...

Lantern, part 4
05/05/2016

During the winter break and in the last few weeks, I've had a bit of time to continue working on the Lantern. The project is by no way finished, but I have designed almost all the lantern parts (basis, columns, and some of the tops). Each category is divided in three groups, each with a base shape: circle, square or octogon. Each sub-category contains approximately five 3D models authored in Blend...

Playing Evidence: the Last Ritual
10/01/2016

I recently wanted to replay a game named In Memoriam (also known as Missing: Since January). It was an interactive thriller game created by Lexis Numerique, where the player was tracking a serial killer based on the clues he hid in weird pictures and filmed footage. While playing you were supposed to receive mails from characters in the game, and search for clues on the web (on both fake and real...

Quick updates
20/12/2015

At last, an update on this blog! I am currently following a double cursus that takes most of my time, and in my spare time I try to focus as much as possible on my personal projects, leaving me literally no time to update this blog.But as the holidays and the end of the year are coming, a quick update on various projects and news.The LanternI have made very little progress on the Lantern project....

NSFileWrapper serializedRepresentation
06/09/2015

With the last update of Aquarii, I published online a small utility app, allowing people to extract data from their backups archives. The reason is that backups are generated using the NSFileWrapper class, and its serializedRepresentation method[1] : this is an easy way to transform a directory and its content into one big file, without having to use external compression libra...

Lantern, part 3
04/09/2015

After a few silent weeks, some news about my Lantern project! I spent some time polishing the 3.4 Aquarii update, but also had the time to add many features to this project. Many general improvements have been made, and things like sounds, effects and procedural generation have been implemented.SoundsThe soundscape has been built in the last four weeks. I'm mixing multiple backgrounds sounds : wav...

A few SCNTechnique examples
26/08/2015

IntroductionSCNTechnique is an interesting class of the SceneKit library that allows a developer to easily setup a multiple-passes rendering, without having to implement her own framebuffer management code [1]. A technique is assigned to a SCNRenderer (a view, a layer, a frame), and is instantiated from the content of a plist file where each pass is described.This class is qui...

GL_EXTENSIONS and Swift
04/08/2015

It can be useful during the development and debug of graphical code to check the OpenGL version or which extensions are available[1].Swift being more type-sensitive than Objective-C, one sometimes needs to fiddle when combining it with OpenGL. First, enums defined in OpenGL headers will be considered as Int32, not as GLenum, so you'll have to cast them before calling any GL f...

GarageBand missing loops
29/07/2015

If you used to make podcasts or sound effects with old versions of GarageBand, you might remember the "Podcasts" category of sound loops. It contained a lot of funny jingles, nice ambient sounds and numerous sound effects that were quite useful.Those loops were in fact part of the iLife Sound Effects library, shared between iMovie, iPhoto, and GarageBand[1]. But since Apple di...

Lantern, part 2
19/07/2015

This week, I worked on lighting and improving general quality.LightingLighting is an important part of creating the mood of the scene. I needed to recreate the warm moving light of a lantern's flame at night.LightsAfter much tinkering, I've chosen to put three lights in the scene:- an omnidirectional light which is the main component of the lantern flame, with a vivid yellow/orange color.- a spotl...

Lantern : a devlog
12/07/2015

With this article, I'm going to start a new adventure! I want to begin a new personal project revolving around SceneKit (3D scenes on iOS), Blender and visual effects. The initial idea is to create a small realtime-3D scene with a carefully crafted look and atmosphere, running on iOS. I will try to post a log each week with details on the advancement and my "discoveries", but some other projects m...

Un ciel dans le shader.
28/06/2015

J'ai eu l'occasion durant ce semestre de commencer à apprendre à programmer pour OpenGL. Il s'agit d'une interface de programmation graphique implémentée par la plupart des fabricants de cartes graphiques, et qui permet d'effectuer des rendus 2D/3D en temps réel [1]. OpenGL est composée de deux parties : un ensemble de fonctions de référence qui permettent de communiquer avec...

Le manoir récursif
12/04/2015

Je me suis mis récemment en tête d’explorer un peu le domaine de la génération procédurale. Cet ensemble de techniques est revenu à la mode dans le monde du jeu vidéo ces dernières années. On pensera par exemple à Minecraft, Dwarf Fortress, No Man’s Sky,… L'idée générale est de confier une part de la réalisation des niveaux, de l'histoire, des textures, à un générateur pseudo-aléatoire qui suit ce...

Thoth, un générateur de blog.
02/03/2015

Cela fait bien longtemps que ce blog n'a pas été mis à jour (et ce n'est pas la première fois que j'écris cette phrase).Ce site est passé par pas mal d'étapes. Son ancêtre a été commencé sur la plateforme Weblog, avant que je ne bascule sur Wordpress.com. J'y suis resté plusieurs années [1] : Wordpress est une plateforme puissante, stable et efficace. Les nombreux thèmes propo...

Aquarii, l'idée
14/06/2014

Tout a commencé l'été dernier. Un ami (appelons-le Nichola) et moi-même discutions devant son aquarium. Depuis plusieurs années il s'en occupe patiemment, jour après jour, veillant scrupuleusement au bien-être de ses petits locataires. Ce n'est pas facile, d'avoir des poissons. La moindre variation un peu trop brusque de température, d'acidité de l'eau, peut leur être fatale. D'où la nécessité de...

The Bookshelf.
13/05/2013

The Bookshelf. Le nom veut tout dire : une bibliothèque. Des livres, des journaux, des carnets, soigneusement alignés sur une étagère. Quel meilleur endroit pour raconter une histoire ? Ou bien des histoires, qui s'entrelacent et se croisent pour en conter une plus grande, plus étrange. Il y a une île, perdue dans l'Océan Pacifique, loin de toute route maritime. Un îlot de quelques kilomètres carr...

Duo/Era.
04/05/2013

Juste quelques informations sur les dernières avancées de mon projet de visual novel, Duo. Ou Era. Ou les deux. Le nom n'est pas fixé. Une fois les premières idées arrivées, il a fallu apprendre à maitriser le logiciel, ce qui s'est révélé plutôt rapide grâce aux tutoriels fournis avec l'éditeur. Ren'Py est un outil formidable, qui permet de développer son jeu à la manière d'un scénario, en défini...

En un ailleurs.
09/04/2013

Pris d'un soudain élan de nostalgie, j'ai décidé la semaine dernière de réinstaller Myst III : Exile, le jeu grâce auquel j'avais découvert la série de Cyan Worlds il y a plusieurs années. Je me souviens, après l'avoir acheté sans trop savoir ce que c'était, avoir contemplé la jaquette durant le trajet du retour, essayant de deviner, d'imaginer les mondes et les aventures qui se cachaient au-delà...

Nouvelles.
16/03/2013

Cela fait bientôt un an que rien ne s'est passé sur ce blog. Oui, c'est long. Et c'est parce qu'il s'est passé une infinité de choses en réalité. La prépa, ça occupe (le jour et la nuit). Mais c'est aussi une expérience passionnante. Et de temps à autre on trouve tout de même le temps de développer quelques à-cotés. Je vais essayer de résumer.Tout d'abord, la collection s'est agrandie : un iBook G...

Une occasion.
27/05/2012

Depuis un ou deux ans, j'en cherchais un. Récemment, je m'étais lancé plus assidûment à sa recherche sur Internet. Quoi de mieux pour dégoter un vieil ordinateur, que les annonces en ligne ? Après une ou deux déconvenues sur eBay et autres sites d'annonces, je tombe sur une proposition intéressante : un modèle fonctionnel, fourni avec ses enceintes, son clavier, sa souris, pour un prix inférieur à...

Auberge japonaise.
01/09/2011

Le projet du studio HybridWorks était au départ une série d'icônes qui reprenait l'ambiance et les objets caractéristiques des auberges traditionnelles japonaises. Nommé Yoritsuki (du nom d'une auberge fictive), ce pack se transforma courant 2009 en application pour iPhone et iPod Touch.Yoritsuki propose ainsi un espace, un environnement, la pièce à vivre d'une auberge, décorée dans le plus pur st...

Immersion.
15/08/2011

Lexis Numérique est aujourd'hui l'un des plus importants studios européens qui s'implique dans la réalisation vidéo-ludique indépendante, loin des grandes franchises. Fondé dans les années quatre-vingt dix par Éric Viennot, le studio s'oriente selon deux axes opposés : d'un coté la production de jeux vidéo sur commande pour des organismes et des sociétés peu en contact avec la sphère vidéoludique...

Quelques notes
20/06/2011

Malgré les différences fondamentales qui séparent les oeuvres vidéo-ludiques des productions cinématographiques, celles-ci partagent un point commun : la bande-son. Dans les deux cas, la musique permet de construire l'ambiance de l'expérience que va vivre le spectateur [1], elle renforce l'histoire, soutient les différentes atmosphères qui baignent l'oeuvre. En ce sens, la mus...

Indépendance.
02/03/2011

Dans l'univers des jeux vidéo, à côté des grandes licences à succès, on trouve de  petits studios indépendants. Moins soumis aux règles du marché et des franchises, ces créateurs sont peut-être ceux qui osent le plus, poussant le concept du jeu dans de nouvelles directions. Leur seule limite demeure le manque de moyens, la grosse industrie vidéo-ludique n'étant pas prête à les accompagner hors des...

A contrario.
14/02/2011

Il est une catégorie d'applications que je n'ai pas abordé dans mon dernier article : les jeux vidéo. Vaste domaine, à propos duquel on pourrait développer pendant plusieurs pages. Mais, pour en venir à l'élément qui m'intéresse aujourd'hui, je vais simplement effectuer un rapide panorama (non-exhaustif) de quelques tendances dans le jeu vidéo sur ordinateur.L'interface peut être "utile". Elle con...

Interfaces
02/02/2011

Lorsque l'on s'intéresse à l'informatique et au graphisme, il existe un élément où ces deux thèmes se réunissent. L'interface. Mais qu'est ce qu'une interface ? De manière générale, il s'agit d'une zone, d'une ligne de contact, d'échanges et d'interactions entre deux éléments. Les principaux domaines où l'on emploie ce terme sont la géographie, la physique, et l'informatique. Dans ce dernier cas,...

Genèse et pomme
09/11/2010

Le projet a commencé sur une idée toute simple, une constatation plutôt. Etant étudiant, lycéen en filière scientifique, j'utilise fréquemment un appareil nommé "calculatrice scientifique". Ces machines forment une catégorie à part : grosses, bardées de touches, avec des écrans en niveaux de gris, une interface discutable, et un fonctionnement tout sauf intuitif. J'exagère bien entendu : ces outil...