Marcas D3DXSHADER

Las marcas D3DXSHADER se usan para analizar, compilar o ensamblar sombreadores.

Marcas del analizador

El sistema de efectos solo usa las marcas de tiempo de análisis (antes de la compilación de efectos) al crear un compilador de efectos. Por ejemplo, podría crear un objeto de compilador con D3DXSHADER_PACKMATRIX_COLUMNMAJOR y, a continuación, usar ese objeto compilador repetidamente con marcas de compilador diferentes para generar código especializado.

Constante Descripción
D3DXSHADER_PACKMATRIX_COLUMNMAJOR
/Zpc
A menos que se especifique explícitamente, las matrices se empaquetarán en orden principal de columna (cada vector estará en una sola columna) cuando se pase a y desde el sombreador. Por lo general, esto es más eficaz porque permite la multiplicación de la matriz vectorial mediante una serie de productos de puntos.
D3DXSHADER_PACKMATRIX_ROWMAJOR
/Zpr
A menos que se especifique explícitamente, las matrices se empaquetarán en orden principal de fila (cada vector estará en una sola fila) cuando se pase a o desde el sombreador.

Marcas del compilador

El compilador HLSL de DirectX 10 ahora es el compilador predeterminado. Consulte Effect-Compiler Tool (Herramienta del compilador de efectos ) para obtener más información.

En la tabla siguiente se detallan las marcas disponibles en Direct3D 9 y Direct3D 10. El valor de la marca es la opción fxc equivalente.

Constante o valor Descripción
D3DXSHADER_AVOID_FLOW_CONTROL
/Gfa
Se trata de una sugerencia al compilador para evitar el uso de instrucciones de control de flujo.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_DEBUG
/ZI
Inserte el nombre de archivo de depuración, los números de línea y la información de tipos y símbolos durante la compilación del sombreador.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY
/Gec
Compile ps_1_x sombreadores como ps_2_0. Los efectos que especifican destinos de ps_1_x se compilarán en lugar de ps_2_0 destinos porque se trata de la versión mínima del sombreador admitida por la versión del compilador de sombreador enviada con DirectX 10. Esta marca no tiene ningún efecto cuando se usa con destinos de compilación de nivel superior.
Direct3D 9: no
Direct3D 10: sí
D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
N/D
Forzar al compilador a compilar con el siguiente destino de software disponible más alto para sombreadores de píxeles. Esta marca también desactiva las optimizaciones y la depuración.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
N/D
Forzar al compilador a compilar con el siguiente destino de software disponible más alto para sombreadores de vértices. Esta marca también desactiva las optimizaciones y la depuración.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_IEEE_STRICTNESS
/Sig
Deshabilite las optimizaciones que pueden hacer que la salida de un programa de sombreador compilado sea diferente de la salida de un programa compilado con el compilador de sombreador directX 9 debido a errores de precisión pequeños en matemáticas de punto flotante.
Direct3D 9: no
Direct3D 10: sí
D3DXSHADER_NO_PRESHADER
/Op
Deshabilita los prehadadores. El compilador no extraerá expresiones estáticas para su evaluación en la CPU del host. Además, el compilador no desvía ninguna expresión al compilar funciones independientes.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_OPTIMIZATION_LEVEL0
/O0
Nivel de optimización más bajo. Puede generar código más lento, pero lo hará más rápidamente. Esto puede ser útil en un ciclo de desarrollo de sombreador muy iterativo.
Direct3D 9: no
Direct3D 10: sí
D3DXSHADER_OPTIMIZATION_LEVEL1
/O1
Segundo nivel de optimización más bajo.
Direct3D 9: no
Direct3D 10: sí
D3DXSHADER_OPTIMIZATION_LEVEL2
/O2
Segundo nivel de optimización más alto.
Direct3D 9: no
Direct3D 10: sí
D3DXSHADER_OPTIMIZATION_LEVEL3
/O3
Nivel de optimización más alto. Producirá el mejor código posible, pero puede tardar mucho más tiempo en hacerlo. Esto será útil para las compilaciones finales de una aplicación donde el rendimiento es el factor más importante.
Direct3D 9: no
Direct3D 10: sí
D3DXSHADER_PARTIALPRECISION
/Gpp
Forzar que todos los cálculos del sombreador resultante se produzcan con precisión parcial. Esto puede dar lugar a una evaluación más rápida de sombreadores en algún hardware.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_PREFER_FLOW_CONTROL
/Gfp
Se trata de una sugerencia para que el compilador prefiera usar instrucciones de control de flujo.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_SKIPOPTIMIZATION
/Od
Indique al compilador que omita los pasos de optimización durante la generación de código. A menos que esté intentando aislar un problema en el código y sospecha que el compilador, no se recomienda usar esta opción.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_SKIPVALIDATION
/Vd
No valide el código generado con las restricciones y funcionalidades conocidas. Esta opción solo se recomienda al compilar sombreadores que se sabe que funcionan (es decir, sombreadores que se han compilado antes sin esta opción). El tiempo de ejecución siempre valida los sombreadores antes de establecerlos en el dispositivo.
Direct3D 9: sí
Direct3D 10: sí
D3DXSHADER_USE_LEGACY_D3DX9_31_DLL
/LD
Habilite el uso del compilador HLSL de Direct3D 9 original. OCT2006_d3dx9_31_x86.cab o OCT2006_d3dx9_31_x64.cab deben incluirse como parte de las aplicaciones redist. Esta marca es necesaria para compilar ps_1_x sombreadores sin usar la marca de promoción para ps_2_0. Al especificar esta marca al obtener una interfaz ID3DXEffectCompiler , las llamadas posteriores a CompileEffect y CompileShader a través de este objeto usan el compilador heredado.
Direct3D 9: sí
Direct3D 10: no

Marcas del ensamblador

El sistema de efectos utiliza las marcas de ensamblador para optimizar el código de ensamblador y sombreador y efecto.

Constante Descripción
D3DXSHADER_DEBUG
Inserte el nombre de archivo de depuración, los números de línea y la información de tipos y símbolos durante la compilación del sombreador.
D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
Forzar al compilador a compilar con el siguiente destino de software disponible más alto para sombreadores de píxeles. Esta marca también desactiva las optimizaciones y la depuración.
D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
Forzar al compilador a compilar con el siguiente destino de software disponible más alto para sombreadores de vértices. Esta marca también desactiva las optimizaciones y la depuración.
D3DXSHADER_SKIPVALIDATION
No valide el código generado con las restricciones y funcionalidades conocidas. Esta opción solo se recomienda al compilar sombreadores que se sabe que funcionan (es decir, sombreadores que se han compilado antes sin esta opción). El tiempo de ejecución siempre valida los sombreadores antes de establecerlos en el dispositivo.

Observaciones

El sistema de efectos usará marcas del analizador cuando las llamen las siguientes funciones:

El sistema de efectos usará marcas del compilador cuando las llamen las siguientes funciones:

Además, puede usar marcas del compilador al crear un efecto llamando a D3DXCreateEffect (o D3DXCreateEffectFromFile o D3DXCreateEffectFromResource).

  • Si pasa un archivo .fx no compilado, el sistema de efectos usará el parámetro de entrada de marca durante la compilación.
  • Si pasa un efecto compilado, el sistema de efectos omitirá las marcas del compilador, ya que no son necesarias para cargar el efecto.

El sistema de efectos usará marcas de ensamblador cuando las llamen las siguientes funciones:

La aplicación de marcas de compilador o marcas de ensamblador a la API incorrecta producirá un error en la validación del sombreador. Compruebe el valor devuelto del código de error de Direct3D de la función con la herramienta búsqueda de errores de DirectX (DXErr.exe) para ayudar a realizar un seguimiento de este error. Puede obtener DXErr.exe y obtener información sobre ella desde el SDK de DirectX. Para obtener información sobre el SDK de DirectX, consulte ¿Dónde está el SDK de DirectX?.

Requisitos

Requisito Value
Encabezado
D3dx9shader.h

Vea también

Constantes D3DX