Udostępnij za pośrednictwem


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;

potoku wierzchołka