U E D R S I H C RSS
ID
Password
Join
현상유지는 퇴보이다. 기억안남


Contents

1 시작하며
2 셰이더
2.1 왜 셰이더를 사용하는가?
2.2 정점 셰이더
2.3 픽셀 셰이더
3 Fragment
4 요약
5 참고문헌

1 시작하며 #

픽셀 셰이더와 정점 셰이더에 대한 보다 괜찮은 이해를 돕기위해서 이 아티클을 작성했음을 밝힌다. 이 글은 픽셀/정점 셰이더가 무엇이고 왜 그것들이 사용되어지는지에 대해 설명한다.

2 셰이더 #

2.1 왜 셰이더를 사용하는가? #

그래픽 하드웨어로의 정점/픽셸 셰이더의 추가는 실시간 그래픽의 시각적 품질을 영화와 같은 실제감에 껑충 도약하게 만들었다. 새로운 그래픽 카드의 프로그래밍가능한 그래픽 프로세서들에게 감사한다. 이로서 개발자들은 이 셰이더들을 사용하고 그들의 게임에 그들 스스로의 효과들을 만들어냄으로써 그래픽 처리의 개별적인 조합을 추가할 수 있게 되었다.

셰이더를 사용하여 생성할 수 있는 효과들은 다음과 같다.
  • Hair와 fur
  • Per-pixel lighting
  • Underwater effects
  • Clothing
  • 그외 수많은 효과들 :)

개발자들은 어셈블리 코드나 새로 발표된 Nvidia의 Cg 언어(거의 C언어와 같다)를 사용하여 셰이더들을 생성할 수 있고 랜더링시 이 작성된 셰이더들을 그래픽 프로세서로 다운로드 할 수 있다.

셰이더들의 한가지 단점은 구 버젼의 그래픽카드는 프로그래밍 가능한 그래픽 프로세서를 가지고 있지 않기 때문에 이 기능을 지원하지 않는다. 그러나 미래에 출시되는 카드들은 모두 이 기능을 가지고 있을 것이다. 이 글이 쓰여지는 시점(2002년 중반)에서 픽셀 셰이더를 지원하는 카드는 GeForce 3/4TIRADEON 8500 기반의 카드밖에 없다.

2.2 정점 셰이더 #

정점 쉐이더에 대한 정의는 다음과 같다.
정점 셰이더는 객체상의 수학연산을 통해서 X(길이), Y(높이), Z(깊이)에 해당하는 정점 데이타 값을 관리하는 그래픽 처리함수이다. 
이 변화는 색상 차이, 택스쳐 좌표, 공간상의 원점, 안개(특정 고도에 따라 다르게 나타나데 할 수 있다)와 정점 크기에 이르기까지 적용될 수 있다.

image001.gif

그림 1 : 정점 쉐이더로 들어올수 있는 데이타와 처리된 결과 데이타의 종류들을 모두 보여주고 있다.

만일 하드웨어상에서 정점 쉐이더가 가능하면, 이것은 일반적인 정점처리를 위한 기본 고정함수 파이프라인을 대체할 수 있다. 셰이더는 삼각형과 같은 primitive 상에서는 동작하지 않고, 단지 하나의 정점에 대해서만 동작한다. 정점 셰이더는 정점들을 생성하거나 없앨수 없으며, 단지 그것들을 관리하는 것만이 가능하다. 모든 정점들이 처리되기 위해서는, 단지 셰이더 프로그램을 실행하면 된다.

2.3 픽셀 셰이더 #

픽셸셰이더의 정의는 다음과 같다.
픽셸셰이더는 픽셀들을 처리하기위한 작은 프로그램을 말하며 GPU(Graphics Processing Unit)상에서 실행된다.

여러분이 픽셀 셰이더를 생성하면, fragment 데이타를 처리하는 함수를 생성한 것과 같다. (fragment의 정의를 참조해라) 이것은 여러분에게 완벽한 콘트롤을 부여한다. 픽셸셰이더를 사용하면 여러분은 예를 들어 그림 2와 같은 수면 간섭이나 세부 노멀 매핑, 섬광효과들을 생성하는 것이 가능하다.

image003.jpg
image005.jpg
image007.jpg

그림 2 : 위의 3개의 이미지는 세밀한 일반 맵, 섬광, 수면간섭효과를 보여준다.

One thing though, is that pixel shaders often require data from the vertex shader.

픽셸 세이더는 종종 정점 셰이더에 의해 "운용"되기도 한다. 예를 들어, 픽셸 셰이더는 픽셀당 광원을 계산하기 위해서, 삼각형의 원래 위치와, 광원 벡터의 위치, 그리고 때때로 뷰 벡터의 위치도 필요로 할 때가 있다.

3 Fragment #

조각(Fragment) 셰이더는 픽셸 셰이더와 같은 의미이다. Opengl에서의 3D 장면은 fragment라고 불리는 점들이 존재하는 xy 평면에 투영된다. fragment들은 위치나 택스쳐 좌표와 같은 정보를 담고 있다. 몇몇 fragment들은 화면상의 픽셀로 표시될 때 서로 더해질 수 있다.

4 요약 #

This article has made a lot of the words and expressions regarding pixel and vertex shaders clearer for me to understand. Hope it's helped you too in your quest for better understanding in this world.

Thanks to Dirk Gerrits for looking through the article and helping with some sentences and explanations.

5 참고문헌 #


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:54
Processing time 0.3730 sec