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

Aktuelle Zeit: Mi Aug 06, 2025 07:50

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



Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Mo Jul 10, 2006 23:20 
Offline
DGL Member

Registriert: Mo Jul 10, 2006 17:20
Beiträge: 5
Wohnort: Greifswald
Hallo liebe Community!

Kennt jemand von euch ein Shaderprogramm, dass sich für die Atmosphäre
eines Planeten (vom Weltraum aus gesehen) eignet?

Es wäre wichtig, dass das ganze auch noch auf einer GeForce der 5000er
Serie läuft.

Für jede Hilfe wäre ich sehr dankbar.

Viele Grüße

BloodySmartie


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 11:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Was stellst du dir denn darunter vor? Nur die (blaue) Hülle, oder auch Wolken?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 12:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo BloodySmartie,

vielleicht als Hilfe : http://www.cescg.org/CESCG-2005/papers/Brno-Josth-Radovan/index.html.

...müsste eigentlich genau das richtige für dich sein :wink:

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 12:16 
Offline
DGL Member

Registriert: Mo Jul 10, 2006 17:20
Beiträge: 5
Wohnort: Greifswald
Also über Wolken würd ich mich natürlich freuen, aber ne ansprechende
"Hülle" würde mir auf jeden Fall auch genügen. Ich will ja nicht
übermütig werden :wink:


@dj3hut1:

Ah, danke :) Leider war das das einzige Script, das ich selbst finden
konnte. Allerdings hat beim Einbinden etwas nicht geklappt. Es gab
erst ne Exception, weil das Hauptprogramm des FragmentShaders
"FragmentProgram" hieß. Nach dem Umbenennen in "main" startete
das ganze zwar, aber der Effekt war nicht zu sehen. In Abschnitt 4
des PDF ist auch von nem Vertex-Shader die Rede, aber wenn ich
mich nicht irre(bin ja nicht erfahren in diesen Dingen), dann ist
dafür kein Sourcecode angegeben.

Ich arbeite übrigens mit Delphi 7 und der GLScene-Engine, die Cg-Shader
unterstützen sollte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 13:04 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Ich würde Wolken mal Perlin-Nois probieren, jedoch alle Werte die $Grenze unterschreiten auf transparent setzen. Allerdings musst die den Algo so ändern, dass die Wellenlänge in Ost-West-Richtung an den Polen größer werden, um die zunehmende Verzerrung beim mappen der Textur auszugleichen. Wofür du hier einen Shader willst, verstehe ich jedoch nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 19:06 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
The-Winner hat geschrieben:
Ich würde Wolken mal Perlin-Nois probieren, jedoch alle Werte die $Grenze unterschreiten auf transparent setzen. Allerdings musst die den Algo so ändern, dass die Wellenlänge in Ost-West-Richtung an den Polen größer werden, um die zunehmende Verzerrung beim mappen der Textur auszugleichen. Wofür du hier einen Shader willst, verstehe ich jedoch nicht.


Ich Persönlich finde diese Art von Wolken Hässlich, guck mal hier nach Schöneren:
http://www.gamedev.net/columns/hardcore/cloudrendering/

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 19:39 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Verschiedene Athmosphärenschichten wären schon was schönes, die dann per Glow vielleicht ein bisschen verwischt werden. Dazu noch permantent verglühende Meteoriten und das Ganze dürfte schon was hermachen :)

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 11, 2006 22:49 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Also ich hab gerade mal n bisschen mit Punktprodukten rumgespielt und ein eigentlich ganz schönes Shading hinbekommen. Is alles n bisschen zusammengekleistert und auf Vertex-Basis, aber das sollte ohne Probleme durch richtige Shader auf Fragment-Basis umsetzbar sein. Das einzige (Kenne mich mit den neuen Shadersprachen nicht so gut aus) sind die Ifs, da weiß ich nicht genau wie das umsetzbar ist. Zur Not muss eine 1D-Textur verwendet werden, die den Zweck erfüllt.

Code:
  1.  
  2. void drawAthmosphere()
  3. {
  4.     glDisable(GL_DEPTH_TEST);
  5.     glEnable(GL_BLEND);
  6.     glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
  7.     for (int i = 0; i < 40; i++)
  8.     {
  9.         glBegin(GL_TRIANGLE_STRIP);
  10.         for (int j = 0; j < 41; j++)
  11.         {
  12.             float normal[3];
  13.             normal[0] = sin(i/40.0f*6.282f) * sin(j/40.0f*3.141f);   //Die normale des Vertex. (Is ja ne Kugel)
  14.             normal[1] = cos(j/40.0f*3.141f);
  15.             normal[2] = cos(i/40.0f*6.282f) * sin(j/40.0f*3.141f);
  16.             float light = normal[0] * lightvec[0] +      // Normale dot Lichtrichtung (die Richtung zur Sonne)
  17.                          normal[1] * lightvec[1] +
  18.                              normal[2] * lightvec[2];
  19.             light += 0.1;    //die Athmosphäre leuchtet auch noch etwas weiter in den Schatten hinein
  20.             if (light < 0.0f) light = 0.0f; else if (light > 1.0f) light = 1.0f; //auf 0.0 .. 1.0 clampen
  21.            
  22.             float thickness = 1.0f+(normal[0] * viewvec[0] +   //Die Länge des Weges, die das Licht von der Oberfläche
  23.                                     normal[1] * viewvec[1] +   //durch die Athmosphäre zurück legt (angenähert) steuert,
  24.                                             normal[2] * viewvec[2]);   //wie viel blau man sieht. Und je schräger man drauf guckt, desto Dicker ist sie.
  25.             if (thickness < 0.6) thickness = thickness / 0.6; else thickness = (1.0f - thickness) / 0.4; //Mit Ausnahme des Randes, da wird sie wieder dünner.
  26.             float f = thickness * light;   //Beides zusammen multiplizieren
  27.             glColor3f(0.5f * f, 0.7f * f, 1.0f * f);  //Und noch nen schönen Blauton wählen.
  28.             glVertex3f(normal[0] * 1.1,   // 1.0 is der Radius des Planeten und 1.1 der Radius der Athmosphäre
  29.                        normal[1] * 1.1,
  30.                        normal[2] * 1.1);
  31.            
  32.            
  33.             normal[0] = sin((i+1)/40.0f*6.282f) * sin(j/40.0f*3.141f);
  34.             normal[1] = cos(j/40.0f*3.141f);
  35.             normal[2] = cos((i+1)/40.0f*6.282f) * sin(j/40.0f*3.141f);
  36.             light = normal[0] * lightvec[0] +
  37.                   normal[1] * lightvec[1] +
  38.                       normal[2] * lightvec[2];
  39.             light += 0.1;
  40.             if (light < 0.0f) light = 0.0f; else if (light > 1.0f) light = 1.0f;
  41.             thickness = 1.0f+(normal[0] * viewvec[0] +
  42.                              normal[1] * viewvec[1] +
  43.                                      normal[2] * viewvec[2]);
  44.             if (thickness < 0.6) thickness = thickness / 0.6; else thickness = (1.0f - thickness) / 0.4;
  45.             f = thickness * light;
  46.             glColor3f(0.5f * f, 0.7f * f, 1.0f * f);
  47.             glVertex3f(normal[0] * 1.1,
  48.                        normal[1] * 1.1,
  49.                        normal[2] * 1.1);
  50.         }
  51.         glEnd();
  52.        
  53.     }
  54.     glDisable(GL_BLEND);
  55.     glEnable(GL_DEPTH_TEST);
  56. }
  57.  
  58.  


Edit: Ich hab 3 Pics angehangen, damit man sich das etwas vorstellen kann. Nur als Hinweis an die, die wie ich immer unangemeldet lesen...


Dateianhänge:
Screeny3.jpg
Screeny3.jpg [ 13.57 KiB | 8694-mal betrachtet ]
screeny2.jpg
screeny2.jpg [ 11.17 KiB | 8694-mal betrachtet ]
Screeny1.jpg
Screeny1.jpg [ 15.09 KiB | 8694-mal betrachtet ]

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 12, 2006 14:26 
Offline
DGL Member

Registriert: Mo Jul 10, 2006 17:20
Beiträge: 5
Wohnort: Greifswald
Vielen Dank für die Anregungen, die bis jetzt schon eingetroffen sind.
Ich werde mal versuchen, heut Abend den Code von Al einzubinden und
poste dann auch mal nen Screenshot, wenns geklappt hat. :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 13, 2006 16:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hatte in den letzen Tage mal nach einem realistischen Anschauungsobjekt gesucht und siehe da heute hatte ich eines gefunden.

Aus Copyright rechtlichen Bedenken poste ich es nicht direkt sondern sage euch wie ihr es erreichen könnt.
http://www.spiegel.de/wissenschaft/weltraum/0,1518,426601,00.html
Und dann in der Mitte die Fotostrecke auswählen und das dritte Bild meine.

Auf diesem Bild kann man wirklich richtig richtig gut erkennen, dass die Atmosphäre sehr klein ist und sehr schnell sehr durchsichtig wird.

Sonst sehen die Bilder aber auf jeden Fall schon richtig Klasse aus. :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 13, 2006 17:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Lossy eX hat geschrieben:
Auf diesem Bild kann man wirklich richtig richtig gut erkennen, dass die Atmosphäre sehr klein ist und sehr schnell sehr durchsichtig wird.


Ich denke, so genau muss man es hier wohl nicht nehmen. Ich weiß ja nicht, für was der Threadersteller die Planeten braucht, aber in so einem Astereoids-Clan könnte die Athmosphäre recht schnell vom Aliasing verschluckt werden, wenn sie zu dünn/klein ist...

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 14, 2006 13:05 
Offline
DGL Member

Registriert: Mo Jul 10, 2006 17:20
Beiträge: 5
Wohnort: Greifswald
@Al:

Leider konnte ich Deinen Code nicht in mein Delphi-Projekt portieren.
Ach nach mehrmaliger Prüfung wurde die (Planeten)Kugel nicht
mit einer Atmosphäre versehen. Allerdings haben mir Teile
Deines Codes geholfen, das Problem zu lösen.

@All:

Das Problem habe ich nun dank eurer Hilfe und einiger Quellcodes
und Demos gelöst. Allerdings ganz ohne Shader(was ich sogar ein
wenig schade finde :) ) Ich hänge euch hier mal zwei Screenshots
zum Vergleich an. Sie sind leider etwas dunkel dank JPG-Qualitäts-
verlust.

1. Vorher
Bild

2. Nachher
Bild

Ich finde es nicht nur interessant, sondern auch toll, dass der
Atmosphären-Effekt wesentlich runder erscheinen lässt. Zwar
ist mein Planet da oben nicht unbedingt viereckig, aber da fehlt
nicht mehr viel :) Das Ganze gibt also nen hübschen Anti-Alias
Effekt "gratis"dazu und man kann ein paar Dreiecke am Planeten
einsparen.

Ich werde nachher noch eine Beschreibung meines Projekts ins
Projekte-Forum posten, soweit ich das darf, da werd ich mal nachlesen.
Eine Homepage hab ich nämlich noch nicht, mein Webserver ist
gerade im Aufbau...kann also noch ne Woche dauern.

_________________
------------------------------------------------------------
Ein großer Aikidoka: When I need to I hit people with the largest weapon I can find: the Earth.
------------------------------------------------------------
Bald online: www.nutshell-design.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 14, 2006 13:18 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Bei meinem Projekt habe ich ich auch gerade Monde eingefügt die eine Atmosphere besitzen. Dabei habe ich eine Bumpmap die im Mittelpunkt der Kugel zentriert ist erwendet. Da diese jedoch auf der z-Achse und nicht auf dem Sehstrahl senkrecht steht, gibt es momentan noch kleinere Fehler wenn der Mond nicht in der Bildschirmmitte liegt.
Bild
Kennt jemand eine einfache/effiziente Möglichkeit aus dem Sehstrahl senenkrecht stehende Bumpmaps zu berechnen?
Ansonsten werde ich es mit Hilfe von 2 Kreuzprodukten lösen.

@BloodySmartie wie hast du deine Atmosphere berechnet?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 14, 2006 13:37 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Versuch bei der Atmosphäre diese etwas stärker "ausfaden" zu lassen. Die hört noch zu abrupt auf. Da sie relativ gleichstark über die gesamte höhe ist, wirkt sie auch noch zu intensiv. Sie leuchtet quasi. Ich denke durch das ausfaden sollte das besser werden.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 14, 2006 13:56 
Offline
DGL Member

Registriert: Mo Jul 10, 2006 17:20
Beiträge: 5
Wohnort: Greifswald
@The-Winner:

Ich sitze leider grad im Labor, daher habe ich den Quellcode nicht
in erreichbarer Nähe, allerdings werd ich ihn hier voraussichtlich
am Wochenende reinstellen.

Die Text e zu Deinem Projekt find ich übrigens interessant :)

_________________
------------------------------------------------------------
Ein großer Aikidoka: When I need to I hit people with the largest weapon I can find: the Earth.
------------------------------------------------------------
Bald online: www.nutshell-design.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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.012s | 18 Queries | GZIP : On ]