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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

12.03.2013, 21:27

Mit welchem Hintergrund? Also was genau willst Du damit bauen? Es gibt nämlich eventuell noch eine andere, sehr alternative Methode, um solche "Schatten" zu simulieren.
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]

12

13.03.2013, 08:57

BlueCobold:
Einen konkreten Hintergrund gibt es nicht, es geht mir nur um das Prinzip.
Interessant sind für mich Lösungen mit denen man z.B. "Schatten" oder "Fog of War" realisieren kann.
Eine KI könnte soetwas z.B. nutzen, um ein Objekt anzusteuern sobald es sichtbar, also nicht mehr verdeckt ist.

Sollte ich hier permanent falsche Begriffe wählen, so möchte ich mich dafür entschuldigen.
Mir fehlen einfach die Kenntnisse ;-)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

13.03.2013, 09:08

Ah, ok. Na dann hast Du ja ein paar Prinzipien zum untersuchen ;)
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]

14

13.03.2013, 09:54

Die geposteten Videos sind aber eher 2D Polygone als Pixelgrafik. Und das macht bei der Sichtbarkeitsberechnung schon einen Unterschied.
Die Frage ist auch, willst du für eine Position entscheiden, ob sie aus einer anderen Sichtbar ist (z.B. ob ein Gegner einen Spieler angreifen soll), oder möchtest du einfach hübsche Schatten um den Spieler herum anzeigen? Beides sind unterschiedliche Probleme, die man unterschiedlich optimieren kann, wenn du in einem Spiel für Schattenberechnung für jeden Bildschirmpixel eine Sichtbarkeitslinie mit Bresenham ausrechnen willst, wirst du das mit ziemlicher Sicherheit nicht flüssig hinbekommen.
Wichtig ist also zunächst einmal exakt zu wissen, was du willst.
Lieber dumm fragen, als dumm bleiben!

15

13.03.2013, 13:05

Jonathan_Klein:

Zitat

Die geposteten Videos sind aber eher 2D Polygone als Pixelgrafik.

Und genau deswegen versuche ich mein Anliegen so allgemein wie mir nur möglich zu formulieren.

Zitat

willst du für eine Position entscheiden, ob sie aus einer anderen Sichtbar ist (z.B. ob ein Gegner einen Spieler angreifen soll)

Zitat

oder möchtest du einfach hübsche Schatten um den Spieler herum anzeigen?

Ich würde mich sehr über Tipps zu beiden Aufgaben freuen.
Eine Auflistung geeigneter Algorithmen, insbesondere auf das anfangs beschriebene "Spielfeld" wäre schon super.

Nachtrag:
https://www.youtube.com/watch?v=sH1KtP1jIFQ

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Patrick-Oliver« (13.03.2013, 13:15)


Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

16

13.03.2013, 13:41

Wenn es ein reiner grafischer Effekt sein soll, würde sich die Berechnung über die GPU anbieten.
Dann kannst du die gänigen "Schattentechniken" verwenden.

Die von mir favorierte Lösung wäre eine Abwandlung des Stencilschatten.
Man extrudiert im Geometryshader die Schattenkanten von der Lichtquelle weg.
Die Möglichkeit gehen allerdings nur bei einer Form von Vektorgrafik gut.

Wenn es auf einzelnen Pixeln basieren soll, fällt mir auf die schnelle nur die Möglichkeit über OpenCL\DirectCompute\CUDA ein, Raycasting zu betreiben.
Aber selbst auf der GPU habe ich meine Zweifel ob das noch flüssig läuft. Der Aufwand wäre für jeden Pixel O(n) und damit für das ganze Bild O(n³).

Die Vorteile der GPU basierten Verfahren ist, dass du hier am ehesten auch bei großer Auflösung noch in Echtzeit pixelgenau rendern kannst und nochdazu die CPU für andere Berechenungen frei bleibt.

17

13.03.2013, 15:49

Und genau deswegen versuche ich mein Anliegen so allgemein wie mir nur möglich zu formulieren.

Damit wirst du nicht glücklich werden. Du brauchst eine konkrete Lösung für ein konkretes Problem, sonst kannst du nichts optimieren. Die einzelnen Probleme sind sehr verschieden, es macht eigentlich nur Sinn, sie einzeln und für sich betrachtet zu optimieren und zu implementieren. Denn so kniffelig ist das alles gar nicht.

Statt Stencil-Shadows in 2D könnte man auch ShadowMapping ausprobieren. Man würde eben für jeden Winkel zu einer Punktlichtquelle einen Entfernungswert in einer 1D-Textur speichern. Wäre sicherlich interessant, das mal zu implementieren, ob es wirklich Sinn macht, kann ich so spontan aber nicht sagen.
Lieber dumm fragen, als dumm bleiben!

18

13.03.2013, 15:56

Hehe, dann fehlt mir das konkrete Problem!
Ich formuliere nachher etwas aus ;-)

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

19

13.03.2013, 16:03

Man würde eben für jeden Winkel zu einer Punktlichtquelle einen Entfernungswert in einer 1D-Textur speichern. Wäre sicherlich interessant, das mal zu implementieren, ob es wirklich Sinn macht, kann ich so spontan aber nicht sagen.
Das macht sogar sehr viel Sinn, solange es ein rein grafischer Effekt ist. Will man damit aber Gamelogik steuern, hat man bei GPUs grundsaetzlich das Problem, das es langsam oder gar unmoeglich ist diese Daten zu lesen und das sie vielleicht nicht jede GraKa das gleiche Ergebnis errechnet.

20

13.03.2013, 16:15

Btw. können wir das "Problem" bitte zumindest auch losgelöst von Hardware betrachten?
Also so, als würde man eckige Bierdeckel aneinander legen.

Nachtrag:

Zitat

willst du für eine Position entscheiden, ob sie aus einer anderen Sichtbar ist (z.B. ob ein Gegner einen Spieler angreifen soll)

Reicht das als konkretes Problem aus?

Nebenbei - Danke dafür, dass ihr euch mit meinen Problemchen befasst habt und hoffentlich noch befasst ;-)

Werbeanzeige