본문 바로가기
Lib/DirectX

DirectX 내부에서의 텍스쳐 합성

by KingCat 2013. 12. 11.

DX 내부에서의 텍스쳐 합성 (신형 Shader 방식) 원리

 


신형 Shader 방식의 텍스쳐 색상 결정 로직에서는 색상을 결정하는 방법이 5가지있다.

 


첫번째는 Diffuse Color. 즉, 조명과 라이팅 연산이 되어서 나온 색상을 설정해주는 방법이다.

두번째는 Texture Color. 텍스쳐 자체의 색상을 정해주는 방법이다.

세번째는 --- 다음에 정리

네번째는 Constant라고, 텍스쳐에 강제로 색상을 할당해주는 방법이다.

다섯번째는 Factor라는 이 역시 텍스쳐에 강제로 색상을 할당해주는 방법이다.

 


텍스쳐 합성시에 Current와 Temp라는 두군데의 레지스트리에 색상을 저장해놓을 수 있다.

기본적으로 Current에 자동 저장되며, 두 이미지를 합성할려고 할 경우, Temp에 하나를 저장해놓고, 다음 Current에 색을 결정.

두 이미지를 곱해주면 합성된 값이 나온다.

 


이미지는 더하면 더 밝아진다. 곱하면 두 값의 중간값이 나오게된다.

 


어떠한 이미지에 빨간색을 곱하면 그 색을 빨간색으로 만드는 것이 아니라, 원래 색의 빨간색 성분만 남긴다라고 이해해야한다.

즉, 1.0f,1.0f,1.0f 색에 1.0f,0.0f,0.0f 색을 곱하면 1.0f, 0.0f, 0.0f 색이 남는데, 원래색의 빨간색 성분만 남아있는 것이다.

원래색이 0.0f, 0.0f, 0.0f 라면 빨간색을 곱해도 0.0f, 0.0f, 0.0f가 나오는 것이다.

 


텍스쳐 합성시 마스크라고 불리는 흰색과 검은색으로 만들어진 텍스쳐를 원본 텍스쳐에 곱해주면 검은색 부분은 색이 날아가고, 0.0f, 0.0f, 0.0f이므로...

흰색 부분만 색이 남게 된다. 그럼 여기에 다른 텍스쳐를 곱해주면 원래 검은 색이 있던 자리에 텍스쳐가 합성이 된다. 하지만 흰색이 있던 자리 역시

다른 텍스쳐의 색이 곱해지므로 색 변화가 일어난다.

 


합성시에는 마스크 텍스쳐를 원본에 곱해주고, 이를 Temp 저장. 마스크를 반전시킨후, 합성할 텍스쳐에 곱해주고, 이를 Current에 저장,

두 결과 텍스쳐를 곱해주면 색 변화가 없이 제대로된 합성이 된다.

 

'Lib > DirectX' 카테고리의 다른 글

Depth Buffer에 관하여  (0) 2014.09.22
Indexed Primitive 구현과 Alpha Blending 사용  (0) 2014.09.22
회전하는 입방체 만들기  (0) 2011.11.09
Triangle 그리기  (0) 2011.11.09
DirectX 기본 코드 구조.  (0) 2011.11.09