Version: 2017.2
La Ventana Para Renderizar Estadísticas
Optimizando el Tiempo de Carga del Shader

Frame Debugger (Depurador de frames)

El Frame Debugger le permite a usted congelar la reproducción de un juego que se está ejecutando en un frame en particular y ver los draw calls (llamados de dibujos) individuales que usted está utilizando para renderizar ese frame. Al igual que listar los drawcalls, el depurador también le permite a usted pasar a través de ellos uno por uno para que usted pueda ver en gran de detalle cómo la escena es construida desde sus elementos gráficos.

Utilizando el Frame Debugger

La ventana del Frame Debugger (menú: Window > Frame Debugger) le muestra información de los drawcalls y le permite a usted controlar la “reproducción” del frame bajo construcción.

La lista principal muestra la secuencia de drawcalls (y otros eventos como framebuffer clear) en la forma de una jerarquía que identifica de dónde fueron originados. El panel a la derecha de la lista da detalles adicionales acera del drawcall tal como detalles de geometría y el shader utilizado para renderizar.

Al hacer click en un item de la lista, se muestra la escena (en el Game View) como aparece e incluye ese drawcall. Los botones de flecha izquierda y derecha en la barra de herramientas se mueven hacia adelante y hacia atrás en la lista en un solo paso y usted también puede utilizar las teclas de las flechas para el mismo efecto. Adicionalmente, el deslizador en la parte superior de la ventana le permite a usted pasar rápidamente a través de los drawcalls para ubicar un item de interés rápidamente. Dónde un drawcall corresponde a la geometría de un GameObject, ese objeto será resaltado en el panel principal de jerarquía para ayudar a su identificación.

Si una renderización sucede en una RenderTexture en el draw call seleccionado, entonces el contenido de esa render texture se muestra en el Game View. Esto es útil para inspeccionar cómo varios objetivos de renderización afuera de la pantalla son construidos, por ejemplo el diffuse g-buffer en un deferred shading:

O mirar cómo los shadow maps son renderizados:

Remote Frame Debugger (Depurador de frames remoto)

Para utilizar el Frame Debugger de manera remota, el reproductor tiene que soportar un renderizadao multi-hilo (por ejemplo., WebGL, iOS no lo soporta, por lo tanto el frame debugger no se puede ejecutar en este), la mayoría de las plataformas de Unity lo soportan, y segundo usted tiene que marcar ‘Development Build’ cuando construya.

Recomendaciones para plataformas Desktop: asegúrese de marcar la opción ‘Run In Background’ antes de construir, de lo contrario, cuando usted conecte el Frame Debugger al reproductor, este no va a reflejar cambios de renderizado hasta que tenga foco, asumiendo que usted está ejecutando ambos el Editor y el reproductor en la misma maquina, cuando usted controle el Frame Debugger en el Editor, usted tomara el foco del reproductor.

Inicio rápido:

  • Del Editor construya el proyecto a la plataforma destino (seleccione Development Player)
  • Corra el reproductor
  • Vaya de vuelta al Editor
  • Abra la ventana del Frame Debugger
  • Haga click en Active Profiler, seleccione el reproductor
  • Click Enable, el Frame Debugger debería habilitarse en el reproductor

Opciones de pantalla del objetivo de render

En la parte superior del panel de información hay una barra de herramientas que le permite aislar los canales rojo, verde, azul y alpha para el estado actual del Game View. Similarmente, usted puede aislar áreas de la vista de acuerdo a los niveles del brillo utilizando el deslizador Levels a la derecha de estos botones de los canales. Estos son solamente habilitados cuando se renderice a una RenderTexture.

Cuando renderice en varios objetivos render a la vez usted puede seleccionar cuál mostrar en el game view. Mostrados aquí son diffuse, specular, normals y emission/indirect lighting buffers en el modo 5.0 deferred rendering, respectivamente:

Adicionalmente, usted puede ver el contenido del depth buffer al escoger “Depth” del desplegable:

Al isolar el canal alpha de la render texture, usted puede ver occlusion (almacenado en RT0 alpha) y smothness (almacenado en RT1 alpha) del deferred g-buffer:

La iluminación de emisión y ambiente/indirecta en esta escena es bastante oscura; podemos hacerla más visible cambiando el deslizador de Niveles:

Mirando valores de propiedad del shader

Para Draw calls, el Frame Debugger también puede mostrar valores de propiedad del shader que son utilizados. Oprima en la pestaña “Shader Properties” para mostrarlas:

Para cada propiedad, el valor se muestra, al igual en qué fases fue utilizado (vertex, fragment, geometría, hull, dominio). Tenga en cuenta que cuando utilice OpenGL (e.g. En un Mac), todas las propiedades shader se consideran parte de la fase del vertex shader, debido a cómo funcionan los shaders GLSL.

En el editor, los thumbnails para las texturas se muestran también, y oprimiendo en ellas, se resalta las texturas en la ventana del proyecto.

Técnicas alternativas a la depuración de frames

Usted también puede utilizar herramientas externas para depurar el rendering. La integración del Editor existe para ejecutar fácilmente el RenderDoc para inspeccionar la Escena o Game View en el Editor.

Usted también puede construir un standalone player y ejecutarlo en cualquiera de los siguientes:

Cuando haya hecho esto, capture un frame del rendering, luego pase a través de los draw calls y otros eventos de de rendering para ver lo qué sucede. Esto es un enfoque muy poderoso ya que las herramientas le pueden proporcionar a usted mucha información para profundizar.

La Ventana Para Renderizar Estadísticas
Optimizando el Tiempo de Carga del Shader
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961