Entorno y post proceso

Godot 3 proporciona un recurso ambiental rediseñado, así como un nuevo sistema de post-procesamiento con muchos efectos disponibles de inmediato.

Entorno

El recurso Medio Ambiente almacena toda la información necesaria para controlar el medio ambiente de la reproducción. Esto incluye el cielo, la iluminación ambiental, el mapeo de tonos, los efectos y los ajustes. Por sí mismo no hace nada, pero se habilita una vez que se utiliza en uno de los siguientes lugares en orden de prioridad:

Nodo Camera

Un ambiente puede ser ajustado a una cámara. Tendrá prioridad sobre cualquier otro ajuste.

../../_images/environment_camera.png

Esto es sobre todo útil cuando se quiere sobreescribir un entorno existente, pero en general es una mejor idea utilizar la opción que figura a continuación.

Nodo WorldEnvironment

El nodo WorldEnvironment puede ser añadido a cualquier escena, pero sólo puede existir uno por cada árbol de escena activo. Si se añade más de uno, se producirá una advertencia.

../../_images/environment_world.png

Cualquier Medio Ambiente añadido tiene mayor prioridad que el Medio Ambiente por defecto (explicado más abajo). Esto significa que puede ser sobreescrito por cada escena, lo que lo hace bastante útil.

Entorno por defecto

Se puede establecer un entorno por defecto, que actúa como una alternativa cuando no se ha establecido un entorno en una cámara o en WorldEnvironment. Sólo tienes que ir a Configuración del Proyecto -> Renderización -> Entorno:

../../_images/environment_default.png

Los nuevos proyectos creados desde el Administrador de Proyectos vienen con un entorno por defecto (default_env.tres). Si se necesita crear uno, guárdelo en el disco antes de referenciarlo aquí.

Opciones de Environment

A continuación se describen detalladamente todas las opciones de entorno y la forma en que se pretenden que sean utilizadas.

Imagen de fondo

La sección Fondo contiene ajustes sobre cómo rellenar el fondo (partes de la pantalla en las que no se han dibujado objetos). En Godot 3.0, el fondo no sólo sirve para mostrar una imagen o un color, sino que también puede cambiar la forma en que los objetos se ven afectados por la luz ambiental y reflejada.

../../_images/environment_background1.png

Hay muchas maneras de establecer el fondo:

  • Color claro utiliza el color claro por defecto definido por el proyecto. El fondo será de un color constante.

  • Color personalizado es como el color claro, pero con un valor de color personalizado.

  • Cielo permite definir un cielo panorámico (una textura de esfera de 360 grados) o un cielo procedimental (un cielo simple con un gradiente y un sol opcional). Los objetos lo reflejarán y absorberán la luz ambiental de él.

  • Color+Cielo te permite definir un cielo (como arriba), pero usa un valor de color constante para dibujar el fondo. El cielo sólo se usará para la reflexión y la luz ambiental.

Luz Ambiental

El ambiente (como se define aquí) es un tipo de luz que afecta a cada pieza de la geometría con la misma intensidad. Es global e independiente de las luces que se puedan añadir a la escena.

Hay dos tipos de luz ambiental: el Color Ambiente (que es un color constante multiplicado por el albedo material) y luego uno obtenido del Cielo (como se describió anteriormente, pero es necesario establecer un cielo como fondo para que esto se habilite).

../../_images/environment_ambient.png

Cuando se establece un Cielo como fondo, es posible mezclar entre el color del ambiente y el cielo usando la configuración de Contribución al cielo (este valor es 1.0 por defecto por conveniencia, así que sólo el cielo afecta a los objetos).

Aquí hay una comparación de cómo distinta luz ambiental afecta a una escena:

../../_images/environment_ambient2.png

Finalmente, hay un ajuste de Energía, que es un multiplicador. Es útil cuando se trabaja con HDR.

En general, la luz ambiental sólo debe utilizarse para escenas sencillas, grandes exteriores o por razones de rendimiento (la luz ambiental es barata), ya que no proporciona la mejor calidad de iluminación. Es mejor generar luz ambiental a partir de la ReflectionProbe o GIProbe, que simulará más fielmente cómo se propaga la luz indirecta. A continuación se muestra una comparación, en términos de calidad, entre el uso de un color ambiental plano y una GIProbe:

../../_images/environment_ambient_comparison.png

Utilizando uno de los métodos descritos anteriormente, los objetos obtienen una luz ambiental constante reemplazada por la luz ambiental de las sondas.

Niebla

La niebla, como en la vida real, hace que los objetos distantes se desvanezcan en un color uniforme. El efecto físico es en realidad bastante complejo, pero Godot proporciona una buena aproximación. Hay dos tipos de niebla en Godot:

  • Niebla profunda: Esta se aplica en base a la distancia de la cámara.

  • Niebla de altura: Esta se aplica a cualquier objeto que esté por debajo (o por encima) de una cierta altura, independientemente de la distancia de la cámara.

../../_images/environment_fog_depth_height.png

A estos dos tipos de niebla se les puede ajustar su curva, haciendo su transición más o menos aguda.

Dos propiedades pueden ser ajustadas para hacer el efecto de la niebla más interesante:

El primero es Sun Amount, que utiliza la propiedad Sun Color de la niebla. Cuando se mira hacia una luz direccional (normalmente un sol), el color de la niebla se cambia, simulando la luz del sol que pasa a través de la niebla.

El segundo es Transmisión habilitada que simula una transmisión de luz más realista. En la práctica, hace que la luz destaque más a través de la niebla.

../../_images/environment_fog_transmission.png

Mapa de tono

Esta característica sólo está disponible cuando se utiliza el backend GLES3.

Selecciona la curva de mapeado tonal que se aplicará a la escena, a partir de una lista de curvas estándar utilizadas en la industria del cine y los videojuegos. Los operadores de mapeado tonal distintos de Lineal se utilizan para hacer que las zonas claras y oscuras sean más homogéneas, a la vez que evitan el recorte de las luces brillantes.

Las opciones de mapeado de tonos son:

  • Modo: El modo de mapeo de tonos a usar.

    • Lineal: El modo de mapeo de tonos predeterminado. Este es el operador de mapeo de tonos más rápido y sencillo, pero hace que la iluminación brillante se vea sobreexpuesta, con un recorte notable en los colores de salida.

    • Reinhardt: Realiza una variación en los colores de los píxeles renderizados mediante la fórmula: color = color / (1 + color). Esto evita el recorte de reflejos brillantes, pero la imagen resultante puede parecer un poco apagada.

    • Filmic: Esto evita el recorte de reflejos brillantes, con una imagen resultante que generalmente se ve más vívida que con Reinhardt.

    • ACES Fitted: Es el tonemapper del Sistema de Codificación de Color de la Academia (ACES). ACES Fitted es ligeramente más costoso que otras opciones, pero maneja la iluminación brillante de una manera más realista al desaturarla a medida que se vuelve más brillante. ACES suele tener una salida más contrastada en comparación con Reinhardt y Filmic. ACES es la opción recomendada cuando se busca lograr imágenes fotorrealistas.

    • ACES: Obsoleto (será eliminado en Godot 4.0). Se comporta como ACES, pero no desatura la iluminación a medida que se vuelve más brillante (lo cual es menos realista). Se recomienda utilizar ACES Fitted en lugar de ACES.

  • Exposure: Ajuste de exposición en el mapeo de tonos que simula la cantidad de luz recibida a lo largo del tiempo (valor predeterminado: 1.0). Valores más altos dan como resultado una apariencia general más brillante. Si la escena parece demasiado oscura como resultado del operador de mapeo de tonos o un cambio en el punto blanco, intenta aumentar ligeramente este valor.

  • White: Punto blanco en el mapeo de tonos, que simula dónde se encuentra el blanco en la escala (valor predeterminado: 1.0). Para una iluminación fotorrealista, los valores recomendados están entre 6.0 y 8.0. Valores más altos resultan en reflejos menos sobreexpuestos, pero hacen que la escena parezca ligeramente más oscura en general.

Exposición automática (HDR)

Esta característica sólo está disponible cuando se utiliza el backend GLES3.

Aunque, en la mayoría de los casos, la iluminación y la textura están fuertemente controladas por el artista, Godot apoya una simple implementación de alto rango dinámico con el mecanismo de auto exposición. Esto se usa generalmente por el bien del realismo cuando se combinan áreas interiores con poca luz y al aire libre. La autoexposición simula la cámara (o el ojo) en un esfuerzo por adaptarse entre los lugares claros y oscuros y sus diferentes cantidades de luz.

../../_images/environment_hdr_autoexp.gif

La forma más simple de usar la autoexposición es asegurarse de que las luces exteriores (u otras luces fuertes) tengan una energía superior a 1.0. Esto se hace ajustando su multiplicador de Energía (en la propia luz). Para que sea consistente, el Sky usualmente necesita usar el multiplicador de energía también, para que coincida con la luz direccional. Normalmente, los valores entre 3,0 y 6,0 son suficientes para simular las condiciones interiores y exteriores.

Combinando la autoexposición con el postprocesamiento de Brillo (más sobre eso abajo), los píxeles que van sobre el mapa de tonos Blanco sangrarán al búfer de brillo, creando el típico efecto de florecimiento en la fotografía.

../../_images/environment_hdr_bloom.png

Los valores controlables por el usuario en la sección de Exposición Automática vienen con valores por defecto sensatos, pero aún así puedes ajustarlos:

../../_images/environment_hdr.png
  • Escala: Valor a escala de la iluminación. Los valores más brillantes producen imágenes más brillantes, los más pequeños producen imágenes más oscuras.

  • Min Luma: La luminancia mínima que la autoexposición intentará ajustar. La luminancia es el promedio de la luz en todos los píxeles de la pantalla.

  • Max Luma: Máxima luminancia que la autoexposición intentará ajustar.

  • Velocidad: Velocidad a la que se corrige la luminancia. Cuanto más alto es el valor, más rápido se corrige.

Efectos de medio y post proceso

Un montón de gran cantidad de efectos en medio y postprocesamiento son soportados por el ambiente.

Reflejos del espacio de la pantalla (SSR)

Esta característica sólo está disponible cuando se utiliza el backend GLES3.

Aunque Godot apoya tres fuentes de datos de reflexión (Sky, ReflectionProbe y GIProbe), puede que no proporcionen suficientes detalles para todas las situaciones. Los escenarios en los que los reflejos del espacio de pantalla tienen más sentido son cuando los objetos están en contacto entre sí (objeto sobre el suelo, sobre una mesa, flotando en el agua, etc.).

../../_images/environment_ssr.png

La otra ventaja (aunque sólo sea mínima), es que funciona en tiempo real (mientras que los otros tipos de reflejos están precalculados). Esto puede utilizarse para hacer que los personajes, los coches, etc. se reflejen en las superficies circundantes cuando se mueven.

Se dispone de unos pocos parámetros controlados por el usuario para ajustar mejor la técnica:

  • Max Steps determina la longitud del reflejo. Cuanto más grande sea este número, más costoso es calcularlo.

  • Fade In permite ajustar la curva de desvanecimiento, lo que es útil para hacer el área de contacto más suave.

  • Fundido de salida permite ajustar la curva de fundido de salida, de modo que el límite de paso se fundirá suavemente.

  • Tolerancia a la profundidad puede ser usada para la tolerancia a los rayos de pantalla en los huecos. Cuanto mayor sea el valor, más huecos serán ignorados.

  • Rugosidad aplicará un desenfoque de espacio de pantalla para aproximar la rugosidad en los objetos con esta característica material.

Ten en cuenta que las reflexiones en el espacio de pantalla solo funcionan para reflejar geometría opaca. Los materiales transparentes no se reflejarán, ya que no escriben en el búfer de profundidad. Esto también se aplica a los shaders que utilizan SCREEN_TEXTURE o DEPTH_TEXTURE.

Oclusión ambiental en el espacio de la pantalla (SSAO)

Esta característica sólo está disponible cuando se utiliza el backend GLES3.

Como se mencionó en la sección Ambiente, las zonas a las que no llega la luz de los nodos de luz (ya sea porque está fuera del radio o en sombra) se iluminan con luz ambiental. Godot puede simular esto usando la GIProbe, la ReflectionProbe, el Cielo, o un color ambiental constante. El problema, sin embargo, es que todos los métodos propuestos anteriormente actúan más en una escala mayor (grandes regiones) que en el nivel de geometría menor.

El color ambiental constante y el cielo son los mismos en todas partes, mientras que las sondas GI y de reflexión tienen más detalles locales, pero no lo suficiente como para simular situaciones en las que la luz no es capaz de llenar el interior de características huecas o cóncavas.

Esto puede ser simulado con la Oclusión Ambiental del Espacio de Pantalla. Como puedes ver en la imagen de abajo, su propósito es asegurarse de que las áreas cóncavas son más oscuras, simulando un camino más estrecho para que la luz entre:

../../_images/environment_ssao.png

Es un error común habilitar este efecto, encender una luz y no ser capaz de apreciarlo. Esto se debe a que el SSAO sólo actúa con la luz ambiental, no con la luz directa.

Por eso, en la imagen de arriba, el efecto es menos perceptible bajo la luz directa (a la izquierda). Si quieres forzar a SSAO a trabajar también con luz directa, usa el parámetro Afecto de la luz (aunque esto no es correcto, a algunos artistas les gusta cómo se ve).

El SSAO se ve mejor cuando se combina con una fuente real de luz indirecta, como el GIProbe:

../../_images/environment_ssao2.png

Es posible ajustar el SSAO con varios parámetros:

../../_images/environment_ssao_parameters.png
  • Radio/Intensidad: Para controlar el radio o la intensidad de la oclusión, se dispone de estos dos parámetros. El radio está en unidades mundiales (métricas).

  • Radio2/Intensidad2: Se puede utilizar un radio/intensidad secundario. Combinar un AO de radio grande y uno pequeño generalmente funciona bien.

  • Bias: Esto puede ser ajustado para resolver la auto-oclusión, aunque el predeterminado generalmente funciona bastante bien.

  • Light Affect: SSAO sólo afecta a la luz ambiental, pero aumentar este deslizador puede hacer que también afecte a la luz directa. Algunos artistas prefieren este efecto.

  • Ao Channel Affect: Si se utiliza un valor de cero, sólo se utilizará la textura AO del material para la oclusión ambiental; no se aplicará la SSAO. Los valores superiores a 0 multiplican la textura AO por el efecto SSAO en diferentes grados. Esto no afecta a los materiales sin una textura AO.

  • Calidad: Dependiendo de la calidad, SSAO tomará más muestras sobre una esfera por cada píxel. La alta calidad sólo funciona bien en las GPU modernas.

  • Desenfoque: Tipo de núcleo borroso utilizado. El núcleo 1x1 es un desenfoque simple que conserva mejor los detalles locales, pero no es tan eficiente (generalmente funciona mejor con el ajuste de alta calidad de arriba), mientras que el 3x3 suavizará mejor la imagen (con un poco de efecto de vacilación), pero no conserva los detalles locales también.

  • Edge Sharpness: Esto puede ser usado para preservar la nitidez de los bordes (evita áreas sin AO en los pliegues).

Profundidad de campo / Borrón lejano

Este efecto simula la distancia focal de las cámaras de alta gama. Desenfoca los objetos detrás de un rango determinado. Tiene una Distancia inicial con una región de Transición (en unidades mundiales):

../../_images/environment_dof_far.png

El parámetro Cantidad controla la cantidad de borrosidad. Para desenfoques más grandes, puede ser necesario ajustar el parámetro Calidad para evitar los artefactos.

Profundidad de campo / Casi borrosa

Este efecto simula la distancia focal de las cámaras de alta gama. Desenfoca los objetos cercanos a la cámara (actúa en la dirección opuesta como desenfoque lejano). Tiene una Distancia inicial con una región de Transición (en unidades mundiales):

../../_images/environment_dof_near.png

El parámetro Cantidad controla la cantidad de borrosidad. Para desenfoques más grandes, puede ser necesario ajustar el parámetro Calidad para evitar los artefactos.

Es común utilizar ambos desenfoques juntos para enfocar la atención del espectador en un objeto determinado:

../../_images/environment_mixed_blur.png

Brillo

En la fotografía y el cine, cuando la cantidad de luz excede el máximo soportado por el medio (ya sea analógico o digital), generalmente se desangra hacia fuera a las regiones más oscuras de la imagen. Esto se simula en Godot con el efecto Brillo.

../../_images/environment_glow1.png

Por defecto, aunque el efecto esté activado, será débil o invisible. Una de las dos condiciones necesarias para que se muestre realmente:

    1. La luz en un píxel sobrepasa el HDR Threshold (donde 0 es que toda la luz lo sobrepasa, y 1.0 es que la luz sobrepasa el valor White del mapa de tonos). Normalmente, se espera que este valor esté en 1.0, pero puede ser reducido para permitir que más luz se desplace. También hay un parámetro extra, Escala HDR, que permite escalar (haciendo más brillante u oscuro) la luz que supera el umbral.

../../_images/environment_glow_threshold.png
    1. El efecto Bloom tiene un valor fijado en más de 0. A medida que aumenta, envía toda la pantalla al procesador de brillo en cantidades más altas.

../../_images/environment_glow_bloom.png

Ambos provocarán que la luz empiece a emitirse en las zonas más brillantes.

Una vez que el resplandor es visible, puede ser controlado con algunos parámetros adicionales:

  • Intensidad es una escala general para el efecto, puede hacerse más fuerte o más débil (0.0 lo elimina).

  • Fuerza es la fuerza con la que se procesa el núcleo del filtro gaussiano. Valores mayores hacen que el filtro se sature y se expanda hacia afuera. En general, no es necesario cambiar esto, ya que el tamaño puede ser ajustado más eficientemente con los Niveles.

El Modo de mezcla del efecto también puede ser cambiado:

  • Aditivo es el más fuerte, ya que sólo añade el efecto de brillo sobre la imagen sin mezclar. En general, es demasiado fuerte para ser usado, pero puede verse bien con Bloom de baja intensidad (produce un efecto de sueño).

  • Pantalla asegura que el brillo nunca ilumine más que él mismo y funciona muy bien como un todo.

  • LuzSuave es el predeterminado y el más débil, produciendo sólo una sutil alteración del color alrededor de los objetos. Este modo funciona mejor en escenas oscuras.

  • Reemplazar puede ser usado para difuminar toda la pantalla o depurar el efecto. Sólo muestra el efecto de brillo sin la imagen de abajo.

Para cambiar el tamaño y la forma del efecto de brillo, Godot proporciona Niveles. Los niveles más pequeños son fuertes brillos que aparecen alrededor de los objetos, mientras que los niveles grandes son brillos nebulosos que cubren toda la pantalla:

../../_images/environment_glow_layers.png

La verdadera fuerza de este sistema, sin embargo, es combinar los niveles para crear patrones de brillo más interesantes:

../../_images/environment_glow_layers2.png

Finalmente, como las capas más altas se crean estirando pequeñas imágenes borrosas, es posible que se vea algún bloqueo. Habilitar la Escalada Bicúbica se deshace de ella, con un coste de rendimiento mínimo. Nota que esto es efectivo sólo cuando se utiliza el backend GLES3.

../../_images/environment_glow_bicubic.png

Ajustes

Al final del procesamiento, Godot ofrece la posibilidad de hacer algunos ajustes de imagen estándar.

../../_images/environment_adjustments.png

La primera es poder cambiar el típico Brillo, Contraste y Saturación:

../../_images/environment_adjustments_bcs.png

La segunda es proporcionando un gradiente de corrección de color. Un gradiente regular de negro a blanco como el siguiente no producirá ningún efecto:

../../_images/environment_adjusments_default_gradient.png

Pero la creación de los personalizados permitirá mapear cada canal a un color diferente:

../../_images/environment_adjusments_custom_gradient.png