Categories
blog

 generative starfish

Categories
blog

gpu based math image synthesis


Generating images via the evaluation of a complex mathematical function in the cartesian plane has been done to death, see e.g., Karl Sims’ Genetic Images. But with the explosion of GPU based computing we can now rapidly explore these spaces. I whipped up a short program that does this. The basic procedure is:

  • Construct a string defining the function, for example:

“pow(p.y*9.5*p.y/p.x/p.y,acos(sqrt(p.x*p.x + p.y*p.y)))”

  • insert this into a function within a fragment program;
  • compile and use the program;
  • draw a rectangle covering the screen so that each fragment is fired.

The image generation is practically instantaneous. In my implementation I randomly generate functions as a key is pressed so you can quickly get a glimpse at the possibilities.


I also attempted an implementation in PixelBender, however as you cannot compile shader code at runtime the above method does not work. I began work on a general shader that reads in the function information (encoded in an image) and evaluates it at runtime, however I became stuck upon realising that recursive function calls are not possible and hence a manual stack has to be implemented. Gah.

Categories
blog

SDS3 First Prototype

It’s been just over a year now since the idea of a volumetric developmental system coupled with physical simulation (the Simplicial Developmental System) became the focus of my PhD. Since then I have built a 2d prototype and have been working out the theory and implementation details for a usable 3d version. I still have much more work to go trying to get something interesting done by January, but here is a sneak preview of the system I’ve been building.

Categories
blog

Why don’t we see more generative methods in modern games?

Playing through Fable 2 this week, I was awe struck by the large vivid world and its numerous trees, flowers, grasses, hills, rivers, buildings, etc. It has been beautifully constructed by an army of artists, each of the (10 million plus) flowers placed by hand. In scope it falls behind Oblivion, but it is much more beautiful and the elements more tightly integrated. Both of these games, to my knowledge, do not use any runtime generative methods to generate their worlds. If only part of the cpu was used to generate additional detail when requested, these worlds would appear infinitely more complex.

Imagine walking up to a tree and being able to examine the subtle geometry and texture of the bark. In implementation, we can either store the bark geometry (but imagine the space requirements for that) or generate it whenever we need it. When a player walks close enough to a tree, the cpu cycles devoted to procedural content would begin the process of generating the finer bark detail. There are simulation methods that will generate the necessary texture and geometry (albeit they need some work to run quickly.) When the player moves away the detail would then be either thrown away and regenerated again when needed or cached for later. This technique allows trees to have unique texture, takes up zero storage space, and costs nothing when trees aren’t examined.

I believe the poor uptake of generative methods lies in their poor integration into existing tools and lack of intuitive parameters for artists. More and more tools are appearing now which adopt some procedural methodology (CityEngine, GML, Xfrog) so hopefully we will soon see the integration of more advanced generative techniques into virtual worlds and games.

Categories
blog

random image dump

some unfinished creations

click to enlarge




Categories
blog

mrs porter

I am now a married man. I decided to keep my name, my wife however has changed hers. Luckily there’s no other Mrs Porter in my immediate family otherwise it could have been weird. Having a common family name unites us (against the evil military-industrial complex), however why should we take one name over the other? Hyphenation can only lead to confusion after two or so generations as the surnames increase exponentially in length. A better alternative in my opinion is to create a third name that both parties changes their family name to. This third name could be a mashed version of the two surnames, or alternatively a new, more superior, name. For instance, mash Buckley and Porter and get Bucter or Portley. I wonder how other cultures handle this issue? No doubt they are as phallocentric as ours.

Our wedding was in the Royal Botanical Gardens of Melbourne, a strange choice for the middle of winter. The weather on the day was clear and sunny, raining the moment after we said our I dos. The event went smoothly and I think all our guests had a great time. I am very humbled to now be formally wed to my soulmate.


We honeymooned in Vietnam, which was a compromise between my choice of Madagascar and Steph’s choice of Hawaii. It was no compromise, we absolutely loved the country. It’s an awe-inspiring and very dynamic country, seemlessly blending the authentic and traditional with self-organised cities and a rapidly developing economy. We spent three weeks exploring Vietnam with a full itenary the entire trip. In brief we started at Ho Chi Minh city, where the 3 million + motorbike owners (hello, moto?) and their self-organised traffic really opened my eyes to the stability of apparently chaotic systems. We toured around the Mekong Delta on a boat and visited Cu Chi where the Vietcong had established 200km of underground tunnels to live in and fight from during the American War. Here I am climbing into a secret entrance, there is no way I could have climbed through the tunnels it lead to though, wayyyyy too small.


Snaaake, snaaake, it’s a snake…


At the Temple of Literature in Hanoi there are numerous stone stelae with the names of students who had graduated with a doctor of philosophy. The earliest one is from the 15th century. They rest on giant tortoises. A tool poses in front of them.


Yes, a kangaroo with glowing red eyes. To be mysterious I won’t say where this is … but it’s definitely in Vietnam.

I observed a few things while abroad. These are my naive generalisations…

One: the fish sauce in Ho Chi Minh city is much nicer than the fish sauce in Hanoi.

Two: Everybody in Vietnam has a very specific job. Proof by example, while sitting on a beach a man would come by every 10 minutes, collect the shells and sea debri that had washed onto the shore, then throw them back into the ocean. The waves kept throwing more stuff onto the beach, but his job was to keep it spotless. Also, whilst eating at a restaurant one girl had the sole job of maintaining the level of fish sauce in our fish sauce receptacle. An extreme example of the generalist-specialist social theory?

Three: Everyone says “Hello!”. It is not uncommon to have this said to you many times on a walk around a town or city. Sometimes it is a curious poll. Sometimes it is a friendly greeting. Othertimes (though rarely) it is a barbed insult.

Four: You can’t fit five people on a motorbike.

Five: Four people on one motorbike is the strangest thing I’ve ever seen on a bike. Except for this:

… and maybe this Choco Pie. Originating in Korea, the Choco Pie is similar to a Wagon Wheel, but imho not as tasty. Props to the manufacturer for giving it such a clear name, it’s quite obvious what you are getting yourself into when you purchase this food ware, and it does not pretend to be anything else (unlike Nutri-Grain…) And how can resist their website…? (sound on)

Categories
projects

Isabelle Theorem Proving

From November 2005 to February 2006 I worked with the University of New South Wales, and National ICT Australia on a project entitled Top 100 Theorems. The project involved formalising some mathematical theorems into the Isabelle proof checker. A Top 100 list of popular mathematical theorems and the progress people have made in formalising them is on the web.

Categories
games

Old Games

A list of some of my older games, these may or may not work anymore. :)

Destroids

An asteroids clone I wrote as my first ever decent applet. Play in a new window.


FlashCityBuilder

An experiment with 3d flash, click to place a building or road, and use the arrow keys to rotate/zoom. Open in a new window. (requires flash)


Eden Platformer

An unfinished (but working) platform game experiment. The level consists of blocks that grow according to simple growth rules. Your goal is to reach the top of the level without falling to the ground. Also, blocks disappear as they age. This really is just a failed experiment in applying a simple growth process within a classic game genre.

The code requires Python and Pygame to run.


Ninjas!

An unfinished entry in an old gamedev.net competition. You can jump around and kick the zombies, but you can’t do much else. I removed the source from this site as it has some old dependencies.

Categories
blog

Firefox 3 available in under 10 hours.

The mayhem will commence shortly. Notice the barrage of plugin updates today? :)

Download Day 2008

Categories
blog

Wordle.net

Here is a fancy visualisation of my delicious tags, courtesy of the cool software at Wordle.net. At a quick glance you get an idea about what I get up to on the net.
The visualisation doesn’t reveal anything new to me. I must say, however, that my youtubeing is barely non-existent though it’s one of the first tags I see in the image (due to it’s parasitism on my colossal graphics tag).