다이렉트 3D

Direct3D
다이렉트 3D
개발자마이크로소프트
초기 릴리즈1996년 6월 2일, 26년 전(1996-06-02)
안정된 릴리스
12/2015년 7월 29일, 7년 전(2015-07-29)
운영 체제Microsoft Windows, Windows CE, Windows Embedded, Xbox 시스템 소프트웨어
플랫폼x86, ARM
유형3D 컴퓨터 그래픽스 API
면허증.독자 사양
웹 사이트docs.microsoft.com/en-us/windows/win32/direct3d

Direct3DMicrosoft Windows용 그래픽 애플리케이션 프로그래밍 인터페이스(API)입니다.DirectX의 일부인 Direct3D는 게임과 같이 성능이 중요한 애플리케이션에서 3차원 그래픽을 렌더링하는 데 사용됩니다.Direct3D는 그래픽 카드로 사용 가능한 경우 하드웨어 액셀러레이션을 사용하여 전체 3D 렌더링 파이프라인 또는 부분적인 액셀러레이션만 허용합니다.Direct3D는 Z 버퍼링,[1] W 버퍼링,[2] 스텐실 버퍼링, 공간 안티에일리어싱, 알파 블렌딩, 컬러 블렌딩, 미핑, 텍스처 [3][4]블렌딩, 클리핑, 컬링, 대기 효과,[6] 투시 보정 텍스처 맵핑, 프로그래밍 가능한 HLSL 셰이더[5] 등 3D 그래픽 하드웨어의 고도의 그래픽 기능을 제공합니다.Direct3D는 다른 DirectX 테크놀로지와의 통합으로 비디오 매핑, 2D 오버레이 플레인 하드웨어 3D 렌더링, 심지어 스프라이트 등의 기능을 제공하여 인터랙티브 미디어 타이에서 2D 및 3D 그래픽을 사용할 수 있습니다.

Direct3D에는 3D 컴퓨터 그래픽 렌더링을 위한 많은 명령어가 포함되어 있지만 버전 8부터 Direct3D는 DirectDraw 프레임워크를 대체하고 2D [7]그래픽 렌더링을 담당하게 되었습니다.Microsoft는 Direct3D를 지속적으로 업데이트하여 3D 그래픽 카드에서 사용할 수 있는 최신 기술을 지원합니다.Direct3D는 완전한 정점 소프트웨어 에뮬레이션을 제공하지만 하드웨어에서 사용할 수 없는 기능에 대한 픽셀 소프트웨어 에뮬레이션을 제공하지 않습니다.예를 들어 Direct3D를 사용하여 프로그래밍된 소프트웨어가 픽셀 셰이더를 필요로 하고 사용자의 컴퓨터 비디오 카드가 해당 기능을 지원하지 않는 경우 Direct3D는 3D 모델의 폴리곤과 텍스처를 계산하고 렌더링합니다.단, 보통 하드웨어에 비해 품질과 성능이 저하됩니다.API에는 Reference Rasterizer(또는 REF 디바이스)가 포함되어 있습니다.이것은 소프트웨어의 범용 그래픽 카드를 에뮬레이트 하는 것입니다.단, 대부분의 실시간 3D 애플리케이션에서는 너무 느리고 일반적으로 디버깅에만 사용됩니다.Windows 7 및 Windows Vista Service Pack 2에는 Direct3D 10.1의 모든 기능을 에뮬레이트하도록 설계된 새로운 실시간 소프트웨어 래스터라이저 WARP가 포함되어 있습니다.그 성능은 멀티코어 CPU의 [8]로우엔드 3D 카드와 동등하다고 합니다.

DirectX의 일부로서 Direct3D는 Windows 95 이상에서 사용할 수 있으며 다양한 버전의 Xbox 콘솔 시스템에서 벡터 그래픽 API의 기반입니다.Wine 호환성 계층은 몇 가지 Windows API의 무료 소프트웨어 재실장입니다.Direct3D 구현이 포함되어 있습니다.

Direct3D의 주요 경쟁사는 Khronos의 OpenGL과 후속 제품인 Vulkan이다.Fahrenheit는 1990년대에 MicrosoftSGI가 OpenGL과 Direct3D를 통합하려고 시도했지만 결국 취소되었다.

개요

  • Direct3D 6.0 –멀티 익스텐션
  • Direct3D 7.0 –하드웨어 변환, 클리핑조명 (TCL/T&L)
  • Direct3D 8.0 –픽셀 셰이더 1.0 및 버텍스 셰이더 1.0
  • Direct3D 8.0a - Windows [9]95에서 지원되는 마지막 버전, 픽셀 셰이더 1.1, 픽셀 셰이더 1.2, 픽셀 셰이더 1.3
  • Direct3D 8.1 –픽셀 셰이더 1.4 및 버텍스 셰이더 1.1
  • Direct3D 9.0 – 셰이더 모델 2.0 (픽셀 셰이더 2.0 및 버텍스 셰이더 2.0)
  • Direct3D 9.0b –픽셀 셰이더 2.0b
  • Direct3D 9.0c – Windows 98(초기 출시)[10]Windows 2000/XP(모든 출시)[11]에서 지원되는 마지막 버전셰이더 모델 3.0(픽셀 셰이더 3.0 및 버텍스 셰이더 3.0), GPGPU
  • 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, GPGPU
  • Direct3D 10.1 – Windows Vista SP1/Windows 7, Shader Model 4.1, Windows Graphics Foundation 2.1, DXVA 2.1, GPGPU
  • Direct3D 11.0 – Windows Vista SP2/Windows 7, 셰이더 모델 5.0, 테셀레이션, 멀티스레드 렌더링, 컴퓨팅 셰이더, Direct3D 9/10/10.1, GPGPU를 실행하는 하드웨어 및 소프트웨어로 구현
  • Direct3D 11.1 – Windows 8 (Windows 7 SP1에서도 부분적으로 지원)입체 3D 렌더링, GPGPU
  • Direct3D 11.2 – Windows 8.1, 타일형 리소스, GPGPU
  • Direct3D 11.3 – Windows 10, 셰이더 모델 5.1, GPGPU
  • Direct3D 12.0 – Windows 10, 로우 레벨 렌더링 API, Shader Model 6.0, GPGPU

Direct3D 2.0 및 3.0

1992년 Servan Keondjian과 Doug Rabson은 RenderMorphics라는 회사를 설립하여 의료 영상 및 CAD [12]소프트웨어에 사용되는 Reality Lab이라는 3D 그래픽 API를 개발했습니다.이 API의 두 가지 버전이 출시되었습니다.Microsoft는 1995년 2월에 RenderMorphics를 인수하여 Keondjian을 참여시키고 Windows 95용 3D 그래픽 엔진을 구현했습니다.Direct3D의 첫 번째 버전은 DirectX 2.0(1996년 6월 2일)과 DirectX 3.0(1996년 9월 26일)으로 출하되었습니다.

Direct3D는 처음에 "유지 모드"와 "즉시 모드" 모두 3D API를 구현했습니다.DirectDraw와 같은 다른 DirectX API와 마찬가지로 둘 다 COM을 기반으로 합니다.유지 모드는 씬 그래프 API로 채택이 거의 이루어지지 않았습니다.게임 개발자들은 Direct3D 유지 모드가 제공할 수 있는 것보다 하드웨어의 활동을 더 직접적으로 제어할 것을 요구했습니다.레고 아일랜드와 레고레이더스 두 게임만이 Direct3D 유지 모드를 기반으로 했기 때문에 마이크로소프트는 DirectX 3.0 이후 유지 모드를 업데이트하지 않았다.

DirectX 2.0 및 3.0의 경우 Direct3D 즉시 모드는 Microsoft가 하드웨어 벤더가 직접 지원하기를 희망한 "실행 버퍼" 프로그래밍 모델을 사용했습니다.실행 버퍼는 하드웨어 메모리에 할당되어 하드웨어에 의해 해석되어 3D 렌더링을 수행하도록 되어 있습니다.그러나 당시 프로그램하기가 매우 어렵다고 여겨져 새로운 API의 채택을 방해하고 마이크로소프트가 OpenGL을 게임 및 워크스테이션 어플리케이션의 공식 3D 렌더링 API로 채택해야 한다는 주장이 제기되었습니다.(OpenGL vs. Direct3D 참조)

Microsoft는 OpenGL을 게임 API로 채택하는 대신 Direct3D를 지속적으로 개선하여 OpenGL과 경쟁할 뿐만 아니라 3dfxGlide와 같은 다른 독점 API와 더욱 효과적으로 경쟁하는 것을 선택했습니다.

처음부터 즉시 모드는 IDirect3의 BeginScene/EndScene 메서드를 사용한 Talisman의 타일 렌더링도 지원했습니다.DDevice 인터페이스

Direct3D 4.0

DirectX 4.0의 Direct3D에 대한 실질적인 변경은 계획되지 않았습니다.DirectX 4.0은 1996년 말에 출하될 예정이었으나 [13]취소되었습니다.

Direct3D 5.0

1996년 12월 Redmond 팀은 Direct3D 즉시 모드 개발을 인계받았고, 런던에 거점을 둔 RenderMorphics 팀은 유지 모드에 대한 작업을 계속했습니다.Redmond 팀은 DrawPrimitive API를 추가함으로써 어플리케이션이 실행 버퍼를 구축할 필요가 없어졌고 Direct3D는 Glide나 OpenGL과 같은 다른 즉시 모드 렌더링 API와 매우 유사합니다.DrawPrimitive의 첫 번째 베타는 1997년 [14]2월에 출하되었으며 최종 버전은 1997년 [15]8월에 DirectX 5.0과 함께 출하되었습니다.

사용하기 쉬운 즉시 모드 API를 도입한 것 외에 DirectX 5.0은 Direct3D 장치가 다양한 DirectDraw [16]표면에 그래픽 출력을 쓸 수 있도록 SetRenderTarget 메서드를 추가했습니다.

Direct3D 6.0

DirectX 6.0(1998년 8월 출시)은 x87, SSE3DNow!용으로 최적화된 지오메트리 파이프라인 및 프로그래밍을 [18]단순화하기 위한 옵션 텍스처 관리뿐만 아니라 현대의 하드웨어(멀티스튜드나[17] 스텐실 버퍼 등)를 커버하는 수많은 기능을 도입했습니다.Direct3D 6.0에는 Microsoft가 특정 하드웨어 벤더로부터 라이선스를 받아 API에 포함시킨 기능에 대한 지원도 포함되어 있어 라이선스 벤더의 시장 투입 시간을 단축할 수 있습니다.S3 텍스처 압축 지원은 API에 포함시키기 위해 DXTC로 이름을 바꾼 기능 중 하나입니다.또 다른 하나는 TriTech의 독자적인 범프 맵핑 기술입니다.Microsoft는 DirectX에 이러한 기능을 추가해, 드라이버가 Windows 로고를 취득하기 위해서 필요한 요건에 추가해, 다른 벤더의 하드웨어에 이 기능을 폭넓게 채용하도록 장려하고 있습니다.

DirectX 6.0의 마이너 업데이트는 1999년 2월 DirectX 6.1 업데이트로 이루어졌습니다. 릴리스에서는 DirectMusic 지원도 처음 추가되었으며 인텔 Pentium III 3D [19]확장 지원도 개선되었습니다.

1997년에[20] 보내진 기밀 메모에 따르면 Microsoft는 DirectX 6.0에서 Talisman의 완전한 지원을 발표할 예정이지만 API는 취소되었습니다(자세한 내용은 Microsoft Talisman 페이지 참조).

Direct3D 7.0

DirectX 7.0(1999년 9월 출시)에서는 .dds 텍스처[21] 포맷과 변환조명 하드웨어[22] 액셀러레이션 지원(Nvidia의 GeForce 256을 탑재한 PC 하드웨어에서 처음 사용 가능), 하드웨어 메모리에 정점 버퍼를 할당할 수 있는 기능이 도입되었습니다.하드웨어 정점 버퍼는 DirectX 역사상 OpenGL에 비해 실질적으로 개선된 최초의 버퍼입니다.Direct3D 7.0은 멀티텍션 하드웨어에 대한 DirectX 지원도 강화하여 고정기능 멀티텍션 파이프라인 기능의 정점을 나타냅니다.강력하지만 프로그램이 너무 복잡하여 그래픽 하드웨어의 음영 기능을 이용하려면 새로운 프로그래밍 모델이 필요했습니다.

Direct3D 8.0

2000년 11월에 출시된 DirectX 8.0은 버텍스와 픽셀 셰이더의 형태로 프로그래밍 기능을 도입하여 개발자들이 불필요한 하드웨어 [23]상태에 대해 걱정하지 않고 코드를 작성할 수 있도록 하였습니다.셰이더 프로그램의 복잡성은 태스크의 복잡성에 따라 달라졌으며 디스플레이 드라이버는 이러한 셰이더를 하드웨어가 이해할 수 있는 명령으로 컴파일했습니다.Direct3D 8.0과 그 프로그램 가능한 음영 기능은 복잡한 상태 기계에 의해 도면이 제어되는 OpenGL 스타일의 고정 기능 아키텍처에서 최초로 출발한 것입니다.Direct3D 8.0은 또한 [24][25]별도의 API로서 DirectDraw를 제거하였다.Direct3D는 렌더링 결과를 표시하기 위해 사용되는 함수인 Present()와 같이 애플리케이션 개발에 필요한 나머지 DirectDraw API 호출을 모두 포함시켰습니다.

Direct3D는 사용자 친화적인 것으로 간주되지 않았지만 DirectX 버전 8.1 이후 많은 사용성 문제가 해결되었습니다.Direct3D 8에는 버텍스 셰이더, 픽셀 셰이더, 안개, 범프 매핑, 텍스처 매핑 등 강력한 3D 그래픽 기능이 다수 포함되어 있습니다.

Direct3D 9

2002년 12월에 출시된 Direct3D 9.[26]0은 부동소수점 텍스처 포맷, MRT([29]Multiple Render Targets), Multiple-Element [30]텍스처, 정점 셰이더 및 스텐실 버퍼 기술에 [31]대한 새로운 버전의 고급 셰이더 언어[27][28] 지원을 추가했습니다.

Direct3D 9Ex [1]

Direct3D 9Ex[32](이전 버전 9.0L(L - 코드네임 Windows Longhorn)라고 하는 Windows Vista 이후의 Windows Vista(7, 8, 8.1, 10, 및 11)에서만 사용할 수 있는 확장을 사용하면 Windows Vista의 Windows 디스플레이 드라이버 모델(WDDM)이 제공하는 이점을 사용할 수 있으며 Windows [33]Aero에서 사용됩니다.Direct3D 9Ex는 DirectX 9 클래스의 WDM 드라이버와 조합하여 그래픽 메모리를 가상화하여 시스템 메모리에 페이징 아웃 할 수 있습니다.그래픽 [34]조작을 중단하거나 스케줄 하거나 프로세스 간에 DirectX 서페이스를 공유할 수 있습니다.Direct3D 9Ex는 이전에는 Windows Graphics Foundation(WGF) 버전 1.0으로 알려져 있었습니다.

Direct3D 10

Windows Vista 에는 Direct3D API의 메이저업데이트가 포함되어 있습니다.원래 WGF 2.0(Windows Graphics Foundation 2.0), DirectX 10 및 DirectX Next로 불렸습니다.Direct3D[35] 10은 업데이트된 셰이더 모델 4.0과 셰이더 [34]프로그램용 옵션 인터럽트 기능을 갖추고 있습니다.이 모델에서는 셰이더는 이전 버전과 마찬가지로 고정된 스테이지로 구성되어 있지만 모든 스테이지가 거의 통합된 인터페이스와 텍스처나 셰이더 상수 등의 리소스에 대한 통합 액세스 패러다임을 지원합니다.언어 자체는 정수 연산, 명령어 수 대폭 증가, 더 많은 C-like 언어 구성 등 보다 표현력이 향상되도록 확장되었습니다.API는 기존에 이용 가능한 정점 및 화소 셰이더 스테이지에 더해 하나의 정점 입력/1개의 정점 출력의 오래된 모델을 브레이크아웃하는 지오메트리 셰이더 스테이지도 포함하고 있어 셰이더 내에서 실제로 지오메트리를 생성할 수 있어 그래픽 하드웨어 상에서 모두 복잡한 지오메트리를 생성할 수 있다.

Windows XP 는 DirectX 10.0 이후에서는 지원되지 않습니다.

이전 버전의 API와 달리 Direct3D 10은 특정 그래픽 장치에서 지원되는 기능을 나타내기 위해 더 이상 "capability bits"(또는 "caps")를 사용하지 않습니다.대신, "Direct3D 10 호환" 디스플레이 시스템에 대해 지원되어야 하는 하드웨어 기능의 최소 표준을 정의합니다.이는 특정 기능의 유무에 따라 기능 검사 코드 및 특수한 경우를 제거함으로써 애플리케이션 코드를 합리화하는 것을 목표로 하는 중요한 출발입니다.

Direct3D 10 하드웨어는 Windows Vista의 초기 출시 이후 비교적 드물었고 Direct3D 10과 호환되지 않는 그래픽 카드의 대규모 설치 기반 때문에 최초의 Direct3D 10 호환 게임은 여전히 Direct3D 9 렌더 경로를 제공합니다.이러한 타이틀의 예로는 원래 Direct3D 9용으로 제작되어 출시 후에 Direct3D 10으로 이식된 게임(예: Company of Heroes)이나 개발 중에 나중에 수정된 Direct3D 10 경로를 가진 Direct3D 9용으로 개발된 게임(예: Hellgate: London 또는 Crysis) 등이 있습니다.DirectX 10 SDK는 2007년 [36]2월에 발매되었습니다.

Direct3D 10.0

Direct3D 10.0 수준의 하드웨어는 다음 기능을 지원해야 합니다.새로운 지오메트리 셰이더 스테이지에서 모든 프리미티브를 처리할 수 있는 기능, 스트림 출력 스테이지를 사용하여 파이프라인에서 생성된 정점 데이터를 메모리에 출력하는 기능, 멀티샘플링된 알파-to-커버리지 지원, 깊이/스텐실 표면 또는 멀티샘플링된 리소스가 렌더링 타깃으로 구속되지 않게 된 후 풀 HLSL 통합 – Di.rect3D 10 셰이더는 HLSL로 작성되어 공통 셰이더 코어, 정수 및 비트 셰이더 조작, 파이프라인 스테이트를 5개의 불변의 스테이트 오브젝트로 정리, 셰이더 상수를 상수 버퍼로 정리, 렌더 타깃, 텍스처 및 썬플러 수 증가, 셰이더 길이 제한 없음, 새로운 리소스 유형 및 re를 사용하여 구현됩니다.소스 포맷,[37] 계층화된 런타임/API [38]레이어, 지오메트리 셰이더를 사용한 프라이머리 머티리얼별 스왑 및 셋업 옵션, 뷰를 사용한 리소스 액세스의 일반화, 레거시 하드웨어 기능 비트(캡) 제거.

  • 고정 파이프라인은 완전히[39] 프로그램 가능한 파이프라인(종종 통합 파이프라인 아키텍처라고 함)을 위해 폐지되고 있으며, 이러한 파이프라인은 동일한 에뮬레이션을 위해 프로그램될 수 있습니다.
  • CPU가 효율적으로 상태를 변경할 수 있도록 하기 위한 새로운 상태 객체.
  • 셰이더 모델 4.0그래픽스 파이프라인의 프로그래밍 가능성을 향상시킵니다.정수 및 비트 계산에 대한 명령이 추가됩니다.
  • 공통 셰이더[40] 코어는 IEEE 준거의 32비트 정수 및 비트 단위 동작의 풀 세트를 제공합니다.이러한 연산을 통해 압축 및 패킹 기술, FFT, 비트필드 프로그램 흐름 제어 등 그래픽 하드웨어에서 새로운 수준의 알고리즘이 가능합니다.
  • 지오메트리 셰이더:[41][42] 메쉬를 형성하는 인접 삼각형에서 작동합니다.
  • 텍스처 어레이를 사용하면 CPU 개입 없이 GPU의 텍스처 스왑이 가능합니다.
  • 사전 렌더링을 사용하면 다른 조건에 따라 도면 호출을 무시할 수 있습니다.이렇게 하면 빠른 폐색 제거가 가능하므로 개체가 보이지 않거나 너무 멀어서 보이지 않을 경우 렌더링되지 않습니다.
  • 2.0 지원을 인스턴스화함으로써 군대, 풀, 나무 등 유사한 메쉬의 여러 인스턴스를 1회의 드로 콜로 렌더링할 수 있어 여러 개의 유사한 오브젝트에 필요한 처리 시간을 1회의 [43]드로 콜보다 단축할 수 있습니다.

Direct3D 10.1

Direct3D 10.1[44] Direct3D 10 출시 직후 마이너 업데이트로 마이크로소프트에 의해 발표되었습니다.사양은 2007년 11월 DirectX SDK 릴리스로 확정되었으며 런타임은 2008년 3월 중순부터 이용 가능한 Windows Vista SP1과 함께 출고되었습니다.

Direct3D 10.1은 그래픽 벤더의 이미지 품질 표준을 몇 가지 더 설정하여 개발자가 이미지 [45][46]품질을 더 잘 제어할 수 있도록 합니다.기능에는 안티에이리어싱(샘플별 음영 처리 및 샘플 위치에 대한 애플리케이션 제어로 멀티샘플링 및 슈퍼샘플링 모두)에 대한 세밀한 제어와 기존 기능(큐브맵 어레이 및 독립 혼합 모드)에 대한 유연성이 포함됩니다.Direct3D 10.1 레벨 하드웨어는 다음 기능을 지원해야 합니다.멀티샘플링은 커버리지 기반의 투과성을 일반화하고 멀티샘플링을 보다 효과적으로 실행할 수 있도록 확장되었습니다.멀티샘플링은 멀티패스 렌더링을 통해 효율적으로 동작합니다.영역 면은 자동으로 도태됩니다.이것은 와이어프레임 렌더링에만 영향을 줍니다.렌더 타깃마다 독립된 블렌드 모드, 새로운 샘플 주파수 픽셀 셰이더 실행에 영향을 줍니다.반복 래스터라이제이션, 파이프라인 스테이지 대역폭 증가, 컬러 및 깊이/스텐실 MSAA 표면 모두 소스 또는 타깃으로 사용할 수 있게 되었습니다.MultisampleEnable은 라인 래스터라이제이션에만 영향을 줍니다(점 및 삼각형은 영향을 받지 않습니다).또, 라인 그리기 알고리즘의 선택에 사용됩니다.즉, Direct3D 10의 일부 멀티샘플 래스터라이제이션은 지원되지 않습니다.Texture Sampling – sample_c 및 sample_c_lz 명령은 Texture2와 함께 작동하도록 정의되어 있습니다.DArays 및 TextureCubeArrays는 위치 멤버(알파 구성 요소)를 사용하여 배열 인덱스를 지정하고 TextureCubeArrays를 지원합니다.

  • 필수 32비트 부동소수점 필터링
  • 부동소수점 규칙– 부동소수점 연산에 동일한 IEEE-754 규칙을 사용합니다.32비트 부동소수점 연산은 무한정확한 결과의 0.5유닛 라스트 플레이스(0.5ULP) 내에서 결과를 생성하도록 강화되어 있습니다.이것은 덧셈, 뺄셈, 곱셈에 적용된다.(정확도는 곱셈의 경우 0.5 ULP, 역수의 경우 1.0 ULP).
  • 형식 – float16 블렌딩 정밀도가 0.5 ULP로 향상되었습니다.UNORM16/SNORM16/SNORM8 형식에도 블렌딩이 필요합니다.
  • 포맷 변환은 특정 32/64/128비트의 사전 구조화, 유형화된 리소스 및 동일한 비트 폭의 압축 표현 간에 복사하는 동안 이루어집니다.
  • R32G32B32A32 및 R32G32B32를 [47]제외한 모든 렌더링 타깃에 대해 4x MSAA를 필수 지원.
  • 셰이더 모델 4.1

Direct3D 10 클래스 하드웨어 및 드라이버 인터페이스가 엄격하게 필요했던 Direct3D 10과는 달리 Direct3D 10.1 런타임은 Direct3D 10.0 하드웨어에서 "기능 수준"[48][49][50] 개념을 사용하여 실행할 수 있지만 새로운 기능은 기능 수준 10_1을 제공하는 새로운 하드웨어에서만 지원됩니다.

2008년 6월 현재 이용할 수 있는 Direct3D 10.1 하드웨어는 ATIRadeon HD 3000 시리즈와 Radeon HD 4000 시리즈뿐입니다.2009년에는 Chrome 430/440이 도입되었습니다.S3 그래픽스의 GT GPU 및 NvidiaGeForce 200 시리즈의 일부 저가 모델.2011년 인텔 칩셋은 인텔 HD 그래픽스 2000(GMA HD)의 도입과 함께 Direct3D 10.1을 지원하기 시작했습니다.

Direct3D 11

Direct3D[51] 11은 Windows 7의 일부로 출시되었습니다.2008년 7월 22일 Gamefest 2008에서 발표되었으며 2008년 [52][53]8월 26일 Nvision 08 테크니컬 컨퍼런스에서 시연되었습니다.Direct3D [54]11 Technical Preview는 DirectX SDK의 2008년 11월 릴리즈에 포함되어 있습니다.AMD는 2009년 6월 3일 Computex에서 DirectX11 SDK 샘플 [55]중 일부를 실행하여 동작하는 DirectX11 하드웨어를 시연했습니다.

Direct3D 11 런타임은 Direct3D 9 및 10.x 클래스의 하드웨어 드라이버에서 "기능 수준"이라는 개념을 사용하여 실행할 수 있으며 Direct3D 10.[48][56][57]1 런타임에서 처음 도입된 기능을 확장합니다.기능 레벨에 의해 개발자는 Direct3D 11 API에서 렌더링 파이프라인을 통합하고 엔트리 레벨 카드에서도 보다 나은 리소스 관리 및 멀티스레딩 등의 API 개선을 이용할 수 있습니다.단, 새로운 셰이더 모델이나 렌더링 단계 등의 고급 기능은 상위 레벨의 하드웨어에서만 [56][58]공개됩니다.일반적인 DirectX 9.0a 카드의 다양한 기능을 캡슐화한3개의 "10 Level 9" 프로파일이 있으며 Direct3D 10, 10.1 및 11에는 각각 다른 기능 레벨이 있습니다.각 상위 레벨은 하위 레벨의 [59]엄밀한 슈퍼셋입니다.

테셀레이션은 Direct3D 10용으로 이전에 검토되었지만 나중에 포기되었습니다.Radeon R600 등의 GPU는 Direct3D 9/10/10.[63]1[60][61][62] 및 OpenGL에서 사용할 수 있는 테셀레이션 엔진을 갖추고 있지만 Direct3D 11(마이크로소프트에 따르면)과 호환되지 않습니다.Radeon 8xxx, GeForce 3/4 등의 오래된 그래픽 하드웨어는 다른 형태의 테셀레이션(RT 패치, N 패치)을 지원했지만, 이러한 테크놀로지는 실제로 사용되지 않았습니다.따라서 새로운 하드웨어에서 지원이 중단되었습니다.

마이크로소프트는 또한 Direct3D API에 의해 공개되지 않았지만 Videological의 PowerVR 칩 라인과 같은 초기 Direct3D 하드웨어에 의해 거의 투명하게 지원되는 순서 독립적인 투명성 등의 다른 특징도 암시했습니다.

Direct3D 11.0

Direct3D 11.0의 기능은 다음과 같습니다.셰이더 모델 5.0, 동적 shader 시범 공단 착공, 고심해 볼 만한 자원, 추가 리소스 types,[64]은 서브 루틴으로, 기하학 instancing, 픽셀 shader 입력으로 보험 혜택을 지원, 투입의 프로그램 가능 보간, 새로운 질감을 압축 포맷(1 새로운 LDR 형식과 1 새로운 HDR형식), 질감을 클램프 subtexel의 8-bits할 필요가 WindowsDisplayDriverModel예비 하중을 제한한다.한d 텍스처 필터링에 대한 서브맵 정밀도, 16K 텍스처 제한, Gather4(멀티 컴포넌트 텍스처 지원, 프로그램 가능한 오프셋 지원), DrawIndirect, 보수적 oDepth, Depth [65][66]Bias, 주소 가능한 스트림 출력, 리소스별 밉맵 클램핑, 부동소수점 뷰 포트, 셰이더 변환 명령, 멀티스레딩 개선.

  • 셰이더 모델[67] 5
  • 런타임에 낮은 상세 폴리곤 모델에서 볼 수 있는 폴리곤 수를 늘리기 위한 테셀레이션[68] 및 테셀레이션[69] 셰이더 지원
  • 멀티스레드 렌더링 - 멀티코어 CPU의 다른 스레드에서 동일한 Direct3D 디바이스 오브젝트로 렌더링합니다.
  • 컴퓨팅 셰이더 - OpenCL,[52][53] Nvidia CUDA, ATI Stream, HLSL Shader Model 5 등이 실현하는 과 같은 개념으로 스트림 처리나 물리 액셀러레이션 의 비그래픽 태스크에 셰이더 파이프라인을 공개합니다.
  • R32G32B32A32 [47]포맷을 제외한 모든 렌더 타깃 포맷에 대해 4배속 MSAA 및 8배속 MSAA를 의무적으로 지원합니다.

다른 주목할 만한 기능은 고품질 및 HDR/알파 텍스처를 보다 효율적으로 패킹하기 위한 2개의 새로운 텍스처 압축 알고리즘과 텍스처 캐시의 증가입니다.

릴리스 후보 버전에서 처음 도입된 Windows 7에는 최초로 출시된 Direct3D 11 지원이 통합되어 있습니다.Windows Vista용 플랫폼 업데이트에는 풀 기능의 Direct3D 11 런타임 및 DXGI 1.1 업데이트와 WARP, Direct2D, DirectWrite, WIC [70][71]등의 Windows 7 관련 컴포넌트가 포함되어 있습니다.

Direct3D 11.1

Direct3D 11.1[72][73] Windows [74][75]8과 함께 제공되는 API 업데이트입니다.Windows 8의 Direct3D 런타임에는 DXGI 1.2가[76] 탑재되어 있어 새로운 WDM 1.2 디바이스[77] [78]드라이버가 필요합니다.Windows SDK for Windows 8 Developer Preview의 예비 버전은 2011년 9월 13일에 출시되었습니다.

새로운 API기능과 HLSL, types,[79]모든 파이프 라인 무대에서 UAV(순서가 없습니다 접속 제도 운영),target-independent 래스터화(전술 신문), 옵션 SRVs 동적 버퍼의 NO_OVERWRITE과 바꾸기 비디오 자원의 장치가 처리, 선택 논리적 작전을 사용할 i. 컴파일러 강화 최소 정밀 HLSL 스칼라 데이터에 대한 지원 추적 shader법에렌더 대상, 상수 버퍼의 하위 범위를 셰이더에 바인드하여 가져오는 옵션, 셰이더가 액세스할 수 있는 것보다 더 큰 상수 버퍼를 생성하는 옵션, 리소스 및 리소스 뷰를 폐기하는 옵션, 새 복사 옵션을 사용하여 하위 리소스를 변경하는 옵션, 샘플 수가 래스터라이저 상태를 강제로 생성하도록 하는 옵션, 전체 또는 일부를 지우는 옵션리소스 뷰의 옵션, 세션0 프로세스에서 Direct3D를 사용하는 옵션, 기능 레벨9 이후에서의 HLSL 사용자 클립플레인 지정 옵션, 기능 레벨9에서의 섀도버퍼 지원, 비디오 재생 지원, 공유 Texture2D 리소스 확장 지원, Direct3D 10과 11 컨텍스트 및 기능 레벨 간의 온더플라이 스왑.Direct3D 11.1에는 새로운 기능 레벨 11_1이 탑재되어 있습니다.이 기능 레벨 11_1에서는 셰이더 언어에 대해 보다 큰 고정 버퍼나 옵션의 2배 정밀도 명령 등 마이너 갱신을 실시할 수 있습니다.또, [78][80]인텔 HD 그래픽스등의 엔트리 레벨 GPU 의 퍼포먼스를 향상시키기 위해서, 16 비트 컬러 포맷의 블렌딩 모드나 서포트를 의무화하고 있습니다.WARP는 기능 레벨 11_1을 지원하도록 업데이트 되었습니다.

Windows 7용 플랫폼 업데이트에는 Direct3D 11.1의 제한된 기능 세트가 포함되어 있습니다., 기능 레벨 11_1과 그 관련 API 또는 입체 렌더링용 쿼드 버퍼링 등 WDM 1.2에 의존하는 컴포넌트는 [81][82]존재하지 않습니다.

Direct3D 11.2

Direct3D 11.2[83][84][85] Windows 8.[86][87]1과 함께 출고되었습니다.새로운 하드웨어 기능에는 WDM 1.3 드라이버를 탑재한[88][89] DXGI 1.3 드라이버가 필요합니다.런타임 셰이더의 변경과 링크, FLG(Function Linking Graph), 수신 트레이의 HLSL 컴파일러, 그래픽 명령에 주석을 [90]달 수 있는 옵션 등이 있습니다.기능 레벨 11_0 및 11_1에서는 셰이더 레벨의 상세 클램프(Tier2)[91]를 갖춘 타일리소스에 대한 옵션 지원이 도입됩니다.후자의 기능은 현재 [92]많은 GPU에 존재하는 하드웨어 페이지 테이블을 효과적으로 제어합니다.WARP는 새로운 [86][93]기능을 완전히 지원하도록 업데이트되었습니다.단, 기능 레벨 11_2는 없습니다.새로운 기능은 기존 기능 레벨로 분산되어 있습니다.하드웨어에 의존한 것은, 다음의 방법으로 개별적으로 확인할 수 있습니다.CheckFeatureSupport. Direct3D 11.2의 '신기능' 중 일부는 실제로 오래된 하드웨어 기능을 보다 세밀하게 공개하고 있습니다.[87][94]예를 들어 다음과 같습니다.D3D11_FEATURE_D3D9_SIMPLE_INSTANCING_SUPPORT는 기능 레벨 9_1 및 9_2 하드웨어에서의 인스턴스화를 부분적으로 지원합니다.그 이외의 경우에는 기능 레벨 9_3 [95]이후부터 완전히 지원됩니다.

Direct3D 11.x

Direct3D 11.XXbox [96][97]One에서 실행되는 DirectX 11.2의 슈퍼셋입니다.나중에 DirectX [98]12의 일부로 발표된 그리기 번들 등의 일부 기능이 포함되어 있습니다.

Direct3D 11.3

Direct3D 11.3[99] 2015년 7월에 Windows 10과 함께 출하되었습니다.Direct3D 11.x [100][101][102]API의 전체적인 구조를 유지하면서 Direct3D 12의 작은 렌더링 기능을 포함하고 있습니다.Direct3D11.3셰이더 모델 5.1,[103]선택적 셰이더 특정 Stencil 참조 값, TypedUnordered 액세스 뷰 Loads, Rasterizer(ROVs) 보기 Ordered 선택적 표준 스위즐 선택적 디폴트 텍스처 매핑, 보수당 Rasterizationᆫ,[104]선택적 통합 메모리 액세스(일정외 정비 활동)지원 및 추가 Tiled이 훌륭히 기록을 소개한다.출처(상대방ier 2)(볼륨 타일형 리소스).[105]

Direct3D 11.4

  • Direct3D 11.4 버전 1511 – 초기 Direct3D 11.4는 Windows 10 Threshold 2 업데이트 (버전 1511)에서 도입되어 외장 그래픽 어댑터 지원 및 DXGI 1.5가 [106]향상되었습니다.
  • Direct3D 11.4 버전 1607 – Windows 10 Anniversary Update(버전 1607)를 사용한 Direct3D 11.4 업데이트에는 WDM 2.1 및 UHDTV HDR10 포맷(ST 2084) 지원 및 UWP 응용 프로그램의 가변 리프레시 레이트 지원이 포함되어 있습니다.

Direct3D 12

Direct3D[100][102][99][107][108][109][excessive citations] 12는 이전 버전보다 낮은 수준의 하드웨어 추상화를 지원하므로 향후 게임은 멀티스레드 확장을 대폭 개선하고 CPU 사용률을 낮출 수 있습니다.이는 Direct3D 추상화 레이어를 기본 하드웨어와 더 잘 일치시킴으로써 간접 그리기, 디스크립터 테이블, 간결한 파이프라인 상태 객체 및 그리기 콜번들 등의 신기능을 통해 실현됩니다.드라이버 오버헤드를 줄이는 것은 사실 AMD[108]Mantle과 마찬가지로 Direct3D 12의 주요 매력입니다.Direct3D 12의 주요 목표는 "콘솔 수준의 효율성"과 CPU [110][111][112]병렬화 향상입니다.

Nvidia는 Direct3D 12를 폭넓게 지원한다고 발표했지만, 게임 엔진 개발자들은 애플리케이션 코드에서 GPU 리소스를 직접 관리하는 데 열심일 수 있지만, "다른 많은 사람들"은 [113]그렇게 하는 것을 달가워하지 않을 것이라는 점에 주목하면서 새로운 API의 보편적인 매력에 대해서도 다소 유보적이었다.

몇몇은 새로운 하드웨어 특징들 또한 Direct3D12,[102][114][115]에서 셰이더 모델 5.1,[103]볼륨 Tiled Resourcesᆭ,[103]셰이더 특정 Stencil 참조 값, Typed무인 정찰기 하중, 보수당 Rasterization(계층 1), 더 나은 충돌과 보수 Rasterization과 도태 등 Rasterizer(ROVs), 표준 Swizzles, Defau 보기 Ordered 있다.lt 질감 매핑, 스왑픽셀 순서 UAV를 [118]사용한 체인, 스위즈드 자원 및 압축 자원,[116] 추가 블렌드 모드,[117] 프로그래밍 가능한 혼합 및 효율적인 주문 독립 투명도(OIT)

파이프라인 상태[119] 객체는 Direct3D 11에서 발전했으며, 새로운 간결한 파이프라인 상태는 프로세스가 간소화되었음을 의미합니다.DirectX 11은 성능 저하로 상태를 변경할 수 있는 유연성을 제공했습니다.프로세스를 단순화하고 파이프라인(픽셀 셰이더 상태 등)을 통합하면 프로세스가 보다 합리화되므로 오버헤드가 대폭 감소하고 그래픽 카드가 각 프레임에 대해 더 많은 콜을 그릴 수 있습니다.

또한 Direct3D 12는 AMD[citation needed] Mantle로부터 명령어 리스트와 번들에 관한 지식을 습득하여 CPU와 GPU가 보다 균형 있게 연동되도록 하는 것을 목표로 하고 있습니다.

Direct3D11에서는 명령어가 CPU에서 GPU로 하나씩 전송되고 GPU는 이들 명령어를 순차적으로 처리합니다.즉, CPU가 이러한 명령을 선형으로 전송할 수 있는 속도에 의해 명령어가 병목현상을 일으킵니다.DirectX 12 에서는, 이러한 커맨드가 커맨드 리스트로서 송신되어 1 개의 패키지에 필요한 모든 정보가 포함되어 있습니다.GPU는 CPU로부터의 추가 정보를 기다릴 필요 없이 이 명령어를 1개의 프로세스로 계산 및 실행할 수 있습니다.

이러한 명령어 목록에는 번들이 포함되어 있습니다.GPU가 명령어를 실행, 사용, 잊어버린 경우 번들을 재사용할 수 있습니다.따라서 GPU의 워크로드가 감소하고 반복된 자산을 훨씬 빠르게 사용할 수 있습니다.

현재 Direct3D 11에서는 자원 바인딩이 개발자에게 매우 편리하지만 비효율성으로 인해 몇 가지 최신 하드웨어 기능이 크게 활용되지 못하고 있습니다.DX11의 리소스가 필요한 게임 엔진은 매번 처음부터 데이터를 끌어내야 했습니다. 즉, 반복 프로세스와 불필요한 사용을 의미합니다.Direct3D 12에서 디스크립터 힙과 테이블은 개발자가 가장 자주 사용하는 리소스를 테이블에서 할당할 수 있음을 의미하며 GPU는 빠르고 쉽게 액세스할 수 있습니다.이는 동등한 하드웨어에서 Direct3D 11보다 더 나은 성능에 기여할 수 있지만 개발자에게 더 많은 작업이 수반됩니다.

Dynamic Humps도 Direct3D [120]12의 기능입니다.

Direct3D 12는 명시적인 멀티 어댑터 지원 기능을 갖추고 있어 여러 GPU 구성 시스템을 명시적으로 제어할 수 있습니다.이러한 구성은 동일한 하드웨어 벤더 및 다른 하드웨어 벤더의 그래픽 어댑터를 함께 [121]사용하여 구축할 수 있습니다.

Windows 7 SP1용 D3D 12의 시험 지원은 전용 NuGet [122][123][124]패키지를 통해 2019년에 마이크로소프트에 의해 출시되었습니다.

  • Direct3D 12 버전 1607 – 2016년 8월 2일에 출시된 Windows 10주년 기념 업데이트(버전 1607)에서 Direct3D 12 런타임은 명시적인 멀티스레딩 및 프로세스 간 통신 구성을 지원하도록 업데이트되었으며 개발자는 최신 대규모 병렬 GPU를 [125]활용할 수 있습니다.기타 기능으로는 루트시그니처 버전 1.1 갱신과 HDR10 포맷 및 가변 리프레시 레이트 지원이 있습니다.
  • Direct3D 12 버전 1703 – 2017년 4월 11일에 출시된 Windows 10 Creators Update(버전 1703)에서 Direct3D 12 런타임은 Shader Model 6.0 및 DXIL을 지원하도록 업데이트되었습니다. Shader Model 6.0에는 Windows 10 Anniversary Update(버전 1607),새로운 그래픽 기능은 Depth Bounds Testing [126]및 Programmable MSAA입니다.
  • Direct3D 12 버전1709 – Windows 10 Fall Creators Update (버전1709)에서는 향상된 [126]디버깅이 포함되어 있습니다.
  • Direct3D 12 버전 1809 – Windows 2018년 10월 10일 업데이트(버전 1809)는 DirectX 레이트레이싱을 지원하므로 GPU는 API의 이점을 누릴 수 있습니다.
  • Direct3D 12 버전1903 – Windows 2019년 5월 10일 업데이트(버전 1903)는 DirectML[127]지원합니다.
  • Direct3D 12 버전 2004 – Windows 2020년 5월 10일 업데이트 (버전 2004)는 메쉬 및 증폭 셰이더,[128] 썬플라 피드백,[129] DirectX 레이트레이싱 계층 1[130].1 및 메모리 할당 [131]개선을 지원합니다.

아키텍처

추상층

Direct3D는 Microsoft DirectX API 서브시스템 컴포넌트입니다.Direct3D의 목적은 그래픽 애플리케이션과 그래픽 하드웨어 드라이버 간의 통신을 추상화하는 것입니다.GDI와 동등한 수준으로 얇은 추상층처럼 나타납니다(첨부 다이어그램 참조).Direct3D에는 GDI에 없는 수많은 기능이 포함되어 있습니다.

Direct3D는 즉시 모드 그래픽스 API입니다.모든 비디오 카드 3D 기능(변환, 클리핑, 조명, 재료, 텍스처, 깊이 버퍼링 등)에 대한 낮은 수준의 인터페이스를 제공합니다.한때는 더 높은 수준의 유지 모드 구성 요소를 가지고 있었지만 지금은 공식적으로 단종되었습니다.

Direct3D immediate 모드는 디바이스, 리소스스왑 체인(첨부 그림 참조)의 3가지 주요 개요를 제공합니다.장치는 3D 장면을 렌더링하는 역할을 합니다.이들은 다양한 렌더링 기능을 가진 인터페이스를 제공합니다.예를 들어 모노 디바이스는 흰색과 검은색 렌더링을 제공하는 반면 RGB 디바이스는 컬러 렌더링을 제공합니다.디바이스에는 다음 4가지 유형이 있습니다.

  • HAL(하드웨어 추상층) 디바이스:하드웨어 액셀러레이션을 지원하는 디바이스의 경우.
장치
  • 참조 장치:하드웨어에서 아직 사용할 수 없는 새로운 기능을 시뮬레이션합니다.이 디바이스 유형을 사용하려면 Direct3D SDK를 설치해야 합니다.
  • 특수 참조 장치:아무것도 하지 않는다.이 디바이스는 SDK가 설치되어 있지 않고 참조 디바이스가 요청되었을 때 사용됩니다.
  • 플러그 가능한 소프트웨어 장치:소프트웨어 렌더링을 수행합니다.이 디바이스는 DirectX 9.[132]0에서 도입되었습니다.

모든 디바이스에는 적어도1개의 스왑 체인이 포함되어 있습니다.스왑 체인은 하나 이상의 백버퍼 표면으로 구성됩니다.렌더링은 백버퍼에서 이루어집니다.

또한 디바이스에는 렌더링 시 사용되는 특정 데이터인 리소스 모음이 포함되어 있습니다.각 리소스에는 다음 4가지 속성이 있습니다.

  • 유형: 리소스 유형(표면, 볼륨, 텍스처, 큐브 텍스처, 볼륨 텍스처, 표면 텍스처, 인덱스 버퍼 또는 정점 버퍼)을 결정합니다.
  • 풀:[133] 런타임에 의해 리소스가 관리되는 방법 및 저장 위치를 설명합니다.기본 풀에서는 리소스가 디바이스 메모리에만 존재합니다.관리 풀의 리소스는 시스템 메모리에 저장되며 필요할 때 장치로 전송됩니다.시스템 메모리 의 리소스는 시스템 메모리에만 존재합니다.마지막으로 스크래치 풀은 기본적으로 시스템 메모리 풀과 동일하지만 리소스는 하드웨어 제한에 구속되지 않습니다.
  • 형식: 메모리 내 리소스 데이터의 레이아웃을 설명합니다.예를 들어 D3DFMT_R8G8B8 형식 값은 24비트 색심도(빨강은 8비트, 녹색은 8비트, 파란색은 8비트)를 의미합니다.
  • 사용방법: 플래그 비트 컬렉션과 함께 응용 프로그램에서 리소스를 사용하는 방법을 설명합니다.이러한 플래그는 다이내믹액세스 패턴 또는 스태틱액세스 패턴에서 사용되는 자원을 나타냅니다.정적 리소스 값은 로드된 후에도 변경되지 않지만 동적 리소스 값은 수정될 수 있습니다.

Direct3D는 두 가지 디스플레이 모드를 구현합니다.

  • 전체 화면 모드:Direct3D 응용 프로그램은 디스플레이 장치에 대한 모든 그래픽 출력을 생성합니다.이 모드에서 Direct3D는 Alt-Tab을 자동으로 캡처하고 프로그래머의 개입 없이 화면 해상도와 픽셀 형식을 설정/복구합니다.또한 'Exclusive Cooperative Mode'[citation needed]로 인해 디버깅에 많은 문제가 발생합니다.
  • 창 모드:결과는 창 영역 내에 표시됩니다.Direct3D는 GDI와 통신하여 디스플레이에 그래픽 출력을 생성합니다.윈도우 모드는 드라이버 지원에 따라 전체 화면과 동일한 수준의 성능을 가질 수 있습니다.

파이프라인

Direct3D 11 그래픽스 파이프라인 프로세스

Microsoft Direct3D 11 API는 정점, 텍스처, 버퍼 및 상태의 그룹을 화면상의 이미지로 변환하는 프로세스를 정의합니다.이 프로세스는 여러 단계를 포함하는 렌더링 파이프라인으로 설명됩니다.Direct3D 11 파이프라인의 다양한 단계는 다음과 같습니다.[134]

  1. Input-Assembler:[135] 응용 프로그램에서 제공한 정점 버퍼에서 정점 데이터를 읽고 파이프라인에 공급합니다.
  2. 정점 셰이더:[136] 변환, 스키닝 또는 조명과 같은 한 번에 하나의 정점에 대한 작업을 수행합니다.
  3. Hul-Shader:[137] 패치 제어 포인트 세트에 대한 작업을 수행하고 패치 상수라고 하는 추가 데이터를 생성합니다.
  4. 테셀레이터:[138] 형상을 세분화하여 선체를 고차적으로 표현합니다.
  5. Domain-Shader:[139] 정점 셰이더와 거의 동일한 방식으로 테셀레이션 단계에서 출력되는 정점에 대한 작업을 수행합니다.
  6. 지오메트리 셰이더:[140] 삼각형, 점 또는 선과 같은 전체 원시 요소를 처리합니다.프리미티브를 지정하면 이 단계는 프리미티브를 폐기하거나 하나 이상의 새로운 프리미티브를 생성합니다.
  7. 스트림 출력:[141] 이전 단계의 결과를 메모리에 쓸 수 있습니다.이 기능은 데이터를 파이프라인으로 재순환하는 데 유용합니다.
  8. 래스터라이저:[142][143] 원형을 픽셀로 변환하여 픽셀 셰이더에 넣습니다.래스터라이저는 보이지 않는 부분을 잘라내거나 정점 데이터를 픽셀당 데이터로 보간하는 등의 다른 작업도 수행할 수 있습니다.
  9. 픽셀 셰이더:[144]렌더 대상에 쓸 최종 픽셀 색상을 결정하고 깊이 버퍼에 쓸 깊이 값을 계산할 수도 있습니다.
  10. 출력 병합:[145]다양한 유형의 출력 데이터(픽셀 셰이더 값, 알파 혼합, 깊이/스텐실...)를 병합하여 최종 결과를 작성합니다.

원형 상자로 표시된 파이프라인 단계는 완전히 프로그래밍할 수 있습니다.응용 프로그램은 해당 단계에서 완료해야 하는 정확한 작업을 설명하는 셰이더 프로그램을 제공합니다.많은 스테이지는 옵션이며 모두 디세블로 할 수 있습니다.

기능 수준

Direct3D 5~9에서는 새로운 버전의 API가 새로운 하드웨어 기능을 지원했을 때 대부분의 API는 옵션이었습니다.각 그래픽 벤더는 기본적인 필수 기능 외에 독자적인 지원 기능 세트를 유지했습니다.개별 기능에 대한 지원은 "기능 비트" 또는 "캡"을 사용하여 결정해야 했기 때문에 벤더 간 그래픽 프로그래밍이 복잡했습니다.

Direct3D 10은 지원되는 모든 그래픽 카드가 준수해야 하는 가장 일반적인 Direct3D 9 기능을 기반으로 매우 심플한 필수 하드웨어 요건을 도입했습니다.단, 지원되는 텍스처 형식 및 조작에는 옵션 기능이 거의 없습니다.

Direct3D 10.1에는 몇 가지 새로운 필수 하드웨어 요건이 추가되어 10.0 하드웨어 및 드라이버와의 호환성을 유지하기 위해 이러한 기능은 "기능 수준"이라고 불리는 두 가지 세트로 캡슐화되었으며 10.1 레벨은 10.0 레벨의 슈퍼셋을 형성하고 있습니다.Direct3D 11.0, 11.1 및 12에 새로운 하드웨어 지원이 추가됨에 따라 새로운 필수 기능이 상위 기능 [48]레벨로 그룹화되었습니다.

Direct3D 11은 또한 다양한 Direct3D 9 카드를 WDM 드라이버로 캡슐화한 3가지 기능 레벨을 가진 Direct3D 10 API의 서브셋인 "10level 9"를 도입했으며 Direct3D 11.1은 Direct3D 11.2 이후 버전에서 확장된 모든 레벨에 [146]대한 몇 가지 옵션 기능을 다시 도입했습니다.

이 접근방식을 통해 개발자는 렌더링 파이프라인을 통합하고 새로운 하드웨어와 오래된 하드웨어 모두에서 단일 버전의 API를 사용할 수 있으며 새로운 [52]런타임에서 성능과 사용 편의성이 향상되었습니다.

새로운 기능 레벨은 API의 갱신 버전과 함께 도입되어 일반적으로 다음과 같이 캡슐화되어 있습니다.

  • 주요 필수 기능– (Direct3D 11.0, 12),
  • 몇 가지 마이너 기능(Direct3D 10.1, 11.1) 또는
  • 일반적인 옵션 기능 세트 (Direct3D 11.0 "10 level 9").

각 상위 레벨은 하위 레벨의 엄격한 슈퍼셋이며 상위 [59]레벨의 핵심 기능으로 이동하는 새로운 기능 또는 이전에 옵션 기능 몇 개만 있습니다.새로운 셰이더 모델 및 렌더링 단계와 같은 Direct3D API의 주요 리비전의 고급 기능은 고급 [57][58]하드웨어에서만 제공됩니다.

특정 텍스처 조작 및 자원 포맷의 지원을 나타내기 위해 별도의 기능이 존재합니다.이러한 기능은 기능 [147][148]플래그를 조합하여 각 텍스처 포맷별로 지정됩니다.

기능 레벨에서는 밑줄(예: "12_1")을 구분자로 사용하고, API/런타임 버전에서는 점(예: "Direct3D 11.4")을 사용합니다.

Direct3D 11레벨

Windows 10 용 Direct3D 11.4 에서는, 다음의 9개의 기능 레벨이 있습니다.D3D_FEATURE_LEVEL반면 수준 12_0과 12_1 correspon 구조;수준 9_1, 9_2과 9_3(집합적으로 Direct3D10레벨 9로 알려진)형상 Direct3D11와 Direct3D11.1API와 runtimes로 하여 출시된 것을 반영한다고 10_1 Direct3D10,[57]11_0과 11_1의 유산 버전으로 부른다 인기 있는 Direct3D9카드, 수준 10_0의 다양한 특징 re-encapsulate.dtDirect3D 12 API에서 도입된 새로운 기능 수준입니다.

Direct3D 11.4의 기능 수준
기능 수준 필수 하드웨어 기능 옵션 기능
9_1 셰이더 모델 2.0 (vs_2_0/ps_2_0, 2K 텍스처, 볼륨 텍스처, 이벤트 쿼리, BC1-3(일명 DXTn), 기타 몇 가지 특정 기능.
9_2 폐색 쿼리, 부동 소수점 형식(혼합 없음), 확장 대문자, 모든 9_1 기능.
9_3 vs_2_a/ps_2_x인스턴스화 및 추가 셰이더 캡, 4K 텍스처, 다중 렌더링 대상(4 MRT), 부동 소수점 혼합(제한됨), 모든 9_2 기능.
10_0 셰이더 모델 4.0, 지오메트리 셰이더, 스트림 출력, 알파-to-커버리지, 8K 텍스처, MSAA 텍스처, 양면 스텐실, 일반 렌더 타깃 뷰, 텍스처 어레이, BC4/BC5, 풀 부동소수점 형식 지원, 모든 9_3 기능 논리 블렌드 연산, Direct Compute(CS 4.0/4.1), 확장 픽셀 형식.[146]
10_1 셰이더 모델 4.1, 큐브맵 어레이, 확장 MSAA, 모든 10_0 기능
11_0 셰이더 모델 5.0/5.1, 선체 및 도메인 셰이더, Direct Compute(CS 5.0/5.1), 16K 텍스처, BC6H/BC7, 확장 픽셀 형식, 모든 10_1 기능 강제 샘플 카운트, 지속적인 버퍼 오프셋 및 부분 업데이트, 이중 정밀도(64비트) 부동 소수점 연산, 최소 부동 소수점 정밀도(10비트 또는 16비트), 최소/최대 필터링을 사용한 UAV 전용 렌더링.
11_1 논리 블렌드 연산, 타겟에 의존하지 않는 래스터라이제이션, 슬롯 카운트가 증가한 모든 파이프라인 스테이지에서의 UAV, 강제 샘플 카운트를 사용한 UAV만의 렌더링, 일정한 버퍼 오프셋 및 부분 업데이트, 모두 11_0 기능입니다. 타일 리소스(4개 계층), 보수적인 래스터라이제이션(3개 계층), 픽셀 셰이더의 스텐실 참조 값, 래스터라이저 순서 뷰, 추가 형식을 위한 유형화된 UAV 로드.
12_0 타일 리소스 계층 2(Texture2D), 유형 UAV 로드(추가 형식).
12_1 보수적 래스터라이제이션 계층 1, 래스터라이저 주문 뷰

Direct3D 12레벨

Windows 10 용 Direct3D 12 에는, 가상 메모리 주소 변환을 서포트하는 기능 레벨 11_0 및 11_1 에 준거한 그래픽 하드웨어와 WDM 2.0 드라이버가 필요합니다.12_0과 12_1의 두 가지 새로운 기능 레벨이 있으며, 여기에는 Direct3D 12에 의해 공개되는 몇 가지 신기능이 포함되어 있습니다.이것은 레벨 11_0과 [149]11_1에서는 옵션입니다.이전에 옵션이었던 기능 중 일부는 레벨 11_0 및 11_1의 베이스라인으로 재배치됩니다.Shader Model 6.0은 Windows 10 Creators Update와 함께 출시되었으며 Windows 10 Anniversary Update, WDM 2.1 드라이버가 필요합니다.

Direct3D 12 기능 수준
레벨 필수 기능 옵션 기능
11_0 Direct3D 11, Shader Model 5.1, 리소스 바인딩 계층 1의 모든 필수 11_0 기능. 논리 블렌드 연산, 2배 정밀도(64비트) 부동소수점 연산, 최소 부동소수점 정밀도(10비트 또는 16비트)

리소스 바인딩(3개 계층), 타일 리소스(4개 계층), 보수적인 래스터라이제이션(3개 계층), 픽셀 셰이더의 스텐실 참조 값, 래스터라이저 순서 뷰, 추가 형식을 위한 유형화된 UAV 로드, 인스턴스 보기.

셰이더 모델 6.0~6.7

메타 코만드, 가변 쉐이딩 레이트, 레이트레이싱, 메시 셰이더, 샘플러 피드백.

기타 옵션 [150]기능

모든 파이프라인 단계에서 UAV, UAV는 강제 샘플 수, 지속적인 버퍼 오프셋 및 부분 업데이트를 통한 렌더링만 수행합니다.
11_1 논리 블렌드 조작, 타겟에 의존하지 않는 래스터라이제이션, UAV 슬롯 수 증가.
12_0 리소스 바인딩 계층 2, 타일 리소스 계층 2(Texture2D), 유형화된 UAV 로드(추가 형식), 셰이더 모델 6.0.
12_1 보수적 래스터라이제이션 계층 1, 래스터라이저 주문 뷰
12_2 DirectX 12 Ultimate:셰이더 모델 6.5, 레이트레이싱 계층 1.1, 메시 셰이더, 가변 레이트 쉐이딩, 썬플라 피드백, 자원 바인딩 계층 3, 타일드 리소스 계층 3(Texture 3D), 보수 래스터라이제이션 계층 3, 40비트 가상 주소 공간

Direct3D12는 메모리를 명시적으로 제어할 수 있는 개량된 자원 바인딩 모델을 도입한다.추상적인 "리소스 뷰" 개체는[151] 메모리 힙 및 [152]테이블을 사용하여 할당되는 리소스 설명자로 표시됩니다.자원 바인딩 계층은 텍스처 썬플라 유닛뿐만 아니라 CBV(일시 버퍼 뷰), SRV(섀도 리소스 뷰) 및 UAV(무질서 액세스 뷰)를 사용하여 주소 지정할 수 있는 최대 리소스 수를 정의합니다.계층 3 하드웨어에서는 디스크립터 힙의 크기에 의해서만 바인드리스 리소스가 제한되지만 계층 1 및 계층2 하드웨어에서는 [153][154]동시에 사용할 수 있는 디스크립터(「뷰」)의 수에 제한이 있습니다.

리소스 바인딩 계층
자원 제한 계층 1 계층 2 계층 3
CBV/SRV/UAV 힙 기술자 100만 100만 100만 이상
셰이더 스테이지당 CBV 수 14 14 풀히프
셰이더 단계당 SRV 수 128 풀히프
모든 단계에 걸친 UAV 8, 64 64 풀히프
셰이더 스테이지당 샘플러 수 16 풀히프
기능 레벨 11_1 하드웨어에 64 슬롯 탑재

멀티스레딩

Windows Vista 이후의 WDM 드라이버 모델은 하드웨어 또는 소프트웨어에서 임의의 수의 실행 컨텍스트(또는 스레드)를 지원합니다.Windows XP는 Direct3D에 대한 멀티태스킹 액세스만 지원했습니다.이러한 액세스에서는, 다른 윈도우로 다른 애플리케이션을 실행해, 하드웨어를 고속화할 수 있었습니다.또, OS에서는 GPU 의 조작을 제한해, 드라이버는 실행 스레드를 임의로 전환할 수 있었습니다.

Direct3D 11 런타임에는 멀티 스레드 모드에서 런타임 실행 기능이 도입되었습니다.각 실행 컨텍스트에는 GPU의 자원 뷰가 표시됩니다.실행 컨텍스트는 서로 보호됩니다.단, 악성 또는 잘못 작성된 앱은 사용자 모드 드라이버의 실행을 제어할 수 있으며 수정된 명령을 전송하여 GPU 메모리 내의 다른 프로세스에서 데이터에 액세스할 수 있습니다.잘 작성된 앱은 다른 앱에 의한 액세스로부터 보호되지만 다른 앱에 의한 장애 및 장치 손실로부터 자신을 보호해야 합니다.

OS는 스레드를 모두 자체 관리하므로 필요에 따라 하드웨어가 스레드에서 다른 스레드로 전환할 수 있습니다.또한 통합된 OS 커널 메모리 관리를 통해 메모리 관리와 페이징(시스템 메모리 및 디스크로의)도 처리합니다.

Windows [78]8 에 부속된 WDM/DXGI 1.2 에서는, 1 개의 커맨드 레벨이나 커맨드의 배치 대신에, 2 개의 실행 스레드를 쉐이더 명령 레벨로 전환할 수 있는 등, 보다 세밀한 콘텍스트 스위칭이 도입되었습니다.이것에 의해, 애플리케이션이 1개의 커맨드/배치의 커맨드를 매우 장시간 실행해, OS 워치독타이머에 [155]의해서 종료할 필요가 있는 경우에 발생할 가능성이 있는 스케줄링의 문제를 해결할 수 있습니다.

WDM 2.0 및 DirectX 12는 완전한 멀티스레드 드로우 콜을 허용하도록 리엔지니어링되었습니다.이것은, 모든 자원을 불변(즉, 읽기 전용), 렌더링 상태를 시리얼화해, 드로우 콜 번들을 사용해 실현했습니다.이것에 의해, 커널 모드 드라이버로 복잡한 자원 관리가 불필요해지기 때문에, 같은 애플리케이션내의 다른 렌더링 스레드에 의해서 제공되는 동시 실행 콘텍스트를 개입시켜 유저 모드 드라이버에의 복수의 재진입이 가능하게 됩니다.

Direct3D 모바일

Direct3D Mobile은 Direct3D에서 파생되었지만 메모리 설치 공간이 더 작습니다.Windows CE는 Direct3D Mobile을 지원합니다.[156]

대체 구현

Direct3D API의 대체 구현은 다음과 같습니다.Windows 이외의 플랫폼 및 일부 버전의 DX가 지원되지 않는 하드웨어에 유용합니다.

  • WineD3D – Wine 오픈소스 프로젝트에서는 OpenGL로의 [157]변환을 통해 Direct3D API를 구현하고 있습니다.Wine의 구현은 특정 [158]조건 하에서 Windows에서도 실행할 수 있습니다.
  • vkd3d – vkd3d는 Vulkan 위에 구축된 오픈 소스 3D 그래픽 라이브러리입니다.Vulkan [159]에서 Direct3D 12 애플리케이션을 실행할 수 있습니다.주로 와인 [160][161]프로젝트에서 사용되며, 현재는 Linux에서 스팀으로 번들된 밸브의 프로톤 프로젝트에 포함되어 있습니다.
  • DXVK – Direct3D 9/10/11용 오픈 소스 Vulkan 기반 번역 레이어.와인을 사용하여 Linux 에서 [162][163]3D 애플리케이션을 실행할 수 있습니다.리눅스용 프로톤/스팀으로[164] 사용됩니다.DXVK는 Linux에서 많은 최신 Windows 게임을 실행할 수 있습니다.
    • D9VK – Direct3D9 [165]지원을 추가하기 위한 DXVK 포크.[166] Linux에서 Steam/Proton에 포함되어 있습니다.2019년 12월 16일 D9VK가 DXVK에 [167]합병되었다.
  • Galium Nine – Galium Nine을 사용하면 Direct3D9 어플리케이션을 Linux 상에서 네이티브로 실행할 수 있습니다.즉, 콜 변환 없이 네이티브에 가까운 속도로 실행할 수 있습니다.와인과 [168][169]메사의 협력이 필요합니다.

관련 도구

D3DX

Direct3D는 벡터, 매트릭스 및 색상에 대한 일반적인 수학적 계산, 룩앳 및 투영 매트릭스 계산, 스플라인 보간 및 3D 그래픽 프로그래밍, 압축 골격 애니메이션 스토리지 및 조립과 같은 몇 가지 더 복잡한 작업을 수행하도록 설계된 도구 라이브러리인 D3DX와 함께 제공됩니다.매트릭스 스택접선 공간 계산, 메쉬 심플화, 미리 계산된 광도 전송, 정점 캐시 친화성 및 스트립화를 위한 최적화, 3D 텍스트 메쉬 생성기 등 3D 메쉬에 대한 복잡한 연산을 제공하는 여러 기능이 있습니다. 2D 기능에는 스크린 공간 선, 텍스트 및 스프라이트 기반 파티클 시스템을 그리기 위한 클래스가 포함됩니다.tem. 공간 기능에는 다양한 교차로 루틴, 중심 좌표에서 중심 좌표로의 변환 및 경계 상자/구면 생성기가 포함됩니다.D3DX는 Dynamic Link Library(DLL; 다이내믹링크 라이브러리)로서 제공됩니다.D3DX는 Windows 8 이상에서는 더 이상 사용되지 않으므로 Windows Store [170]앱에서는 사용할 수 없습니다.

이전 버전의 D3DX에 있는 일부 기능은 Direct3D 11에서 삭제되어 별도의 [171]소스로 제공되었습니다.

  • Windows SDK 및 Visual[172] Studio
  • 수학 라이브러리의 많은 부분이 제거되었습니다.대신 DirectX Math 라이브러리를 사용할 것을 권장합니다.
  • 구면 고조파 산술이 제거되어 이제 [173]소스로 배포됩니다.
  • 이펙트 프레임워크는 삭제되어 CodePlex를 [174]통해 소스로 배포되었습니다.
  • 메쉬 인터페이스 및 지오메트리 함수는 제거되었으며 이제 DirectXMesh 지오메트리 [175]처리 라이브러리의 CodePlex를 통해 소스로 배포됩니다.
  • 텍스처 함수는 삭제되어 DirectXTex 텍스처 처리 [176]라이브러리의 CodePlex를 통해 소스로 배포됩니다.
  • 일반 도우미는 삭제되어 DirectX 툴 키트(DirectX)의 CodePlex를 통해 소스로 배포되었습니다.TK)[177] 프로젝트입니다.
  • Isochart 텍스처 아틀라스는 삭제되어 UVAtlas 프로젝트에서 [178]CodePlex를 통해 소스로 배포되었습니다.

DXUT

DXUT(샘플 프레임워크라고도 함)는 Direct3D API 위에 구축된 레이어입니다.이 프레임워크는 프로그래머가 윈도 작성, 디바이스 작성, Windows 메시지 처리, 디바이스 이벤트 처리 등 일상적인 작업에 소비하는 시간을 단축하도록 설계되었습니다.DXUT는 Windows SDK 8.0에서 삭제되어 CodePlex를 [179]통해 소스로 배포되었습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Configuring Depth-Stencil Functionality". Microsoft.
  2. ^ "RenderStateManager.UseWBuffer". Microsoft.
  3. ^ "Texture Blending (Direct3D 9)". Microsoft.
  4. ^ "Geometry Blending (Direct3D 9)". Microsoft.
  5. ^ "HLSL". Microsoft.
  6. ^ "Effects (Direct3D 11)". Microsoft.
  7. ^ "DirectX Software Development Kit, October 2006". Microsoft. Archived from the original on November 2, 2011.
  8. ^ "Windows Advanced Rasterization Platform (WARP) Guide – WARP Architecture and Performance". MSDN.
  9. ^ "Q179113: How to Download and Install DirectX".
  10. ^ "Archived copy". www.falconfly.de. Archived from the original on November 10, 2006. Retrieved January 11, 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  11. ^ "Archived copy". www.microsoft.com. Archived from the original on July 29, 2015. Retrieved January 11, 2022.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  12. ^ "Qube Soft Management Team". qubesoft.com. April 4, 2017. Archived from the original on April 6, 2017. Retrieved April 5, 2017.
  13. ^ "What happened to DirectX 4?". msdn.com. January 22, 2004.
  14. ^ "Press Release-Microsoft Meltdown (February 1997)". Microsoft Corporation. February 18, 1997.
  15. ^ "Press Release-Microsoft Meltdown (July 1997)". Microsoft Corporation. July 22, 1997.
  16. ^ Ron Fosner. "Get Fast and Simple 3D Rendering with DrawPrimitive and DirectX 5.0". Microsoft Systems Journal.
  17. ^ "Direct3D 7 Immediate Mode Framework Programming 3: Multitexturing". gamedev.net. May 29, 2000. Archived from the original on August 5, 2011. Retrieved September 17, 2011.
  18. ^ "Microsoft Ships Final Release of DirectX 6.0". Microsoft. August 7, 1998.
  19. ^ "Microsoft Ships DirectX 6.1". Microsoft. February 3, 1999.
  20. ^ "Bill Gates April 1997 Talisman Update" (PDF). Microsoft. May 5, 1997. Archived from the original (PDF) on December 8, 2015. Retrieved October 31, 2015.
  21. ^ "DDS (DirectDraw Surface format)". MSDN.
  22. ^ "DirectX 7: [due] July 99". GameSpot. UK. March 1999. Archived from the original on May 8, 1999. Retrieved July 20, 2019.
  23. ^ "Microsoft Announces Release of DirectX 8.0". Microsoft. November 9, 2000. Retrieved January 7, 2015.
  24. ^ "Direct Action Feature: DirectX 8.0". GameSpot. UK. Archived from the original on February 23, 2001. Retrieved July 20, 2019.
  25. ^ "DirectX 8 Graphics and Video: A Fresh Start". gamedev.net. November 30, 2000. Archived from the original on June 4, 2007. Retrieved February 18, 2007.
  26. ^ "Direct3D 9 Graphics". MSDN. Retrieved September 30, 2014.
  27. ^ "Writing HLSL Shaders in Direct3D 9". MSDN. Retrieved September 30, 2014.
  28. ^ "HLSL in Direct3D 9.0". Microsoft. Archived from the original on August 27, 2010.
  29. ^ "Multiple Render Targets (Direct3D 9)". MSDN. Retrieved September 30, 2014.
  30. ^ "Multiple-element Textures (Direct3D 9)". MSDN. Retrieved September 30, 2014.
  31. ^ "Stencil Buffer Techniques (Direct3D 9)". MSDN. Retrieved September 30, 2014.
  32. ^ "Direct3D 9Ex Improvements". MSDN. Retrieved September 30, 2014.
  33. ^ "Graphics APIs in Windows". MSDN. August 2009.
  34. ^ a b "The role of the Windows Display Driver Model in the DWM". April 2, 2006.
  35. ^ "API Features (Direct3D 10)". MSDN. Retrieved September 30, 2014.
  36. ^ "DirectX Software Development Kit, February 2007". Microsoft. Archived from the original on September 3, 2012.
  37. ^ "Resource Types (Direct3D 10)". MSDN. Retrieved September 30, 2014.
  38. ^ "API Layers (Direct3D 10)". MSDN. Retrieved September 30, 2014.
  39. ^ "CNet News". Retrieved September 30, 2014.
  40. ^ "Common-Shader Core". Microsoft.
  41. ^ "Geometry Shader Features". Microsoft.
  42. ^ "Shader Stages". Microsoft.
  43. ^ "What Direct3D 10 is all about – Additional Improvements". Tom's Hardware. November 8, 2006.
  44. ^ "Direct3D 10.1 Features". MSDN. Retrieved September 30, 2014.
  45. ^ "Microsoft Presents DirectX 10.1 Details at SIGGRAPH". ExtremeTech. August 7, 2007.
  46. ^ "Direct3D 10.1 Features". MSDN.
  47. ^ a b "ID3D11Device::CheckMultisampleQualityLevels method". MSDN. Retrieved September 30, 2014.
  48. ^ a b c Chuck Walbourn (June 20, 2012). "Direct3D Feature Levels". Games for Windows and the DirectX SDK Blog.
  49. ^ "D3D10_FEATURE_LEVEL1 enumeration". MSDN. Retrieved November 22, 2009.
  50. ^ "Direct3D feature levels". MSDN. Retrieved September 30, 2014.
  51. ^ "Direct3D 11 Features". MSDN. Retrieved September 30, 2014.
  52. ^ a b c "Gamefest 2008 Presentations". Microsoft. Archived from the original on November 13, 2013.
  53. ^ a b "Nvision 08 Tech Presentations". Nvidia. Retrieved September 16, 2011.
  54. ^ "DirectX Software Development Kit, November 2008". Microsoft. November 7, 2008.
  55. ^ "AMD shows off world's first DirectX 11 GPU". Engadget. June 3, 2009.
  56. ^ a b "GameFest 2008: Introduction to the Direct3D 11 Graphics Pipeline". Microsoft. Slide 56. Archived from the original on January 28, 2013.
  57. ^ a b c "Direct3D 11 on Downlevel Hardware". MSDN. Retrieved November 18, 2012.
  58. ^ a b "Windows Driver Kit – Supporting Direct3D 11". MSDN. Retrieved June 13, 2009.
  59. ^ a b "Direct3D feature levels". MSDN. Retrieved July 2, 2012.
  60. ^ "Using ATI hardware tessellation in DX9". July 14, 2008.
  61. ^ "AMD DX9 Tessellation SDK". Archived from the original on November 8, 2010.
  62. ^ "Programming for Real-Time Tessellation on GPU" (PDF). Archived from the original (PDF) on July 27, 2011.
  63. ^ "OpenGL Tessellation Samples". Archived from the original on April 9, 2010.
  64. ^ "New Resource Types". MSDN. Retrieved September 30, 2014.
  65. ^ "Depth Bias". MSDN. Retrieved September 30, 2014.
  66. ^ "D3D11_RASTERIZER_DESC1 structure". MSDN. Retrieved September 30, 2014.
  67. ^ "Shader Model 5". MSDN. Retrieved September 30, 2014.
  68. ^ "Tessellation Overview". Microsoft.
  69. ^ "Tessellation Overview". MSDN. Retrieved September 30, 2014.
  70. ^ "Description of the Platform Update for Windows Server 2008 and the Platform Update for Windows Vista". Support.microsoft.com. October 2, 2012. Retrieved June 15, 2013.
  71. ^ "The Platform Update for Windows Vista – DirectX Developer Blog – Site Home – MSDN Blogs". Blogs.msdn.com. September 10, 2009. Archived from the original on April 8, 2014. Retrieved June 15, 2013.
  72. ^ "Direct3D 11.1 Features". MSDN. Retrieved September 30, 2014.
  73. ^ "D3D11_FEATURE_DATA_D3D11_OPTIONS structure". MSDN. Retrieved September 30, 2014.
  74. ^ "DirectX feature improvements in Windows 8". MSDN. Retrieved September 30, 2014.
  75. ^ "Direct3D 11.1 Features". MSDN. Retrieved September 13, 2009.
  76. ^ "DXGI 1.2 Improvements". MSDN. Retrieved September 30, 2014.
  77. ^ "WDDM 1.2 features". MSDN. Retrieved September 30, 2014.
  78. ^ a b c "Windows Display Driver Model Enhancements in Windows Developer Preview". MSDN. September 13, 2011.
  79. ^ "Scalar Types". Retrieved October 2, 2014.
  80. ^ "Intel's Haswell IGP to Feature DirectX 11.1, Increased Professional Application Support". AnandTech. August 5, 2011.
  81. ^ "DirectX Graphics – Platform Update for Windows 7". MSDN. November 14, 2012.
  82. ^ "DirectX 11.1 and Windows 7". Games for Windows and the DirectX SDK Blog. November 13, 2012.
  83. ^ "DirectX programming". MSDN. Archived from the original on October 31, 2013. Retrieved September 30, 2014.
  84. ^ "Direct3D 11.2 Features". MSDN. Retrieved September 30, 2014.
  85. ^ "D3D11_FEATURE_DATA_D3D11_OPTIONS1 structure". MSDN. Retrieved September 30, 2014.
  86. ^ a b "Windows 8.1 Feature Guide – DirectX programming". MSDN Library. June 26, 2013. Archived from the original on August 27, 2015. Retrieved June 27, 2013.
  87. ^ a b Bennett Sorbo (June 26, 2013). "What's New in Direct3D 11.2". Channel9 – BUILD 2013.
  88. ^ "DXGI 1.3 Improvements". MSDN Library. June 26, 2013.
  89. ^ "What's new for Windows 8.1 Preview display drivers (WDDM 1.3)". MSDN. Retrieved September 30, 2014.
  90. ^ "Archived copy". Archived from the original on March 4, 2016. Retrieved March 6, 2015.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  91. ^ "D3D11_TILED_RESOURCES_TIER enumeration". MSDN. Retrieved September 30, 2014.
  92. ^ Charles Hollemeersch, Matt Sandy (June 26, 2013). "Massive Virtual Textures for Games: Direct3D Tiled Resources". Channel9 – BUILD 2013.
  93. ^ "Direct3D 11.2 Features". MSDN Library. June 26, 2013.
  94. ^ "MSDN Blogs". MSDN. Retrieved September 30, 2014.
  95. ^ "D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT structure". MSDN. Retrieved September 30, 2014.
  96. ^ "Raising the Bar with Direct3D". Building Apps for Windows. October 14, 2013. Retrieved September 30, 2014.
  97. ^ "Microsoft officially turns down Mantle". October 16, 2013. Retrieved September 30, 2014.
  98. ^ Chris Tector의 http://channel9.msdn.com/Blogs/DirectX-Developer-Blog/DirectX-Evolving-Microsoft-s-Graphics-Platform 세그먼트(약 18분 후 시작)
  99. ^ a b "Rendering (Direct3D 12 Graphics) - Win32 apps".
  100. ^ a b Ryan Smith. "AnandTech – Microsoft Details Direct3D 11.3 & 12 New Rendering Features". Retrieved September 30, 2014.
  101. ^ Ryan Smith. "AnandTech – The NVIDIA GeForce GTX 980 Review: Maxwell Mark 2". Retrieved September 30, 2014. First and foremost among Maxwell 2's new features is the inclusion of full Direct3D 11.2/11.3 compatibility.
  102. ^ a b c "DirectX 11.3 New Features Outline – Tiled Resources – Typed UAV Loads". September 19, 2014. Retrieved September 30, 2014.
  103. ^ a b c "Shader Model 5.1 - Win32 apps".
  104. ^ "D3D11_CONSERVATIVE_RASTERIZATION_TIER enumeration". MSDN library. February 22, 2015. Retrieved February 22, 2015.
  105. ^ "Direct3D 11.3 Features". MSDN library. March 28, 2015. Retrieved March 28, 2015.
  106. ^ "Games for Windows and the DirectX SDK blog".
  107. ^ "DirectX 12 Low Level API – Analysis of What We Currently Know – Page 2 RedGamingTech". March 28, 2014. Retrieved September 30, 2014.
  108. ^ a b Ryan Smith. "AnandTech – Microsoft Announces DirectX 12: Low Level Graphics Programming Comes To DirectX". Retrieved September 30, 2014.
  109. ^ "GDC DirectX 12 Presentation (All Slides)". Imgur. Retrieved September 30, 2014.
  110. ^ "Direct3D 12 Overview Part 8: CPU Parallelism".
  111. ^ "Direct3D 12 Overview Part 1: 'Closer To The Metal'". Retrieved October 2, 2014.
  112. ^ https://channel9.msdn.com/Events/Build/2014/3-564의 첫 2분
  113. ^ "A closer look at DirectX 12 – The Tech Report – Page 3". March 31, 2014. Retrieved September 30, 2014.
  114. ^ Ryan Smith. "AnandTech – Microsoft Details Direct3D 11.3 & 12 New Rendering Features". Retrieved September 30, 2014.
  115. ^ "Archived copy". Archived from the original on April 30, 2018. Retrieved September 19, 2014.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  116. ^ "Meet the future of PC graphics: Microsoft reveals faster, console-like DirectX 12". PCWorld. March 20, 2014. Retrieved September 30, 2014.
  117. ^ "DirectX 12 will also add new features for next-gen GPUs". March 21, 2014. Retrieved September 30, 2014.
  118. ^ Kowaliski, Cyril (March 21, 2014). "DirectX 12 will also add new features for next-gen GPUs". The Tech Report. Retrieved April 1, 2014.
  119. ^ "Author's Blogs".
  120. ^ "Direct3D 12 Overview Part 7: Dynamic Heaps". Retrieved October 2, 2014.
  121. ^ "Multi-Adapter". Archived from the original on September 14, 2016. Retrieved August 3, 2016.
  122. ^ "Porting DirectX 12 games to Windows 7". August 21, 2019.
  123. ^ "DirectX-Specs".
  124. ^ "Microsoft.Direct3D.D3D12On7 1.1.0".
  125. ^ https://msdn.microsoft.com/en-us/library/mt733232(v=vs.85).aspx >
  126. ^ a b "Announcing new DirectX 12 features". DirectX Developer Blog. Retrieved February 24, 2018.
  127. ^ "Direct Machine Learning (DirectML)". Microsoft Docs. Retrieved June 28, 2020.
  128. ^ "Coming to DirectX 12— Mesh Shaders and Amplification Shaders: Reinventing the Geometry Pipeline". DirectX Developer Blog. Retrieved June 28, 2020.
  129. ^ "Coming to DirectX 12— Sampler Feedback: some useful once-hidden data, unlocked". DirectX Developer Blog. Retrieved November 4, 2019.
  130. ^ "DirectX Raytracing (DXR) Tier 1.1". DirectX Developer Blog. Retrieved November 6, 2019.
  131. ^ "Coming to DirectX 12: More control over memory allocation". DirectX Developer Blog. Retrieved November 11, 2019.
  132. ^ "Software Rasterizer for DirectX 9.0 SDK". Microsoft. August 1, 2005. Archived from the original on September 4, 2012.
  133. ^ "Direct3D Resources – Memory pool". Archived from the original on May 9, 2008.
  134. ^ "Graphics Pipeline". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  135. ^ "Input-Assembler Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  136. ^ "Vertex Shader Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  137. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs. Hull-Shader Stage. Retrieved October 19, 2021.
  138. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs. Tessellator Stage. Retrieved October 19, 2021.
  139. ^ "Tessellation Stages". Direct3D 11 Graphics. Microsoft Docs. Domain-Shader Stage. Retrieved October 19, 2021.
  140. ^ "Geometry Shader Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  141. ^ "Stream-Output Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  142. ^ "RenderStates". DirectX 9.0 for Managed Code. Microsoft Docs. Retrieved October 19, 2021.
  143. ^ "Rasterizer Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  144. ^ "Pixel Shader Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  145. ^ "Output-Merger Stage". Direct3D 11 Graphics. Microsoft Docs. Retrieved October 19, 2021.
  146. ^ a b "Direct3D 11.1 Features - Win32 apps".
  147. ^ "D3D11_FORMAT_SUPPORT enumeration". MSDN. Retrieved June 16, 2015.
  148. ^ "D3D11_FORMAT_SUPPORT2 enumeration". MSDN. Retrieved June 16, 2015.
  149. ^ "Hardware Tiers - Win32 apps".
  150. ^ "D3D12_FEATURE - Win32 apps".
  151. ^ "Introduction to a Resource in Direct3D 11 - Win32 apps".
  152. ^ Wolfgang Engel. "Introduction to Resource Binding in Microsoft DirectX 12".
  153. ^ GVCS005 - Microsoft Direct3D 12 : 2015년 4월 4일 Wayback Machine에서 아카이브된 새로운 API 상세인텔 최적화
  154. ^ 빌드 2015: 고도의 DirectX12 그래픽스와 퍼포먼스
  155. ^ http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx
  156. ^ Direct3D Mobile, Microsoft, 2010년 1월 6일
  157. ^ "The Wine team is proud to announce that the stable release Wine 4.0". WineHQ. Retrieved April 3, 2019.
  158. ^ "WineD3DOnWindows – The Official Wine Wiki". Wiki.winehq.org. June 2, 2013. Archived from the original on January 17, 2009. Retrieved June 15, 2013.
  159. ^ WineHQ - vkd3d, Direct3D 12, April 3, 2019, retrieved June 30, 2020
  160. ^ "Vkd3d 1.0 Released". WineHQ. Retrieved April 3, 2019.
  161. ^ Michael Larabel (August 23, 2019). "Valve's Proton Offers Branch With VKD3D For Direct3D 12 Over Vulkan". Phoronix. Retrieved October 7, 2019.
  162. ^ Jason Evangelho (March 1, 2019). "Windows 10 Versus Linux: 6 Steam Games Benchmarked On Intel's Hades Canyon NUC". Forbes. Retrieved October 7, 2019.
  163. ^ Rebohle, Philip (April 3, 2019), Vulkan-based D3D11 and D3D10 implementation for Linux / Wine: doitsujin/dxvk, retrieved April 3, 2019
  164. ^ Compatibility tool for Steam Play based on Wine and additional components: ValveSoftware/Proton, Valve, April 3, 2019, retrieved April 3, 2019
  165. ^ "D9VK GitHub repository". GitHub. Retrieved October 6, 2019.
  166. ^ Michael Larabel (July 30, 2019). "Proton Re-Based To Wine 4.11, Adds D9VK Direct3D 9, Better CPU Utilization & DXVK 1.3". Phoronix. Retrieved October 7, 2019.
  167. ^ "Implement Direct3D9 Frontend by Joshua-Ashton · Pull Request #1275 · doitsujin/dxvk". GitHub. Retrieved December 17, 2019.
  168. ^ Build Gallium Nine support on top of an existing WINE installation: iXit/wine-nine-standalone, iXit Group, April 3, 2019, retrieved April 3, 2019
  169. ^ Joey Sneddon (October 10, 2018). "Ubuntu 18.10 Adds Gallium Nine Support, Latest Mesa 18.2.2". OMG! Ubuntu!. Retrieved October 7, 2019.
  170. ^ "D3DX 11 Reference". MSDN. Retrieved September 30, 2014.
  171. ^ "Living without D3DX". MSDN.
  172. ^ "Effect-Compiler Tool". Microsoft.
  173. ^ "Spherical Harmonics Math". msdn.com. Retrieved November 23, 2014.
  174. ^ "Effects 11". CodePlex. Retrieved September 30, 2014.
  175. ^ "DirectXMesh geometry processing library". CodePlex. Retrieved September 30, 2014.
  176. ^ "DirectXTex texture processing library". CodePlex. Retrieved September 30, 2014.
  177. ^ "DirectX Tool Kit". CodePlex. Retrieved September 30, 2014.
  178. ^ "UVAtrlas". CodePlex. Retrieved November 23, 2014.
  179. ^ "DXUT for Win32 Desktop Update". MSDN.

외부 링크