Comentario#1:

Pero que se sepa el X1 no soporta Tile Catching, pero no dudo que Nintendo ya tiene una solución propia para el ancho de banda, al rendimiento de MK8 Deluxe me remito, seguramente estén portando los juegos de WiiU a pelo y si alcanzan un mínimo requerible así lo dejan y si no pues meten mano, sería bastante inteligente pues sacarían una rentabilidad enorme con una carga de trabajo ligera.
Y luego está el tema de SquareEnix con el DQ que ya se notaba en los eventos japoneses que rascaba, pero es que es de traca que lo saquen gold con ese paupérrimo rendimiento.

Pero insisto, si se llegase a romper la Switch al mismo punto que la 3ds, el hablar de clónicas cual NASA no sería tan descabellado.

steve-carell-facepalm

La GPU del X1 es una GPU de arquitectura Maxwell.

maxwell

Ya lo comente en una de las entradas…

Aunque lo mejor es leer la primera de ellas para tener el contexto completo, hay una serie de dispositivas que son claras.

tiledcaching1tiledcaching2tiledcaching3

¡Disponble en todas las GPUs Maxwell y Pascal!

¿Pero que es el Tile Caching? No es otra cosa que en vez de renderizar la imagen por un búfer completo lo que hacemos en renderizarla por Tiles. Esto es posible en Switch porque el rasterizador rasteriza por tiles pero hay una diferencia entre un Tile Renderer y esto aunque el resultado es el mismo. En el Tile Renderer se renderiza sin control del programador siempre por Tiles, en este caso hemos de especificar explícitamente que renderice sobre la Cache L2, es decir, que genere el búfer de imagen de cada uno de los tiles en la cache L2 sin tocar la memoria principal.

Esto es algo que ni PS4, ni PS4 Pro ni Xbox One pueden hacer porque los ROPS de la GPU de dichas consolas no están conectadas a la cache L2 y por tanto el pipeline gráfico no puede hacerlo. Aparte que el rasterizador es convencional, pero como he dicho antes leeros las entradas que hice hace unas semanas y que he enlazado en esta misma entrada para entenderlo.

Como curiosidad, AMD en Vega ha copiado el rasterizador y el acceso de la Cache L2 en Vega por lo que si Xbox Scorpio se basa en Vega podrá realizar Tile Caching.

Comentario#2:

en realidad el ancho de banda necesario se divide si renderizan al estilo antiguo en vez de con render diferido

el ue4 se está actualizando para soportar otra vez eso como en el ue3 y “casualmente” ha coincidido con la version previa a la que soporta switch, y desde entonces lo están puliendo con cada versión

en unity se renderiza como quiera el desarrollador, con render frontal y msaa sin hdr o con render diferido y aa de postpro y en ps4, one y pc soporta hdr

el unity es parte del sdk de nintendo desde wii u… mas claro agua

ademas el ancho de banda de 25 gbps tiene truco, al ser maxwell soporta compresion del bus y por lo que ha informado nvidia con la 1080ti, tambien cached tiling

Sobre el Tiled Caching no agregare más, sobre el tema de la compresión de bus es la llamada Delta Color Compressión en las GPUS de AMD y en el caso de Nvidia lo tratan como una compresión de memoria.

MemComp_575px

Este es el único punto donde Pascal difiere de Maxwell. ¿Para que sirve? Pues para reducir el ancho de banda necesario para Bc, lo cual es ideal para el rendering en diferido porque en dicho estilo de rendering los Render Targets utilizados corresponden al Bc en el forward rendering.

deferred-v2forward-v2

Para los profanos, lo que permite esto es reducir el impacto de la memoria de los Render Targets y por tanto del Bc en la ecuación general del ancho de banda. Es algo que en el caso de las otras consolas se encuentra solo en PS4 Pro ya que en AMD no fue hasta la GCN 1.2 que se incluyo y tanto PS4 como Xbox One son GPUs GCN 1.1 sin soporte para ello.

En cuanto a los motores gráficos, es posible como dices tanto en el Unity como en el Unreal Engine escoger como quieres que se renderice la escena. En dispositivos de bolsillo por el menor ancho de banda se recomienda el Forward Rendering en vez del Deferred Rendering/Renderizado en Diferido. Por lo que ahora dichos motores dan la posibilidad de poder escoger un tipo de renderizado u otro.

¿Pero cuando utilizar cada cual? Depende de la iluminación de la escena. En el Forwared Rendering los cálculos de la iluminación se tienen que realizar por cada vértice y/o grupo de pixeles (fragmento) posible en la escena y por cada luz de la escena por lo que la formula acaba siendo. Dado que la iluminación es por fragmento entonces la formula acaba siendo:

Número de Luces* Número de Fragmentos*Número de Operaciones por Fragmento= Número de Operaciones a Realizar.

Pero supongamos que tenemos una escena como esta:

batman-arkham-knight-review-pc-485286-5

Tenemos un montón de fuentes de luz tanto directas como indirectas, los cálculos a realizar aumentarían de mala manera en el Forward Rendering, es aquí donde el Deferred entra en juego, entonces la carga pasa a ser:

Resolución de Pantalla*Número de Luces

De repente la cantidad de objetos en pantalla desaparece, lo que permite renderizar escenas con muchas luces al mismo tiempo. ¿Y que ejemplos de motores gráficos puramente Forward Rendering y puramente Deferred Rendering tenemos?

Skyrim-Detail-Ultra-SliderComparisonEl motor utilizado en Skyrim y Fallout 4 es un Forward Renderer, de ahí a que a Bethesda no le este costando portar Skyrim. ¿Un ejemplo de un Deferred Renderer? El Frostbite de EA.

bf1-review-screen-1.0.jpg

EA no ha anunciado nada para Switch a excepción de una nueva entrega de FIFA, la cual ahora funciona bajo el Frostbite desde la entrega del año pasado. Los Sony Retards de los medios desinformaron diciendo que el motor gráfico del FIFA de Switch no era Frostbite tergiversando el significado de unas palabras de Peter Moore e incluso llegaron a decir que sería port directo del de PS3.

Hace un par de años EA adapto el Frostbite a iOS en forma de Frostbite Go, pero utilizando la API Metal de Apple, dado que el NVN de Switch esta al mismo nivel no les debería costar adaptar dicha versión del Frostbite, que en su día se pensó para una GPU mucho, pero que mucho menos potente que la de Switch. En la presentación del Frostbite Go en el SIGGRAPH de 2015 se puede ver lo siguiente:

FrostbiteGo1.PNGRecordemos lo que cite hace unas entradas sobre el controlador de Vulkan de Nvidia.

El controlador de Vulkan de Nvidia permite ejecutar Vulkan en un contexto OpenGL y generar imágenes generadas por Vulkan a través de OpenGL. Nvidia también permitirá shaders GLSL ser cargados en Vulkan, aparte por supuesto de los shaders SPIR-V. Estas dos características juntas permiten un prototipéo rápido por parte de los desarrolladores cambiando OpenGL con Vulkan en secciones del de código existente y permite a los desarrolladores utilizar Vulkan incluso cuando hacerlo al completo no es posible.

El otro tema interesante de la entrada es lo del Forward Rendering, por lo que existe una versión de Frostbite que renderiza de esa manera.

FrostbiteGo2.PNG

No esta mal, recordad que la potencia del iPad Air 1 es de 76.8 GFLOPS, Switch lo dobla por lo que en las mismas ciscunstancias debería ser capaz de alcanzar los 60 fps. Aunque lo más interesante es la diapositiva siguiente que tiene un olor muy grande a X1… Pero que muy grande.

FrostbiteGo3.PNGUso de APIs como Vulkan, la mención del «Renderizado Eficiente con almacenamiento local por Tiles», el uso de FP16… Todo esta integrado por hardware en la GPU del X1 y es muy posible que hayan adoptado su Frostbite Go de iOS (Metal) a Switch y que el FIFA y otros títulos corran en dicha versión del Frostbite, no lo sabemos pero hay indicios para pensar que si.

¿Pero con la misma fidelidad que PS4 y Xbox One? Lo dudo, el hecho de pasar a un Forward Renderer reduce la fidelidad por el tema de la iluminación. En todo caso el objetivo del Frostbite Go no es ofrecer un nivel visual al estilo PS4 y Xbox One y quien lo espere de Switch esta siendo muy irrealista.

FrostbiteGo4.PNG

Obviamente EA no ha anunciado nada, pero no descartaría un Battlefield para Switch o incluso un Battlefront pero hemos de tener en cuenta que si EA lo hace va a ser una versión exclusiva y la naturaleza portátil de la plataforma hace no inviables técnicamente pero si estratégicamente.

Pero dejemos a EA de lado… ¿Qué motores gráficos famosos en sobremesa tienen este tipo de renderizado?

  • Unity (sabemos que funciona en Switch), es también un Forward Renderer.
  • Frostbite (No sabemos bajo que versión del Frostbite si estándar o Frostbite Go ha sido utilizada para el FIFA)
  • Unreal Engine 4 (mismo caso que Unity).
  • MT Framework (Portado por Capcom, confirmado)
  • AnvilNext (Están portando Steep a Switch, no sabemos si habrán modificaciones en el engine).
  • Fox Engine (Konami esta en la lista de desarrolladores, si lo portan esperaos una fidelidad visual al estilo PS3/360… ¿Portaran MGS V aparte del PES?
  • Rockstar Advanced Game Engine (No sabemos nada de nada, en todo caso Switch sería capaz de ejecutarlo sin problemas al nivel PS3/360) pero Rockstar lleva tiempo huyendo de las consolas Nintendo.

Pero claro, todo esto forma parte de ver el vaso medio lleno y por el momento todo esto es potencial aún no realizado. Pero el potencial existe, otra cosa es un… No se puede que es diferente.