Bagikan melalui


Status Efek (Direct3D 9)

Status efek digunakan untuk menginisialisasi status alur sebagai persiapan untuk pemrosesan vertex dan piksel.

effect state [ [index] ] = expression;

Di mana:

  • status efek - Mirip dengan status alur fungsi tetap tradisional. Daftar lengkap status disediakan di bawah ini.
  • [ [indeks] ] - Indeks bilangan bulat opsional. Indeks mengidentifikasi status tertentu dalam array status efek. Tanda kurung luar menunjukkan bahwa indeks bersifat opsional. Jika indeks digunakan, pastikan untuk menggunakan tanda kurung dalam.
  • expression - Ekspresi penetapan status. Lihat Ekspresi (Direct3D 9).

Setiap status memiliki jenis data asli. Ini adalah jenis data yang diharapkan oleh status nilai saat efek menetapkannya. Jenis data yang diharapkan setiap status tercantum di bawah ini.

Perhatikan bahwa antarmuka efek akan mencoba melemparkan nilai ke jenis yang sesuai sedini mungkin. Nilai harfiah dapat dilemparkan pada waktu kompilasi. Non-literal (yaitu variabel reguler) perlu dilemparkan ketika metode Set yang sesuai dipanggil. Misalnya, antarmuka efek akan melemparkan nilai yang diatur menggunakan SetBool, SetValue, dan fungsi serupa lainnya jika perlu. Untuk performa yang lebih baik, pastikan bahwa nilai yang diteruskan ke antarmuka efek sudah merupakan jenis yang benar dan tidak perlu transmisi. Jika runtime tidak dapat mentransmisikan nilai, kesalahan akan dikembalikan.

Status efek dapat dipecah menjadi kategori berikut:

Status Cahaya

Untuk mengaktifkan performa terbaik untuk menerapkan efek, semua komponen cahaya atau bahan harus ditentukan dalam file efek. Menyatakan bahwa Anda gagal mendeklarasikan diatur ke beberapa nilai default karena tidak ada cara bagi Direct3D untuk mengatur status cahaya satu per satu.

Status Cahaya Jenis Nilai
LightAmbient[n] float4 Lihat anggota Sekitar D3DLIGHT9.
LightAttenuation0[n] float Lihat anggota Attenuation0 D3DLIGHT9.
LightAttenuation1[n] float Lihat anggota Attenuation1 D3DLIGHT9.
LightAttenuation2[n] float Lihat anggota Attenuation2 D3DLIGHT9.
LightDiffuse[n] float4 Lihat anggota Diffuse D3DLIGHT9.
LightDirection[n] float3 Lihat anggota Arah D3DLIGHT9.
LightEnable[n] bool TRUE atau FALSE. Lihat argumen bEnable di LightEnable.
LightFalloff[n] float D3DCOLORVALUE. Lihat anggota Falloff D3DLIGHT9.
LightPhi[n] float Lihat anggota Phi dari D3DLIGHT9.
LightPosition[n] float3 Lihat Anggota posisi D3DLIGHT9.
LightRange[n] float Lihat Anggota rentang D3DLIGHT9.
LightSpecular[n] float4 Lihat anggota Spekular D3DLIGHT9.
LightTheta[n] float Lihat anggota Theta D3DLIGHT9.
LightType[n] Dword Nilai yang sama dengan array hingga n nilai D3DLIGHTTYPE tanpa awalan D3DLIGHT_.

 

Contoh:

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

Ini akan memungkinkan pencahayaan, membuat pencahayaan titik jenis, mengatur posisi cahaya ke float3<10.0f, 1.0f, 23.0f>, dan mengatur warna sekitar ke float4<0,7f, 0,0f, 0,0f, 1,0f>.

Status Bahan

Menyatakan bahwa Anda gagal mendeklarasikan diatur ke beberapa nilai default karena tidak ada cara bagi Direct3D untuk mengatur status materi satu per satu.

Status Bahan Jenis Nilai
MaterialAmbient float4 Nilai yang sama dengan Ambien
MaterialDiffuse float4 Nilai yang sama dengan Diffuse
MaterialEmissive float4 Nilai yang sama dengan Emissive
MaterialPower float Nilai yang sama dengan Daya
MaterialSpecular float4 Nilai yang sama dengan Spekular

 

Contoh:

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

Ini akan mengatur warna difus ke float4<0,7f, 0,0f, 0,0f, 1,0f> dan membuat kekuatan bahan 3,0f.

Status Render

Ada dua jenis status render:

Status Render Piksel Pipa

Status render file efek memiliki nama yang mirip dengan status alur fungsi tetap, seringkali dengan awalan dihapus.

Status Render Jenis Nilai
AlphaBlendEnable bool True atau False. Nilai yang sama seperti D3DRS_ALPHABLENDENABLE di D3DRENDERSTATETYPE.
AlphaFunc Dword Nilai yang sama seperti D3DCMPFUNC tanpa awalan D3DCMP_. Lihat D3DRS_ALPHAFUNC.
AlphaRef Dword Nilai yang sama dengan D3DRS_ALPHAREF.
AlphaTestEnable Dword True atau False. Lihat D3DRS_ALPHATESTENABLE.
BlendOp Dword Nilai yang sama seperti D3DBLENDOP tanpa awalan D3DBLENDOP_.
ColorWriteEnable Dword Kombinasi bitwise MERAH, HIJAU, BIRU, dan ALPHA. Lihat D3DRS_COLORWRITEENABLE.
DepthBias float Nilai yang sama dengan D3DRS_DEPTHBIAS.
DestBlend Dword Nilai yang sama seperti D3DBLEND tanpa awalan D3DBLEND_.
DitherEnable bool True atau False. Nilai yang sama dengan D3DRS_DITHERENABLE.
FillMode Dword Nilai yang sama dengan D3DFILLMODE tanpa awalan D3DFILL_.
LastPixel Dword True atau False. Lihat D3DRS_LASTPIXEL.
ShadeMode Dword Nilai yang sama seperti D3DSHADEMODE tanpa awalan D3DSHADE_.
SlopeScaleDepthBias float Nilai yang sama dengan D3DRS_SLOPESCALEDEPTHBIAS.
SrcBlend Dword Nilai yang sama seperti D3DBLEND tanpa awalan D3DBLEND_.
SRGBWriteEnable bool True atau False. Nilai yang sama dengan D3DRS_SRGBWRITEENABLE.
StencilEnable bool True atau False. Nilai yang sama dengan D3DRS_STENCILENABLE.
StencilFail Dword Nilai yang sama dengan D3DSTENCILCAPS tanpa awalan D3DSTENCILCAP_. Lihat D3DRS_STENCILFAIL.
StencilFunc Dword Nilai yang sama seperti D3DCMPFUNC tanpa awalan D3DCMP_. Lihat D3DRS_STENCILFUNC.
StencilMask Dword Nilai yang sama dengan D3DRS_STENCILMASK.
StensilPass Dword Nilai yang sama dengan D3DSTENCILCAPS tanpa awalan D3DSTENCILCAP_. Lihat D3DRS_STENCILPASS.
StencilRef int Nilai yang sama dengan D3DRS_STENCILREF.
StencilWriteMask Dword Nilai yang sama dengan D3DRS_STENCILWRITEMASK.
StencilZFail Dword Nilai yang sama dengan D3DSTENCILCAPS tanpa awalan D3DSTENCILCAP_. Lihat D3DRS_STENCILZFAIL.
TextureFactor Dword Nilai yang sama dengan D3DCOLOR. Nilai yang sama dengan D3DRS_TEXTUREFACTOR.
Bungkus0 - Bungkus15 Dword Nilai sama dengan nilai yang digunakan oleh D3DRS_WRAP0. Nilai yang valid adalah:
  • COORD0 (yang sesuai dengan D3DWRAPCOORD_0)
  • COORD1 (yang sesuai dengan D3DWRAPCOORD_1)
  • COORD2 (yang sesuai dengan D3DWRAPCOORD_2)
  • COORD3 (yang sesuai dengan D3DWRAPCOORD_3)
  • U (yang sesuai dengan D3DWRAP_U)
  • V (yang sesuai dengan D3DWRAP_V)
  • W (yang sesuai dengan D3DWRAP_W)
ZEnable Dword Nilai yang sama dengan D3DZBUFFERTYPE tanpa awalan D3DZB_.
ZFunc Dword Nilai yang sama seperti D3DCMPFUNC tanpa awalan D3DCMP_. Lihat D3DRS_ZFUNC.
ZWriteEnable bool True atau False. Lihat D3DRS_ZWRITEENABLE.

Contoh:

AlphaBlendEnable = TRUE;
FillMode = WIREFRAME;

Ini akan memungkinkan penpaduan alfa dan membuat semua geometri dirender dalam wireframe.

Status Render Pipa Vertex

Status render file efek memiliki nama yang mirip dengan status alur fungsi tetap, seringkali dengan awalan dihapus.

Status Render Jenis Nilai
Ambient float4 Nilai yang sama dengan D3DRS_AMBIENT.
AmbientMaterialSource Dword Nilai yang sama dengan D3DMATERIALCOLORSOURCE tanpa awalan D3DMCS_. Lihat D3DRS_AMBIENTMATERIALSOURCE.
Kliping bool True atau False. Nilai yang sama dengan D3DRS_CLIPPING.
ClipPlaneEnable Dword Kombinasi bitwise makro D3DCLIPPLANE0 - D3DCLIPPLANE5. Lihat D3DCLIPPLANEn dan D3DRS_CLIPPLANEENABLE.
ColorVertex bool True atau False. Nilai yang sama dengan D3DRS_COLORVERTEX.
CullMode Dword Nilai yang sama dengan D3DCULL tanpa awalan D3DCULL_.
DiffuseMaterialSource Dword Nilai yang sama dengan D3DMATERIALCOLORSOURCE tanpa awalan D3DMCS_. Lihat D3DRS_DIFFUSEMATERIALSOURCE.
EmissiveMaterialSource Dword Nilai yang sama dengan D3DMATERIALCOLORSOURCE tanpa awalan D3DMCS_. Lihat D3DRS_EMISSIVEMATERIALSOURCE.
FogColor Dword Nilai yang sama dengan D3DCOLOR. Lihat D3DRS_FOGCOLOR.
FogDensity float Nilai yang sama dengan D3DRS_FOGDENSITY.
FogEnable bool True atau False. Nilai yang sama dengan D3DRS_FOGENABLE.
FogEnd float Nilai yang sama dengan D3DRS_FOGEND.
FogStart float Nilai yang sama seperti D3DRS_FOGSTART.
FogTableMode Dword Nilai yang sama dengan D3DFOGMODE. Lihat D3DRS_FOGTABLEMODE di D3DRENDERSTATETYPE.
FogVertexMode Dword Nilai yang sama dengan D3DFOGMODE tanpa awalan D3DFOG_.
IndexedVertexBlendEnable bool True atau False. Nilai yang sama dengan D3DRS_INDEXEDVERTEXBLENDENABLE.
Pencahayaan bool True atau False. Nilai yang sama seperti D3DRS_LIGHTING.
LocalViewer bool True atau False. Nilai yang sama dengan D3DRS_LOCALVIEWER.
MultiSampleAntialias bool Nilai yang sama dengan D3DRS_MULTISAMPLEANTIALIAS.
MultiSampleMask Dword Nilai yang sama seperti D3DRS_MULTISAMPLEMASK.
NormalizeNormals bool True atau False. Nilai yang sama dengan D3DRS_NORMALIZENORMALS.
PatchSegments float Nilai yang sama dengan nSegments di SetNPatchMode.
PointScale_A float Nilai yang sama seperti D3DRS_POINTSCALE_A.
PointScale_B float Nilai yang sama dengan D3DRS_POINTSCALE_B.
PointScale_C float Nilai yang sama dengan D3DRS_POINTSCALE_C.
PointScaleEnable bool Nilai yang sama dengan D3DRS_POINTSCALEENABLE.
Ukuran Titik float Nilai yang sama dengan D3DRS_POINTSIZE.
PointSize_Min float Nilai yang sama dengan D3DRS_POINTSIZE_MIN.
PointSize_Max float Nilai yang sama seperti D3DRS_POINTSIZE_MAX tanpa awalan D3DRS_.
PointSpriteEnable bool True atau False. Nilai yang sama dengan D3DRS_POINTSPRITEENABLE.
RangeFogEnable bool True atau False. Nilai yang sama dengan D3DRS_RANGEFOGENABLE.
SpecularEnable bool True atau False. Nilai yang sama dengan D3DRS_SPECULARENABLE.
SpecularMaterialSource Dword Nilai yang sama dengan D3DMATERIALCOLORSOURCE tanpa awalan D3DMCS_. Lihat D3DRS_SPECULARMATERIALSOURCE.
TweenFactor float Nilai yang sama seperti D3DRS_TWEENFACTOR.
VertexBlend Dword Nilai yang sama dengan D3DVERTEXBLENDFLAGS tanpa awalan D3DVBF_. Lihat D3DRS_VERTEXBLEND.

 

Contoh:

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

Ini akan membuat warna sekitar float4<0,7f, 0,0f, 0,0f, 1,0f>, mengatur mode pemusnahan backface ke berlawanan arah jarang, dan mengatur warna kabut menjadi merah.

Status Sampler

Status sampler mewakili objek sampler.

Provinsi Jenis Nilai
Sampler Sampler NULL, atau blok status sampler.

 

Status Tahap Sampler

Status tahap sampler digunakan untuk contoh tekstur. Status sampler menentukan jenis pemfilteran dan mode alamat tekstur.

Status Sampler Jenis Nilai
AddressU[16] Dword Nilai yang sama dengan D3DTEXTUREADDRESS tanpa awalan D3DTADDRESS_. Lihat D3DSAMP_ADDRESSU.
AddressV[16] Dword Nilai yang sama dengan D3DTEXTUREADDRESS tanpa awalan D3DTADDRESS_. Lihat D3DSAMP_ADDRESSV.
AddressW[16] Dword Nilai yang sama dengan D3DTEXTUREADDRESS tanpa awalan D3DTADDRESS_. Lihat D3DSAMP_ADDRESSW.
BorderColor[16] D3DCOLOR Nilai yang sama dengan D3DTEXTUREFILTERTYPE tanpa awalan D3DTEXF_. Lihat D3DSAMP_BORDERCOLOR.
MagFilter[16] Dword Nilai yang sama dengan D3DTEXTUREFILTERTYPE tanpa awalan D3DTEXF_. Lihat D3DSAMP_MAGFILTER.
MaxAnisotropy[16] Dword Nilai yang sama seperti D3DSAMP_MAXANISOTROPY tanpa awalan D3DSAMP_.
MaxMipLevel[16] int Nilai yang sama seperti D3DSAMP_MAXMIPLEVEL tanpa awalan D3DSAMP_.
MinFilter[16] Dword Nilai yang sama seperti D3DSAMP_MINFILTER tanpa awalan D3DSAMP_.
MipFilter[16] Dword Nilai yang sama seperti D3DSAMP_MIPFILTER tanpa awalan D3DSAMP_.
MipMapLodBias[16] float Nilai yang sama seperti D3DSAMP_MIPMAPLODBIAS tanpa awalan D3DSAMP_.
SRGBTexture bool Nilai yang sama dengan D3DSAMP_SRGBTEXTURE tanpa awalan D3DSAMP_.

 

Contoh:

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

Ini menjepit nilai UVW untuk berada di antara 0 dan 1.

Status Shader

Hanya ada dua status shader efek: satu yang terkait dengan objek shader vertex dan yang lain yang terkait dengan objek shader piksel.

Status Shader Jenis Nilai
PixelShader pixelshader NULL, blok rakitan, target kompilasi, atau parameter shader piksel.
VertexShader vertexshader NULL, blok rakitan, target kompilasi, atau parameter shader piksel.

 

Contoh:

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

Ini akan mengkompilasi VSTexture, shader vertex yang ditentukan sebelumnya dalam file .fx, ke shader vertex versi 1.1, lalu mengatur shader yang dikompilasi sebagai shader vertex. Shader piksel ditetapkan ke NULL.

Status Konstanta Shader

Status konstanta shader digunakan untuk mengakses parameter konstanta shader.

Status Konstanta Shader Jenis Nilai
PixelShaderConstant float[m[n]] array m x n float; m dan n bersifat opsional.
PixelShaderConstant1 float4 Satu float 4D.
PixelShaderConstant2 float4x2 Dua float 4D.
PixelShaderConstant3 float4x3 Tiga float 4D.
PixelShaderConstant4 float4x4 Empat float 4D.
PixelShaderConstantB bool[m[n]] array m x n dari bool; m dan n bersifat opsional.
PixelShaderConstantI int[m[n]] array m x n ints. m dan n bersifat opsional.
PixelShaderConstantF float[m[n]] array m x n float. m dan n bersifat opsional.
VertexShaderConstant float[m[n]] array m x n float. m dan n bersifat opsional.
VertexShaderConstant1 float4 Satu float 4D.
VertexShaderConstant2 float4x2 Dua float 4D.
VertexShaderConstant3 float4x3 Tiga float 4D.
VertexShaderConstant4 float4x4 Empat float 4D.
VertexShaderConstantB bool[m[n]] Array bool m x n. m dan n bersifat opsional.
VertexShaderConstantI int[m[n]] array m x n ints. m dan n bersifat opsional.
VertexShaderConstantF float[m[n]] array m x n float. m dan n bersifat opsional.

 

Status Tekstur

Status tekstur menginisialisasi tekstur yang digunakan oleh blender multitekstur.

Status Tekstur Jenis Nilai
Tekstur[8] Tekstur NULL, atau parameter tekstur.

 

Status Tahapan Tekstur

Status tahap tekstur menyiapkan tekstur dan tahap tekstur dalam blender multitekstur.

Status Panggung Tekstur Jenis Nilai
AlphaOp[8] Dword Sama seperti D3DTEXTUREOP tanpa awalan D3DTOP_. Lihat D3DTSS_ALPHAOP.
AlphaArg0[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_ALPHAARG0.
AlphaArg1[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_ALPHAARG1.
AlphaArg2[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_ALPHAARG2.
ColorArg0[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_COLORARG0.
ColorArg1[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_COLORARG1.
ColorArg2[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_COLORARG2.
ColorOp[8] Dword Sama seperti D3DTEXTUREOP tanpa awalan D3DTOP_. Lihat D3DTSS_COLOROP.
BumpEnvLScale[8] float Nilai yang sama seperti D3DTSS_BUMPENVLSCALE tanpa awalan D3DTSS_TCI.
BumpEnvLOffset[8] float Nilai yang sama seperti D3DTSS_BUMPENVLOFFSET tanpa awalan D3DTSS_TCI.
BumpEnvMat00[8] float Nilai yang sama dengan D3DTSS_BUMPENVMAT00.
BumpEnvMat01[8] float Nilai yang sama dengan D3DTSS_BUMPENVMAT01.
BumpEnvMat10[8] float Nilai yang sama dengan D3DTSS_BUMPENVMAT10.
BumpEnvMat11[8] float Nilai yang sama dengan D3DTSS_BUMPENVMAT11.
ResultArg[8] Dword Sama seperti D3DTA tanpa awalan D3DTA_. Lihat D3DTSS_RESULTARG.
TexCoordIndex[8] Dword Nilai yang sama seperti D3DTSS_TEXCOORDINDEX tanpa awalan D3DTSS_TCI.
TextureTransformFlags[8] Dword Nilai yang sama dengan nilai D3DTEXTURETRANSFORMFLAGS tanpa awalan D3DTTFF_. Lihat D3DTSS_TEXTURETRANSFORMFLAGS.

 

Mengubah Status

Atur status transformasi untuk menginisialisasi matriks transformasi. Efek menggunakan matriks yang diubah urutannya untuk efisiensi. Anda dapat memberikan matriks yang diubah urutannya ke efek, atau efek akan secara otomatis mengubah urutan matriks sebelum menggunakannya.

Status Transformasi Jenis Nilai
ProjectionTransform float4x4 Matriks float 4x4. Nilai yang sama seperti D3DTS_PROJECTION tanpa awalan D3DTS_.
TextureTransform[8] float4x4 Matriks float 4x4. Nilai yang sama seperti D3DTRANSFORMSTATETYPE tanpa awalan D3DTS_.
ViewTransform float4x4 Matriks float 4x4. Nilai yang sama seperti D3DTS_VIEW tanpa awalan D3DTS_.
WorldTransform float4x4 Matriks float 4x4.

 

Format Efek