Pregunta

Estoy codificando una aplicación 3D con DirectX 10 y me pregunto cómo es el abordaje de Shadermanagement.

¿Es más efectivo precargar todos los sombreadores que hay al inicio de la aplicación y luego usarlos según sea necesario o esto capacita los recursos del hardware si el número aumenta?

También me pregunto si es una cuestión de velocidad ordenar el renderizado por shader para minimizar los interruptores de shader.

¿Fue útil?

Solución

No he trabajado con DX10, solo DX9, pero supongo que estas cosas siguen siendo las mismas.

Dependiendo de su aplicación, puede generar sombreadores en tiempo de ejecución (muchos juegos 3D sofisticados actuales hacen esto).

Precargar los sombreadores no es una mala idea, dependiendo de si genera sombreadores, cuántos hay, cuáles son sus consideraciones de memoria, depende. Sin embargo, precargar un sombreador (con lo cual supongo que te refieres a crear la instancia ID3DXEffect) solo requiere memoria en tiempo de ejecución, sin uso de CPU.

Ordenar por sombreador es una buena idea. En general, ordenar por material es una buena idea, ya que el cambio de sombreadores conlleva cierta sobrecarga (no excesiva, pero notable según la complejidad de su aplicación).

Para ordenar sus llamadas, lea esto: http://realtimecollisiondetection.net/blog/?p = 86

Otros consejos

En D3D10, todos los recursos del dispositivo están virtualizados para que no se quede sin ellos. Por supuesto, aún puede agotar los recursos físicos en la tarjeta y causar muchos golpes si no presta atención a lo que está haciendo.

Además, han cambiado significativamente el estado del dispositivo para reducir el costo de cambiar de estado, incluidos los sombreadores.

Pero lo que realmente estás preguntando es " ¿es el método X más rápido que el método Y para mi aplicación? " y aunque D3D10 simplifica la administración de estado para acelerar el cambio de estado, la única forma de responder la pregunta anterior es realizar una medición de rendimiento con su aplicación y sus datos.

La publicación del blog realtimecollectiondetection.net solo está hablando de ordenar sus llamadas de sorteo. Esto conducirá a una menor conmutación de estado. No importa cuán rápido sea el cambio de estado, hacer menos es siempre más rápido. Eso es un buen consejo general.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top