hardware support for glsl noise()

I heard that GLSL noise1/2/3/4 functions are only implemented on the 3DLabs Wildcat Realizm. And I also know that these are not implemented on Nvidia card according to <<NVIDIA_OpenGL_2.0_Support.pdf>>.
But what if the ATI(AMD) cards, does ATI really not support noise series functions ? Anybody could give me some official material about ATI’s support information for OpenGL2.0, or
give me some definite description about that.
Thank you very much!

I think the conventional wisdom for consumer hw is to roll your own noise functions.

We may yet see these implemented across the board, but I’m not holding my breath just yet. Low priority item, I suspect, since it’s relatively easy to emulate this functionality in a shader and the additional silicon to do this in hardware would be… well, additional.

As for official docs, I would think the AMD developer site would provide you with detailed information in this area.

Rolling your own noise functions is better IMO also, and as modus has said.

But the noise functions on ATI GLSL work AFAIK. I have used them on the x1600 and up. Generally they were not as fast as I wanted, but they were at least working… last time I checked, anyway.

Thank both of you very much! But the work I have to do right now is not making good effects with relatively low-end graphics card,
But just coding some test-program for testing the hardware supporting condition of some assigned graphics cards(truely boring… :() I will continue to find official docs on AMD developer site…In any case, thank you very much!

Testing hardware ?
Just draw a black and white noise() textured quad.
Then :

  • read pixels and compute variance : if high enough, ok.
  • benchmark a hundred of fullscreen draws : if time-per-frame is low enough, ok

Thank you very much! I tested them by the method which is similar to the first advice(The testing method we used is some kind of “function by function” testing,but not “Frame Per Second” testing). I tested them on Nvidia GeForce8800GT and Quadro FX4600,but they didn’t work.
And the trouble I met is that when they were implemented on ATI RADEON X300 card in note PC(The other extreme, huh :slight_smile: ), if I put noise1/2/3/4() in fragment shader, it works well! But when I put them in vertex shader, it doesn’t work.
All of the cards I mentioned are not final testing object. The point is I must ensure that my test-program itself has no bugs and it can accurately test out the performance condition of cards. For that reason, I have to make my cords implemented on all kinds of cards. But if I could find out the official docs about ATI’s detailed supporting condition for OpenGL2.0 (is just like <<NVIDIA_OpenGL_2.0_Support.pdf>>)to figure out that noise() is supported/vertex supported/fragment supported/not supported by some assigned types of ATI cards, these docs could help me to confirm that my codes have no problems.

Noise is a bit of an oddity in GLSL (and HLSL); it’s unprecedented in the sense that no other built-in function in the language is virtually unimplemented right out of the box, with no means provided to determine support save for ad hoc testing procedures or the scattered availability of vendor documents.

Perhaps in time, in the face of widespread implementation, we’ll see an extension/preprocessor #define of some kind that you can query directly or block your code with.

It’s a pickle. And I agree that an official document - clearly stating support for a specific version onward - is really the only sane option. An explicit, documented binding of GLSL version and feature support across the board is just the ticket. This has worked for core OpenGL from the beginning; and it should work for core GLSL too.

The upside is that we can always roll our own; and there are so many tasty flavors of noise to choose from (e.g., Perlin, Simplex, Wavelet, etc.) :wink:

Thank you very much for best explanation! :smiley:
After this time around, I’ll make hard efforts to roll my own noise functions as well as coding my own 3D realtime rendering programs. :slight_smile: