Estados de efeito (Direct3D 9)
Os estados de efeito são usados para inicializar estados de pipeline em preparação para o processamento de vértices e pixels.
effect state [ [index] ] = expression;
Em que:
- estado de efeito - Semelhante aos estados de pipeline de função fixa tradicionais. Uma lista completa de estados é fornecida abaixo.
- [ [index] ] - Índice inteiro opcional. O índice identifica um estado específico dentro de uma matriz de estados de efeito. Os parênteses exteriores indicam que um índice é opcional. Se for utilizado um índice, certifique-se de que utiliza os parênteses interiores.
- expression - Expressão de atribuição de estado. Consulte Expressões (Direct3D 9).
Cada estado tem um tipo de dados nativo. Este é o tipo de dados em que o estado espera que os valores estejam quando o efeito os atribui. Os tipos de dados que cada estado espera estão listados abaixo.
Observe que a interface de efeito tentará converter valores para o tipo apropriado o mais cedo possível. Os valores literais podem ser convertidos em tempo de compilação. Não literais (ou seja, variáveis regulares) precisam ser lançadas quando os métodos set apropriados são chamados. Por exemplo, a interface de efeito irá converter valores definidos usando SetBool, SetValuee outras funções semelhantes, se necessário. Para um melhor desempenho, certifique-se de que os valores passados para a interface de efeitos já são do tipo correto e não precisarão de transmissão. Se o tempo de execução não conseguir converter um valor, um erro será retornado.
Os estados de efeito podem ser divididos nas seguintes categorias:
- Estados de Luz
- Estados Materiais
- Render Estados
- Estados do amostrador
- Estados do estágio do amostrador
- Shader Estados
- Shader Constant Estados
- Estados de textura
- Estados do estágio de textura
- Transformar Estados
Estados de luz
Para permitir o melhor desempenho na aplicação de um efeito, todos os componentes de uma luz ou de um material devem ser especificados no ficheiro de efeitos. Os estados que você não declara são definidos como algum valor padrão porque não há como o Direct3D definir estados leves individualmente.
Estado da luz | Tipo | Valores |
---|---|---|
LightAmbient[n] | flutuação4 | Veja o membro Ambient da D3DLIGHT9. |
Atenuação da luz0[n] | flutuar | Veja o membro Attenuation0 da D3DLIGHT9. |
Atenuação da luz1[n] | flutuar | Veja o membro da Atenuação1 da D3DLIGHT9. |
Atenuação da luz2[n] | flutuar | Veja o membro Attenuation2 da D3DLIGHT9. |
LightDiffuse[n] | flutuação4 | Veja o membro difuso da D3DLIGHT9. |
LightDirection[n] | flutuar3 | Consulte o membro da Direção de D3DLIGHT9. |
LightEnable[n] | Bool | VERDADEIRO ou FALSO. Consulte o argumento bEnable em LightEnable. |
LightFalloff[n] | flutuar | D3DCOLORVALUE. Veja o membro Falloff de D3DLIGHT9. |
LightPhi[n] | flutuar | Veja o membro Phi da D3DLIGHT9. |
LightPosition[n] | flutuar3 | Veja o membro da posição de D3DLIGHT9. |
Faixa de luz[n] | flutuar | Consulte o membro Range da D3DLIGHT9. |
LightSpecular[n] | flutuação4 | Veja o membro especular de D3DLIGHT9. |
LightTheta[n] | flutuar | Veja o membro Theta da D3DLIGHT9. |
Tipo de luz[n] | dword | O mesmo valor que a matriz de até n D3DLIGHTTYPE valores sem o prefixo D3DLIGHT_. |
Exemplo:
LightEnable[0] = TRUE;
LightType[0] = POINT;
LightPosition[0] = float3<10.0f, 1.0f, 23.0f>;
LightAmbient[0] = float4<0.7f, 0.0f, 0.0f, 1.0f>;
Isso permitirá a iluminação, fará a iluminação pontual do tipo, definirá a posição da luz para float3<10.0f, 1.0f, 23.0f>e definirá a cor ambiente para float4<0.7f, 0.0f, 0.0f, 1.0f>.
Estados materiais
Os estados que você não declara são definidos como algum valor padrão porque não há como o Direct3D definir estados de material individualmente.
Estado material | Tipo | Valores |
---|---|---|
MaterialAmbiente | flutuação4 | O mesmo valor que Ambient |
MaterialDifuso | flutuação4 | O mesmo valor que difusa |
MaterialEmissivo | flutuação4 | O mesmo valor que Emissivo |
MaterialPower | flutuar | O mesmo valor que Power |
MaterialSpecular | flutuação4 | O mesmo valor que especular |
Exemplo:
MaterialDiffuse = float4<0.7f, 0.0f, 0.0f, 1.0f>;
MaterialPower = 3.0f;
Isso definirá a cor difusa para float4<0.7f, 0.0f, 0.0f, 1.0f> e tornará a potência do material 3.0f.
Estados de renderização
Existem dois tipos de estados de renderização:
Estados de renderização do Pixel Pipe
Os estados de renderização do arquivo de efeito têm nomes semelhantes aos estados do pipeline de função fixa, geralmente com o prefixo removido.
Estado de renderização | Tipo | Valores |
---|---|---|
AlphaBlendEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_ALPHABLENDENABLE em D3DRENDERSTATETYPE. |
AlphaFunc | dword | Os mesmos valores que D3DCMPFUNC sem o prefixo D3DCMP_. Ver D3DRS_ALPHAFUNC. |
AlfaRef | dword | Os mesmos valores que D3DRS_ALPHAREF. |
AlphaTestEnable | dword | Verdadeiro ou Falso. Ver D3DRS_ALPHATESTENABLE. |
BlendOp | dword | Os mesmos valores que D3DBLENDOP sem o prefixo D3DBLENDOP_. |
ColorWriteEnable | dword | Combinação bit a bit de VERMELHO, VERDE, AZUL e ALPHA. Ver D3DRS_COLORWRITEENABLE. |
DepthBias | flutuar | Os mesmos valores que D3DRS_DEPTHBIAS. |
DestBlend | dword | Os mesmos valores que D3DBLEND sem o prefixo D3DBLEND_. |
DitherEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_DITHERENABLE. |
Modo de preenchimento | dword | Os mesmos valores que D3DFILLMODE sem o prefixo D3DFILL_. |
LastPixel | dword | Verdadeiro ou Falso. Ver D3DRS_LASTPIXEL. |
Modo Sombra | dword | Os mesmos valores que D3DSHADEMODE sem o prefixo D3DSHADE_. |
SlopeScaleDepthBias | flutuar | Os mesmos valores que D3DRS_SLOPESCALEDEPTHBIAS. |
SrcBlend | dword | Os mesmos valores que D3DBLEND sem o prefixo D3DBLEND_. |
SRGBWriteEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_SRGBWRITEENABLE. |
StencilEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_STENCILENABLE. |
StencilFail | dword | Os mesmos valores que D3DSTENCILCAPS sem o prefixo D3DSTENCILCAP_. Ver D3DRS_STENCILFAIL. |
StencilFunc | dword | Os mesmos valores que D3DCMPFUNC sem o prefixo D3DCMP_. Ver D3DRS_STENCILFUNC. |
StencilMask | dword | Os mesmos valores que D3DRS_STENCILMASK. |
StencilPass | dword | Os mesmos valores que D3DSTENCILCAPS sem o prefixo D3DSTENCILCAP_. Ver D3DRS_STENCILPASS. |
StencilRef | Int | Os mesmos valores que D3DRS_STENCILREF. |
StencilWriteMask | dword | Os mesmos valores que D3DRS_STENCILWRITEMASK. |
StencilZFail | dword | Os mesmos valores que D3DSTENCILCAPS sem o prefixo D3DSTENCILCAP_. Ver D3DRS_STENCILZFAIL. |
Fator de textura | dword | Os mesmos valores que D3DCOLOR. Os mesmos valores que D3DRS_TEXTUREFACTOR. |
Wrap0 - Wrap15 | dword | Os valores são os mesmos que os valores usados por D3DRS_WRAP0. Os valores válidos são:
|
ZEnable | dword | Os mesmos valores que D3DZBUFFERTYPE sem o prefixo D3DZB_. |
ZFunc | dword | Os mesmos valores que D3DCMPFUNC sem o prefixo D3DCMP_. Veja D3DRS_ZFUNC. |
ZWriteEnable | Bool | Verdadeiro ou Falso. Ver D3DRS_ZWRITEENABLE. |
Exemplo:
AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;
Isso permitirá a mistura alfa e fará com que todas as geometrias sejam renderizadas em wireframe.
Estados de renderização do tubo de vértice
Os estados de renderização do arquivo de efeito têm nomes semelhantes aos estados do pipeline de função fixa, geralmente com o prefixo removido.
Estado de renderização | Tipo | Valores |
---|---|---|
Ambiente | flutuação4 | Os mesmos valores que D3DRS_AMBIENT. |
AmbienteMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Veja D3DRS_AMBIENTMATERIALSOURCE. |
Clipping | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_CLIPPING. |
ClipPlaneEnable | dword | Combinação bit a bit de D3DCLIPPLANE0 - D3DCLIPPLANE5 macros. Consulte e D3DRS_CLIPPLANEENABLE D3DCLIPPLANEn. |
ColorVertex | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_COLORVERTEX. |
CullMode | dword | Os mesmos valores que D3DCULL sem o prefixo D3DCULL_. |
DiffuseMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Ver D3DRS_DIFFUSEMATERIALSOURCE. |
EmissiveMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Ver D3DRS_EMISSIVEMATERIALSOURCE. |
Cor do nevoeiro | dword | Os mesmos valores que D3DCOLOR. Ver D3DRS_FOGCOLOR. |
NevoeiroDensidade | flutuar | Os mesmos valores que D3DRS_FOGDENSITY. |
FogEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_FOGENABLE. |
FogEnd | flutuar | Os mesmos valores que D3DRS_FOGEND. |
FogStart [en] | flutuar | Os mesmos valores que D3DRS_FOGSTART. |
FogTableMode | dword | Os mesmos valores que D3DFOGMODE. Visualizar D3DRS_FOGTABLEMODE em D3DRENDERSTATETYPE. |
FogVertexMode | dword | Os mesmos valores que D3DFOGMODE sem o prefixo D3DFOG_. |
IndexedVertexBlendEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_INDEXEDVERTEXBLENDENABLE. |
Iluminação | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_LIGHTING. |
LocalViewer | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_LOCALVIEWER. |
MultiSampleAntialias | Bool | Os mesmos valores que D3DRS_MULTISAMPLEANTIALIAS. |
MultiSampleMask | dword | Os mesmos valores que D3DRS_MULTISAMPLEMASK. |
NormalizeNormals | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_NORMALIZENORMALS. |
PatchSegments | flutuar | Os mesmos valores que nSegments em SetNPatchMode. |
PointScale_A | flutuar | Os mesmos valores que D3DRS_POINTSCALE_A. |
PointScale_B | flutuar | Os mesmos valores que D3DRS_POINTSCALE_B. |
PointScale_C | flutuar | Os mesmos valores que D3DRS_POINTSCALE_C. |
PointScaleEnable | Bool | Os mesmos valores que D3DRS_POINTSCALEENABLE. |
Tamanho do ponto | flutuar | Os mesmos valores que D3DRS_POINTSIZE. |
PointSize_Min | flutuar | Os mesmos valores que D3DRS_POINTSIZE_MIN. |
PointSize_Max | flutuar | Os mesmos valores que D3DRS_POINTSIZE_MAX sem o prefixo D3DRS_. |
PointSpriteEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_POINTSPRITEENABLE. |
RangeFogEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_RANGEFOGENABLE. |
SpecularEnable | Bool | Verdadeiro ou Falso. Os mesmos valores que D3DRS_SPECULARENABLE. |
SpecularMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Ver D3DRS_SPECULARMATERIALSOURCE. |
TweenFactor | flutuar | Os mesmos valores que D3DRS_TWEENFACTOR. |
VertexBlend | dword | Os mesmos valores que D3DVERTEXBLENDFLAGS sem o prefixo D3DVBF_. Ver D3DRS_VERTEXBLEND. |
Exemplo:
Ambient = float4<0.7f, 0.0f, 0.0f, 1.0f>;
CullMode = CCW;
FogColor = 0xff0000;
Isso fará com que a cor ambiente flutue4<0.7f, 0.0f, 0.0f, 1.0f>, defina o modo de abate de backface no sentido anti-horário e defina a cor da névoa para vermelho.
Estados do amostrador
Um estado sampler representa um objeto sampler.
Estado | Tipo | Valores |
---|---|---|
Amostrador | amostrador | NULLou um bloco de estado do amostrador. |
Estados do estágio do amostrador
Os estados do estágio do amostrador são usados para a amostragem de texturas. O estado do amostrador determina os tipos de filtragem e os modos de endereçamento de textura.
Estado do amostrador | Tipo | Valores |
---|---|---|
EndereçoU[16] | dword | Os mesmos valores que D3DTEXTUREADDRESS sem o prefixo D3DTADDRESS_. Ver D3DSAMP_ADDRESSU. |
EndereçoV[16] | dword | Os mesmos valores que D3DTEXTUREADDRESS sem o prefixo D3DTADDRESS_. Ver D3DSAMP_ADDRESSV. |
EndereçoW[16] | dword | Os mesmos valores que D3DTEXTUREADDRESS sem o prefixo D3DTADDRESS_. Ver D3DSAMP_ADDRESSW. |
BorderColor[16] | D3DCOLOR | Os mesmos valores que D3DTEXTUREFILTERTYPE sem o prefixo D3DTEXF_. Ver D3DSAMP_BORDERCOLOR. |
MagFilter[16] | dword | Os mesmos valores que D3DTEXTUREFILTERTYPE sem o prefixo D3DTEXF_. Ver D3DSAMP_MAGFILTER. |
MaxAnisotropia[16] | dword | Os mesmos valores que D3DSAMP_MAXANISOTROPY sem o prefixo D3DSAMP_. |
MaxMipLevel[16] | Int | Os mesmos valores que D3DSAMP_MAXMIPLEVEL sem o prefixo D3DSAMP_. |
MinFilter[16] | dword | Os mesmos valores que D3DSAMP_MINFILTER sem o prefixo D3DSAMP_. |
MipFilter[16] | dword | Os mesmos valores que D3DSAMP_MIPFILTER sem o prefixo D3DSAMP_. |
MipMapLodBias[16] | flutuar | Os mesmos valores que D3DSAMP_MIPMAPLODBIAS sem o prefixo D3DSAMP_. |
SRGBTexture | Bool | O mesmo valor que D3DSAMP_SRGBTEXTURE sem o prefixo D3DSAMP_. |
Exemplo:
AddressU[0] = CLAMP;
AddressV[0] = CLAMP;
AddressW[0] = CLAMP;
Este grampo os valores UVW entre 0 e 1.
Estados Shader
Há apenas dois estados de sombreador de efeito: um associado a um objeto sombreador de vértice e o outro associado a um objeto de sombreador de pixel.
Estado de sombreamento | Tipo | Valores |
---|---|---|
PixelShader | PixelShader | NULL, um bloco de montagem, um destino de compilação ou um parâmetro de sombreador de pixel. |
VertexShader | Vertexshader | NULL, um bloco de montagem, um destino de compilação ou um parâmetro de sombreador de pixel. |
Exemplo:
VertexShader = compile vs_1_1 VSTexture();
PixelShader = NULL;
Isso compilará o VSTexture, um sombreador de vértice definido anteriormente no arquivo .fx, para o sombreador de vértice versão 1.1 e, em seguida, definirá esse sombreador compilado como o sombreador de vértice. O sombreador de pixel é atribuído a NULL .
Estados da constante de sombreamento
Os estados da constante de sombreador são usados para acessar os parâmetros constantes do sombreador.
Estado constante do sombreador | Tipo | Valores |
---|---|---|
PixelShaderConstant | flutuar[m[n]] | m x n matriz de flutuadores; m e n são opcionais. |
PixelShaderConstant1 | flutuação4 | Um flutuador 4D. |
PixelShaderConstant2 | flutuação4x2 | Dois flutuadores 4D. |
PixelShaderConstant3 | flutuação4x3 | Três flutuadores 4D. |
PixelShaderConstant4 | flutuação4x4 | Quatro flutuadores 4D. |
PixelShaderConstantB | Bool[m[n]] | m x n matriz de boóis; m e n são opcionais. |
PixelShaderConstantI | int[m[n]] | m x n matriz de ints. m e n são opcionais. |
PixelShaderConstantF | flutuar[m[n]] | m x n matriz de flutuadores. m e n são opcionais. |
VertexShaderConstant | flutuar[m[n]] | m x n matriz de flutuadores. m e n são opcionais. |
VertexShaderConstant1 | flutuação4 | Um flutuador 4D. |
VertexShaderConstant2 | flutuação4x2 | Dois flutuadores 4D. |
VertexShaderConstant3 | flutuação4x3 | Três flutuadores 4D. |
VertexShaderConstant4 | flutuação4x4 | Quatro flutuadores 4D. |
VertexShaderConstantB | Bool[m[n]] | m x n matriz de boóis. m e n são opcionais. |
VertexShaderConstantI | int[m[n]] | m x n matriz de ints. m e n são opcionais. |
VertexShaderConstantF | flutuar[m[n]] | m x n matriz de flutuadores. m e n são opcionais. |
Estados de textura
Os estados de textura inicializam as texturas usadas pelo liquidificador multitextura.
Estado da textura | Tipo | Valores |
---|---|---|
Textura[8] | textura | NULLou um parâmetro texture. |
Estados do estágio de textura
Os estados do estágio de textura configuram as texturas e os estágios de textura no liquidificador multitextura.
Estado do estágio de textura | Tipo | Valores |
---|---|---|
AlphaOp[8] | dword | O mesmo que D3DTEXTUREOP sem o prefixo D3DTOP_. Ver D3DTSS_ALPHAOP. |
AlphaArg0[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_ALPHAARG0. |
AlphaArg1[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_ALPHAARG1. |
AlphaArg2[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_ALPHAARG2. |
ColorArg0[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_COLORARG0. |
ColorArg1[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_COLORARG1. |
ColorArg2[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_COLORARG2. |
ColorOp[8] | dword | O mesmo que D3DTEXTUREOP sem o prefixo D3DTOP_. Ver D3DTSS_COLOROP. |
BumpEnvLScale[8] | flutuar | Os mesmos valores que D3DTSS_BUMPENVLSCALE sem o prefixo D3DTSS_TCI. |
BumpEnvLOffset[8] | flutuar | Os mesmos valores que D3DTSS_BUMPENVLOFFSET sem o prefixo D3DTSS_TCI. |
BumpEnvMat00[8] | flutuar | Os mesmos valores que D3DTSS_BUMPENVMAT00. |
BumpEnvMat01[8] | flutuar | Os mesmos valores que D3DTSS_BUMPENVMAT01. |
BumpEnvMat10[8] | flutuar | Os mesmos valores que D3DTSS_BUMPENVMAT10. |
BumpEnvMat11[8] | flutuar | Os mesmos valores que D3DTSS_BUMPENVMAT11. |
ResultArg[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Ver D3DTSS_RESULTARG. |
TexCoordIndex[8] | dword | Os mesmos valores que D3DTSS_TEXCOORDINDEX sem o prefixo D3DTSS_TCI. |
TextureTransformFlags[8] | dword | Os mesmos valores que D3DTEXTURETRANSFORMFLAGS valores sem o prefixo D3DTTFF_. Ver D3DTSS_TEXTURETRANSFORMFLAGS. |
Transformar Estados
Defina os estados de transformação para inicializar matrizes de transformação. Os efeitos usam matrizes transpostas para eficiência. Você pode fornecer matrizes transpostas para um efeito, ou um efeito transporá automaticamente as matrizes antes de usá-las.
Estado de transformação | Tipo | Valores |
---|---|---|
ProjeçãoTransformar | flutuação4x4 | Uma matriz 4x4 de flutuadores. Os mesmos valores que D3DTS_PROJECTION sem o prefixo D3DTS_. |
TextureTransform[8] | flutuação4x4 | Uma matriz 4x4 de flutuadores. Os mesmos valores que D3DTRANSFORMSTATETYPE sem o prefixo D3DTS_. |
ViewTransform | flutuação4x4 | Uma matriz 4x4 de flutuadores. Os mesmos valores que D3DTS_VIEW sem o prefixo D3DTS_. |
WorldTransform | flutuação4x4 | Uma matriz 4x4 de flutuadores. |