miniRT 실습 - 01. RGB PPM

jkeum·2021년 1월 23일
0

miniRT

목록 보기
1/7
post-thumbnail

출처:
Ray Tracing in One Weekend - Output an Image
Github - GaepoMorningEagles/mini_raytracing_in_c


RGB PPM


PPM Format

렌더링을 시작할 때, 결과 이미지를 보기 위해서는 어떤 파일에 작성하는 것이다. 여기서는 일반적인 텍스트 ppm 파일로 시작한다. ppm 이미지 파일은 그래픽 파일 포맷 중 하나이다.
ppm example
위의 예시로 보면, 첫 번째 줄의 P3는 ASCII code로 표현한 RGB로 이미지를 나타낸다는 것이다. 주석을 건너 뛰고, 네 번째 줄의 3 2는 3행과 2열을 의미한다. 다섯 번째 줄의 255는 RGB 각 색의 범위의 최대값을 나타낸다. 그 다음부터 나오는 숫자들은 왼쪽 위에서부터 오른쪽 아래로 각 픽셀에 들어가는 RGB 값에 대한 정보이다.


main

몇 가지 유의사항이 있다.
1. 픽셀은 왼쪽에서 오른쪽으로 픽셀이 있는 행으로 표시된다. 행이 위에서 아래로 쓰여있다.
2. 각 R/G/B 구성요소의 범위는 [0.0,1.0][0.0, 1.0]의 실수로 매핑하여 사용한 뒤에 다시 [0,255][0, 255]의 정수로 변환하여 출력할 것이다. 여러가지 이유가 있겠지만, 벡터 연산을 통해 구한 값을 이용하여 색을 표현하고 [0,255][0, 255]보다 더 큰 범위로 색을 표현할 때의 확장성을 고려한 것이 아닐까 생각한다.
3. 255.999를 곱하고 int로 형변환을 해주는 이유는, 255를 곱하면 소수점 아래가 버려지기 때문이다. 255를 곱하면 0.999나 0.998일 때도 다 254가 된다.(255까지 가지 못한다.) 256을 곱하지 않는 이유는, 1일 때 범위가 255를 넘어가기 때문이다.


Result Image

ppm file

profile
It's me, jkeum!

0개의 댓글