Wednesday, November 28, 2012

NeoTextureEdit 0.6.4 Released

I just released a new version (0.6.4) of NeoTextureEdit (my open source graph-based procedural texture editor). The major additions in this version are

Spectral Control Widget

you can now control the individual frequency bands of the perlin noise pattern via a simple widget. This allows you more control than the standard persistance parameter that gives you only an exponential falloff:

Directional Blur

the addition of an anisotropy parameter and an angle to the blur filter allows you to perform directional effects:

Modulus and Math1 Filter

The modulus filter was contributed by a user (Talin) and allows you to create an u-coordinate dependent color shift. The Math1 filter perform simple single-input math operations (like exponentiation for gamma correction, or single channel multiplication/add):

Node Folding

this feature was requested by a user and should help reduce the visual clutter in larger texture graphs:

You can download the latest version of NeoTextureEdit at Sourceforge or visit the Homepage for more information about the features.

Thursday, November 8, 2012

Hammersley Points on the Hemisphere

I wrote a short collection of notes that describe how to use the Hammersley point set in 2d for generating fast sampling points on the hemisphere. The notes can be found at
The Hammersley point set is one of the simplest quasi-Monte Carlo sampling patterns and in 2d it can be efficiently generated with a couple of bit operations (and some floating point multiplications). It is thus a good candidate when some 2d sampling pattern is needed inside a shader program and is a good alternative to using a look-up table in many applications. The article focuses mainly on generating sampling points on the hemisphere but the point set can of course be used for many other applications like shadow map filtering or screen space ambient occlusion.
Here is an image of the pattern for 16 points:
In the article above you can interactively change the number of points to see how the pattern behaves.

Monday, October 29, 2012

Sparse Virtual Texturing Demo

I recently had some spare time to write a sparse virtual texturing demo using OpenGL. The current state of the demo can be seen in the video below.
Sparse virtual texturing is basically an out of core rendering technique that allows using textures that exceed available video memory by splitting them into small tiles and only load on demand the needed tiles.
During the development I also wrote up some notes regarding other work on this topic and on how I created my test data. These notes can be found at

So far the demo uses a 32256x32256 pixel virtual texture and 128x128 pixels per tile. It supports tri-linear filtering and asynchronous loading of tiles from disc.

To create the test data I used blender to bake a procedural texture and the lighting into the virtual texture. Some more details on the scene and the .blend file can be found at the link above.

Below is another video showing the same scene with a 16128x16128 pixel test texture.

Friday, February 10, 2012

Gem Square (Android) updated to 1.2.5

Just a quick note, that finally Gem Square for Android got a small update. The most notable features are a fix for the high score system and a main menu button to enable and disable sound. I also updated the facebook integration.

Saturday, June 12, 2010

Web-Version of Gem Square

With the development of the web service for my own high score system I decided to also create a web version of Gem Square. You can play it at The game is implemented as a Java Applet and uses the same game code as the Android version. It has its own weekly and all-time high score board that is viewable on the web page. I think the mouse interface works quite well considering that the game was designed for touch screen devices. Give it a try and let me know what you think.

Monday, June 7, 2010

Building my own global High Score system

I just released a new version of Gem Square (1.2) and with this version my new high score system is going live. In the older versions I used ScoreNinja that worked ok but I missed some important features like saving your nickname and multiple highscore lists. So I decided to build my own global high score system using Googles app engine. It now supports multiple lists per application which I use for Gem Square to provide an all-time highscore lists and a weekly list. The details of the high score system are quite simple. It is a servlet written in Java that recieves the highscore posts via HTTP, stores them in a database and returns the top ten for each list. Now that I have my own system I can think of many nice features I want to integrate in the future. One of this features would be to actually show the current high scores on a web page.

Thursday, May 27, 2010

Push Down! - Update to 1.2

I just released an update for my puzzle game Push Down. After some considerations it now contains a new level selection scheme. I think the old one with a linear progression did not fit very well to the rest of the game structure. So now you can select each level in the game directly from the start but they are still ordered roughly by difficulty. Additionally I introduced a new rating system for each map based on the number of completion steps. So now the less steps you need to complete a level the better your rating gets. The best rating you can get are three stars and the worst a C (but you really have to wander aimlessly in a level to get a C). And finally I decided to exchange the black background to something more colorful. Here a two screenshots of the updated game.

If you have any comments please let me know.