Partilhar via


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

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:
  • COORD0 (que corresponde a D3DWRAPCOORD_0)
  • COORD1 (que corresponde a D3DWRAPCOORD_1)
  • COORD2 (que corresponde a D3DWRAPCOORD_2)
  • COORD3 (que corresponde a D3DWRAPCOORD_3)
  • U (que corresponde a D3DWRAP_U)
  • V (que corresponde a D3DWRAP_V)
  • W (que corresponde a D3DWRAP_W)
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.

 

Formato de efeito