¡Eso es increíble, gracias! Una escena es simplemente otro tipo de archivo que puedes importar en el webiverso. Lo interesante es que es un tipo de archivo que puede importar otros tipos de archivos. Es una escena y la escena contiene otras URL. Además de las URL, como por ejemplo, la base de la calle, que creo que es este objeto aquí. Las cosas azules, también tienes las luces definidas para la escena. Básicamente, este es un contenido en línea que se traducirá en una URL de datos. Es lo mismo que si cargaras una URL de datos. Pero básicamente son todos estos diferentes activos en la escena.
Y así, al ser las escenas un concepto de primera clase, puedes tener dos escenas al mismo tiempo. Así que tengo un sistema aquí donde si te acercas al borde de donde debería estar la siguiente escena, en realidad se agregará y luego se mostrará una vista previa de la escena tomando una instantánea volumétrica en 3D de ella y luego mostrándola frente a ti. Y esto es solo una llamada de dibujo. No hay ningún impacto en el rendimiento porque toda esa escena está en pausa. Pero aún está ahí. Y ahora básicamente tenemos dos escenas en el mundo al mismo tiempo. Y cuando cruzamos el umbral, podemos cambiar mágicamente de una a la otra o cambiar, pero en realidad hay un error aquí. Esto debería haber mostrado la vista previa completa de toda la escena antes. Pero básicamente podemos caminar hacia adelante y hacia atrás y estas son solo diferentes escenas que tienen datos completamente diferentes y podrían tener salas multijugador completamente diferentes, por ejemplo. Entonces, si estoy aquí, puedo ir a casa de mi amigo y saludarlo. La operación más costosa que está ocurriendo ahora mismo es solo la malla del esqueleto, ¿verdad? Es solo el personaje en sí. Todo lo demás es más bien cargado dinámicamente. ¿Correcto? Así es. En realidad, todo se carga dinámicamente pero hay muchas oportunidades para optimizar aún más. Por ejemplo, probablemente reescribiremos nuestro sistema de avatares. Al menos la parte cinemática en WebAssembly. Ya estamos utilizando mucho WebAssembly, por cierto. Por ejemplo, esta generación procedural es un algoritmo de WebAssembly. La física también es de WebAssembly. Y probablemente también vamos a tomar el código de los huesos que es la única parte computacionalmente pesada de esta aplicación. El resto es solo multiplicación de matrices. Y probablemente lo escribamos en WebAssembly además de hacer que los personajes sean solo la versión de una sola llamada de dibujo lo que significa que hacemos un pase sin conexión para generar nuevamente la textura limpia para el personaje y luego la intercambiamos directamente por las 55 versiones de materiales. Y una vez que arreglemos la iluminación casi ni siquiera se nota la diferencia pero es 55 veces más rápido. En realidad, es más que eso. Es como 110 veces más rápido porque también hay un pase de profundidad secundario que hacemos para algunos efectos, como SSAO. Pero sí, esta es principalmente la única parte costosa de todo lo que estamos renderizando aquí. Todo lo demás son solo shaders básicos, son shaders de 3JS. Puede ser tan rápido como cualquier shader que puedas escribir.
Entonces, eventualmente, ¿vas a depender, más adelante en el proyecto, supongo, de algo en tiempo real, como en un motor real o algo más potente o vas a hacer más trucos de geometría, por así decirlo? ¿Puedes explicar a qué te refieres con trucos de geometría? Como, por ejemplo, puedes tener algunos bloqueadores en la luz para engañar el comportamiento con el entorno en lugar de hacerlo correctamente y ver dónde está la luz por sí sola y simplemente usar algo como Lumen, por ejemplo, y poder abordar ese problema solo con el motor real abierto, por ejemplo.
No, estamos experimentando con, básicamente, las mejores técnicas de shader que podemos implementar. En realidad, la mayoría de esta investigación ya se ha realizado y la mayor parte está en código abierto en alguna forma, ya sea GLSL u otro lenguaje. Como, es solo código abierto de Unity. De hecho, ya hemos implementado muchas de esas cosas. Como por ejemplo, para SSAO. Y luego hay muchas formas diferentes de hacer sombras, puedes hacer iluminación basada en voxels. Todo eso es algo con lo que estamos experimentando. En realidad, es una de mis cosas favoritas ver todos los algoritmos que son posibles y ver lo impresionante que se ve. Siempre me sorprenden los resultados, y luego todos dicen, como, oh, wow, ¿esto es Unreal o algo así? Bueno, yo digo, no, no es Unreal. No es Unreal, pero está utilizando la misma tecnología que Unreal, entonces, ¿hay alguna diferencia?
Y mi última pregunta, lo siento, no quiero quitar tiempo a los demás participantes, pero también tenía curiosidad. ¿Estás utilizando una tienda para mantener el estado en la aplicación en general? ¿O es solo una página, entonces simplemente, vale. Entonces estás utilizando algo como Redux o no sé, como- No es Redux.
Comments