Jump to content
  • Advertisement
  • entries
  • comments
  • views

Procedural Textures

Sign in to follow this  


Every few months/years, when I need to take a break from other projects, I pull out the ol' Accidental Noise Library and tinker with it, trying to make something cool/shiny. I'm in the midst of a project Goblinson Crusoe-related (a bit of story writing) and to let the old brainpan drain for a bit, I tinkered on a project I first played with a couple years ago but never really took anywhere. It's not all the useful, nor is it really all that complex. Just some procedural texture generation using ANL.


The project I had started was a sort of grammar, very simple, to describe chains of noise functions. I use the technique to great effect in my GC level generation and the Minecraft-type stuff I worked on awhile ago but in this project I took a different turn, creating a sort of grammar for generating the actual noise module trees randomly. For the above mosaic of textures, I generated 3 separate noise module trees recursively, using simple rules and random selection of modules. Then, the three channels are combined using HSV compositing (one channel each for hue, saturation and value) to get the final colormap. I built it so I could specify a maximum tree depth, lest it continue on into infinity. From even just a very small set of possible nodes, as you can see in the above, a very wide range of textures were created.

In Texturing and Modeling: A Procedural Approach, one of the sections discusses genetic algorithms for generating procedural textures; or, rather, for generating the algorithms that generate procedural textures. If you can imagine a noise module tree as a tree of "DNA", where each module type is a possible gene in the sequence, you'll get the idea. I haven't implemented any of the selection code yet, I just built a prototype of the system to spawn an initial generation. From there, I'd like to be able to page through a sequence of initial spawns and allow a user to flag some for further consideration, then perform genetic mutation and generational spawning to refine the selections for perceived aesthetic value.

I haven't built a comprehensive set of genes yet, either. All of the above are some 4-level deep combination of fractal or constant for leaf nodes, and fractal (with layer overrides), combiner, select, blend or turbulence for non-leaf nodes. To save computation time, I never went more than 5-levels deep. There is also a lot of potential to be exploited in the sections of RGBA color-space functions, which I will implement soon. This isn't a project I am super-serious about, it's just a toy. I mean, really, what possible use could any of the above textures be? But still, it's fun to tinker with.
Sign in to follow this  


Recommended Comments

[quote]I mean, really, what possible use could any of the above textures be? But still, it's fun to tinker with. [/quote]
An amoeba game could certainly benefit from some of these textures. The bottom center picture looks like a virus or similar.

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!