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

18.08.2004, 17:27

frage zu pixelShader; HLSL

hi,

sagt mal wie kann ich in HLSL bei einem pixelshader
zugriff auf den aktuellen farbwert nehmen?

also z.B. sowas:

C-/C++-Quelltext

1
2
3
4
float4 myPS(vertex IN, float4 color:COLOR):COLOR{
      float4 c = color + tex2D(Sampler, IN.texture0);
      return c;
}


geht das überhaupt?

gruß 23h

2

18.08.2004, 17:34

Natrürlich geht das. Sonst wäre es ja kein PixelShader ;p

Also du bekommst einmal die Aktuelle Farbe über das Input-Register v# für die aktuelle Farbe, vom Vertex und einmal die Aktuelle Farbe von deinen n-Texturen.

Mit diesen kannst du dann alles anstellen was du willst.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

3

19.08.2004, 01:06

geb mal bitte ine hlsl-bsp.
würde mein code oben funktionieren? denn irgendwie tut ers nicht!

4

19.08.2004, 01:07

halt moment. was sagst du da? die farbe von meinen texturen und die farbe
vom vertex? ich mein doch aber die farbe die berreits an der position
meines pixels auf dem bildschirm ist!

5

19.08.2004, 01:23

afaik ist es so:

Du kannst mehrere Resource festlegen, in denen Farben Definiert sind.
1) Vertex Farbe (D3DFVF_DIFFUSE & D3DFVF_SPECULAR)
2) Für jeden Texel einer Textur
3) Farbwert durch eine Konstante

Der VertexShader verarbeitet jeden einzelnen Vertex der durch die Pipeline geschickt wird und der PixelShader jeden Pixel. Dabei wird im falle der Vertex Farbe, nicht immer der Farbwert genommen den du festgelegt hast, sondern der Interpolierte Farbwert. Und zwar für jeden Pixel den das Dreieck auf dem Bildschirm belegt. Das selbe gilt für die Texturen. Nur das hier der Texel von der Textur ermittelt wird, ausgehend von den Koordinaten.

Sprich die Farbwerte die du bekommst gelten alle für einen Pixel auf deinem Screen. Allerdings unabhängig davon ob dieser Pixel später noch von einem anderen Pixel überschrieben wird. Auf die Farbe eines Pixel am endgültigen Resultats kann der PixelShader nicht mehr zugreifen. Dafür ist er aucht nich da.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

6

19.08.2004, 19:31

>>Auf die Farbe eines Pixel am endgültigen Resultats kann der PixelShader >>nicht mehr zugreifen. Dafür ist er aucht nich da.

das hatte ich befürchtet.

danke trotzdem

7

19.08.2004, 21:25

Was willst du denn machen?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

8

20.08.2004, 14:27

hm ne konkret hatte ich kein ziel :)
nur dann hätte man ja z.B. alphablending
nur mit hilfe von pixelshadern realisieren können.
manuell praktisch....hm und ich weis nich,
aber irgendwie hab ich mir eingebildet man könnte dann
lauter lustige sachen machen..allerdings keinen plan welche ^_^

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

9

20.08.2004, 19:13

Also meinst du nicht das Endresultat, sondern die bereits vorhandene Farbe des Pixels, das gerade bearbeitet wird, oder?
Ich denke, das wird einem doch auf jeden Fall zur Verfügung stehen! Viele Effekte wären sonst ja gar nicht denkbar...
Mozilla Firefox
The Browser - reloaded

10

20.08.2004, 19:52

jo genau die farbe mein ich.

geht das jetzt oder nicht?

Werbeanzeige