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

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

1

09.01.2011, 12:45

[Irrlicht] Alpha Kanal benutzen und Additive Farbmischung

hey,
ich möchte ein gute Sonne rendern.
jetzt hat mir Schorote auch erklärt wie man eine geniale Sonne rendert, aber dazu brauch ich den Alpha Kanal von meine Textur also dass ein paar pixel transparent werden und ich will dass sich mehrere Texturen hintereinander von der Farbe her addieren, sodass in der mitte der Sonne eine weiße helle farbe ensteht.

In Irrlicht kann man verschiedene Materialtypen einstellen:
http://irrlicht.sourceforge.net/docu/nam…1a6d30cbc5430f1


daraus hab ich mir EMT_TRANSPARENT_ALPHA_CHANNEL raus genommen und dabei kam die richtige sonne raus, nur ohne dieses additive Farbmischung.


(Link)


hier habe ich es mit dem versucht EMT_TRANSPARENT_ADD_COLOR hier wird anscheinend das mit der additiven Farbmischung korrekt gemacht aber da werden meine transparenten Pixel komplett ignoriert:


(Link)


wie schaff ich jetzt beides gleichzeitig zu aktivieren? oder gibt es da noch einen anderen Material Typ?
New Project: Operation CityRacer

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

09.01.2011, 15:17

Ich bin mir nicht ganz sicher was genau EMT_TRANSPARENT_ADD_COLOR tut aber für das was du erreichen willst wirst du wohl additives Blending mit premultiplied Alpha verwenden wollen, d.h. deine Textur enthält nicht einfach nur RGBA Werte sondern die RGB Werte werden in der Textur noch mit dem zugehörigen Alphawert multipliziert.

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

3

09.01.2011, 22:03

hmm...weiß irgenjemand ob man das "additives Blending mit premultiplied Alpha" mit irrlicht einstellen kann? Oder würde das mit diesem eingebauten Material Renderer funktionieren wenn ich ein neues Material damit erstell das dieses ...premultiplied Alpha berechnen kann?
New Project: Operation CityRacer

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

09.01.2011, 22:16

Ich vermute dass EMT_TRANSPARENT_ADD_COLOR genau das macht, soll heißen: Multiplizier die Farbwerte in deiner Textur mit ihrem Alphakanal, dann dürfte es funktionieren ;)

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

5

09.01.2011, 22:25



(Link)


dann passiert aber das hier, wie oben beschrieben
New Project: Operation CityRacer

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

09.01.2011, 22:38

Ich vermute dass das eben genau darum passiert weil deine Textur keine premultipled Alpha Farben enthält sondern einfach nur eine orange Fläche mit dem Umriss der Sonne im Alphakanal ist. Darum mein Vorschlag die Farbwerte in der Textur beim Laden oder Exportieren oder sonst irgendwie (in deinem Malprogramm oder auch in einem Shader oder wo auch immer) mit dem Alpha zu multiplizieren...

Nexxtron

Alter Hase

  • »Nexxtron« ist der Autor dieses Themas

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

7

09.01.2011, 23:04

sorry ich hab aber keine ahnung wie des geht...ich hab noch nie Farben multipliziert... -.-
New Project: Operation CityRacer

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

09.01.2011, 23:12

Du musst einfach nur den R, G und B Wert mit dem A Wert multiplizieren ^^
Wenn du willst schick mir die Textur, dann kann ich dir das schnell machen...

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

11.01.2011, 07:14

Is allerdings schon krass, dass Irrlicht das scheinbar nicht anbietet. Aber is nicht die einzige Engine, die das komischer Weise nicht kann.
Ist die Sache jetzt erledigt? Interessiert mich mal.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

10

11.01.2011, 09:19

Anhand des Bildes sehe ich, dass du mehrere Quads übereinander renderst welche unterschiedlich verdreht sind, kannst du dann nicht einfach EMT_ONETEXTURE_BLEND benutzen und dies Blendeinstellungen hier:

Destination:
EBF_ONE
Source:
EBF_SRC_ALPHA

?

Werbeanzeige