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

Frogy

Frischling

  • »Frogy« ist der Autor dieses Themas

Beiträge: 43

Wohnort: Weimar

Beruf: Schüler (Klasse 9; Spezi)

  • Private Nachricht senden

1

26.01.2007, 19:38

Bloom Effekte (HDR)

Wie funktionieren Bloom Effects? Eine etwas umfangreiche Frage, ich weiß ;) . Aber ich denke sehr interessant.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

26.01.2007, 19:45

alles was leuchten soll wird in eine textur gerendert.
dann wird die textur mit einem shader erst in horizintaler und dann in vertikaler richtung gestreckt und das ergebnis dann über den backbuffer geblendet.
das ist alles...

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

3

26.01.2007, 22:54

das das so einfach ist hätte ich jetzt nicht gedacht...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

26.01.2007, 23:24

der bloom schon, das mit dem HDR is eine andere geschichte...

aber im prinzip wird einfach die szene in ein floating point target gerendert (geht auch ohne, aber das ist heutzutage nicht mehr notwendig), ohne dabei die farbwerte auf 0..1 zu beschränken. so kann man ein viel höheres verhältnis zwischen hellstem und dunkelstem teil des bildes (dynamic range) abbilden.
eine lichtquelle kann z.b. die farbe (1000.0, 1000.0, 1000.0) haben...

um das darzustellen, müssen wir das ganze natürlich wieder irgendwie in den 0..1 bereich bringen (HDR monitore gits atm nur im labor...).
das macht das sog. tonemapping. wir ermitteln die mittlere helligkeit der szene (z.b. indem wir die helligkeit in ein eigenes rendertarget schreiben und dieses dann bis auf 1x1 pixel downsamplen) und skalieren unser HDR bild proportional zu diesem wert herunter. alles was jetzt noch über einem bestimmten wert liegt, wird in ein neues target geschrieben für den bloom effekt.

im prinzip is das alles ;)

oft verwendet man aber gar kein "richtiges" hdr, sondern rendert z.b. nur die specular anteile der farben in eine eigene textur und blendet diese dann mit einem bloom filter über die szene.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

5

27.01.2007, 10:34

also hdr habe ich mir schon mal angeschaut. das ganze ist wirklich nicht so einfach

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

27.01.2007, 15:31

Zitat von »"dot"«

der bloom schon, das mit dem HDR is eine andere geschichte...


HDR ist eigentlich HDRR welches fälchlicherweiße oft zu HDR dekradiert wird! Nur als Anmerkung! Ich muss das arme High Dynamic Range Rendering aber mal verteidigen! :)

grüße
@D13_Dreinig

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

7

04.03.2007, 19:58

ich habe da mal einen ansatz:

man rendert den screen in eine texture mit der selben größe wie den backbuffer. dann rendert man das bild in eine vertikal verzogene texture. danach die texture in einen eine horizontal verzogene texture. dann blendet man das ganze wieder zusammen -> voilà

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

04.03.2007, 20:11

man rendert den screen üblicherweise in ein target mit 1/2, 1/3 oder 1/4 der abmessungen des backbuffers und streckt es dann horizontal und vertikal (mit einem shader) und blendet es dann zusammen.
manchmal wiederholt man den streckvorgang auch immer wieder (ping-pong rendering zwischen mehreren surfaces), um noch größere bloom filter zu bekommen.
limit ist hier das verwendete shader model und die fillrate.

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

9

15.07.2008, 01:08

Eine Frage. Warum verwendet man für das Strecken Shader? So weit ich das jetzt verstanden habe, kann man doch auch einfach die Bloom-Textur langgezogen über die ganze Szene additiv blenden? Ist doch kein großer Aufwand?
<< an dieser Stelle ist eine Signatur verstorben >>

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

10

15.07.2008, 08:29

Man kann den Effekt noch etwas verschönern wenn man dabei ein Blur Shader verwendet.
Aber das geht natürlich auf die Performance ;)

Werbeanzeige