Delen via


Hoekpuntpatroon in vs_3_0 (DirectX HLSL)

Het hoekpunt-shader 3.0-model ondersteunt het opzoeken van patronen in de hoekpunt-shader met behulp van de texldl - vs patroonbelastingsinstructie. De hoekpuntengine bevat vier patroonvoorbeeldfasen, genaamd D3DVERTEXTEXTURESAMPLER0, D3DVERTEXTEXTURESAMPLER1, D3DVERTEXTEXTURESAMPLER2 en D3DVERTEXTEXTURESAMPLER3. Deze verschillen van de verplaatsingskaart sampler en patroon samplers in de pixel-engine.

Als u patronen wilt samplen die in deze vier fasen zijn ingesteld, kunt u de hoekpuntengine gebruiken en de fasen programmeren met de methode CheckDeviceFormat. Stel patronen in die fasen in met behulp van SetTexture, waarbij de faseindex D3DVERTEXTEXTURESAMPLER0 tot D3DVERTEXTEXTURESAMPLER3. Er is een nieuw register geïntroduceerd in de hoekpunt-shader, het register van de sampler (zoals in ps_2_0), dat de voorbeeldexempnemer van het hoekpunt vertegenwoordigt. Dit register moet worden gedefinieerd in de shader voordat u het gebruikt.

Een toepassing kan een query uitvoeren als een indeling wordt ondersteund als een hoekpuntpatroon door CheckDeviceFormat- aan te roepen met D3DUSAGE_QUERY_VERTEXTEXTURE.

Notitie

Dit is een queryvlag, zodat deze niet wordt geaccepteerd in een Createxxx-functie. Een hoekpuntpatroon dat in de standaardgroep is gemaakt, kan worden ingesteld als pixelpatroon en omgekeerd. Als u echter de verwerking van softwarehoeken wilt gebruiken, moet het hoekpuntpatroon worden gemaakt in de scratchpool (ongeacht of het een apparaat in de gemengde modus of een apparaat voor software-hoekpuntverwerking is).

 

De functionaliteit is identiek aan de pixeltextuur, met uitzondering van het volgende:

  • Het filteren van anisotropische patronen wordt niet ondersteund, dus D3DSAMP_MAXANISOTROPY wordt genegeerd en D3DTEXF_ANISOTROPIC kan niet worden ingesteld voor vergrootglas of minify voor deze fasen.
  • Snelheid van wijzigingsgegevens is niet beschikbaar, daarom moet de toepassing het detailniveau berekenen en die informatie als parameter opgeven voor texldl - versus.

Beperkingen zijn onder andere:

  • Net als bij pixel-shaders, als patronen met meerdere elementen worden ondersteund, wordt D3DSAMP_ELEMENTINDEX gebruikt om te bepalen van welk element moet worden gemonsterd.
  • De status D3DSAMP_DMAPOFFSET wordt genegeerd voor deze fasen.
  • Gebruik CheckDeviceFormat met D3DUSAGE_QUERY_VERTEXTEXTURE" om een query uit te voeren op een patroon om te zien of het kan worden gebruikt als hoekpuntpatroon.
  • VertexTextureFilterCaps geeft aan welk type filters zijn toegestaan bij de voorbeeldvoorbeelden van het hoekpuntpatroon. D3DPTFILTERCAPS_MINFANISOTROPIC en D3DPTFILTERCAPS_MAGFANISOTROPIC zijn niet toegestaan.

Samplingfaseregisters

Een steekproeffaseregister identificeert een sampling-eenheid die kan worden gebruikt in patroonbelastingsinstructies. Een steekproefeenheid komt overeen met de fase voor het nemen van patronen, waarbij de steekproefspecifieke status in SetSamplerStatewordt ingekapseld.

Elke sampler identificeert een uniek patroonoppervlak dat is ingesteld op de bijbehorende sampler met behulp van SetTexture. Hetzelfde patroonoppervlak kan echter worden ingesteld bij meerdere samplers.

Op het moment van tekenen kan een patroon niet tegelijkertijd worden ingesteld als een renderdoel en een patroon in een fase.

Omdat vs_3_0 vier samplers ondersteunt, kunnen maximaal vier textuuroppervlakken worden gelezen in één arceringspas. Een voorbeeldregister kan alleen worden weergegeven als een argument in de patroonbelastingsinstructie: texldl - versus.

Als u in vs_3_0 een sampler gebruikt, moet deze aan het begin van het shader-programma worden gedeclareerd met behulp van de dcl_samplerType (sm3 - vs asm) (zoals in ps_2_0).

Softwareverwerking

Deze functie wordt ondersteund in de verwerking van softwarepunten. De ondersteunde filtertypen kunnen worden gecontroleerd door GetDeviceCaps aan te roepen en VertexTextureFilterCaps te controleren. Alle gepubliceerde bitmapindelingen worden ondersteund als hoekpunttexverwerking.

Toepassingen kunnen controleren of een bepaalde patroonindeling wordt ondersteund in de verwerkingsmodus van softwarehoeken door CheckDeviceFormat- aan te roepen en (D3DVERTEXTEXTURESAMPLER | D3DUSAGE_SOFTWAREPROCESSING) als gebruik aan te roepen. Alle indelingen worden ondersteund voor het verwerken van software-hoekpunten. De scratchpool is vereist voor het verwerken van softwarehoeken.

API-wijzigingen

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

hoekpuntpijplijn