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

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

1

23.08.2011, 09:56

Zwei Shader gleichzeitig benutzen

Hallo zusammen,

wie funktioniert eigentlich das rendern mit 2 Shadern?

Nehmen wir mal an, ich zeichne ein Dreieck und berechne im ersten Shader die Textur. Nun im zweiten Shader berechne ich das Licht.

Wie funktioniert das?

Würde meine Idee schon zum Erfolg führen? Ich glaube wenn ich das so bauen würde, dann würde der zweite Shader den ersten überschreiben.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
//Textur
deviceContext->IASetInputLayout(m_layout1);
deviceContext->VSSetShader(m_vertexShader1, NULL, 0);
deviceContext->PSSetShader(m_pixelShader1, NULL, 0);

//Licht
deviceContext->IASetInputLayout(m_layout2);
deviceContext->VSSetShader(m_vertexShader2, NULL, 0);
deviceContext->PSSetShader(m_pixelShader2, NULL, 0);

deviceContext->DrawIndexed(indexCount, 0, 0);


Schöne Grüße

Fb

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

23.08.2011, 10:00

Also so geht das gar nicht.
Du kannst immer nur einen Shader gleichzeitig aktivieren. In Deinem Code-Beispiel würde alles mit Shader2 gezeichnet.
Wenn überhaupt, dann musst Du noch ein "DrawIndexed" in die Mitte setzen.
Ohne Alpha-Blending würde der zweite Shader dann aber immer noch die Pixel des ersten überschreiben.
Also entweder mehrere Durchgänge rendern und mit Alpha-Blending kombinieren (Multi-Pass Rendering) oder einen "mächtigeren" Shader benutzen, der beides in einem macht. Letzteres ist eher zu empfehlen.

PS: Neue Frage -> neues Thema! (ich habe Deine Frage in ein neues Thema verschoben)

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

3

23.08.2011, 11:55

solved

Dem ist wohl nichts mehr hinzuzufügen.
Danke!

Werbeanzeige