PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was will uns Futuremark denn nun damit sagen?


Demirug
2003-05-27, 10:01:53
http://www.beyond3d.com/forum/viewtopic.php?t=6082

I have read some threads in our forum and here too, where people speculate that we are out to do some damage to Nvidia. Let me ensure you that is not the case. If it was up to me, I would only patch 3DMark03 when some critical bug is found, or the hardware detection needs to be updated. Otherwise I would like to concentrate on making the next 3DMark, once again a better benchmark than ever before. I'm doing my best to keep the next 3DMark on track despite this PR mess, but it's not easy. We are a small company (26 employees tot.) in Finland and a 3 person sales office in the US. We have no desire to confront a huge >1500 employee market leader of high end PC graphics. Some of our documents may be seen as harmful to Nvidia, and I find that regrettable. We only want to defend the validity of our benchmark products, since our business depends on it.

I wish we could somehow leave behind us our differences in opinions, again work together on a new 3DMark version, and again do our best to make it reflect future 3D game performance. Even though Nvidia left our beta program, we will make sure the next 3DMark is an impartial benchmark that genuinely measures 3D hardware performance. We will test it also on any Nvidia hardware available, but if Nvidia are out of the beta program, they will not get any pre-releases. You should therefore not judge them even if the next 3DMark doesn't run that well on their hw right after we launch. Give them some time to get possible driver issues fixed, and start comparing scores only when the rendering is correct.

Patric Ojala - 3DMark Producer

Ein versuch der Schadensbegrenzung?

und warum braucht ein DX Benchmark eine Hardwareerkennung die nachtraglich gepatcht werden muss?

ow
2003-05-27, 10:08:35
Original geschrieben von Demirug
http://www.beyond3d.com/forum/viewtopic.php?t=6082

Ein versuch der Schadensbegrenzung?


So schaut's aus. Im "Ernstfall" waere FM ja auch chancenlos gegen NV.



und warum braucht ein DX Benchmark eine Hardwareerkennung die nachtraglich gepatcht werden muss?

Gute Frage. Da sollte man mal bei FM nachhaken.

Crushinator
2003-05-27, 10:54:44
Original geschrieben von Demirug
(...) und warum braucht ein DX Benchmark eine Hardwareerkennung die nachtraglich gepatcht werden muss? Weil der Benchmark nicht nur die Grafikkarte erkennt sondern auch die CPU, das Mainboard und den Rest der Peripherie, welche im "Report" aufgeführt werden. Ich denke, daß mit Hardwareerkennung solche Dinge (z.B. neue CPU-ID) gemeint sind.

Demirug
2003-05-27, 11:12:46
Original geschrieben von crushinator
Weil der Benchmark nicht nur die Grafikkarte erkennt sondern auch die CPU, das Mainboard und den Rest der Peripherie, welche im "Report" aufgeführt werden. Ich denke, daß mit Hardwareerkennung solche Dinge (z.B. neue CPU-ID) gemeint sind.

Ja stimmt der Datenspion sammelt ja auch diese Informationen.

seahawk
2003-05-27, 11:18:02
Hmm, wollen Sie nochmal auf die Wichtigkeit des Betaprogramms hinweisen, oder sind da auch Ansätze erkeenbar, dass der 2003 er für NV Hardware nicht optimal ist.

Matti
2003-05-27, 11:55:03
Original geschrieben von Demirug
http://www.beyond3d.com/forum/viewtopic.php?t=6082

Ein versuch der Schadensbegrenzung?

und warum braucht ein DX Benchmark eine Hardwareerkennung die nachtraglich gepatcht werden muss?

vielleicht weil nV cheatet??

ow
2003-05-27, 12:01:43
Original geschrieben von Matti
vielleicht weil nV cheatet??


nein, damit hat das nix zu tun.

die HW-Erkennung duerfte sich lediglich auf die System-Infos erstrecken, die der 3Dmark sammelt. Wurde oben doch schon geklaert.

Richthofen
2003-05-27, 14:37:40
Original geschrieben von Demirug
http://www.beyond3d.com/forum/viewtopic.php?t=6082



Ein versuch der Schadensbegrenzung?

und warum braucht ein DX Benchmark eine Hardwareerkennung die nachtraglich gepatcht werden muss?

Reine damage control. Durch die ganzen PR Mitteilungen haben sie doch bereits zugegeben indirekt, dass der Benchmark unbrauchbar ist weil zu undurchsichtig und zu leicht zu cheaten.
Denen dürfte der Hintern auf Grundeis laufen. Der Benchmark ist unbrauchbar und die Reviewer und Leser am verzweifeln. Ich erwarte kaum eine Änderung im Behaviour der IHVs. Und mit jedem Tag fällt die Glaubwürdigkeit dieses Benchmarks.
Ich weiss nicht, was ATI machen wird aber bei NV kann ich mir sehr gut vorstellen, dass in den nächsten Review Agreements der nächsten kompletten NV Palette steht - keine 3DMark Tests mehr mit den Karten oder es gibt keine. NV wird auch mit Sicherheit seine Grafikkartenbauer dazu anhalten, selbige Passagen in die Agreements mit aufzunehmen.
Und jede Wette, dass die Reviewer mitmachen. Die haben auch gar keine andere Wahl, da es immer einige geben wird, die für Pageviews alles tun. Letztlich leben diese Seiten davon. Anandtech, Hardocp und Tom werden früher oder später den Murks entweder aus freien Stücken oder auf Druck fallen lassen.
Hardocp hat den Bench bereits jetzt rausgeschmissen, weil er vom Murks nichts hält und TOM und Anand schweigen zu den Cheat Geschichten von ATI und NV nach Bestem Wissen und Gewissen.

Reviewen ist eben auch nur ein Geschäft wie alles andere auch und FM dürfte zumindest im Bereich der 3D Benchmarks mittelfristig das zeitliche segnen.

Gast
2003-05-27, 14:43:50
Original geschrieben von Richthofen
Reine damage control. Durch die ganzen PR Mitteilungen haben sie doch bereits zugegeben indirekt, dass der Benchmark unbrauchbar ist weil zu undurchsichtig und zu leicht zu cheaten.


Nenn doch lieber ein paar andere Benchmarks bei denen man 100%ig nicht cheaten kann, und auch welche, bei denen Cheating vom Entwickler des Benchmarks aufgezeigt und (nach Möglichkeit) verhindert wird. Danke

Salvee
2003-05-27, 14:46:44
Original geschrieben von Richthofen
Und jede Wette, dass die Reviewer mitmachen. Die haben auch gar keine andere Wahl, da es immer einige geben wird, die für Pageviews alles tun. Letztlich leben diese Seiten davon. Anandtech, Hardocp und Tom werden früher oder später den Murks entweder aus freien Stücken oder auf Druck fallen lassen.
Hardocp hat den Bench bereits jetzt rausgeschmissen, weil er vom Murks nichts hält und TOM und Anand schweigen zu den Cheat Geschichten von ATI und NV nach Bestem Wissen und Gewissen.



Von 'Wissen und Gewissen' bei den aufgezählten Sites zu sprechen, halte ich persönlich zwar für gewagt,
aber umsonst haben sie die NV35 Previewboards und die Doom3-Testversionen sicher nicht bekommen.

Ein interessanter Link (http://hypothermia.gamershardware.com/nv_bs.htm) sei hier erwähnt, unter welchen Umständen man an Reviewboards kommt und was dabei zu beachten ist.
Richthofen, ich glaube du kennst ihn ;)

Demirug
2003-05-27, 14:49:35
Original geschrieben von Gast
Nenn doch lieber ein paar andere Benchmarks bei denen man 100%ig nicht cheaten kann, und auch welche, bei denen Cheating vom Entwickler des Benchmarks aufgezeigt und (nach Möglichkeit) verhindert wird. Danke

Alle Spiele die es erlauben eigene Timedemos/Kamerafahrten zu definieren. Wenn diese Testsetups nicht öffentlich gemacht werden haben die IHVs keine möglichkeit Benchspezifisch zu cheaten sie müssen dann das Spiel als ganzen schneller machen. Und wenn man das durch Verschlechterung der Bildqualität macht fällt das früher oder später auf.

AlfredENeumann
2003-05-27, 15:06:18
Schön und gut, aber wenn jetzt der Murks03 aus den Reviews rausgenommen wird, dann gibt es keinen Bench mehr der großartig DX9 nutzt. Was nutzen dann die ganzen Reviews für DX9-Karten wenn eh regelmaäßig alter Käse gebencht wird und keine Sau weiß wie die Karte sich halbwegs auf DX9-Aplikationen verhält ?

ow
2003-05-27, 15:15:30
Original geschrieben von AlfredENeumann
Schön und gut, aber wenn jetzt der Murks03 aus den Reviews rausgenommen wird, dann gibt es keinen Bench mehr der großartig DX9 nutzt. Was nutzen dann die ganzen Reviews für DX9-Karten wenn eh regelmaäßig alter Käse gebencht wird und keine Sau weiß wie die Karte sich halbwegs auf DX9-Aplikationen verhält ?

Wen interessiert denn das, solange es noch keine DX9 Applikationen gibt, fuer die der 3DM ja auch ohnehin in keiner Weise representativ ist?

LovesuckZ
2003-05-27, 15:23:54
Original geschrieben von AlfredENeumann
Schön und gut, aber wenn jetzt der Murks03 aus den Reviews rausgenommen wird, dann gibt es keinen Bench mehr der großartig DX9 nutzt. [...] keine Sau weiß wie die Karte sich halbwegs auf DX9-Aplikationen verhält ?

Beim 3Dmark2003 sind auch nur ansatzweise der GameTest4 und die Pixelshadertest ein repraesentant fuer DX9. Alles andere ist doch mehr oder weniger nur DX8. Somit faellt das Argument (welches auf einer Englischen Hardware Seite auch stand) weg, dass der 3DMark2003 die DX9 Leistung messe.

Gast
2003-05-27, 15:28:09
Original geschrieben von Demirug
Alle Spiele die es erlauben eigene Timedemos/Kamerafahrten zu definieren. Wenn diese Testsetups nicht öffentlich gemacht werden haben die IHVs keine möglichkeit Benchspezifisch zu cheaten sie müssen dann das Spiel als ganzen schneller machen. Und wenn man das durch Verschlechterung der Bildqualität macht fällt das früher oder später auf.

Siehst du Richthofen, selbst Demirug schreibt, das es keine guten Benchmarks gibt. Es wird ab jetzt Aufgabe der Reviewer sein, so was für jede Webseite extra zu machen.

Quasar
2003-05-27, 15:40:23
Original geschrieben von AlfredENeumann
Schön und gut, aber wenn jetzt der Murks03 aus den Reviews rausgenommen wird, dann gibt es keinen Bench mehr der großartig DX9 nutzt.

Ahemm.... Wieviel Prozent der Shader in 25% der Game-Tests waren es gleich nochmal?

Ich denke, dass die Rolle, die DirectX9 im 3DMark03 spielt, noch immer weit überbewertet wird.

Gast
2003-05-27, 15:48:14
Original geschrieben von Quasar
Ahemm.... Wieviel Prozent der Shader in 25% der Game-Tests waren es gleich nochmal?

Ich denke, dass die Rolle, die DirectX9 im 3DMark03 spielt, noch immer weit überbewertet wird.

Hmm.. ich dachte der PS-Test von 3DMark03 ist ein reiner PS2-Test?

Also doch zu was nütze, der Benchmark. Die Pixelshader- und Vertexshader Geschwindigkeit kann man eben doch noch sinnvoll verwerten, auch wenn man vom Gesamtbench nicht viel hält.

Deshalb finde ich den Cheat von Nvidia ja so verwerflich, die haben auch hier massiv gecheated; also in Bereichen die mich als User besonders interessieren.

ow
2003-05-27, 15:51:00
Original geschrieben von Gast
Hmm.. ich dachte der PS-Test von 3DMark03 ist ein reiner PS2-Test?




Nein, ist er leider nicht.

Da werden ein oder 2 VS/PS2.0 Shader eingesetzt, der Rest ist PS1.4 und VS1.1 afaik.

Gast
2003-05-27, 15:56:32
Upps!

Danke, ow für die Info.

ow
2003-05-27, 16:01:47
Genauere Infos kann dir sicher demirug nennen, ich sitz jetzt auch grade nicht zuhause am PC, dort hab ich irgendwo die Shader rumliegen.:D

Das Tool 3D-Analyzer von www.tommti-systems.de ist in der Lage, die in einer Applikation genutzten Shader (alle Versionen) in eine Textdatei rauszuschreiben.

AlfredENeumann
2003-05-27, 16:31:17
Original geschrieben von ow
Wen interessiert denn das, solange es noch keine DX9 Applikationen gibt, fuer die der 3DM ja auch ohnehin in keiner Weise representativ ist?

Zeigt aber das bei Standard M$ Code bei NV derzeit eine Schäche hat und bei einer Grafikkarte die 300-500€ kostet finde ich das schon ganz wichtig das man das weiß, da es für mich beim Erwerb eine DX9 Karte eine Kaufentscheidung sein kann.

mapel110
2003-05-27, 16:37:04
Original geschrieben von ow
Genauere Infos kann dir sicher demirug nennen, ich sitz jetzt auch grade nicht zuhause am PC, dort hab ich irgendwo die Shader rumliegen.:D

Das Tool 3D-Analyzer von www.tommti-systems.de ist in der Lage, die in einer Applikation genutzten Shader (alle Versionen) in eine Textdatei rauszuschreiben.

hm, wo speichert dieses tool diese angaben ? shaders.out <-- diese file ? die existiert nirgens nach dem durchlauf des 3dmark03. :|

jedenfalls fänd ich es nen starkes stück, wenn da noch andere shader zum einsatz kämen.

Salvee
2003-05-27, 16:51:03
Laut 3DMark03 Whitepaper:

VertexShaderTest-> benutzt nur VS 1.1
PixelShader2.0 Test-> benutzt nur PS2.0
Ragtroll-> VS 1.1 für's Skinning, PS1.1 oder PS1.4

Klick (http://www.futuremark.com/companyinfo/3dmark03_whitepaper.pdf)

Wäre natürlich die Härte, wenn beim PS-Test entgegen offiziellen Angaben andere PS eingemischt werden.

ow
2003-05-27, 17:56:26
Original geschrieben von AlfredENeumann
Zeigt aber das bei Standard M$ Code bei NV derzeit eine Schäche hat und bei einer Grafikkarte die 300-500€ kostet finde ich das schon ganz wichtig das man das weiß, da es für mich beim Erwerb eine DX9 Karte eine Kaufentscheidung sein kann.


Das zeigt doch nur, dass ATi bevorteilt wurde (oder NV benachteiligt, ist dasselbe) und dieser Makel nun mit dem neuen DXSDK ausgemerzt wird.

Hast du demirugs Ausführungen hier

http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=73060

nicht gelesen? Ich zitiere mal:

Original geschrieben von Demirug
Weil du es gerade erwähnst. Das mit HLSL und dem Chipspezifischen compileren ist auch der aktuelle Vorschlag (für die ganz neue SDK Version ;) ) von MS. Und damit nicht jeder IHVs sich seinen eigenen Compiler schreiben muss (was aber als option immer noch geht) wird der Compiler von MS verschiedene Zielprofile anbieten. Da gibt es ist jetzt ps_2_a und vs_2_a (das a steht dabei nicht für ATI die haben ja schon die 2_0 bekommen).

betasilie
2003-05-27, 17:59:34
Original geschrieben von ow
Das zeigt doch nur, dass ATi bevorteilt wurde (oder NV benachteiligt, ist dasselbe) und dieser Makel nun mit dem neuen DXSDK ausgemerzt wird.

Hast du demirugs Ausführungen hier

http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=73060

nicht gelesen? Ich zitiere mal:
Aber dan wäre MS derjenige, der ATI bevorzugt hat und nicht FM.;)

ow
2003-05-27, 18:03:01
Original geschrieben von mapel110
hm, wo speichert dieses tool diese angaben ? shaders.out <-- diese file ? die existiert nirgens nach dem durchlauf des 3dmark03. :|

jedenfalls fänd ich es nen starkes stück, wenn da noch andere shader zum einsatz kämen.


afaik sollte man da jeden Teil-Test gesondert durchlaufen lassen.

Also 3D-Analyzer starten, 3DM auswählen und starten (zuvor diese 'shaders.out' aktivieren) und dann einen der 3DMark Tests starten. Nach Ende des (Einzel-)Tests 3DMark beenden.
In der shaders.out stehn dann die Shader drin.

Im Falle des MotherNature-Test aus dem 3DM03 ergibt das dies hier, man sieht hier auch schön, welche Shaderversionen genutzt werden:


///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
add oPos , v0 , c0
mov oT0 , v1
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
mov r0.xyz , c0
+sub_sat r0.w , t0 , c0
mul r0.w , r0.wwww , r0.wwww
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
mov oPos , v0
mov oT0 , v1
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
mul r0 , v0 , c0
add oPos , r0 , c1
mov oD0 , c2
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_2_0

dcl_position0 v0
dcl_texcoord6 v1
dcl_texcoord7 v2
dcl_texcoord0 v3
dcl_texcoord1 v4
dcl_texcoord2 v5
dcl_texcoord3 v6
dcl_texcoord4 v7
dcl_texcoord5 v8
dcl_normal0 v9
dcl_color0 v10
add r0.xyz , c8.wwww , v2.wwww
mul r0.xyz , r0 , c8
add r0.xyz , r0 , c9
mad r0.xyz , r0.xyzz , c5.wwww , c5.yyyy
frc r0.xyz , r0.xyzz
mad r0.xyz , r0.xyzz , c5.zzzz , -c5.xxxx
sincos r1.x , r0.xxxx , c6 , c7
sincos r2.x , r0.yyyy , c6 , c7
sincos r3.x , r0.zzzz , c6 , c7
add r0.x , r1 , r2
add r0.x , r1 , r3
mul r0.x , r0.xxxx , c9.wwww
mad r0.x , r0.xxxx , c5.wwww , c5.yyyy
frc r0.x , r0.xxxx
mad r0.x , r0.xxxx , c5.zzzz , -c5.xxxx
sincos r1.xy , r0.xxxx , c6 , c7
add r1.z , v0.wwww , -r1.xxxx
mul r0 , v2 , r1.zzzz
mul r2.xyz , r1.yyyy , v2.xyzz
mov r2.w , r1.xxxx
mul r1 , r0.xxxx , v2
mad r6.xyz , r2.wzyy , c4.xxxx , r1
mul r1 , r0.yyyy , v2
mad r7.xyz , r2.zwxx , c4.wxxx , r1
mul r1 , r0.zzzz , v2
mad r8.xyz , r2.yxww , c4.xwxx , r1
dp3 r0.x , v1 , r6
dp3 r0.y , v1 , r7
dp3 r0.z , v1 , r8
dp3 oT1.x , v9 , r6
dp3 oT1.y , v9 , r7
dp3 oT1.z , v9 , r8
mov r0.w , v0.wwww
add r0.xyz , r0 , v0
mova a0 , v4
mul r1 , v6.xxxx , c[a0.x+0] , a0.xxxx
mad r1 , v6.yyyy , c[a0.x+0] , a0.yyyy , r1
mad r1 , v6.zzzz , c[a0.x+0] , a0.zzzz , r1
mad r1 , v6.wwww , c[a0.x+0] , a0.wwww , r1
mova a0 , v5
mad r1 , v7.xxxx , c[a0.x+0] , a0.xxxx , r1
mad r1 , v7.yyyy , c[a0.x+0] , a0.yyyy , r1
mad r1 , v7.zzzz , c[a0.x+0] , a0.zzzz , r1
mad r1 , v7.wwww , c[a0.x+0] , a0.wwww , r1
mad r0 , r1 , v8.xxxx , r0
mad r0 , c10 , v8.yyyy , r0
m4x4 oPos , r0 , c0
mov oT0 , v3
dp4 oT2.x , r0 , c11
dp4 oT2.y , r0 , c13
mov oD0 , v10
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
tex t2
mul r0 , t0 , t1
mul r0 , r0 , v0
mul_x2 r0 , r0 , t2
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_2_0

dcl_position0 v0
dcl_texcoord0 v1
dcl_texcoord1 v2
dcl_texcoord2 v3
dcl_texcoord3 v4
dcl_texcoord4 v5
dcl_texcoord5 v6
dcl_texcoord6 v7
dcl_texcoord7 v8
dcl_normal0 v9
dcl_tangent0 v10
mova a0 , v2
mul r0 , v4.xxxx , c[a0.x+0] , a0.xxxx
mad r0 , v4.yyyy , c[a0.x+0] , a0.yyyy , r0
mad r0 , v4.zzzz , c[a0.x+0] , a0.zzzz , r0
mad r0 , v4.wwww , c[a0.x+0] , a0.wwww , r0
mova a0 , v3
mad r0 , v5.xxxx , c[a0.x+0] , a0.xxxx , r0
mad r0 , v5.yyyy , c[a0.x+0] , a0.yyyy , r0
mad r0 , v5.zzzz , c[a0.x+0] , a0.zzzz , r0
mad r0 , v5.wwww , c[a0.x+0] , a0.wwww , r0
mul r0 , r0 , v6.xxxx
add r0 , r0 , v0
mad r0 , c10 , v6.yyyy , r0
m4x4 oPos , r0 , c0
mov oT0 , v1
mov oT1 , v8
mov oT2 , v7
mov r5 , v10
mul r1.xyz , v9.yzxx , r5.zxyy
mad r1.xyz , -r5.yzxx , v9.zxyy , r1.xyzz
dp3 oT3.x , c4 , r5
dp3 oT3.y , c4 , r1
dp3 oT3.z , c4 , v9
dp4 oT4.x , r0 , c6
dp4 oT4.y , r0 , c8
dp4 oT5.x , r0 , c11
dp4 oT5.y , r0 , c13
mov oD0 , c5
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_4

texld r0 , t0
texld r1 , t1
texld r2 , t2
texld r3 , t3
texld r4 , t4
texld r5 , t5
dp3_sat r2.xyz , r2_bx2 , r3_bx2
mul r2.xyz , r2 , r4
mad r1.xyz , r2 , v0 , r1
mul r0.xyz , r0 , r1
mul_x2 r0.xyz , r0 , r5
+mov r0.w , v0.wwww
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
m4x4 oPos , v0 , c0
mov oT0 , v1
add oT1 , v1 , c4
mov oT2 , v0
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_2_0

dcl_2d s0
dcl_2d s1
dcl t0
dcl t1
dcl t2
texld r0 , t0 , s0
texld r1 , t1 , s1
add r2 , c0 , -t2
dp3 r2.w , r2 , r2
add r2.w , r2.wwww , c2.yyyy
rcp r2.w , r2.wwww
mul r2 , c1 , r2.wwww
add r0 , r0 , r2
lrp r2 , r1.wwww , r1 , r0
mov oC0 , r2
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_normal0 v1
dcl_texcoord0 v2
m4x4 oPos , v0 , c0
mov oT0 , v2
add r2.xyz , c4 , -v0
dp3 r2.w , r2.xyzz , r2.xyzz
rsq r2.w , r2.wwww
mul r2.xyz , r2.xyzz , r2.wwww
dp3 r2.x , r2.xyzz , v1.xyzz
max r2.x , r2.xxxx , c4.wwww
mul r2 , r2.xxxx , c5
add oD0 , r2 , c6
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_normal0 v1
dcl_texcoord0 v2
dcl_texcoord1 v3
dcl_texcoord2 v4
dcl_tangent0 v5
m4x4 oPos , v0 , c0
mov oT0 , v2
mov oT1 , v3
mov oT2 , v4
mov oT3 , v3
mov r5 , v5
mul r1.xyz , v1.yzxx , r5.zxyy
mad r1.xyz , -r5.yzxx , v1.zxyy , r1.xyzz
dp3 oT4.x , c4 , v5
dp3 oT4.y , c4 , r1
dp3 oT4.z , c4 , v1
mov oT4.w , v0.wwww
mov oD0 , c5
dp4 oT5.x , v0 , c6
dp4 oT5.y , v0 , c8
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_4

texld r0 , t0
texld r1 , t1
texld r2 , t2
texld r3 , t3
texld r4 , t4
texld r5 , t5
dp3_sat r3.xyz , r3_bx2 , r4_bx2
mul r3.xyz , r3 , r3
mul r3.xyz , r3 , r0.wwww
mul r3.xyz , r3 , r5
mul r0.xyz , r0 , r2
mad r0.xyz , r3 , v0 , r0
mul_x2 r0.xyz , r0 , r1
+mov r0.w , v0.wwww
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_color0 v1
mul r0 , v0.xxzz , c14
add r0 , r0 , c15
mul r1 , c16 , r0.yyyy
mad r1 , c17 , r0.xxxx , r1
mul r1 , r1 , r0.wwzz
add r1.xy , r1.xyyy , r1.zwww
mul r1.xy , r1.xyyy , v1.wwww
mad r0 , r1.xxyy , c7.yzyz , v0
m4x4 oPos , r0 , c0
mov oT0 , v1.xyyy
dp4 oT1.x , r0 , c4
dp4 oT1.y , r0 , c6
mov oT2 , r1.xyyy
dp4 oT3.x , r0 , c8
dp4 oT3.y , r0 , c10
mad r0.x , v1.zzzz , c7.xxxx , c7.wwww
mov a0.x , r0.xxxx
mov oD0 , c[a0.x+0]
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
tex t2
tex t3
mul r0 , t0 , t1
mul r0 , r0 , v0
mul r0 , r0 , t2
mul_x2 r0 , r0 , t3
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
dcl_texcoord1 v2
add r0 , v0.xzww , c10.xyzz
mul r11.x , r0.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r1.w , c[a0.x+16]
add r10.x , r1.wwww , r0.yyyy
mul r11.x , r10.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r1 , c[a0.x+16]
mov r7 , r0
add r7.x , r0 , v0.wwww
mul r11.x , r7.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r2.w , c[a0.x+16]
add r10.x , r2.wwww , r7.yyyy
mul r11.x , r10.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r2 , c[a0.x+16]
expp r6 , r0.xxxx
mad r10 , r6 , -c9.zzzz , c9.wwww
mul r10 , r10 , r6
mul r6 , r10 , r6
add r10 , r2 , -r1
mad r3 , r10 , r6.yyyy , r1
mov r7 , r0
add r7.xy , r0 , v0.wwww
mul r11.x , r7.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r1.w , c[a0.x+16]
add r10.x , r1.wwww , r7.yyyy
mul r11.x , r10.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r1 , c[a0.x+16]
mov r7 , r0
add r7.y , r0 , v0.wwww
mul r11.x , r7.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r2.w , c[a0.x+16]
add r10.x , r2.wwww , r7.yyyy
mul r11.x , r10.xxxx , c8.xxxx
expp r11.y , r11.xxxx
mul r10.x , r11.yyyy , c8.yyyy
mov a0.x , r10.xxxx
mov r2 , c[a0.x+16]
expp r6 , r0.xxxx
mad r10 , r6 , -c9.zzzz , c9.wwww
mul r10 , r10 , r6
mul r6 , r10 , r6
add r10 , r1 , -r2
mad r4 , r10 , r6.yyyy , r2
expp r6 , r0.yyyy
mad r10 , r6 , -c9.zzzz , c9.wwww
mul r10 , r10 , r6
mul r6 , r10 , r6
add r10 , r4 , -r3
mad r5 , r10 , r6.yyyy , r3
mov r0 , v0
mad r0.y , r5.xxxx , c10.wwww , r0.yyyy
m4x4 oPos , r0 , c0
add oT0 , v1 , c11
m4x4 oT1 , r0 , c4
add r0.xyz , c12 , -r0
dp3 r0.w , r0 , r0
rsq r0.w , r0.wwww
mul oT2.xyz , r0 , r0.wwww
add oT3 , v1 , c13
mov oT4 , v2
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_2_0

dcl t0
dcl t1
dcl t2
dcl t3
dcl t4
dcl_2d s0
dcl_2d s1
dcl_2d s2
dcl_2d s3
dcl_cube s4
dcl_2d s5
texld r0 , t0 , s3
texld r1 , t3 , s3
texld r2 , t0 , s0
mad r2 , r2 , c1.xxxx , c1.yyyy
rcp r3.w , t1.wwww
mul r3 , r3.wwww , t1
mad r3 , r2 , c0 , r3
mad r0 , r0 , c1.xxxx , c1.yyyy
mad r1 , r1 , c1.xxxx , c1.yyyy
add r0 , r0 , r1
mul r0 , r0 , c2.xxxx
dp3 r1.x , r0 , t2
add r2.x , r1.xxxx , r1.xxxx
mad r0 , r2.xxxx , r0 , -t2
add r4.x , c1.wwww , -r1
pow r4.x , r4.xxxx , c1.zzzz
texld r0 , r0 , s4
texld r1 , r3 , s1
texld r2 , r3 , s2
texld r3 , t4 , s5
mul r4.x , r4.xxxx , r3.wwww
add r0 , r0 , r1
lrp r0 , r4.xxxx , r0 , r2
mul r0 , r0 , r3
mov oC0 , r0
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
dcl_texcoord1 v2
m4x4 oPos , v0 , c0
mov oT0 , v1
mov oT1 , v2
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
mov r0 , t0
mul r0.xyz , r0 , t1
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_tangent0 v1
dcl_binormal0 v2
dcl_normal0 v3
dcl_texcoord0 v4
dcl_blendweight0 v5
mov a0.x , v5.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
dp3 r1.x , c[a0.x+0] , v1
dp3 r1.y , c[a0.x+1] , v1
dp3 r1.z , c[a0.x+2] , v1
dp3 r2.x , c[a0.x+0] , v2
dp3 r2.y , c[a0.x+1] , v2
dp3 r2.z , c[a0.x+2] , v2
dp3 r3.x , c[a0.x+0] , v3
dp3 r3.y , c[a0.x+1] , v3
dp3 r3.z , c[a0.x+2] , v3
mov a0.x , v5.wwww
dp4 r4.x , c[a0.x+0] , v0
dp4 r4.y , c[a0.x+1] , v0
dp4 r4.z , c[a0.x+2] , v0
dp3 r5.x , c[a0.x+0] , v1
dp3 r5.y , c[a0.x+1] , v1
dp3 r5.z , c[a0.x+2] , v1
dp3 r6.x , c[a0.x+0] , v2
dp3 r6.y , c[a0.x+1] , v2
dp3 r6.z , c[a0.x+2] , v2
dp3 r7.x , c[a0.x+0] , v3
dp3 r7.y , c[a0.x+1] , v3
dp3 r7.z , c[a0.x+2] , v3
mul r0.xyz , r0.xyzz , v5.xxxx
mad r0.xyz , r4.xyzz , v5.zzzz , r0.xyzz
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
mul r1.xyz , r1.xyzz , v5.xxxx
mad r1.xyz , r5.xyzz , v5.zzzz , r1.xyzz
dp3 r1.w , r1.xyzz , r1.xyzz
rsq r1.w , r1.wwww
mul r1.xyz , r1.xyzz , r1.wwww
mul r2.xyz , r2.xyzz , v5.xxxx
mad r2.xyz , r6.xyzz , v5.zzzz , r2.xyzz
dp3 r2.w , r2.xyzz , r2.xyzz
rsq r2.w , r2.wwww
mul r2.xyz , r2.xyzz , r2.wwww
mul r3.xyz , r3.xyzz , v5.xxxx
mad r3.xyz , r7.xyzz , v5.zzzz , r3.xyzz
dp3 r3.w , r3.xyzz , r3.xyzz
rsq r3.w , r3.wwww
mul r3.xyz , r3.xyzz , r3.wwww
mov oD0 , v0.wwww
mov oT0 , v4
dp3 oT1.x , r1 , c4
dp3 oT1.y , r2 , c4
dp3 oT1.z , r3 , c4
dp3 oT2.x , r1 , c5
dp3 oT2.y , r2 , c5
dp3 oT2.z , r3 , c5
dp3 oT3.x , r1 , c6
dp3 oT3.y , r2 , c6
dp3 oT3.z , r3 , c6
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_tangent0 v1
dcl_binormal0 v2
dcl_normal0 v3
dcl_texcoord0 v4
dcl_blendweight0 v5
mov a0.x , v5.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
dp3 r1.x , c[a0.x+0] , v1
dp3 r1.y , c[a0.x+1] , v1
dp3 r1.z , c[a0.x+2] , v1
dp3 r2.x , c[a0.x+0] , v2
dp3 r2.y , c[a0.x+1] , v2
dp3 r2.z , c[a0.x+2] , v2
dp3 r3.x , c[a0.x+0] , v3
dp3 r3.y , c[a0.x+1] , v3
dp3 r3.z , c[a0.x+2] , v3
mov a0.x , v5.wwww
dp4 r4.x , c[a0.x+0] , v0
dp4 r4.y , c[a0.x+1] , v0
dp4 r4.z , c[a0.x+2] , v0
dp3 r5.x , c[a0.x+0] , v1
dp3 r5.y , c[a0.x+1] , v1
dp3 r5.z , c[a0.x+2] , v1
dp3 r6.x , c[a0.x+0] , v2
dp3 r6.y , c[a0.x+1] , v2
dp3 r6.z , c[a0.x+2] , v2
dp3 r7.x , c[a0.x+0] , v3
dp3 r7.y , c[a0.x+1] , v3
dp3 r7.z , c[a0.x+2] , v3
mul r0.xyz , r0.xyzz , v5.xxxx
mad r0.xyz , r4.xyzz , v5.zzzz , r0.xyzz
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
mul r1.xyz , r1.xyzz , v5.xxxx
mad r1.xyz , r5.xyzz , v5.zzzz , r1.xyzz
dp3 r1.w , r1.xyzz , r1.xyzz
rsq r1.w , r1.wwww
mul r1.xyz , r1.xyzz , r1.wwww
mul r2.xyz , r2.xyzz , v5.xxxx
mad r2.xyz , r6.xyzz , v5.zzzz , r2.xyzz
dp3 r2.w , r2.xyzz , r2.xyzz
rsq r2.w , r2.wwww
mul r2.xyz , r2.xyzz , r2.wwww
mul r3.xyz , r3.xyzz , v5.xxxx
mad r3.xyz , r7.xyzz , v5.zzzz , r3.xyzz
dp3 r3.w , r3.xyzz , r3.xyzz
rsq r3.w , r3.wwww
mul r3.xyz , r3.xyzz , r3.wwww
mov oT0.xy , v4
add r0.xyz , c8.xyzz , -v0.xyzz
dp3 r4.x , r0.xyzz , r0.xyzz
rsq r4.x , r4.xxxx
mul r0.xyz , r0.xyzz , r4.xxxx
dp3 r4.x , r0.xyzz , r1.xyzz
dp3 r4.y , r0.xyzz , r2.xyzz
dp3 r4.z , r0.xyzz , r3.xyzz
mov oT1.xyz , r4.xyzz
dp3 r2.xy , r0.xyzz , v3.xyzz
mov r2.w , c8.wwww
lit r3 , r2
mov r4.xyz , c9.xyzz
mad oD0.xyz , r3.zzzz , c10.xyzz , r4.xyzz
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v4
dcl_blendweight0 v5
mov a0.x , v5.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
mov a0.x , v5.wwww
dp4 r1.x , c[a0.x+0] , v0
dp4 r1.y , c[a0.x+1] , v0
dp4 r1.z , c[a0.x+2] , v0
mul r0.xyz , r0.xyzz , v5.xxxx
mad r0.xyz , r1.xyzz , v5.zzzz , r0.xyzz
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
mov oT0 , v4
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_tangent0 v1
dcl_binormal0 v2
dcl_normal0 v3
dcl_texcoord0 v4
dcl_blendweight0 v5
mov a0.x , v5.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
dp3 r1.x , c[a0.x+0] , v1
dp3 r1.y , c[a0.x+1] , v1
dp3 r1.z , c[a0.x+2] , v1
dp3 r2.x , c[a0.x+0] , v2
dp3 r2.y , c[a0.x+1] , v2
dp3 r2.z , c[a0.x+2] , v2
dp3 r3.x , c[a0.x+0] , v3
dp3 r3.y , c[a0.x+1] , v3
dp3 r3.z , c[a0.x+2] , v3
mov a0.x , v5.wwww
dp4 r4.x , c[a0.x+0] , v0
dp4 r4.y , c[a0.x+1] , v0
dp4 r4.z , c[a0.x+2] , v0
dp3 r5.x , c[a0.x+0] , v1
dp3 r5.y , c[a0.x+1] , v1
dp3 r5.z , c[a0.x+2] , v1
dp3 r6.x , c[a0.x+0] , v2
dp3 r6.y , c[a0.x+1] , v2
dp3 r6.z , c[a0.x+2] , v2
dp3 r7.x , c[a0.x+0] , v3
dp3 r7.y , c[a0.x+1] , v3
dp3 r7.z , c[a0.x+2] , v3
mul r0.xyz , r0.xyzz , v5.xxxx
mad r0.xyz , r4.xyzz , v5.zzzz , r0.xyzz
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
mul r1.xyz , r1.xyzz , v5.xxxx
mad r1.xyz , r5.xyzz , v5.zzzz , r1.xyzz
dp3 r1.w , r1.xyzz , r1.xyzz
rsq r1.w , r1.wwww
mul r1.xyz , r1.xyzz , r1.wwww
mul r2.xyz , r2.xyzz , v5.xxxx
mad r2.xyz , r6.xyzz , v5.zzzz , r2.xyzz
dp3 r2.w , r2.xyzz , r2.xyzz
rsq r2.w , r2.wwww
mul r2.xyz , r2.xyzz , r2.wwww
mul r3.xyz , r3.xyzz , v5.xxxx
mad r3.xyz , r7.xyzz , v5.zzzz , r3.xyzz
dp3 r3.w , r3.xyzz , r3.xyzz
rsq r3.w , r3.wwww
mul r3.xyz , r3.xyzz , r3.wwww
mov oT0.xy , v4
mov oT1.xy , v4
add r0.xyz , c11.xyzz , -v0.xyzz
dp3 r6.x , r0.xyzz , r0.xyzz
rsq r6.x , r6.xxxx
mul r0.xyz , r0.xyzz , r6.xxxx
dp3 r6.x , r0.xyzz , r1.xyzz
dp3 r6.y , r0.xyzz , r2.xyzz
dp3 r6.z , r0.xyzz , r3.xyzz
add r7.xyz , c12.xyzz , -v0.xyzz
dp3 r5.x , r7.xyzz , r7.xyzz
rsq r5.x , r5.xxxx
mul r7.xyz , r7.xyzz , r5.xxxx
dp3 r4.x , r7.xyzz , r1.xyzz
dp3 r4.y , r7.xyzz , r2.xyzz
dp3 r4.z , r7.xyzz , r3.xyzz
add r4.xyz , r4.xyzz , r6.xyzz
dp3 r5.x , r4.xyzz , r4.xyzz
rsq r5.x , r5.xxxx
mul r4.xyz , r4.xyzz , r5.xxxx
mov oT2.xyz , r6.xyzz
mov oT3.xyz , r4.xyzz
dp3 r7.xy , r0.xyzz , r3.xyzz
mov r7.w , c11.wwww
lit r0 , r7
mov r4.xyz , c13.xyzz
mad oD0.xyz , r0.zzzz , c14.xyzz , r4.xyzz
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
texm3x3pad t1 , t0_bx2
texm3x3pad t2 , t0_bx2
texm3x3tex t3 , t0_bx2
mul r0 , t3 , v0
///////////////Pixel Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
dp3 r0.xyz , t0_bx2 , t1_bx2
+mov r0.w , t1_bx2
mad_sat r0 , r0 , c0 , c1
mul r0.xyz , r0 , v0
+add_x4_sat r0.w , r0 , r0
mul r0.xyz , r0 , r0.wwww
///////////////Pixel Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
mov r0 , t0
///////////////Pixel Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
tex t2
tex t3
dp3_sat r0.xyz , t1_bx2 , t3_bx2
+mov r0.w , t2_bx2
mul r0.xyz , r0 , r0
+mad_sat r0.w , r0 , c0 , c1
mul r0.xyz , r0 , r0
+add_x4_sat r0.w , r0 , r0
mul r1.xyz , r0.wwww , t0
mul r1.xyz , v0 , r1
mul r0.xyz , r0 , r0
mul r0.xyz , r0 , r1
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_normal0 v1
dcl_texcoord0 v2
dcl_blendweight0 v3
mov a0.x , v3.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
mov oT0.xy , v2.xyyy
dp4 r2.x , v1 , c4
dp4 r2.y , v1 , c5
mov oT1.xy , r2.xyyy
add r1.xyz , c6 , -r0
dp3 r1.w , r1.xyzz , r1.xyzz
rsq r1.w , r1.wwww
mul r1.xyz , r1.xyzz , r1.wwww
dp3 r2.x , r1.xyzz , v1.xyzz
max r2.x , r2.xxxx , c6.wwww
mul r0 , r2.xxxx , c7
add oD0 , r0 , c8
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
mad r0 , t0 , v0 , t1
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_normal0 v1
dcl_texcoord0 v2
m4x4 oPos , v0 , c0
mov oT0 , v2
dp4 oT1.x , v0 , c10
dp4 oT1.y , v0 , c12
dp4 oT2.x , v0 , c6
dp4 oT2.y , v0 , c8
mov oT3 , v1
mov oT4 , c4
mov oD0 , c5
mov oD1 , c9
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_4

texld r0 , t0
texld r1 , t1
texld r2 , t2
texld r3 , t3
texld r4 , t4
dp3_sat r3.xyz , r3_bx2 , r4_bx2
mul r3.xyz , r3 , r3
mul r3.xyz , r3 , r1
mul r3.xyz , r3 , r2
mad r3.xyz , r3 , v0 , v1
mul_x2 r0.xyz , r3 , r0
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
m4x4 oPos , v0 , c0
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

mov r0 , c0
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_normal0 v1
dcl_texcoord0 v2
dcl_blendweight0 v3
mov a0.x , v3.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
dp3 r2.x , c[a0.x+0] , v1
dp3 r2.y , c[a0.x+1] , v1
dp3 r2.z , c[a0.x+2] , v1
mov a0.x , v3.wwww
dp4 r1.x , c[a0.x+0] , v0
dp4 r1.y , c[a0.x+1] , v0
dp4 r1.z , c[a0.x+2] , v0
dp3 r3.x , c[a0.x+0] , v1
dp3 r3.y , c[a0.x+1] , v1
dp3 r3.z , c[a0.x+2] , v1
mul r0.xyz , r0.xyzz , v3.xxxx
mad r0.xyz , r1.xyzz , v3.zzzz , r0.xyzz
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
mul r2.xyz , r2.xyzz , v3.xxxx
mad r1.xyz , r3.xyzz , v3.zzzz , r2.xyzz
dp3 r1.w , r1.xyzz , r1.xyzz
rsq r1.w , r1.wwww
mul r1.xyz , r1.xyzz , r1.wwww
mov oT0.xy , v2.xyyy
add r2.xyz , c4 , -r0
dp3 r2.w , r2.xyzz , r2.xyzz
rsq r2.w , r2.wwww
mul r2.xyz , r2.xyzz , r2.wwww
dp3 r2.x , r2.xyzz , r1.xyzz
max r2.x , r2.xxxx , c4.wwww
mul r2 , r2.xxxx , c5
add oD0 , r2 , c6
///////////////Vertex Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_normal0 v1
m4x4 oPos , v0 , c0
dp4 oT0.x , v0 , c4
dp4 oT0.y , v0 , c5
dp4 oT1.x , v0 , c6
dp4 oT1.y , v0 , c7
dp3 oD0.xyz , c8 , v1
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
add r0 , t0 , t1
add r0 , r0 , v0
///////////////Pixel Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
mad r0 , t0 , v0 , -t1
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_blendweight0 v1
mov a0.x , v1.yyyy
dp4 r0.x , c[a0.x+0] , v0
dp4 r0.y , c[a0.x+1] , v0
dp4 r0.z , c[a0.x+2] , v0
mov a0.x , v1.wwww
dp4 r1.x , c[a0.x+0] , v0
dp4 r1.y , c[a0.x+1] , v0
dp4 r1.z , c[a0.x+2] , v0
mul r0.xyz , r0.xyzz , v1.xxxx
mad r0.xyz , r1.xyzz , v1.zzzz , r0.xyzz
mov r0.w , v0.wwww
m4x4 oPos , r0 , c0
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

mov r0 , c0
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
dcl_texcoord1 v2
m4x4 oPos , v0 , c0
add oT0 , v1 , c4
add oT1 , v1 , c5
mov oT2 , v2
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
tex t2
add r0 , t0 , t1
mul r0 , r0 , t2.wwww
///////////////Pixel Shader - end//////////////
///////////////Vertex Shader - start//////////////
vs_1_1

dcl_position0 v0
dcl_texcoord0 v1
dcl_texcoord1 v2
dcl_texcoord2 v3
m4x4 oPos , v0 , c0
mov oT0 , v1
mov oT1 , v2
mov oT2 , v3
///////////////Vertex Shader - end//////////////
///////////////Pixel Shader - start//////////////
ps_1_1

tex t0
tex t1
tex t2
mov r0 , t0
mul_x2 r0.xyz , r0 , t1
mul r0.xyz , r0 , t2
///////////////Pixel Shader - end//////////////

ow
2003-05-27, 18:05:28
Original geschrieben von Salvee
Laut 3DMark03 Whitepaper:

VertexShaderTest-> benutzt nur VS 1.1
PixelShader2.0 Test-> benutzt nur PS2.0
Ragtroll-> VS 1.1 für's Skinning, PS1.1 oder PS1.4

Klick (http://www.futuremark.com/companyinfo/3dmark03_whitepaper.pdf)

Wäre natürlich die Härte, wenn beim PS-Test entgegen offiziellen Angaben andere PS eingemischt werden.

Ich prüf das mal gerade nach......einen Moment.

/edit: verd....., hab den 3DM03 ja schon von HD verbannt :D....wie´s prinzipiell funzt steht ja oben. Kann jeder schauen, ob da noch andere Shader untergemischt werden

Anonym_001
2003-05-27, 18:06:01
Original geschrieben von betareverse
Aber dan wäre MS derjenige, der ATI bevorzugt hat und nicht FM.;)

Dumme Frage, aber warum wird ATI bevorzugt wenn sie bei M$ Standardcode besser wie NV sind.
Normalerweise ist doch NV selber Schuld, wenn sie für jeden Mißt ihr eigenes Süppchen kochen.

ow
2003-05-27, 18:18:53
Original geschrieben von betareverse
Aber dan wäre MS derjenige, der ATI bevorzugt hat und nicht FM.;)

Ja, das ist wohl richtig so. Ich denke aber, dass sie sich dessen vielleicht gar nicht bewusst waren, denn wie Demirug ja hier:

http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=73365

schön ausgeführt hab, ist dafür ja in erster Linie die unterschiedliche Architektur massgeblich. Sowohl die NV wie ATi DX9 Chips können ja prinzipiell dasselbe, nämlich 2.0er Shader in HW verarbeiten.
Nur die Reihenfolge, mit der die einzelnen Shaderinstruktionen dann an den Chip gehen ist wohl nicht für beide gleichgünstig, was mit der dadurch erreichten Auslastung der Funktions-Einheiten (TMU, ALU) zusammenhängt.
Da die Hochsprachen-Shader doch sowieso durch den Compiler gehen ist es doch nur naheliegend, die Shaderstruktur der kompilierten lowlevel-Shader entsprechend der Chiparchitektur auszugeben.

Bei Compilern für übliche Software ist es doch auch gang und gäbe, für die unterschiedlichsten CPU-Architekturen zu kompilieren. (Das muss ja auch so sein, sonst wären wir heute noch beim X86-Befehlssatz, wie in ein 386er kennt.:D)

Nvidia hat mit cg seinen eigenen Compiler geschaffen der die Umsetzung auf NV-CHips recht gut beherrscht, mit dem MS-Compiler erzeugte Shader schmecken den NV-Chips bislang nicht so recht. Und da wird jetzt
offenbar seitens MS für Abhilfe gesorgt.

Anonym_001
2003-05-27, 18:25:17
Original geschrieben von Anonym_001
Dumme Frage, aber warum wird ATI bevorzugt wenn sie bei M$ Standardcode besser wie NV sind.
Normalerweise ist doch NV selber Schuld, wenn sie für jeden Mißt ihr eigenes Süppchen kochen.

Hat sich erledigt, da schon beantwortet.

AlfredENeumann
2003-05-27, 19:09:34
Original geschrieben von ow
Ja, das ist wohl richtig so. Ich denke aber, dass sie sich dessen vielleicht gar nicht bewusst waren, denn wie Demirug ja hier:

http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&threadid=73365

schön ausgeführt hab, ist dafür ja in erster Linie die unterschiedliche Architektur massgeblich. Sowohl die NV wie ATi DX9 Chips können ja prinzipiell dasselbe, nämlich 2.0er Shader in HW verarbeiten.
Nur die Reihenfolge, mit der die einzelnen Shaderinstruktionen dann an den Chip gehen ist wohl nicht für beide gleichgünstig, was mit der dadurch erreichten Auslastung der Funktions-Einheiten (TMU, ALU) zusammenhängt.
Da die Hochsprachen-Shader doch sowieso durch den Compiler gehen ist es doch nur naheliegend, die Shaderstruktur der kompilierten lowlevel-Shader entsprechend der Chiparchitektur auszugeben.

Bei Compilern für übliche Software ist es doch auch gang und gäbe, für die unterschiedlichsten CPU-Architekturen zu kompilieren. (Das muss ja auch so sein, sonst wären wir heute noch beim X86-Befehlssatz, wie in ein 386er kennt.:D)

Nvidia hat mit cg seinen eigenen Compiler geschaffen der die Umsetzung auf NV-CHips recht gut beherrscht, mit dem MS-Compiler erzeugte Shader schmecken den NV-Chips bislang nicht so recht. Und da wird jetzt
offenbar seitens MS für Abhilfe gesorgt.

Tja. Nur wenn jetzt anders Compiliert wird und alles auf NV abgestimmt wird, dann isses doch wieder unfair ATI gegenüber, oder etwa nicht ?

Xmas
2003-05-27, 19:22:28
Original geschrieben von AlfredENeumann
Tja. Nur wenn jetzt anders Compiliert wird und alles auf NV abgestimmt wird, dann isses doch wieder unfair ATI gegenüber, oder etwa nicht ?
Nein, weil das "alte" Profil ja erhalten bleibt. Es gibt nun nur mehr Möglichkeiten zu kompilieren.

AlfredENeumann
2003-05-27, 20:09:20
Original geschrieben von Xmas
Nein, weil das "alte" Profil ja erhalten bleibt. Es gibt nun nur mehr Möglichkeiten zu kompilieren.

Heißt das in dem Programm stehen dann sozusagen 2 Pfade zur Verfügung ?

Weil wenn man nach ps_2_a und vs_2_a compiliert spukt es einen NV-Freundlichen code aus und wenn man nach ps_2 und vs_2 compiliert einen ATI-Freundlichen Code, oder nicht?

Will sagen muß man sich vorher überlegen welche Karte besser mit dem Proggi Performen soll, oder nicht?

Oder sehe ich da was falsch?

ow
2003-05-27, 20:25:30
Soll heissen:

Jeder Chip bekommt das Shadercompilat, dass er am besten verdaut.:D

In Zukunft werden die Grafikchip-Entwickler auch Compiler basteln müssen, es sei denn man verlässt sich auf den MS-Compiler.

Ist ganz wie bei CPUs, da wird´s auch Leute geben, die lieber einen Intel, Borland oder GNU C anstatt des MSVC Compilers nutzen.:D

AlfredENeumann
2003-05-27, 20:43:00
Das ist mir schon klar, nur gibt es doch am Schluß eine Programmcode der entweder NV oder ATI bevorzugt. Also haben wir doch genau so eine Situation wie jetzt.

Demirug
2003-05-27, 20:47:15
Original geschrieben von AlfredENeumann
Heißt das in dem Programm stehen dann sozusagen 2 Pfade zur Verfügung ?

Weil wenn man nach ps_2_a und vs_2_a compiliert spukt es einen NV-Freundlichen code aus und wenn man nach ps_2 und vs_2 compiliert einen ATI-Freundlichen Code, oder nicht?

Will sagen muß man sich vorher überlegen welche Karte besser mit dem Proggi Performen soll, oder nicht?

Oder sehe ich da was falsch?

ow hat es ja eigentlich schon gesagt.

Wir haben das ganze jetzt so gelöst das wir einfach den kompletten Effektsatz mehrfach erzeugen und dann davon den benutzten der am besten zum Chip passt. Diese auswahl wird Aufgrund der DX-caps (da steht auch die PCI Vendor und Device ID drin) getroffen kann aber in bestimmten Grenzen auch vom Benutzer bestimmt werden. Meine Experimentalversion hier kann das sogar zur Laufzeit.

Das ganze ist den unterschiedlichen Renderpfaden von DOOM III nicht unähnlich nur das man DX dafür nicht den Sourcecode anfassen muss sondern das vollständig nachträglich konfiguriebar machen kann. Man kann also einen neuen Chip auch nachträglich sehr einfach einbinden. Wir überlegen uns auch noch gerade ob wir den Effekt generator mit ausliefern welcher dann erst beim Installieren die für den Chip passenden Effektsets erzeugt.

Ok das ganze hat jetzt wahrscheinlich keinen interresiert aber ich wollte einfach mal ein Beispiel geben wie man die ganze Problematik in der Praxsis lösen kann.

ow
2003-05-27, 20:47:53
Original geschrieben von AlfredENeumann
Das ist mir schon klar, nur gibt es doch am Schluß eine Programmcode der entweder NV oder ATI bevorzugt. Also haben wir doch genau so eine Situation wie jetzt.

Nein, der Programmcode am Schluss passt optimal auf beide Chips.

/edit: ah ja, demi war schon am tippen...:D;)

Birdman
2003-05-27, 20:50:53
das haben wir ja eh jeztz schon....z.B. bei jedem neueren OpenGL Game.
Bei solch verschiedener Hardware ist es nun mal erforderlich, dass man unterschiedliche Profile hat, ansonsten läufts auf der einen hardware gut und auf der andern beschissen...oder es läuft auf beiden nur mittelmässig weil vom Entwickler ein Kompromiss beschlossen wurde.

Birdman
2003-05-27, 20:53:35
Original geschrieben von Demirug
...Wir überlegen uns auch noch gerade ob wir den Effekt generator mit ausliefern welcher dann erst beim Installieren die für den Chip passenden Effektsets erzeugt.

Dann schreibt das aber gross auf die Schachtel, sonst schmeisst einer noch seine eben neu erworbene Grafikkarte auf den Müll, nur weil diese im SPiel nun grottiger läuft als die alte ;)

AlfredENeumann
2003-05-27, 20:54:12
Ok. Jetzt habe ich es verstanden.

Demirug
2003-05-27, 20:56:02
Original geschrieben von Birdman
Dann schreibt das aber gross auf die Schachtel, sonst schmeisst einer noch seine eben neu erworbene Grafikkarte auf den Müll, nur weil diese im SPiel nun grottiger läuft als die alte ;)

Nein das kann dann nicht passieren. Wenn wir das Teil wirklich mit ausliefern wird das Spiel auch erkennen wenn man die Grafikkarte wechselt und dann die Sets neu erzeugen.

Birdman
2003-05-27, 21:00:53
hui, was die computertechnologie heutzutage schon alles kann.... :)

mapel110
2003-05-27, 21:27:35
und da das ganze per dx caps gelöst ist, können auch kommende chips von dieser "vielfalt" profitieren :)

Leonidas
2003-05-28, 18:54:09
Original geschrieben von Richthofen
Ich weiss nicht, was ATI machen wird aber bei NV kann ich mir sehr gut vorstellen, dass in den nächsten Review Agreements der nächsten kompletten NV Palette steht - keine 3DMark Tests mehr mit den Karten oder es gibt keine. NV wird auch mit Sicherheit seine Grafikkartenbauer dazu anhalten, selbige Passagen in die Agreements mit aufzunehmen.



Mmh. Also ich habe bisher für noch keinen Test ein Agreement unterzeichnen müssen. Und inklusive der Tests von HT4U sind bei mir schon locker 200-300 durchgelaufen.

PS: Und angesichts dessen würde ich jeden, der mit einem Agreement zu mir kommt, auch nur auslachen.

Leonidas
2003-05-28, 18:56:10
Original geschrieben von AlfredENeumann
Schön und gut, aber wenn jetzt der Murks03 aus den Reviews rausgenommen wird, dann gibt es keinen Bench mehr der großartig DX9 nutzt. Was nutzen dann die ganzen Reviews für DX9-Karten wenn eh regelmaäßig alter Käse gebencht wird und keine Sau weiß wie die Karte sich halbwegs auf DX9-Aplikationen verhält ?


3DMark nutzt wesentlich mehr DX7 und DX8 als DX9. Der Anteil von DX9-Code dürfte bei 20%-30% im 3DMark03 liegen.

Razor
2003-05-28, 19:03:00
Original geschrieben von Leonidas
Der Anteil von DX9-Code dürfte bei 20%-30% im 3DMark03 liegen.
Doch so viel ?
Sicher ?
???

Razir

Richthofen
2003-05-28, 19:10:05
Original geschrieben von Leonidas
Mmh. Also ich habe bisher für noch keinen Test ein Agreement unterzeichnen müssen. Und inklusive der Tests von HT4U sind bei mir schon locker 200-300 durchgelaufen.

PS: Und angesichts dessen würde ich jeden, der mit einem Agreement zu mir kommt, auch nur auslachen.

So etwas ähnliches hat es bereits schonmal gegeben und auch AMD hat ähnliches schonmal durchgeführt.
Die ersten T-Bred B Reviews durfte allesamt nur mit nFOrce2 gemacht werden.
Wenn der 3DMurks sich nicht von alleine erledigt, wird NV früher oder später zu so einer Maßnahme greifen verlass dich drauf.
Du lachst die dann vielleicht aus nur bekommst dann halt auch keine Karte und musst diese dann kaufen.
Es durfte ja auch nicht jeder Doom3 Benchies machen.

Ich kann dir garantieren, dass die überwätigende Mehrheit der Reviewer und dazu zählen vor allem die ganz grossen wie hardocp, Anand und TOM mitspielen werden. Es wird sicher so paar kleinere Querulanten geben, die dann halt ne Karte kaufen oder sich nicht daran halten oder wie auch immer, aber die die große Aufmerksamkeit genießen und eine große Menge an Usern erreichen, würden in jedem Fall mitspielen. Beim Benchen aktueller und neuester Hardware, will keiner zurückstecken und jeder von Anfang an mit seinem Test dabei sein. Soweit wird es aber wohl gar nicht kommen müssen, da sich der Murks wohl von selber erledigt.

Nachtrag:
Jetzt fällt es mir wieder ein. Bei Beyond3D und dem NV30 Preview war das der Fall. Dave Baumann musste unterschreiben, dass er keinen Murks2003 beim NV30 Preview mitbencht.