Linear space - Gamma - Optimierung

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2256
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Linear space - Gamma - Optimierung

Beitrag von Zudomon »

Für Lichtberechnungen ist es ja nötig, der Textur vorher das Gamma zu entziehen um sie in den Linear Space zu bringen.
Meine Frage ist, kann man das auch Vorberechnen oder macht das nicht viel Sinn wegen z.B. Genauigkeitsverlust bei RGBA8 ?
Benutzeravatar
Schrompf
Moderator
Beiträge: 4864
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Linear space - Gamma - Optimierung

Beitrag von Schrompf »

Würde ich nicht vorberechnen. Dafür gibt's schon unter DX9 den Sampler State "sRGB" oder so ähnlich. Damit wird die Textur beim Samplen gamma-korrigiert. Tut aber auch nicht weh, wenn Du's im Shader machst.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: Linear space - Gamma - Optimierung

Beitrag von Spiele Programmierer »

Sollte man nicht im Shader machen.
Die Filterung ist dann nicht korrekt und die eingebaute Konversion wäre angeblich meistens in Hardware optimiert.
http://www.arcsynthesis.org/gltut/Textu ... arity.html
Benutzeravatar
Krishty
Establishment
Beiträge: 8260
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Linear space - Gamma - Optimierung

Beitrag von Krishty »

Richtig; die Hardware soll das erledigen, dafür ist sie da. Wenn das gerade nicht verfügbar ist (exotische Texturformate, z.B. nur ein Kanal), kann man es mit etwas über einem Bit Verlust beschleunigen indem man die Quadratwurzel des linearen Werts speichert und im Shader quadriert. Dann ist die Filterung aber nicht mehr ganz korrekt, wie Spiele Programmierer schon anmerkte.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
mnemonix
Establishment
Beiträge: 101
Registriert: 09.04.2010, 20:38

Re: Linear space - Gamma - Optimierung

Beitrag von mnemonix »

Diese Seiten [1][2] zeigen auch nochmal eindrucksvoll was passiert, wenn man nicht im linearen Raum filtert oder blurt. Gleichzeitig merke ich gerade [3], dass mein Chrome, Firefox und Internet Explorer 11 alle nicht richtig downsamplen können.
Benutzeravatar
Krishty
Establishment
Beiträge: 8260
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Linear space - Gamma - Optimierung

Beitrag von Krishty »

Die Beispiele müssen streng mit Box gefiltert werden um ein graues Bild zu erhalten. Chrome benutzt aber sowas wie Lanczos (damit im Ergebnis weniger Aliasing auftritt) und weicht deshalb leicht ab.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Zudomon
Establishment
Beiträge: 2256
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Linear space - Gamma - Optimierung

Beitrag von Zudomon »

Meine anfängliche Frage bleibt... ist es vielleicht nicht sinnvoll, die Texturen direkt linear darzustellen. Oder ist der Qualitätsverlust beim umwandeln einer Textur von sRGB8 in lRGB8 zu groß?
Benutzeravatar
Krishty
Establishment
Beiträge: 8260
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Linear space - Gamma - Optimierung

Beitrag von Krishty »

Je nach Textur bestimmt. Alle Farbintensitäten unter 17/255tel werden pechschwarz. Probier's doch mal aus :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
mnemonix
Establishment
Beiträge: 101
Registriert: 09.04.2010, 20:38

Re: Linear space - Gamma - Optimierung

Beitrag von mnemonix »

Krishty hat geschrieben:Die Beispiele müssen streng mit Box gefiltert werden um ein graues Bild zu erhalten. Chrome benutzt aber sowas wie Lanczos (damit im Ergebnis weniger Aliasing auftritt) und weicht deshalb leicht ab.
Hm, eigentlich sollte aber statt eines grauen Bildes der Dalai Lama angezeigt werden. ^^
Antworten