D44.03 shader code

BoardBonobo

My hat is white(ish)!
Veteran
I've lifted the shader code from the det 44.03's. I won't post it directly for obvious reasons, but if any shader heads want a copy to look over...
 
Sorry, must be stupid today, but what do you mean exactly?
That you got the shader code nVidia replaces existing shader code with in things like 3DMark?


Uttar
 
Well for about three revisions now their drivers have been full of shader code. I just stripped it all out, I have no idea as to whether it has any relevance to the the 3dmark thing. I just thought somebody might be interested in having a look. :)
 
Just rapidly browsed through them ( he sent them to me by PM )
And frankly, it's impossible to know exactly what they do, since they're using constants and stuff - by themselves, they don't mean anything IMO.

However, it's easy to realize they're all ( or at least, 99% of them, since I only looked quite rapidly ) VS programs. And none of them seem like very complex ones, either...

So I ask: why would nVidia hardcode simple vertex programs, with probably little or no optimization opportunity.
Well, according to FutureMark, the static clip planes are activated whenever a specific shader is detected.
And the number of shaders ( 10+ ) makes me think this is not limited to 3DMark 2003's Game 4.

So, should those indeed be detection mechanisms ( and frankly, I've got no idea, they could be anything ) - well, we're in some deep trouble here...

BTW, BoardBonobo, you didn't say me if you wanted me to host the thing at NFI :)


Uttar
 
Run the popular benchmarks. Strip out the code, then re-run the benchmarks. See what benchmarks are affected if any.

In particular, I'd like to see Shadermark run with and without this shader code as it mysteriously doubled performance with these drivers.
I'd like to see splinter cell run also.
 
Maybe these short VS programs are part of the T&L emulation through the vertex array (just a noob thought, that is ;) )
 
wow you have 32 bit percision hardware and you have to use driver hacks to lower it to 16, 12, INTX or whatever just to compete with your competitor.......


I'll bet that

1. no one picks up on it
2. Kyle will be very quite or come up with a nVidia PR prepared statement.
 
YOu know I for one have to seriously question weither or not the nV3X design is a good overall solution. The way things are turning out to be in the drivers makes me uderstand that it is a bad bad bad design....if it was a good or very good design, why would one need to use all of these driver hacks?
 
YeuEmMaiMai said:
wow you have 32 bit percision hardware and you have to use driver hacks to lower it to 16, 12, INTX or whatever just to compete with your competitor.......


I'll bet that

1. no one picks up on it
2. Kyle will be very quite or come up with a nVidia PR prepared statement.

I hope you're wrong YeuEm, if this pans out it should be picked up by everyone!

Methinks I'm gonna go take a quick check in on the most asshatted one...
 
Uttar said:
BTW, BoardBonobo, you didn't say me if you wanted me to host the thing at NFI :)

Uttar

You can if you want but I think itmay be dangerous territory, after all they are proprietery code and belong to someone... ;)
 
Are these shaders just plain ASCII strings in the drivers? If so, I'd propose that someone hex edited those strings a little and see if it breaks some games or benchmarks.
 
reading these forums just keeps showing me how much more I need to learn :oops: I haven't messed with PS or VS yet... long road ahead.
 
pocketmoon_ said:
could be that fixed function pipeline is (partially) implemented using shaders now.
Sure, but you shouldn't need to store every possible fixed function shader in your driver code. Do you know how many possible fixed function shaders there are when you support 8 fixed-function texture stages?
 
Except for the very first one, they all look pretty innocent. The first one may be innocent too but its hard to tell without knowing what some of the constant registers are seeded with.

For instance this:
%!VP1.0
MAIN:
MOV o[HPOS],v[0];
MOV o[TEX0],v[8];
MOV o[TEX1],v[9];
MOV o[TEX2],v[10];
MOV o[TEX3],v[11];
MOV o[TEX4],v[12];
MOV o[TEX5],v[13];
MOV o[TEX6],v[14];
MOV o[TEX7],v[15];
END,

basically just passes a vertex through without doing anything to it. v[0] is input vertex position and HPOS is the output position. TEX# just pass through texture coordinates.

Some other ones are simple vertex lit w/specular and fog calculations. v[3] and v[4] are input diffuse and specular colour with COL0 and COL1 the corresponding outputs.

---
edit:

oh yeah, o[PSIZ] is point size. I'd guess that there is no fixed-function for doing point size and point sprites are emulated using vertex programs. Most of the programs seem to deal with point sprites.
 
Back
Top