Ir al contenido

Bloom

Un hechizo mágico se descarga y la pantalla se ilumina brevemente en un blanco radiante. Una granada de luz detona y píxeles brillantes explotan hacia afuera en un baño de luz. El pop HDR de una explosión se derrama sobre todo lo que la rodea durante una fracción de segundo.

Eso es Bloom. Un efecto de post-procesado que toma los píxeles más brillantes de la imagen de tu cámara y los deja expandirse hacia sus vecinos más oscuros, produciendo un halo de resplandor. Animado a lo largo del tiempo, es así como vendes un momento de brillo intenso — un destello, una descarga, una recarga de poder.

Una instancia BloomEffect de Roblox, normalmente hija de Lighting.

Al igual que Blur, el BloomEffect no se mueve; se aplica a toda la imagen renderizada de la cámara independientemente de dónde estén los píxeles brillantes en la escena. Transform marca el BloomEffect como un emisor de Part-Icles y expone sus tres gráficas animadas.

Bloom no hace que todo sea más brillante. Solo afecta a los píxeles que superan un umbral de brillo. Eso es lo que controla Threshold — y es el único parámetro que decide qué partes de la escena contribuyen al bloom. Baja el Threshold y más de la escena comienza a brillar (cualquier píxel moderadamente brillante contribuye); súbelo y solo los píxeles más brillantes lo hacen.

Una vez que Bloom ha decidido qué píxeles califican, dos parámetros más moldean el aspecto. Intensity controla cuán fuertemente brillan esos píxeles; Size controla qué tan lejos se expande el resplandor desde cada píxel contribuyente.

Los tres interactúan. Un Threshold bajo + Intensity baja + Size pequeño produce un sutil resplandor pastel en gran parte de la escena. Un Threshold alto + Intensity alta + Size grande produce destellos localizados dramáticos solo de los objetos más brillantes. Diferentes combinaciones dan diferentes estéticas — bloom suave y onírico vs. destellos HDR llamativos.

Toda la superficie, agrupada por sección del panel.

Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
ModeEmissionModeenumEmitEmit (clones por emisión) o Animate (clon único, en bucle)
LoopAnimateLoopbooleanfalseSi el modo Animate repite el ciclo en bucle
EnabledEnabled (attribute)booleanfalseActivación/desactivación principal
RateRatenumber10Tasa de emisión por segundo (solo modo Emit)
LifetimeLifetimeNumberRange1Segundos que vive cada clon
Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
IntensityBloomIntensityNumberSequence0.4Gráfica de intensidad del resplandor
SizeBloomSizeNumberSequence24Gráfica del radio de expansión del resplandor, en píxeles
ThresholdBloomThresholdNumberSequence0.95Gráfica del corte de brillo — solo los píxeles por encima de este valor brillan
Etiqueta del panelAtributo de datosTipoPredeterminadoQué hace
Anim. StepsTotalKeyFramesnumber100Resolución de muestreo previo para las gráficas
LingerPartLifenumber0Segundos que el clon permanece después del Lifetime
Emit IntoEmitParentInstancenilDónde se empareja el clon — reemplaza Lighting

Una gráfica NumberSequence que controla cuán fuertemente brillan los píxeles brillantes. Valores más altos producen un resplandor más visible.

El BloomEffect.Intensity de Roblox no tiene límite superior — un valor de 5 es un bloom fuerte, 10 es abrumador, 20 satura la pantalla por completo. Para la mayoría de efectos de tipo destello, una gráfica que alcanza su pico en el rango 26 y decae de vuelta a 01 produce una explosión radiante limpia.

El atributo de datos es BloomIntensity para diferenciarlo del BloomEffect.Intensity nativo de Roblox.

Una gráfica NumberSequence para el radio de expansión del bloom, en píxeles. Valores más grandes producen un halo más amplio y suave alrededor de los píxeles brillantes; valores más pequeños producen un resplandor tenso y enfocado.

Un Size = 24 (el predeterminado típico de Roblox) produce una expansión moderada. Un Size = 8 produce un resplandor localizado y nítido. Un Size = 56 produce un baño difuso y amplio.

Para un efecto de “destello preciso”, un Size pequeño combinado con una Intensity alta produce una explosión llamativa y localizada. Para un efecto de “resplandor etéreo”, un Size mayor combinado con una Intensity moderada produce un halo más suave y onírico. Ambos son útiles en diferentes contextos.

Una gráfica NumberSequence para el corte de brillo. Los píxeles más brillantes que este valor contribuyen al bloom; los que están en o por debajo de él no lo hacen.

Roblox usa una escala de brillo normalizada — 1.0 corresponde aproximadamente a “completamente blanco en renderizado estándar,” y los valores por encima representan intensidades HDR (alto rango dinámico). Las partes con material Neon, superficies emisivas y superficies blancas suficientemente iluminadas superan rutinariamente 1.0 en el pipeline HDR de Roblox.

Un Threshold = 0.5 hace que la mayor parte de una escena iluminada por el sol brille (cualquier elemento moderadamente brillante califica). Un Threshold = 0.95 (el predeterminado) hace que solo brillen los píxeles casi blancos — partes Neon, destellos de explosión, destellos del sol. Un Threshold = 5.0 confina el bloom solo a los píxeles HDR más brillantes de la escena.

Para un efecto de “destello selectivo”, anima el Threshold hacia abajo durante el pico de la emisión y hacia arriba al final. La bajada del umbral permite momentáneamente que más píxeles entren en el bloom, produciendo un resplandor momentáneo en toda la escena. La subida del umbral restringe el bloom de vuelta a su línea base.

Bloom usa el mismo patrón de clon único que Blur — y por la misma razón. Múltiples BloomEffects en Lighting se componen en Roblox; sus valores de Intensity y Size se acumulan entre sí en un bloom final único, más brillante y más amplio. Ese es exactamente el problema a tasas altas en modo Emit: cada clon de BloomEffect de corta duración se suma al total en curso, el bloom se intensifica fotograma a fotograma, luego cae cuando los clones expiran. El resultado se lee como parpadeo o desbordamiento. Dos efectos conduciendo cada uno su propio emisor de Bloom uno encima del otro también distorsionan la intención.

Por eso cuando EmissionMode = "Animate":

  1. Se crea un duplicado de BloomEffect en Lighting (o EmitParent).
  2. Las tres gráficas se reproducen durante el Lifetime del duplicado.
  3. Con AnimateLoop = true, el ciclo se reinicia cuando termina.
  4. Las llamadas de re-emisión mientras el duplicado está activo se descartan silenciosamente — una segunda llamada Emit (del mismo emisor u otro pulso de emisión de otro efecto sobre la misma instancia) no tiene efecto hasta que el ciclo activo termina.
  5. El duplicado se destruye cuando su Lifetime termina (con AnimateLoop = false).

Esta es una protección a nivel de plugin, no una restricción del motor de Roblox. El único tipo de pantalla que el propio Roblox impone como singleton es Atmosphere — Bloom, Blur y ColorCorrection admiten múltiples instancias con sus valores compuestos.

Para el modo Emit, esta protección no está activa. Usa el modo Animate para cualquier Bloom que deba ejecutarse continuamente mientras esté habilitado.

Mismo rol que en Blur. El predeterminado es Lighting; reemplázalo por un contenedor personalizado si lo necesitas. Para Bloom, el duplicado debe ser hijo de Lighting para renderizarse — reemplazar Emit Into fuera de Lighting desactiva efectivamente el efecto.

Algunas peculiaridades específicas de Bloom.

Bloom amplifica los píxeles brillantes independientemente de su origen. Si tu escena ya tiene muchas partes Neon, UI brillante o superficies iluminadas con HDR, tu emisor de Bloom las afecta a todas, no solo al momento al que intentas llamar la atención. Audita el perfil de brillo existente de tu escena antes de crear un Bloom — lo que parece sutil en una escena de día puede ser abrumador en una escena oscura.

Bloom se compone con los efectos de Lighting existentes. Si tu Lighting ya contiene un BloomEffect (un bloom ambiental permanente establecido por el diseñador de iluminación de tu juego), un Bloom emitido se superpone encima de él. El resultado puede ser extremo sin pretenderlo. O bien desactiva el BloomEffect permanente durante la emisión, o diseña la gráfica emitida teniendo en cuenta la línea base existente.

Para resplandores localizados, prefiere un enfoque de emisor Part. Bloom es un post-procesado global; no puede distinguir entre “hacer brillar este objeto” y “hacer brillar toda la pantalla.” Un emisor Part con una gráfica Brightness alta y un material emisivo, o un PointLight con un Range fuerte, te proporciona un resplandor localizado con menos efectos colaterales que un emisor de Bloom.

Threshold no tiene piso en 0. Establecer Threshold en 0 no significa “sin bloom” — significa “todos los píxeles por encima de cero de brillo brillan,” que son la mayoría. Para desactivar el bloom, establece Intensity en 0, no Threshold.

ColorCorrection es el tercer tipo de emisor de post-procesado. Donde Blur tiene una gráfica y Bloom tiene tres, ColorCorrection tiene cuatro — Brightness, Contrast, Saturation y un Tint ColorSequence. El comportamiento de gráficas con signo (los valores negativos son válidos, a diferencia de la mayoría de las gráficas del plugin) merece mencionarse de antemano.