DGL
https://delphigl.com/forum/

GL_ALPHA8 - Textur und texture2D - Loopup
https://delphigl.com/forum/viewtopic.php?f=20&t=11006
Seite 1 von 1

Autor:  Bergmann89 [ So Okt 20, 2013 17:04 ]
Betreff des Beitrags:  GL_ALPHA8 - Textur und texture2D - Loopup

Hey Leute,

ich steh grad irgendwie total auf'm Schlauch. Ich hab ne Textur mit nem 8bit Alpha-Kanal (GL_ALPHA8). Die blende ich mit glColor4f(1, 1, 1, 1) auf einen schwarzen Hintergrund. Ergebnis: weiße transparente Wolken. Nun wollt ich das mit ein paar anderen Sachen im Shader verrechnen, aber wenn ich da ein Texturlookup mit texture2D mache, dann ist rgb immer 0 und a der entsprechende Wert aus der Textur. Ich dachte immer der default-Wert für nicht vorhandene Kanäle ist 1.0, oder hab ich da was verdreht?!

MfG Bergmann.

Autor:  glAwesome [ So Okt 20, 2013 18:35 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Also ich weiß, dass wenn ich ein texture-Lookup im Shader mache, dass das Ergebnis schwarz ist, wenn ich die uniform-Variable für die Textur nicht gesetzt habe. In der glsl-spec (3.3) konnte ich nichts finden, welchen Wert texture-Lookups zurückgeben, wenn die Information in der entsprechenden Textur fehlt. Also im Zweifelsfall undefined.

Aber was hält dich davon ab, im Fragmentshader sowas zu machen:
Code:
  1. #version 330
  2. uniform sampler2D ColorMap;
  3. in vec2 texCoord;
  4. out vec4 outColor;
  5.  
  6. void main(void){
  7.   outColor = vec4(1.0);
  8.   outColor.a = texture(ColorMap, texCoord).a;
  9. }

Edit: Du scheinst mit einer älteren OpenGL-Version zu arbeiten. Da müsstest du natürlich #version, in und out anpassen, die glsl-Variable für glColor verwenden usw. Wird dich aber nicht vor Probleme stellen, denke ich.

Autor:  Bergmann89 [ So Okt 20, 2013 18:52 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Hey,

das geht natürlich, aber dann muss ich wieder ne extra Behandlung für Alpha-Texturen einführen, denn es können auch normale RGB(A) Teturen dort gebunden werden. Und ich bin mir eigentlich zu 99% sicher, dass das mal so ging wie in der fixed Pipeline. Ich weiß grad nur nich wo ich suchen soll :/

MfG Bergmann.

Autor:  Lord Horazont [ Mi Okt 23, 2013 16:39 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Irgendwelche Texturfilter, parameter, pixelstore-dinger sind nicht aktiv?

grüße

Autor:  Bergmann89 [ Do Okt 24, 2013 08:31 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Hey,

eigentlich nich, ich hab auch nochma google befragt und da hab ich nen ähnlichen Thread gefunden. Da hieß es, das die Kanäle die es in der Textur nicht gibt einfach nicht gesetzt werden. Also war es purer Zufall, dass RGB bis jetzt immer 1 war :/

MfG Bergmann

Autor:  TAK2004 [ Do Okt 24, 2013 10:24 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Ich hab nochmal in die GLSlang 4.0 Specs geguckt und es sieht wie folgt aus.
Die initialisierung von Vektoren wird nicht vorgegeben, da kann Datenmüll drin stehen.
Matrizen müssen immer als Einheitsmatrix initialisiert werden.
Texturzugriffe müssen gewährleisten, dass die Wert zwischen 0.0 und 1.0 liegen, wenn es ein float Vektor ist.

Daraus folgt, dass ein Texturzugriff die Kanäle, die im Sampler verfügbar sind entsprechend beschreibt und mit den restlichen ein Wert zwischen 0.0 und 1.0 zu weist und der Wert ist vom Treiberentwickler frei wählbar.

Autor:  phlegmatiker [ Do Okt 24, 2013 20:26 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Hat denn Deine eigentliche Textur auch einen gültigen Alphakanal? Wird der korrekt beim Laden der Targa gesetzt?

Autor:  Bergmann89 [ Fr Okt 25, 2013 15:33 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Ja, die hat nur einen Alpha Kanal. Ich seh auch dass das Blending stimmt, nur die Farbe ist schwarz anstatt weiß.
Ich das jetzt so angepasst das nur der Wert der Farbe geladen wird, der auch wirklich da is.

Autor:  OpenglerF [ Di Okt 29, 2013 12:36 ]
Betreff des Beitrags:  Re: GL_ALPHA8 - Textur und texture2D - Loopup

Ich möchte an der Stelle mal darauf hinweisen, dass "GL_ALPHA8" scheinbar deprecated ist und man in moderenen OpenGL nicht mehr einsetzen sollte.
Änliches Verhalten sollte man jedoch mit "GL_R8" und entsprechenden "Swizzle"-Einstellungen auch hin bekommen.
Mit den Einstellungen sollte auch definiert sein, welche Werte die nicht in der Texture gespeicherten Farbkannäle haben.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/