AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Conditionals im (Cg-) Shader
Thema durchsuchen
Ansicht
Themen-Optionen

Conditionals im (Cg-) Shader

Ein Thema von blackfin · begonnen am 17. Mai 2010 · letzter Beitrag vom 18. Mai 2010
 
blackfin
(Gast)

n/a Beiträge
 
#1

Conditionals im (Cg-) Shader

  Alt 17. Mai 2010, 23:45
Hallo liebe Experten,

ich habe mal eine Frage zu Shadern im allgemeinen, die mir schon länger auf der Zunge brennt:

Ich möchte gerne in meinem Shader "Flags" setzen, welche Features eingeschaltet sind und welche nicht.
z.B. möchte ich über die Anwendung steuern, ob er die Lightmap auswerten soll oder eben nicht.

Bisher habe ich das so gemacht, dass ich dem Shader über eine boolschen uniform mitteile, ob er die Lightmap benutzen soll oder nicht:

Shader:
Code:
fragmentOUT main(fragmentIN IN,uniform bool uselightmap) {
...
..

  if (uselightmap) {   
    OUT.Color.rgb = OUT.Color.rgb * f4tex2D(lightmap,tex_coord) ;                          
  }

}
Delphi:
cgGLSetParameter1f(FParamHandle,value);
Jetzt habe ich schon oft gehört, dass das nicht gerade performant sein soll (und ist ), da ja die uniform variable dauernd zum Shader übertragen wird und im Shader ein branching angestossen wird.

Welche Möglichkeiten gibt es denn und benutzt ihr, um solche "Flags" zu setzen, wenn man in einem Shader einzelne "Schalter" setzen will?
Ist es wirklich die einzige und beste Möglichkeit, für jegliche vorkommende Variante (Lightmap an, Lightmap aus, Normalmap an, Normalmap aus usw.) eine eigene Shader-Variante zu kompilieren und dann einzusetzen?

Ich finde das sehr umständlich und der Wartungsaufwand ist ja immens, wenn man viele solcher Flags hat und dann nachträglich bei einer Veränderung jede Variante umschreiben muss...


P.S.:
Ich benutze kein CgFX-Schema, sondern getrennte Vertex- und Fragment-Shader, somit kann ich keine "Techniques" verwenden.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz