Nyheter i Tech Preview för nov 2008 Direct3D 11
Den här versionen av Direct3D 11 innehåller nya funktioner, verktyg och dokumentation.
Artikel | Beskrivning |
---|---|
Tessellation |
Direct3D 11 tillhandahåller ytterligare pipelinesteg för att stödja realtidstessellering av högre ordningens primitiver. Med omfattande programmerbara funktioner möjliggörs många olika metoder för att utvärdera högre ordningens ytor, inklusive indelningsytor med approximationstekniker, Bezier-lappar, adaptiv tessellering och förskjutningsmappning. Den här funktionen är endast tillgänglig på Direct3D 11-klass maskinvara, så för att utvärdera den här funktionen måste du använda referens rasterizer. För att se tessellering i praktiken, kolla in SubD11 exempel som är tillgängligt via Exempelbläddraren. |
Beräkningsshader |
Compute Shader- är en ytterligare fas oberoende av Direct3D 11-pipelinen som möjliggör allmän databehandling på GPU:n. Förutom alla skuggningsfunktioner som tillhandahålls av den enhetliga skuggningskärnan har Compute Shader även stöd för spridda läsningar och skrivningar till resurser via osorterade åtkomstvyer, en delad minnespool i en grupp med körningstrådar, synkroniseringsprimitatorer, atomoperatorer och många andra avancerade dataparallella funktioner. En variant av Direct3D 11 Compute Shader har aktiverats i den här versionen som kan användas på Direct3D 10-klass maskinvara. Det är därför möjligt att utveckla Compute Shaders på den faktiska maskinvaran, men en uppdaterad drivrutin krävs. Den fullständiga funktionaliteten i Direct3D 11 Compute Shader är avsedd för stöd för Direct3D 11-klass maskinvara, så för att utvärdera alla funktioner måste du använda referens rastrering tills sådan maskinvara är tillgänglig. En demonstration av compute shader i praktiken finns i HDRToneMappingCS11 exempel som är tillgängligt via Exempelwebbläsaren. |
flertrådad återgivning |
Den viktigaste API-skillnaden från Direct3D 10 i Direct3D 11 är tillägget av uppskjutna kontexter, vilket möjliggör skalbar körning av Direct3D-kommandon som distribueras över flera kärnor. En fördröjd kontext fångar upp och sammanställer åtgärder som tillståndsändringar och ritkommandon som kan köras på den faktiska enheten vid ett senare tillfälle. Genom att använda uppskjutna kontexter i flera trådar kan ett program distribuera processorkostnaderna som behövs i Direct3D11-körningen och drivrutinen till flera kärnor, vilket ger bättre användning av en slutanvändares datorkonfiguration. Den här funktionen är tillgänglig för användning på aktuell Direct3D 10-maskinvara samt referens rastrering. En demonstration av API-användning finns i MultithreadedRendering11-exempel som är tillgängligt via exempelbläddraren. |
dynamisk skuggningslänkning |
För att åtgärda problemet med kombinatorisk explosion som ses i att specialisera shaders för prestanda introducerar Direct3D 11 en begränsad form av körningstid skuggninglänkage som möjliggör nästan optimal skuggningsspecialisering vid körning av ett program. Detta uppnås genom att ange implementeringarna av specifika funktioner i skuggningskod när skuggningen tilldelas till pipelinen, vilket gör att drivrutinen snabbt kan infoga interna skuggningsinstruktioner i stället för att tvinga drivrutinen att kompilera om mellanspråket till interna instruktioner med den nya konfigurationen. Shader-utveckling exponeras genom introduktionen av klasser och gränssnitt till HLSL. En demonstration finns i exemplet Dynamic Shader Linkage 11 som är tillgängligt via exempelwebbläsaren. |
Windows Advanced Rasterizer (WARP) |
WARP är tillgängligt i denna SDK via Direct3D 11 och så småningom även via Direct3D 10.1. Det är en snabb, skalande rastreringsmotor med flera kärnor, vilket är helt Direct3D 10.1-kompatibel. Att använda den här tekniken är lika enkelt som att skicka flaggan D3D_DRIVER_TYPE_WARP vid enhetens skapande. |
Direct3D 10 och Direct3D 11 på Direct3D 9 hårdvara (D3D10 Level 9) |
Direct3D-API:et är tillgängligt i denna SDK via Direct3D 11 och slutligen även via Direct3D 10.1 och kan rikta in sig på de flesta Direct3D 9-maskinvara samt Direct3D 10, Direct3D 10.1 och Direct3D 11-maskinvara. Detta uppnås genom att tillhandahålla mekanismen på funktionsnivå, som grupperar maskinvara i sex kategorier beroende på funktionalitet: 9_1, 9_2, 9_3, 10_0, 10_1 och 11_0. Ett kort uppfyller bara en funktionsnivå om det är helt kompatibelt med den nivån, och varje nivå är en strikt superuppsättning av dem som ligger under den. Funktionaliteten emuleras minimalt för att säkerställa att inga oväntade prestandaklippor påträffas. Därför är funktioner som Geometry Shaders inte tillgängliga för Direct3D 9-nivåmål. |
Runtime-binärfiler |
Alla runtime-binärfiler som tillhandahålls i Direct3D 11 Tech Preview som kommer att vara tillgängliga i Windows 7 och Windows Vista SP1 installeras med SDK och är märkta som "Beta"-komponenter (dvs. D3D11_beta.DLL). Alla betamärkta komponenter har en tidsgräns. Om du vill skapa projekt för att utvärdera dessa nya komponenter måste du länka till deras motsvarande betamärkta importbibliotek (dvs. D3D11_beta.lib). Om du har en PDC-kopia av Windows 7 är huvudfilerna, bibliotek (libs), och programdatabaser (pdbs) som tillhandahålls i Windows SDK med byggversionen lämpliga för utveckling med hjälp av Direct3D 11-komponenterna i Windows 7. Reservera användningen av headrar, libs och pdbs i denna SDK till de betakomponenter som anges häri. |
D3DX11 |
D3DX11 stöder för närvarande texturinläsning, skuggningskompilering, datainläsning och arbetstrådsfunktioner för Direct3D 11-resurser. I framtiden kommer den här komponenten att tillhandahålla fler av de tekniker som är tillgängliga i D3DX10. Shader-kompileringsfunktionen tillhandahålls också direkt via Direct3D Compiler-komponenten, som beskrivs härnäst. |
HLSL och Direct3D Compiler |
HLSL-kompilatorn har flera nya funktioner för att stödja de nya teknikerna i Direct3D 11. Detta inkluderar objektorienterad programmering via gränssnitt och klasser, en direkt indexeringssyntax för resursbelastningar och nyckelordet "exakt" för att säkerställa att alla åtgärder som utförs med en specifik variabel följer de strikta flyttalsreglerna. Nästan alla nya språkfunktioner har giltiga funktioner på befintliga skuggningsmål. Förutom att stödja alla Direct3D 9-, Direct3D 10-, Direct3D 10.1- och Direct3D 11-skuggningar stöder HLSL-kompilatorn även de särskilda mål som behövs för att skriva skuggningar för Direct3D 10 Nivå 9-mål. D3D-kompilatorn är nu direkt tillgänglig utanför D3DX10 och D3DX11 via D3DCompiler.H och D3DCompiler.lib. Med dessa nya filer krävs inget program för att länka till D3DX för att utföra körningskompilering, och ett program krävs inte för att inkludera kompilatorn om endast D3DX-funktioner behövs. |
D3D11 Referensrastreringsenhet |
Referensrasterizern tillhandahåller en guldstandard för rastreringsimplementering för utvärdering av Direct3D 11-funktioner som ännu inte är tillgängliga i hårdvara. Referens rasterizer tillhandahålls också som ett sätt att verifiera en specifik maskinvaruimplementerings noggrannhet till rasteriseringsstandarden. Referens rastreringsverktyget är utformat för korrekthet, inte prestanda. Om du vill skapa en referensenhet skickar du bara flaggan D3D_DRIVER_TYPE_REFERENCE när enheten skapas. |
D3D11 SDK-lager |
Direct3D11 SDK-lager tillhandahåller en mekanism för att spåra driften av Direct3D 11 runtime-miljön under utvecklingen. För närvarande används detta för att tillhandahålla användbar felsökningsinformation, som inte bara innehåller fel vid felaktig användning, utan även varningar som rekommenderar bästa praxis för körning och ofta ger djupgående och användbar information för felsökning. Vi rekommenderar starkt att felsökningsutdata från D3D11 SDK-lager alltid aktiveras under utvecklingen och att ett program inte genererar några felsökningsutdata under körningen innan det släpps eller används med PIX för Windows för profilering. Det är lika enkelt att aktivera felsökningsskiktet som att skicka flaggan D3D11_CREATE_DEVICE_DEBUG när enheten skapas. Utvecklare uppmanas starkt att använda lager i felsökningsversioner. Lager rekommenderas inte för användning i profil- eller versionsversioner. |
nya exempel |
Den här versionen har fyra nya exempel.
|