오호;;;
질문이 DX10을 몽땅 알려주세요.. 수준이네요 ^^;;;;
쉐이더는 프로그래밍을 통해서 그래픽 카드가 하는 역할을 부여해주는 것을 의미한다 하겠습니다.
Vertex shader는 vertex를 어떻게 바꾸거나 할지를 결정해 주고, pixel shader는 pixel을 어떻게 그릴지를 결정해 줍니다.
DX10의 쉐이더 모델4는 geometry shader가 추가되는데, 이것은 polygon을 어떻게 할지를 결정해 주지요.
완전 수박 겉;;; 느낌의 설명인데, 자세히 아시고 싶으시면 관련 서적, DX 도움말등을 보셔야 할것으로 보입니다.
DX10 부터는 쉐이더를 사용하지 않는 fixed pipeline은 없어집니다. 일대 변화가 예상되지요 ^^;
Shade의 기본뜻은 음영이랄까요.. 빛에 의해서 명암이 바뀌는 것.. 그림자랑 비슷하다고도 할 수 있고 같은 뜻으로 사용되는 경우도 있긴하지만
기본적으로 그림자는 다른 물체에 의해서 생기는것(땅에 드리워진 나무의 그림자)
음영이란 빛에 의해 물체 자신의 명암이 변하는것(플래쉬를 터트려서 얼굴이 뽀샤시하게 변했다 -_-a)이라고 할 수 있습니다
현재 널리쓰이는 3차원 그래픽기술은 기본적으로 3차원상의 세 점에 의해 생기는 삼각형의 면들로 표현이 됩니다
그래서 그 면이 카메라(혹은 사람의 눈)에서 봤을때 어떤위치를 가지는지, 빛에 의해서 어떤색일지를 정하는 것이 3D그래픽에서 쉐이더의 역할입니다
T&L 이라고도 부르는(Transform & Lighting, 즉 점의 이동 & 조명계산입니다) 이 연산은 현재 PC의 CPU에서는 엄청 연산량이 부담이 되는 관계로
GPU라고하는 그래픽카드의 연산장치가 개발이 되었고 DirectX, OpenGL로 불리는 3D API들을 통해 그 기능을 쓸 수 있게 되었습니다
3D가속카드 초기에는그래픽카드의 가속기능을 이용하게 되면 저런 T&L 연산이 그래픽카드가 수행하는대로 프로그래머는 지켜봐야했고
프로그래머가 그 연산을 고치고싶다면 가속기능을 포기하고 CPU에서 구현할 수 밖에 없었습니다(물론 그렇게되면 그리는 속도가 어어어어엄청 떨어지죠 -ㅅ-)
그러나 이제는 그런 연산들을 프로그래머가 직접 구현하여 GPU에 전달할 수 있게 되었고 그것이 쉐이더라고 불리는 것들입니다
프로그래머는 쉐이더를 만들어 여러가지 자기가 표현하고싶은 화면을 표시할 수 있게 된거죠
(예를들면 물체의 빛에서 가까운 부분이 더 어두워지는 엽기적인 화면같은것들도요 -_-)
버텍스 쉐이더는 삼각형의 한 점마다 그 연산을 수행합니다.
계산한 결과를 바탕으로 그 점들사이의 선과 면들은 각 점에서 평균내는 방식으로 면을 표현하게 되죠
픽셀쉐이더는 삼각형이 차지하는 한 면의 픽셀(모니터상에서의 한 점)하나마다 연산을 수행합니다.
버텍스 쉐이더가 수행한 연산의 결과값(혹은 평균낸 값)을 받아서 연산을 수행하게 되죠
DX9까지는 그래픽카드에서 버텍스쉐이더, 픽셀쉐이더를 연산하는 유닛이 따로 존재하는데
그렇게하면 둘중 한쪽이 노는 경우가 종종 생기기 때문에 DX10의 쉐이더모델에서는 그 유닛들을 통합해버렸습니다
질문이 DX10을 몽땅 알려주세요.. 수준이네요 ^^;;;;
쉐이더는 프로그래밍을 통해서 그래픽 카드가 하는 역할을 부여해주는 것을 의미한다 하겠습니다.
Vertex shader는 vertex를 어떻게 바꾸거나 할지를 결정해 주고, pixel shader는 pixel을 어떻게 그릴지를 결정해 줍니다.
DX10의 쉐이더 모델4는 geometry shader가 추가되는데, 이것은 polygon을 어떻게 할지를 결정해 주지요.
완전 수박 겉;;; 느낌의 설명인데, 자세히 아시고 싶으시면 관련 서적, DX 도움말등을 보셔야 할것으로 보입니다.
DX10 부터는 쉐이더를 사용하지 않는 fixed pipeline은 없어집니다. 일대 변화가 예상되지요 ^^;