Homeworks

In December 2012, I started to develop on my spare time a 3D engine, in Java and OpenGL ES 2.0, that is loosely based on the architecture of Unity3D. My goal is not to make something better than this software or to even reach its level of sophistication but to simply get a better idea of its internals. The current result is far from being 'awesome' but provides in my humble opinion a well-suited base to develop shaders and pieces of code that could be reused. Said differently, I tried to build a good software architecture but sometimes at the expense of performances. In addition, I decided to use the Android SDK because I was expecting to make a software that could run easily on any Android device...

Step 7 (2013/03/13)

This version features:

The following screenshot illustrates shadow generated dynamically under the dragon. The shadow is generated by a depth map without any filtering (no blur so its edges remains 'hard'). Note that the dragon model is not correctly modeled: its two sides are not joined/close enough, which leads to a strong disconnection in the shadow.

Dynamic shadow under the dragon.

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device.

Step 6 (2013/03/03)

No screenshots this time because everything happened under the hood:

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device.

Step 5 (2013/02/17)

This version features:

The following screenshot illustrates the dragon that comes from a Wavefront .obj file that has been loaded.

A 3D dragon loaded from a Wavefront .obj file.

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device.

Step 4 (2013/02/11)

This version features:

The following screenshot illustrates normal mapping with a smiley that was part of the normal map.

Normal mapping in tangent space.

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device.

Step 3 (2013/01/29)

This version features:

The following screenshots show a stream of particles with a burst that begun at the first image and finished at the last one. New particles are colored in red but become blue and transparent over time.

Particles. Particles. Particles. Particles. Particles. Particles.

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device.

Step 2 (2013/01/13)

This version features:

The following screenshots show:

Rendering to a texture. Rendering to a texture. Rendering to a texture.
Using a previous render-texture as texture. Using a previous render-texture as texture. Using a previous render-texture as texture.

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device.

Step 1 (2013/01/09)

This software is in its infancy but provides already the following features:

Well, although I'm not very happy because nobody will be impressed by the result, I must prove by pictures that my software works so, see below.

Per-pixel lighting Per-pixel lighting, Laplace edge detection Per-pixel lighting, Perlin noise

The source code is available under the GPLv2 licence and is my property except if stated otherwise. You can try the APK file, which may work on your Android device. On my HTC Desire, I currently suffer from precision troubles with floats in my shaders which leads to incorrect lighting...