› Foros › Retro y descatalogado › Consolas clásicas
Sogun escribió:Dejo un vídeo de una demo técnica reciente creada por pekkavaa con libdragon y el microcódigo Tiny3D:
Sorprende el efecto bloom y la sobreexposición lumínica que le da a la demo un estilo artístico sacado de ICO o Shadow of the Colossus. La demo acaba con una muestra muy bestia de algo similar a normal-mapping que casi parece CGI.
¿Alguien podría explicar técnicamente cómo lo hace? Hay algunos mensajes del autor en los comentarios del vídeo, pero estoy espeso y no me entero.
I've been working on a phased RDP/VI interlaced rendering to make sure that the hardware doesn't render any more pixels than necessary at high resolutions.
Since the N64 is mostly fill-rate limited, especially at high-res, its really important to minimize the amount of pixels drawn as it directly corellates to the fps in-game. With that done, the game runs as optimally as it is theoretically even possible. And it pretty much maximizes the N64's capabilities of resolution, framerate, audio and 3d visuals.
In the 1.0 release the game is rendering internally at a 480p but the TV output is still 480i, so I made use of the RDP's special interlaced mode for the optimization. But to actually make proper use of it you'd need a tight phased frame schedule between the RDP and VI to make sure that the frames drawn are latest and complete. Moreover since the AA/dedithering algorithms use adjasent lines which may still be rendering by the RDP, the phased schedule needs to account for that and only use fully drawn framebuffers for the VI.
The expected performance is about 50-60 FPS on fastest setting, 45-50 FPS on normal and 40-45 FPS on nicest setting in the middle of gameplay
explicame este articulo para gente profana de la programación en alto nivel: https://30fps.net/pages/palette-lighting-tricks-n64/
¡Claro! Imagina que tienes una caja de lápices de colores (esa es la "paleta") y con ellos dibujas una imagen en tu Nintendo 64.
Normalmente, para que un objeto en un juego 3D parezca iluminado, la consola tiene que hacer muchos cálculos complicados para cada pequeño punto (píxel) de ese objeto. Esto consume muchos recursos.
El truco del que habla el artículo es una forma inteligente de simular esa iluminación sin tanto trabajo. En lugar de cambiar cada punto del dibujo, lo que se hace es cambiar los colores de los lápices directamente.
Así funciona:
Preparación: Los desarrolladores crean el objeto 3D y le aplican una textura (la imagen que lo cubre). Esta textura usa colores de una paleta específica. También crean un "mapa de normales", que es como una guía que le dice a la consola cómo la luz debería rebotar en cada parte del objeto.
El truco: En lugar de que la consola calcule la iluminación para cada píxel del objeto en tiempo real, el programador hace estos cálculos de antemano en la CPU (el "cerebro" de la consola).
Actualizar la paleta: Basándose en esos cálculos, se crea una nueva paleta de colores ya "iluminada". Si un color era rojo brillante, y la luz viene de un lado, en la nueva paleta ese rojo se vuelve un poco más oscuro en el lado opuesto y más brillante en el lado iluminado.
Aplicar: La consola simplemente usa la textura original, pero con esta nueva paleta de colores "iluminados". El resultado es que el objeto parece tener luces y sombras realistas, ¡pero la consola se ahorra un montón de trabajo!
En resumen: En vez de pintar la luz directamente sobre el dibujo punto por punto, cambias los lápices de colores por unos que ya tienen el efecto de luz incorporado. Esto hace que los gráficos se vean bien y que el juego funcione más rápido en la Nintendo 64, que no era tan potente como las consolas modernas. 🎮✨
Fuentes
hay algun contra en esta tecnica?
Sí, aunque esta técnica es ingeniosa y eficiente para la Nintendo 64, tiene algunas desventajas y limitaciones:
Discontinuidades en el sombreado: Como la iluminación se aplica a la paleta de colores en lugar de a cada píxel individualmente, a veces se pueden notar "saltos" o cambios bruscos en la iluminación, especialmente en superficies curvas o con degradados suaves.
Solo texturas en escala de grises (inicialmente): El artículo menciona que la técnica, en su implementación base, funciona mejor o está diseñada para texturas que originalmente no tienen mucho color (escala de grises), ya que la iluminación "añade" el color. Aunque luego se refina, esto puede ser una limitación.
No hay luces de punto (Point Lights) efectivas: Las luces que emanan de un punto específico en el espacio (como una bombilla o una antorcha) son difíciles o imposibles de calcular correctamente con esta técnica. Está más pensada para luces direccionales (como el sol) o ambientales.
Requiere preprocesamiento elaborado: Crear las texturas, los mapas de normales y configurar todo para que funcione con la paleta requiere un trabajo de preparación considerable por parte de los desarrolladores antes de que se pueda usar en el juego.
Dificultad con las sombras: Representar sombras complejas o dinámicas solo con la paleta de colores es muy complicado. Las sombras suelen necesitar otros métodos.
Iluminación especular limitada: Conseguir brillos especulares (como el reflejo de la luz en un metal) de forma precisa y dinámica es muy difícil, ya que la técnica se centra en cambiar los colores base de la paleta.
Interpolación de la iluminación menos suave: Como los cálculos de cómo la luz interactúa con la superficie (espacios tangentes) son constantes por polígono, la iluminación no se interpola (suaviza) tan bien entre las caras de un objeto 3D como con técnicas más avanzadas.
En esencia, es un truco muy bueno para ahorrar recursos en una consola con limitaciones como la N64, permitiendo efectos visuales que de otra manera serían demasiado costosos. Pero estos ahorros vienen con compromisos en la fidelidad y flexibilidad de la iluminación y los efectos visuales.
Flash-Original escribió:La scene es impresionante una pena no saber ingles para leerlo pero tiene merito todo lo que sacan ultimameente de la 64, quizas lo pruebe con mi sobrino
¿la IA que tiene es minimamente competitiva?
He estado trabajando en una representación entrelazada de RDP/VI escalonada para asegurarme de que el hardware no rendere más píxeles de lo necesario en altas resoluciones.
Dado que el N64 es mayormente limitado de tasa de llenado, especialmente en alta resolución, es realmente importante para minimizar la cantidad de píxeles dibujados como directamente corellas a las fps en el juego. Con eso hecho, el juego corre de la manera más óptima posible teóricamente. Y maximiza prácticamente las capacidades de resolución, framerate, audio y visuales 3d de la N64.
En el lanzamiento 1.0 el juego está renderizado internamente en un 480p, pero la salida de TV todavía es de 480i, así que hice uso del modo especial entrelazado del RDP para la optimización. Pero para hacer un uso adecuado de ella se necesita un horario de marco escalonado ajustado entre el RDP y VI para asegurarse de que los marcos dibujados son últimos y completos. Además, dado que los algoritmos AA/dediferenciación utilizan líneas adjasent que todavía pueden ser renderizadas por el PDR, el calendario escalonado debe explicar eso y sólo utilizar framebuffers completamente dibujados para el VI.
El rendimiento esperado es de alrededor de 50-60 FPS en el entorno más rápido, 45-50 FPS en lo normal y 40-45 FPS en el entorno más bonito en el medio de la jugabilidad
N64 YA está un paso mas cerca de dreamcast
color combiner para un efecto chulísimo de iluminación (oclusión ambiental)
cpu sobrada para lo que quieras
Pero... ¿como va a ser el virtua fighter 2 de saturn entrelazado y a 60fps?, ¿que me he perdido?.
Falkiño escribió:@Sexy MotherFucker No entiendo que te enfade que a @Señor Ventura le guste Nintendo. Habla peor de tí que de él que te moleste algo así.
pero la ultra 64, también project reality... esa es patrimonio de todos los que ojeábamos las revistas, y presenciamos el cruis'n usa y killer instinct arcade en rigurosa primicia
Sexy MotherFucker escribió:@7Force dinos la configuración que usabas!![]()
¿CRT estándar a 480i + RGB o S-Video?
Señor Ventura escribió:Es muy sencillo. Os estais tomando demasiado en serio afirmaciones que no es posible ser entendidas con literalidad.
Cada uno tiene su forma de ver las cosas, y en ocasiones ciertas afirmaciones son figurativas. Figurativas. Para mi, ver las demos que están saliendo en la n64 lo asocio con cosas que he visto en dreamcast... sobra decir que en magnitudes incomparables, pero, ¿que esos son efectos nativos de la máquina?, pues también.
Dreamcast hace juegos de esa forma, y n64 desvía todos sus recursos para enseñar un fugaz ejemplo de forma reducida, y aún así no al mismo nivel... ya lo sabemos.
Un ejemplo rápido, con compresión de texturas en 16MB de ram, la dreamcast no puede superar de forma clara los 40MB que ocupa el texturizado de la demo de la megatextura (que queden libres entre 6 y 10MB para texturas con una compresión 1:4 o 1:6, desconozco como es). Eso si, podemos contar con que lo haga a 60fps, y mucha mas geometría... pero las texturas... una n64, ojo. Y eso no es todo, ahora pasa de una habitación a otra, estaríamos comparando tiempos de carga con transiciones mas o menos fluídas.
Mini punto para la n64. Para un sistema inferior, eso es mucho.
edit: También es cierto que no debería necesitarse practicamente ningún mip mapping en dreamcast, resultando en un menor malgasto de memoria para una mayor calidad de texturas.
Comillas: Usar comillas puede indicar que una palabra o frase se está utilizando en un sentido especial o no literal. Por ejemplo: Esa noticia fue una "bomba". Sin embargo, el abuso de comillas puede recargar el texto.
Cursiva: Similar a las comillas, la cursiva puede resaltar una palabra o frase, sugiriendo un significado particular. Ejemplo: Su explicación fue cristalina.
Aclaraciones Parentéticas o Guiones: Puedes añadir una breve aclaración.
Ejemplo: "Se le encendió la bombilla (es decir, tuvo una idea brillante) y resolvió el problema."
Ejemplo: "Llovían chuzos de punta —una forma de decir que llovía torrencialmente—."
Expresiones Introductorias: Utilizar frases que alerten sobre el uso de lenguaje figurado.
Ejemplos: "Por así decirlo...", "En sentido figurado...", "Como si dijéramos...", "Metafóricamente hablando...", "Dicho de otro modo...", "Valga la expresión...".
Preguntas Retóricas o Exclamaciones: A veces, la propia estructura de la frase puede sugerir que no se busca una interpretación literal.
Sexy MotherFucker escribió:Eso sí pedazo mod RGB se gasta el pavo. En la Nintendo 64 de mi hermana no se veía así de cristalino ni de Blas
Sexy MotherFucker escribió:@EMaDeLoC se ve de la hostia.
Aunque yo seguiré fiel a mi S-Video cuando vuelva a tener una N64 de nuevo; la FIEL representación de lo máximo que podías conseguir en la consola a no ser que fueras japonés o francés.
Señor Ventura escribió:Superpadland, es que la demo de la mega textura no hubiera tenido que ser posible dada su generación... o las que involucran al color combiner, como bastantes otras cosas... visualmente hablando la n64 está a los pies de la montaña next gen, pero está junto a la montaña, no lejos. No hace falta compensar ninguna aprosodia, ni mucho menos explicarlo para observar eso, porque se ve a simple vista lo que son todas estas cosas.
Decir que esto recuerda al doom 3 de la xbox debe entenderse en su contexto:
Que por cierto, he notado que el cambio de iluminación no sucede mientras se mueve la cámara... aunque en la demo del castillo el bump mapping + oclusión ambiental si sucede mientras hay un desplazamiento... aunque no de la cámara...
¿Son coincidencias?.
P.D: En vcdecide estarán complacidos de enseñar que eso no es de nintendo 64 xD
dirtymagic escribió:@SuperPadLand
La Demo que a puesto es de un pseudo Bumpmapping.
A mí la demo de la mega textura, me parece que no tiene más recorrido que el de esa demo, yo al menos no tiraría por esa vía ni para hacer un juego rollo Myst, limita mucho la creación de un juego, la forma que tiene de trabajar.
Mi experiencia es que me parece más beneficioso para la scene, que se haya desarrollado unas texturas que se llaman IHQ y SHQ, que ambas permiten texturas de 64x64 ( o otras relaciones de aspecto con la misma densidad de píxeles) a 16 bits de color y un 1 bit de trasparencia, la primera incluso permitiendo Trilinear mipmapping.
Básicamente es el mismo concepto que ya se conocía de mezclar con el color combiner una textura de 32x32 a 16 bits y otra de 64x64 en 4 bits de escala de intensidad, que necesitaba 2 cycles para mezclarlas y dibujarlas, lo que han conseguido con esto es hacer lo mismo usando sólo el modo de 1 cycle del color combiner.
Los contras es que sólo se puede usar en homebrew nuevo que use Libdragon ya que usa MKsprite para cargar este tipo de texturas, se puede ver su uso en el juego Driver Strikers 64, junto al efecto Bloom y en 480i.
Salud.
Señor Ventura escribió:Iluminar una textura por vértice se lleva haciendo desde antes de la playstation, la diferencia es que la n64 parece controlar la dirección en toda la textura, de forma que no solo se simula una iluminación global, sino que puedes proyectar la sombra de lo que parece ser una columna, o detalles individyales como los socavones, de forma independiente.
Es bastante mas complejo lo que se ve en el gif, de hecho playstation creo que no tiene color combiner, la forma de llegar a ambos resultados es incluso también diferente.
Pero me sigue llamando la atención que suceda con la cámara estática, pero que cuando se produce un movimiento la iluminación ya deja de ser dinámica... igual es solo coincidencia.