Capacitación en tecnología de lanzamiento de rayos, parte 1

2D indie ... Proyectos 3D AAA ... ¿O algo intermedio?



Saludos a todos los lectores. Decidí resumir y traducir una maravillosa serie de artículos "Tutorial de lanzamiento de rayos para el desarrollo de juegos y otros propósitos" de F. Permadi sobre el estudio de la tecnología de lanzamiento de rayos.



imagen


Esta publicación aborda y combina los artículos originales ¿Qué es Ray-Casting y Ray-Casting vs Ray-Tracing para el desarrollo de juegos ?



Vale la pena señalar que en un esfuerzo por crear un motor pseudo-3D (sobre el cual también puedes escribir un artículo), estudié a fondo este tutorial. Espero pensar que esto me ayudó a encontrar las palabras más acertadas a la hora de traducir y también a no perder el significado de lo escrito.



Bueno ... ¡Empecemos!



¿Qué es la proyección de rayos?



Ray-casting (en lo sucesivo, casting) es una tecnología que convierte un conjunto limitado de datos (un mapa simplificado al máximo o un plano de planta) en una proyección 3D "proyectando rayos" desde el punto de vista sobre todo el campo de visión. Por ejemplo, la siguiente imagen muestra cómo el lanzamiento transforma algo 2D A en algo casi 3D B.



imagen


Ray-casting y ray-tracing



Al igual que la proyección de rayos, el trazado de rayos "define la parte visible de una superficie proyectando rayos de luz imaginarios desde el punto de vista hacia un objeto en la escena".



Las dos definiciones anteriores hacen que parezca que lanzar y rastrear son lo mismo. De hecho, algunos libros usan ambos términos indistintamente. Sin embargo, desde el punto de vista de los programadores de desarrollo de juegos, lanzar rayos debería considerarse un caso especial de implementación de rastreo.



Lanzando más rápido que rastreando. Esto es posible debido al hecho de que utiliza algunas restricciones geométricas para acelerar el proceso de renderizado. Por ejemplo, las paredes siempre son perpendiculares al suelo (esto se puede ver en juegos como Doom o Wolfenstein 3D). Si no fuera por tales restricciones, la tecnología de lanzamiento no habría sido posible.



Los siguientes párrafos proporcionan una comparación global de lanzamiento y rastreo. Lo principal que hay que recordar es que "lanzar utiliza menos rayos que trazar, debido a ciertas limitaciones geométricas". O si no, "lanzar es una implementación especializada del rastreo".



Principio



Lanzamiento : los rayos se lanzan y se mueven en grupos según algunas limitaciones geométricas. Por ejemplo, en una pantalla con una resolución de 320x200, el "generador de rayos" liberará solo 320 piezas (obtenemos este número de la consecuencia de que una pantalla con un ancho de 320 píxeles tiene 320 columnas verticales).



Trazo : cada rayo se calcula por separado, es decir, cada punto de la pantalla del monitor (normalmente un píxel) es trazado por uno de sus rayos. Por ejemplo, en una pantalla con una resolución de 320x200, necesitamos 64 mil (320 * 200 = 64000) rayos, que es 200 veces más lento en comparación con el lanzamiento.



Fórmula



Como regla general, al lanzar, se permiten errores en los cálculos. Al enrutar, todo debe ser lo más preciso posible.



Velocidad



Lanzar es mucho más rápido que rastrear y es adecuado para procesos en tiempo real. El rastreo no es adecuado de ninguna manera (a menos que tengamos un PC con una frecuencia de 500 GHz).



Calidad



Cuando se cae, obtenemos una imagen de calidad media / mala. Puede notar la división en elementos de bloque. Al trazar, la imagen es lo más realista posible, a veces incluso demasiado.



imagen


Escena de Wolfenstein 3D. Observe que la imagen está dividida en bloques rectangulares. Los objetos (armas) y los enemigos (perros) son simplemente mapas de bits transparentes que se escalan y dibujan sobre el fondo.



imagen


Una escena del juego 7th Guest. El resultado del renderizado es asombroso. Sin embargo, los movimientos del jugador están limitados a rutas previamente definidas (esto se debe al hecho de que el número de imágenes pre-renderizadas es limitado).



Mundo externo



Al lanzar, estamos limitados geométricamente y solo hay formas simples disponibles. Al trazar, se puede renderizar cualquier forma.



Memoria



Lanzamiento : las imágenes renderizadas no se guardan en el disco. Por lo general, solo el mapa de la escena en sí se almacena en el medio y las imágenes correspondientes se generan sobre la marcha.



Seguimiento : las imágenes renderizadas se guardan en el disco y se cargan desde allí cuando sea necesario. Actualmente, no existe tal pieza de hardware que pueda generar el resultado del trazado de rayos sobre la marcha.



Ejemplos de



Lanzamiento:



  • Wolfenstein 3D (software iD)
  • Lanzador de sombras (Cuervo)
  • Arena (Bethesda)
  • Doom (software iD)
  • Fuerzas oscuras (LucasArts)


Rastro:



  • Séptimo invitado (Trilobyte)
  • Camino crítico (Mechadeus)
  • 11a hora (trilobyte)
  • Myst (cian)
  • Cyberia (Xatrix)


Fin de la primera parte




All Articles