어떤 카드를 쓰느냐에 따라 다르다

경우 1 : 구형 카드들
- 어차피 T&L 이 안되므로 모두 소프트웨어에서 돌아갈 수 밖에 없다.
- 버텍스 쉐이더의 소프트웨어 구현은 P4의 SIMD 등을 최적화시켜 사용한다고 한다
- 픽셀 쉐이더같은건 꿈도 못 꾼다
- 결론 예상 : 버텍스 쉐이더를 쓰는 것이 약간 나을 수 있다고 생각한다.
- 예상 이유 : 고정 파이프 라인의 구현은 기본적으로 여러가지의 경우처리에 대한 로직이 박혀있다. 이러한 처리들을 렌더스테이트를 이용해서 켜거나 끄거나 할 수 있지만, 약간이라도 부하가 발생하게 되어있다. 그 반면에 딱 필요한 기능만 버텍스 쉐이더로 만들어 쓰면 (포지션은 행렬연산 한번, 빛방향과 노말값 내적 구해서 버텍스칼라와 모듈레이션 한번, 텍스춰는 그대로) 고정 파이프라인과 달리 이 기능 쓸까 말까, 저 기능 쓸까 말까 판단하는 부분을 원천적으로 생략할 수 있을 것이다.

경우 2 : GeForce2,4 MX 급의 보급형 카드들
- T&L 이 지원된다
- DOT3 Bump mapping 등이 지원된다
- 예상 : 고정 파이프 라인이 더 빠를 것이라고 한다.
- 예상 이유 : 버텍스 쉐이더를 쓰게 되면 기본적인 T&L 까지 꺼져버리기 때문이다.

경우 3 : GeForce3, 4 급의 고급형 카드들
- 예상 : 비슷하다고 한다..
- 이유 : 쉐이더에 대한 대응이 확실하기 때문이다. 하지만 고정 파이프 라인도 그만큼 만들어져 있다.

경우 4 : Radeon9700 급의 최신형 카드들과 그 이후의 카드들
- 쉐이더가 더 빠를 것이다
- 이유 : 고정 파이프라인은 쉐이더를 통해서 에뮬레이션 되기 때문이다. 이미 r300 코어에는 고정파이프라인 로직이 없어져있다.

또한, 소프트웨어 버텍스 쉐이더를 사용할 경우, CPU 에 따라 다르다

P3 이상의 경우에는 버텍스 쉐이더가 빠르지만, P2 의 경우 고정 파이프 라인이 빠르다

To clarify, you can expect to see the same performance on a P-III with
vertex shaders/fixed function if they are doing the same amount of work
- but you can sometimes prune operations on your vertex shader that can
make them significantly faster, if you can shave half the operations
that you don't need, obv you can make it 2x faster. On a P-II it is
always faster to use a fixed function pipe.
정리해서 말하자면 펜티엄3 에서는 버텍스 쉐이더와 고정 파이프라인은 같은 일을 할때 같은 성능을 기대할 수 있습니다. 하지만 버텍스 쉐이더 프로그래밍을 할때에는 명령들을 간략화해서 훨씬 빠르게 만들 수 있는 가능성들이 있습니다. 만약에 명령들의 갯수가 1/2 로 줄어든다면 속도도 확실히 2 배 빨라지겠죠. 펜티엄 2 에서는 고정 파이프라인을 쓰는것이 언제나 더 빠릅니다.

So, basically, if you are seeing a significant difference in performance
from fixed function to vertex shader, your are probably doing something
wrong.
그러니까, 기본적으로, 고정파이프라인프로그램을 버텍스 쉐이더로 바꿨는데 속도가 급격히 떨어졌다면, 뭔가 잘못 바꾼 것이 거의 분명합니다.

Dan Baker
Microsoft, Direct 3D

imcgames 의 김학규입니다