|_HeLL_| escribió:...
El sistema de iluminación de Far Cry 3 es un ejemplo perfecto de iluminación dinámica que puede pasar algunas de sus tareas a la nube. Pero ojo, que tiene también partes precalculadas que no es necesario si están almacenadas en disco, los prebaked probes. Estúdiate este PDF:
http://fileadmin.cs.lth.se/cs/Education ... y_DRTV.pdf . De hecho me hace incluso gracia... ¿te suena el deferred shading/rendering que están usando en juegos como Battlefield, Dead Space, Bioshock Infinite y muchos otros? ¿Y sabes que deferred significa "diferido" en español?
Esto es porque no necesita hace los cálculos en la primera pasada de pixel y vertex shaders. ¿Sabías que el la irradiación de la luz, el ciclo dia/noche, el SSAO, las luces volumétricas de esos juegos no son calculados cada frame? algunas ni tan siquiera cada segundo? Todo aquello que no vaya a ser alterado por la posición o interacción del jugador o de otros actores no necesita ser calculado cada frame, como ya he dicho.
- Con respecto al deferred shading/rendering, es un sistema q separa los pases de geometria (y atributos por pixel/fragmento) de la iluminación en tiempo real. Saber cuantas luces afectan a un objeto, todas las permutaciones q existen en los shaders para esto y demás es tan costoso q con esta tecnica no hace falta q tengas en cuenta todo esto. En un primer pase se sacan (renderizan) todos los atributos necesarios (profundidad, albedo, normales, especular...) y posteriormente pero EN EL MISMO FRAME (y ademas de forma necesaria) se toman estos atributos y se calcula la iluminación. Puede ir en la nube, NO.
- La irradiancia...de q tipo?. De fuentes de luz "locales" (calculada si o si en tiempo real y por frame) o la irradiancia q le llega por factores ambientales/iluminación global, estatica y precalculada (en el único caso q se podría descargar a la nube) y si ya está precalculada no hace falta la nube pq la tienes en el disco?.
- SSAO es dependiente del observador, por lo q tiene q procesarse si o si en cada frame. Es un efecto de postprocesado de la imagen que toma como entrada el Zbuffer (como minimo) de la escena y "lanza una serie de rayos" por cada pixel buscando "colisiones" entre los objetos adyacentes, obteniendo así un valor de oclusión para dicho pixel. Por lo tanto esto descartado puesto q tendría q enviar el Zbuffer, procesar los datos y devolver un buffer con los factores de oclusión.
- Las luces volumétricas (God Rays o los efectos de ese tipo) tres cuartos de lo mismo. Si se están calculando como un efecto de postprocesado aplicando un par de filtros de blur mas un filtro de radial blur (teniendo en cuenta el Stencil Buffer por ejemplo o un buffer a parte), tendrias q enviar toda la información y esperar a q te llegue, inviable. A no ser q quieras ver artifacs a porrillo y cosas q no cuadran. El ojo por desgracia es muy puñetero y percibe variaciones a un nivel enfermizo, y ya para colmo el cerebro se encargar del resto...o sea q cualquier retraso o fallo en un efecto de este tipo va a ser muy fácilmente reconocible.
- Con respecto al ciclo dia/noche, tres cuartos de lo mismo si viene precalulado (en el disco) no hace falta volver a calcularlo por lo q la nube nanai, si hay q hacerlo cada "x" tiempo...realmente descargarías de taaanto trabajo a la CPU??. NO.
Tu afirmación no tiene sentido, ¿por qué no ibas a ganar rendimiento si estas liberando la GPU local de la consola para realizar mucho más rápidas las tareas dinámicas que sí son dependientes de la latencia, como por ejemplo la sombra que proyecta el jugador en un shooter?
No liberas a la GPU de nada pq si está precalculado la GPU no tiene q rehacer nada, tan solo aplicarlo, ya sea un coeficiente, una matriz o una textura. Y eso lo tienes q hacer en tu GPU local venga de dnd venga.
Cierto, tienden a ser cada vez más dinámicos, pero te vuelvo a repetir que vuelves a caer en el error de pensar que todo lo dinámico es todo ultradependiente de la latencia. Además, ¿te olvidas que hay un montón de físicas o IA que no requieren ser calculadas cada frame?
Que físicas no son dependientes de la latencia?. La IA como dije hace muuuchos mensajes si se podría beneficiar de la nube pero no para calcularla sino para generar nuevos patrones y adecuarse a la forma de jugar del jugador.
Error, todavía no existe ningún juego con 100% de iluminación dinámica. Tan sólo algunas demos técnicas. Y volvemos a lo mismo, dinámico no es incompatible con la nube, sólo una parte.
Mmm...creo q Doom 3 ya no usaba lightmaps (no estoy 100% seguro pero si un 98%).
Frosbite de DICE a partir del 2 (al menos en PC) ya calcula toda la iluminación ya sea local o GI de forma dinámica y no usa lightmaps.
CryEngine 3 idem q idem (aunq estos con matices).
La realidad está clara, se tiende a hacerlo todo dinámico pq es mucho menos engorroso para el diseñador de turno y por tanto mas barato.
Evidentemente ese cálculo de físicas es dependiente de la latencia y no se podrá calcular a la nube. Pero sí que puedes enviar todas las físicas y dinámicas de fluidos que no se vean afectadas por la interacción del jugador. Por ejemplo, agua cayendo por una cascada, una nube de polvo o una columna de humo sí podrían. Pongamos por caso la cascada. De entrada no es muy eficiente que una cascada de skyrim sea dinámica, pero bueno supongamos que el desarrollador decide que la calcule la nube. Si en cualquier momento el jugador, un NPC o lo que sea interactua con una porción de 3 metros de los fluidos de la cascada, esa parte podría ser calculada localmente y de manera inmediata por la máquina local, y cuando dejase de interactuar volvería a calcularla la nube. Al dejar de interactuar y dejar de ser un cómputo dependiente de la latencia, para que no se notase el cambio la máquina local seguiría calculando los efectos un segundo más hasta que la nube "reenganche" el proceso.
Una cosa es dinámico y otra cosa es tiempo real. Una cosa es reactivo/interactivo al jugador y otra muy distinta q ese trabajo tenga q se procesado dentro de un limite de tiempo. Una cascada sigue siendo dinámica (el agua fluye y cambia de posición en cada frame) aunq no se interactue con ella. Aunq estes a 20 metros de la cascada tu tienes q seguir viendo el fluir del agua, por tanto dinamica no reactiva pero de tiempo real. Una colmna de humo igual, una nube de polvo...la resolución de físicas de un objeto implica modificación de posiciones, velocidades, aceleraciones y fuerzas y sino se hace en tiempo real apareceran artifacs, errores en el movimiento muy muy visibles por el jugador.
Usar "la nube" para descargar de tareas GRÁFICAS a una GPU no es viable.
Usar "la nube" para descargar de tareas FÍSICAS a una GPU/CPU no es viable.
Usar "la nube" para descargar de tareas de IA puede ser CON MATICES (como ya he dicho patrones y adecuación al jugador q no se van a implementar o en su defecto en juegos online y de tipo MMO) y realmente la descarga q conseguirías sería minima y solo para la CPU q hoy en dia se va a usar cada vez menos.
Un saludo.