Кіріспе
Microsoft DirectX-те 3D рендеринг үшін қолданылатын API Direct3D – Microsoft Windows үшін графикалық қолданба бағдарламалау интерфейсі (API). DirectX құрамына кіретін Direct3D үш өлшемді графикті көрсету маңызды болған қолданбаларда, мысалы, ойындарда пайдалану үшін қолданылады. Direct3D графикалық картада мүмкіндік болса, аппараттық үдетуді қолданады, бұл 3D рендеринг процесінің толық немесе ішінара аппараттық үдетуіне мүмкіндік береді. Direct3D 3D графикалық жабдықтың кеңейтілген графикалық мүмкіндіктерін ұсынады, соның ішінде Z-буферлеу, W-буферлеу, штамп буферлеу, кеңістіктік антиалиазинг, альфа-қосылу, түс қосылу, мип-карталау, текстура қосылу, қиып тастау, іріктеу, атмосфералық эффекттер, перспективаға сәйкес текстура карталау, бағдарламаланатын HLSL шейдерлері мен эффекттері. Басқа DirectX технологияларымен интеграция Direct3D-ге бейне карталау, 2D жазықтықта аппараттық 3D рендеринг және тіпті спрайттар сияқты мүмкіндіктерді беруге мүмкіндік береді, бұл интерактивті медиада 2D және 3D графиканы пайдалануды қамтамасыз етеді. Direct3D 3D компьютерлік графиканы рендерингтеу үшін көптеген командаларды қамтиды; алайда, 8-ші нұсқадан бастап Direct3D DirectDraw фреймворкін алмастырып, 2D графиканы рендерингтеуге жауапкершілікті алды. Microsoft 3D графикалық карталарда қол жетімді ең соңғы технологияларды қолдау үшін Direct3D-ді үнемі жаңартуға тырысады. Direct3D толық vertex бағдарламалық эмуляциясын ұсынады, бірақ аппараттық құралда қол жетімсіз мүмкіндіктер үшін пиксельдік бағдарламалық эмуляциясын ұсынбайды. Мысалы, Direct3D арқылы бағдарламаланған бағдарламалық қамтамасыз ету пиксельдік шейдерлерді қажет етсе және пайдаланушының компьютеріндегі бейне картасы бұл мүмкіндікті қолдамаса, Direct3D оны эмуляцияламайды, бірақ 3D модельдердің көпбұрыштары мен текстураларын есептеп, рендерингтейді, бірақ әдетте аппараттық эквивалентімен салыстырғанда сапасы мен өнімділігі төмен болады. API-ге бағдарламалық жасақтамада жалпы графикалық картаны эмуляциялайтын сілтемелі растерлеуші (немесе REF құрылғысы) кіреді, бірақ бұл көптеген нақты уақыт 3D қолданбалары үшін тым баяу және әдетте түзету үшін ғана қолданылады. Direct3D 10.1 толық мүмкіндіктерін эмуляциялауға арналған жаңа нақты уақыт бағдарламалық растерлеуші, WARP, Windows 7 және Windows Vista Service Pack 2 платформалық жаңартумен бірге қоса берілген; оның өнімділігі көп ядролы процессорлардағы төменгі деңгейдегі 3D карталармен шамалас. DirectX құрамында Direct3D Windows 95 және одан жоғары нұсқаларында қол жетімді және Xbox консольдерінің әртүрлі нұсқаларында векторлық графика API-інің негізі болып табылады. Wine үйлесімділік қабаты, бірнеше Windows API-лерін еркін бағдарламалық жасақтамалық түрде қайта іске асыру, Direct3D-нің іске асырылуын қамтиды. Direct3D-нің басты бәсекелесі – Khronos компаниясының OpenGL және оның Vulkan-дағы жалғасы. Fahrenheit – Microsoft және SGI компанияларының 1990-шы жылдары OpenGL және Direct3D-ді біріктіруге жасаған әрекеті, бірақ кейіннен тоқтатылды.
Direct3D is a graphics application programming interface (API) for Microsoft Windows. Part of DirectX, Direct3D is used to render three dimensional graphics in applications where performance is important, such as games. Direct3D uses hardware acceleration if it is available on the graphics card, allowing for hardware acceleration of the entire 3D rendering pipeline or even only partial acceleration. Direct3D exposes the advanced graphics capabilities of 3D graphics hardware, including Z buffering, W buffering, stencil buffering, spatial anti aliasing, alpha blending, color blending, mipmapping, texture blending, clipping, culling, atmospheric effects, perspective correct texture mapping, programmable HLSL shaders and effects. Integration with other DirectX technologies enables Direct3D to deliver such features as video mapping, hardware 3D rendering in 2D overlay planes, and even sprites, providing the use of 2D and 3D graphics in interactive media ties. Direct3D contains many commands for 3D computer graphics rendering; however, since version 8, Direct3D has superseded the DirectDraw framework and also taken responsibility for the rendering of 2D graphics. Microsoft strives to continually update Direct3D to support the latest technology available on 3D graphics cards. Direct3D offers full vertex software emulation but no pixel software emulation for features not available in hardware. For example, if software programmed using Direct3D requires pixel shaders and the video card on the user's computer does not support that feature, Direct3D will not emulate it, although it will compute and render the polygons and textures of the 3D models, albeit at a usually degraded quality and performance compared to the hardware equivalent. The API does include a Reference Rasterizer (or REF device), which emulates a generic graphics card in software, although it is too slow for most real time 3D applications and is typically only used for debugging. A new real time software rasterizer, WARP, designed to emulate the complete feature set of Direct3D 10.1, is included with Windows 7 and Windows Vista Service Pack 2 with the Platform Update; its performance is said to be on par with lower end 3D cards on multi core CPUs. As part of DirectX, Direct3D is available for Windows 95 and above, and is the base for the vector graphics API on the different versions of Xbox console systems. The Wine compatibility layer, a free software reimplementation of several Windows APIs, includes an implementation of Direct3D. Direct3D's main competitor is Khronos' OpenGL and its follow on Vulkan. Fahrenheit was an attempt by Microsoft and SGI to unify OpenGL and Direct3D in the 1990s, but was eventually canceled.
Шолу
Direct3D 6.0 – Көп текстуралау
Direct3D 7.0 – Аппараттық түрлендіру, қиып тастау және жарықтандыру (TCL/T&L)
Direct3D 8.0 – Pixel Shader 1.0/1.1 & Vertex Shader 1.0/1.1
Direct3D 8.1 – Pixel Shader 1.2/1.3/1.4
Direct3D 9.0 – Shader Model 2.0 (Pixel Shader 2.0 & Vertex Shader 2.0)
Direct3D 9.0a – Shader Model 2.0a (Pixel Shader 2.0a & Vertex Shader 2.0a)
Direct3D 9.0b – Pixel Shader 2.0b
Direct3D 9.0c – Windows 98 (алғашқы нұсқалары) және Windows 2000/XP (барлық нұсқалары) үшін қолдау көрсетілетін соңғы нұсқа; Shader Model 3.0 (Pixel Shader 3.0 & Vertex Shader 3.0)
Direct3D 9.0L – Windows Vista үшін ғана; Direct3D 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, DXVA 1.0, GPGPU
Direct3D 10.0 – Windows Vista/Windows 7; Shader Model 4.0, Windows Graphics Foundation 2.0, DXVA 2.0
Direct3D 10.1 – Windows Vista SP1/Windows 7; Shader Model 4.1, Windows Graphics Foundation 2.1, DXVA 2.1
Direct3D 11.0 – Windows Vista SP2/Windows 7; Shader Model 5.0, Тесселяция, Көп өрісті рендерлеу, Есептеу шейдерлері, аппараттық және бағдарламалық қамтамасыз ету арқылы жүзеге асырылады Direct3D 9/10/10.1
Direct3D 11.1 – Windows 8 (Windows 7 SP1-де де жартылай қолдау көрсетіледі); Стереоскопиялық 3D рендерлеу
Direct3D 11.2 – Windows 8.1; Төрайлық ресурстар
Direct3D 11.3 – Windows 10
Direct3D 12.0 – Windows 10; Төмен деңгейлі рендерлеу API, Shader Model 5.1 және 6.0
Direct3D 12.1 – Windows 10; DirectX Raytracing
Direct3D 12.2 – Windows 10; DirectX 12 Ultimate
Direct3D 7.0 – Hardware Transformation, Clipping and Lighting (TCL/T&L)
Direct3D 8.0 – Pixel Shader 1.0/1.1 & Vertex Shader 1.0/1.1
Direct3D 8.1 – Pixel Shader 1.2/1.3/1.4
Direct3D 9.0 – Shader Model 2.0 (Pixel Shader 2.0 & Vertex Shader 2.0)
Direct3D 9.0a – Shader Model 2.0a (Pixel Shader 2.0a & Vertex Shader 2.0a)
Direct3D 9.0b – Pixel Shader 2.0b
Direct3D 9.0c – last version supported for Windows 98 (early releases) and for Windows 2000/XP (all releases); Shader Model 3.0 (Pixel Shader 3.0 & Vertex Shader 3.0)
Direct3D 9.0L – Windows Vista only; Direct3D 9.0c, Shader Model 3.0, Windows Graphics Foundation 1.0, DXVA 1.0, GPGPU
Direct3D 10.0 – Windows Vista/Windows 7; Shader Model 4.0, Windows Graphics Foundation 2.0, DXVA 2.0
Direct3D 10.1 – Windows Vista SP1/Windows 7; Shader Model 4.1, Windows Graphics Foundation 2.1, DXVA 2.1
Direct3D 11.0 – Windows Vista SP2/Windows 7; Shader Model 5.0, Tessellation, Multithreaded rendering, Compute shaders, implemented by hardware and software running Direct3D 9/10/10.1
Direct3D 11.1 – Windows 8 (partially supported on Windows 7 SP1 also); Stereoscopic 3D Rendering
Direct3D 11.2 – Windows 8.1; Tiled resources
Direct3D 11.3 – Windows 10
Direct3D 12.0 – Windows 10; low level rendering API, Shader Model 5.1 and 6.0
Direct3D 12.1 – Windows 10; DirectX Raytracing
Direct3D 12.2 – Windows 10; DirectX 12 Ultimate
Direct3D 2.0 және 3.0
1992 жылы Серван Кёнджиан, Дуг Рабсон және Кейт Сикингс RenderMorphics деп аталатын компанияны құрды, ол Reality Lab деп аталатын 3D графикалық API-ды жасады, ол медициналық бейнелеу және CAD бағдарламалық қамтамасында қолданылды. Осы API-дың екі нұсқасы жарық көрді. Direct3D-нің алғашқы нұсқасы DirectX 2.0 (2 маусым 1996 ж.) және DirectX 3.0 (26 қыркүйек 1996 ж.) құрамына енді. Direct3D бастапқыда "бірден орындалатын" 3D API-ді іске асырды және оның үстіне "сақталанатын" 3D API-ді қосты. API-дың екі түрі де Direct3D шығарылғанға дейін Reality Lab-тің екінші нұсқасында қолжетімді болды. (OpenGL және Direct3D туралы көріңіз)
OpenGL-ді ойын API ретінде қабылдамай, Microsoft Direct3D-ді жақсартуды жалғастыруды жөн көрді, бұл тек OpenGL-мен ғана емес, сонымен қатар 3dfx-тің Glide сияқты басқа да эксклюзивті API-лармен тиімді бәсекелесуге мүмкіндік берді. Бастапқыда, бірден орындалатын режим IDirect3DDevice интерфейсінің BeginScene/EndScene әдістері арқылы Talisman-нің плиткалық рендерингін де қолдады.
Direct3D 4.0
DirectX 4.0 үшін Direct3D-ге ешқандай маңызды өзгерістер жоспарланбаған, ол 1996 жылдың соңында шығарылуға жоспарланған, бірақ кейіннен жоба тоқтатылды.
Direct3D 5.0
1996 жылдың желтоқсан айында Редмондтағы команда Direct3D Immediate Mode әзірлеуін өз мойнына алды, ал Лондондағы RenderMorphics командасы Retained Mode бойынша жұмысын жалғастырды. Редмонд командасы DrawPrimitive API-ын қосты, ол қолданбаларға орындалу буферлерін құру қажеттілігін жойды, соның арқасында Direct3D Glide және OpenGL сияқты басқа да дереу режимдегі көрсету API-ларына жақындады. DrawPrimitive-дің алғашқы бета-нұсқасы 1997 жылдың ақпан айында, ал соңғы нұсқасы DirectX 5.0-мен бірге 1997 жылдың тамызында шығарылды. DirectX 5.0 дереу режимдегі API-ды пайдалануды жеңілдетумен қатар, Direct3D құрылғыларына графикалық шығыстарын әртүрлі DirectDraw беттеріне жазуға мүмкіндік беретін SetRenderTarget әдісін де қосты.
Direct3D 6.0
DirectX 6.0 (1998 жылдың тамызында шығарылды) заманауи аппараттық құралдарды (мысалы, көп текстуралар және штамп буферлері) қамтуға арналған көптеген мүмкіндіктерді, сондай-ақ x87, SSE және 3DNow! үшін геометриялық құбыржолдарды оңтайландырды. Сонымен қатар, бағдарламалауды жеңілдету үшін опциялық текстуралық басқаруды ұсынды. Direct3D 6.0 API-ге қосу үшін Microsoft-қа белгілі бір аппараттық өнімдерді жасаушылардан лицензия алған мүмкіндіктерді де қолдады, бұл лицензия иесіне нарыққа тез шығу артықшылығын берді. S3 текстуралық сығылуы осындай мүмкіндіктердің бірі болды, ол API-ге енгізу үшін DXTC деп қайта аталды. Тағы бірі – TriTech компаниясының өзгеше картаға түсіру техникасы. Microsoft бұл мүмкіндіктерді DirectX-ке қосты, содан кейін оларды драйверлерге Windows логотипін алу үшін қажетті талаптарға енгізді, осылайша басқа өндірушілердің аппараттық құралдарында осы мүмкіндіктерді кеңінен пайдалануға ынталандырды. DirectX 6.0-қа шағын жаңарту 1999 жылдың ақпан айындағы DirectX 6.1 жаңартуында жасалды. Бұл шығарылымда DirectMusic қолдауы алғаш рет қосылды, сонымен қатар Intel Pentium III 3D кеңейтімдеріне қолдау жақсартылды. 1997 жылы жіберілген құпия хабарламада Microsoft компаниясы DirectX 6.0-де Talisman-ді толық қолдауды жариялауды жоспарлағаны көрсетілген, бірақ API жобасы тоқтатылды (толық мәліметтер үшін Microsoft Talisman бетіне қараңыз).
Direct3D 7.0
DirectX 7.0 (1999 жылдың қыркүйегінде шығарылды) dds текстуралық форматын, трансформациялау және жарықтандыру аппараттық үдетуін (алғаш рет Nvidia GeForce 256 компьютерлік аппараттық құрылғыларында қолжетімді болды), сондай-ақ аппараттық жадта vertex буферлерін бөлу мүмкіндігін енгізді. Аппараттық vertex буферлері DirectX тарихында OpenGL-ге қарағандағы алғашқы маңызды жетістік болып табылады. Direct3D 7.0 DirectX-тің көп текстуралы аппараттық қолдауын кеңейтті және бекітілген функциялық көп текстуралы құбыр желісі мүмкіндіктерінің ең жоғары деңгейін білдіреді: қуатты болғанымен, оны бағдарламалау өте қиын болғандықтан, графикалық аппараттың көлеңкелеу қабілеттерін ашу үшін жаңа бағдарламалау моделі қажет болды.
Direct3D 8.0
2000 жылдың қараша айында жарық көрген DirectX 8.0 вертикальдық және пиксельдік шейдерлер арқылы бағдарламалау мүмкіндігін ұсынды, бұл әзірлеушілерге қажетсіз аппараттық параметрлер туралы ойланбастан код жазуға мүмкіндік берді. Шейдер бағдарламаларының күрделілігі міндеттің күрделілігіне байланысты болды, ал дисплей драйвері осы шейдерлерді аппараттық құрылғы түсінетін командаларға аударды. Direct3D 8.0 және оның бағдарламаланатын көлеңкелеу қабілеттері – OpenGL стиліндегі бекітілген функциялық архитектурадан алғашқы маңызды қадам болды, онда графикалық бейнелеу күрделі күй машинасы арқылы басқарылады. Direct3D 8.0 жеке API ретінде DirectDraw-ды да жойды. Direct3D қолданбаларды жасау үшін қажетті DirectDraw API функцияларын өз ішіне біріктірді, мысалы, көрсету нәтижелерін экранға шығару үшін қолданылатын Present функциясы. Direct3D пайдалануға қолайлы емес деп есептелді, бірақ DirectX 8.1 нұсқасынан бастап көптеген қолдану мәселелері шешілді. Direct3D 8 вертикальдық шейдерлер, пиксельдік шейдерлер, тұман, бедерлі текстуралау және текстуралық бейнелеу сияқты қуатты 3D графикалық мүмкіндіктерді қамтыды.
Direct3D 10
Windows Vista Direct3D API-ге маңызды жаңартулар енгізеді. Алғашқыда WGF 2.0 (Windows Graphics Foundation 2.0) деп аталған, кейін DirectX 10 және DirectX Next атауымен танылды. Direct3D 10 жаңартылған шейдерлік модель 4.0 және шейдерлік бағдарламалар үшін тоқтату мүмкіндігін ұсынады. API-дің бұрынғы нұсқаларынан өзгешелігі, Direct3D 10 графикалық құрылғының қолдайтын мүмкіндіктерін көрсету үшін "қабілет біттерін" (немесе "қаптарды") пайдаланбайды. Оның орнына, дисплей жүйесі "Direct3D 10 үйлесімді" болуы үшін қажетті жабдық мүмкіндіктерінің ең төменгі деңгейін анықтайды. Бұл маңызды өзгеріс, бағдарламалық кодты жеңілдету мақсатында жасалды – нақты мүмкіндіктердің болуына немесе болмауына байланысты қабілеттілікті тексеру кодын және ерекше жағдайларды жою арқылы. Direct3D 10 аппараттық жабдығы Windows Vista-ның алғашқы шығарылымынан кейін салыстырмалы түрде аз болды және Direct3D 10-ға үйлесімсіз графикалық карталардың көптеп орнатылған базасы болғандықтан, алғашқы Direct3D 10 үйлесімді ойындар әлі де Direct3D 9 рендерлеу жолдарын қолданады. Мұндай ойындарға мысалдар: бастапқыда Direct3D 9 үшін жазылып, шығарылғаннан кейін Direct3D 10-ға портталған, мысалы, Company of Heroes, немесе бастапқыда Direct3D 9 үшін жасалған, бірақ даму барысында Direct3D 10 жолымен жабдықталған, мысалы, Hellgate: London немесе Crysis. DirectX 10 SDK 2007 жылдың ақпанында қолжетімді болды.
Direct3D 10.0
Direct3D 10.0 деңгейіндегі аппараттық жабдық келесі мүмкіндіктерді қолдайтын болуы керек: жаңа геометриялық шейдер сатысында толық примитивтерді өңдеу мүмкіндігі, құбыр желісі арқылы құрылған vertex деректерін ағын шығару сатысын пайдалана отырып жадқа шығару мүмкіндігі, қаптамаға арналған көп үлгілі альфа қолдауы, рендерлеу нысанасы ретінде енді байланбаған тереңдік/штемпель беті немесе көп үлгілі ресурсты оқу мүмкіндігі, толық HLSL интеграциясы – барлық Direct3D 10 шейдерлері HLSL-де жазылады және ортақ шейдерлік өзегімен іске асырылады, бүтін сан және биттік шейдер операциялары, құбыр желісінің күйін 5 өзгермейтін күй объектілеріне ұйымдастыру, шейдер тұрақтыларын тұрақты буферлерге ұйымдастыру, рендерлеу нысаналарының, текстуралардың және сэмплерлердің санының артуы, шейдер ұзындығының шектеуінің жоқтығы, жаңа ресурс түрлері мен форматтары, қабатталған орындаушылар/API, геометриялық шейдерді пайдаланып примитив бойынша материалды ауыстыру және орнату опциясы, ресурсқа қол жеткізудің жалпылануын арттыру, ескі мүмкіндіктерді (caps) жою. Толық бағдарламаланатын құбырлар (көбінесе біріктірілген құбырлар архитектурасы деп аталады) пайдасына тұрақты құбырлар қолданудан тоқтатылуда, оларды сол сияқты эмуляциялау үшін бағдарламалауға болады. Жаңа күй объектісі CPU-ға күйлерді тиімді өзгертуге мүмкіндік береді. Shader model 4.0 графикалық құбырдың бағдарламалануын арттырады. Ол бүтін сандар мен биттік есептеулер үшін нұсқауларды қосады. Ортақ шейдерлік өзегі IEEE стандартына сәйкес келетін 32 биттік бүтін сандар мен биттік операциялар жиынтығын қамтамасыз етеді. Бұл операциялар графикалық аппараттарда алгоритмдердің жаңа класын іске қосады – мысалдар: қысу және жинақтау техникалары, FFT және биттік өріс бағдарламасының ағынын басқару. Геометриялық шейдерлер, олар торды құрайтын жақын орналасқан үшбұрыштармен жұмыс істейді. Текстуралық массивтер CPU араласуынсыз GPU-да текстураларды ауыстыруға мүмкіндік береді. Болжамды рендеринг басқа шарттарға негізделген сызу шақыруларын елемеуге мүмкіндік береді. Бұл жылдам окклюзиялық іріктеуді қамтамасыз етеді, объект көрінбесе немесе көрінуге тым алыс болса, оны көрсетуден сақтайды. Инстанция 2.0 қолдауы, армиялар, шөп немесе ағаштар сияқты ұқсас торлардың бірнеше даналарын бір сызу шақыруында көрсетуге мүмкіндік береді, бұл бірнеше ұқсас объектілерді өңдеуге қажетті уақытты азайтады.
Direct3D 10.1
Direct3D 10.1 Microsoft компаниясы Direct3D 10 нұсқасы шыққаннан кейін шамалы уақыт өткен соң, шағын жаңарту ретінде жариялады. Техникалық сипаттама 2007 жылдың қараша айында DirectX SDK нұсқасымен аяқталды және Windows Vista SP1 бағдарламасымен бірге жеткізілді, ол 2008 жылдың наурыз айының ортасынан бастап қолжетімді болды. Direct3D 10.1 графикалық өнімдерді жасаушылар үшін бейне сапасының бірнеше стандарттарын белгілейді және әзірлеушілерге бейне сапасын басқаруға көбірек мүмкіндік береді. Оның құрамына антиалиазингті (көп нүсқалы сынама алу және суперсемплинг, сондай-ақ сынама позициясын қолданба арқылы басқару) жақсырақ басқару, сонымен қатар кейбір қолданыстағы мүмкіндіктерге (кубокарта массивтері және тәуелсіз араластыру режимдері) көбірек икемділік кіреді. Direct3D 10.1 деңгейіндегі аппараттық құралдар келесі мүмкіндіктерді қолдауы керек: Көп нүсқалы сынама алу кеңінен қамту негізінде ашықтықты жақсарту үшін жетілдірілді және көп өтетін рендерингпен тиімді жұмыс істеуге мүмкіндік береді, жақсырақ іріктеу мінез-құлқы – нөлдік ауданы бар беттер автоматты түрде іріктеледі; бұл тек сымдық рендерингке әсер етеді, рендеринг нысанына тәуелсіз араластыру режимдері, бастапқы растерлеумен жаңа сынама жиілігінде пиксель шейдерін орындау, конвейер кезеңдерінің өткізу қабілетін арттыру, түс және тереңдік/шағылыстыру MSAA беттерін енді CopyResource арқылы көз немесе мақсат ретінде пайдалануға болады, MultisampleEnable тек сызық растерлеуіне әсер етеді (нүктелер мен үшбұрыштарға әсер етпейді) және сызық салу алгоритмін таңдау үшін қолданылады. Бұл Direct3D 10-нан кейбір көп нүсқалы растерлеулер енді қолдау көрсетілмейді дегенді білдіреді, текстуралық сынама алу – sample c және sample c lz нұсқаулары Texture2DArrays және TextureCubeArrays екеуімен де жұмыс істеуге арналған, Location мүшесін (альфа компоненті) массив индексін көрсету үшін пайдаланады, TextureCubeArrays үшін қолдау. Міндетті түрде 32 биттік қалқыма нүктелік сүзгілеу. Қалқыма нүктелік ережелер – IEEE 754 ережесін қалқыма нүкте үшін қолданады, бірақ 32 биттік қалқыма нүктелік операциялар шексіз дәл нәтижеден 0,5 бірлік соңғы орынға (0,5 ULP) дейін нәтиже беру үшін қатаңдатылды. Бұл қосу, алу және көбейтуге қатысты. (көбейту үшін 0,5 ULP, кері шама үшін 1,0 ULP дәлдік). Форматтар – float16 араластыруының дәлдігі 0,5 ULP-ге дейін артты. Араластыру UNORM16/SNORM16/SNORM8 форматтары үшін де қажет. 32/64/128 биттік алдын ала құрылымдалған, типтелген ресурстар мен бірдей бит ені бар сығылған бейнелеулер арасында көшіру кезінде форматты түрлендіру. R32G32B32A32 және R32G32B32 форматтарынан басқа барлық рендеринг нысандары үшін 4x MSAA міндетті түрде қолдау көрсетілуі керек. Шейдер моделі 4.1. Direct3D 10-нан айырмашылығы, Direct3D 10 Direct3D 10 класындағы аппараттық және драйвер интерфейстерін қатаң талап етеді, ал Direct3D 10.1 орындалу уақыты Direct3D 10.0 аппараттық құралдарында «мүмкіндік деңгейлері» тұжырымын қолдана отырып жұмыс істей алады, бірақ жаңа мүмкіндіктер тек жаңа аппараттық құралдармен қамтамасыз етіледі, олар 10.1 мүмкіндік деңгейін көрсетеді. 2008 жылдың маусым айындағы мәліметтер бойынша, жалғыз қолжетімді Direct3D 10.1 аппараттық құралы ATI-дің Radeon HD 3000 және Radeon HD 4000 сериялары болды; 2009 жылы оларға S3 Graphics-тің Chrome 430/440GT GPU-лары қосылды, сондай-ақ Nvidia-ның GeForce 200 сериясының кейбір төменгі деңгейлі үлгілері қосылды. 2011 жылы Intel чипсеттері Intel HD Graphics 2000 (GMA HD) енгізілімімен Direct3D 10.1 қолдауын бастады.
Unlike Direct3D 10 which strictly required Direct3D 10 class hardware and driver interfaces, Direct3D 10.1 runtime can run on Direct3D 10.0 hardware using a concept of "feature levels", but new features are supported exclusively by new hardware which expose feature level 10 1. The only available Direct3D 10.1 hardware as of June 2008 were the Radeon HD 3000 series and Radeon HD 4000 series from ATI; in 2009, they were joined by Chrome 430/440GT GPUs from S3 Graphics and select lower end models in GeForce 200 series from Nvidia. In 2011, Intel chipsets started supporting Direct3D 10.1 with the introduction of Intel HD Graphics 2000 (GMA HD).
Direct3D 11
Direct3D 11 Windows 7 құрамында жарық көрді. Ол 2008 жылдың 22 шілдесінде Gamefest 2008 көрмесінде таныстырылды және 2008 жылдың 26 тамызында Nvision 08 техникалық конференциясында көрсетілді. Direct3D 11 техникалық алдын ала нұсқасы DirectX SDK-ның 2008 жылғы қараша айындағы нұсқасына енгізілді. AMD 2009 жылдың 3 маусымында Computex көрмесінде DirectX 11 қолдайтын аппараттық құралдарды алдын ала көрсетті, сондай-ақ DirectX 11 SDK үлгілерін іске қосты. Direct3D 11 жұмыс уақыты Direct3D 9 және 10.x класындағы аппараттық жабдықтар мен драйверлерде " мүмкіндік деңгейлері " тұжырымын пайдалана отырып, Direct3D 10.1 жұмыс уақытында алғаш рет енгізілген функционалды кеңейтеді. Мүмкіндік деңгейлері әзірлеушілерге Direct3D 11 API арқылы рендерингтік құбыржолды біріктіруге және ресурстарды басқаруды жақсарту, көп жіптік өңдеу сияқты API жақсартуларын пайдалануға мүмкіндік береді, тіпті бастапқы деңгейдегі бейнекарталарда да, бірақ жаңа шейдерлік үлгілер мен рендерингтік сатылар сияқты кеңейтілген мүмкіндіктер жоғары деңгейдегі аппараттық құралдарда ғана қолжетімді болады. Танымал DirectX 9.0a бейнекарталарының әртүрлі мүмкіндіктерін қамтитын үш "10 деңгейлі 9" профилі бар, ал Direct3D 10, 10.1 және 11-дің әрқайсысының жеке мүмкіндік деңгейі бар; әрбір жоғарғы деңгей төменгі деңгейдің толық жиынтығы болып табылады. Тесселяция бұрын Direct3D 10 үшін қарастырылған, бірақ кейіннен одан бас тартылды. Radeon R600 сияқты GPU-ларда Direct3D 9/10/10.1 және OpenGL-мен қолданылатын тесселяция қозғалтқышы бар, бірақ ол Direct3D 11-мен үйлесімді емес (Microsoft мәлімдемесі бойынша). Radeon 8xxx, GeForce 3/4 сияқты ескі графикалық аппараттық құралдар басқа түрдегі тесселяцияны (RT жапсырмалары, N жапсырмалары) қолдады, бірақ бұл технологиялар кеңінен қолданылмады. Сондықтан, олардың қолдауы жаңа аппараттық құралдардан алынып тасталды. Microsoft сондай-ақ Direct3D API-де ешқашан ашылмаған, бірақ Videologic-тің PowerVR чиптері сияқты Direct3D аппараттық құралдарымен дерлік толық қолдайтын тәртіпке тәуелсіз ашықтық сияқты басқа мүмкіндіктерге де қызығушылық танытты.
Direct3D 11.1
Direct3D 11.1 – Windows 8 жүйесімен бірге келетін API-дің жаңартуы. Windows 8-дегі Direct3D орындалу ортасы DXGI 1.2 мүмкіндігіне ие және жаңа WDDM 1.2 құрылғы драйверлерін қажет етеді. Windows 8 Developer Preview үшін Windows SDK-ның алдын ала нұсқасы 2011 жылдың 13 қыркүйегінде жарияланды. Жаңа API шейдерді із кешу, HLSL компиляторын жақсарту, ең төменгі дәлдікті HLSL скалярлық дерек түрлерін қолдау, құбырдың кез келген кезеңіндегі UAV (ретсіз қол жеткізу көріністері), мақсаттан тәуелсіз растерлеу (TIR), динамикалық буферлердің SRV-ін NO OVERWRITE опциясымен карталау, бейне ресурстарын шейдермен өңдеу, рендерлеу мақсатында логикалық операцияларды қолдану, тұрақты буфердің бөлігін шейдермен байланыстырып алу, шейдерге қолжетімдіден үлкен тұрақты буферлер құру, ресурстар мен ресурс көріністерін жою, субресурстарды жаңа көшіру опцияларымен өзгерту, растерлеу күйін жасау үшін үлгінің санын күштеп белгілеу, ресурс көрінісінің толық немесе бір бөлігін тазалау, Direct3D-ді Session 0 процестерінде пайдалану, 9 және одан жоғары деңгейдегі мүмкіндіктерде HLSL-де пайдаланушының қиылыс жазықтықтарын көрсету, 9 деңгейіндегі көлеңке буферін қолдау, бейне ойнатуды қолдау, Texture2D ресурстарын ортақ пайдалануды кеңейту, сондай-ақ Direct3D 10 және 11 контекстері мен мүмкіндік деңгейлері арасында динамикалық ауысу мүмкіндіктерін қамтиды. Direct3D 11.1 жаңа мүмкіндік деңгейі 11.1-ді қосады, ол шейдер тіліне шағын жаңартулар әкеледі, мысалы, үлкен тұрақты буферлер және қосымша екі есе дәлдікті нұсқаулар, сондай-ақ жақсартылған араластыру режимдері және Intel HD Graphics сияқты бастапқы деңгейдегі GPU-дың өнімділігін арттыру үшін 16 биттік түс форматтарын міндетті түрде қолдау. WARP мүмкіндік деңгейі 11.1-ді қолдау үшін жаңартылды. Windows 7-ге арналған Platform Update Direct3D 11.1 мүмкіндіктерінің шектеулі жиынтығын қамтиды, бірақ WDDM 1.2-ге тәуелді компоненттер, мысалы, 11.1 деңгейі және оған байланысты API-лар немесе стереоскопиялық рендеринг үшін төрт буферлік қолдау жоқ.
Direct3D 11.2
Direct3D 11.2 Windows 8.1 жүйесімен бірге шығарылды. Жаңа аппараттық мүмкіндіктер DXGI 1.3 және WDDM 1.3 драйверлерін қажет етеді, сонымен қатар орындалу кезінде шейдерді өзгерту және байланыстыру, функциялық байланыс графигі (FLG), жүйелік HLSL компиляторы және графикалық командаларды түсіндіру мүмкіндігін қамтиды. 11.0 және 11.1 деңгейлеріндегі мүмкіндіктерге шейдердегі детальдар деңгейін шектеуі бар (Tier2) плиткалы ресурстарды қолдау опциясы кіреді. Бұл мүмкіндік қазіргі көптеген GPU-лардағы аппараттық беттік кестелерді басқаруға мүмкіндік береді. WARP жаңа мүмкіндіктерді толық қолдау үшін жаңартылды. Бірақ 11.2 деңгейі жоқ; жаңа мүмкіндіктер қолданыстағы деңгейлерге таратылған. Жабдыққа тәуелді мүмкіндіктерді CheckFeatureSupport арқылы жеке-жеке тексеруге болады. Direct3D 11.2-дегі кейбір «жаңа» мүмкіндіктер ескі аппараттық мүмкіндіктерді әлдеқайда нақтырақ көрсетуге мүмкіндік береді; мысалы, D3D11 FEATURE D3D9 SIMPLE INSTANCING SUPPORT 9.1 және 9.2 аппараттық деңгейлерінде инстанциялау үшін ішінара қолдау көрсетеді, ал 9.3 деңгейінен бастап толық қолдау бар. Direct3D 11.X
Direct3D 11.X – Xbox One құрылғысында жұмыс істейтін DirectX 11.2-нің кеңейтілген түрі. Ол кейінірек DirectX 12 бөлігі ретінде жарияланған, мысалы, суреттер жинағы сияқты кейбір мүмкіндіктерді қамтиды.
Direct3D 11.3
Direct3D 11.3 Windows 10 жүйесімен 2015 жылдың шілдесінде шығарылды; ол Direct3D 11.x API-ның жалпы құрылымын сақтай отырып, Direct3D 12-ден шағын рендеринг мүмкіндіктерін қамтиды. Direct3D 11.3 келесі мүмкіндіктерді ұсынады: Shader Specified Stencil Reference Value (белгіленген шейдерлік трафареттік анықтама мәні), типтелген ретсіз қолжетімділік көрінісі жүктемелері, Растеризатор реттелген көріністері (ROV), стандартты Swizzle (қосымша), әдепкі текстура картасы (қосымша), консервативті растеризация (үш деңгейдің бірі), Бірыңғай жадқа қолжетімділік (UMA) қолдауы (қосымша) және табельді ресурстар (II деңгей) (көлемді табельді ресурстар).
Direct3D 11.4
Direct3D 11.4 нұсқасы 1511 – Бастапқы Direct3D 11.4 Windows 10 Threshold 2 жаңартуымен (нұсқасы 1511) бірге енгізіліп, сыртқы графикалық адаптерлерді қолдауды және DXGI 1.5 мүмкіндіктерін жақсартты. Direct3D 11.4 нұсқасы 1607 – Windows 10 Anniversary Update (нұсқасы 1607) жаңартуымен жаңартылған Direct3D 11.4, WDDM 2.1, UHDTV HDR10 форматын (ST 2084) және UWP қолданбалары үшін өзгермелі жаңару жиілігін қолдауды қамтиды.
Direct3D 12
Direct3D 12 бұрынғы нұсқаларға қарағанда аппараттық абстракцияның төмен деңгейін ұсынады, бұл болашақ қолданбаларға көп жіпті масштабтауды едәуір жақсартуға және процессордың (CPU) жүктемесін азайтуға мүмкіндік береді. Бұл Direct3D абстракциялық қабатын жаңа мүмкіндіктер арқылы, мысалы, жанама сызу, дескриптор кестелері, ықшам құбыржол күйінің объектілері (PSO) және сызу шақыру жиынтықтары арқылы негізгі аппаратпен жақсы сәйкес келтіру арқылы жүзеге асырылады. Драйвердің қосымша шығындарын азайту – AMD-нің Mantle-ға ұқсас, Direct3D 12-нің басты артықшылығы. Nvidia Direct3D 12-ге кең қолдау көрсеткенімен, жаңа API-ның жалпы қолданылуына қатысты біршама сақтық танытты. Ойын қозғалтқыштарын әзірлеушілер өздерінің бағдарламалық кодынан GPU ресурстарын тікелей басқаруға ынталы болғанымен, «басқа көптеген адамдар» мұндай міндеттерді орындауға құштар болмас еді. Direct3D 12-де Shader Model 5.1, Volume Tiled Resources (Tier 2), қосымша араласу режимдері, бағдарламаланатын араласу және пикселдік реттелген UAV арқылы тиімді тәртіпке тәуелсіз ашықтық (OIT) сияқты бірнеше жаңа аппараттық мүмкіндіктер бар. Құбыржол күйінің объектілері (PSO) Direct3D 11-ден дамыды, ал жаңа ықшам құбыржол күйлері процестің оңайлатылғанын білдіреді. DirectX 11 өзінің күйлерін өзгертуде икемділік ұсынды, бірақ бұл өнімділікке кері әсер етті. Процесті жеңілдету және құбырларды біріктіру (мысалы, пиксельдік шейдер күйлері) процесті оңайлатуға, жалпы шығындарды едәуір азайтуға және графикалық картаға әр кадр үшін көбірек шақыруларды орындауға мүмкіндік береді. PSO құрылғаннан кейін өзгертілмейді. Root қолтаңбалары команда тізімдерін шейдерлерге қажетті ресурстармен байланыстыратын конфигурацияларды енгізеді. Олар шейдерлер қолданатын ресурстардың орналасуын анықтайды және қандай ресурстар құбыр желісіне байланысты болатынын көрсетеді. Графикалық командалар тізімінде графикалық және есептеу root қолтаңбалары болады, ал есептеу командалар тізімінде тек есептеу root қолтаңбалары болады. Бұл root қолтаңбалары бір-бірінен толығымен тәуелсіз. Root қолтаңбасы шейдерлер қолданатын деректердің түрлерін анықтаса да, ол нақты жадты немесе деректерді анықтамайды немесе картаға түсірмейді. Root параметрлері – root қолтаңбасындағы жазбалардың бір түрі. Орындау кезінде өзгеретін root параметрлерінің нақты мәндері root аргументтері деп аталады. Бұл шейдерлер оқитын деректер. Direct3D 12 бірнеше GPU конфигурацияларын тікелей басқаруға мүмкіндік беретін көп адаптерлі қолдауды ұсынады. Мұндай конфигурацияларды бір аппараттық өндірушінің графикалық адаптерлерімен немесе әртүрлі өндірушілердің адаптерлерімен бірге құруға болады. Microsoft 2019 жылы Windows 7 SP1 үшін D3D 12-нің эксперименталды қолдауын арнайы NuGet пакеті арқылы шығарды. Direct3D 12 нұсқасы 1607 – 2016 жылдың 2 тамызында шыққан Windows 10 мерейтойлық жаңартуымен (1607 нұсқасы) Direct3D 12 орындау уақыты жаңартылды. Бұл жаңартулар ашық көп жіптілік пен процестер арасындағы байланысты қолдайды, бұл әзірлеушілерге қазіргі заманғы жаппай параллель GPU-ларды пайдалануға мүмкіндік береді. Басқа мүмкіндіктерге жаңартылған root қолтаңбаларының 1.1 нұсқасы, сондай-ақ HDR10 форматы мен өзгермелі жаңарту жиілігіне қолдау кіреді. Direct3D 12 нұсқасы 1703 – 2017 жылдың 11 сәуірінде шыққан Windows 10 Creators Update (1703 нұсқасы) Direct3D 12 орындау уақытын Shader Model 6.0 және DXIL қолдау үшін жаңартады. Shader Model 6.0 үшін Windows 10 Anniversary Update (1607 нұсқасы) және WDDM 2.1 қажет. Жаңа графикалық мүмкіндіктерге тереңдік шектеуін сынау және бағдарламаланатын MSAA, сондай-ақ DirectX Raytracing Tier 1.1 және жадты бөлуді жақсарту кіреді.
Although Nvidia has announced broad support for Direct3D 12, they were also somewhat reserved about the universal appeal of the new API, noting that while game engine developers may be enthusiastic about directly managing GPU resources from their application code, "a lot of [other] folks wouldn't" be happy to have to do that. Some new hardware features are also in Direct3D 12, including Shader Model 5.1, Volume Tiled Resources(Tier 2), additional blend modes, programmable blend and efficient order independent transparency (OIT) with pixel ordered UAV. Pipeline state objects (PSOs) have evolved from Direct3D 11, and the new concise pipeline states mean that the process has been simplified. DirectX 11 offered flexibility in how its states could be altered, to the detriment of performance. Simplifying the process and unifying the pipelines (e. g. pixel shader states) lead to a more streamlined process, significantly reducing the overheads and allowing the graphics card to draw more calls for each frame. Once created, the PSO is immutable. Root signatures introduce configurations to link command lists to resources required by shaders. They define the layout of resources that shaders will use and specifies what resources will be bound to the pipeline. A graphics command list has both a graphics and compute root signature, while a compute command list will have only a compute root signature. These root signatures are completely independent of each other. While the root signature lays out the types of data for shaders to use, it does not define or map the actual memory or data. Root parameters are one type of entry in a root signature. The actual values of the root parameters that are modified at runtime are called root arguments. This is the data that the shaders read. Direct3D 12 features explicit multi adapter support, allowing the explicit control of multiple GPUs configuration systems. Such configurations can be built with graphics adapter of the same hardware vendor as well of different hardware vendor together. An experimental support of D3D 12 for Windows 7 SP1 has been released by Microsoft in 2019 via a dedicated NuGet package. Direct3D 12 version 1607 – With the Windows 10 anniversary update (version 1607), released on August 2, 2016, the Direct3D 12 runtime has been updated to support constructs for explicit multithreading and inter process communication, allowing developers to take advantage of modern massively parallel GPUs. Other features include updated root signatures version 1.1, as well as support for HDR10 format and variable refresh rates. Direct3D 12 version 1703 – With the Windows 10 Creators Update (version 1703), released on April 11, 2017, the Direct3D 12 runtime has been updated to support Shader Model 6.0 and DXIL. and Shader Model 6.0 requires Windows 10 Anniversary Update (version 1607), WDDM 2.1. New graphical features are Depth Bounds Testing and Programmable MSAA. as well DirectX Raytracing Tier 1.1 and memory allocation improvements.
Құбыр желісі
Microsoft Direct3D 11 API-і вертикальдар, текстуралар, буферлер және күйлер тобын экрандағы кескінге түрлендіру процесін анықтайды. Бұл процесс бірнеше ерекше кезеңдерден тұратын рендерингтік құбыржол ретінде сипатталады. Direct3D 11 құбыржолының әртүрлі сатылары:
Кіріс құрастырушы: Қолданба ұсынған вертикальдық буферден вертикальдық деректерді оқиды және оларды құбыржолға жібереді. Вертекс шадері: Трансформация, терілеу немесе жарықтандыру сияқты операцияларды бір уақытта бір вертикаль үшін орындайды. Халл шадері: Жапсырманы басқару нүктелері жиынтығына операцияларды орындайды және жапсырма тұрақтылары деп аталатын қосымша деректерді жасайды. Тесселятор: Халлдың жоғары реттік өрнектерін жасау үшін геометрияны бөледі. Домен шадері: Тесселяция сатысынан шығарылған вертикальдарға, вертекс шадері сияқты операцияларды орындайды. Геометрия шадері: Үшбұрыштар, нүктелер немесе сызықтар сияқты толық примитивтерді өңдейді. Примитив берілген жағдайда, бұл саты оны жояды немесе бір немесе бірнеше жаңа примитивтерді жасайды. Ағын шығысы: Алдыңғы сатының нәтижелерін жадқа жаза алады. Бұл деректерді құбыржолға қайта жіберу үшін пайдалы. Растеризатор: Примитивтерді пиксельдерге түрлендіреді және осы пиксельдерді пиксел шадеріне жібереді. Растеризатор көрінбейтін бөліктерді кесу немесе вертикальдық деректерді пикселдік деректерге интерполяциялау сияқты басқа да тапсырмаларды орындай алады. Пиксел шадері: Рендерлеу нысанына жазылатын соңғы пиксел түсін анықтайды және тереңдік буферіне жазылатын тереңдік мәнін есептей алады. Шығу біріктіруші: Түпкілікті нәтижені құру үшін әртүрлі шығыс деректерін (пиксел шадері мәндері, альфа араластыру, тереңдік/штамп) біріктіреді. Дөңгелек тіктөртбұрышпен көрсетілген құбыржол сатылары толыққанды бағдарламалана алады. Қолданба осы саты үшін орындалатын нақты операцияларды сипаттайтын шадер бағдарламасын ұсынады. Көптеген сатылар міндетті емес және оларды толығымен өшіруге болады.
Құралымдық деңгейлері
Direct3D 5-тен 9-ға дейін, API-дің жаңа нұсқалары жаңа аппараттық мүмкіндіктерді қолдауды енгізген кезде, олардың көпшілігі міндетті емес болды. Әр графикалық өндіруші негізгі қажетті функционалдыққа қосымша, қолдау көрсетілетін мүмкіндіктердің өз жиынтығын сақтап келді. Жеке мүмкіндіктерге қолдау "қабілет біттерімен" немесе "қаптармен" анықталуы тиіс болды, бұл әртүрлі өндірушілердің графикалық бағдарламалауын күрделі міндетке айналдырды. Direct3D 10 ең танымал Direct3D 9 мүмкіндіктеріне негізделген, барлық қолдайтын графикалық карталардың сақтануы тиіс міндетті аппараттық талаптардың оңайлатылған жиынтығын енгізді, сондай-ақ қолдау көрсетілетін текстура форматтары мен операциялары үшін бірнеше міндетті емес мүмкіндіктер болды. Direct3D 10.1 бірнеше жаңа міндетті аппараттық талаптарды қосты және 10.0 аппараттық және драйверлерімен үйлесімді болу үшін бұл мүмкіндіктер "функционалдық деңгейлер" деп аталатын екі жиынтыққа біріктірілді, 10.1 деңгейі 10.0 деңгейінің кеңейтілген түрі болды. Direct3D 11.0, 11.1 және 12 жаңа аппараттық құралдарға қолдау қосылғанда, жаңа міндетті мүмкіндіктер жоғарырақ деңгейлерде топтастырылды, бұл мүмкіндіктер Direct3D 11.2 және одан кейінгі нұсқаларда кеңейтілді. Бұл тәсіл әзірлеушілерге рендерингтік құбыржолды біріктіруге және API-дің бір нұсқасын жаңа және ескі аппараттарда пайдалануға мүмкіндік береді, соның арқасында жаңа орындалу ортасында өнімділік пен пайдалану жақсарады. Функционалдық деңгейлер бөлуші ретінде астын сызық белгісін пайдаланады (мысалы, "12 1"), ал API/runtime нұсқалары нүкте белгісін пайдаланады (мысалы, "Direct3D 11.4").
Көптіріктілік
Windows Vista және одан жоғары нұсқаларындағы WDDM драйвер моделі аппараттық немесе бағдарламалық қамтамасыз етуде кез келген мөлшерде орындау контексттерін (немесе жиектерін) қолдайды. Windows XP тек Direct3D-ге көп тапсырмалы қол жеткізуді қолдады, онда әртүрлі қосымшалар әртүрлі терезелерде орындалып, аппараттық үдетілімді пайдалана алды, ал операциялық жүйе GPU-ның не істей алатынына шектеулі бақылауға ие болды және драйвер орындау жиектерін кездейсоқ түрде ауыстыра алды. Direct3D 11 орындалу уақытымен бірнеше жиекті режимде орындау мүмкіндігі енгізілді. Әрбір орындау контексті GPU ресурстарын қарау арқылы ұсынылады. Орындау контексттері бір-бірінен қорғалған, бірақ қате немесе нашар жазылған қосымша пайдаланушы режиміндегі драйверде орындауды басқара алады және өңделген командаларды жіберу арқылы GPU жадындағы басқа процестің деректеріне қол жеткізе алады. Басқа қосымшалардан қол жеткізуден қорғалғанмен, жақсы жазылған қосымша басқа қосымшалардың салдарынан болатын қателер мен құрылғыны жоғалтудан өзін қорғауы керек. Операциялық жүйе барлық жиектерді өзі басқарады, аппаратты қажет болған жағдайда бір жиектен екіншісіне ауыстыруға мүмкіндік береді, сондай-ақ жадты басқару және беттеуді (жүйе жады мен дискіге) интеграцияланған операциялық жүйе ядросының жад басқаруы арқылы жүзеге асырады. Шейдер нұсқаулық деңгейінде екі орындау жиегін ауыстыру мүмкіндігі, яғни бір команда деңгейінің немесе тіпті командалар жинағының орнына, WDDM/DXGI 1.2-де енгізілді, ол Windows 8-мен бірге шығарылды. WDDM 2.0 және DirectX 12 толыққанды көп жиекті сызу шақыруларын рұқсат ету үшін қайта жасалды. Бұл барлық ресурстарды өзгертуге келмейтін (яғни тек оқуға арналған) ету, көрсету күйлерін тізбектеп орналастыру және сызу шақыру жинақтарын пайдалану арқылы жүзеге асырылды. Бұл ядролық режимдегі драйверде күрделі ресурстарды басқаруды болдырмайды, соның нәтижесінде бір қосымшадағы бөлек көрсету жиектері арқылы бір мезгілде орындалатын контексттер арқылы пайдаланушы режиміндегі драйверге бірнеше қайта кіру шақырулары мүмкін болады.
Direct3D Mobile (Жұбақты 3D)
Direct3D Mobile Direct3D-ден туындайды, бірақ жадыға қажетті орын аз. Windows CE Direct3D Mobile қолдауын қамтамасыз етеді.
Баламалы іске асырулар
Direct3D API-нің келесі баламалы іске асырылымдары бар. Олар Windows емес платформалар үшін және DX қолдауы жоқ кейбір аппараттық құрылғылар үшін пайдалы: WineD3D – Wine ашық бастапқы коды жобасында OpenGL-ге аудару арқылы Direct3D API-дің жұмыс істеуіне мүмкіндік бар. Wine-ның іске асырылымы белгілі бір жағдайларда Windows жүйесінде де жұмыс істей алады. vkd3d – vkd3d – Vulkan негізінде салынған, Direct3D 12 қолданбаларын Vulkan арқылы іске қосуға мүмкіндік беретін ашық кодты 3D графикалық кітапхана. Ол негізінен Wine жобасында қолданылады және қазір Valve-дің Proton жобасына Linux-тағы Steam-мен бірге енгізілген. DXVK – Direct3D 9/10/11 үшін ашық кодты Vulkan негізделген аударма қабаты, ол 3D қолданбаларын Linux-та Wine арқылы іске қосуға мүмкіндік береді. Оны Linux үшін Proton/Steam пайдаланады. DXVK Linux-та көптеген заманауи Windows ойындарын іске қоса алады. D9VK – Linux-тағы Steam/Proton-мен бірге Direct3D 9 қолдауын қосу үшін DXVK-ның бұтағы. 2019 жылдың 16 желтоқсанында D9VK DXVK-ға біріктірілді. D8VK – Linux-та Direct3D 8 қолдауын қосу үшін DXVK-ның бұтағы. Gallium Nine – Gallium Nine Linux-та Direct3D 9 қолданбаларын түпкілікті түрде, яғни аудармасыз, дерлік түпкілікті жылдамдықпен іске қосуға мүмкіндік береді. Ол Wine және Mesa-ға тәуелді.
WineD3D – The Wine open source project has working implementations of the Direct3D APIs via translation to OpenGL. Wine's implementation can also be run on Windows under certain conditions. vkd3d – vkd3d is an open source 3D graphics library built on top of Vulkan which allows to run Direct3D 12 applications on top of Vulkan. It's primarily used by the Wine project, and is now included with Valve's Proton project bundled with Steam on Linux. DXVK – An open source Vulkan based translation layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine. It is used by Proton/Steam for Linux. DXVK is able to run a large number of modern Windows games under Linux. D9VK – A fork of DXVK for adding Direct3D 9 support, included with Steam/Proton on Linux. On December 16, 2019 D9VK was merged into DXVK. D8VK – A fork of DXVK for adding Direct3D 8 support on Linux. Gallium Nine – Gallium Nine makes it possible to run Direct3D 9 applications on Linux natively, i. e. without any calls translation which allows for a near native speed. It depends on Wine and Mesa.
DXUT
DXUT (сонымен қатар үлгілік фреймворк деп аталады) – Direct3D API-нің үстіне құрылған қабат. Бұл фреймворк бағдарламашыға терезе құру, құрылғыны жасау, Windows хабарларын өңдеу және құрылғы оқиғаларын басқару сияқты күнделікті жұмыстарға кеткен уақытты азайтуға көмектеседі. DXUT Windows SDK 8.0 нұсқасынан алынып тасталды және қазір CodePlex арқылы бастапқы код түрінде таратылуда.