top of page

Luz en un mundo vóxel: ¿luces reales o flood fill?

Foto del escritor: Marcel Dütscher
Marcel Dütscher
27 jun
2 min de lectura

Un jugador coloca una lámpara en su base. ¿Qué pasa a nivel técnico? Esta pregunta inocente nos llevó a una decisión de fondo, y la respuesta es un buen ejemplo de que la solución «más moderna» no siempre es la mejor.


Opción A: luces reales de Unity. Cada bloque luminoso se convierte en una fuente de luz puntual y el motor lo calcula todo. Se ve genial, pero no escala. Un mundo vóxel puede tener cientos de bloques luminosos a la vista; tantas luces puntuales en tiempo real hacen sudar a cualquier GPU, y más aún en la versión para navegador.


Opción B: luz por flood fill (relleno por propagación). El clásico del género: la luz es un valor numérico por bloque que se propaga desde la fuente y disminuye a cada paso. Baratísimo y con todas las fuentes que quieras, pero el resultado se ve plano, porque la luz no tiene dirección. Una pared junto a la lámpara está igual de iluminada que el suelo bajo ella.


Nuestra elección: flood fill con dirección. Nos quedamos con el flood fill, pero le enseñamos a manejar la dirección: la luz sabe de qué lado viene, y las superficies se iluminan de forma distinta según eso. El resultado se hornea en la malla del chunk durante el mallado; en tiempo de ejecución no cuesta prácticamente nada, pero se ve mucho más tridimensional que la clásica luz de bloques.


Desde entonces aplicamos esta lección en todas partes: primero pregúntate cuál es de verdad el problema del género (aquí: muchísimas fuentes de luz, geometría estática) y luego elige la tecnología. Las luces reales resolvían un problema que no teníamos, y habrían creado uno que no podemos resolver.

Entradas recientes

Ver todo

Comentarios


Ya no es posible comentar esta entrada. Contacta al propietario del sitio para obtener más información.
bottom of page