Delen via


Wat is er nieuw in de Tech Preview van november 2008 Direct3D 11

Deze versie van Direct3D 11 bevat nieuwe functies, hulpprogramma's en documentatie.

Artikel Beschrijving
tesselatie
Direct3D 11 biedt extra pijplijnfasen ter ondersteuning van realtime tessellatie van complexe primitieve vormen. Met uitgebreide programmeerbare mogelijkheden biedt deze functie veel verschillende methoden voor het evalueren van oppervlakken in hoge volgorde, waaronder onderverdelingen met behulp van benaderingstechnieken, Bezier-patches, adaptieve tesselatie en verplaatsingstoewijzing. Deze functie is alleen beschikbaar op Direct3D 11-klasse hardware, dus als u deze functie wilt evalueren, moet u de Reference Rasterizer gebruiken. Bekijk voor een demo van tessellatie in actie het SubD11 voorbeeld dat beschikbaar is via de Sample Browser.
Compute Shader
De Compute Shader is een extra fase, onafhankelijk van de Direct3D 11-pijplijn waarmee computing voor algemeen gebruik op de GPU mogelijk is. Naast alle arceringsfuncties die worden geleverd door de uniforme arceringskern, biedt de Compute Shader ook ondersteuning voor spreidingslees- en schrijfbewerkingen naar resources via niet-geordende toegangsweergaven, een gedeeld geheugenpool binnen een groep threads, synchronisatieprimitieven, atomische operatoren en vele andere geavanceerde functies voor gegevensparallel. In deze release is een variant van de Direct3D 11 Compute Shader ingeschakeld die kan worden uitgevoerd op Direct3D 10-klasse hardware. Het is daarom mogelijk om Compute Shaders te ontwikkelen op werkelijke hardware, maar er is een bijgewerkt stuurprogramma vereist. De volledige functionaliteit van de Direct3D 11 Compute Shader is bedoeld voor ondersteuning van Direct3D 11-klasse hardware, dus om de volledige functionaliteit te evalueren moet u de Reference Rasterizer gebruiken totdat dergelijke hardware beschikbaar is. Bekijk voor een demo van de Compute Shader in actie het HDRToneMappingCS11 voorbeeld, beschikbaar via de voorbeeldbrowser.
Multithreaded Rendering
Het belangrijkste API-verschil met Direct3D 10 in Direct3D 11 is de toevoeging van uitgestelde contexten, waardoor schaalbare uitvoering van Direct3D-opdrachten over meerdere kernen mogelijk is. Een uitgestelde context legt acties vast en verzamelt acties zoals statuswijzigingen en teken inzendingen die op een later tijdstip op het daadwerkelijke apparaat kunnen worden uitgevoerd. Door gebruik te maken van uitgestelde contexten op meerdere threads, kan een toepassing de CPU-overhead die nodig is in de Direct3D11-runtime en het stuurprogramma distribueren naar meerdere kernen, waardoor de computerconfiguratie van een eindgebruiker beter kan worden gebruikt. Deze functie is beschikbaar voor gebruik op de huidige Direct3D 10-hardware en de referentierasterizer. Bekijk het MultithreadedRendering11 voorbeeld dat beschikbaar is via de voorbeeldbrowser voor een demonstratie van API-gebruik.
dynamische shaderkoppeling
Direct3D 11 introduceert een beperkte vorm van runtime-shaderkoppeling die een bijna optimale shaderspecialisatie tijdens de uitvoering van een applicatie mogelijk maakt om het probleem van de combinatoriale explosie bij het specialiseren van shaders voor prestaties aan te pakken. Dit wordt bereikt door de implementaties van specifieke functies in shader-code op te geven wanneer de shader wordt toegewezen aan de pijplijn, zodat het stuurprogramma snel inline native shader-instructies kan invoeren in plaats van dat het stuurprogramma de tussenliggende taal opnieuw moet compileren in systeemeigen instructies met de nieuwe configuratie. Shader-ontwikkeling wordt weergegeven via de introductie van klassen en interfaces voor HLSL. Voor een demonstratie, bekijk het Dynamic Shader Linkage 11 voorbeeld beschikbaar via de Sample Browser.
Windows Advanced Rasterizer (WARP)
Beschikbaar in deze SDK via Direct3D 11 en uiteindelijk ook via Direct3D 10.1, is WARP een snelle, multi-core schaalbare rasterisator die volledig compatibel is met Direct3D 10.1. Het gebruik van deze technologie is net zo eenvoudig als door het D3D_DRIVER_TYPE_WARP-vlag toe te voegen aan de creatie van uw apparaat.
Direct3D 10 en Direct3D 11 op Direct3D 9 Hardware (D3D10 Level 9)
Beschikbaar in deze SDK via Direct3D 11 en uiteindelijk ook via Direct3D 10.1, kan de Direct3D-API zich richten op de meeste Direct3D 9-hardware en Direct3D 10, Direct3D 10.1 en Direct3D 11-hardware. Dit wordt bereikt door het mechanisme functieniveau te bieden, dat hardware in zes categorieën groepeert, afhankelijk van functionaliteit: 9_1, 9_2, 9_3, 10_0, 10_1 en 11_0. Een kaart voldoet alleen aan een functieniveau als deze volledig compatibel is met dat niveau, en elk niveau is een strikte superset van die eronder. Functionaliteit wordt minimaal geëmuleerd om ervoor te zorgen dat er geen onverwachte prestatiekliffen worden aangetroffen. Functies zoals Geometry Shaders zijn dus niet beschikbaar voor Direct3D 9-niveaudoelen.
binaire runtimebestanden
Alle binaire runtimebestanden in de Tech Preview van Direct3D 11 die beschikbaar zijn in Windows 7 en Windows Vista SP1, worden geïnstalleerd met de SDK en zijn gelabeld als bètaonderdelen (dat wil bijvoorbeeld D3D11_beta.DLL). Alle bèta-gelabelde onderdelen zijn voorzien van een tijdslimiet. Als u projecten wilt maken om deze nieuwe onderdelen te evalueren, moet u een koppeling maken naar hun equivalente bèta-gelabelde importbibliotheken (bijvoorbeeld D3D11_beta.lib). Als u een PDC-kopie van Windows 7 hebt, zijn de headers, bibliotheken en pdbs die zijn geleverd in de Windows SDK met de build geschikt voor ontwikkeling met behulp van de Direct3D 11-onderdelen die in Windows 7 worden geleverd. Reserveer het gebruik van de headers, bibliotheken en pdbs in deze SDK voor de bètaonderdelen die hier worden aangeboden.
D3DX11
D3DX11 biedt momenteel ondersteuning voor het laden van patronen, het compileren van shader, het laden van gegevens en werkthreadfuncties voor Direct3D 11-resources. In de toekomst biedt dit onderdeel meer technologieën die beschikbaar zijn in D3DX10. De compilatiefunctionaliteit van Shader wordt ook rechtstreeks geleverd via het Direct3D Compiler-onderdeel, dat hierna wordt beschreven.
HLSL en Direct3D Compiler
De HLSL-compiler heeft verschillende nieuwe functies voor het ondersteunen van de nieuwe technologieën die beschikbaar zijn in Direct3D 11. Dit omvat objectgeoriënteerde programmering via interfaces en klassen, een directe indexeringsyntaxis voor resourcebelastingen en het sleutelwoord 'nauwkeurig' om ervoor te zorgen dat alle bewerkingen die worden uitgevoerd met een specifieke variabele voldoen aan de strikte drijvendekommaregels. Bijna alle nieuwe taalkundige functies hebben geldige functionaliteit voor bestaande shader-doelen. Naast de ondersteuning van alle Direct3D 9-, Direct3D 10-, Direct3D 10.1- en Direct3D 11-shaders ondersteunt de HLSL-compiler ook de speciale doelen die nodig zijn voor het schrijven van shaders voor Direct3D 10 Level 9-doelen. De D3D Compiler is nu rechtstreeks toegankelijk buiten D3DX10 en D3DX11 via D3DCompiler.H en D3DCompiler.lib. Met deze nieuwe bestanden is een toepassing niet vereist om een koppeling naar D3DX uit te voeren om runtimecompilatie uit te voeren en is een toepassing niet vereist om de compiler op te nemen als alleen D3DX-functionaliteit nodig is.
D3D11 Reference Rasterizer
Reference Rasterizer biedt een gold-standard rasterisatie-implementatie voor evaluatie van Direct3D 11-functies die nog niet beschikbaar zijn in hardware. De Reference Rasterizer wordt ook geleverd als een manier om de nauwkeurigheid van een specifieke hardware-implementatie te controleren op de rasteriseringsstandaard. De referentierasterfunctie is ontworpen voor juistheid, niet voor prestaties. Als u een referentieapparaat wilt maken, moet u de D3D_DRIVER_TYPE_REFERENCE-flag doorgeven bij de apparaatcreatie.
D3D11 SDK-lagen
Direct3D11 SDK-lagen bieden een mechanisme voor het bijhouden van de werking van de Direct3D 11-runtime tijdens de ontwikkeling. Dit wordt momenteel gebruikt voor het leveren van nuttige foutopsporingsinformatie, die niet alleen fouten over onjuist gebruik bevat, maar ook waarschuwingen die het beste gebruik van de runtime aanbevelen en vaak uitgebreide, nuttige informatie biedt voor foutopsporing. Het wordt ten zeerste aanbevolen dat de foutopsporingsuitvoer van D3D11 SDK-lagen altijd wordt ingeschakeld tijdens de ontwikkeling en dat een toepassing tijdens de uitvoering geen foutopsporingsuitvoer genereert voordat deze wordt uitgebracht of gebruikt met PIX voor Windows voor profilering. Het inschakelen van de debuglaag is net zo eenvoudig als het doorgeven van de D3D11_CREATE_DEVICE_DEBUG parameter bij het maken van het apparaat. Ontwikkelaars worden sterk aangeraden lagen te gebruiken in builds voor foutopsporing. Lagen worden niet aanbevolen voor gebruik in profiel- of releaseversies.
nieuwe voorbeelden
Deze release heeft vier nieuwe voorbeelden.
  • Het voorbeeld Dynamic Shader Linkage 11 demonstreert het gebruik van Shader Model 5-shader-interfaces en Direct3D 11-ondersteuning voor het koppelen van shader-interfacemethoden tijdens runtime.
  • De HDRToneMappingCS11 voorbeeld laat zien hoe u de Compute Shader (CS voor kort later) instelt en uitvoert. Dit is een van de meest interessante nieuwe functies van Direct3D 11. Hoewel het voorbeeld alleen gebruikmaakt van de CS om HDR-toontoewijzing te implementeren, moet het concept eenvoudig worden uitgebreid naar andere algoritmen na verwerking en meer algemene berekeningen.
  • De MultithreadedRendering11 voorbeeld laat zien hoe u rendering splitst tussen meerdere threads, met zeer lage overhead.
  • De nieuwe SubD11 sample is vergelijkbaar met het SubD10-sample in de DirectX SDK, behalve dat het is verbeterd om gebruik te maken van drie nieuwe Direct3D 11-pijplijnfasen: de hull shader, de tessellator en de domain shader.

functies die zijn geïntroduceerd in eerdere releases