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

1

24.10.2006, 13:14

[HLSL]Shader beliebig kombinieren

Hallo,

gibt es eine Möglichkeit Shader beliebig kombinieren zu können, ohne dafür jeweils ein eigenes fx File anlegen zu müssen?

Ich möchte z.B auch Shader zu und abschalten können.

Ich weiß, dass es eine Möglichkeit gibt einfach ein riesiges Effekt File zu erstellen und halt nur die Teile zu verwenden, die man braucht.
Gibt es Alternativen dazu?

Gruß

falcon

Phili

unregistriert

2

24.10.2006, 13:28

Also bei Gothic3 wird irgendsoein "Knot" system benutzt...
Ich schätz aber mal, dass ist ne eigenproduktion. Ansonsten wüsst ich aber auch nciht, wie das geht.

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

3

24.10.2006, 20:42

Stichwort: Fragmentshader

hab mich selber noch nicht damit beschäftigt ... is glaub ich auch ein extra Sample im DXSdk ... schaut nich leicht aus ^^

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

4

24.10.2006, 21:51

Falcon, da sprichst Du eines von zwei ungelösten Shaderproblemen an und das gibts übrigens sowohl bei Assembler und Hochsprachen wie HLSL, bei DirectX und bei OpenGL.

Als Beispiel mal hier alle Optionen unserer Flugzeugshader:
- PPL versus PVL
- 0 bis ca 4 einseitge Decals
- 0 bis ca 4 zweiseitge Decals
- GUI oder kein GUI (zum Debuggen)
- Eine oder keine Spec map
- Eine oder keine Normal map
- Eine oder keine Gloss map

Also theoretisch ca 800 Kombinationen, wovon sicher über 100 Sinn machen. Insofern braucht man eine Möglichkeit, diese zu "erzeugen". Das DirectX Fragment zeugs ist leider absolut nicht optimal und selbst MS sägt das wieder ab. Daher gibt es keinen verfügbaren Source oder Tools und jeder muss sich selber etwas schreiben :( . In ShaderX4 gibt es einen Artikel. Ich habe den Author angeschrieben und der hat mir nochmal bestätigt dass a) sein Tool nicht öfferntlich ist und b) Es jede Firma selber macht. Wirklich schade was da an Resourcen nutzlos verschleudert wird. Und es müssen ja nicht mal nur Spieleentwickler machen, in den USA habe ich mit einem von Raytheon gesprochen und der hat auch erst vor kurzem so etwas (für OpenGL) geschrieben. Interessanterweise waren seine Erfahrungen mit dem Shader Compiler die selben wie die von dem ShaderX4 Author.

Eine wichtige Sache ist dass Du Dir Deine Anforderungen überlegst, also insbesondere sollen die Shader zur Laufzeit oder "offline" erzeugt werden? Wieviel Zeit willst Du investieren und wie weit ist manuelle Nacharbeit ok?
"Games are algorithmic entertainment."

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

24.10.2006, 21:55

Zitat von »"Wümpftlbrümpftl"«

Stichwort: Fragmentshader

hab mich selber noch nicht damit beschäftigt ... is glaub ich auch ein extra Sample im DXSdk ... schaut nich leicht aus ^^

Fragment-Shader ist einfach nur der OpenGL-Ausdruck für Pixel-Shader ;)
Was du meinst, ist der Fragment-Linker. Er kann aus einzelnen "Code-Bruchstücken" einen kompletten Shader erzeugen. Das ist auch dringend zu empfehlen, wenn man viele Kombinationen hat. Kombinationen könnten z.B. sein:

- Materialtyp
- Lichttyp und Lichtanzahl
- mit Schatten oder ohne
- Rendern in Shadow-Map
- Skinning oder nicht
...

So kann man locker auf mehrere hundert verschiedene Shader kommen.
Demletzt habe ich einen Artikel darüber gelesen:

http://www.talula.demon.co.uk/hlsl_fragments/hlsl_fragments.html

(geht bei mir grade allerdings nicht)

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

6

24.10.2006, 22:02

Zitat von »"David Scherfgen"«

Kombinationen könnten z.B. sein:

- Materialtyp
- Lichttyp und Lichtanzahl
- mit Schatten oder ohne
- Rendern in Shadow-Map
- Skinning oder nicht
...


Durchaus gute Liste, obwohl ich "Rendern in Shadow-Map" rausnehmen würde, da man das IMVHO nicht kombinieren muss.

Bei uns ist Skinning auch komplett extra - da sind wir aber mit Sicherheit eine Ausnahme.

Bisher ist unsere Lichtanzahl in den Shadern konstant 1 (Sonne) aber wenn ich Beleuchtung per Mündungsfeuer / Explosionen / Lampen in der Nacht hinzunehmen will, würde das meine 800 (theoretisch) bzw >100 (sinnvoll) nochmal drastisch erhöhen :?




Zitat


http://www.talula.demon.co.uk/hlsl_fragments/hlsl_fragments.html

(geht bei mir grade allerdings nicht)


Bei mir gehts.
Der Author, Shawn Hargreaves, ist der ShaderX4 Author von dem ich oben geschrieben habe :lol: und wahrscheinlich ist der Artikel auch recht ähnlich.
"Games are algorithmic entertainment."

7

24.10.2006, 22:30

Hmm die ShaderX Serie ist jedem zu empfehlen ... du eurem Problem äußer ich mich mal net...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

8

25.10.2006, 18:53

Vielen Dank zunächst mal für die Antworten.

Ich denke ich werde es erst mal über die "herkömmliche" Variante angehen. Hab mittlerweile auch einiges zu der Fragment Geschichte gelesen.

Ich stecke leider auch noch bei weitem nicht so tief drin in der Materie, dass in annehmbarer Zeit (und daran mangelt es) ein vernünftiges Ergebnis zustande kommen würde.

Aber interessant ist die Geschichte auf jeden Fall. Werde dranbleiben.

Gruß

falcon

Werbeanzeige