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

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

1

28.12.2009, 21:42

[Erledigt] [HLSL] Wann transformation?

Hi Leute!
Ich finde häufig VertexShader, die die World und die View Matrix miteinander multiplizieren.
Ansich ist das eine feine Sache und vor allem ein notwendiges Übel, aber wäre es nicht sinnvoller für jedes Mesh diese beiden Matrizen zu multiplizieren anstatt für jeden Vertex?
Oder optimiert sowas der Shader-Compiler?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

28.12.2009, 21:51

Normalerweise wird das für ein Objekt gemacht ja.

Wo hast du denn so etwas gesehen?

Ich kann mir nur sehr schwer vorstellen, dass für jeden Vertex die Matrix neu erstellt wird..

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

3

01.01.2010, 16:44

Du willst ein Beispiel? Hier ist eins:
http://www.online-tutorials.net/directx/vertex-shader-pixel-shader-untersttzung-in-directx-9/tutorials-t-7-2.html
Gefunden auf der Suche nach "Vertex Shader Tutorial" bei google.de War gleich der erste Treffer.

Ist das normal?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

01.01.2010, 16:53

Also hab nurmal drübergeschaut aber soweit ich das seh werden in diesem Beispiel die World und View Matrix schon im Programm multipliziert und dann als WorldView an den Shader übergeben. Man könnte auch direkt die WorldViewProjection übergeben (also gleich alles zusammenmultipliziert) aber in dem Fall wird die Viewspace Position weiter an den Pixelshader übergeben und da macht es sinn erst in den Viewspace zu transformieren und dann die Projektion draufzurechnen da man im Vertexshader das Zwischenergebnis braucht.

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

5

01.01.2010, 17:09

Ich ging von diesem "Simplen Shader" aus, der alles kommunistisch macht. (Der war ziemlich ganz unten)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
VS_OUTPUT VS(float3 Pos  : POSITION) 
{ 
    VS_OUTPUT Out = (VS_OUTPUT)0;  

   float4x4 WorldView = mul(matWorld, matView

    float3 P = mul(float4(Pos, 1), (float4x3)WorldView);  // position (view space)  

    Out.Pos  = mul(float4(P,1), matProject);             // position (projected) 

    Out.Diff = roteFarbe;  

    return Out; 

}

6

01.01.2010, 18:12

In diesem Beispiel isses Blödsinn, aber man braucht schon ab und zu die Matrizen getrennt. Da muss man sich halt immer überlegen, wie man am günstigsten auskommt.
Und "erster Treffer" muss ja nicht viel heißen, es gibt zig Tutorials von Leuten die nicht wirklich Ahnung haben aber einfach mal was schreiben. Ist halt die Frage ob sowas besser als gar keine Tutorials ist.
Lieber dumm fragen, als dumm bleiben!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

01.01.2010, 19:02

Zitat von »"BlazeX"«

Ich ging von diesem "Simplen Shader" aus, der alles kommunistisch macht. (Der war ziemlich ganz unten


Oh das mul hab ich doch tatsächlich übersehen^^
Wie Jonathan_Klein schon gesagt is das in dem Beispiel natürlich Blödsinn.

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

8

02.01.2010, 16:48

Na dann vielen Dank!
Ich werde dann alle möglichen (nützlichen) Kombinationen (wie ViewProj, oder WorldView) vorher ausrechnen und dann im Shader die fertigen verwenden.

Werbeanzeige