Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os estados de efeito são usados para inicializar estados de pipeline em preparação para processamento de vértice e pixel.
effect state [ [index] ] = expression;
Onde:
- estado de efeito – semelhante aos estados de pipeline de função fixa tradicionais. Uma lista completa de estados é fornecida abaixo.
- [ [índice] ] - Índice inteiro opcional. O índice identifica um estado específico em uma matriz de estados de efeito. Os colchetes externos indicam que um índice é opcional. Se um índice for usado, use os colchetes internos.
- expressão – Expressão de atribuição de estado. Consulte expressões de(Direct3D 9).
Cada estado tem um tipo de dados nativo. Esse é o tipo de dados no qual 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 no tipo apropriado o mais cedo possível. Valores literais podem ser convertidos em tempo de compilação. Não literais (ou seja, variáveis regulares) precisam ser convertidos quando os métodos set apropriados são chamados. Por exemplo, a interface de efeito converterá valores definidos usando SetBool, SetValuee outras funções semelhantes, se necessário. Para obter um melhor desempenho, verifique se os valores passados para a interface de efeito já são do tipo correto e não precisarão de conversão. Se o runtime não puder converter um valor, um erro será retornado.
Os estados de efeito podem ser divididos nas seguintes categorias:
- de Estados Claros
- de Estados materiais
- renderizar estados
- de estados de amostragem
- de estados de estágio do sampler
- estados de sombreador
- de estados constantes do sombreador
- de estados de textura
- estados de estágio de textura
- de Estados de Transformação
Estados claros
Para habilitar o melhor desempenho para aplicar um efeito, todos os componentes de uma luz ou de um material devem ser especificados no arquivo de efeito. 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 claro | Tipo | Valores |
|---|---|---|
| LightAmbient[n] | float4 | Consulte o membro Ambient do D3DLIGHT9. |
| LightAttenuation0[n] | flutuar | Consulte o membro atenuado0 de D3DLIGHT9. |
| LightAttenuation1[n] | flutuar | Consulte o membro atenuado1 do D3DLIGHT9. |
| LightAttenuation2[n] | flutuar | Consulte o membro Atenuado2 do D3DLIGHT9. |
| LightDiffuse[n] | float4 | Consulte o membro difuso do D3DLIGHT9. |
| LightDirection[n] | float3 | Consulte o membro Direction do D3DLIGHT9. |
| LightEnable[n] | Bool | verdadeiro ou false. Consulte o argumento bEnable em lightenable. |
| LightFalloff[n] | flutuar | D3DCOLORVALUE. Consulte o membro falloff do D3DLIGHT9. |
| LightPhi[n] | flutuar | Consulte o membro Phi do D3DLIGHT9. |
| LightPosition[n] | float3 | Consulte o membro Position do D3DLIGHT9. |
| LightRange[n] | flutuar | Consulte o membro Range do D3DLIGHT9. |
| LightSpecular[n] | float4 | Consulte o membro Especular do D3DLIGHT9. |
| LightTheta[n] | flutuar | Consulte o membro Theta do D3DLIGHT9. |
| LightType[n] | dword | 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 habilitará a iluminação, fará o ponto de iluminação do tipo, definirá a posição de luz como float3<10,0f, 1,0f, 23,0f>e definirá a cor ambiente como 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 materiais individualmente.
| Estado do material | Tipo | Valores |
|---|---|---|
| MaterialAmbient | float4 | Mesmo valor que ambiente |
| MaterialDiffuse | float4 | Mesmo valor que difuso |
| MaterialEmissive | float4 | Mesmo valor que Emissive |
| MaterialPower | flutuar | Mesmo valor que Power |
| MaterialSpecular | float4 | Mesmo valor que Especular |
Exemplo:
MaterialDiffuse = float4<0.7f, 0.0f, 0.0f, 1.0f>;
MaterialPower = 3.0f;
Isso definirá a cor difusa como float4<0,7f, 0,0f, 0,0f, 1,0f> e tornará a potência do material 3.0f.
Renderizar estados
Há dois tipos de estados de renderização:
Estados de renderização de pipe de pixel
Os estados de renderização de arquivo de efeito têm nomes semelhantes aos estados de pipeline de função fixa, geralmente com o prefixo removido.
| Estado de renderização | Tipo | Valores |
|---|---|---|
| AlphaBlendEnable | Bool | True ou False. Mesmos valores que D3DRS_ALPHABLENDENABLE em D3DRENDERSTATETYPE. |
| AlphaFunc | dword | Os mesmos valores que D3DCMPFUNC sem o prefixo D3DCMP_. Veja D3DRS_ALPHAFUNC. |
| AlphaRef | dword | Os mesmos valores que D3DRS_ALPHAREF. |
| AlphaTestEnable | dword | True ou False. Veja D3DRS_ALPHATESTENABLE. |
| BlendOp | dword | Os mesmos valores que D3DBLENDOP sem o prefixo D3DBLENDOP_. |
| ColorWriteEnable | dword | Combinação bit a bit de RED, GREEN, BLUE e ALPHA. Veja D3DRS_COLORWRITEENABLE. |
| DepthBias | flutuar | Os mesmos valores que D3DRS_DEPTHBIAS. |
| DestBlend | dword | Os mesmos valores que D3DBLEND sem o prefixo D3DBLEND_. |
| DitherEnable | Bool | True ou False. Os mesmos valores que D3DRS_DITHERENABLE. |
| FillMode | dword | Os mesmos valores que D3DFILLMODE sem o prefixo D3DFILL_. |
| LastPixel | dword | True ou False. Veja D3DRS_LASTPIXEL. |
| ShadeMode | 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 | True ou False. Os mesmos valores que D3DRS_SRGBWRITEENABLE. |
| EstêncilEnable | Bool | True ou False. Os mesmos valores que D3DRS_STENCILENABLE. |
| StencilFail | dword | Os mesmos valores que D3DSTENCILCAPS sem o prefixo D3DSTENCILCAP_. Veja D3DRS_STENCILFAIL. |
| StencilFunc | dword | Os mesmos valores que D3DCMPFUNC sem o prefixo D3DCMP_. Veja D3DRS_STENCILFUNC. |
| StencilMask | dword | Os mesmos valores que D3DRS_STENCILMASK. |
| StencilPass | dword | Os mesmos valores que D3DSTENCILCAPS sem o prefixo D3DSTENCILCAP_. Veja D3DRS_STENCILPASS. |
| EstêncilRef | int | Os mesmos valores que D3DRS_STENCILREF. |
| StencilWriteMask | dword | Os mesmos valores que D3DRS_STENCILWRITEMASK. |
| EstêncilZFail | dword | Os mesmos valores que D3DSTENCILCAPS sem o prefixo D3DSTENCILCAP_. Veja D3DRS_STENCILZFAIL. |
| TextureFactor | dword | Mesmos valores que D3DCOLOR. Os mesmos valores que D3DRS_TEXTUREFACTOR. |
| Wrap0 - Wrap15 | dword | Os valores são os mesmos que os valores usados pelo 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 | True ou False. Veja D3DRS_ZWRITEENABLE. |
Exemplo:
AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;
Isso habilitará a mesclagem alfa e fará com que todas as geometrias sejam renderizadas em wireframe.
Estados de renderização de pipe de vértice
Os estados de renderização de arquivo de efeito têm nomes semelhantes aos estados de pipeline de função fixa, geralmente com o prefixo removido.
| Estado de renderização | Tipo | Valores |
|---|---|---|
| Ambiente | float4 | Os mesmos valores que D3DRS_AMBIENT. |
| AmbientMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Veja D3DRS_AMBIENTMATERIALSOURCE. |
| Recorte | Bool | True ou False. Os mesmos valores que D3DRS_CLIPPING. |
| ClipPlaneEnable | dword | Combinação bit a bit de D3DCLIPPLANE0 – macros D3DCLIPPLANE5. Consulte E D3DRS_CLIPPLANEENABLE D3DCLIPPLANEn. |
| ColorVertex | Bool | True ou False. 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_. Veja D3DRS_DIFFUSEMATERIALSOURCE. |
| EmissiveMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Veja D3DRS_EMISSIVEMATERIALSOURCE. |
| FogColor | dword | Mesmos valores que D3DCOLOR. Consulte D3DRS_FOGCOLOR. |
| FogDensity | flutuar | Os mesmos valores que D3DRS_FOGDENSITY. |
| FogEnable | Bool | True ou False. Os mesmos valores que D3DRS_FOGENABLE. |
| FogEnd | flutuar | Os mesmos valores que D3DRS_FOGEND. |
| FogStart | flutuar | Os mesmos valores que D3DRS_FOGSTART. |
| FogTableMode | dword | Mesmos valores que D3DFOGMODE. Veja D3DRS_FOGTABLEMODE em D3DRENDERSTATETYPE. |
| FogVertexMode | dword | Os mesmos valores que D3DFOGMODE sem o prefixo D3DFOG_. |
| IndexedVertexBlendEnable | Bool | True ou False. Mesmos valores que D3DRS_INDEXEDVERTEXBLENDENABLE. |
| Iluminação | Bool | True ou False. Os mesmos valores que D3DRS_LIGHTING. |
| LocalViewer | Bool | True ou False. Os mesmos valores que D3DRS_LOCALVIEWER. |
| MultiSampleAntialias | Bool | Os mesmos valores que D3DRS_MULTISAMPLEANTIALIAS. |
| MultiSampleMask | dword | Os mesmos valores que D3DRS_MULTISAMPLEMASK. |
| NormalizeNormals | Bool | True ou False. Os mesmos valores que D3DRS_NORMALIZENORMALS. |
| PatchSegments | flutuar | 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. |
| PointSize | 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 | True ou False. Os mesmos valores que D3DRS_POINTSPRITEENABLE. |
| RangeFogEnable | Bool | True ou False. Os mesmos valores que D3DRS_RANGEFOGENABLE. |
| SpecularEnable | Bool | True ou False. Mesmos valores que D3DRS_SPECULARENABLE. |
| SpecularMaterialSource | dword | Os mesmos valores que D3DMATERIALCOLORSOURCE sem o prefixo D3DMCS_. Veja D3DRS_SPECULARMATERIALSOURCE. |
| TweenFactor | flutuar | Os mesmos valores que D3DRS_TWEENFACTOR. |
| VertexBlend | dword | Os mesmos valores que D3DVERTEXBLENDFLAGS sem o prefixo D3DVBF_. Veja D3DRS_VERTEXBLEND. |
Exemplo:
Ambient = float4<0.7f, 0.0f, 0.0f, 1.0f>;
CullMode = CCW;
FogColor = 0xff0000;
Isso fará com que a cor ambiente flua4<0,7f, 0,0f, 0,0f, 1,0f>, defina o modo de abate de backface como anti-horário e defina a cor da neblina como vermelha.
Estados do sampler
Um estado de sampler representa um objeto sampler.
| Estado | Tipo | Valores |
|---|---|---|
| Sampler | Sampler | NULL ou um bloco de estado de amostragem. |
Estados de estágio do sampler
Os estados de estágio do amostrador são usados para amostrar texturas. O estado do sampler determina os tipos de filtragem e os modos de endereçamento de textura.
| Estado do sampler | Tipo | Valores |
|---|---|---|
| AddressU[16] | dword | Os mesmos valores que D3DTEXTUREADDRESS sem o prefixo D3DTADDRESS_. Veja D3DSAMP_ADDRESSU. |
| AddressV[16] | dword | Os mesmos valores que D3DTEXTUREADDRESS sem o prefixo D3DTADDRESS_. Veja D3DSAMP_ADDRESSV. |
| AddressW[16] | dword | Os mesmos valores que D3DTEXTUREADDRESS sem o prefixo D3DTADDRESS_. Veja D3DSAMP_ADDRESSW. |
| BorderColor[16] | D3DCOLOR | Os mesmos valores que D3DTEXTUREFILTERTYPE sem o prefixo D3DTEXF_. Veja D3DSAMP_BORDERCOLOR. |
| MagFilter[16] | dword | Os mesmos valores que D3DTEXTUREFILTERTYPE sem o prefixo D3DTEXF_. Consulte D3DSAMP_MAGFILTER. |
| MaxAnisotropy[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 | Mesmo valor que D3DSAMP_SRGBTEXTURE sem o prefixo D3DSAMP_. |
Exemplo:
AddressU[0] = CLAMP;
AddressV[0] = CLAMP;
AddressW[0] = CLAMP;
Isso fixa os valores UVW entre 0 e 1.
Estados de sombreador
Há apenas dois estados de sombreador de efeito: um associado a um objeto sombreador de vértice e outro associado a um objeto sombreador de pixel.
| Estado do sombreador | Tipo | Valores |
|---|---|---|
| PixelShader | pixelshader | NULL, um bloco de assembly, um destino de compilação ou um parâmetro de sombreador de pixel. |
| VertexShader | vertexshader | NULL, um bloco de assembly, 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 constantes do sombreador
Os estados constantes do sombreador são usados para acessar parâmetros constantes de sombreador.
| Estado constante do sombreador | Tipo | Valores |
|---|---|---|
| PixelShaderConstant | float[m[n]] | matriz m x n de floats; m e n são opcionais. |
| PixelShaderConstant1 | float4 | Um float 4D. |
| PixelShaderConstant2 | float4x2 | Dois carros flutuantes 4D. |
| PixelShaderConstant3 | float4x3 | Três carros flutuantes 4D. |
| PixelShaderConstant4 | float4x4 | Quatro carros flutuantes 4D. |
| PixelShaderConstantB | bool[m[n]] | matriz m x n de bools; m e n são opcionais. |
| PixelShaderConstantI | int[m[n]] | matriz m x n de ints. m e n são opcionais. |
| PixelShaderConstantF | float[m[n]] | matriz m x n de floats. m e n são opcionais. |
| VertexShaderConstant | float[m[n]] | matriz m x n de floats. m e n são opcionais. |
| VertexShaderConstant1 | float4 | Um float 4D. |
| VertexShaderConstant2 | float4x2 | Dois carros flutuantes 4D. |
| VertexShaderConstant3 | float4x3 | Três carros flutuantes 4D. |
| VertexShaderConstant4 | float4x4 | Quatro carros flutuantes 4D. |
| VertexShaderConstantB | bool[m[n]] | matriz m x n de bools. m e n são opcionais. |
| VertexShaderConstantI | int[m[n]] | matriz m x n de ints. m e n são opcionais. |
| VertexShaderConstantF | float[m[n]] | matriz m x n de floats. m e n são opcionais. |
Estados de textura
Os estados de textura inicializam texturas usadas pelo liquidificador de multitextura.
| Estado de textura | Tipo | Valores |
|---|---|---|
| Textura[8] | textura | NULL ou um parâmetro de textura. |
Estados de estágio de textura
Os estados de estágio de textura configuram texturas e os estágios de textura no liquidificador de multitextura.
| Estado do estágio de textura | Tipo | Valores |
|---|---|---|
| AlphaOp[8] | dword | O mesmo que D3DTEXTUREOP sem o prefixo D3DTOP_. Veja D3DTSS_ALPHAOP. |
| AlphaArg0[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Veja D3DTSS_ALPHAARG0. |
| AlphaArg1[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Veja D3DTSS_ALPHAARG1. |
| AlphaArg2[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Veja D3DTSS_ALPHAARG2. |
| ColorArg0[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Veja D3DTSS_COLORARG0. |
| ColorArg1[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Veja D3DTSS_COLORARG1. |
| ColorArg2[8] | dword | O mesmo que D3DTA sem o prefixo D3DTA_. Veja D3DTSS_COLORARG2. |
| ColorOp[8] | dword | O mesmo que D3DTEXTUREOP sem o prefixo D3DTOP_. Veja 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_. Veja 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_. Veja D3DTSS_TEXTURETRANSFORMFLAGS. |
Transformar Estados
Defina 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 |
|---|---|---|
| ProjectionTransform | float4x4 | Uma matriz 4x4 de floats. Os mesmos valores que D3DTS_PROJECTION sem o prefixo D3DTS_. |
| TextureTransform[8] | float4x4 | Uma matriz 4x4 de floats. Os mesmos valores que D3DTRANSFORMSTATETYPE sem o prefixo D3DTS_. |
| ViewTransform | float4x4 | Uma matriz 4x4 de floats. Os mesmos valores que D3DTS_VIEW sem o prefixo D3DTS_. |
| WorldTransform | float4x4 | Uma matriz 4x4 de floats. |