Direct3d 10 api
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

Direct3D 10 API 개요 PowerPoint PPT Presentation


  • 111 Views
  • Uploaded on
  • Presentation posted in: General

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. 비스타는 이전 운영체제보다 그래픽 기능과 이펙트에 신경을 많이 씀 .

Download Presentation

Direct3D 10 API 개요

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Direct3d 10 api

Direct3D 10 API 개요

원저: Jack Hoxley

발표: 최지호([email protected])

2005.12.18

KASA(http://www.dev3d.net)


Directx 10

DirectX 10에 대하여

  • 이전 버전(DirectX 9)과 상당 부분 유사.

  • 완전히 다시 설계.

  • 윈도우 비스타 전용.

  • XP에서 실행되지 않음.

KASA


Direct3d 10 api

VDDM

  • Vista Display Driver Model.

  • 비스타는 이전 운영체제보다 그래픽 기능과 이펙트에 신경을 많이 씀.

  • “Aero Glass” GUI 스킨이 그 예.

KASA


Direct3d 10 api

GPU

  • 비스타에서, GPU는 여러 애플리케이션이 공유하는 자원.

  • VDDM은 명령 스케쥴링 및 번역을 “User Mode”로 옮기고, “Kernel Mode”에는 핵심 기능만 남김.

    • 하드웨어나 드라이버가 죽어도 운영체제는 죽지 않고, 드라이버/하드웨어만 리셋.

KASA


Direct3d 10 api

GPU 공유

  • GPU를 공유한다는 것이 VDDM의 핵심.

  • 운영체제에 의한 가상 비디오 메모리 관리.

  • 쓰레드간 리소스 공유가 가능.

  • “디바이스 손실”이 없어짐.

    • 애플리케이션에서 처리할 필요가 없어짐.

  • “디바이스 제거됨” 상태가 생김.

    • 노트북이 도킹 스테이션에 연결된 경우.

    • 드라이버 업그레이드 시.

KASA


Direct3d 10 api

DXGI

  • DirectX Graphics Infrastructure.

  • Direct3D 10.1, 10.2, 11, 12 등이 새로 나와도 변하지 않는 인터페이스.

  • 기본적인 저수준의 리소스와 오퍼레이션들이 이에 해당.

KASA


Direct3d 10 api

프로그래머블 파이프라인

  • 고정 함수 파이프라인은 사라짐.

  • 새로운 프로그래머블 유닛:

    • Vertex Shaders(VS)

    • Geometry Shaders(GS)

    • Pixel Shaders(PS)

  • 모두 “셰이더 모델 4.0”.

  • Geometry shader

    • 완전히 새로 추가된 셰이더 유닛.

    • 지오메트리를 추가하는 것이 가능.

KASA


Stream output so

Stream Output(SO)

  • 일반적인 그래픽 파이프라인은 단방향.

  • 스트림 출력(SO)을 통해 GS의 결과를 다시 Input Assembler로 보낼 수 있음.

  • GS의 결과를 IA로 보내는 동시에 렌더링하는 것도 가능.

  • SO를 통해 CPU의 간섭을 최소화시킬 수 있음(병렬화).

  • 예. 첫번째 패스에는 스키닝을, 두번째 패스에는 셰도우 볼륨 익스트루션을.

KASA


Input assembler ia

Input Assembler(IA)

  • 고정함수.

  • 인덱스/버텍스 스트림을 사용해 VS/GS의 실제 지오메트리 데이터를 구성.

  • 프리미티브 타입(선 리스트, 삼각형 스트립, 등등)으로 실제 삼각형을 구성.

  • 지오메트리 인스턴싱 및 스트림 출력 데이터 관련.

  • 버텍스 ID, 프리미티브 ID를 생성.

KASA


Output merger om

Output Merger(OM)

  • 고정함수.

  • 파이프라인의 마지막.

  • 모든 결과를 모아 스크린의 최종 픽셀로 통합시키는 작업 수행.

  • 각 렌더타겟의 스텐실 값, 깊이 값 등을 다양한 블렌딩 함수를 사용하여 결정.

KASA


Direct3d 10

Direct3D 10 파이프라인

KASA


Primitive id

Primitive ID

  • IA가 설정하는 속성(GS도 삼각형 레벨에서는 가능).

  • 재질 시스템이 GPU에 의해서 직접적으로 선택 가능.

  • IA에 의해 지정된 Primitive ID를 통해 GS 혹은 PS에서 어떻게 렌더링 시킬지 결정.

  • 애플리케이션 단에서의 재질 기반 소팅이 필요없게 될지도…

KASA


Views

Views

  • 뷰(Views)를 사용한 통합 리소스 모델.

  • 다른 스테이지(또는 같은 스테이지에서도)에서 동일한 리소스를 다르게 해석할 수 있음.

  • 복잡한 리소스들을 다소 융통성 있게 만듦.

  • 예.

    • 입방체 맵을 6개의 렌더타겟들로 해석하는 동시에 단 패스 입방체 맵 렌더링을 수행.

    • 다른 밉맵 레벨들들 입력/출력으로 사용하여, 다운샘플링 알고리즘의 “핑퐁”현상을 막음.

KASA


Direct3d 101

Direct3D 10 애플리케이션 개발

  • 새로운 API를 사용해야 하지만, 핵심은 변하지 않음.

  • 새로운 운영체제, 드라이버 모델이기 때문에 변수가 적음.

  • 테스트해야 할 하드웨어 개수도 적음.

  • IHV간에 기본 기능은 동일하기 때문에, 성능과 품질로 구분하는 수 밖에 없음.

  • 특정 기능이 벤더에 따라 너무 느리거나 하다면, 벤더 의존적인 다중 코드 패스가 여전히 존재할 가능성이 큼.

KASA


Direct3d 10 api

생성시 리소스 유효성 체크

  • 생성시에 리소스의 유효성을 체크함(성능을 위해서).

  • 사용할 때마다 매번 체크하는 비용을 줄임.

  • 생성시 한번만 체크하면 그 다음부터는 안심하고 사용할 수 있으므로 간결하고 간단한 코딩이 가능.

KASA


Direct3d 10 api

렌더 스테이트

  • 다수의 변경 불가능한 상태 객체.

  • 각 객체는 해당 파이프라인에 관계된 렌더 상태의 그룹을 구성.

  • 예.

    • D3D10_DEPTH_STENCIL_DESC 객체는 깊이/스텐실 버퍼링에 관련된 렌더 상태들을 보관.

  • 관리하기 편해짐.

    • 이펙트에 사용될 여러 상태 객체들을 한번에 생성.

KASA


Direct3d 10 api

HLSL(이펙트 프레임웍)

  • 어셈블리 셰이더가 (거의) 사라짐.

  • 어셈블리는 디버깅 용도로만 사용 가능.

  • 컴파일러가 코어 런타임에 포함됨.

    • 예전에는 D3DX에 있었음.

  • HLSL의 기본기능은 변하지 않았지만, 많은 새로운 명령과 함수들이 추가됨.

  • SAS 도 아직 존재함.

  • 여러 상수들을 그룹화시킨 상수 버퍼 사용.

KASA


Direct3d 10 api

HLSL(완전한 정수 연산 기능)

  • 정수 명령과 연산이 가능.

    • 논리 연산자와 비트 연산자.

  • 예. 비트 연산을 사용한 순수 바이너리 데이터 접근이 가능하므로 압축된 지오메트리를 GPU에서 사용 가능.

KASA


Direct3d 10 api

HLSL(기타)

  • 명령어 개수가 무제한.

  • 루프 및 실행 시간은 비스타 드라이버 모델에 의해 관리.

    • GPU가 멈춰 있다면 리셋을 시켜야 하므로.

  • 기존 API보다는 새로운 API를 사용하면 이점 있음.

  • 재설계한 이펙트 파일은 기존보다 적은 메모리 사용.

  • 이펙트 파일 내부(상수/인자, 테크닉 등)를 액세스하는 인터페이스가 경량화됨.

  • 이펙트 풀 사용을 권장.

KASA


Direct3d 10 api

앞으로 할일

  • 고정 함수에 의존하지 말자.

  • 어셈블리 셰이더를 사용하지 말자.

  • 새로운 파이프라인 값(VertexID, PrimitiveID, InstanceID)들을 어떻게 사용할지 (창의적으로) 궁리하자.

  • GS에 너무 큰 기대는 금물.

    • 베이저 패치나 압축 메시 같은 용도로 생각하는 것은 무리.

    • 초기 하드웨어는 GS에 대해 원하는 성능을 내지 못할 가능성이 큼.

  • 윈도우XP와 DirectX 9이 갑자기 사라지는 것은 아님.

    • 호환성을 위해, DirectX9의 업데이트이며, 비스타의 새 드라이버 모델을 사용할 수 있는 “DirectX 9.L”를 고려.

KASA


Direct3d 10 api

참고링크

  • 원문:

    • http://www.gamedev.net/reference/programming/features/d3d10overview/default.asp

  • PDC 2005 Presentations: DirectX and Windows Vista

    • http://msdn.microsoft.com/directx/archives/pdc2005/

KASA


  • Login