||1NVIDIA는 지포스 8 시리즈에서 다이렉트 X 10을 사용하는 데모인 Cascades(관련 정보는 이곳을 참조하시길 http://gigglehd.com/bbs/view.php?id=hdnews&no=1196)을 공개한바 있습니다.

그러나 그것 외에도 NVIDIA는 지포스 8 기반의 다이렉트 X 10 SDK(Software Development Kit, 소프트웨어 개발 키트) 코드 샘플을 공개하여, 다이렉트 X 10을 이용한 실제 사용 사례들을 분야별로 보여주고 있습니다.



이 글은 www.pcpop.com에서 이러한 코드 셈플들의 간단한 실행 스크린샷과 설명을 첨부한 것을 기글하드웨어에서 번역/편집한 것입니다.



다이렉트 3D SDK 10 코드 셈플의 용량은 256MB이며 20개의 다이렉트 X 10 모델들이 포함되어 있습니다. 다운로드를 받고 싶으시다면 아래 주소를 참조하시길.
http://developer.download.nvidia.com/SDK/10/direct3d/NVIDIA_SDK10_Direct3D_10.10.0328.1330.exe

당연히 윈도우즈 비스타와 지포스 8800(앞으로 나올 8600이나 8500에서도 지원할 것으로 보입니다)이 필요합니다.



그럼 실행해 보도록 하겠습니다.



보시는 것처럼 20여개의 다이렉트 X 10 데모들이 있습니다.



프로그램의 실행 화면입니다. 흡사 웹페이지를 보는 것처럼 간결하게 구성되어 있습니다.



픽셀 쉐이더는 점을, 버텍스 쉐이더는 버텍스라 불리우는 다각형의 꼭지점을, 그리고 다이렉트 X 10에서 추가된 지오메트리 쉐이더는 기하학적인 폴리곤 연산을 담당하게 됩니다. 지오메트리 쉐이더는 버텍스의 데이터를 기반으로 하여 기하학적인 도형을 만들어내고, 점, 선, 삼각형(3D의 제일 기본 도형이 삼각형입니다)등의 기본 구조를 서로 연결하여 새로운 다각형을 만들어내어, 더 빠르게 최종 결과물을 다른 쉐이더나 메모리에 보낼 수 있으며, 이 과정에서 CPU를 사용하지 않습니다.



지오메트리 쉐이더의 제일 중요한 작업은 점을 연결하여 선을 만드는 것입니다. 따라서 지오메트리 쉐이더는 작고 가느다란 선을 그리는데 적합하며, 이는 곧 동물의 털이라던가 작은 풀 등을 랜더링하기에 알맞은 기능이기도 합니다.

이 고양이가 바로 지오메트리 쉐이더를 이용해 털을 그려낸 것입니다. 광원이라던가 털의 길이 등을 조절하여 실시간으로 변하는 모습을 볼 수 있습니다.



다이렉트 X 9.0c API의 FP16(16비트 부동 소수점) HDR은 사실상 지금 표준 규격이 되었습니다만, MSAA에 속해있는 버퍼 구역을 점유하기 때문에 HDR과 AA를 같이 사용할 수 없게 되었습니다. 다이렉트 X 10 API에서는 2가지 새로운 32비트 HDR 모드를 도입하였으며, 이 새로운 포멧에서는 텍스처가 원래 사용해야 하는 같은 크기의 메모리 공간을 사용하기 때문에 큰 버퍼 구역과 대역폭의 소모를 피할 수 있게 되었으며, HDR과 AA를 같이 사용할 수도 있게 되었습니다. G80은 1개의 채널에 32비트(4개 채널을 모두 더하면 128비트)의 부동 소수점 HDR을 완벽하게 지원합니다.



성당으로 보이는 장소 안의 불상(...)이라는 좀 웃기는 데모입니다만, 4가지의 전형적인 HDR 모드, 1채널당 최저 8비트에서 최고 32비트까지 지원하고 있으며 HDR의 영역을 매우 직관적으로 고칠 수 있습니다. 명암, 대비도, 반사 등등...



안티 에얼라이싱 데모입니다. 이건 AA를 적용하지 않았을 때입니다.



이것은 G80에서 지원하는 최고 영역인 16x CSAA입니다. 이 부분은 오른쪽 아래의 확대된 그림을 보면 그 차이점을 바로 아실테니 설명은 필요 없을듯 합니다. G80은 24개의 ROP가 있을 뿐만 아니라 메모리 대역폭이 충분하기 때문에 높은 배수의 AA에서도 성능 손실이 적습니다.



안티 에얼라이싱이 주로 다각형의 테두리에 높은 배수의 샘플링을 걸어 물체의 곡선을 더 부드럽게 표현해 준다면, 텍스처 필터링은 물체 표면과 곡선의 표면, 혹은 원근 표현에 따라 생기는 흐릿한 부분을 해결하는 것입니다. 위 사진은 전통적인 Trilinear 필터링입니다.



워크스테이션에서 지도라던가 복잡한 지형을 그릴때에 대량의 텍스처 필터링이 필요하게 되며 이러한 필터링의 화질은 매우 높아야만 합니다. 이 경우 그래픽카드의 비등방성 필터링 화질이 뛰어나야 할 뿐만 아니라, 손실되는 영역을 최소화 해야만 합니다. G80에서 16x AF를 켠 그림입니다.



기존의 게임에서는 하나의 화면에 많은 오브젝트를 집어넣진 못하는데 이는 GPU의 자원을 갉아먹는 일등 공신(?)이기 때문입니다. 허나 다이렉트 X 10에서는 지오메트리 쉐이더와 버텍스 쉐이더의 상호 배합을 통해 이를 매우 간단하게 해결하였습니다.

하나의 장면에서 같은 3D 모델에 여러번 렌더링을 해서 다른 모델로 만드는 것을 인스턴스(실체, instance)라고 합니다. 인스턴스는 랜더링을 한번만 더 하면 되기 때문에 쉐이더의 효율을 대대적으로 높여줍니다. 지금까지는 한 장면에 1개의 기하학적인 폴리곤 모델을 만들기 위해서는 전부 GPU에서 랜더링을 해야만 했었지만, 인스턴스를 사용하면 프로로그래머가 하나의 모델에 여러개의 인스턴스를 지정해 두고, 이러한 인스턴스를 버텍스 쉐이더를 통해 랜더링을 하면 다른 기하학적인 오브젝트(목표물)가 됩니다.



이 데모를 시작하면 3개의 알이 있고 그 위를 천이 덮고 있습니다. 유저는 바람의 세기와 방향을 지정할 수 있으며, 바람에 따라 천이 날리면서 알과 부딛히며 모습이 변하는 물리 효과를 볼 수 있는 데모입니다.



이 데모는 연기가 분사되어 나가면서 특정 물체에 부딛혔을때의 기류 간섭 현상을 보여주고 있습니다. NVIDIA가 제공하는 메뉴얼에는 이러한 스모크 모델의 랜더링 방식과 구성 방법에 대해 매우 자세하게 설명하고 있으며, 버텍스 쉐이더 텍스처와 지오메트리 쉐이더를 이용해서 만들었다고 합니다.



이 데모는 비가 내리는 각도와 그 양을 조절할 수 있습니다. 비가 내리는 장면을 만들려면 먼저 광원 효과를 계산하고 빗방울의 크기는 지오메트리 쉐이더를 통해 길다린 선이 될 것인지 아니면 작은 점이 될 것인지를 결정합니다. 위에서 본 털을 그리는 렌더링 데모와 같은 구조입니다.



지오메트리 쉐이더를 통해 오브젝트의 일부 영역을 광원으로 만든 것입니다.



4D 심플렉스 노이즈를 통해 움직이는 불을 만든 간단한 데모입니다.



맵핑 데모입니다.



대다수의 샘플들이 다이렉트 X 10 API에서 새로 추가된 지오메트리 쉐이더를 많이 이용하고 있습니다. 지오메트리 쉐이더는 GPU의 파이프라인중에 있는 버텍스웨 픽셀 사이에서, 버텍스가 생성된 이후 그 결과를 서로 연결하여 더 복잡한 기하학적인 도형을 생선, 이를 픽셀 쉐이더에 넘겨줌으로서, 기하학적인 도형에 각종 질감 효과를 추가할 수 있게 됩니다.

픽셀, 버텍스, 지오메트리라는 세 부분은 거대한 스트림 프로세서에서 하나로 합쳐서 완성되며, 통합 쉐이더 아키텍처의 장점은 픽셀, 버텍스, 지오메트리 쉐이더의 점유율을 상황에 맞춰가며 바꿀 수 있기 때문에 GPU의 성능을 제대로 발휘할 수 있습니다.

지오메트리 쉐이더의 출현으로 인해 게임 개발자들은 더 복잡한 연기, 털, 폭발, 날씨 효과 등을 연출해 낼 수 있게 되었을 뿐만 아니라, 게임 안의 폴리곤 모델에도 더 복잡하고 세밀한 묘사가 가능하게 되었습니다.

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.