Dawn on ATI hardware? How did they do it?

antlers

Regular
First, was I totally naive in thinking that the Dawn-capable OpenGL driver really was the work of some talented CS student, and not something ATI developed themselves and released anonymously?

Second, I remember someone at NVidia saying that Dawn would just be impossible on R300 hardware, because some of the pixel shaders used branching and things and were up to 350 instructions long.

So, were the NVidia guys using "350 instructions and branching" in the same way that the NV30 had "8 pipelines"?

Or does the OpenGL driver completely rewrite the shaders so they fit within the R300s limit? If so, does this imply that the original Dawn shaders were written very inefficiently?

Or does the OpenGL driver set up multipassing somehow? Wouldn't that be difficult to do without modding the application?
 
I think that some of the effects that were done through the wrapper were not as detailed as the NV30 ones. Though that may have been a precision thing and I've got it confused.

Uttar should know this one, since he's the one who stripped Dawn for the internet and is now eagerly awaiting Dusk.

Oh, and the new NV35 demos are available along with movies of them from here. Dusk and Vulcan look particulary impressive!!
 
I'm waiting to see Uttar make a nude patch for the Ati's monkey demo.
I want to see some monkey groin...
:LOL:
 
I don't know what you were insinuating with your first comment, but the OpenGL Wrapper really was created by an MIT CS student...
 
EDIT: Oopsy! Sorry people, I never realized the R3xx was capable of 16 textures per pass too - how embarassing! :oops:
So, well, considering that, there doesn't seem to be anything in the Dawn demo unabling it to run in a single pass on the R300.

Okay, so I just checked the Dawn code again...
The R300 can't do exactly the same operations as the NV30 in a single pass. It is not possible, because Dawn sometimes uses up to 10 textures, and the R300 only support 8 textures per pass ( the NV3x supports 16 )

Beside that, there should be no reason for the original operations to not be possible on a R300. While Dawn does use very aggressive vertex skinning, there's no dynamic branching of any kind it seems. In fact, it even seems there isn't any branching! Or if there isn't, then, there most certainly isn't much of it, since I couldn't spot any...

BTW, you made a mistake in your original post: the NV30 does NOT support branching in the Pixel Shader. Only the in Vertex Shader. And the R300 also supports static branching in the VS, just not dynamic branching, and frankly, that's quite slow, and rarely useful - but sometimes, it IS useful, so it is a nice feature IMO, probably mostly nice for workstations...
And Dawn doesn't really uses 350 instruction shaders. I think that was the old car demo, not sure though.


But that MIT student was able to fix this little texture problem in a very elegant way IMO.
The release info mentionned one modification, which "increased quality": normalization is not done in a texture, but with arithmetic. And yes, this does increase quality. And it also makes it possible to run in a single pass on a R300.

Ironic how the modification to make it run in a single pass on the R3xx also increases IQ, isn't it?

I hope that makes it clearer :) Maybe there are other required changes I didn't figure out, but I really think this is the most important one anyway.


Uttar
 
Uttar said:
Okay, so I just checked the Dawn code again...
The R300 can't do exactly the same operations as the NV30 in a single pass. It is not possible, because Dawn sometimes uses up to 10 textures, and the R300 only support 8 textures per pass ( the NV3x supports 16 )
Both the R300 and NV30 support 16 textures per pass using PS2.0 or higher shaders; as far as I'm aware it's a requirement of PS2.0 - the 8 texture per pass limit is for fixed function stuff.
 
Both the R300 and NV30 support 16 textures per pass using PS2.0 or higher shaders; as far as I'm aware it's a requirement of PS2.0

Yes.

DX Caps will report 8 for both R3x0 and NV3x, but will be able to do 16 via shaders.
 
That DX caps indicating 8 is just for fixed function blending which is limited to 8 by DX itself. For PS2.0 you need to support at least 16 samplers hence 16 different textures can be accessed from the shader.

The only difference in ATI and NV3X in terms of texturing is that NV3X has no limited on the number of texture instructions (bar the total instruction count limit) while ATI has only support for upto 32 texture related instructions. So if the demo uses more than 32 texture instructions then ATI would have a problem. Similar if it required more than 64 arithmetic instructions there would be a problem BUT this number of instructions would make the demo to slow to launch your hardware with (no-one is going to be impressed by something running at 1 fps no matter how stunning the shader is - people want flashy fast graphics).

IIRC the shaders used are actually in readable textfiles so you can quite easily decide if ATI can execute the shaders.

IMHO Writing an OGL wrapper from some custom NV extensions to general extensions is not an imposible task, especially if its only done for one specific target app.

K-
 
Ratchet said:
I don't know what you were insinuating with your first comment, but the OpenGL Wrapper really was created by an MIT CS student...
If the person developed this OpenGl wrapper i doubt that person plays CS.
BTW was it one or three students??
 
Unit01 said:
Ratchet said:
I don't know what you were insinuating with your first comment, but the OpenGL Wrapper really was created by an MIT CS student...
If the person developed this OpenGl wrapper i doubt that person plays CS.
BTW was it one or three students??
I believe that CS, in this context, means "Computer Science" not "Counterstrike".

But I could be wrong :D

-FUDie
 
Tagrineth said:
They teach people to play Counter-Strike at MIT :oops:

COOL! 8)

That would make sense considering only ppl. that hax0r play it. :rolleyes:
Seriously though , CS has cheats with a GUI menu for ease of use ................
 
Back
Top