¿Cuáles son los usos de la rasterización de software en los motores de juegos modernos?

9

Estoy tomando un curso de Computer Graphics este trimestre. Uno de nuestros proyectos de laboratorio es sobre rasterización de software.

Ahora estoy planeando la propuesta de proyecto y pensando en cómo hacerla útil para otras personas en el desarrollo de juegos contemporáneos.

Después de una breve búsqueda, aprendí una técnica llamada Software Occlusion Culling. Realiza rasterización de software en buffers de varias resoluciones. Y podemos consultar la oclusión utilizando los buffers z jerárquicos.

Mi pregunta : ¿Cuáles son los usos de la rasterización de software en los motores de juegos modernos además del Software Occlusion Culling?

TheBusyTypist
fuente

Respuestas:

4

Que yo sepa, el Software Occlusion Culling (que ya mencionó) es prácticamente lo único para lo que se seguiría utilizando un rasterizador de software. Procworld utiliza una técnica similar para mostrar sus enormes entornos de vóxel.

La mayoría de los otros métodos de eliminación como la eliminación del frustum sí funcionan en la CPU, pero, para seguir con el ejemplo, la prueba contra el frustum se realiza a nivel de objeto, probablemente con un cuadro delimitador alineado con el eje (AABB). Esta prueba de intersección es mucho más simple que usar un rasterizador de software completo.

En ciertos casos, la rasterización de software podría usarse para seleccionar objetos con el mouse. En los motores de juego, esto a menudo se resuelve usando un motor de física y colisión de triángulo de rayos con una malla simplificada.

Con la CPU inactiva mientras se espera la GPU en las modernas aplicaciones 3D interactivas, uno podría pensar que podría ser beneficioso utilizar estos ciclos inactivos para renderizar en la CPU utilizando un rasterizador de software. El problema aquí, además de que el renderizado se vuelve terriblemente complejo y complicado, a menudo será el ancho de banda. Las imágenes renderizadas en la CPU deben transferirse a la GPU antes de mostrarse, lo que podría cancelar el beneficio.

David Kuri
fuente
0

Los juegos con el concepto de "niebla de guerra" a menudo tienen una cuadrícula de visibilidad para definir el estado de la niebla de guerra en cada lugar. La rasterización a veces se usa para modificar el estado de niebla de guerra para formas específicas en la cuadrícula.

Por ejemplo, usar una habilidad que revela un círculo del mapa con un radio específico, o tal vez algo que revela un cuadrado.

No está estrictamente relacionado con los gráficos, pero definitivamente es un uso de rasterización en juegos modernos, y una técnica que he visto utilizada en RTS.

Otros datos basados ​​en cuadrícula en los juegos podrían usar rasterización para situaciones similares.

Alan Wolfe
fuente
-2

La rasterización es un gran tema con muchas partes y no soy un programador de motores, pero haré todo lo posible para dar algún tipo de visión general (¡esto estará lejos de ser una lista completa!).

Algunas cosas muy básicas de bajo nivel incluyen:

  • Selección de Frustrum: tira todo lo que está fuera del frustrum de la cámara (piense en él como el área de visualización de la cámara).
  • Selección posterior: deseche todos los polígonos que no se dirijan a la cámara.
  • Algoritmo del pintor: dibuje objetos en el orden de su distancia a la cámara, comience con objetos lejanos, luego vaya hacia la cámara.

Las cosas más avanzadas utilizadas en los juegos incluyen cosas como:

  • Tesselation : en realidad se parece mucho a LOD (ver más abajo), pero ahora las últimas versiones de DirectX introdujeron tesselation, que proporciona división o reducción automática de mallas. Esto le da un gran impulso al rendimiento de los gráficos, porque puede obtener polys si los necesita y deshacerse de ellos si ya no los quiere.
  • LOD : un sistema de nivel de detalle reemplaza la malla de un objeto en función de la distancia entre el objeto y la cámara. por ejemplo, tu personaje tiene tres mallas: una con 10,000, una con 5,000 y otra con 1,000 polys. si te quedas justo delante de él, se muestra la malla de alta resolución (10,000 polys), si te alejas, después de 100 m, el personaje se reemplaza por la malla media y después de otros 100 m se reemplaza por la malla de baja resolución. En lugar de reemplazar la malla, puede reducirla, pero esto sería más complejo de codificar.
  • particiones de espacio binario : el espacio se divide en dos volúmenes. esto se repetirá hasta que alcance su objetivo, por ejemplo, hasta que el espacio contenga solo polys que se deben dibujar en la pantalla
  • Portales y celdas : (también conocido como Portal Culling) se utiliza en escenas de interior y / o en shooters en primera persona. La escena está dividida en celdas (por ejemplo, habitaciones de un edificio) que están conectadas a portales (por ejemplo, puertas). Puedes configurar portales para que estén abiertos y cerrados.

Suponiendo que tiene una comprensión básica de la tubería de gráficos, traté de centrarme en la rasterización. También puede echar un vistazo a la iluminación y la sombra u otras cosas ...

Estos incluyen solo algunas tecnologías posibles para incluir en su proyecto. Como no tengo suficiente reputación en stackexchange, no puedo proporcionar muchos enlaces, pero encontrarás todo eso en google :)

Micha Grandel
fuente
2
La pregunta es sobre la rasterización de software (léase: CPU). Parte de la información que proporcionó trata sobre rasterización en general, algunas técnicas, en mi libro, no tienen nada que ver con la rasterización. ¿Podría aclarar en su respuesta cómo las técnicas usan o se benefician de la rasterización de software?
David Kuri