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.