Also versuche ich, mich aus einer ziemlich technischen Sicht darum zu kümmern.
Wenn Sie Ihrem Shader eine Bump-, Normal- oder Verschiebungskarte hinzufügen, sollten diese nicht gammakorrigiert werden. Aber diffuse Texturen sollten sein. Aber warum?
Wenn Sie eine Datei in 8-Bit (oder 16-Bit-Ganzzahl) mit einem Format wie JPEG, PNG oder TIFF speichern, wird das Gamma von 0,4545 (1 / 2,2) eingebrannt. Eine Kamera erfasst also das Licht aus der realen Welt (das ist linear). Wenn Sie das Foto als JPEG speichern, wird ein Gammawert von 1 / 2,2 hinzugefügt, um die Informationen in 8 Bit zu komprimieren. Wenn Sie dann das Bild auf einem Monitor anzeigen, der ein Gamma von 2,2 hinzufügt, wird die Luminanz wieder linear.
Wenn Sie also diffuse Texturen (wie ein Foto) verwenden, müssen Sie dieses 1 / 2,2-Gamma "entfernen", um es linear zu machen (Linearisierung genannt). Jetzt sieht die Textur dunkler aus, aber diese Werte sind vom mathematischen Standpunkt aus korrekt, so dass der Renderer dies tut Machen Sie die richtigen Berechnungen. Randnotiz: Die Software verwendete ein Anzeige-Gamma von 2,2, um sicherzustellen, dass die Texturen korrekt aussehen. Nur für die interne Berechnung werden sie linearisiert. Wenn ich jedoch in Photoshop eine Bump-Map erstelle und diese als JPG oder PNG speichere, wird auch dieses 1 / 2,2-Gamma in dieses Bild eingebrannt. Warum muss diese Bump-Map nicht auch linearisiert werden?
Wenn ich eine Bump-Map in 3ds Max mit einem Eingangsgamma von 2,2 lade, genau wie dies bei einer diffusen Textur der Fall wäre, sieht das diffuse richtig aus, aber der Bump sieht falsch aus. Daher muss ich das Eingangsgamma für den Bump in der Reihenfolge auf 1,0 setzen damit es richtig aussieht, aber wie gesagt: warum ist in beiden Bilddateien das 1 / 2,2-Gamma eingebrannt, oder?
JPG, PNG oder andere 8-Bit-Bildformate haben an sich kein 1 / 2,2-Gamma. Sie speichern nur Werte von 0-255. Wie diese Daten interpretiert werden, hängt von der Software ab, die diese Dateien liest und schreibt. Die interessante Tatsache ist, dass die meisten Bildbearbeitungsprogramme standardmäßig Gammafarben verwenden. Alle Pinsel, Effekte, Filter und sogar der Farbwähler arbeiten im Gammaraum. Schauen Sie sich einfach die Graustufen des Farbwählers in Photoshop an. Sie folgen keiner linearen Verteilung.
Die Folge ist, dass Photoshop beim Öffnen oder Speichern eines Bildes (standardmäßig) keine Konvertierungen zwischen Gamma und linearem Farbraum durchführt, sondern nur beim Anzeigen. Das bedeutet, dass Sie damit genauso einfach lineare Daten wie eine Höhenkarte erstellen oder bearbeiten können wie Fotos. Die Bump Map sieht beim Laden mit Gammakorrektur nicht richtig aus, da sie nicht damit gespeichert wurde.
quelle
Einführung
Es hängt davon ab, wie Sie die Karte erstellen! Beachten Sie Folgendes und lassen Sie es eine Weile einwirken, bevor Sie fortfahren:
Jetzt ist es ziemlich schwierig, eine Bump Map mit einem Farbauftrag zu zeichnen. Weil es schwer zu sehen ist, selbst wenn Sie richtig linear waren. Am Ende verwenden Sie also Dinge wie das Betrachten von Werten. Hier ist der Haken:
Erstellen der Stoß- / Verschiebungskarte
Ok, jetzt habe ich beschrieben, dass die Daten der Interpretation entsprechen. Aber warum sollten Sie die Daten als linear interpretieren? Denn dann können Sie Ihr Seitenprofil besser gestalten. Sehen Sie, was Sie tun können, indem Sie sich 100% Deckkraft Ihres Pinsels als die Zielhöhe vorstellen, auf die Sie schnitzen oder schichten möchten. Sie können dann das Kurvenwerkzeug verwenden, um die Form Ihres Stempelpinsels zu entwerfen (da Sie der Meinung sind, dass die Daten linear sind).
Bild 1 : Ein Saugnapfstempel.
Wenn Sie so etwas tun, ist Ihr Bild linear, trotz allem, was Ihnen jeder sagt. Sie haben beschlossen, die Bildregeln zu verwerfen, die etwas anderes aussagen. Und deshalb ist das Bild linear . Der Autor wählt, dass es linear ist, damit es einfacher zu bearbeiten ist.
Bild 2 : Das gleiche Bild wird linear verschoben und interpretiert (Hinweis: Ich habe die Höhe etwas skaliert, um sie an meine Standard-BB-Größe anzupassen) und funktioniert wie beabsichtigt.
Technisch linear ist besser.
Eine synthetische Karte hat keinen Vorteil darin, bestimmte Werte auf Kosten anderer zu komprimieren. Linear ist von Natur aus besser, weil die Ausbreitung Ihrer Beule auf diese Weise besser ist. Aus diesem Grund würden Sie Ressourcen verschwenden, die sie gammakorrigiert codieren.
Zweitens muss ein Bild nicht angeben, in welchem Farbraum es sich befindet. Es ist nur so, dass Bildeditoren davon ausgehen, dass es sRGB-codiert ist. Sie haben keinen Grund, dieselbe Interpretation vorzunehmen, keine Information bedeutet nur: "Niemand hat sich die Mühe gemacht, aufzuschreiben, was er dachte". Vielleicht sollte der Punkt gemacht werden, dass Sie ihn linear markieren sollten. Aber hier ist das Problem ... Ihr Computer verfügt nicht über ein leicht zugängliches lineares Profil.
Was ist mit Photoshop und Unschärfe?
Hier wird es schwierig. Photoshop versucht ziemlich viel zu tun, um sicherzustellen, dass Sie nichts über dieses Zeug wissen müssen. Und hier schießen Sie sich in den Fuß. Se Photoshop ist nicht zum Erstellen von Texturen gedacht, sondern zum Bearbeiten von Bildern, nicht von zufälligen Daten. Da die Unschärfe eines Bildes linear und nichtlinear unterschiedlich ist, funktioniert es nicht mit falschen Daten.
Sie können jedoch eines von zwei Dingen tun, um dies zu beheben:
Fazit
Der Grund, warum Sie es schwer haben, ist
Punkt eins ist besonders verwirrend. Ich weiß nur, dass ALLE meine Bump- und Verschiebungskarten tatsächlich linear sind. Aber ich kann nicht wissen, was Ihre Karten sind. Die Chancen stehen gut, dass sie linear sind, da fast allgemein verstanden wird, dass die Daten linear sind. Sogar Leute, die nichts über Gamma wissen, neigen dazu, es aus irgendeinem Grund linear für Unebenheiten / Verschiebungen zu machen (weil es einfach ist und Sie denken, dass Bilder so sind, bis Ihnen jemand etwas anderes sagt).
quelle
Even people who do not know about gamma tend to do it linear for bump/displacement for some reason
Wahrscheinlich, weil diese Karten generiert werden.Wenn Ihre Stoß- oder Verschiebungskarte mit dieser 0,45-Gammakorrektur gespeichert wird, ist dies tatsächlich falsch. Diese Karten enthalten eher geometrische Informationen als Farben und sollten daher einfach linear codiert werden.
Ein verwandtes Problem und eine Lösung für Adobe Photoshop finden Sie in diesem Dia-Deck: https://docs.google.com/presentation/d/1vS5nAAnXbZ8Pt6-dXxy-xEXDkjfjXTmNnthNGccorl0/edit#slide=id.g14b3e28660_0_8
quelle