More than a year on and shaders are unimpressive

"Haegemonia - Legions of Iron" from Digital Reality will feature some shader effects that go a bit beyond what's currently out there.
Spaceship hulls will have specular maps and self-illum maps for small lights. Planets will have specular maps so that only the oceans are shiny; self-illum maps for lava on volcanic maps; layered clouds; and some planets and asteroids will have dot3 lighting too. It also has some continous LOD to display lots of vessels.

It might not be flashy enough to please Reverend, but it's minimum HW is a GF1 and it runs nice on it. AFAIK a rolling demo should be out soon.

Links:
www.haegemonia.com
www.digitalreality.hu
 
Hyp-X said:
DemoCoder said:
Nope, you don't need pow(). A reasonable approximation for exponents between 1 and 8 can be done by shifting. Ghost of Envy posted a demo on B3D along time ago demonstrating...

Do you have any details? (or links)

How many passes are used by that algorithm?

Is it possible to do that with D3D?

I mistyped on the previous post so maybe that's what confused you.

No links, it was on the old B3D boards, but if I recall, it used two tricks. First, the phong exponents of 2, 3, 4, and 8 would be accomplished by simple multiplies, e.g.

x^2 = x*x
x^4 = x^2 * x^2
x^8 = x^4 * x^4

and of course, those inbetween can be done via other combinations. The only limitation was how many stages of the combiners you were willing to burn.

However, the most important thing in per-pixel phong is not the specular exponent, but renormalizing interpolated vectors into unit vectors. In the old days. a normalizing cube map was used to do this (basically a lookup table), but it can be done "on the fly" with register combiners.

Given a vector V, you want to compute normalize(V)= V/sqrt(V dot V). Using Newton Raphson approximation (x' = x - f(x)/f'(x) ) you can show this can be approximated by V/2 * ( 3 - VdotV ) (when the angle between two vertices in the polygon isn't that much. e.g. the interpolated vector V you start with is already close to normalized)

However, V/2 * (3 - V.V) can be rewritten to take advantage of the register combiner's builtin ability to bias and shift. It can be rewritten as V + V/2 * (1 - V.V) which will only require 2 combiner stages.

Thus, per-pixel renormalization can be done via 2 combiner stages. Likewise, computing pow() for small exponents can be done by burning another 2-3 stages.

Now, this isn't terribly useful since by the time you're done, you've got per-pixel phong, but no combiners left over to do anything else, but it demonstrates the types of computations that can be done with ingenuity.
 
You also introduce artifacts with that method. I hesitate to picture to exactly what degree they'll be visible or not.

For vectors that depart sizably from unity, normalization with only a 2nd order approximation might very well be painful.
 
We should have an Interview with JC soon, based on choice pickings of questions by you folks. I already have the answers, just need to make the web pages.
 
Laa-Yosh said:
It might not be flashy enough to please Reverend, but it's minimum HW is a GF1 and it runs nice on it.
Looks very spiffy to me, but I think I'm more impressed by the textures than the shaders. Thanks for the link.
 
Renormalisation on earlier HW

Cube maps are very fashionable at the moment, but if you had time to burn you could try..

Render to texture... dot3 to alpha, normal to RGB
Render back to screen using palletted alpha modulate ( This works on PS2, which is a good example of an simple featured renderer... )
There's only 8 bits of accuracy, which isn't much...
 
I was not saying that the process or function of Dot3 is the same as S3TC. What i am saying is that for a great portion of what we have seen. using ultra High-rez textures will achieve nearly the same result visually.

Realistic wood, conctrete etc etc...
 
Fred said:
You also introduce artifacts with that method. I hesitate to picture to exactly what degree they'll be visible or not.

For vectors that depart sizably from unity, normalization with only a 2nd order approximation might very well be painful.

This was the whole debate, and Ghost of Envy settled it by coding up a demo to prove that there are no visible artifacts for reasonable geometry sets. Nvidia also has a demo of this on their developer site.

Yes, if the angle between two vertex's normals is more than about 40 degrees, you will introduce lots of error. However, with most geometry, you can minimize this. Moreover, there are even bigger artifacts when you don't renormalize the interpolated normals, and alot of game engines don't use any renormalization.

If I recall, Ghost of Envy's demo showed no renormalization, vs cube-map renormalization, vs register combiners, and the register combiners mode had the least artifacts due to the limitations of using lookup tables.

I'm not suggesting it's perfect. What I'm suggesting is that in future pixel shaders, we will be able to procedurally calculate what used to be done via lookup tables, like full BRDF's, etc.
 
Got a response from JC on bump mapping in DOOM3:

We do not support any mode without bump mapping, but specular bump highlights can be disabled to get a speed boost on older hardware.
 
I found Ghost's demo on my HD.

Except from showing off single pass Phong, it also reveals some interesting things about internal precision in my GF2 when using a 16 bit framebuffer.
 
Basic said:
I found Ghost's demo on my HD.

Except from showing off single pass Phong, it also reveals some interesting things about internal precision in my GF2 when using a 16 bit framebuffer.

Can you repost the source?

Where is Ghost nowadays? I think he disappeared when the forums were down for like 2 months. Probably doesn't know it's back up.
 
Hellbinder[CE said:
]I was not saying that the process or function of Dot3 is the same as S3TC. What i am saying is that for a great portion of what we have seen. using ultra High-rez textures will achieve nearly the same result visually.

Realistic wood, conctrete etc etc...

Not even close. No high rez texture, no matter how large, will come close to achieving the same result visually as a pixel shader that properly models diffuse/specular light scattering for wood/concrete, etc.

Maybe in a static screenshot, but as soon as you move the camera or a light, the fraud would be exposed. The point of bump maps and pixel shaders isn't to merely emulate bumps on the surface. The purpose is to provide a map of normals for the surface, such that given the known material properties of the surface, the position of lights and the viewer, you can calculate the proper lighting for a given picture.

All a 4096x4096 wood texture would do is look good in a screenshot with the viewer looking directly at it. But it would look very wrong on the floor when you walked across it.
 
If source==URL then sorry, I don't remember where I got it. But I hope Ghost won't mind if I mail it.

Just mail me something I can reply to. (I won't pass on addresses from users that don't want to show them in their profile.)

Btw, according to the memberlist:
Ghost of Envy
Joined: 22 Apr 2002
Total posts: 0
 
Here's some shader lovin' for you, Reverend :)

The Matrox Parhelia cards come with a playable demo of Imperium Galactica III: Genesis to showcase Surround gaming. The demo also runs on any hw T&L video card (dunno about Kyro).

In case you cannot get a Parhelia, you can still download the demo (60 MB) from this hungarian site:
www.hardwired.hu

It's been available since yesterday, so you should be able to find it easily.
The game supports effects like bump mapping and self-shadowing on the spaceships and planets on GF3 and GF4 cards (and maybe Radeons too).

(PS: I've been working on the game's cinematics during the past 8 months, so you can say I'm biased ;)


Edit: the hardwired.hu server couldn't handle the international load, so from now on you should use the 3D Gamers link below.
 
one other thing that may not have been mentioned is also production time of the games themselves

really good games (like doom3) take a while, 2 or more years etc... Yes they do evolve along the way of course, but at their conception all they can do is base games on current cards, so we are still in a stage where a couple of years ago GF3 was extremely high end, and most people didn't have one...

a couple years from now the GF4 and Radeon 8500 may be the baseline, which will help...

it just takes time, we are still in 3D's infancy here, and games come about slower then hardware...
 
Well how about that. 3dfx pilloried for not including the features of their competitors, but see how long it has taken for the software industry to catch up with the hardware? 3dfx died because they tried to build their own boards, not because of design decisions.
 
Above said:
Well how about that. 3dfx pilloried for not including the features of their competitors, but see how long it has taken for the software industry to catch up with the hardware? 3dfx died because they tried to build their own boards, not because of design decisions.
More of a mixture of different reasons. They certainly knew how to design boards, but their execution was exceptionally poor with the VSA100 taking waaay too much time to come to market. That and insisting on making their own boards too long (AFAIK they tried to change that before the end, but too late) were their downfall ...

How does this relate to shaders again?
 
Yaa-Losh said:
Here's some shader lovin' for you, Reverend :)

The Matrox Parhelia cards come with a playable demo of Imperium Galactica III: Genesis to showcase Surround gaming. The demo also runs on any hw T&L video card (dunno about Kyro).


I have to say that demo look pretty impressive, even on a Kyro II :).
 
That game looks great :)...I only wish you actually flew the ships like the Wing Commander series...with that engine it would be cool :)
 
Back
Top