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

storage

Treue Seele

  • »storage« ist der Autor dieses Themas

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

1

05.03.2012, 18:42

Wie bekomme ich diesen Effekt hin?

Hallo Jungz,

hätte da mal eine Frage bezüglich eines Effektes welchen ich in meinen Spiel auch gerne nutzen würde.
Ich weiß leider den Namen dieses Effektest nciht deswegen der schlechte Threadtitel, was ich bitte zu entschuldigen.

Dieser Effekt ist gemeint:

(Link)



Danke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

05.03.2012, 19:11

Hier: Distortion
@D13_Dreinig

storage

Treue Seele

  • »storage« ist der Autor dieses Themas

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

3

10.03.2012, 23:57

Danke erstmal für den Namen des Effekts, der Link führt leider ins nix da die Seite nicht mehr existiert.

Ich habe dann mal so gesuct, mir scheint aber ich verstehe Shader nicht, erkenne da irgendwie keine wirkliche Struktur, sind Shader so schwer?

4

11.03.2012, 00:07

Je nachdem, was man mit Shadern machen möchte kann es schon sehr kompliziert werden. Der gezeigte Effekt ist eher einfach. Zur Einarbeitung in OpenGL-Shadern finde ich dieses Tutorial gelungen: http://wiki.delphigl.com/index.php/Tutorial_glsl
Musikvisualisierungsprojekt Soundbild 2

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

11.03.2012, 00:19

Die einfachste Umsetzung (ohne Shader) wäre es, einfach alles in einen Framebuffer zu rendern und anschließend diesen Framebuffer mit Farbmanipulation wiederrum in den Backbuffer zu rendern.
Dabei spannt man die Textur aus dem Framebuffer einfach verzogen über die Polygone.

Ist nicht optimal aber einfach.
Wenn Shader zur Verfügung stehen, wirds aber einfacher. (Siehe Tutorial von Arminwf)
Tutorial zu Framebuffern: http://wiki.delphigl.com/index.php/Tutor…amebufferobject(Selbe Seite :))



Solltest du DirectX nutzen, sieht es da auch nicht sehr viel anders aus. (Statt Framebuffer einfach RenderToTexture)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

11.03.2012, 09:14

Distortion kann man auch ohne Shader machen, der Effekt ist schon uralt. Man rendert die Szene, packt das in eine Textur und rendert danach ein reguläres Gitter mit dieser Textur über den kompletten Bildschirm, wobei man die Punkte innerhalb des Gitters mit verschiedenen Sinus-Funktionen schwingen lässt. Sieht mit Schadern schöner aus, geht aber auch ohne.

Edit:
Da hat "Spiele Programmierer" wohl das selbe geschrieben ;)
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]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

11.03.2012, 09:53

Da das Spiel im Screenshot von mir ist :), kann ich dir genau sagen, wie der Effekt gemacht wurde.
Das Spielfeld wird in eine Textur gerendert, die dann auf ein feines Gitter gelegt wird, dessen Gitterpunkte nach einem mehr oder weniger willkürlichen Muster (irgendeine Formel, die ich mir aus dem Ärmel gezogen habe) verschoben werden.
Da ich den Quellcode zum Spiel ebenfalls öffentlich gemacht habe, kannst du dir das auch selber anschauen:
http://david.scherfgen.de/blocks-games/a…ks-5-source.zip
Schau dort in Blocks5\src\level.cpp, Zeile 2216 (void Level::renderToxicEffect()).

Werbeanzeige