¿Qué tan rápido necesitaría una computadora para rastrear en tiempo real?

Primero, para aclarar su pregunta: parece que está tratando de renderizar utilizando un modelo de iluminación global completo, que es muy diferente del trazado de rayos; La radiosidad es la forma más simple del modelo de iluminación global, en el que cada superficie tiene el mismo color aparente independientemente del ángulo de visión (es decir, todo tiene una textura mate). He escrito bastante software para el trazado de rayos, para la radiosidad y para la iluminación global desde principios de la década de 1990, así que entiendo exactamente qué desafío será hacer modelos de iluminación global en tiempo real.

De hecho, podemos responder la pregunta con bastante precisión, utilizando el Estándar Dorado para renderizar escenas naturales complejas, Pixar. Desde la Universidad de Monsters , Pixar ha adoptado un modelo de iluminación global y muchos de los fotogramas de esa película tardaron hasta 29 horas en renderizarse.

De acuerdo, tal vez no sea exactamente una escena “natural”, pero se entiende la idea. La resolución es esencialmente la de UHDTV según lo solicitado (en realidad es una resolución ligeramente mayor que UHDTV).

Sabemos que Pixar tardó aproximadamente dos años en procesar todos los marcos utilizando una parte de su colección de aproximadamente 2,000 servidores, con un promedio de 12 núcleos de procesador por servidor. Si el tiempo de renderizado se redujera de dos años a 104 minutos, podría ver la película en tiempo real, después de un retraso de inicio. Eso no es lo mismo que una fecha límite dura de 1/25 de segundo por fotograma porque hice trampa, permitiendo que el sistema informático acumule una cabeza de vapor para calcular los primeros fotogramas. Si no se usa el procesamiento paralelo por fotograma , puede llevar 29 horas completar el primer fotograma, ¡y luego todos se vierten en tiempo real! Así que supongamos que la iluminación global de un solo cuadro puede ser paralela (puede; lo he hecho) en lugar de usar el paralelismo más fácil de hacer que cada núcleo represente un cuadro separado.

La proporción de dos años a 104 minutos es casi exactamente de 10,000 a 1. Por lo tanto, necesitas una computadora aproximadamente 10,000 veces más potente que cualquier parte de la granja de servidores de Pixar que se usó para hacer la Universidad de Monsters . Supongamos que dedican la mitad de los servidores que poseen a la tarea, las 24 horas del día, o 1,000 servidores. Luego, para calcular la película en tiempo real, se necesitarían 10,000 veces 1,000 = 10 millones de servidores de la misma velocidad que los que usaron en 2013. Costarían alrededor de $ 50 mil millones, que es aproximadamente el ingreso anual de Intel. Los servidores se han vuelto un poco más rápidos desde 2013, pero en realidad no tanto; La ley de Moore se ha desacelerado últimamente.

Si desea hablar sobre la velocidad en términos tradicionales como operaciones de punto flotante por segundo (flops / s), y si suponemos que el servidor Pixar promedio era de 600 gigaflops / s en doble precisión en 2013, hmm … 600 mil millones de flops / s multiplicado por 10 millones de servidores es …

6 exaflops / s .

Eso es aproximadamente 100 veces más rápido que los clústeres de supercomputadoras que podemos construir hoy en día.

Esta es una pregunta sin respuesta fácil. Todo depende de su nivel de calidad deseado y también de cuán optimizado esté el software de renderizado. Escribí una respuesta a una pregunta similar aquí: ¿Qué especificaciones de hardware requeriría una computadora para producir gráficos fotorrealistas en los juegos? La pregunta también ha sido respondida por otros contribuyentes con información relevante, puede ser útil verificarla.

El hardware también juega un papel muy importante en el asunto, y esto parece un buen paso hacia el rendimiento que está buscando: Demostración de rayos en tiempo real de Imagination Demos (Actualización: Video)

Como sugieren las otras respuestas, esta es una pregunta particularmente imposible de responder. Especialmente porque hay una gran cantidad de cosas que quedan fuera de los detalles de la pregunta. Por ejemplo, cuán complejos son los elementos del modelo, qué tipo de materiales, cuántas luces, cuántos reflejos rebota, etc. Sin mencionar que el programa que usa para renderizar puede arrojar algunos detalles de objetos a lo lejos, o puede que no. Todas estas cosas afectan la velocidad del renderizado y, por lo tanto, también el hardware requerido para que renderice cada cuadro dentro de 0.04s.

El hecho de que veas que algunos juegos en 3D parecen realistas y “en tiempo real” no significa que sea así. Cada juego tiene muchas simplificaciones implementadas. Cosas como objetos se suavizan para reducir la cantidad de paneles contra los que puede rebotar un “rayo” de luz, materiales de complejidad reducida, luces y sombras aproximadas en lugar de variantes reales con trazado de rayos, etc., etc. Sin mencionar, solo los objetos de campo cercano se representan correctamente, los objetos distantes se reducen aún más en complejidad (tanto en sus formas como en materiales y luces), incluso pueden ser imágenes colocadas como una capa de fondo. Los objetos que no están directamente a la vista pueden incluso eliminarse del modelo y solo volver a aparecer una vez que la cámara pueda verlos. Algunos objetos incluso pueden ser imágenes, por ejemplo, RPC.

Sin mencionar que la mayoría no realizaría un trazado de rayos real, sino que usaría otra representación de aproximación para aumentar aún más la velocidad. Por lo general (especialmente con movimientos rápidos), una traza completa de rayos podría no verse diferente a una versión tan aproximada. Entonces, ¿por qué desperdiciar el procesamiento en algo que el usuario ni siquiera verá?

Dependiendo de estos factores, el hardware requerido puede variar desde un chip de teléfono móvil hasta una “computadora” en el orden de algo como Deep Thought. Es casi imposible identificar incluso el hardware recomendado para el caso promedio, sin importar el mínimo para el caso más complejo.

Una pregunta interesante …

Si considera que la imagen representada contiene un número finito de fotones, y que los fotones viajan a una velocidad fija, entonces puede solucionar el problema del “tiempo real” en parte al construir una computadora que sea mucho más compacta que la “real” espacio, es decir, la ruta de información a través de la computadora es de órdenes de magnitud más cortos de lo que tomaría un rayo real, y los fotones individuales se pueden rastrear en paralelo.

Los fotones individuales que rebotan en un modelo 3D altamente granular probablemente no interferirán entre sí de manera computacional, y los resultados se impondrán físicamente, por lo que realmente se trata más del tamaño de la máquina que de la velocidad.

Depende de lo que necesites para poder renderizar.

Un teléfono inteligente típico puede hacer trazado de rayos en tiempo real. Solo escenas muy simples en baja resolución, pero aún así.

En la mayor parte de mi trabajo profesional (publicidad, cine, etc.), los tiempos de renderización típicos son entre diez minutos (muy rápido) y dos horas (bastante lento) por fotograma. Digamos una hora en promedio.

Para hacer eso en tiempo real con el mismo software, la computadora necesitaría ser aproximadamente 100 000 veces más rápida. Suponiendo que el rendimiento se duplica cada tres años (no lo hace), llegaremos allí para 2065. ¡Ay!