[Resolved][MDX]Realtime noise in HLSL

Started by
5 comments, last by CadeF 18 years, 1 month ago
Hey, does anyone know where I can find an article or a sample of realtime noise? I'm trying to make something like the background of the main menu in Midnight Club II. Thanks. :) [Edited by - CadeF on March 6, 2006 2:20:49 AM]
Advertisement
You could try interpolating between two pregenerated noise textures in HLSL. Just generate two textures with random noise and lerp between those over time in a pixel shader. I'm using this for my cloud rendering and it seems to work out just fine for that.

I tried googling for "midnight club menu", but there seem to be entirely to much midnight dinners out there, so I don't know if this technique is of use to you ;)
Rim van Wersch [ MDXInfo ] [ XNAInfo ] [ YouTube ] - Do yourself a favor and bookmark this excellent free online D3D/shader book!
Quote:Original post by remigius
I tried googling for "midnight club menu", but there seem to be entirely to much midnight dinners out there, so I don't know if this technique is of use to you ;)
Your googling powers are weak young jedi [lol]

Midnight Club II Screenshots, including this one that might be the menu:



Although, I can't see any noise in that image though [oh]

Anyway, regarding the original question...

I've seen some tricks similar to what remigius described - sample from multiple different noise textures using different resolutions and animated offsets. I'm not sure, but you could probably compute some sort of simple noise in a lengthy VShader and interpolate it using the pixel shader (possibly mixing in some "static" noise from a texture)...

hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

Nice suggestion, I've tried it before. It looks too... "repeatish".

The best I can describe it, is as a warping plasma field sorta thing. Jollyjeffers, that is it, but its too small to see and I dont think its visible when the menu is up, its visible when you start the game before navigating the menu.

VB6 Perlin Noise
Something like this would be nice. Note, there is an exe in the zip if you dont have VB6.
Quote:Your googling powers are weak young jedi


Thanks, Obi Jack Jolly [wink]


Quote:Nice suggestion, I've tried it before. It looks too... "repeatish"

Well, for my clouds I actually use 3 textures. Two textures are used by the shader at any given point for the interpolation, giving me about 2 seconds to fill the 3rd one with some new noise. Once the interpolation is finished, I swap the textures and interpolate again... Like this:

1) [1] -- Int(0.5) --> [2], [3] being filled2) [1] -- Int(1.0) --> [2], [1] is unused so swap and put in texture [3]3) [2] -- Int(0.0) --> [3], [1] starts being filled4) and so on...

Using the typical perlin noise octaves (3 will do) will further enhance the visuals.

Alternativly, you could implement a Perlin noise function in HLSL. I've been thinking about that too, but never got around to doing it since the approach above worked fine for me. Nevertheless, this article describes a noise function that seems simple enough (details in article near "Making your noise functions"):

  function IntNoise(32-bit integer: x)			     x = (x<<13) ^ x;    return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);      end IntNoise function


Whatever you decide to do, the look of plasma will probably also benefit from decent interpolation techniques and the exponentional cut-off which is commonly used for clouds. The article describes these thorougly, so it proved a must-read for noise stuff for me [smile]
Rim van Wersch [ MDXInfo ] [ XNAInfo ] [ YouTube ] - Do yourself a favor and bookmark this excellent free online D3D/shader book!
The noise in the article, will it animate smoothly? To animate perlin noise, for example, you increase the z sample.

Edit: After looking into perlin noise in hlsl, I found I need to make a permutation texture and a gradient texture. The code to make them is a function, in the format
func (tc : TEXCOORD0) : COLOR0
{
return somecolor;
}
As they are procedural textures. In MDX, how would I use create a texture like this?
Got it working, using turbulence with perlin noise. It won't fit under PS 2.0, but it does under PS 2.a so I'll leave it at that.

This topic is closed to new replies.

Advertisement