Csúcsmintázatok vs_3_0 (DirectX HLSL)
A csúcspont-árnyékoló 3.0 modell támogatja a csúcsárnyékolóban a textúrakeresést a texldl használatával – szemben textúrabetöltési utasítással. A csúcsmotor négy, D3DVERTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 és D3DVERTEXTEXTURESAMPLER3 nevű anyagmintát tartalmaz. Ezek különböznek a képpontmotor elmozdulástérkép-mintavevőitől és anyagmintázóitól.
A négy fázisban beállított mintázatmintákhoz használhatja a csúcsmotort, és a fázisokat a CheckDeviceFormat metódussal programozhatja. Állítsa be a textúrákat ezeken a szakaszokon SetTexturehasználatával, és a szakaszindex D3DVERTEXTEXTURESAMPLER0 keresztül D3DVERTEXTEXTURESAMPLER3. Új regiszter lett bevezetve a csúcsárnyékolóban, a mintavevői regiszterben (mint a ps_2_0), amely a csúcsmintát jelöli. Ezt a nyilvántartást a használat előtt definiálni kell az árnyékolóban.
Az alkalmazások a CheckDeviceFormat D3DUSAGE_QUERY_VERTEXTEXTUREmeghívásával lekérdezhetik, hogy a formátumok csúcsmintaként támogatottak-e.
Jegyzet
Ez egy lekérdezésjelző, ezért nem fogadható el semmilyen Createxxx függvényben. Az alapértelmezett készletben létrehozott csúcsok textúrája képpontos textúraként állítható be, és fordítva. A szoftveres csúcsok feldolgozásához azonban létre kell hozni a csúcsmintát a karckészletben (függetlenül attól, hogy vegyes módú eszközről vagy szoftveres csúcsfeldolgozó eszközről van-e szó).
A funkció megegyezik a képpontok textúráival, kivéve az alábbiakat:
- Az anizotróp textúra szűrése nem támogatott, ezért a D3DSAMP_MAXANISOTROPY figyelmen kívül hagyja, és D3DTEXF_ANISOTROPIC nem állítható be nagyítóhoz vagy minifyhez ezekhez a szakaszokhoz.
- A változási adatok sebessége nem érhető el, ezért az alkalmazásnak ki kell számítania a részletességi szintet, és paraméterként kell megadnia ezt az információt a texldl - és.
A korlátozások a következők:
- A képpontárnyékolókhoz hasonlóan, ha a többelosztásos textúrák támogatottak, D3DSAMP_ELEMENTINDEX segítségével állapítható meg, hogy melyik elemből szeretne mintát venni.
- Ezeknél a szakaszoknál a rendszer figyelmen kívül hagyja az állapot D3DSAMP_DMAPOFFSET.
- A CheckDeviceFormat és D3DUSAGE_QUERY_VERTEXTEXTURE" használatával lekérdezheti az anyagmintát, és ellenőrizheti, hogy használható-e csúcsmintázatként.
- A VertexTextureFilterCaps azt jelzi, hogy milyen típusú szűrők engedélyezettek a csúcsmintázatok mintáinál. D3DPTFILTERCAPS_MINFANISOTROPIC és D3DPTFILTERCAPS_MAGFANISOTROPIC nem engedélyezettek.
Mintavételezési szakaszregisztrálások
A mintavételezési szakaszregisztrálás egy olyan mintavételezési egységet azonosít, amely felhasználható a textúrabetöltési utasításokban. A mintavételezési egység megfelel a mintázat mintavételezési szakaszának, amely magában foglalja a SetSamplerState.
Minden mintavevő egyedileg azonosítja a megfelelő mintavevőre beállított egyetlen felületi felületet a SetTexturehasználatával. Ugyanaz a felület azonban több mintavevőnél is beállítható.
Rajzoláskor az anyagminta nem állítható be egyszerre renderelési célként és anyagmintaként egy adott fázisban.
Mivel vs_3_0 négy mintavevőt támogat, legfeljebb négy felület olvasható egyetlen árnyékoló passzából. A mintavevőregisztráció csak argumentumként jelenhet meg a textúrabetöltési utasításban: texldl – vs.
Ha vs_3_0 egy mintavevőt használ, azt a shader program elején kell deklarálni a dcl_samplerType (sm3 - vs asm) (mint a ps_2_0).
Szoftverfeldolgozás
Ez a funkció támogatott lesz a szoftver csúcspontjainak feldolgozásában. A támogatott szűrőtípusok a GetDeviceCaps hívásával és a VertexTextureFilterCaps ellenőrzésével ellenőrizhetők. A szoftveres csúcspontok feldolgozásában minden közzétett textúraformátum támogatott csúcsmintázatként.
Az alkalmazások a CheckDeviceFormat meghívásával és használatként (D3DVERTEXTEXTURESAMPLER | D3DUSAGE_SOFTWAREPROCESSING) való megadásával ellenőrizhetik, hogy egy adott textúraformátum támogatott-e a szoftver csúcsfeldolgozási módban. A szoftver csúcsainak feldolgozása minden formátumot támogat. A szoftver csúcsának feldolgozásához szükség van a kaparókészletre.
API-módosítások
// New define
#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
#define D3DVERTEXTEXTURESAMPLER2 (D3DDMAPSAMPLER+3)
#define D3DVERTEXTEXTURESAMPLER3 (D3DDMAPSAMPLER+4)
#define D3DVERTEXTEXTURESAMPLER (0x00100000L)
// New caps field in D3DCAPS9
DWORD VertexTextureFilterCaps;
Kapcsolódó témakörök