Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

1

12.12.2013, 14:59

TEXCOORD0 / TEXCOORDINA1 ... In HLSL

Liebe Leser.

Ich möchte nun einen eigene Per Pixel-Light-Shader schreiben. Bisher habe ich einen aus dem Internet genommen. Jedoch möchte

ich jetzt was eigenes auf die Reihe bringen. Ich habe mir mal aus verschiedene Quellen ein paar Codes durchgelesen.

Mir ist eines nur nicht ganz klar. Die Funktion TEXCOORD0 sagt dem Shader ja das der Vektor vor der Funktion die Texturekordinaten enthalten. Richtig?

Jedoch steht in den meisten VS_Input / PS_Input Strukture manchmal auch TEXCOORD1 -- TEXCOORD2 -- TEXCOORD3.

Ich weiß leider nicht was genau diese begriffe bedeuten.

Vielen Dank im voraus.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

12.12.2013, 15:36

Man kann mehrere Texturkoordinaten benutzen. 0 sind die ersten, 1 die zweiten usw.

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

3

12.12.2013, 15:55

OK das ist Klar.

Aber die VertexShader Strukture sieht so aus

HLSL-Quelltext

1
2
3
4
5
6
7
struct VertexShaderOutput 
{ 
float4 Position : POSITION0; 
float2 TexCoords : TEXCOORD0; 
float3 Normal : TEXCOORD1; 
float3 WorldPos : TEXCOORD2; 
};


Was hat ein NormalVector mit Texturekordinaten zu tun ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

12.12.2013, 16:41

Achso.
Ein Pixel-Shader kann nur Texturkoordinaten und Farben als Input bekommen.
Darum "missbraucht" man für den Normalenvektor und die Position einfach jeweils einen Texturkoordinaten-Slot.

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

5

12.12.2013, 20:13

Aber wenn der Pixelshader einen Normalvector bekommt, (Der aber die Texturekordinaten enthält). Wie kann der Shader dann die Berechnungen durchführen ?

FSA

Community-Fossil

  • Private Nachricht senden

6

12.12.2013, 21:24

Man sagt nur, dass diese Variable Fließkommazahlen hat. Was du letztendlich dort rein schreibst, ist egal. Das liegt an deinem InputLayout.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

7

13.12.2013, 15:18

OK. Aber wie enthält nachher der Normalvector den Normalvector?

Das ist irgendwie komisch.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

13.12.2013, 15:20

Der Shader wird den halt berechnen.

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

9

13.12.2013, 17:54

Ahhh. Ich habe es kapiert.

Im Vertexshader wird der Normalvector mit

HLSL-Quelltext

1
output.Normal = mul(input.Normal, (float3x3)World);


Der Pixelshader bekommt den vom Vertexshader erstellten Vector und interpoliert ihn für jeden Pixel.

Weil das was der Verteshader wegwirft, hebt der Pixelshader auf.



Vielen Dank für die Hilfe

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

Werbeanzeige