¿Por qué no deberían corregirse los mapas de relieve, normal y desplazamiento?

9

Así que estoy tratando de entender esto desde un punto de vista bastante técnico.

Cuando agrega un mapa de relieve o normal o de desplazamiento en su sombreador, no deben corregirse con gamma. Pero las texturas difusas deberían serlo. ¿Pero por qué?

Cuando guarda un archivo en 8 bits (o entero de 16 bits) con un formato como JPEG, PNG o TIFF, obtiene la gamma de 0.4545 (1 / 2.2) quemada. Entonces, una cámara captura la luz del mundo real (eso es lineal) y al guardar la foto como JPEG, se agrega un valor de gamma de 1 / 2.2, como una forma de comprimir la información en 8 bits, y luego cuando ve la imagen en un monitor que agrega una gamma de 2.2 haciendo que la luminancia vuelva a ser lineal.

Entonces, cuando se usan texturas difusas (como una foto), se debe "eliminar" esa gamma 1 / 2.2 para que sea lineal (llamada linealización), de modo que ahora la textura se ve más oscura pero estos valores son correctos desde un punto de vista matemático, por lo que el renderizador Haz los cálculos correctos. Nota al margen: el software utilizó una gama de visualización de 2.2 para asegurarse de que las texturas se vean correctas, solo para el cálculo interno de que están linealizadas. Pero cuando creo un mapa de relieve en Photoshop y lo guardo como JPG o PNG, esa gamma 1 / 2.2 también se quema en esa imagen, entonces, ¿por qué no es necesario linealizar este mapa de relieve también?

Si cargo un mapa de relieve en 3ds Max con una gamma de entrada de 2.2 al igual que lo haría con una textura difusa, el difuso se ve bien pero el relieve se ve mal, así que tengo que configurar la gamma de entrada a 1.0 para el relieve en orden para que se vea bien, pero como dije: ¿por qué, ambos archivos de imagen tienen el gamma 1 / 2.2 quemado, verdad?

Kristoffer Helander
fuente

Respuestas:

5

El hecho de que una foto se almacene en el espacio gamma no tiene que ver con PNG o JPEG, sino con el hecho de que es una foto.

La cámara detecta una intensidad del 50%, pero la guardará como 187 en lugar de 127, ya que es más eficiente mantener la información de color que es importante para el ojo humano cuando solo tiene 256 valores posibles diferentes. Y también Photoshop si lo dices así.

Para mapas normales o de desplazamiento, no tiene esta necesidad, por lo que no hay razón para usar el espacio gamma para ellos (usar gamma para ellos en realidad sería un error, ya que afectaría cómo se distribuye la precisión). Por lo tanto, cuando decodifica una textura normal o una textura de desplazamiento, no necesita aplicar gamma.

Sin embargo, si el mapa normal está codificado en un espacio diferente, como puede ser el caso de un G-Buffer, por ejemplo , debe aplicar la corrección correspondiente.

Julien Guertault
fuente
¿Cómo le dice a Photoshop que guarde una imagen con la gamma horneada como dijo anteriormente: "Y también Photoshop si lo dice".
Kristoffer Helander
Esto no explica el "por qué" en absoluto. Simplemente reitera el "qué".
user1118321
@ user1118321: Creo que sí. Agregué énfasis en un intento de aclararlo.
Julien Guertault
Bueno, cierto, pero todavía no explica por qué. Admito que tengo el mismo problema, solo menciono la falta de beneficio o daño causado por dicha compresión. No hay necesidad, pero el motivo es que los datos de las imágenes son peculiares debido a los sentidos humanos, mientras que nuestro razonamiento espacial es de naturaleza más lineal (en lo que respecta a la aplicación 3D)
joojaa
3

JPG, PNG o cualquier otro formato de imagen de 8 bits no tiene intrínsecamente gamma 1 / 2.2 asociado. Solo almacenan valores de 0-255. La forma en que se interpretan esos datos depende del software que lee y escribe esos archivos. El hecho interesante es que la mayoría del software de edición de imágenes utiliza el espacio de color gamma de forma predeterminada. Todos los pinceles, efectos, filtros e incluso el selector de color funcionan en el espacio gamma. Solo mira los tonos de gris en el selector de color en Photoshop. No siguen una distribución lineal.

La consecuencia es que Photoshop no realiza conversiones entre el espacio de color gamma y lineal al abrir o guardar una imagen (por defecto), solo cuando se muestra. Eso significa que puede usarlo tan fácilmente para crear o editar datos lineales, como un mapa de altura, como puede editar fotos. El mapa de relieve no se ve correctamente cuando se carga con corrección gamma, porque no se guardó con él.

Quinchilion
fuente
Aquí hay un video de YouTube que también explica que el valor almacenado en una imagen es el 1 / 2.2 (pero él lo simplifica y solo dice que es la raíz cuadrada, hay un descargo de responsabilidad en el texto). Color de la computadora está roto - Enlace
Kristoffer Helander
@KristofferHelander Sí, pero dice que solo la cámara almacena los valores como raíces cuadradas y solo la pantalla que lo cuadra. El software de edición de imágenes como Photoshop simplemente abre y guarda la imagen sin conversiones, lo que resulta en artefactos que se muestran en el video cuando intenta mezclar colores.
Quinchilion
Corrígeme si me equivoco en esto. Cuando dibujo una rampa de gradiente en Photoshop que me parece lineal en la pantalla, los valores en esa rampa en realidad son lineales. Pero Photoshop agrega una gamma de visualización de 1 / 2.2 ya que el monitor agrega una gamma de 2.2, por lo que los valores de píxeles de las imágenes son lineales y también se ven lineales. Pero esta gamma 1 / 2.2 es solo una gamma de visualización que Photoshop usa para mostrar la imagen, no está integrada en la imagen y, por lo tanto, no es necesario realizar una corrección gamma en la imagen en el software 3D (use gamma 1.0) ya que los valores ya son lineales?
Kristoffer Helander
@KristofferHelander goo.gl/yqkeUP El gradiente inferior representa el brillo físico. Si Photoshop aplicara una gamma de 1 / 2.2 para dibujar el gradiente o mostrar la imagen, vería el gradiente inferior. En cambio, ves el superior, que casualmente parece ser lineal, pero no lo es. Tampoco funcionaría para ver fotos. La cámara aplicó 1 / 2.2 al guardar la foto, luego Photoshop aplicaría otro 1 / 2.2, pero la pantalla solo agrega gamma de 2.2 una vez. Eso no se vería bien.
Quinchilion
Si lleno un documento en Photoshop con la mitad roja (255,0,0) y la otra mitad con verde (0,255,0) y luego utilizo un desenfoque gaussiano, el gradiente resultante se vuelve marrón en lugar de amarillo en el medio como se muestra en ese video que publiqué. ¿Porqué es eso? Si los píxeles de la imagen son lineales, ¿por qué se arruinan las matemáticas? No entiendo cómo un mapa de desplazamiento pintado en Photoshop es lineal y bueno para renderizar, pero al mismo tiempo, el desenfoque de los píxeles se arruina con la gamma incorrecta y los colores se vuelven oscuros y marrones.
Kristoffer Helander
3

Introducción

¡Depende de cómo crees el mapa! Considere lo siguiente y deje que se hunda por un tiempo antes de continuar:

  1. La imagen se muestra con una corrección gamma en beneficio de sus ojos.
  2. Los datos siguen siendo solo datos. La corrección gamma es para la parte de la pantalla, no para la parte de datos.

Ahora un mapa de relieve es bastante difícil de dibujar con una aplicación de pintura. Porque es difícil de ver incluso si eras correctamente lineal. Entonces terminas usando cosas como mirar valores. Ahora aquí está la trampa:

  • Si decides que 128 está a la mitad de tu intensidad, entonces esa es la realidad. Dado que eso es lo que está codificando en el flujo de datos. Los datos son lo que usted interpreta, ya que no están destinados a los ojos humanos y al monitor. A quién le importa lo que el monitor muestra los valores, ya que todo depende de cómo interpretas los datos editándolos.

Hacer el mapa de relieve / desplazamiento

Ok, ahora he descrito que los datos dependen de la interpretación. Pero, ¿por qué interpretarías los datos como lineales? Porque entonces puedes diseñar mejor tu perfil lateral. Mira lo que puedes hacer es pensar en el 100% de opacidad de tu pincel como la altura del objetivo que deseas tallar o superponer. Luego puede usar la herramienta de curvas para diseñar la forma de su pincel de sellos (ya que cree que los datos son lineales).

ingrese la descripción de la imagen aquí

Imagen 1 : Un sello de ventosa.

Ahora, si haces algo como esto, tu imagen es lineal a pesar de lo que todo el mundo te dice. Has decidido descartar las reglas de imagen que dicen lo contrario. Y es por eso que la imagen es lineal , el autor elige que sea lineal para que sea más fácil trabajar con ella.

ingrese la descripción de la imagen aquí

Imagen 2 : Misma imagen desplazada e interpretada lineal (tenga en cuenta que escalé un poco la altura para que se ajuste a mi tamaño de bb predeterminado), funcionando según lo previsto.

Técnicamente lineal es mejor.

Un mapa sintético no tiene el beneficio de comprimir ciertos valores a expensas de otros. Lineal es inherentemente mejor porque la propagación de su golpe es mejor de esa manera. Es por eso que estaría desperdiciando recursos codificándolo de manera corregida gamma.

En segundo lugar, una imagen no necesita especificar en qué espacio de color está. Es solo que los editores de imágenes asumirán que está codificada con sRGB. No tiene ninguna razón para hacer la misma interpretación, ninguna información significa simplemente: "Nadie se molestó en escribir lo que estaban pensando". Entonces, tal vez debería hacerse el punto, debería etiquetarlo como lineal. Pero aquí está el problema ... su computadora no viene con un perfil lineal de fácil acceso.

¿Qué pasa con Photoshop y desenfoque?

Aqui es donde se pone complicado. Photoshop intenta hacer mucho trabajo para asegurarse de que no necesita saber nada sobre estas cosas. Y aquí es donde te disparas en el pie. Photoshop no está diseñado para crear texturas, está destinado a editar imágenes, no datos aleatorios. Entonces, dado que el desenfoque en una imagen es diferente lineal y no lineal, no funcionará con datos incorrectos.

Pero puede hacer una de 2 cosas para solucionar esto:

  1. Desactiva la corrección gamma del desenfoque
  2. establecer su espacio de trabajo en un perfil lineal

Conclusión

La razón por la que tienes dificultades con esto es

  1. Usted no sabe lo que piensan otras personas, simplemente no sabe si deben corregirse con rayos gamma o no.
  2. que estás usando una aplicación que trata las imágenes como imágenes

El punto uno es especialmente confuso. Solo sé que TODOS mis mapas de relieve y desplazamiento son de hecho lineales. Pero no puedo saber cuáles son tus mapas. Lo más probable es que sean lineales porque se entiende casi universalmente que los datos son lineales. Incluso las personas que no saben acerca de gamma tienden a hacerlo lineal por golpe / desplazamiento por alguna razón (porque es fácil y eso es lo que piensas que son las imágenes hasta que alguien te diga lo contrario).

joojaa
fuente
Gracias por tu aporte, ¡guau! :) Voy a echar un vistazo a esto cuando tenga más tiempo libre. Me pondré en contacto con usted, gracias!
Kristoffer Helander
Even people who do not know about gamma tend to do it linear for bump/displacement for some reasonProbable porque se generan esos mapas.
Tara
3

En realidad, si su mapa de relieve o desplazamiento se guarda con esa corrección gamma de 0.45, está mal. Estos mapas contienen información geométrica en lugar de color, y como tal, simplemente deben codificarse linealmente.

Para ver un problema relacionado y una solución para Adobe Photoshop, consulte esta presentación de diapositivas: https://docs.google.com/presentation/d/1vS5nAAnXbZ8Pt6-dXxy-xEXDkjfjXTmNnthNGccorl0/edit#slide=id.g14b3e28660_0_8

IneQuation
fuente
Esto es especialmente cierto para un mapa normal donde se espera que la longitud del vector sea 1.
PaulHK