Delen via


Minimale precisie van HLSL gebruiken

Vanaf Windows 8 kunnen grafische stuurprogramma's minimale precisie implementeren scalaire HLSL-gegevenstypen door elke precisie te gebruiken die groter is dan of gelijk is aan de opgegeven bitprecisie. Wanneer uw HLSL-code voor minimale precisie-shader wordt gebruikt op hardware die minimale precisie van HLSL implementeert, gebruikt u minder geheugenbandbreedte en als gevolg hiervan gebruikt u ook minder systeemkracht.

U kunt een query uitvoeren voor de minimale precisieondersteuning die het grafische stuurprogramma biedt door ID3D11Device::CheckFeatureSupport aan te roepen met de D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT waarde. Zie voor meer informatie ondersteuning voor minimale precisie van HLSL.

Variabelen declareren met minimale precisiegegevenstypen

Als u minimale precisie in HLSL-shadercode wilt gebruiken, declareert u afzonderlijke variabelen met typen zoals min16float (min16float4 voor een vector), min16int, min10float, enzovoort. Met deze variabelen geeft uw shader-code aan dat er geen precisie meer nodig is dan wat de variabelen aangeven. Maar hardware kan de minimale precisie-indicatoren negeren en op volledige 32-bits precisie draaien. Wanneer uw shader-code wordt gebruikt op hardware die gebruikmaakt van minimale precisie, gebruikt u minder geheugenbandbreedte en als gevolg hiervan gebruikt u ook minder systeemkracht zolang uw shader-code geen meer precisie verwacht dan is opgegeven.

U hoeft niet meerdere shaders te maken die wel en geen minimale precisie gebruiken. Maak in plaats daarvan shaders met minimale precisie en de minimale precisievariabelen gedragen zich met volledige 32-bits precisie als het grafische stuurprogramma rapporteert dat deze geen minimale precisie ondersteunt. nl-NL: HLSL minimale precisie-shaders werken niet op besturingssystemen ouder dan Windows 8, dus als u van plan bent om eerdere besturingssystemen te ondersteunen, moet u meerdere shaders maken, sommige die minimale precisie gebruiken en andere die dat niet doen.

Notitie

Zorg ervoor dat gegevens niet schakelen tussen verschillende precisieniveaus binnen een shader, omdat deze typen conversies verspild zijn en de prestaties verminderen. De uitzondering hierop is dat shaderconstanten nog steeds 32 bits zijn, maar leveranciers kunnen grafische hardware ontwerpen die vrij kan omzetten naar elke lagere precisie die de HLSL-instructies kunnen gebruiken.

 

Met minimale precisie kunt u de precisie van berekeningen in verschillende onderdelen van uw shader-code beheren.

De regels voor de minimale precisie van HLSL zijn vergelijkbaar met C/C++, waarbij de typen in een expressie de precisie van de bewerking bepalen, niet het type waarnaar uiteindelijk wordt geschreven.

Minimale precisie-shadercode testen

De referentierasterizer (D3D_DRIVER_TYPE_REFERENCE) geeft u een ruw beeld van hoe minimale precisie in uw HLSL-shader-code zich gedraagt door elke HLSL-instructie te kwantificeren naar de opgegeven precisie. Dit helpt u bij het detecteren van code die mogelijk per ongeluk afhankelijk is van meer dan de minimale precisie. De referentierasterizer wordt niet sneller uitgevoerd wanneer uw HLSL-shader-code minimale precisie gebruikt, maar u kunt deze gebruiken om de juistheid van uw code te controleren. WARP- (D3D_DRIVER_TYPE_WARP) biedt geen ondersteuning voor het gebruik van minimale precisie in HLSL-shadercode; WARP wordt gewoon uitgevoerd met volledige 32-bits precisie.

Programmeerhandleiding voor HLSL-