Pixel Shaders : How creative are you?

Reverend

Banned
I'd asked this once, back when the first shader-capable hw became available. The responses weren't too encouraging (all you programmers here really aren't very creative! :) ).

So, let's re-visit this topic. Here's what I just wrote a game developer :

Reverend said:
Back when shader hardware became available, I'd asked in the B3D forums what PS (not VS!) can be used for. Basically a "how creative are you?" kinda question.

We've now witnessed PS used for a wide variety for effects; from water surfaces, to underwater, to offset mapping, to night-vision effects, "etc".

There's a reason I typed the word "etc" in quotes -- we haven't really seen enough, um, creativity from developers with regards to using PS to achieve really exciting effects. I remember that water surface effects was all the rage (and perhaps the *only* rage) back when the first shader-capable hardware made its debut.

Is this a "problem" due to not-so-creative minds, or a problem due to game design (Developer X :"this is sufficient, let's not wonder too much about what we can do with PS"), or a problem due to time and budget contraints (kinda related to the previous one about not spending too much time thinking what can be done with PS), or that current latest-and-greatest hardware still aren't good enough to let genuine creativity flow freely, or...?

Or am I clueless about some other innovative stuff already being done by developers with regards to PS, stuff that don't quite necessarily qualify as a "Wow" effect but innovative nontheless?

Remember, we're in the age of SM3, and not DX8.1 (SM1.4) !

So... what can you think of doing with pixel shaders?
 
A lot has been done in various games, say a heat shimmer effect in LockOn I think, ultrared goggles in some fps games, etc. Also the style of the game is a factor in what kind of effects are appropriate. Take that motorcycle game inside of a computer ie. lightcycles or something like that game that came out year ago. It used the blur effect for future tech. like scenery. There is more and I don't have the time to list all the games and special effects. Take a look at nvidia dev. site for GDC material to see more what has been done and where we're going with gfx fx.
 
Ehh how about bump mapping for starters.
Ohh heres another good one blending more then two or three textures in a single pass ( I believe in DX its up to 16 ).

Shaders aren't so much for special effect they are generic you can do many different types of light on a surface and they could all just use the one texture.

You can do procedual textures i.e. say fractals in shaders.

You can do heaps of screen space effects ( and you can apply them to texture too if youl ike ). Such as you can do digital viberance which of course normally you can't do on ati cards since the drivers don't support it atleast.

You can do non graphical things such as using uber buffer to calculate particle physics on your graphics card.
 
Before the dx8 era only matrox cards could do EMBM. The first ATI card that could do it was the r8500. Uses shaders.
 
Well if you gonna be like that then there is nothing we need shaders for we can just keep making new graphics chips wtih fixed functions. Can't wait for that new chip to come with all of doom 3's shaders implemented in hardware.

EMBM is really far from a standard fixed function IMHO.

Regarld EMBM is rather different from normal mapping which is really what we consider bumping these days. Though like EMBM there are fixed function implementations of that too.
 
That is unexpected. I was positive EMBM only works in games with a Millenium or a SM1.4 capable card.
Even the GF3 couldn't do the final EMBM tests in 3Dmark2001 330.
You needed a radeon8500 minimum to enable EMBM in dungeonkeeper or a matrox.
 
Sandwich said:
Before the dx8 era only matrox cards could do EMBM. The first ATI card that could do it was the r8500. Uses shaders.
Kyro could do EMBM as well as dot product bump mapping.
 
Simon F said:
Sandwich said:
Before the dx8 era only matrox cards could do EMBM. The first ATI card that could do it was the r8500. Uses shaders.
Kyro could do EMBM as well as dot product bump mapping.

Did you ever got the opportunity to test whether it actually worked? DK2 or another game?
 
come on Simon! not all newbies know your background. :)



hey, did someone say EMBM?? Then I have to say:
PyRRRRRRRRRRRRRRRRRRRRRRRRRamid3D!

and yeah, everyone knows the background story behind EMBM and Pyramid3D so, I am not going to put that much blablablaa here about it,but yes, the first programming example in Pyramid3D Hardware Reference Guide shows that EMBM wasn't originally ment to be a part of fixed pipeline design.

Sandwich said:
That is unexpected. I was positive EMBM only works in games with a Millenium or a SM1.4 capable card.
Even the GF3 couldn't do the final EMBM tests in 3Dmark2001 330.
You needed a radeon8500 minimum to enable EMBM in dungeonkeeper or a matrox.

Following DX7 / DX6 decade cards / chips can do EMBM:
- Tritech Pyramid3D
- Matrox G400
- PowerVR / Imgtech Kyro and Kyro II
- Ati Radeon, Radeon VE and upwards.

nVidia was the only one who didn't implemented the EMBM before they had to because it came basically free with Pixel Shaders. There certainly was games that didn't allowed enabling EMBM without certain manufacturer chip and there also was the difference between having EMBM implemented as Pixel Shader program or Fixed Pipeline.

for example:
1. Colin Mcrae Rally 2.0 supports EMBM, but it allows enabling it only with G400.
2. 3DMark 2000 already has EMBM test, which runs nicely with all cards that support DX6 Bump Mapping (which is in fact Fixed Pipeline version of EMBM.) I have run successfully this test with G400 and Radeon, plus I have seen it ran on Kyro.
 
Nappe1 said:
nVidia was the only one who didn't implemented the EMBM before they had to because it came basically free with Pixel Shaders.
Well basically it turned out to be almost useless without shaders so NV had a point here.
 
DegustatoR said:
Nappe1 said:
nVidia was the only one who didn't implemented the EMBM before they had to because it came basically free with Pixel Shaders.
Well basically it turned out to be almost useless without shaders so NV had a point here.

I am not going to argue about this but IMO, it was more like they just didn't want support it. Instead of supporting EMBM, they made another fixed pipeline bump mapping: Dot3 Bump Mapping for GeForce -series and it got supported even less than EMBM.
 
DOT3 is far more useful and general than EMBM. With DOT3 and register combiners, you could do primitive DX8 style shaders. In fact, DX8 PS1.1 is pretty much a small extension of what was available with register combiners. John Carmack also started designing Doom3 to support DOT3 on GF2. (DOT3 was also supported on the Radeon7500 wasn't it?)

I would argue that the reason why you didn't see much support was because of development lag and that by the the time developers started picking up on it, DX8 was introduced.

DOT3 could be used as a building block for many fixed function effects, EMBM was far more limited.
 
Also, dot3 is relatively inexpensive to implement, you need the mul and add anyway. EMBM, i.e. dependent texture reads, required a major architectural change in the TMU going from NV1x to NV2x.
 
I'm recently working on a tileshader (using PS1.4). You can think of it as some kind of texture compression.

index-map: 128x128 (V16U16), tile-map: 128x128 (R8G8B8)
scr0.png

scr1.png

scr2.png


index-map: 128x128 (V16U16), tile-map: 1024x512 (R8G8B8)
scr3.png

scr4.png


NOTE: the index-maps are filled with junk now.

I'm going to make a matrix effect using it.
 
Yeah, it took me a lot of time to make that kanji-map (from four separate irregular maps). :)

Although the shader can deal with arbitrary tilesets (so not just writings), I need a kanji-map for the matrix effect anyway. :D
 
Back
Top