For reference: Procedural Ships I (three years ago).
There will always be more to do. Even as far as I've come, you could easily single out a thousand things to improve. The texturing is awful. And is that a complete lack of bumpmap? Yikes. Spec map is boring. Every plate is pretty much the same -- no color, no different texturing, no nothing. Boring. The geometric structure? It's a 60-line algorithm, terribly simple and still terribly illogical.
And yet, somehow, I find myself falling in love with these ships. They are something more than the sum of their parts. Somehow, in the childish simplicity of it all, there is beauty.
Three years ago I was on the tip of the iceberg. Now, I feel, nothing has changed in that regard. The ships are a thousand times better, and yet, every moment that I explore proceduralism is another moment in which I realize that the iceberg is bigger than I ever did -- perhaps ever will -- comprehend. I now find it quite likely that I'll live out my entire life on the tip of this iceberg. It isn't a bad thing
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