Upload
isi
View
76
Download
3
Embed Size (px)
DESCRIPTION
Direct3D 10 API 개요. 원저 : Jack Hoxley 발표 : 최지호 ( [email protected] ) 2005.12.18 KASA( http://www.dev3d.net ). DirectX 10 에 대하여. 이전 버전 (DirectX 9) 과 상당 부분 유사 . 완전히 다시 설계 . 윈도우 비스타 전용 . XP 에서 실행되지 않음. VDDM. Vista Display Driver Model. 비스타는 이전 운영체제보다 그래픽 기능과 이펙트에 신경을 많이 씀 . - PowerPoint PPT Presentation
Citation preview
Direct3D 10 API 개요
원저 : Jack Hoxley발표 : 최지호 ([email protected])
2005.12.18
KASA(http://www.dev3d.net)
KASA 2
DirectX 10 에 대하여• 이전 버전 (DirectX 9) 과 상당 부분 유사 .• 완전히 다시 설계 .• 윈도우 비스타 전용 .• XP 에서 실행되지 않음 .
KASA 3
VDDM
• Vista Display Driver Model.• 비스타는 이전 운영체제보다 그래픽
기능과 이펙트에 신경을 많이 씀 .• “Aero Glass” GUI 스킨이 그 예 .
KASA 4
GPU
• 비스타에서 , GPU 는 여러 애플리케이션이 공유하는 자원 .
• VDDM 은 명령 스케쥴링 및 번역을 “ User Mode” 로 옮기고 , “Kernel Mode” 에는 핵심 기능만 남김 .– 하드웨어나 드라이버가 죽어도 운영체제는
죽지 않고 , 드라이버 / 하드웨어만 리셋 .
KASA 5
GPU 공유• GPU 를 공유한다는 것이 VDDM 의 핵심 .• 운영체제에 의한 가상 비디오 메모리 관리 .• 쓰레드간 리소스 공유가 가능 .• “ 디바이스 손실”이 없어짐 .
– 애플리케이션에서 처리할 필요가 없어짐 .• “ 디바이스 제거됨” 상태가 생김 .
– 노트북이 도킹 스테이션에 연결된 경우 .– 드라이버 업그레이드 시 .
KASA 6
DXGI
• DirectX Graphics Infrastructure.• Direct3D 10.1, 10.2, 11, 12 등이 새로
나와도 변하지 않는 인터페이스 .• 기본적인 저수준의 리소스와
오퍼레이션들이 이에 해당 .
KASA 7
프로그래머블 파이프라인
• 고정 함수 파이프라인은 사라짐 .• 새로운 프로그래머블 유닛 :
– Vertex Shaders(VS)– Geometry Shaders(GS)– Pixel Shaders(PS)
• 모두 “셰이더 모델 4.0”.• Geometry shader
– 완전히 새로 추가된 셰이더 유닛 .– 지오메트리를 추가하는 것이 가능 .
KASA 8
Stream Output(SO)
• 일반적인 그래픽 파이프라인은 단방향 .• 스트림 출력 (SO) 을 통해 GS 의 결과를
다시 Input Assembler 로 보낼 수 있음 .• GS 의 결과를 IA 로 보내는 동시에
렌더링하는 것도 가능 .• SO 를 통해 CPU 의 간섭을 최소화시킬 수
있음 ( 병렬화 ).• 예 . 첫번째 패스에는 스키닝을 , 두번째
패스에는 셰도우 볼륨 익스트루션을 .
KASA 9
Input Assembler(IA)
• 고정함수 .• 인덱스 / 버텍스 스트림을 사용해 VS/GS
의 실제 지오메트리 데이터를 구성 .• 프리미티브 타입 ( 선 리스트 , 삼각형
스트립 , 등등 ) 으로 실제 삼각형을 구성 .• 지오메트리 인스턴싱 및 스트림 출력
데이터 관련 .• 버텍스 ID, 프리미티브 ID 를 생성 .
KASA 10
Output Merger(OM)
• 고정함수 .• 파이프라인의 마지막 .• 모든 결과를 모아 스크린의 최종 픽셀로
통합시키는 작업 수행 .• 각 렌더타겟의 스텐실 값 , 깊이 값 등을
다양한 블렌딩 함수를 사용하여 결정 .
KASA 11
Direct3D 10 파이프라인
KASA 12
Primitive ID
• IA 가 설정하는 속성 (GS 도 삼각형 레벨에서는 가능 ).
•재질 시스템이 GPU 에 의해서 직접적으로 선택 가능 .
• IA 에 의해 지정된 Primitive ID 를 통해 GS 혹은 PS 에서 어떻게 렌더링 시킬지 결정 .
• 애플리케이션 단에서의 재질 기반 소팅이 필요없게 될지도…
KASA 13
Views
• 뷰 (Views) 를 사용한 통합 리소스 모델 .• 다른 스테이지 (또는 같은 스테이지에서도 ) 에서
동일한 리소스를 다르게 해석할 수 있음 .• 복잡한 리소스들을 다소 융통성 있게 만듦 .• 예 .
– 입방체 맵을 6 개의 렌더타겟들로 해석하는 동시에 단 패스 입방체 맵 렌더링을 수행 .
– 다른 밉맵 레벨들들 입력 / 출력으로 사용하여 , 다운샘플링 알고리즘의 “핑퐁”현상을 막음 .
KASA 14
Direct3D 10 애플리케이션 개발• 새로운 API 를 사용해야 하지만 , 핵심은 변하지
않음 .• 새로운 운영체제 , 드라이버 모델이기 때문에 변수가
적음 .• 테스트해야 할 하드웨어 개수도 적음 .• IHV 간에 기본 기능은 동일하기 때문에 , 성능과
품질로 구분하는 수 밖에 없음 .• 특정 기능이 벤더에 따라 너무 느리거나 하다면 ,
벤더 의존적인 다중 코드 패스가 여전히 존재할 가능성이 큼 .
KASA 15
생성시 리소스 유효성 체크• 생성시에 리소스의 유효성을 체크함 ( 성능을
위해서 ).• 사용할 때마다 매번 체크하는 비용을 줄임 .• 생성시 한번만 체크하면 그 다음부터는
안심하고 사용할 수 있으므로 간결하고 간단한 코딩이 가능 .
KASA 16
렌더 스테이트
• 다수의 변경 불가능한 상태 객체 .• 각 객체는 해당 파이프라인에 관계된 렌더
상태의 그룹을 구성 .• 예 .
– D3D10_DEPTH_STENCIL_DESC 객체는 깊이 /스텐실 버퍼링에 관련된 렌더 상태들을 보관 .
• 관리하기 편해짐 .– 이펙트에 사용될 여러 상태 객체들을 한번에
생성 .
KASA 17
HLSL( 이펙트 프레임웍 )
• 어셈블리 셰이더가 ( 거의 ) 사라짐 .• 어셈블리는 디버깅 용도로만 사용 가능 .•컴파일러가 코어 런타임에 포함됨 .
– 예전에는 D3DX 에 있었음 .• HLSL의 기본기능은 변하지 않았지만 ,
많은 새로운 명령과 함수들이 추가됨 .• SAS 도 아직 존재함 .• 여러 상수들을 그룹화시킨 상수 버퍼 사용 .
KASA 18
HLSL( 완전한 정수 연산 기능 )
• 정수 명령과 연산이 가능 .– 논리 연산자와 비트 연산자 .
• 예 . 비트 연산을 사용한 순수 바이너리 데이터 접근이 가능하므로 압축된 지오메트리를 GPU 에서 사용 가능 .
KASA 19
HLSL( 기타 )
• 명령어 개수가 무제한 .• 루프 및 실행 시간은 비스타 드라이버 모델에 의해
관리 .– GPU 가 멈춰 있다면 리셋을 시켜야 하므로 .
• 기존 API 보다는 새로운 API 를 사용하면 이점 있음 .
• 재설계한 이펙트 파일은 기존보다 적은 메모리 사용 .
• 이펙트 파일 내부 ( 상수 / 인자 , 테크닉 등 ) 를 액세스하는 인터페이스가 경량화됨 .
• 이펙트 풀 사용을 권장 .
KASA 20
앞으로 할일• 고정 함수에 의존하지 말자 .• 어셈블리 셰이더를 사용하지 말자 .• 새로운 파이프라인 값 (VertexID, PrimitiveID, InstanceID)
들을 어떻게 사용할지 (창의적으로 ) 궁리하자 .• GS 에 너무 큰 기대는 금물 .
– 베이저 패치나 압축 메시 같은 용도로 생각하는 것은 무리 .– 초기 하드웨어는 GS 에 대해 원하는 성능을 내지 못할 가능성이 큼 .
• 윈도우 XP 와 DirectX 9 이 갑자기 사라지는 것은 아님 .– 호환성을 위해 , DirectX9 의 업데이트이며 , 비스타의 새
드라이버 모델을 사용할 수 있는 “ DirectX 9.L” 를 고려 .
KASA 21
참고링크• 원문 :
– http://www.gamedev.net/reference/programming/features/d3d10overview/default.asp
• PDC 2005 Presentations: DirectX and Windows Vista– http://msdn.microsoft.com/directx/archiv
es/pdc2005/