Bloom Filter (aka fake HDR) für einzelne Entities

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

FreakForFreedom

Betreff: Bloom Filter (aka fake HDR) für einzelne Entities

BeitragDo, Mai 04, 2006 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute!

Seit einiger Zeit (ganz genau seit The Elders Scrolls: Oblivion draussen ist^^) bin ich total fasziniert durch einen bestimmten Effekt, der sich "Bloom" nennt (HDRI läuft bei mir nicht Sad ). Viele kennen den ja inzwischen aus Prinz of Persia oder so.
Ich habe lange die Weiten des Netzes durchsucht und habe leider ersstaunlich wenig über dieses Thema finden können. Die meisten Posts zeigen Screens von Demos oder so, aber leider konnte ich nirgens Code oder Erklärung zum How-To-Do finden.
Den einzigen Bloomfilter für BB, den ich finden konnte, war der von Bouncer.
Leider ist der nur Fullscreen und erhellt absolut alles.
Was ich suche, ist ein Bloom Effekt, der nur die weissen/hellen Stellen auf Texturen erhellt, den Rest aber so läßt, wie er ist.
Auch wird beim Fullscreen Bloom (wenn ichs richtig verstanden habe) einfach ein Sprite erstellt, alles erhellt und dann mit alpha vor die Kamera gepackt.
Also ist alles von dem Filter betroffen. Weiss einer vieleicht eine Möglichkeit, wie man nur einzelne Objekte "bloomen" kann?
Hier hat einer es geschafft, nur leider ka wie. (screen:http://img75.imageshack.us/my....ass2wd.jpg)


Danke im Vorraus.
Mfg
F.F.F.
"Try and ERROR!"
 

Dreamora

BeitragDo, Mai 04, 2006 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sieht aus als ob es mit einer eigenen Engine gemacht wurde, da B3D keine fensterkontrollen besitzt. Also entweder BB+ oder direkt OGRE.


Wenn du in BB Bloom faken möchtest, müsstest du die Shaderoperation die dabei gemacht wird faken. Wenn ich mich nicht irre, müsste Bloom Multiply Add sein. Dazu musst du das in eine Textur rendern und diese dann auf Sprites packen. Der eine läuft auf Multiply, der andere auf Add.

Diese Sprites müssen dann vor die Cam und dann das ganze nochmal rendern.


Wenn du nur selektiv objekte bloomen willst, wirds ein wenig schwerer ... Aurora (Anthony) hat mal sowas gemacht ... denke dazu müsstest du jedes der entsprechenden Objekte selektiv rendern und bloomen.


Auf jeden Fall kostet es leider recht rechenzeit normalerweise.
Ausnahme ist, wenn man Toms DX7DLL nutzt (die render2texture version). Damit kann man die Szene direkt auf die Textur rendern und mit 3 Sprites vor der "Anzeigekamera" arbeiten. Dadurch verliert man nicht ganz soviel Speed
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

coldie

BeitragDo, Mai 04, 2006 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Was kann man mit Toms DX7DLL alles machen,und wo findet man sie?

FreakForFreedom

BeitragDo, Mai 04, 2006 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora: Danke für deine Erklärung. Smile
Zum Screen: Die Scene ist tatsächlich in B3D gecodet... hier der link zum post: http://www.codersworkshop.com/...2400#52400
Zum bloomen von einzelnen Obkelten: Ich hab das mal ausprobiert. Soweit klappt das gut, so lange das Objekt vor allen anderen ist. Wird das Objekt von anderen teilweise/ganz verdeckt und dann nochmal alleine gerendert, sieht es so aus, als ob es vor allen mit einem Alphamodus wäre. Wie kann man das Lösen?

Die DX7DLL kann man glaube ich auf der Blitzbasic bekommen...
(http://www.blitzbasic.com/Comm...opic=59360)
Ich weiss aber nicht, ob es die Aktuelle ist.
Mfg
F.F.F.
"Try and ERROR!"

Mr.Keks

BeitragDo, Mai 04, 2006 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
bloomfaken geht recht einfach auch ohne irgendwelches shaderzeugs...
zwei sprites vor die cam. einen zum abdunkeln der dunklen passagen, einen zum aufhellen der hellen. beide bilder bluren...

so machten wir das in ae.

hier mal nen screen mit voll aufgedrehtem bloom Very Happy
user posted image

das ganze kostet etwas rechenzeit, da man die szene auf die sprites rendern muss.. allerdings hat dieses neurendern der szene vorteile: man kann die dinge, die weniger glow haben sollen dunkler rendern und die, die mehr haben sollen, heller... (also entitycolor umstellen vor dem rendern)
womit wir schon bei der beantwortung deiner frage wären: wenn du nur willst, dass einige objekte so hell leuchten, dann machst du alle anderen schwarz und renderst dann auch nur auf einen addierten sprite...
MrKeks.net

FreakForFreedom

BeitragDo, Mai 04, 2006 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
WoW cool danke dir Inarie!
Ich war anscheinend so besessen, den Bloom Effekt zu "haben", dass ich das entitycolor vergessen hatte. Ich hab nämlich versucht, alle anderen Entities mit einer schwarzer Textur (vor dem BloomRendern) zu beziehen und das ging natürlich voll in die Hose. Auch hab ich versucht, pro Renderbild alle Infos der Pixel abzurufen und nur die hellen du blurren... war auch nicht so schlau. Smile
Aber deine Idee ist super. Danke dir!
Smile
(gleich mal ausprobieren...)


Ps: Nice der Screen. Smile
Mfg
F.F.F.
"Try and ERROR!"

Mr.Keks

BeitragDo, Mai 04, 2006 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du etwas zu faul für entitycolor auf jedem objekt bist, geht auch etwas anderes: nen fog setzen, der direkt vor der cam beginnt und alles schwarz einfärbt... außer den objekten, die leuchten sollen, bei denen du dann halt entityfx anpasst.
MrKeks.net

FreakForFreedom

BeitragDo, Mai 04, 2006 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm die Idee ist auch super. Ich muss mal gucken, was schneller ist. Ich denke aber, das das mit dem fog bei sehr vielen Objekten schneller sein wird. Ich teste es mal. Danke dir!
Mfg
F.F.F.
"Try and ERROR!"
 

Dreamora

BeitragDo, Mai 04, 2006 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gäbe noch eine "minimalistenVersion" die eigentlich funktionieren sollte:

Alle zu einem Worldroot parenten, die nicht gebloomt werden sollen und vor dem bloom den worldroot hiden und danach wieder anzeigen.

Müsste theoretisch sogar am schnellsten sein.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FreakForFreedom

BeitragDo, Mai 04, 2006 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm die Idee ist an sich vom Speed her super, leider geht das mit dem hiden nicht. Weil die Objekte, die hinter den "gehideten" Objekten sind, werden dann so aussehen, als wären sie im Alphamodus und im Vordergrund (habe ich schon ausprobiert^^) .
Mfg
F.F.F.
"Try and ERROR!"
 

Dreamora

BeitragDo, Mai 04, 2006 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
schade ... wäre zu schön gewesen.
Dachte solch absurde dinge passieren bei EntityAlpha 0 und so.
Allerdings könntest du das rooten dennoch nehmen und dann obige ideen darauf machen. eigentlich sollten settings an der root entity auch an die childs weiter gereicht werden.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jan_

Ehemaliger Admin

BeitragFr, Mai 05, 2006 8:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Codearchiev

Blur Engine von Jan_

Verschwimmen durch Spriteabstand, Blend.

das ist was du suchst.
between angels and insects

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group