Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mär 28, 2024 10:38

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: #include im Shader
BeitragVerfasst: Di Nov 11, 2014 18:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe verschiedene Shader, bei denen der Beleuchtungsteil immer gleich ist.
Kann man dies auch irgendwie in eine Bibliothek auslagern ?

Code:
  1. #version 330
  2. in vec3 Pos;
  3. in vec3 Normal;
  4. in vec4 Color;
  5.  
  6. out vec4 OutColor;
  7.  
  8. uniform bool ifLight = false;
  9.  
  10. // Dieser Teil ist immer gleich.
  11.  
  12. uniform vec3 LightPosition = vec3(1.0, 1.0, 1.4);
  13.  
  14. float UmgebungsLicht = 0.3;
  15.  
  16. float diffuse(vec3 LightPosition)
  17. {
  18.   vec3 LP        = (LightPosition * 1.0) - Pos;
  19.   float distance = length(LP);
  20.   float dif      = max(dot(Normal, LP), UmgebungsLicht);
  21.   return           dif * (1.0 / (1.0 + (0.25 * distance * distance)));
  22. }
  23.  
  24. float specular(vec3 LightPosition)
  25. {
  26.   vec3 Eye          = normalize(LightPosition);
  27.   vec3 Reflected    = normalize( reflect( -Pos, Normal ));
  28.   return              0.5 * pow(max(dot(Reflected, Eye), 0.0), 1.0);
  29. }
  30.  
  31. // bis hier
  32.  
  33. void main()
  34. {
  35.   OutColor = Color;
  36.  
  37.   float cdummy = OutColor.a;
  38.  
  39.   if ( ifLight )
  40.   {
  41.     OutColor = OutColor * (diffuse(LightPosition) + specular(LightPosition));
  42.   }
  43.   OutColor.a = cdummy;
  44. }

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: #include im Shader
BeitragVerfasst: Di Nov 11, 2014 23:51 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 229
Programmiersprache: c++, c, JavaScript
Ja, das geht.
Standardmäßig ist da aber nix vorhanden, soweit ich weiß.
Du musst die Direktive selber coden.
Ich hab es mal in c implementiert, und zwar so, dass eben immer nach dem include-Kennwort gesucht wird, und dann der Inhalt der Datei des Pfades nach dem Kennwort dort reingeschieben wird.
Da gabs auch letztens ein recht ausführliches Projekt dazu, hier:
viewtopic.php?f=13&t=11201

_________________
"Pixel, ich bin dein Vater."
-Darf Shader


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: #include im Shader
BeitragVerfasst: Mi Nov 12, 2014 17:19 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Ja, das geht.
Standardmäßig ist da aber nix vorhanden, soweit ich weiß.

Das habe ich mir fast gedacht.

Mir ist schon eine Idee gekommen, ich mache den Beleuchtungsteil in eine Konstante.

Im Shader-Code schreibe ich z.B. $Light.
Mit StringReplace könnte ich $Light durch den Beleuchungs-Code ersetzen.

Wen ich dann was im Beleuchtung-Code ändere, ist es dann in allen Shadern angepasst.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.199s | 17 Queries | GZIP : On ]