炸殺
카테고리
작성일
2020. 4. 5. 19:44
작성자
炸殺

컴퓨터의 모든 데이터는 0과 1로 이루어져 있습니다. 컴퓨터가 받아들이는 모든 정보는 0과 1로 변환되어 메모리에 저장되죠.

예를 들어 알파벳 'A'는 아스키코드에 따라 '1000001'로 변환되어 저장됩니다. 메모리에서는 '1000001'을 'A'로 바꾸어 우리들에게 보여주는 형식.

 

여기서 아스키코드는 8bit의 데이터를 사용하는데, 7자리는 문자를, 나머지 한자리는 패리티 비트(parity bit)로 데이터의 에러를 탐지하기 위해 사용됩니다.

 

이처럼 컴퓨터는 모든 정보를 비트 bit라는 단위로 처리하는데요, 이것은 색상도 마찬가지입니다.

사실 이렇게 글이 출력되고 있는 것도 따지고 보면 각각의 픽셀에 특정 색상을 출력하고 있는 것으로 볼 수 있죠. 

 

사실 눈으로 직접 보이는 게 아니기 때문에 막 와 닿는 사실은 아닙니다. 

 

 

 

 

 

1Bit

 

 

초창기의 컴퓨터는 0과 1 딱 두 가지 데이터만 존재하기 때문에 켜짐과 켜짐, 두 가지 상태만 존재했습니다.

당연히 색상 정보는 가지고 있지도 않죠. 

저 화면엔 초록색이란 색상을 가지고 있지 않나?라고 생각하실 수 있지만 저건 단순히 형광체 반사가 녹색빛을 내는 친구를 사용했기 때문입니다.

 

1bit 화면은 굉장히 최근까지도 사용되고 있었는데요 (최근 맞겠지?)

 

만보기

 

요즘엔 휴대폰으로 대부분 대체되었지만 만보기나 디지털시계 등이 1bit 스크린을 사용하였습니다.

 

 

 

 

 

 

2bit (4 gray 칼라)

 

2bit Cowboy

2bit로 진화하면서 두 자리로 늘어나고, 경우의 수는 4가지로 늘어났습니다.

1bit일 때 0,1 두 가지만 표현이 가능했다면 2bit일 때는 00, 01, 10, 11 4가지 색상을 표현할 수 있게 된 것이죠.

 

2bit 게임하면 게임보이가 가장 먼저 떠오릅니다. 저는 직접 해보진 못했지만....

 

최근까지도 단 4가지 색만을 사용한 2bit 게임들이 나오고 있는데 그때 그 시절의 향수가 플레이어들을 불러 모으는 것이 아닌가 싶습니다. 2bit Cowboy, 타이니 데인저러스 던전이 그들 중 하나.

 

 

 

 

 

 

 

4bit , 8bit

 

 

Rubble Rush

4bit가 되면서 총 이제 어느 정도 다양한 색상의 표현이 가능해졌습니다.

총 16가지 색상을 출력할 수 있게 되었는데, 특정 값에 색상을 지정해주고 그 값에 지정된 색을 출력하는

팔레트(palette, Indexed Color) 방식입니다. 사실 이전에도 '칼라' 자체는 가능했던 거죠..

 

8bit가 되어선 256가지 색상까지 표현이 가능해졌습니다. 8bit 컬러는 지금까지도 많이 쓰이고 있는데요, 포토샵을 다뤄보신 분들이라면 아마 '팔레트'도 종종 보셨을 겁니다.

 

바로 GIF 파일 포맷.

 

움직이는 이미지, 움짤을 저장할 땐 gif 확장자로 저장하게 되는데 gif는 256가지 색상, 즉 8bit 컬러까지만 지원합니다.

여기 있는 색상표의 컬러를 바꿔주게 되면

 

파레트의 컬러를 바꾸자 해당 컬러가 사용된 곳의 색상이 통째로 바뀌었다.

 

이러한 팔레트의 특성을 이용하여 팔레트 색상을 바꿔 애니메이션을 만드는 것 역시 가능합니다.

 

팔레트 애니메이션

 

 

 

 

디더링

 

 

디더링(Dithering)은 그래픽 표현 기법 중 하나로 제한된 색을 이용하여 음영이나 색을 나타내어 여러 가지 컬러를 픽셀 단위로 섞어 작게 줄였을 때 다른 색으로 보이게 하거나 자연스럽게 섞이도록 하는 기법입니다. 

 

많아봐야 256개의 컬러만 사용할 수 있었기 때문에 프린세스 메이커 등 다양한 고전게임에서 디더링을 사용한 흔적을 볼 수 있으며 현재까지도 색상 표현 제한을 극복하기 위하여 쓰이고 있습니다.

 

 

프린세스 메이커

 

 

 

 

16bit (High Color)

 

16bit로 들어서면서 이젠  65536가지의 컬러를 표현할 수 있게 되었습니다.

이제 팔레트에서 벗어나 픽셀 하나에 Red, Green, Blue의 색을 기본으로 주고 각각 5,6,5의 bit를 할당, 빨강과 파랑은 32가지 단계, 초록은 64단계의 밝기를 부여하여 색을 표현하게 됩니다. 바로 빛의 3 원색 RGB죠.

 

초록색만 6bit를 부여한 이유는 가시광선에서 초록색의 영역이 다른 두 가지의 색보다 더욱 민감하게 구별하기 때문.

 

간단하게 예시를 들어 R채널에 1의 값을 주고 G, B채널은 0을 준다면 화면에는 빨간색이 출력되고 R, G 채널에 1의 값을 주고 B채널을 끈다면 노란색, 모든 채널에 1의 값을 준다면 하얀색이 출력되는 원리입니다.

이제 이게 34,64가지 단계로 밝기가 조절되니 더 다양한 색을 표현할 수 있는 것이죠.

 

하지만 여전히 사람의 눈에는 부족합니다.

 

 

 

24bit (True Color), 32bit (RGBA)

 

지금 가장 보편적으로 사용하고 있는 24bit 컬러는 한 채널당 8bit를 할당하여 R, G, B가 각각 256단계의 밝기를 가지게 됩니다. True Color라고도 부르며 총 16,777,216가지의 컬러를 표현할 수 있죠!

포토샵의 가장 기본적인 세팅이기도 합니다.

 

  RGB, HSB 슬라이더가 0~225까지의 값을 가지고있는 이유.

 

 

여기서 알파 채널 8bit를 더하여 투명도까지 포함한 32bit는 약 43억 가지의 색상을 표현할 수 있게 됩니다.

가장 많이 사용하는 파일 포맷으로는 비손실 압축인 PNG와 TGA가 있으며, 이 파일 포맷은 게임용 데이터로도 많이 사용되고 있습니다.

 

TGA 파일 포맷으로 저장할 때 알파채널이 있다면 32bit로 저장해야 알파채널이 살아있겠죠?

 

 

포토샵은 채널당 8bit부터 32bit까지 지원한다. 

 

 

 

 

64bit, 채널당 32bit....?

 

인간은 여기서 멈추지 않습니다.

방금 보신 이미지처럼 포토샵에선 단 한 번의 클릭으로 채널당 32bit.... 알파 채널까지 포함하면 128bit의 어마어마한 초고화질을 만들어낼 수 있습니다. 

모니터가 한 번에 전부 출력하지도 못하는 이러한 이미지는 어디에 쓰이는 걸까요?

 

 

바로 하이트 맵(Heightmap)과 라이트맵(Lightmap), skybox처럼 많은 정보 값을 필요로 하는 곳에 이용이 되는데요.

 

 

하이트 맵의 경우 한 가지의 채널만 사용하는데 채널에 할당된 값이 8bit 밖에 안될 경우 256m까지밖에 표현할 수 없게 됩니다. 좀 더 섬세하고 넓은 폭의 정밀도 위해 사용하며, 엔진에서 스카이 박스의 노출도를 조정할 때 노출을 낮춰도 하얀 부분이 회색이 되지 않고 본연의 색상이 나오는 것은 모니터에선 한 가지 색으로 출력될 뿐, 그 안에 색상 정보가 전부 들어있기 때문에 가능한 것입니다. (HDR) 

 

단 이미지에 들어가는 정보량이 많은 만큼 용량이 어마 무시하며 지원되는 포맷도 한정되어있습니다.

 

채널당 32bit로 설정했을 시 저장 가능한 파일 포멧

 

이밖에도 카메라에서 주로 사용하는 RAW 포맷 역시 채널당 16비트 이상의 정보량을 주어 후보정을 할 때 색상 손실을 막아줍니다. (흰색보다 밝은 색! 검정보다 어두운 색!) 

 

 

 

 

 

 

아직 모니터는 인간이 볼 수 있는 색을 전부 표현할 수 없습니다.

 

하지만 이미 영상 및 3D 그래픽 업계에서는 끊임없이 HDR관련 기술을 개발해내고 있으며 GPU에서는 GeForce10 시리즈부터 HDR 디스플레이와 그에 맞는 화면 출력을 지원하고 있고 모니터는 물론 핸드폰, 노트북 HDR TV도 등장하고 있죠. (HDR 콘텐츠가 아직 많이 없다는 게 함정)

 

이전에 사용하던 SDR과 더 깊은 색을 담아내는 HDR

 

 

언젠가... 인류가 인간이 볼 수 있는 모든 색을 화면에 담아내는 것도 몇 년 안에 이루어질지도 모릅니다...

'Graphic' 카테고리의 다른 글

02. 그래픽 압축 파일 포맷  (0) 2020.04.05