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

Anonymous

unregistriert

1

03.07.2004, 00:37

Lichtquellen (Anzahl) in modernen Engines

Hallo,

mir schwebt schon seit Längerem eine Frage im Kopf herum, auf die ich bisher noch keine Antwort finden konnte. Ich habe in dem Buch gelesen, dass eine Grafikkarte von der Hardware her schon auf eine bestimmte Anzahl an gleichzeitigen Lichtquellen beschränkt ist, was ja auch verständlich ist.
Nehmen wir jetzt jedoch eine moderne Grafikengine, die ohne Lightmaps auskommt, d.h. wirklich komplett echtzeitberechnete Lichtquellen nutzt - wie ist sowas realisiert, denn nehmen wir an die Graka kann 16 Lichtquellen ab, in einem Level gibt es aber doch bestimmt so einige mehr als 16 Lichtquellen (Beispiel Doom 3, Farcry...). Wie also funktioniert sowas, wenn man doch nicht so viele Lichter setzen kann?

Ich hoffe Ihr wisst was ich meine, und kennt Euch da ein wenig aus..

Danke

2

03.07.2004, 09:40

Man sieht ja nicht immer alle Lichter. Es müssen ja nur die aktiv sein, die man auch sehen kann. Ist ja ähnlich weie mit den objekten. Erstaml wird berechnet, was überhaupt sichtbar ist, weil das Spiel sonst auf einem Rechner laufen würde.
Lieber dumm fragen, als dumm bleiben!

3

03.07.2004, 10:11

... Die meisten Engines benutzen eigenen Lichtengines, sei es statisch per Lightmap oder dynamisch per Vertex Color. Du kannst aber auch Shader nehmen, geht sogar mit v1.1 braucht bloss 2 passe. (1 ambient, 1 für lichter, steht jedenfalls im zerbst 3 so).

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

03.07.2004, 11:54

Kannst du auch in einem aufwasch machen udn zu Doom3. Die benutzen
u.a. eine Dot3 beleuchtung und solche spässe....

Anonymous

unregistriert

5

03.07.2004, 21:29

Zitat


Man sieht ja nicht immer alle Lichter. Es müssen ja nur die aktiv sein, die man auch sehen kann.



Ach so ok, man könnte natürlich die sichtbaren Lichter an- und die nicht sichtbaren ausschalten. Aber trotzdem bleibt irgendwie die Frage, denn ich kann ganz einfachen den Editor öffnen, ne massive Anzahl an Lichtern reinsetzen und dann das Level anschauen - alle Lichter werden trotzdem noch richtig berechnet und es sind dann garantiert mehr als die Grafikkarte gleichzeitig abkann.
Ok die Framerate geht dann natürlich runter, es ist ja auch nicht praxisnah, und ich will auch nicht solch eine Anzahl benutzen, ich hab mich halt nur gefragt wie das gemanaged wird.

Zitat


Du kannst aber auch Shader nehmen, geht sogar mit v1.1 braucht bloss 2 passe


Ich kenne mich mit Shadern zu wenig aus, aber was bedeutet das - dass man dann quasi keine Lichtquellen in der Grafikkarte aktivieren muss, oder wie?

Danke für Eure Antworten soweit

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

03.07.2004, 22:17

Halt, die Graka unterstützt zwar nur eine Bestimmte anzahl, aber man kann einstellen, dass die restlichen von der cpu übernommen werden.....

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

03.07.2004, 22:26

Zitat von »"Ben"«

ich kann ganz einfachen den Editor öffnen, ne massive Anzahl an Lichtern reinsetzen und dann das Level anschauen - alle Lichter werden trotzdem noch richtig berechnet und es sind dann garantiert mehr als die Grafikkarte gleichzeitig abkann.
Ok die Framerate geht dann natürlich runter, es ist ja auch nicht praxisnah, und ich will auch nicht solch eine Anzahl benutzen, ich hab mich halt nur gefragt wie das gemanaged wird.

Problematisch wird es ja erst dann, wenn ein einziges Polygon von mehr als sagen wir mal 16 Lichtquellen gleichzeitig beleuchtet wird. Und da kann mir keiner erzählen, er könne es unterscheiden, ob das jetzt 16 oder 17 Lichtquellen sind.

8

04.07.2004, 22:21

Die Anzahl der Lichter ist lediglich bei benutztung der TnL Unit beschränkt. Diese wurd von DirectX Lighting-Engine benutzt.

Keine Professionelle Engine nutzt jedoch die Lighting-Engine von DirectX, da sie viel zu aufwändig ist. Und weil die Anzahl bei benutztung von Shadern eben nicht mehr festgelegt ist. Hier ist nur noch die Performance der begrenzende Faktor. Bei Shadern brauch man keine Lichter Akivieren und ist zu 100% Unabhängig von DirectX.

Es ist jedoch so wie David es schon sagte. Wenn ein Polygon von vielen Lichtern beleuchtet wird, kann man irgendwann einfach nicht mehr feststellen wieviele Lichter es nun sind. Daher macht es Sinn die max. Anzahl der Lichter zu begrenzen. Wieviele das sind hängt sag ich einfach mal, von der vorhandenen Hardware ab.

Zitat

geht sogar mit v1.1 braucht bloss 2 passe. (1 ambient, 1 für lichter, steht jedenfalls im zerbst 3 so).
Es macht die Berechnung einfacher. Ambientes Licht muss anders berechnet werden als eine Lichtquelle. Aber man beides auch in eine Rechnung stecken. Man muss das Ambiente Licht dann aber auf NULL stellen für alle weiteren Lichter. Sonst kommt es zu einer Fehlerhaften Darstellung.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Tracert

Treue Seele

Beiträge: 108

Wohnort: Braunschweig

Beruf: Student

  • Private Nachricht senden

9

05.07.2004, 09:23

Wenn jetzt noch jemand ein schönes Tutorial hat, wo das mit den Shader-Lichtern genau erklärt wird (oder Shader allgemein am besten erstmal), dann bin ich gerstmal wieder glücklich.. ;)

Anonymous

unregistriert

10

06.07.2004, 11:27

Zitat


Wenn jetzt noch jemand ein schönes Tutorial hat, wo das mit den Shader-Lichtern genau erklärt wird (oder Shader allgemein am besten erstmal), dann bin ich gerstmal wieder glücklich..


dito :) Ich würde erstmal gerne allgemein etwas über Shader lernen, da sie ja in der modernen Engine Entwicklung unglaublich wichtig sind.

Zitat


Keine Professionelle Engine nutzt jedoch die Lighting-Engine von DirectX, da sie viel zu aufwändig ist.


Was meinst Du denn mit aufwendig? Wenn ich nen Licht haben will, setz ich die Parameter und aktiviere es :)

Zitat


Und weil die Anzahl bei benutztung von Shadern eben nicht mehr festgelegt ist. Hier ist nur noch die Performance der begrenzende Faktor. Bei Shadern brauch man keine Lichter Akivieren und ist zu 100% Unabhängig von DirectX.


Ist es denn nicht aufwendig, Licht per Shader zu implementieren?
Wie sieht es denn mit dem Buch Game Programming Gems aus, wird da auf Shader eingegangen, um z.B. Lichtberechnungen anzustellen?

Werbeanzeige