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

1

22.08.2011, 21:44

Kleine Frage zu HLSL Pixelshadern

Hallo Leute,

Ich hebe, wie der Title des Threads schon lautet, eine kleine Frage zu Pixelshadern in HLSL (Shader Model 4.0).
Und zwar wie ein PS aussehen würde, der wie die Fixed-Function-Pipeline mit dem FVF (Position, Farbe, Textur-Koordinaten) funktioniert.

zuerst würde man denken, dass folgender Shader sich genau so verhält:

HLSL-Quelltext

1
2
3
4
5
6
7
Texture2D myTexture : register(t0);
SamplerState mySampler : register(s0);

float4 ps_main(float4 pos : POSITION, float4 diffuse : COLOR, float2 tex : TEXCOORD) : SV_TARGET
{
    return myTexture.Sample(mySampler, tex) * diffuse;
}


Jedoch wird (logischerweise) nur Schwarz ausgegeben, wenn keine Textur angegeben ist.
Bei der FFP wurde allerdings dann nur die Streufarbe ausgegeben.

Kann man dieses Verhalten irgendwie in einen Shader packen oder muss man es in 2 Shader aufteilen?
So habe ich es bis jetzt gemacht, finde es aber schlecht gelöst.

Danke :)

P.S.: Sorry wenn die Frage etwas dumm ist. Bin ein Shader-Anfänger ^^

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

22.08.2011, 21:57

Wieso findest du dass zwei Shader eine schlechte Lösung wären? Mach zwei Shader ;)

3

22.08.2011, 22:12

Wieso findest du dass zwei Shader eine schlechte Lösung wären?

Ich dachte es gäbe eine elegantere Lösung. Kenne mich noch nicht so gut aus in der Welt der Shader.
Deswegen habe ich lieber mal nachgefragt :)

4

22.08.2011, 22:12

Du könntest natürlich Variablen setzen, ob die Textur benutzt werden soll oder nicht. Allerdings verbrauchen solche Abfragen natürlich minimal Rechenleistung (die bei so kurzen Shadern natürlich wieder ins Gewicht fallen).
Aber früher oder später wirst du eh zig Shader für verschiedene Materialien haben, sich jetzt schonmal für eine geschickte Shaderverwaltung zu kümmern, macht sicherlich Sinn.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige