I'll admit that the following screenshots don't depict the most attractive procedural world ever, but I think they're a step in the right direction. It's just proof that I'm able to build larger-scale works of proceduralism. I've been slowly building up the small, individual components for a long time, and I'm starting to get antsy to move on to the larger work (the combination of elements).
The scene uses the procedural texture generator that I've been working on. The generator is still not suitable for organic/natural textures, which is why the grass, mushroomy things, and sky all seem to have a metallic quality to them. Still, everything here is procedural, and that's the point.
Very simple, very stupid, but still somewhat interesting. Procedural space stations using blocks.
I'm definitely enjoying my first experiences with procedural grass.
A few more details on what's going on:
- 200,000 blades per scene
- Each blade is a curved strip of double-sided quads
- Perlin noise functions control various properties of the grass to give variation
- Blades have simple pre-computed occlusion based on the terrain height function
- Everything is generated on the CPU and shoved into a single vertex/index buffer
First attempt ever at grass! It had to happen sooner or later. I'm excited about the results
I'm back to playing with texture functions for a bit, mainly because I'm testing a new CPU-side texture generation method that I just implemented to make direct editing/creation of textures on the CPU really painless. The application that creates this texture is < 40 lines of code (no, that's not Python; it's c++!). Yes, it's black magic. Intuitive, scary, black magic.
Same old Perlin nonsense, this time with intentional banding! It looks rather nice. Hence the post.
Added some quick and dirty colors. Also pushed the quality to 1024x1024, just to see how it would look. Turns out to look amazingly-detailed...too bad it takes about a minute to generate (this is still CPU-side).
When I say quick and dirty, I mean it. Height colormap + perlin dirt map computed per pixel. Ouch. 5 KB pixelshader. Bigger ouch. But that's the beauty of prototyping! You don't have to be efficient about it. Took all of 5 minutes to write the shader for this.
The last image is only a 512 grid, for reference. The others are 1024.
Not surprisingly, I'm still doing work on procedural terrains every now and then. I decided to play with them on the CPU for a change tonight, just to experiment with new combinations of functions. Definitely surprised by the results!
Hopefully I'll get a chance to move this onto the GPU soon and cook up some sort of LOD scheme to start exploring these beauties!
This program is remarkable, even as simplistic as it currently is (it just places clever Gaussian distributions of metaballs).
When I get a chance, I'll start working on a context-free grammar to upgrade the ship generator. It won't be too difficult to imbue it with a sense of 'structure' and 'design,' considering the fantastic results I've achieved using CFGs in algorithmic composition. Music and ships aren't really that different
I'm having way too much fun. I love procedural content
Today I took a challenge from skeptics over at the Infinity: Quest for Earth forums. They didn't believe it was possible to procedurally create a ship. It took me two hours to come up with a program to disprove them.
Here are the results:
I've said it so many times already, but I'll go ahead and say it again. Procedural content is the future