DirectX

[DirectX]색상의 개념

FORHAPPy 2022. 1. 3. 10:40

 컴퓨터 모니터의 색상은 빨간색 + 녹색 + 파란색 이다.

 여기에 빛의 세기에 따른 색상 변화까지 섰어주면 사실적인 이미지를 표시하는데 필요한 모든 색상을 묘사 할 수있다.

 

빛의 세기를 나타낼때는 0부터 1까지 정규화된 값을 사용한다.

즉, 색상은 벡터로 표현될 수 있다.  (0.25, 0.67, 1.0 )이라고 하면 25퍼센트 세기의 적색광과 67퍼센트 세기의 녹색광, 100퍼센트 세기의 청색광의 혼합을 뜻한다.

 

색상연산

 

  1. 벡터의 덧셈 (색상의 덧셈) 
  2. 벡터의 뺄셈
  3. 스칼라곱
  4. 내적은 의미없는 연산이다.
  5. 색상벡터만의 연산이 있다. 변조라고 한다.

변조 : 성분별 곱셈이다. 주로 조명 공식에 쓰인다.

->입사광선 색상에 표면이 입사광선의 적생광을 50퍼센트 녹색광을 75퍼센트 청색광을 25퍼센트 반사하고 나머지를 흡수한다고 할때 표면의 반사된 광성의 색을 구하는데 변조 공식을 사용한다.

 

 

색상연산을 수행하다보면 색상성분들이 0,1 구간에서 넘어갈때도 있다. 

이럴때 값을 보정 해 줘야 하는데 특정 구간을 벗어나지 않게 보정하는 것을 한정(clamping)이라고 부른다.

 

32비트 색상 -> 각성분당 8비트씩 할당 즉 1바이트 씩 할당한다.

하나의 색상을 32비트로 표현할 수 있다.

한 성분에 대해 256가지 세기를 표현할 수 잇다.

 

색상의 저장을 위해 다음과 같은 구조체를 제공한다.

#include <DirectXPackedVector.h>가 필요하다.

struct XMCOLOR