Con OpenGL y tal, puedo renderizar algunas cosas bastante sorprendentes en "tiempo real" 60 FPS. Sin embargo, si trato de hacer un video de esa misma escena en Digamos Maya, o 3ds Max, tomaría MUCHO MUCHO más tiempo para que se reproduzca, aunque tenga la misma resolución y FPS.
¿Por qué estos dos tipos de renderizado toman diferentes períodos de tiempo para el mismo resultado?
Nota: Sí, me doy cuenta de que el software de animación 3D puede producir imágenes muy superiores a lo que se podría hacer en tiempo real. Pero para esta pregunta me refiero a una escena de igual complejidad.
rendering
performance
J.Doe
fuente
fuente
Respuestas:
La principal diferencia sería que con OpenGL en un videojuego, tendrá un proceso llamado rasterización que básicamente se encarga de determinar qué parte de la escena ve.
Tiene que ser rápido para que podamos experimentarlo en tiempo real.
Por lo tanto, el algoritmo realiza algunos pasos simples.
comprobar si una cierta parte de la escena está en mi punto de vista frustum
compruebe si hay algo delante de él que deba ser renderizado más tarde usando un búfer de profundidad
ordenar los objetos que encontramos para dibujar
Por otro lado, un software de renderizado (Blender / Max / Maya / ...) probablemente usa algún tipo de trazado de rayos
Esto implica muchas más matemáticas para lograr un mayor grado de realismo. Básicamente funciona de la misma manera:
....
Dejaré de enumerar aquí ya que este es el punto donde despega el trazado de rayos.
En lugar de solo verificar si se golpea un punto, la mayoría de raytracer ahora comienza a calcular:
Hay un montón de técnicas con diferentes grados de realismo que se pueden utilizar para calcular la luz de un determinado punto de la escena.
TL; DR Lo esencial sería que un trazador de rayos trata principalmente de ser físicamente preciso cuando se trata de la iluminación y, por lo tanto, tiene muchos más cálculos por píxel (a veces dispara miles de rayos) y, por otro lado, los juegos obtienen su velocidad al dibujando trozos más grandes de la pantalla con cálculos de luz más simples y muchos trucos de sombreado que lo hacen ver realista.
fuente
Estás comparando manzanas con naranjas
El juego es como el puerto de visualización en su aplicación de modelado. Puede usar la ventana gráfica para renderizar y obtendrá las mismas velocidades de 60 fps.
No hay ninguna razón por la que no pueda obtener gráficos en tiempo real que sean muy buenos con software de modelado como Maya o 3DS Max. Resultados que están a la par con muchos juegos. Tienen sombreadores de ventana gráfica al igual que los juegos. También hay una opción de representación de la ventana gráfica que agrupa los fotogramas en el disco tan rápido como lo permite (he realizado renderizaciones Full HD a 30 fps desde Maya). Todo lo que tiene que hacer es dejar de usar los raytracers de software proporcionados.
Sin embargo, hay algunas diferencias. La principal diferencia es que usted, como usuario, no optimiza las cosas tanto como lo hacen los desarrolladores de juegos (la optimización está utilizando todos los trucos del libro). En segundo lugar, tus primitivas de animación funcionan en la CPU porque necesitas la flexibilidad. En los juegos uno puede permitirse hacer optimizaciones. En general, paga por no tener un equipo de programación a su lado.
De hecho, muchas de las cosas pueden haberse calculado previamente, por lo que no son mucho más rápidas, sino que están mejor organizadas. Hornear su iluminación indirecta superará los resultados no horneados todos los días.
¿Por qué los rastreadores son más lentos?
No son *, uno solo tiende a hacer más trabajo en un rastreador de rayos porque es fácil. Característica por característica, no son mucho más lentos en los ciclos de cálculo. Por ejemplo, no hay necesidad de un trazador de rayos para emitir rayos secundarios (los reflejos de vida en ese caso el trazador de rayos eliminará la geometría, o ni siquiera la cargará, de hecho, el rayo mental hace exactamente eso). Por lo general, se hace porque es trivial hacerlo y esa es la clara ventaja de los trazadores de rayos. Incluso puede configurarlos para que se ejecuten en la CPU en algunos casos. Simplemente están optimizados para diferentes cosas:
Emitir datos al disco, no solo cuadros, sino todos los datos. Algo que rompería la velocidad de la mayoría de los juegos al instante.
Trabajando en hardware general. La GPU es mucho más rápida para ciertas cosas una vez que se optimiza para la GPU. Pero no funciona para todas las cargas, de hecho, una CPU Intel es más rápida en computación en general que la GPU. La GPU es masivamente paralela que la CPU no lo es. La arquitectura gana si puede permanecer en la GPU y minimizar la transferencia y optimizar la arquitectura de la GPU.
Entonces paga por flexibilidad y facilidad de uso. Pero sí, admitiré que tanto Maya como Max sufren de vejez extrema. Entonces podrían ser más rápidos.
TL; DR La diferencia radica principalmente en la optimización (lea muchos trucos) y los recursos externos disponibles.
PD: Hay una idea errónea de que esto se debe a que es más físicamente correcto. Ciertamente puede ser, pero el rastreador de rayos no es inherentemente más físicamente correcto que su juego promedio o cualquier otro cálculo. De hecho, muchos juegos usan modelos realmente buenos, mientras que muchos modeladores no lo hacen.
* Ver http://www.graphics.cornell.edu/~bjw/mca.pdf
fuente
Vista previa en tiempo real
Trabajando en el lado VFX de la industria, si está hablando de vistas previas de vistas en tiempo real y no de renderizado de producción, entonces Maya y 3DS Max también suelen usar OpenGL (o posiblemente DirectX, más o menos lo mismo).
Una de las principales diferencias conceptuales entre el software de animación VFX y los juegos es el nivel de suposiciones que pueden hacer. Por ejemplo, en el software VFX, no es raro que el artista cargue una única malla de caracteres sin costuras que abarca cientos de miles a millones de polígonos. Los juegos tienden a optimizar más para una escena grande que consiste en un bote de mallas simples y optimizadas (miles de triángulos cada una).
Renderizado de producción y trazado de ruta
El software VFX también pone el énfasis no en la vista previa en tiempo real sino en el renderizado de producción donde los rayos de luz se simulan uno a la vez. La vista previa en tiempo real a menudo es solo eso, una "vista previa" del resultado de producción de mayor calidad.
Los juegos están haciendo un hermoso trabajo al aproximar muchos de esos efectos últimamente, como profundidad de campo en tiempo real, sombras suaves, reflejos difusos, etc., pero están en la categoría de aproximación de alta resistencia (ej .: mapas de cubos borrosos para difusos). reflexiones en lugar de simular realmente rayos de luz).
Contenido
Volviendo a este tema, las suposiciones de contenido entre un software VFX y un juego difieren enormemente. El enfoque principal de un software VFX es permitir que se cree cualquier tipo de contenido posible (al menos eso es lo ideal, aunque en la práctica a menudo no está cerca). Los juegos se centran en el contenido con suposiciones mucho más pesadas (todos los modelos deben estar en el rango de miles de triángulos, los mapas normales deben aplicarse a detalles falsos, en realidad no deberíamos tener 13 mil millones de partículas, los personajes no están realmente animados por músculo plataformas y mapas de tensión, etc.).
Debido a esas suposiciones, los motores de juego a menudo pueden aplicar más fácilmente técnicas de aceleración como el sacrificio de frustum que les permite mantener una alta velocidad de cuadros interactiva. Pueden hacer suposiciones de que parte del contenido será estático, horneado de antemano. El software VFX no puede hacer fácilmente ese tipo de suposiciones dado el grado mucho más alto de flexibilidad en la creación de contenido.
Los juegos lo hacen mejor
Esto podría ser una especie de punto de vista controvertido, pero la industria del juego es una industria mucho más lucrativa que el software VFX. Sus presupuestos para un solo juego pueden abarcar cientos de millones de dólares, y pueden permitirse seguir lanzando motores de próxima generación cada pocos años. Sus esfuerzos de I + D son increíbles, y hay cientos y cientos de títulos de juegos que se lanzan todo el tiempo.
El software VFX y CAD, por otro lado, no es tan lucrativo. Los investigadores que trabajan en entornos académicos suelen externalizar la I + D, y gran parte de la industria a menudo implementa técnicas publicadas muchos años antes como si fuera algo nuevo. Por lo tanto, el software VFX, incluso de compañías tan grandes como AutoDesk, a menudo no es tan "avanzado" como los últimos motores de juegos AAA.
También tienden a tener un legado mucho más largo. Maya es un producto de 17 años, por ejemplo. Se ha reformado mucho, pero su arquitectura central sigue siendo la misma. Esto podría ser análogo a tratar de tomar Quake 2 y seguir actualizándolo y actualizándolo hasta 2015. Los esfuerzos pueden ser excelentes, pero probablemente no coincidan con Unreal Engine 4.
TL; DR
De todos modos, esa es una pequeña versión de ese lado del tema. No pude distinguir si estaba hablando de vistas previas en tiempo real en ventanas gráficas o renderizado de producción, así que intenté cubrir un poco de ambas.
fuente