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

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

1

08.08.2011, 13:27

[D3D11]Meine neue Wochenaufgabe - Oldschool Plasma [open]

Hallo zusammen,

an dieser Stelle möchte ich einen Effekt erarbeiten. Ihr kennt bestimmt diese alten Plasma Effekte aus diversen oldschool Demos vom AMIGA oder C64 in den 90er Jahren.

Diesen besagten Effekt möchte ich nun mit D3D11 erneut zum Leben erwecken. Ich habe schon ein wenig gegoogelt und einiges raus gefunden, doch bevor ich nun starte wollte ich mal wieder euren weisen Rat einholen.

Also ... derzeit schwebt mir vor die Farben für das Plasma zuerst mal in einer color map zu speichern. Wie das Plasma da aussieht soll zweitrangig sein, das kann man am Ende immer noch schön machen.

Diese Color Map würde ich dann in eine Textur rendern (Stichwort Stencil Buffer) und dann auf einem Sprite Objekt anzeigen.

Was sagt ihr dazu, ist das der richtige Ansatz oder bewege ich mich in die falsche Richtung?

Ob ich das in einer Woche fertig bekomme sei nun dahin gestellt, würde aber den Fortschritt dann hier veröffentlichen.

Schönen Gruß

Fb

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

08.08.2011, 13:50

Ich persönlich würde dazu tendieren die Palette in eine 1d-Textur zu packen und dann per Pixel-Shader aus den Fragment-Koordinaten das Plasma direkt zu berechnen. Ob es dann noch in eine Textur kommt, das kann jeder selbst entscheiden.
Unklar ist mir, wozu genau Du den Stencil Buffer nehmen willst.
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]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

08.08.2011, 14:26

Ich persönlich würde dazu tendieren die Palette in eine 1d-Textur zu packen und dann per Pixel-Shader aus den Fragment-Koordinaten das Plasma direkt zu berechnen.

Ja, genau das hätte ich jetzt auch geschrieben...

Fireball

Alter Hase

  • »Fireball« ist der Autor dieses Themas

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

4

08.08.2011, 14:57

Hi BlueCobold,

also meine Idee war immer eine komplette Textur mit dem Plasma zu berechnen und dann auf mein Sprite zu setzen.
Wahrscheinlich ist das Performance Verschwendung pur, aber mir ist da nichts besseres eingefallen.

Aber das mit der 1D Textur hört sich jedenfalls einfacher an. An dieser Stelle ist mir dann nur noch nicht klar wie ich dann mit Hilfe der Fragment Koordinaten innerhalb des Pixel Shaders das Plasma berechnen kann.

Wenn ich mich recht erinnere habe ich so einen Effekt schon mal durch Zufall erzeugt, als ich im Pixel Shader mit der Farbe und der Sinus Funktion rumgespielt hatte.
Allerdings möchte ich es nicht statisch sondern animiert haben.

Schöne Grüße

FB



Ich persönlich würde dazu tendieren die Palette in eine 1d-Textur zu packen und dann per Pixel-Shader aus den Fragment-Koordinaten das Plasma direkt zu berechnen. Ob es dann noch in eine Textur kommt, das kann jeder selbst entscheiden.
Unklar ist mir, wozu genau Du den Stencil Buffer nehmen willst.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

08.08.2011, 15:03

Eigentlich ist es ganz einfach. Wenn Du eine Textur berechnen würdest, dann hättest Du ja auch x und y als Koordinaten. Ein Fragment hat solche Koordinaten ebenfalls.
Du kannst also ein Bildschirm-füllendes Quad malen und das Ding direkt per Pixelshader einfärben. Die Textur kannst Du Dir dann schenken. Animieren kannst Du das prima indem Du von außen eine Variable an den Shader übergibst, welche jeden Frame hochgezählt wird (oder von der Zeit abhängt oder was auch immer).
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]

Werbeanzeige