vray tiene tener sirven saber renderizar que puede procesador para nucleos nucleo los hilos cuantos con como multithreading performance unity3d rendering cpu

multithreading - tiene - Unidad: ¿Cómo usar todos los núcleos de CPU para Camera.Render con trabajos de gráficos de múltiples subprocesos? Optimizaciones-¿no funciona?



renderizar con gpu vray (1)

Durante la renderización de la cámara, su CPU tiene que hablar con la GPU, en lo que se llama un drawcall . Debajo del capó, Unity ya está utilizando un enfoque de subprocesos múltiples ( ctrl + f "hilos" ) para hacer que la CPU hable con la GPU, y este proceso de distribuir las tareas a los hilos de los trabajadores tiene lugar en una caja negra. Tenga en cuenta que "no todas las plataformas admiten la representación de subprocesos múltiples: en el momento de redacción, WebGL no admite esta característica. En las plataformas que no admiten la representación de subprocesos múltiples, todas las tareas de la CPU se llevan a cabo en el mismo subproceso".

Entonces, si su aplicación está vinculada por la CPU, entonces tal vez su plataforma no sea compatible, o las tareas simplemente no se pueden dividir en trozos lo suficientemente pequeños para llenar todos sus núcleos, o alguna otra razón de ''caja negra'', como tal vez la CPU esté iterando sobre cada cámara secuencialmente, en lugar de agrupar el grupo (esto tiene sentido para mí porque el hilo principal tiene que ser el que interactúa con la API de Unity de manera segura para determinar qué se debe dibujar).

Parece que tu única opción es leer los enlaces proporcionados aquí e intentar optimizar tu escena para minimizar las llamadas al sorteo, pero dicho esto, creo que tratar de renderizar "decenas de cámaras" es una muy mala idea para empezar, especialmente si todos están representando una escena compleja a gran resolución con procesamiento posterior, etc., aunque nunca he probado algo así.

Cómo utilizar la optimización de trabajos de gráficos multihilo?

Tengo un proyecto (menos de un juego, más de una aplicación) que usa muchas decenas de cámaras en una escena, todas renderizadas a la vez. (No preguntes por qué, tiene que ser de esta manera)

Ni que decir tiene que, cuando se ejecuta la aplicación, este núcleo de CPU casi se maximiza ya que la canalización de renderizado tiene un solo subproceso. Como resultado, baja la velocidad de fotogramas muy baja. (La GPU, la memoria, etc. están bien por debajo del 100% de carga, la CPU es el cuello de botella aquí)

Me sentí muy aliviado al ver que Unity tiene una opción llamada "Trabajos de gráficos (experimentales)", que está específicamente diseñada para dividir la representación en varios hilos y, como tal, múltiples núcleos.

Sin embargo, con esta opción habilitada y DirectX12 establecido en la parte superior de la lista de API de gráficos, esperaría que la CPU ahora se pueda utilizar por completo, es decir, que todos los núcleos de CPU se puedan utilizar en la representación activa. Sin embargo, parece ser que la aplicación solo está utilizando aproximadamente el 40% del potencial de mi CPU, mientras que ofrece una baja velocidad de cuadros. Seguramente, ¿solo debería bajar la velocidad de cuadro una vez que ha llegado al máximo de la CPU? No parece que los núcleos individuales se utilicen de manera diferente. ¿Por qué no puedo maximizar la velocidad de fotogramas de salida utilizando cerca del 100% de todos los núcleos de mi CPU (en total, incluidos los programas adicionales que se ejecutan)?

Esencialmente, me gustaría saber cómo puedo lograr que Unity use todos mis núcleos de CPU en todo su potencial para obtener la mayor velocidad de cuadros posible mientras tengo tantas cámaras en mi escena a la vez ... ... Pensamiento de trabajos de gráficos resolvería esto? ... ¿A menos que los use incorrectamente o no use la combinación correcta de configuraciones?

Como un lado, mi CPU es un i7-4790 @ 3.6ghz y mi GPU es un 980Ti que usa DX12. 32 gb de RAM.