Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
LightmapGI
Hereda: VisualInstance3D < Node3D < Node < Object
Calcula y almacena lightmaps procesados para una iluminación global rápida.
Descripción
El nodo LightmapGI se utiliza para calcular y almacenar lightmaps horneados. Los lightmaps se utilizan para proporcionar iluminación indirecta de alta calidad con muy poca fuga de luz. LightmapGI también puede proporcionar reflejos rudimentarios utilizando armónicos esféricos si directional está habilitado. Los objetos dinámicos pueden recibir iluminación indirecta gracias a las sondas de luz, que pueden colocarse automáticamente configurando generate_probes_subdiv a un valor diferente de GENERATE_PROBES_DISABLED. Se pueden añadir sondas de lightmap adicionales creando nodos LightmapProbe. La desventaja es que los lightmaps son completamente estáticos y no se pueden hornear en un proyecto exportado. Hornear un nodo LightmapGI también es más lento en comparación con VoxelGI.
Generación procedural: La funcionalidad de baking de lightmaps solo está disponible en el editor. Esto significa que LightmapGI no es adecuado para niveles generados proceduralmente o construidos por el usuario. Para niveles generados proceduralmente o construidos por el usuario, usa VoxelGI o SDFGI en su lugar (véase Environment.sdfgi_enabled).
Rendimiento: LightmapGI proporciona el mejor rendimiento posible en tiempo de ejecución para la iluminación global. Es adecuado para hardware de gama baja, incluyendo gráficos integrados y dispositivos móviles.
Nota: Debido a cómo funcionan los lightmaps, la mayoría de las propiedades solo tienen un efecto visible una vez que los lightmaps se hornean de nuevo.
Nota: El baking de lightmaps en CSGShape3Ds y PrimitiveMeshes no es compatible, ya que estos no pueden almacenar los datos UV2 necesarios para el baking.
Nota: Si no hay lightmappers personalizados instalados, LightmapGI solo puede hornearse desde dispositivos que soporten los renderizadores Forward+ o Mobile.
Nota: El nodo LightmapGI solo hornea datos de luz para los nodos hijos de su padre. Los nodos más arriba en la jerarquía de la escena no se hornearán.
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Enumeraciones
enum BakeQuality: 🔗
BakeQuality BAKE_QUALITY_LOW = 0
Calidad baja de procesado (tiempos de procesado más rápidos). La calidad de este ajuste preestablecido se puede ajustar cambiando ProjectSettings.rendering/lightmapping/bake_quality/low_quality_ray_count y ProjectSettings.rendering/lightmapping/bake_quality/low_quality_probe_ray_count.
BakeQuality BAKE_QUALITY_MEDIUM = 1
Calidad media de procesado (tiempos de procesado rápidos). La calidad de este ajuste preestablecido se puede ajustar cambiando ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_ray_count y ProjectSettings.rendering/lightmapping/bake_quality/medium_quality_probe_ray_count.
BakeQuality BAKE_QUALITY_HIGH = 2
Calidad alta de procesado (tiempos de procesado lentos). La calidad de este preajuste se puede ajustar cambiando ProjectSettings.rendering/lightmapping/bake_quality/high_quality_ray_count y ProjectSettings.rendering/lightmapping/bake_quality/high_quality_probe_ray_count.
BakeQuality BAKE_QUALITY_ULTRA = 3
Calidad más alta de procesado (tiempos de procesado más lentos). La calidad de este preajuste se puede ajustar cambiando ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_ray_count y ProjectSettings.rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count.
enum GenerateProbes: 🔗
GenerateProbes GENERATE_PROBES_DISABLED = 0
No generar sondas de lightmaps para iluminar objetos dinámicos.
GenerateProbes GENERATE_PROBES_SUBDIV_4 = 1
Nivel más bajo de subdivisión (tiempos de procesado más rápidos, tamaños de archivo más pequeños).
GenerateProbes GENERATE_PROBES_SUBDIV_8 = 2
Nivel bajo de subdivisión (tiempos de procesado rápidos, tamaños de archivo pequeños).
GenerateProbes GENERATE_PROBES_SUBDIV_16 = 3
Nivel alto de subdivisión (tiempos de procesado lentos, tamaños de archivo grandes).
GenerateProbes GENERATE_PROBES_SUBDIV_32 = 4
Nivel más alto de subdivisión (tiempos de procesado más lentos, tamaños de archivo más grandes).
enum BakeError: 🔗
BakeError BAKE_ERROR_OK = 0
El procesado del lightmap se realizó correctamente.
BakeError BAKE_ERROR_NO_SCENE_ROOT = 1
El procesado del lightmap falló porque no se pudo acceder al nodo raíz de la escena editada.
BakeError BAKE_ERROR_FOREIGN_DATA = 2
El procesado del lightmap falló porque el recurso de datos del lightmap está integrado en un recurso externo.
BakeError BAKE_ERROR_NO_LIGHTMAPPER = 3
El procesado del lightmap falló porque no hay un mapeador de luz disponible en esta compilación de Godot.
BakeError BAKE_ERROR_NO_SAVE_PATH = 4
El procesado del lightmap falló porque la ruta de guardado de LightmapGIData no está configurada en el recurso.
BakeError BAKE_ERROR_NO_MESHES = 5
El procesado del lightmap falló porque no hay mallas cuyo GeometryInstance3D.gi_mode sea GeometryInstance3D.GI_MODE_STATIC y con un mapeo UV2 válido en la escena actual. Es posible que deba seleccionar escenas 3D en el dock de importación y cambiar su modo de iluminación global en consecuencia.
BakeError BAKE_ERROR_MESHES_INVALID = 6
El procesado del lightmap falló porque el mapeador de luz no pudo analizar algunas de las mallas marcadas como estáticas para el baking.
BakeError BAKE_ERROR_CANT_CREATE_IMAGE = 7
El procesado del lightmap falló porque la imagen resultante no se pudo guardar o importar en Godot después de guardarla.
BakeError BAKE_ERROR_USER_ABORTED = 8
El usuario abortó la operación de procesado del lightmap (normalmente haciendo clic en el botón Cancelar en el diálogo de progreso).
BakeError BAKE_ERROR_TEXTURE_SIZE_TOO_SMALL = 9
El procesado del lightmap falló porque el tamaño máximo de la textura es demasiado pequeño para que quepan algunas de las mallas marcadas para el procesado.
BakeError BAKE_ERROR_LIGHTMAP_TOO_SMALL = 10
El procesado del lightmap falló porque el lightmap es demasiado pequeño.
BakeError BAKE_ERROR_ATLAS_TOO_SMALL = 11
El procesado del lightmap falló porque el lightmap no pudo caber en un atlas.
enum EnvironmentMode: 🔗
EnvironmentMode ENVIRONMENT_MODE_DISABLED = 0
Ignorar la iluminación del entorno al procesar lightmaps.
EnvironmentMode ENVIRONMENT_MODE_SCENE = 1
Usa la iluminación ambiental de la escena al procesar lightmaps.
Nota: Si procesas lightmaps en una escena sin un nodo WorldEnvironment, esto actuará como ENVIRONMENT_MODE_DISABLED. El cielo y el sol de la previsualización del editor no son tomados en cuenta por LightmapGI al procesar lightmaps.
EnvironmentMode ENVIRONMENT_MODE_CUSTOM_SKY = 2
Utiliza environment_custom_sky como fuente de iluminación ambiental al procesar lightmaps.
EnvironmentMode ENVIRONMENT_MODE_CUSTOM_COLOR = 3
Utiliza environment_custom_color multiplicado por environment_custom_energy como fuente constante de iluminación ambiental al procesar lightmaps.
Descripciones de Propiedades
El sesgo que se usará al calcular las sombras. Aumentar bias puede corregir el acné de sombra en el lightmap procesado resultante, pero puede introducir el efecto de peter-panning (sombras que no se conectan con sus emisores). Las sombras en tiempo real de Light3D no se ven afectadas por esta propiedad bias.
float bounce_indirect_energy = 1.0 🔗
El multiplicador de energía para cada rebote. Los valores más altos harán que la iluminación indirecta sea más brillante. Un valor de 1.0 representa un comportamiento físicamente preciso, pero se pueden usar valores más altos para hacer que la iluminación indirecta se propague de manera más visible cuando se usa un número bajo de rebotes. Esto se puede usar para acelerar los tiempos de procesado al disminuir el número de bounces y luego aumentar bounce_indirect_energy.
Nota: bounce_indirect_energy solo tiene efecto si bounces se establece en un valor mayor o igual a 1.
Número de rebotes de luz que se tienen en cuenta durante el baking. Los valores más altos dan como resultado una iluminación más brillante y realista, a costa de tiempos de baking más largos. Si se establece en 0, solo se procesa la iluminación del entorno, la luz directa y la iluminación emisiva.
CameraAttributes camera_attributes 🔗
void set_camera_attributes(value: CameraAttributes)
CameraAttributes get_camera_attributes()
El recurso CameraAttributes que especifica los niveles de exposición para procesar. La exposición automática y las propiedades de no exposición se ignorarán. La configuración de exposición debe utilizarse para reducir el rango dinámico presente durante el baking. Si la exposición es demasiado alta, el LightmapGI tendrá artefactos de bandas o puede tener artefactos de sobreexposición.
La distancia en píxeles desde la que muestrea el denoiser. Los valores más bajos conservan más detalles, pero pueden dar resultados irregulares si la calidad del lightmap no es lo suficientemente alta. Solo es efectivo si use_denoiser es true y ProjectSettings.rendering/lightmapping/denoising/denoiser está establecido en JNLM.
float denoiser_strength = 0.1 🔗
La fuerza del paso de eliminación de ruido aplicado a los lightmaps generados. Solo es efectivo si use_denoiser es true y ProjectSettings.rendering/lightmapping/denoising/denoiser está establecido en JNLM.
Si es true, procesa lightmaps para contener información direccional como armónicos esféricos. Esto resulta en una apariencia de iluminación más realista, especialmente con materiales con mapeado normal y para luces que tienen su luz directa procesada (Light3D.light_bake_mode establecido en Light3D.BAKE_STATIC y con Light3D.editor_only establecido en false). La información direccional también se utiliza para proporcionar reflejos rugosos para objetos estáticos y dinámicos. Esto tiene un pequeño coste de rendimiento en tiempo de ejecución, ya que el sombreador tiene que realizar más trabajo para interpretar la información de dirección del lightmap. Los lightmaps direccionales también tardan más en procesarse y resultan en archivos de mayor tamaño.
Nota: El nombre de la propiedad no tiene relación con DirectionalLight3D. directional funciona con todos los tipos de luz.
Color environment_custom_color = Color(1, 1, 1, 1) 🔗
El color que se utilizará para la iluminación del entorno. Solo es efectivo si environment_mode es ENVIRONMENT_MODE_CUSTOM_COLOR.
float environment_custom_energy = 1.0 🔗
El multiplicador de color que se utilizará para la iluminación del entorno. Solo es efectivo si environment_mode es ENVIRONMENT_MODE_CUSTOM_COLOR.
El cielo que se utilizará como fuente de iluminación del entorno. Solo es efectivo si environment_mode es ENVIRONMENT_MODE_CUSTOM_SKY.
EnvironmentMode environment_mode = 1 🔗
void set_environment_mode(value: EnvironmentMode)
EnvironmentMode get_environment_mode()
El modo de entorno que se utilizará al procesar lightmaps.
GenerateProbes generate_probes_subdiv = 2 🔗
void set_generate_probes(value: GenerateProbes)
GenerateProbes get_generate_probes()
El nivel de subdivisión que se utilizará al generar automáticamente LightmapProbes para la iluminación de objetos dinámicos. Los valores más altos dan como resultado una iluminación indirecta más precisa en los objetos dinámicos, a costa de tiempos de procesado más largos y archivos de mayor tamaño.
Nota: Los LightmapProbes generados automáticamente no son visibles como nodos en el dock del árbol de escenas y no se pueden modificar de esta manera después de generarlos.
Nota: Independientemente de generate_probes_subdiv, la iluminación directa en objetos dinámicos siempre se aplica utilizando nodos Light3D en tiempo real.
Si es true, ignora la iluminación del entorno al procesar lightmaps.
LightmapGIData light_data 🔗
void set_light_data(value: LightmapGIData)
LightmapGIData get_light_data()
El LightmapGIData asociado a este nodo LightmapGI. Este recurso se crea automáticamente después del procesado y no está destinado a ser creado manualmente.
int max_texture_size = 16384 🔗
El tamaño máximo de textura para el atlas de texturas generado. Los valores más altos darán como resultado la generación de menos divisiones, pero es posible que no funcionen en todo el hardware como resultado de las limitaciones de hardware en los tamaños de textura. Deja max_texture_size en su valor predeterminado de 16384 si no estás seguro.
BakeQuality quality = 1 🔗
void set_bake_quality(value: BakeQuality)
BakeQuality get_bake_quality()
El preajuste de calidad que se utilizará al procesar lightmaps. Esto afecta los tiempos de procesado, pero los tamaños de los archivos de salida siguen siendo prácticamente idénticos en todos los niveles de calidad.
Para acelerar aún más los tiempos de procesado, disminuye bounces, desactiva use_denoiser y/o disminuye texel_scale.
Para aumentar aún más la calidad, activa supersampling y/o aumenta texel_scale.
ShadowmaskMode shadowmask_mode = 0 🔗
void set_shadowmask_mode(value: ShadowmaskMode)
ShadowmaskMode get_shadowmask_mode()
Experimental: Esta propiedad podría ser modificada o eliminada en versiones futuras.
La política de máscara de sombras a utilizar para sombras direccionales en objetos estáticos que se procesan con esta instancia de LightmapGI.
El enmascaramiento de sombras permite a los nodos DirectionalLight3D proyectar sombras incluso fuera del rango definido por su propiedad DirectionalLight3D.directional_shadow_max_distance. Esto se logra procesando una textura que contiene un mapa de sombras para la luz direccional, y luego usando esta textura de acuerdo con el modo de máscara de sombras actual.
Nota: La textura de máscara de sombras solo se crea si shadowmask_mode no es LightmapGIData.SHADOWMASK_MODE_NONE. Para ver una diferencia, debes procesar los lightmaps nuevamente después de cambiar de LightmapGIData.SHADOWMASK_MODE_NONE a cualquier otro modo.
Si es true, los lightmaps se procesan con la escala de texel multiplicada por supersampling_factor y se submuestrean antes de guardar el lightmap (de modo que la densidad de texel efectiva es idéntica a tener el supermuestreo deshabilitado).
El supermuestreo proporciona una mayor calidad de lightmap con menos ruido, sombras más suaves y una mejor proyección de sombras de características a pequeña escala en los objetos. Sin embargo, puede resultar en tiempos de procesado y uso de memoria significativamente mayores al procesar lightmaps. El relleno se ajusta automáticamente para evitar aumentar la fuga de luz.
float supersampling_factor = 2.0 🔗
El factor por el cual se multiplica la densidad de texel para el supermuestreo. Para obtener mejores resultados, utiliza un valor entero. Aunque se permiten valores fraccionarios, estos pueden resultar en un aumento de la fuga de luz y un lightmap borroso.
Valores más altos pueden resultar en una mejor calidad, pero también aumentan los tiempos de baking y el uso de memoria durante el baking.
Véase supersampling para obtener más información.
Escala la densidad de téxeles del mapa de luz de todas las mallas para el procesamiento actual. Este es un multiplicador que se basa en el tamaño de téxel de mapa de luz existente definido en cada escena 3D importada, junto con el multiplicador de densidad por malla (diseñado para usarse cuando la misma malla se utiliza a diferentes escalas). Valores más bajos resultarán en tiempos de procesamiento más rápidos.
Por ejemplo, duplicar texel_scale duplica la resolución de la textura del mapa de luz para todos los objetos en cada eje, por lo que cuadriplicará el recuento de téxeles.
If true, uses a GPU-based denoising algorithm on the generated lightmap. This eliminates most noise within the generated lightmap at the cost of longer bake times. File sizes are generally not impacted significantly by the use of a denoiser, although lossless compression may do a better job at compressing a denoised image.
bool use_texture_for_bounces = true 🔗
Si es true, se generará una textura con la información de iluminación para acelerar la generación de iluminación indirecta a costa de cierta precisión. La geometría puede presentar artefactos de fugas de luz adicionales al usar lightmaps de baja resolución o UVs que estiran el lightmap significativamente a través de las superficies. Deja use_texture_for_bounces en su valor predeterminado de true si no estás seguro.
Nota: use_texture_for_bounces solo tiene efecto si bounces se establece en un valor mayor o igual a 1.