Aracılığıyla paylaş


Efekt Durumları (Direct3D 9)

Etki durumları, köşe ve piksel işleme hazırlığında işlem hattı durumlarını başlatmak için kullanılır.

effect state [ [index] ] = expression;

Nerede:

  • efekt durumu - Geleneksel sabit işlev işlem hattı durumlarına benzer. Durumların tam listesi aşağıda verilmiştir.
  • [ [index] ] - İsteğe bağlı tamsayı dizini. Dizin, etki durumları dizisi içinde belirli bir durumu tanımlar. Dış köşeli ayraçlar bir dizinin isteğe bağlı olduğunu gösterir. Bir dizin kullanılıyorsa, iç köşeli ayraçları kullandığınızdan emin olun.
  • expression - Durum atama ifadesi. bkz. İfadeleri (Direct3D 9).

Her durumun bir yerel veri türü vardır. Bu, etki bunları atadığında durumun değerlerin içinde olmasını beklediği veri türüdür. Her durumun beklediği veri türleri aşağıda listelenmiştir.

Etki arabiriminin değerleri uygun türe mümkün olan en erken şekilde atamaya çalışacağını unutmayın. Değişmez değerler derleme zamanında yayınlanabilir. Uygun Set yöntemleri çağrıldığında değişmez değer olmayanların (normal değişkenler gibi) yayınlanması gerekir. Örneğin, efekt arabirimi SetBool, SetValueve gerekirse diğer benzer işlevler kullanılarak ayarlanan değerleri dönüştürür. Daha iyi performans için efekt arabirimine geçirilen değerlerin zaten doğru türde olduğundan ve tür ataması gerekmediğinden emin olun. Çalışma zamanı bir değer oluşturamıyorsa bir hata döndürülür.

Efekt durumları aşağıdaki kategorilere ayrılabilir:

Açık Durumlar

Efekti uygulamak için en iyi performansı sağlamak için, efekt dosyasında bir ışığın veya malzemenin tüm bileşenleri belirtilmelidir. Bildiremediğiniz durumlar, Direct3D'nin ışık durumlarını ayrı ayrı ayarlaması için bir varsayılan değere ayarlanır.

Açık Durum Tür Değer
LightAmbient[n] float4 bkz. D3DLIGHT9Ortam üyesi.
LightAttenuation0[n] yüzmek bkz. D3DLIGHT9'nin Attenuation0 üyesi.
LightAttenuation1[n] yüzmek bkz. D3DLIGHT9'nin Attenuation1 üyesi.
LightAttenuation2[n] yüzmek D3DLIGHT9'in Attenuation2 üyesine bakın.
LightDiffuse[n] float4 D3DLIGHT9'in Diffuse üyesine bakın.
LightDirection[n] float3 bkz. D3DLIGHT9Direction üyesi.
LightEnable[n] Bool TRUE veya FALSE. LightEnableiçinde bEnable bağımsız değişkenine bakın.
LightFalloff[n] yüzmek D3DCOLORVALUE. D3DLIGHT9Falloff üyesine bakın.
LightPhi[n] yüzmek D3DLIGHT9Phi üyesine bakın.
LightPosition[n] float3 D3DLIGHT9'nin Konum üyesine bakın.
LightRange[n] yüzmek bkz. D3DLIGHT9Range üyesi.
LightSpecular[n] float4 D3DLIGHT9Specular üyesine bakın.
LightTheta[n] yüzmek D3DLIGHT9Theta üyesine bakın.
LightType[n] dword D3DLIGHT_ öneki olmayan en fazla n D3DLIGHTTYPE değer dizisiyle aynı değer.

 

Örnek:

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>;

Bu, aydınlatmayı etkinleştirir, nokta aydınlatma türünü yapar, ışık konumunu float3<10.0f, 1.0f, 23.0f>olarak ayarlar ve ortam rengini float4<0.7f, 0.0f, 0.0f, 1.0f>olarak ayarlar.

Malzeme Durumları

Bildiremediğiniz durumlar, Direct3D'nin malzeme durumlarını ayrı ayrı ayarlamanın bir yolu olmadığından bazı varsayılan değerlere ayarlanır.

Malzeme Durumu Tür Değer
MaterialAmbient float4 Ortam ile aynı değer
MaterialDiffuse float4 Diffuse ile aynı değer
MaterialEmissive float4 Emissive ile aynı değer
MaterialPower yüzmek Power ile aynı değer
MaterialSpecular float4 Specular ile aynı değer

 

Örnek:

MaterialDiffuse = float4<0.7f, 0.0f, 0.0f, 1.0f>;
MaterialPower = 3.0f;

Bu, yayma rengini float4<0.7f, 0.0f, 0.0f, 1.0f> olarak ayarlayacak ve malzemenin gücünü 3.0f yapacaktır.

İşleme Durumları

İki tür işleme durumu vardır:

Piksel Kanal İşleme Durumları

Efekt dosyası işleme durumlarının adları sabit işlev işlem hattı durumlarına benzer ve genellikle ön eki kaldırılmıştır.

İşleme Durumu Tür Değer
AlphaBlendEnable Bool True veya False. D3DRENDERSTATETYPEiçindeki D3DRS_ALPHABLENDENABLE aynı değerler.
AlphaFunc dword D3DCMP_ ön eki olmayan D3DCMPFUNC değerleriyle aynı değerler. Bkz. D3DRS_ALPHAFUNC.
AlphaRef dword D3DRS_ALPHAREF ile aynı değerler.
AlphaTestEnable dword True veya False. Bkz. D3DRS_ALPHATESTENABLE.
BlendOp dword D3DBLENDOP_ ön eki olmadan D3DBLENDOP değerleriyle aynı değerler.
ColorWriteEnable dword RED, GREEN, BLUE ve ALPHA'nın bit düzeyinde birleşimi. Bkz. D3DRS_COLORWRITEENABLE.
DerinlikBias yüzmek D3DRS_DEPTHBIAS ile aynı değerler.
DestBlend dword D3DBLEND_ ön eki olmayan D3DBLEND değerleriyle aynı değerler.
DitherEnable Bool True veya False. D3DRS_DITHERENABLE ile aynı değerler.
FillMode dword D3DFILL_ ön eki olmadan D3DFILLMODE değerleriyle aynı değerler.
LastPixel dword True veya False. bkz. D3DRS_LASTPIXEL.
ShadeMode dword D3DSHADE_ ön eki olmadan D3DSHADEMODE ile aynı değerler.
SlopeScaleDepthBias yüzmek D3DRS_SLOPESCALEDEPTHBIAS ile aynı değerler.
SrcBlend dword D3DBLEND_ ön eki olmayan D3DBLEND değerleriyle aynı değerler.
SRGBWriteEnable Bool True veya False. D3DRS_SRGBWRITEENABLE ile aynı değerler.
KalıpEnable Bool True veya False. D3DRS_STENCILENABLE ile aynı değerler.
StencilFail dword D3DSTENCILCAP_ ön eki olmayan D3DSTENCILCAPS ile aynı değerler. Bkz. D3DRS_STENCILFAIL.
StencilFunc dword D3DCMP_ ön eki olmayan D3DCMPFUNC değerleriyle aynı değerler. bkz. D3DRS_STENCILFUNC.
KalıpMask dword D3DRS_STENCILMASK ile aynı değerler.
StencilPass dword D3DSTENCILCAP_ ön eki olmayan D3DSTENCILCAPS ile aynı değerler. Bkz. D3DRS_STENCILPASS.
StencilRef Int D3DRS_STENCILREF ile aynı değerler.
KalıpWriteMask dword D3DRS_STENCILWRITEMASK ile aynı değerler.
StencilZFail dword D3DSTENCILCAP_ ön eki olmayan D3DSTENCILCAPS ile aynı değerler. Bkz. D3DRS_STENCILZFAIL.
TextureFactor dword D3DCOLORile aynı değerler. D3DRS_TEXTUREFACTOR ile aynı değerler.
Sarmalama0 - Sarmalama15 dword Değerler, D3DRS_WRAP0 tarafından kullanılan değerlerle aynıdır. Geçerli değerler şunlardır:
  • COORD0 (D3DWRAPCOORD_0 karşılık gelir)
  • COORD1 (D3DWRAPCOORD_1 karşılık gelir)
  • COORD2 (D3DWRAPCOORD_2 karşılık gelir)
  • COORD3 (D3DWRAPCOORD_3 karşılık gelir)
  • U (D3DWRAP_U karşılık gelir)
  • V (D3DWRAP_V karşılık gelir)
  • W (D3DWRAP_W karşılık gelir)
ZEnable dword D3DZB_ ön eki olmadan D3DZBUFFERTYPE değerleriyle aynı değerler.
ZFunc dword D3DCMP_ ön eki olmayan D3DCMPFUNC değerleriyle aynı değerler. Bkz. D3DRS_ZFUNC.
ZWriteEnable Bool True veya False. bkz. D3DRS_ZWRITEENABLE.

Örnek:

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

Bu, alfa karıştırmayı etkinleştirir ve tüm geometrilerin tel çerçevede işlenmesini sağlar.

Köşe Boru İşleme Durumları

Efekt dosyası işleme durumlarının adları sabit işlev işlem hattı durumlarına benzer ve genellikle ön eki kaldırılmıştır.

İşleme Durumu Tür Değer
Ortam float4 D3DRS_AMBIENT ile aynı değerler.
AmbientMaterialSource dword D3DMCS_ ön eki olmadan D3DMATERIALCOLORSOURCE değerleriyle aynı değerler. Bkz. D3DRS_AMBIENTMATERIALSOURCE.
Kırpma Bool True veya False. D3DRS_CLIPPING ile aynı değerler.
ClipPlaneEnable dword D3DCLIPPLANE0 bit düzeyinde birleşim - D3DCLIPPLANE5 makrolar. Bkz. D3DCLIPPLANEn ve D3DRS_CLIPPLANEENABLE.
ColorVertex Bool True veya False. D3DRS_COLORVERTEX ile aynı değerler.
CullMode dword D3DCULL_ ön eki olmayan D3DCULL değerleriyle aynı değerler.
DiffuseMaterialSource dword D3DMCS_ ön eki olmadan D3DMATERIALCOLORSOURCE değerleriyle aynı değerler. Bkz. D3DRS_DIFFUSEMATERIALSOURCE.
EmissiveMaterialSource dword D3DMCS_ ön eki olmadan D3DMATERIALCOLORSOURCE değerleriyle aynı değerler. Bkz. D3DRS_EMISSIVEMATERIALSOURCE.
FogColor dword D3DCOLORile aynı değerler. Bkz. D3DRS_FOGCOLOR.
FogDensity yüzmek D3DRS_FOGDENSITY ile aynı değerler.
FogEnable Bool True veya False. D3DRS_FOGENABLE ile aynı değerler.
FogEnd yüzmek D3DRS_FOGEND ile aynı değerler.
FogStart yüzmek D3DRS_FOGSTART ile aynı değerler.
FogTableMode dword D3DFOGMODEile aynı değerler. bkz. D3DRENDERSTATETYPED3DRS_FOGTABLEMODE.
FogVertexMode dword D3DFOG_ ön eki olmayan D3DFOGMODE değerleriyle aynı değerler.
IndexedVertexBlendEnable Bool True veya False. D3DRS_INDEXEDVERTEXBLENDENABLE ile aynı değerler.
Aydınlatma Bool True veya False. D3DRS_LIGHTING ile aynı değerler.
LocalViewer Bool True veya False. D3DRS_LOCALVIEWER ile aynı değerler.
MultiSampleAntialias Bool D3DRS_MULTISAMPLEANTIALIAS ile aynı değerler.
MultiSampleMask dword D3DRS_MULTISAMPLEMASK ile aynı değerler.
NormalizeNormals Bool True veya False. D3DRS_NORMALIZENORMALS ile aynı değerler.
PatchSegments yüzmek SetNPatchModeiçindeki nSegments ile aynı değerler.
PointScale_A yüzmek D3DRS_POINTSCALE_A ile aynı değerler.
PointScale_B yüzmek D3DRS_POINTSCALE_B ile aynı değerler.
PointScale_C yüzmek D3DRS_POINTSCALE_C ile aynı değerler.
PointScaleEnable Bool D3DRS_POINTSCALEENABLE ile aynı değerler.
İşaretle yüzmek D3DRS_POINTSIZE ile aynı değerler.
PointSize_Min yüzmek D3DRS_POINTSIZE_MIN ile aynı değerler.
PointSize_Max yüzmek D3DRS_ ön eki olmadan D3DRS_POINTSIZE_MAX değerleriyle aynı değerler.
PointSpriteEnable Bool True veya False. D3DRS_POINTSPRITEENABLE ile aynı değerler.
RangeFogEnable Bool True veya False. D3DRS_RANGEFOGENABLE ile aynı değerler.
SpecularEnable Bool True veya False. D3DRS_SPECULARENABLE ile aynı değerler.
SpecularMaterialSource dword D3DMCS_ ön eki olmadan D3DMATERIALCOLORSOURCE değerleriyle aynı değerler. Bkz. D3DRS_SPECULARMATERIALSOURCE.
TweenFactor yüzmek D3DRS_TWEENFACTOR ile aynı değerler.
VertexBlend dword D3DVBF_ ön eki olmayan D3DVERTEXBLENDFLAGS değerleriyle aynı değerler. Bkz. D3DRS_VERTEXBLEND.

 

Örnek:

Ambient = float4<0.7f, 0.0f, 0.0f, 1.0f>;
CullMode = CCW;
FogColor = 0xff0000;

Bu, ortam rengini float4<0,7f, 0,0f, 0,0f, 1,0f>yapar, arka yüz kümeleme modunu saat yönünün tersine ayarlar ve sis rengini kırmızıya ayarlar.

Örnekleyici Durumları

Örnekleyici durumu bir örnekleyici nesnesini temsil eder.

Devlet Tür Değer
Örnekleyici Örnekleyici NULLveya örnekleyici durum bloğu.

 

Örnekleyici Aşama Durumları

Örnekleyici aşama durumları dokuları örneklemek için kullanılır. Örnekleyici durumu, filtreleme türlerini ve doku adresleme modlarını belirler.

Örnekleyici Durumu Tür Değer
AddressU[16] dword D3DTADDRESS_ ön eki olmayan D3DTEXTUREADDRESS değerleriyle aynı değerler. Bkz. D3DSAMP_ADDRESSU.
AddressV[16] dword D3DTADDRESS_ ön eki olmayan D3DTEXTUREADDRESS değerleriyle aynı değerler. bkz. D3DSAMP_ADDRESSV.
AdresW[16] dword D3DTADDRESS_ ön eki olmayan D3DTEXTUREADDRESS değerleriyle aynı değerler. Bkz. D3DSAMP_ADDRESSW.
BorderColor[16] D3DCOLOR D3DTEXF_ ön eki olmadan D3DTEXTUREFILTERTYPE aynı değerler. Bkz. D3DSAMP_BORDERCOLOR.
MagFilter[16] dword D3DTEXF_ ön eki olmadan D3DTEXTUREFILTERTYPE aynı değerler. Bkz. D3DSAMP_MAGFILTER.
MaxAnisotropy[16] dword D3DSAMP_ ön eki olmadan D3DSAMP_MAXANISOTROPY ile aynı değerler.
MaxMipLevel[16] Int D3DSAMP_ ön eki olmayan D3DSAMP_MAXMIPLEVEL değerleri.
MinFilter[16] dword D3DSAMP_ ön eki olmayan D3DSAMP_MINFILTER değerleriyle aynı değerler.
MipFilter[16] dword D3DSAMP_ ön eki olmayan D3DSAMP_MIPFILTER değerleriyle aynı değerler.
MipMapLodBias[16] yüzmek D3DSAMP_ ön eki olmadan D3DSAMP_MIPMAPLODBIAS değerleriyle aynı değerler.
SRGBTexture Bool D3DSAMP_ ön eki olmayan D3DSAMP_SRGBTEXTURE ile aynı değer.

 

Örnek:

AddressU[0] = CLAMP;
AddressV[0] = CLAMP;
AddressW[0] = CLAMP;

Bu, UVW değerlerini 0 ile 1 arasında olacak şekilde sıkıştırıyor.

Gölgelendirici Durumları

Yalnızca iki efekt gölgelendirici durumu vardır: biri köşe gölgelendirici nesnesiyle, diğeri de piksel gölgelendirici nesnesiyle ilişkilendirilmiş.

Gölgelendirici Durumu Tür Değer
PixelShader piksel gölgeleleyici NULL , derleme bloğu, derleme hedefi veya piksel gölgelendirici parametresi.
VertexShader köşeshader NULL , derleme bloğu, derleme hedefi veya piksel gölgelendirici parametresi.

 

Örnek:

VertexShader = compile vs_1_1 VSTexture();
PixelShader  = NULL;

Bu, .fx dosyasında daha önce tanımlanmış bir köşe gölgelendiricisi olan VSTexture'ı köşe gölgelendiricisi sürüm 1.1'e derler ve sonra bu derlenmiş gölgelendiriciyi köşe gölgelendiricisi olarak ayarlar. Piksel gölgelendiricisi NULLatanır.

Gölgelendirici Sabit Durumları

Gölgelendirici sabit durumları gölgelendirici sabit parametrelerine erişmek için kullanılır.

Gölgelendirici Sabit Durumu Tür Değer
PixelShaderConstant float[m[n]] m x n kayanlar dizisi; m ve n isteğe bağlıdır.
PixelShaderConstant1 float4 Bir adet 4D şamandıra.
PixelShaderConstant2 float4x2 İki 4D kayan.
PixelShaderConstant3 float4x3 Üç 4D kayan.
PixelShaderConstant4 float4x4 Dört 4D kayan.
PixelShaderConstantB bool[m[n]] m x n bools dizisi; m ve n isteğe bağlıdır.
PixelShaderConstantI int[m[n]] m x n int dizisi. m ve n isteğe bağlıdır.
PixelShaderConstantF float[m[n]] m x n kayanlar dizisi. m ve n isteğe bağlıdır.
VertexShaderConstant float[m[n]] m x n kayanlar dizisi. m ve n isteğe bağlıdır.
VertexShaderConstant1 float4 Bir adet 4D şamandıra.
VertexShaderConstant2 float4x2 İki 4D kayan.
VertexShaderConstant3 float4x3 Üç 4D kayan.
VertexShaderConstant4 float4x4 Dört 4D kayan.
VertexShaderConstantB bool[m[n]] m x n bools dizisi. m ve n isteğe bağlıdır.
VertexShaderConstantI int[m[n]] m x n int dizisi. m ve n isteğe bağlıdır.
VertexShaderConstantF float[m[n]] m x n kayanlar dizisi. m ve n isteğe bağlıdır.

 

Doku Durumları

Doku durumları, multitexture blender tarafından kullanılan dokuları başlatır.

Doku Durumu Tür Değer
Doku[8] doku NULL veya doku parametresi.

 

Doku Aşaması Durumları

Doku aşama durumları, dokuları ve doku aşamalarını çokmetinli blender'da ayarlar.

Doku Aşaması Durumu Tür Değer
AlphaOp[8] dword D3DTOP_ ön eki olmayan D3DTEXTUREOP ile aynıdır. Bkz. D3DTSS_ALPHAOP.
AlphaArg0[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. Bkz. D3DTSS_ALPHAARG0.
AlphaArg1[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. bkz. D3DTSS_ALPHAARG1.
AlphaArg2[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. bkz. D3DTSS_ALPHAARG2.
ColorArg0[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. bkz. D3DTSS_COLORARG0.
ColorArg1[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. Bkz. D3DTSS_COLORARG1.
ColorArg2[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. Bkz. D3DTSS_COLORARG2.
ColorOp[8] dword D3DTOP_ ön eki olmayan D3DTEXTUREOP ile aynıdır. bkz. D3DTSS_COLOROP.
BumpEnvLScale[8] yüzmek D3DTSS_TCI öneki olmayan D3DTSS_BUMPENVLSCALE değerleri.
BumpEnvLOffset[8] yüzmek D3DTSS_TCI ön eki olmadan D3DTSS_BUMPENVLOFFSET değerleriyle aynı değerler.
BumpEnvMat00[8] yüzmek D3DTSS_BUMPENVMAT00 ile aynı değerler.
BumpEnvMat01[8] yüzmek D3DTSS_BUMPENVMAT01 ile aynı değerler.
BumpEnvMat10[8] yüzmek D3DTSS_BUMPENVMAT10 ile aynı değerler.
BumpEnvMat11[8] yüzmek D3DTSS_BUMPENVMAT11 ile aynı değerler.
ResultArg[8] dword D3DTA_ ön eki olmayan D3DTA aynıdır. bkz. D3DTSS_RESULTARG.
TexCoordIndex[8] dword D3DTSS_TCI ön eki olmayan D3DTSS_TEXCOORDINDEX değerleriyle aynı değerler.
TextureTransformFlags[8] dword D3DTTFF_ ön eki olmayan D3DTEXTURETRANSFORMFLAGS değerlerle aynı değerler. bkz. D3DTSS_TEXTURETRANSFORMFLAGS.

 

Dönüşüm Durumları

Dönüştürme matrislerini başlatmak için dönüştürme durumlarını ayarlayın. Efektler, verimlilik için devrilmiş matrisler kullanır. Bir efekte çevrilmiş matrisler sağlayabilirsiniz veya bir efekt, kullanmadan önce matrisleri otomatik olarak tersine çevirir.

Dönüşüm Durumu Tür Değer
ProjectionTransform float4x4 4x4 kayanlar matrisi. D3DTS_ ön eki olmadan D3DTS_PROJECTION aynı değerler.
TextureTransform[8] float4x4 4x4 kayanlar matrisi. D3DTS_ ön eki olmayan D3DTRANSFORMSTATETYPE değerleriyle aynı değerler.
ViewTransform float4x4 4x4 kayanlar matrisi. D3DTS_ ön eki olmayan D3DTS_VIEW değerleriyle aynı değerler.
WorldTransform float4x4 4x4 kayanlar matrisi.

 

Efekt Biçimi