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

Aktuelle Zeit: Sa Jul 05, 2025 16:10

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Färbung nach z-Werten
BeitragVerfasst: Di Sep 14, 2010 11:31 
Offline
DGL Member

Registriert: Fr Jul 16, 2010 18:28
Beiträge: 40
sharkman hat geschrieben:
Texturzugriffe gehen im Pixelshader etwa so:
Code:
uniform sampler2D Texture0;
//...
vec3 someColor = texture2D(Texture0, gl_TexCoord[0].xy).rgb;

Texture0 ist die TMU, auf die die Textur gebunden wurde, also irgendwas von 0 bis 15 normalerweise. Hab das aber noch nie benutzt, könnte also auch so falsch sein, wie der code in meinem letzten Beitrag.
bzw Wenn du das über die z koordinate (Höhe) machst, siehts etwa so aus:
Code:
uniform sampler2D Texture0;
//...
vec3 someColor = texture2D(Texture0, vec2(altitude, 0.0)).rgb;

ggf muss es auch vec2(0.0, altitude) heißen, bzw es kann auch sein, dass auch (oder nur?) ein
Code:
texture1D(Texture0, altitude)
dir die richtigen Werte zurückgibt.
Kommt wahrscheinlich darauf an, ob dus als 2d Textur oder als 1d Textur erzeugt hast.


Webgl kennt nur 2d Texturen. Ich habe mal all deine Vorschläge durchprobiert und bekomme unterschiedliche Effekte:

gl_FragColor =texture2D(uSampler, vec2(0.0,altitude)); //Buntes Bild, siehe Screenshot
gl_FragColor =texture2D(uSampler, vec2(altitude,0.0)); //komplett rot das Objekt. Das untere Ende der Textur wird wohl benutzt.
gl_FragColor =texture2D(uSampler, altitude); //Buntes Bild, siehe Screenshot
das mit der Endung .rgb funzt nicht, ist das wichtig?

Screenshot:
Bild
-> Irgendwas wird noch falsch gemacht von mir :x

Hier meine TExtur (hab sie zur besseren Erkennung auf 20px skaliert):
Bild

Die z-Werte gebe ich wie anfangs von Coolcat beschrieben als Weltkoordinaten weiter an den Pixelshader.

Und dann immer noch das Grundverständnis: Woher weiß der Fragmentshader, welchem z-Wert er welcher Farbe aus der TExtur zuordnen soll, z.B. dass der höchste Wert die Farbe rot bekommen soll?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Färbung nach z-Werten
BeitragVerfasst: Di Sep 14, 2010 11:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Und dann immer noch das Grundverständnis: Woher weiß der Fragmentshader, welchem z-Wert er welcher Farbe aus der TExtur zuordnen soll, z.B. dass der höchste Wert die Farbe rot bekommen soll?

Tja, genau das fehlt ;) Texturkoordinaten müssen immer zwischen 0 und 1 liegen. Bei größeren Werten wird die Textur wiederholt (*), darum bekommst du das was du oben als "Buntes Bild" bezeichnest: Für jeden Höhenmeter wird die Textur wiederholt.

Oben sagst du das deine Höhenwerte zwischen -5000 und 100 liegen. Also:
Code:
float texcoord = (altitude + 5000.0) / 5100.0;    // = (altitude - Minimum) / (Maximum-Minimum)
texcoord = clamp(texcoord, 0.0, 1.0);
gl_FragColor = texture2D(uSampler, vec2(0.0,texcoord));
gl_FragColor.a = 1.0; // <-- die Textur liefert nur rgb, folglich sollte man den Alpha-Wert auf 1 setzen.


Zitat:
das mit der Endung .rgb funzt nicht, ist das wichtig?

texture2D liefert einen vec4 und gl_FragColor ist ebenfalls ein vec4. Da sharkman einen vec3 für die Farbe benutzt hatte musste er von den vier Werten drei auswählen. In GLSL kannst du mittels ".x", ".y", ".z" und ".w" auf die einzelnen Werte des vec4 zugreifen. Diese kannst du auch beliebig kombinieren, also ".xy" oder ".wzx". Zudem kannst du statt "xyzw" auch die Buchstaben "rgba" oder "stpq" benutzen, du musst dich aber für einen Buchstabensatz entscheiden, also ".xgb" geht nicht. Welchen Buchstabensatz du nimmst ist dem Compiler egal, üblicherweise nimmt man aber "xyzw" für Koordinaten, "rgba" für Farben und "stpq" für Texturkoordinaten.


(*) das ist die Default-Einstellung. Siehe glTexParameter mit GL_TEXTURE_WRAP_S bzw. GL_TEXTURE_WRAP_T.

_________________
Yeah! :mrgreen:


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


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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]