Directrices de rendimiento para Mesh
Rendimiento
Este artículo es una introducción a la comprensión de la importancia del rendimiento al crear contenido en Mesh. Framerate es la unidad más fácil de racionalizar el rendimiento. Normalmente, la velocidad de fotogramas se mide en "fotogramas por segundo" (fps) o en cuántas veces la aplicación puede representar una imagen por segundo. La experiencia de un usuario se puede degradar considerablemente si el contenido no se ejecuta en una velocidad de fotogramas óptima. Para ayudarle a realizar un seguimiento y lograr la velocidad de fotogramas de calidad, Mesh proporciona una variedad de herramientas y recomendaciones.
En la tabla siguiente se muestra la velocidad de fotogramas de destino por plataforma compatible con Mesh.
PC | Android (Quest) |
---|---|
Supervisión de la frecuencia de actualización (mínimo de 30 fps) | 72 fps |
Escenas simples frente a complejas
Al igual que con todo el desarrollo en 3D, en Mesh hay un equilibrio entre la fidelidad visual y el rendimiento. Dependiendo de la máquina que ejecuta Mesh, el usuario puede experimentar una disminución del rendimiento, especialmente si la escena es compleja.
Piense en el rendimiento como un presupuesto financiero. Si tiene $100 dólares para gastar, no puede gastar $60 representando un entorno complejo, $40 simulando física avanzada y $20 para scripts visuales, acabaría gastando en su presupuesto. Como desarrollador, tiene que hacer inconvenientes entre la fidelidad visual, la complejidad de la interacción, el número de usuarios y otros sistemas. El equipo de Mesh ha generado una lista de umbrales de rendimiento no como regla, sino una guía para el desarrollo.
Metodología de generación de perfiles
Normalmente, la creación de entornos en Mesh implica tres pasos.
- Creación de contenido en Unity
- Cargar en Microsoft Mesh
- Ejecución del contenido en la aplicación Mesh
Durante el paso uno, se recomienda usar una combinación de content Analizador de rendimiento (CPA) y Performance Profiler que se encuentra en el paquete del kit de herramientas mesh, que es necesario para cualquier proyecto de Unity que se use para generar un entorno mesh. Durante el paso dos, la herramienta CPA se ejecuta automáticamente. Por último, durante el paso tres final, la generación de perfiles debe producirse a través del generador de perfiles de rendimiento integrado de Mesh.
Herramientas para analizar el rendimiento
Analizador de rendimiento de contenido (CPA)
Se recomienda usar el Analizador de rendimiento de contenido (CPA) para maximizar el rendimiento de la experiencia de Mesh. La herramienta CPA puede analizar estáticamente el contenido en tiempo de creación. Puede usar la CPA para auditar recuentos de triángulos, lotes, uso de memoria de textura, etc. Esto le permite detectar problemas de optimización de contenido y oportunidades antes de que el contenido se cargue en Mesh.
Para ejecutar la herramienta CPA, seleccione Mesh Toolkit>Content Analizador de rendimiento en los elementos de menú.
Los problemas y sugerencias se notifican a través de una ventana del editor en Unity.
Importante
Una parte de los analizadores de CPA se ejecutará automáticamente al cargar contenido en Mesh. Dado que no todas las pruebas se pueden ejecutar automáticamente, es bueno ejecutar el CPA manualmente como parte del proceso de desarrollo.
Generador de perfiles de rendimiento
Performance Profiler proporciona una ventana sencilla para ver la velocidad de fotogramas, la complejidad de la escena y el uso de memoria del proyecto mesh en todas las plataformas. El Generador de perfiles de rendimiento es accesible dentro de la aplicación Mesh y dentro del kit de herramientas de Mesh.
Para ver el Generador de perfiles de rendimiento en la aplicación Mesh, abra el panel de configuración y seleccione Para desarrolladores>Performance Profiler. El Generador de perfiles de rendimiento aparecerá en el centro superior de la ventana.
Al usar el Generador de perfiles de rendimiento, busque fotogramas perdidos, que aparecen como cuadros rojos, marcados con una "x". Los fotogramas perdidos indican que el contenido no alcanza la velocidad de fotogramas de destino de Mesh y puede que necesite trabajo de optimización. La complejidad de la escena y el uso de memoria se muestran en los indicadores de fotogramas perdidos. Estos números pueden indicar por qué el contenido no cumple la velocidad de fotogramas objetivo de Mesh.
El texto del Generador de perfiles de rendimiento se activará en rojo cuando una métrica no cumpla el umbral de rendimiento recomendado de Mesh. En una sección de procedimiento se muestran más detalles sobre los umbrales de rendimiento.
Importante
Los lotes no se pueden mostrar en la aplicación Mesh. Solo están disponibles en el editor de Unity.
También debe tener en cuenta la barra de memoria inferior para asegurarse de que el uso de memoria no cambia rápidamente ni se aproxima al límite de memoria de la aplicación.
Para ver el generador de perfiles de rendimiento en el editor de Unity, asegúrese de que tiene el componente De instalación del emulador de malla en la escena. Asegúrese de que la configuración Recuento de pantalla inicial es cero. Si es uno o superior, no podrá activar el generador de perfiles de rendimiento al reproducirlo.
Haga clic en el botón Reproducir de Unity para entrar en modo de reproducción y active el generador de perfiles de rendimiento a través de la tecla "v". El Generador de perfiles de rendimiento aparecerá en el centro superior de la ventana del juego.
Importante
Al ver el generador de perfiles de rendimiento en el editor de Unity, obtendrá más información, como los recuentos de lotes y el tiempo milisegundo que se tarda en ejecutar determinados subsistemas. Tenga en cuenta que estas métricas son una aproximación relativa del rendimiento y la generación de perfiles finales deben producirse dentro de la aplicación Mesh.
Si tiene curiosidad por cuáles son los milisegundos en la parte inferior del Generador de perfiles de rendimiento que mide, puede encontrar esa información en la sección Umbrales de rendimiento.
Otras herramientas
Tanto el CPA como el Generador de perfiles de rendimiento son personalizados creados para Mesh, pero también hay una serie de herramientas excelentes para generar perfiles de contenido en Unity:
- Generador de perfiles de Unity
- Depurador de fotogramas de Unity
- RenderDoc (IMPORTANTE: RenderDoc solo puede realizar capturas desde el editor de Unity. Las compilaciones de aplicaciones de malla no funcionarán).
Umbrales de rendimiento
La optimización del rendimiento puede ser un acto de equilibrio en función del escenario para el que esté desarrollando y de la experiencia que desee lograr. La representación de una escena en Mesh es una consecuencia directa de cómo se crea el contenido del entorno. A continuación se muestran sugerencias de representación para nuestras plataformas actuales.
Umbrales de representación de EQUIPOS
Polycount | Lotes | Procesamiento posterior |
---|---|---|
<~500 000 triángulos | ~200 lotes | Deshabilitado |
Texturas | Mapas de luz | Resolución de Skybox |
< ~160 MB | < ~80 MB | 2048x4096 |
Umbrales de representación de Android (Quest)
Polycount | Lotes | Procesamiento posterior |
---|---|---|
<~80 000 triángulos | ~50 lotes | Deshabilitado |
Texturas | Mapas de luz | Resolución de Skybox |
< ~16 MB | < ~20 MB | 1024x2048 |
Es posible que observe que las restricciones del sombreador no se especifican en las tablas anteriores. Dado que Mesh usa la canalización de representación universal (URP) de Unity, le sugerimos que use sombreadores de URP predefinidos más baratos (como Canalización de representación universal/ Canalización de representación universal/Canalización de representación universal/Simple Lit). También entendemos el valor de los sombreadores personalizados. En general, intentamos mantener nuestros sombreadores personalizados para la mayoría del entorno dentro de los umbrales siguientes:
Matemáticas de vértices | Matemáticas de fragmentos | Textura |
---|---|---|
< 30 operaciones | < 120 operaciones | < 2 búsquedas |
Importante
El recuento de operaciones de sombreador está en una métrica imperfecta para calcular el rendimiento del sombreador, un desarrollador de sombreador también debe generar perfiles de su sombreador que se ejecuta en Mesh para comprobar que se ejecuta de forma eficaz.
Si tiene curiosidad por la configuración de la canalización de representación del URP para la aplicación Mesh, puede inspeccionar los representadores específicos de la plataforma en el directorio \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP .
Umbrales de scripting
Mesh permite crear contenido interactivo a través de scripting visual, scripting en la nube, Física de malla o WebSlate. Al ver el generador de perfiles de rendimiento en el editor de Unity, el milisegundos (ms) veces que tarda determinados subsistemas en ejecutarse se muestra en la parte inferior del generador de perfiles. Cuando el texto cambia de verde a rojo que indica que un subsistema podría superar el presupuesto. En la tabla siguiente se proporciona más información sobre estos presupuestos.
Nombre del subsistema | Presupuesto máximo de fotogramas | Descripción |
---|---|---|
Comportamiento | N/D | Milisegundos tiempo necesario para actualizar todos los scripts locales de MonoBehaviour (C# y Visual) |
Renderización | 25 % | Tiempo de milisegundos para la representación de CPU de la escena |
WebSlate | N/D | Tiempo de milisegundos para actualizar y representar cualquier WebSlates en la escena |
Phys Sim | 15 % | Tiempo de milisegundos para realizar el paso de la simulación de PhysX |
Sincronización de Phys | 15 % | Milisegundos tiempo para sincronizar todos los cuerpos físicos |
Phys Effx | 10 % | Milisegundos de tiempo para actualizar comportamientos físicos a medida |
Usuario de VS | 15 % | Milisegundos tiempo invertido en gráficos de script visual colocados en la escena |
VS Env | 10 % | Milisegundos tiempo invertido en actualizar la infraestructura de Visual Script |
VS Net | 10 % | Milisegundos tiempo dedicado a sincronizar el estado de red de Visual Script |
Los valores "Porcentaje máximo de fotogramas" enumerados anteriormente son recomendaciones basadas en contenido genérico. Como desarrollador, es necesario equilibrar estos sistemas para asegurarse de que el marco se puede actualizar a tiempo.
Recursos de rendimiento y optimización
Aspectos básicos del rendimiento de gráficos https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html
Canalización de representación universal (URP) https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html
Batcher de SRP https://docs.unity3d.com/Manual/SRPBatcher.html
Representación de instancias de un solo paso y sombreadores personalizados https://docs.unity3d.com/Manual/SinglePassInstancing.html