Archive for May, 2008

22
May
08

Radial VDM, Sobel Normalmap

OK, time for some explanation:
These are meshes created using ‘Vertex Displacement Mapping’. The displacement image used to create the distorted sphere form is behind each mesh. I’ve experimented with this technique before (and been less-than-impressed by the resulting framerates), but this time I’ve tried to add lighting by using a normal map in the Fragment shader. Normal map creation is also something I’ve tried before, but this time I tried a different method of creating it, based on modified Sobel filter code Desaxismundi very kindly sent me. I’m not altogether pleased with the results, which show a lot of ‘stepping’, but it’s an interesting experiment.

The first set of five snaps use simple, diffuse-only lighting. With the others, I’ve implemented the velvet lighting effect I mentioned in a previous post. Looks a bit odd on a ‘spiky’ form. More crystalline than soft and velvetty, I think, but it’s still a nice look. I’ll try a version with Phong lighting too, but I want to produce a set of portable, generalised Phong lighting Vertex and Fragment shader functions that I can easily apply to other projects, rather than just hacking-together something that works for this specific case.

21
May
08

Accidental Niceness

I was experimenting with a adding surface texture to the Paraboloid Spread shader, and pushed one of the parameters further than I usually would. The result was really cool!

What’s actually happening is that I’ve added a repeating pattern to the surface of each individual mesh strip. There’s a control for the size of each texture ’tile’, and in this case, I’ve set this all the way up to 1.0. This stretches the tile image (in this case a blurry circle) to fill the whole area of the mesh, blurring it in the process. Setting the mesh blending mode to Add melds the meshes together, giving this fiery, explosion-like effect.

The fifth pic there was the result of another happy accident, when I set the tiling surface pattern for the mesh to an image input, but neglected to connect anything to it, resulting in a really nice glitchy noise-type effect, that flashes on and off in a really cool way.

21
May
08

Kineme SuperGLSLGrid

I’ve been helping test an exciting new Quartz Composer plugin for Christopher Wright of Kineme.net.

The concept is very simple:
What it does, is allow you to set uniform variables in a GLSL shader on a per-mesh basis. Usually, uniforms are identical for every mesh inside a GLSL Shader patch, but with this plugin, you can do all kinds of cool stuff- for example, you can create 64 separate meshes, with individual Color, Scale and Position properties. This is how I managed to create the ‘Pseudospreads’ screenshots.

Currently, there’s only one ‘Super’ plugin- a VBO-based grid, similar to the builtin GLSL Grid patch. The plan is to eventually add other primitives (Sphere, Cube, Cylinder, Cone etc.).

It’s still in beta at the moment, but so far it seems very stable. As soon as it’s publicly available, I’ll post a link to it, and also post some of my experimental QTZs that make use of it.

21
May
08

Pseudospreads, Steinbach Screw

21
May
08

Pseudospreads, Helicoid

21
May
08

Pseudospreads, Paraboloid

Same technique, different surface formula:

20
May
08

Patching Marathon (Pt.x)

It turns out the builtin Iterator patch is ridiculously inefficient, necessitating this kind of nonsense to get decent performance-
64 identical macros.

You can see why I was anxious to develop a way of connecting all the controls inside each macro with a single cable…!

Each macro has one connection, and has to have one unique ID number set, so even with structure-based one-cable connection, it takes a good ten RSI-risking minutes or so to set all 64 up.

Hope Apple sort out the issues with the Iterator patch soon! Currently I get about twice the framerate doing things this way.




Twitter

May 2008
M T W T F S S
« Apr   Jun »
 1234
567891011
12131415161718
19202122232425
262728293031  

Links

Blog Stats

  • 470,218 hits