@g00mba
1º Pues yo entendía todo lo contrario que el render era mas difícil de pararelizar, por eso en muchas compañías , preferían tirárselo aun core del CPU que se encargara, como se venia haciendo que en la mayorías de juegos un Hilo del CPU se encarga de algunas funciones del Render
no. miralo de esta manera, vos podes en teoria tener Un core por pixel que existe en la pantalla. asi que en una pantalla 1080p podrias tener 2,073,600 threads (1920x1080). lo unico que hace el cpu es preparar datos para que la tarjeta grafica los convierta en graficos. en la siguiente imagen, el cpu se encarga de la PRIMERA etapa exclusivamente.
y de ahí la razon porque en la API Dx11 se incluyo la herramienta de render Multi-Core herramienta para facilitar mas el trabajo y aprovechar mas las CPU actuales (de muchos Hilos).
solo simplifica la paralelizacion de asignacion de recursos, creo que la mejora tiene que ver con que la tarjeta grafica puede ser alimentada de mas de un core a la vez sin necesidad de hacer malabares como se hacia antes.
el UNICO lugar donde todavia se hace graficos con CPU es con el raytracing (POV-RAY, Blender, LuxRender) pero incluso estos estan moviendo varias etapas al GPU usando OpenCL.
2º Pues al contrario si las API Dx, no tiran Render por CPU no tuvieran la herramienta de Render Multi-core que expuse antes, al día de hoy que yo sepa se sigue tirando render por CPU,
NO. el render por CPU es conocido como SOFTWARE RENDERING. y desde el 2000-2002 dejo de ser viable.
In the context of rendering (computer graphics), software rendering refers to a rendering process that is unaided by any specialized graphics hardware, such as a graphics card. The rendering takes place entirely in the CPU.
fuente:
http://en.wikipedia.org/wiki/Software_rendering
por otra parte si el Ungine Vaye(que es 100% render)
Valle. que entendes vos por "100% render"?
lo tirara solo por GPU, el procesador se estaría tocandoce los huevos solo calculando algunas que otras cosillas, pero no es el caso los procesador si pasas pruebas van con carga incluso hasta el 8 cores
subestimas la importancia de lo que hace el CPU. el render solo es una parte de todo el proceso de mostrar imagenes de la calidad del ungine. la carga de enviar datos, mantener coherencia, los precalculos de fisica, etc. etc. otro asunto de importancia es que los procesadores son EXTREMADAMENTE ineficientes en tareas concurrentes en lugar de tareas secuenciales, por eso es que se esta empezando a usar OpenCL para este tipo de calculos.
Por ultimo me llamado la atención eso que las físicas, pero bueno si las físicas no fueran pararizables creo yo que no habrían físicas por GPU, porque el GPU hace usos de miles de Hebras (tengo entendido).
no he dicho que no son posibles de paralelizar. dije que es mucho mas dificil que las tareas que son naturalmente paralelizadas. es por eso que requieren GPUS realmente potentes para funcionar con una velocidad decente.
considera este problema. este escenario con CUDA:
tenes una simulacion de 1,000 particulas separadas interactuando. imaginate que pones un SMX para digamos la interaccion de diez particulas cada uno. pero eventualmente la particula que esta en el SMX A tiene que interactuar con la que esta en el SMX B, como son dos eventos hasta el momento separados, estan en espacios de memoria y stream processors distintos. tenes que cargar los resultados de ambas particulas en ese momento particular en cache y despues efectuar los calculos separados.
el problema no es que sean eventos paralelos, el problema es QUE ESTAN ESTRECHAMENTE RELACIONADOS Y EL CALCULO DE UNO DEPENDE DEL OTRO, que no siempre estan en el mismo core de proceso, y eso implica mucha latencia.
[/quote]