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.07.2004, 19:41

PerPixel Lighting mit PixelShader

Ich wollte grad versuchen PerPixel Lighting über die Shader zu Implementieren, PerVertex Lighting hab ich bereits.

Allerdings will mir PerPixel Lighting noch nicht so recht gelingen. In allen Beispielen wird immer eine Normal- oder Bump-Map genutzt. Ist es überhaupt möglich PerPixel Lighting zu realisieren ohne so eine Map? Wenn ja wie?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

22.07.2004, 20:10

Naja, rein von der logik schon, denn man könnte die normal map ja auch neutral machen.......[/code]

DrthM2001

Alter Hase

Beiträge: 721

Wohnort: Karlsruhe

  • Private Nachricht senden

3

22.07.2004, 20:24

Wozu braucht man für Per-Pixel Lighting eine Normal Map?!?!

4

22.07.2004, 20:29

Mit Normal-Map ist ja logisch.

Zu Erklärung:
Die Normal-Map beschreibt die einzelnen Normalen für jeden Texel einer Textur. Dabei stellt jeder Farb-Kanal eine Koordinate da. Man brauch den Normalen-Vektor um bestimmen zu können wie "Stark" der Texel vom Licht beleuchtet wird.

@Nox:
Wie meinst du das mit "neutral machen"?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

22.07.2004, 20:30

*kratz sich am kopf* die 3 Tag lan machen mcih doch ganzschön fertig ;D .
Es macht ja wenig Sinn für jeden Pixel den selben zu nehmen, denn dann wäre es sinn less.........

6

22.07.2004, 21:48

Tja natürlich geht das!
Du übergibst ins eine Texturregister die Vertexnormale und ins andere die Vertexposition! Das wird automatisch interpoliert, und wenn das Licht zwischen 2 Vertices ist, schaut's trotzdem korrekt aus. Also du nimmst den Code vom VS, und schiebst in in den PS und übergibst im VS alles nötige.

7

22.07.2004, 22:35

Das werd ich mal testen. Aber ist das dann nicht das gleich wie PerVertex Lighting? Nur halt im PixelShader errchnet? Die Farbwerte werden ja auch Interpoliert.

[edit] Habs mal ausprobiert. Danke für den Tipp :) Ist ja klar. Der Normalen-Vektor wird ja für jeden Pixel Interpoliert. Auch wenn die Graka denkt das es sich um ein Texturkoordinate oder Vertex Position handelt.

Hier mal ein kleines Bild als direkten Vergleich. Links per Vertex Lighting und rechts per Pixel Lighting.

(Link)

Das ganze ist für Shader V2.0 gemacht. Das Modell ist extra ein Low Poly Modell. Der Unterschied ist besonders beim Glanz zu erkennen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

22.07.2004, 22:46

Ich habe da immernoch eine Denblockade...Also du willst dem PS die Position UND den Normal übergeben, aber müsste man nicht theoretisch für ein Dreieck dann alles in 3facher ausführung übergeben oder wir das automatisch gemacht? Und wenn ja wo wird das gemacht woher weiß das es erwünscht ist.(am einfachesten einfach mal den vs und den ps posten...)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

23.07.2004, 01:18

Per-Pixel-Lighting ohne Normal-Map dürfte kaum Verbesserungen gegenüber Per-Vertex-Lighting bringen. Da bei Per-Pixel-Lighting sowieso keine Dinge wie Attenuation oder Spotlight-Winkel berechnet werden (weil es zu aufwändig ist), hat es eigentlich kaum einen Sinn, würde ich mal so sagen. Wenn schon, dann mit Normal-Map - man hat ja wesentlich mehr Möglichkeiten.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

23.07.2004, 01:24

Hmm, schon recht deutlich der unterschied, wobei ich die rief glatt mla mit bump machen würde.(wenn du es machst linke mal bitte die bilder)

PS: in was für einen register habt ihr die vektoren geladen?
PPS: Die Position braucht man doch nur, wenn mit dem absoluten daten rechnet, oder?

Werbeanzeige