I spent the evening... and half the morning it looks like.. working on getting a realtime version of Ken Perlin's simplex noise running inside UDK.
First version went way over the instruction limit, so I popped out part of the compuation to a lookup texture, so now it runs in real time, but my simplex picking and blending isn't quite right. Its very noisy, but not in a useful way.
If I can get this working it will be pretty sweet for realtime effects though.
![:) :)](https://polycount.com/plugins/emojiextender/emoji/twitter/smile.png)
The sun was a fun thing that worked even with this broken version.
![SimplexNoise_WIP.jpg](http://dl.dropbox.com/u/442934/PC_Links/SimplexNoise_WIP.jpg)
![SimplexNoise_SUN_WIP.jpg](http://dl.dropbox.com/u/442934/PC_Links/SimplexNoise_SUN_WIP.jpg)
Replies
How the object gets it's coloration is dependent on the input to the noise node. For texture space based noise plug in uv coords appended with a z component of 0. For true 3d noise plug in a position, like world or local position.
I have some other examples to review that others have written that actually work.
maybe i just dont understand what it is creating. hah
If I can get this working in a light enough state the applications are near limitless to adding subtle realism to our worlds.
Other people have done realtime implementations.. I'm by no means the first, but its a complex enough thing I wanted to try so I can learn a bit more.
@ChrisPerr: Perlin Noise can be thought of as a sort of basic procedural texture atom. It outputs a pseudo random pattern in the range of -1 to +1. Basic noise is boring but good for adding large scale variations to things. Fractal noise is amazing for a number of things. If you do a simple fractal series addition you get really crazy complex gradient shifts. Adding successive absolute value's of noise functions gets patterns that resemble turbulent flow. You can use these for clouds, fire effects, or even plug it into mesh displacement, alter the coordinates per frame (ie multiply your x,y or z by some factor of time) and you can get a rolling non linear wind effect.
You can plug in the output of a noise function to a sine function on a gradient texture and get very convincing marble.
You could take basic fractal noise, mask it against an AO map of your model, then apply a mud texture for nearly unique dirtying of objects anywhere in the world sharing the same texture set.
You could control the number of octaves of noise with camera distance, while using the output as a control texture for subtle hue and saturation shifts to a character's skin along with the specularity levels to get near infinite detailing and variation out of a fairly flat texture. I once made rather convincing skin procedurally back on lightwave 5.5 with no textures. LW5 didn't have UV mapping capability.
Course, its not free, but its cool to me that this CAN be done realtime now. My first modeling program ONLY had procedural texture generation for its materials, and fractal noise was the major player.
anyway I altered a GLSL example I found on the web to see if it worked better in UDK.. and I'm getting very similar results. I may table this for a bit to clear my brain, then come back and build it up step by step so I can watch it evolve. This whole exercise has taught me a bit.
also as requested close up pix of the current implementation(s)
As you can see the borders between each simplex are REALLY visible, which is not supposed to be the case.
I'm also considering doing a bit of a texture based kludge if the programmatic versions are too heavy for realistic realtime use.