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
- Status Bahan
- Status Render
- Status Sampler
- Status Tahap Sampler
- Status Shader
- Status Konstanta Shader
- Status Tekstur
- Status Tahapan Tekstur
- Mengubah Status
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:
|
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. |