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

Aktuelle Zeit: Mi Jul 16, 2025 21:34

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Okt 20, 2013 17:04 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Okt 20, 2013 18:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 588
Programmiersprache: C++
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.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Okt 20, 2013 18:52 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Okt 23, 2013 16:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Irgendwelche Texturfilter, parameter, pixelstore-dinger sind nicht aktiv?

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 24, 2013 08:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 24, 2013 10:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
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.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Okt 24, 2013 20:26 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
Hat denn Deine eigentliche Textur auch einen gültigen Alphakanal? Wird der korrekt beim Laden der Targa gesetzt?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Okt 25, 2013 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
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.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Okt 29, 2013 12:36 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
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.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]