Library 썸네일형 리스트형 A Rough D3D10 Initialization Sketch D3D10을 사용하여 화면에 무엇을 나타내고자 한다면, 다음과 같은 최소의 과정을 거쳐야 한다. D3D10 이후로는, 각 스테이지에 바인딩되는 뷰를 통해 해당 스테이지에 접근할 수 있다. 또, D3D9은 버텍스 버퍼, 인덱스 버퍼를 각각의 함수를 통해 생성할 수 있었는데, D3D10은 각각의 버퍼들을 단일한 버퍼 생성 함수와 버퍼의 특성을 기술하는 디스크립터를 통해 생성하도록 바뀌었다. 또, 고정 기능 파이프라인의 하드웨어 T&L 기능이 완전히 제거되었기 때문에, 이들 기능을 사용하고자 한다면 직접 쉐이더 코드를 작성해주어야 한다. 또, 과거 FVF 포맷으로 이들을 버텍스 속성을 지정했던 것과 달리, D3D10에서는 IA 스테이지(Input Assembly) 단계에서 버텍스를 인식할 수 있도록 입력 형식.. 더보기 Varying Shader Inputs and Semantics (HLSL in Direct3D 9) 가변 입력값(varying input) 파라미터들은, 반드시 시맨틱(semantic)으로 선언되거나, 실행 시점에서 상수임을 알려주는 고정값 입력(uniform input)으로 선언되어야 한다. 만약, 최상위 쉐이더 레벨 입력이 둘 중 하나로 선언되지 않는다면 쉐이더 코드는 컴파일되지 않는다. 입력 시맨틱은, 주어진 입력을 전 단계의 그래픽스 파이프라인 출력과 연결하기 위한 이름이다. 예를 들어, 버텍스 쉐이더에 의해 사용되는 입력 시맨틱 POSITION0은, 버텍스 버퍼로부터의 위치 데이터가 어디로 연결되어야 하는지 정의하기 위한 것이다. 픽셀 쉐이더와 버텍스 쉐이더는 각각의 쉐이더 유닛으로 입력되는 다른 그래픽스 파이프라인 때문에, 서로 다른 입력 시맨틱을 가진다. 버텍스 쉐이더의 입력 시맨틱은 버텍.. 더보기 Uniform Shader Inputs (HLSL in Direct3D 9) 버텍스 쉐이더와 픽셀 쉐이더는 2 종류의 입력을 받아들이는데, 그때 그때 상황에 맞는 입력(varying inputs)과, 상황에 상관없이 고정적인 값(uniform inputs)이 그것이다. 전자는 쉐이더의 각 실행 시점에서의 고유한 값이며. 버텍스 쉐이더에 있어서 이런 값들은 버텍스 스트림에서 넘어온 것이다. 고정적인 입력값들은 복수의 쉐이더 실행에서도 변하지 않는 상수이다. 어셈블리 쉐이더 모델과 비슷하게, 이런 고정 값들은 상수 레지스터(constant register)에 정의되며, 변하는 값들은 v, t 레지스터에 정의된다. 고정적 입력값은 두 가지 방식으로 정의될 수 있는데, 가장 일반적인 방법은 전역 변수를 선언하고 그것을 쉐이더 코드 내부에서 사용하는 것이다. 쉐이더 내부에서의 이들 전역 .. 더보기 Deprecated Features in Direct3D 10 Direct3D 10(D3D10)에서 삭제된 주요한 기능들은 다음과 같다. 1. D3D10은 더 이상 고정 기능 파이프라인의 하드웨어 T&L을 지원하지 않는다. 이를 하고 싶다면 직접 쉐이더 코드를 작성해야 한다. 2. D3D10은 더 이상 고정 기능 파이프라인의 텍스처 블렌더를 지원하지 않는다. 3. D3D10은 새로운 래스터라이즈화 규칙를 구현했으며, 이것은 Direct3D 9.0에서 구현되었던 GDI 규칙보다 더 간단하고 깔끔하다. 여기에 대한 완전한 정보는 http://msdn.microsoft.com/en-us/library/ee415655(VS.85).aspx에서 찾아볼 수 있다. 더보기 Direct3D 10 Rendering Pipeline Diriect3D 10(D3D10)의 렌더링 파이프라인은 Direct3D 9.0(D3D9)과 매우 다르다. D3D9과 구별되는 외형상의 가장 커다란 특징이라면, 디스플레이 어댑터, 출력기기(모니터)와 같은 하드웨어 인프라를 다루는 부분을 DXGI(DirectX Graphics Infrastructure)로 완전히 독립시켰다는 것이다. DXGI 이전에는 Direct3D가 이런 하부 구조까지 책임지고 있었기 때문에, 코드를 마이그레이션 하는 경우 실제 이식 작업과 상관없는 이런 부분까지 손 대야 하는 불편함이 있었다. DXGI는 어댑터, 백버퍼(스왑체인), 출력 기기에 대한 정보를 Direct3D와 별도로 관리한다. 또, D3D9에서는 출력으로 지정된 윈도우 핸들을 실행 도중 바꿀 수 있었는데, DXGI는 .. 더보기 Amdahl's Law 이상적인 병렬 처리에서는, n-way 만큼 처리 능력을 향상시켰다고 할 때 n 배의 성능 향상 효과가 있어야 한다. 하지만, 이런 선형적인 성능 향상은 현실 세계에서는 절대로 불가능하다. 왜냐하면, 병렬 처리가 필요한 계산 문제에서, 여기에 참여하는 각 구성 요소들의 통신과 협조 비용이 존재하기 때문이다. 즉, 각 작업량이 모두 동일하지 않을 수도 있으며, 작업들 사이에서 의존성 관계가 생길 수 있기 때문에 이를 중재하지 않고서는 병렬화가 불가능하다. 이런 종류의 분석 결과를 단적으로 말해주는 것이 암달의 법칙(Amdahl's Law)이다. 암달의 법칙은 어떤 작업의 속도를 향상시킬 수 있는 정도는, 성능 향상이 적용되지 않는 부분에 의해 제한된다는 보여준다. 작업의 속도 향상 정도 S는, 하나의 프로세.. 더보기 파이프라인(Pipeline) 파이프라인이란 하나의 프로세스를 서로 다른 기능을 가진 여러 개의 서브 프로세스(subprocess)로 나누어 각 서브 프로세스가 동시에 서로 다른 데이터를 취급하도록 하는 기법이다. 각 세그먼트(segment)에서 수행된 연산 결과는 다음 세그먼트로 연속적으로 넘어가게 되어 데이터가 마지막 세그먼트를 통과하면 최종적인 연산 결과를 얻게 된다. 이런 식으로 하나의 진행에서 연산을 중복시키는 것은 각 세그먼트마다 레지스터를 두는 것으로 가능하다. 이 레지스터들은 각 세그먼트마다의 연산 결과를 보관함으로써 여러 개의 데이터에 대한 연산의 중간 결과를 보관하는 역할을 한다. 가장 간단한 파이프라인의 구조는 각 세그먼트마다 그에 해당하는 연산을 수행하는 조합 회로를 두며, 그 출력에 레지스터를 연결하는 것이다... 더보기 배열 프로세서(Array Processor) 배열 프로세서(array processor)는 대규모의 데이터 배열에 대한 계산을 수행하는 프로세서이다. 부가 배열 프로세서(attached array processor)는 범용 컴퓨터에 부착하는 추가 프로세서로, 특별한 수치 계산 작업에 대한 컴퓨터의 성능을 향상시키기 위해 사용된다. SIMD 배열 프로세서(SIMD array processor)는 단일 명령어 / 다중 데이터 구조를 가진 프로세서이며, 보통의 명령어에 대한 다중 기능 장치를 사용하여 벡터 명령어를 처리한다. 즉 두 형태 모두 벡터를 처리하는 배열 프로세서지만 내부적인 구조가 다르다. 부가 배열 프로세서는 기존의 호스트 컴퓨터에 대한 주변 장치로서 설계된 것으로, 복잡한 과학 응용에 대해 벡터 처리 능력을 제공하여 컴퓨터의 성능을 향상시.. 더보기 병렬 처리(Parallel Processing) 병렬 처리(parallel processing)는 컴퓨터 시스템의 계산 속도 향상을 목적으로 하여 동시 데이터 처리 기능을 제공하는 광범위한 개념의 기술을 의미한다. 예를 들어 ALU에서 어떤 명령어가 실행되고 있을 때 다음 명령어를 메모리에서 읽어오거나, ALU에서 어떤 명령어가 실행되고 있을 때 다음 명령어를 메모리에서 읽어오거나, ALU를 두 개 이상 두고서 동시에 두 개 이상의 명령어를 실행하는 시스템이 있다. 더 나아가 한 시스템에 병행적으로 동작하는 두 개 이상의 프로세서를 둘 수도 있다. 병렬 처리의 목적은 이와 같이 컴퓨터의 처리 속도를 향상시키고, 이와 함께 처리율(throughput)도 증가시키는 것이다. 병렬 처리를 구현하기 위해서는 추가의 하드웨어가 필요하고, 따라서 시스템의 비용이.. 더보기 시점 좌표계를 통한 자유로운 카메라 구현 모델뷰 변환(modelview transformation)은 사실 같은 변환이라고 할 수 있다. 그러나, 임의의 공간에서 물체에 변환을 가하는 모델 변환과, 이를 관찰하는 카메라의 입장에서의 뷰 변환을 제대로 이해하고 있지 않다면, 자유롭게 시점 변환을 할 수 있는 카메라를 구현하는데 어려움을 겪을 것이다. OpenGL이나 DirectX에서 제공하고 있는 gluLookAt, D3DXMatrixLookAtLH와 같은 함수는 간단하게 카메라의 위치, 바라보는 방향, 그리고 업벡터만을 지정하는 것으로 뷰행렬을 계산해주지만, 보통 이것보다 더 다양한 시점이 필요하다. 이런 시점을 지원하는 카메라를 구현하기 위해서는, 시점 좌표계에 대한 이해가 필요하다. 현재 임의의 공간의 물체들은 모델 변환이 적용되어 있는 상.. 더보기 이전 1 ··· 5 6 7 8 9 10 11 ··· 35 다음