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

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

1

18.12.2004, 20:16

Vertex- / Pixelshader

wie verwendet ihr vertex- und pixelshader? ich meine damit wie ihr sie intern in eurer anwendung ladet/verwaltet und sie speichert.
was mir momentan schwierigkeiten bereitet sind die parameter. ich habe meine shader in directx effektdateien und eine modellklasse. ich würde die modellklasse gerne so verwenden können, dass ich das modell nur laden/löschen muss und mit einem funktionsaufruf rendern kann. wenn mein shader jetzt aber zB den lichtvektor benötigt muss ich ihm den ja irgendwie mitteilen. dachte mir das so, dass ich in der effektdatei ne variable für den lichtvektor deklariere und diesen dann von der anwedung heraus setze. weiß allerdings nicht, ob das von der performance her so gut ist, was anderes ist mir bisher nicht eingefallen. wie könnte man soetwas automatisieren, sodass man diese paramteter nicht immer manuell setzen muss?
wie macht ihr das?

2

18.12.2004, 20:49

Ich hab mir dei Shader in TriBase eingebunden als eigene Klasse mit ihren Funktionen und dann hab ich in der Klasse wo das MOdel gerendert wird noch nen KLeinen eintrag. Die Shader Kann ich dann mit SetShader usw setzen und halt den Code dafür aus ner Shader Datei laden, bzw ne Datei mit HLSL.

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

3

18.12.2004, 23:04

wenn ich das richtig verstanden habe, ist aber nur ein shader pro model möglich, oder?

4

19.12.2004, 01:55

Licht ist immer so eine Sache bei Shadern. Das liegt zum einen daran das man keine echten Schleifen bei Shader 1.0 - 2.0 gibt und das die Anzahl der Lichtquellen eh Variabel ist. Was das ganze noch erschwert.

Fragment Linking ist hier ein gutes Stichwort.

Eine weitere Möglichkeit ist hier Multipassing. Gutes Beispiel auch hier das Licht. Man rendert das Modell ganz Normal. Sollte es von Licht beleuchtet werden, setzt man eine Lichtquelle, rendert das Modell noch einmal und das für alle Lichter. Oder nur für die n nächsten.
Ein bissel komplexer wirds wenn das Modell z.B. Paralax-Mapping oder vergleichbare Techniken nutzt. Hier muss das Modell der Engine mitteilen, das es n Lichtquellen brauch. Eben soviele wie im Schader vorgesehen sind. Meist wohl nur eine. Die Engine fragt das ab und liefert dem Modell die Lichtquelle, die das Modell am meisten beeinflust.

Problem dabei ist, das man Unterschiedliche Lichter haben kann. Z.B. Point Light, Directional Lights, etc. Auch hier kann das Fragment Linking ansetzen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

19.12.2004, 10:43

oder man macht es sich eifnach und setzt einen 2.0ex voraus ;)

Werbeanzeige