Tekstury wierzchołków w vs_3_0 (DirectX HLSL)
Model cieniowania wierzchołków 3.0 obsługuje wyszukiwanie tekstur w cieniatorze wierzchołków przy użyciu instrukcji texldl — vs instrukcji obciążenia tekstury. Aparat wierzchołka zawiera cztery etapy próbkowania tekstur o nazwie D3DVERTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 i D3DVERTEXTEXTURESAMPLER3. Różnią się one od próbkatora mapy przemieszczania i próbek tekstur w aucie pikseli.
Aby próbkować tekstury ustawione na tych czterech etapach, można użyć aparatu wierzchołka i zaprogramować etapy za pomocą metody CheckDeviceFormat. Ustaw tekstury na tych etapach przy użyciu SetTexture, z indeksem etapu D3DVERTEXTEXTURESAMPLER0 przez D3DVERTEXTEXTURESAMPLER3. Nowy rejestr został wprowadzony w cieniowania wierzchołków, rejestr próbkatora (na przykład w ps_2_0), który reprezentuje próbkator tekstury wierzchołka. Ten rejestr należy zdefiniować w cieniatorze przed jego użyciem.
Aplikacja może wykonywać zapytania, jeśli format jest obsługiwany jako tekstura wierzchołka, wywołując CheckDeviceFormat za pomocą D3DUSAGE_QUERY_VERTEXTEXTURE.
Nuta
Jest to flaga zapytania, więc nie jest akceptowana w żadnej funkcji Createxxx. Tekstura wierzchołka utworzona w puli domyślnej można ustawić jako teksturę pikseli i na odwrót. Jednak aby korzystać z przetwarzania wierzchołków oprogramowania, tekstura wierzchołka musi zostać utworzona w puli plików tymczasowych (niezależnie od tego, czy jest to urządzenie w trybie mieszanym lub urządzenie przetwarzania wierzchołków oprogramowania).
Funkcjonalność jest identyczna z teksturami pikseli, z wyjątkiem następujących elementów:
- Filtrowanie tekstur anizotropowych nie jest obsługiwane, dlatego D3DSAMP_MAXANISOTROPY jest ignorowane i nie można ustawić D3DTEXF_ANISOTROPIC na potrzeby powiększania ani minimalizowania dla tych etapów.
- Szybkość informacji o zmianach jest niedostępna, dlatego aplikacja musi obliczyć poziom szczegółowości i podać te informacje jako parametr texldl — a.
Ograniczenia obejmują:
- Podobnie jak w cieniowaniach pikseli, jeśli obsługiwane są tekstury wieloelementowe, D3DSAMP_ELEMENTINDEX służy do określania elementu do próbkowania.
- Stan D3DSAMP_DMAPOFFSET jest ignorowany dla tych etapów.
- Użyj CheckDeviceFormat z D3DUSAGE_QUERY_VERTEXTEXTURE", aby zbadać teksturę, aby sprawdzić, czy może być używana jako tekstura wierzchołka.
- VertexTextureFilterCaps wskazuje, jakie filtry są dozwolone w próbkach tekstur wierzchołków. D3DPTFILTERCAPS_MINFANISOTROPIC i D3DPTFILTERCAPS_MAGFANISOTROPIC są niedozwolone.
Rejestry etapów próbkowania
Rejestr etapu próbkowania identyfikuje jednostkę próbkowania, która może być używana w instrukcjach ładowania tekstur. Jednostka próbkowania odpowiada etapowi próbkowania tekstury, hermetyzując stan specyficzny dla próbkowania podany w SetSamplerState.
Każdy przykładnik jednoznacznie identyfikuje pojedynczą powierzchnię tekstury ustawioną na odpowiedni przykładomierz przy użyciu SetTexture. Można jednak ustawić tę samą powierzchnię tekstury na wielu próbkach.
W czasie rysowania tekstura nie może być jednocześnie ustawiona jako element docelowy renderowania i tekstura na etapie.
Ponieważ vs_3_0 obsługuje cztery próbkatory, do czterech powierzchni tekstur można odczytać w jednym przebiegu cieniowania. Rejestr próbkatora może być wyświetlany tylko jako argument w instrukcji obciążenia tekstury: texldl — vs.
W vs_3_0, jeśli używasz próbkatora, musi zostać zadeklarowany na początku programu cieniowania przy użyciu dcl_samplerType (sm3 - vs asm) (jak w ps_2_0).
Przetwarzanie oprogramowania
Ta funkcja będzie obsługiwana w przetwarzaniu wierzchołków oprogramowania. Obsługiwane typy filtrów można sprawdzić, wywołując GetDeviceCaps i sprawdzając vertexTextureFilterCaps. Wszystkie opublikowane formaty tekstur będą obsługiwane jako tekstury wierzchołków w przetwarzaniu wierzchołków oprogramowania.
Aplikacje mogą sprawdzić, czy określony format tekstury jest obsługiwany w trybie przetwarzania wierzchołków oprogramowania, wywołując CheckDeviceFormat i podając (D3DVERTEXTEXTURESAMPLER | D3DUSAGE_SOFTWAREPROCESSING) jako użycie. Wszystkie formaty są obsługiwane w przypadku przetwarzania wierzchołków oprogramowania. Pula plików tymczasowych jest wymagana do przetwarzania wierzchołków oprogramowania.
Zmiany interfejsu API
// 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;
Tematy pokrewne