#26 13.01.2006 11:20:34

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Ok, ich konnte heute endlich Zeit finden, mir das Tutorial durchzulesen smile

Es sind nur Kleinigkeiten, die mir aufgefallen sind - bitte nicht böse nehmen, dass ich ins kleinere Detail gegangen bin. Es ist grundlegend nichts falsch.

Zitat:

Ein Shader ersetzt die normale fixed-function-pipeline (FFP)

1) Da bin ich mir gerade nicht mehr so sicher. Wenn ich mich recht erinnere, kann man Shader und FFP beschränkt zusammen verwenden. Aber keine Garantie dafür, also einfach so stehen lassen wink

2) Mit welchen Befehl kann man kompilierte Assembler-Shader laden?

Zitat:

Diese setzt auf den Assembleransatz auf erspart den etwas anstrengenden Umgang mit Assembler-Code.

3) Etwas ungünstig formuliert. Kannst du das evtl. umschreiben? Oder da fehlt nur ein "und" ...

Zitat:

(wenn man im HLSL-Code angibt, welche Texturen und welches x-File er dafür laden soll)

4) Könntest du hier vielleicht noch den Verweis geben, dass dieses automatische Laden im Shader nur im Editor funktioniert und wenn man dann den Shader in seinen eigenen code einbaut, man die Texturen etc. wieder seperat an den Shader übergeben muss, weil der das nicht automatisch macht.

Zitat:

nVidia und ATI bieten auch je einen "richtigen" Editor für HLSL an

5) Wieso das "richtigen" in Anführungszeichen? Willst du den EffectEdit runter machen big_smile - der ist imho voll ausreichend und gut.

Zitat:

In einem fx-File können diverse "Techniques" untergebracht werden

6) Es können mehrere eingefügt werden, aber man muss beachten, dass mindestens eine Pflicht ist. Nur so als Detailinformation, damit auch der blödeste Leser alles versteht wink

Zitat:

Die fx-Files werden vorher kompiliert und dann mit dem Befehl D3DXCreateEffectFromFile geladen.

7) Wenn ich mich nicht täusche, dann lade ich meine normalen .fx-Files mit den Quelltext mit genau diesen Befehl. Diesbezüglich schau ich aber Zuhause noch einmal nach, da ich gerade doch ein wenig unsicher bin. (Wie ich jetzt - also später im Verlauf des Lesens - gemerkt habe, lädst du deinen "normalen" Shader auch mit diesen Befehl)

8) Bei den Shadern verwendest du ja In und Out für Ein- und Ausgabe. Könntest du vielleicht noch erwähnen, dass man die Anfangsbuchstaben dieser beiden Wörter groß schreiben muss, weil die klein geschriebenen schon reservierte Wörter sind. Dieser Fehler ist mir schon eins zwei mal passiert und ich konnte die Fehlermeldung nicht sofort deuten.

Zitat:

Also erzeugen wir eine nach außen sichtbare Variable mit Namen matWVP, in die das Anwendungsprogramm die Matrix schreiben kann.
Mit dem Kommando

9) Der Hauptsatz (grammatikalisch) bezieht sich hier auf die Erzeugung von matWVP - könntest du deshalb hierfür noch die Deklaration als Code einbinden?

Zitat:

Die Funktion RenderPS erhält als Input einen Wert vom Typ VS_OUTPUT (logisch, muß ja das Ergebnis des Vertexshaders weiterverarbeiten) und gibt den Typ PS_OUTPUT zurück

10) Sag vielleicht noch, dass die Position, die vom VS ausgegeben wird, so nicht vom PS gelesen werden kann. Ich dachte sogar mal, dass man die Position, so wie sie bei dein Code an den PS übergeben wird, man einen Compilerfehler bekommt - aber ich irre mich wohl.

Zitat:

SamplerT0 besteht also aus einer Textur mit Namen "t0", die das Programm setzen kann (und muß)

11) Muß - die alte Rechtschreibung in einen mega neuen Tutorial? big_smile
12) Vielleicht könntest du bei den Code darüber noch kurz darauf hinweisen, dass die eckigen Klammen um t0 gesetzt werden müssen. Diese weg zu lassen ist so ein typischer Anfängerfehler.

Zitat:

g_Effect.SetTechnique('tec0');

13) Einen Thread in unserer DirectX-Sektion zufolge, liefert dieser Befehl so einen Fehler, wenn man mehrere Techniques hat, denn als Parameter wird eigentlich ein ParameterHandle oder so verlangt aber man übergibt einen string. Weis nicht, ob der Fehler überall auftritt. Die sicherste Variante ist sich das enstsprechende Handle vie Effect.GetTechniqueByIndex (oder so in etwa - hab kein SDK hier) zu holen und dies zu übergeben.
Es ist aber auch möglich, dass es nur ein Bug der alten Header war.

Zitat:

pMesh.CloneMeshFVF(D3DXMESH_MANAGED, D3DFVF_XYZ or D3DFVF_NORMAL or D3DFVF_DIFFUSE or D3DFVF_TEX1, g_pd3dDevice, g_pMesh))

14) Die Normale kannst du raus nehmen, da du im Shader ja auch keine ausliest.


Also ich muss sagen, dass mir das Tutorial sehr gefällt. smile


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#27 13.01.2006 11:36:55

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

@Coolcat: OK, ich hab die beiden Threads wieder zusammengefügt, aber auch nur, weil Carsten es vorher "blöd" fand smile


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#28 13.01.2006 14:03:50

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Zitat:


Vielleicht könntest du bei den Code darüber noch kurz darauf hinweisen, dass die eckigen Klammen um t0 gesetzt werden müssen. Diese weg zu lassen ist so ein typischer Anfängerfehler.

Das hab ich nicht verstanden. Welche eckigen Klammern??? :rock:

Achso, die. Da hab ich immer runde genommen.

Offline

 

#29 13.01.2006 14:08:21

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

War zu faul noch ein Zitat zu machen big_smile

Zitat:

sampler SamplerT0 = sampler_state
{
   Texture = <t0>;
   MipFilter = LINEAR;
   MagFilter = ANISOTROPIC;
   MinFilter = ANISOTROPIC;
}

Man muss darauf achten, wenn man eigene Variablen auserhalb eines Shaders (also in einer Technique oder sampler) übergibt, dass man die eckigen Klammern nicht vergisst.
Also nicht statt Texture = <t0> einfach Texture = t0 machen. Der Fehler war mir mehrmals am Anfang passiert.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#30 13.01.2006 14:13:28

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Aber runde gehen auch!

Offline

 

#31 13.01.2006 22:16:08

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

erstmal sorry wenn mein 2. thread für etwas Verwirung gesorgt hat.

Ich werde es die Tage überarbeiten, kann aber nächste Woche werden.

Danke für's Gegenlesen.

Carsten

Offline

 

#32 14.01.2006 12:35:52

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Zitat:

erstmal sorry wenn mein 2. thread für etwas Verwirung gesorgt hat.

Verwirrend fand ich es schon, aber war kein Problem das wieder zu ändern.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#33 14.01.2006 12:52:10

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

@Artuk: Habe mal den Text von dir nach oben geschrieben.


My software never has bugs. It just develops random features.

Offline

 

#34 23.01.2006 17:43:47

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

so - habe jetzt noch die Änderungen in pdf und Forumsbeitrag ergänzt - die meisten zumindest.  lol

Ich denke, man kann es jetzt erstmal so lassen.

Carsten

Offline

 

#35 01.09.2006 17:09:31

bjoern
ProMember
Ort: OBK
Registriert: 18.07.2006
Beiträge: 112
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Carsten,

danke für dieses schöne Tutorial, ist ideal da ich eh gerade in die Materie eintauchen wollte...

MfG
Björn

Offline

 

#36 06.12.2006 15:34:23

KleinerHacker
UltraMember
Registriert: 31.01.2006
Beiträge: 286

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Kann eventuell jemand den kompletten Inhalt der Shader-FX-Datei hier hineinschreiben? Ich weiß nicht, was jetzt wie wo hin kommt (in welcher Reihenfolge). Ich kann es mir zwar denken, aber die Datei wird nicht geladen. Es tritt ein Fehler auf!

Danke!  :?  :down:

Offline

 

#37 07.12.2006 07:14:25

JorEl
ExtremeMember
Registriert: 29.01.2005
Beiträge: 894

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Zitat:

die Datei wird nicht geladen. Es tritt ein Fehler auf!

Was für ein Fehler? Der Compiler meldet nicht einfach nur, dass er nicht compilieren kann sondern liefert auch sämtliche Fehler in Form eines ID3DXBuffer zurück - siehe ppCompilationErrors Parameter der Funktion D3DXCreateEffectFromFile.

Der Aufbau von .fx files ist im SDK wirklich sehr häufig zu finden - und es sieht immer genau gleich aus. Zuerst die Definition der globalen Variablen, die man als Parameter verwenden kann, danach die Definition der Typen (zb. Input und Output Typ für die Shader), anschliessend die Shader selbst und danach die Definition der techniques und passes.

JorEl


Jesus hat gesagt - selig sind die, die da Leid erfahren, denn sie sollen getröstet werden... Ford Prefect hat gesagt - es ist unheimlich wichtig, dass wir miteinander reden und einen trinken.

Offline

 

#38 07.12.2006 11:52:28

KleinerHacker
UltraMember
Registriert: 31.01.2006
Beiträge: 286

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Ich öffne immer das FX-File mit dem speziellen FX-Programm aus dem SDK. Der gibt mir aus: Nicht deklarierte Variable t0

Offline

 

#39 07.12.2006 16:12:56

Dreamworld
UltraMember
Ort: Karlsruhe
Registriert: 06.12.2005
Beiträge: 368

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Schau doch einfach in der PDF Datei, da is ganz unten ein Link zu dem Quellcode, da is der Shader dabei, und alles was du brauchst.

MfG Dreamworld.

Offline

 

#40 07.12.2006 17:18:37

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Zitat:


Ich öffne immer das FX-File mit dem speziellen FX-Programm aus dem SDK. Der gibt mir aus: Nicht deklarierte Variable t0

Hört sich an, als erwarte das Tool HLSL, bekommt aber Assembler.

DerPeer

Offline

 

#41 08.12.2006 10:26:05

KleinerHacker
UltraMember
Registriert: 31.01.2006
Beiträge: 286

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

In dem Beispiel fehlt bloß die Variable

Code: delphi

texture t0



dann geht es.  big_smile

Offline

 

#42 14.01.2007 14:28:05

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Ich muß mal ne Frage zu meinem eigenen Tutorial loswerden wink
Wenn ich das so umbaue, daß nur der Pixelshader zum Einsatz kommt, die Vertextrafo ber konventionell abläuft, dann läuft das wunderbar. Seltsamerweise findet man diese Variante aber in der Welt der Shadertutorials nicht. Selbst bein einfachen Beispielen ohne erkennbare Notwendigkeit eines Vertex-Shaders wird stets VS+PS benutzt.
Wäre mein Ansatz mit der Beschränkung auf reinen PS-Einsatz also evtl. nicht sinnvoll?

Carsten

Offline

 

#43 14.01.2007 15:03:43

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Ähm, es könnte sein das nicht auf jeder Grafikkarte funktioniert. Jedenfalls war ich bisher der Meinung das sich FFP und Shader gegenseitig ausschließen. Letztlich ist es spielt es doch eh keine Rolle, die FFP ist ja auch nichts anderes als ein Default-Shader.


My software never has bugs. It just develops random features.

Offline

 

#44 14.01.2007 15:10:18

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Andersrum geht's auf jeden Fall, also VS und kein PS - dazu gibt's ein Beispiel im DirectX-SDK.

Nach meinem Verständis sollte es auch andersrum gehen (was ja bei mir auch der Fall ist), aber man weiß ja nie wink

Carsten

Offline

 

#45 14.01.2007 21:38:16

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Ich versteh nicht ganz. Ich sehe doch einen VertexShader, oder etwa nicht? Ist hier noch wo ein PS ohne VS??

Wenn du normal Texturen per FFP setzt und normale Beleuchtung hast und du keine VertexTransformationen machen willst, dann reicht ein PS vollkommen aus. Mache ich genauso.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#46 15.01.2007 02:00:37

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Jau, im Tutorial ist ein Vertexshader drin, aber ich würde für meine Anwendung gerne drauf verzichten, da (bisher) kein Bedarf.

Hat jemand ne gute Sammlung von HLSL-Beispielen? Ich suche als erstes was, das weich zwischen zwei Texturen überblendet, und zwar parallel zu Polygonkanten und möglichst mit einer etwas zufälligen Trennlinie. Kriegt man so einen weichen und leicht zufälligen Übergang irgendwie prozedural hin? Also ohne alpha-Textur?

Gute Nacht

Carsten

Offline

 

#47 18.01.2007 15:09:48

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Mein Terrain zum Beispiel sucht sich die Texturen über die VertexFarbe heraus. Der Shader dazu geht relativ einfach, erst recht, wenn mal ps.2.0 nutzt. Steht auch in meinen Tutorial drin (Landschaftserstellung)


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#48 18.01.2007 17:08:15

Carsten
ProMember
Ort: Braunschweig
Registriert: 05.01.2006
Beiträge: 220
Web-Seite

Re: [Shader] Einstieg in Vertex-/Pixel-Shader

Danke für den Hinweis. Mein Gelände beruht zwar auf Originaldaten, aber für den Shader kann es natürlich trotzdem interessant sein.

Die eigentlich zugrundeliegenden Probleme hinter meiner Frage oben, ist das Zusammenspiel zwischen externen Daten, Vertex- und Pixelshader. Allerdings hätte ich nur mal in die Links am Ende meines eigenen Tutorials schauen sollen, denn die "Introduction tu HLSL" war genau das, was mir fehlte, also inzwischen sehe ich deutlich klarer.

Carsten

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson