-
Notifications
You must be signed in to change notification settings - Fork 10
/
0124.txt
178 lines (178 loc) · 8.05 KB
/
0124.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
안녕하세요 포프입니다
저번저번 비디오에서 뭐 DXT1, BC7, BC3..
이런 압축 알고리즘 말하다가
알파채널 얘기가 나온 김에 그냥 한 번 더
알파채널에 대해서 얘기해 보려고 해요
사실 예전에 대학교에서 처음으로
3D 그래픽 같은 거 애들 가르칠 때
보통 이미지 같은 건 잘 알잖아요 왜냐면
사진도 찍고 이러니까, 그래서 애들한테 물어봐요
알파채널이 과연 뭐냐
그러면 똑똑한 애들 중의 몇 명은 얘기를 하죠
아 이게 투명도, transparency 그 채널이다
그러면
그거를 사실은
절반은 정답이라고 얘기를 해 주는데
절반은 또 아니라고 얘기를 해 주거든요?
되게 재밌는 게
어찌 보면 naming 자체가 되게 웃겼던 것 같아요
이미지 같은 경우에 보면은 채널이 세 개
아니면 네 개가 있다고 보통 얘기를 하잖아요
Red, Green, Blue(RGB) 그리고 알파채널
근데 솔직히 각 채널이 어떤 색상이
반드시 되어야 되는 건 아니거든요?
그냥 우리가 흔히들 이미지에서 RGB를 보기 때문에
어떤 뭐, 일반 컴퓨터 이미지에서
그거를 그냥 형식상으로
RGB 채널이라고 불렀던 것 같아요
뭐 제 생각에는 그냥 채널 0, 채널 1, 채널 2지만
그럼 이제 재밌어지는 게 그거에요
만약 알파채널이 정말 투명도 채널이었다면
왜 이걸 굳이 알파라고 불렀을까
영어 아시는 분들은 알겠지만
알파라는 게 보통 그거거든요
"뭐 더하기 추가"할 때 보통 알파 그러거든요
"뭐 더하기 추가"할 때 알파 그리고
또 하나 추가하면 베타 이런 식으로
그래서 결과적으로는 사실
채널 이름을 지을 때 RGB는 제대로 지었는데
알파는 그냥 추가 채널이라고 솔직히
지었다고 저는 생각을 해요
그게 아니었으면 뭐
opaque 채널이라고 해서 RGBO로 했든가
transparence 값, RGBT로 하든가 그랬겠죠
근데 그게 아니었거든요?
그래서
제가 지금 하고 싶은 말은 뭐냐면
결국 이 텍스쳐를 메모리로 그냥 읽어 들였을 때
압축이 안 된 상태로 메모리 읽어 들였을 때
메모리상에서는 별 다른 의미가 없어요
각 채널이 8 bit라고 생각을 하고, 0부터 255
그러면 첫 번째 byte에는 Red가 들어가 있고
두 번째 byte에는 Green이 들어가 있고
세 번째 byte에는 Blue가 들어가 있고
네 번째 byte에는 알파채널이라는
값이 들어가 있는 거에요
그게 픽셀 하나고 그 다음에도 똑같아요
그게 반복이 될 뿐이에요
재밌는 건 컴퓨터 수준에서는 이 메모리가
뭔 내용인지를 알 방법이 없어요
그냥 메모리 byte array, char array에
그냥 숫자가 다양히 있을 뿐이에요
그럼 그 숫자를 저희가 각 네 번째마다 단위를 끊어서
첫 번째 거는 Red, 두 번째 거는 Green
세 번째 거는 Blue, 네 번째 거는 투명도로 쓰겠다라고
하고 있는 게 지금 RGBA일 뿐이죠
근데 사실 컴퓨터 그래픽을 하다 보면은
이런 개념을 깰 경우가 많아요
예를 들어서,
Normal map 같은 경우가 되게 좋은 예에요
Normal map 보면은 되게 푸르딩딩하다고 생각하잖아요?
그래서 푸르딩딩한 건 Normal map
근데 그거는..
책 광고!
제 책에도 나와 있지만
단지 Normal..
그..
법선 벡터
노멀 벡터가 가리키는 그 방향을 Red, Green, Blue에
그냥 숫자를 넣어 놓은 거기 때문에
그게 푸르딩딩하게 보이는 것 뿐이에요
Red하고 Green은 바뀌죠 언제나
예를 들어서, 평면이 이렇게 있으면
이게 보통 평면 법선이잖아요
그러면 이게 좌우로 가냐 앞뒤로 가냐에 따라
Red하고 Green은 바뀌게 돼요
Red가 x좌표, 좌우고
Green이 이제, 저희는 y좌표 이 쪽을 보거든요
그래서 앞뒤 좌표라고 보기 때문에
근데 언제나 이게 푸르딩딩한 이유는
이 표면에서 밖으로 나가는 걸
우리가 z좌표라고 보기 때문이에요
그러면 어느 방향을 가리켜도 숫자가 +가 있잖아요
굉장히 크잖아요 어쨌든 위를 가리켜야 될 테니까
그래서 언제나 Normal map이
푸르게 보이는 것 뿐이에요
그거는 말 그대로 저희가 x, y, z 법선 벡터 정보를
RGB로 mapping해서 넣었기 때문에 보이는 by-product
side effect?
몰라
그런 거일 뿐이죠
역효과 아니에요
부수효과!
부수효과일 뿐이죠
그럼 이제 알파채널도 똑같아요
과연 저희가 게임에서 알파채널은
반드시 투명도로 쓰느냐
그런 경우도 있고 아닌 경우도 있어요
뭐 예를 들어서,
Material map 같은 거 만들 때 이제 뭐뭐
Red를 roughness 값으로 하고
Blue를 뭐 specpower로 하고
뭐 어쩌고저쩌고해서
정보를 네 개를 저장을 해야 될 때
그런 경우에는 알파채널을 다른 걸로 쓸 수도 있죠
그런 경우에는 말 그대로 Red Green Blue도
Red Green Blue가 아니고
알파채널도 알파채널이 아니거든요
그럼 결과적으로는 이거는 순전히..
물론 이미지에서 이게 시작을 해서 그런 거기도 하지만
이게 순전히 저희한테 주는 의미는 딱 한 가지에요
아티스트가 뭔가 정보를..
뭐 프로그램해서 넣을 수도 있지만
아티스트가 뭔가 정보를 텍스쳐라는
그런 저장 공간에 집어넣고
텍스쳐가 최대 네 개의 separate 채널까지 지원을 하니까
거기에 각각 다른 정보를 넣고 싶다면
그 네 개 채널을 아무렇게나 쓸 수가 있는 거에요
그리고 알파채널도 그 중의 하나일 뿐이고
이걸 투명도로 쓰면은 쉐이더에서 투명도로 써 갖고
어떻게 할 수가 있는 거고
Green Red Blue도 똑같은 개념일 뿐이에요
그래서
가끔 3D 렌더링 프로그래밍 하시는 분들 중에
색상에..
텍스쳐를 색상으로 쓰지 않고
다른 정보로 저장해야 할 때가 있어요
그리고 특히나 이제 픽셀 별로 뭔가 다른 정보를
저장해야 할 때는 텍스쳐가 가장 좋은 방법이거든요
특히 Directx 9 graphics card에서
그럼 그런 순간이 왔을 때
이 알파채널과..
그니까 뭐 RGB 뿐만이 아니라 알파채널까지 해서
뭐 RGB는 보통 그래도 색상으로 주로 쓰는
경우가 많기 때문에 그렇다고 치더라도
알파채널을 다른 걸로 쓸 수 있다는 생각을
쉽게 못 하시는 초보분들이 있어요
근데 그거를 좀 깨 주시라는 생각에서
이 비디오를 만든 거고요
제가 말하고 싶은 건 말 그대로 텍스쳐라는 건
그냥 메모리 공간일 뿐이에요
이미지는 그냥 메모리 공간일 뿐이고
텍스쳐 스펙 자체에서 지원하는 게
그 이미지를
연속된 이미지 byte stream을 네 개로 잘라 갖고
네 개별로 보여 줄 수 있다는 거
네 개로 그룹지어서 RGBA
그리고 다음 픽셀 RGBA
그래서 총 다른 네 가지의 정보를
저장할 수 있는 메커니즘을 지원하기 때문에
그거를 이용해서 굉장히 할 수 있는 일이 많아지고
그리고 그래픽 프로그래밍 할 때,
특히 렌더링 프로그래밍 할 때, 또는 아티스트할 때
그런 RGBA 채널을 잘 이용해서
뭔가 할 일이 점점 많을 거라는 거
그래서 그거를 그냥 말씀드리고 싶었어요
가끔 그냥 알파채널하면 다 누구나 그냥
transparency 생각하시는 그런 초보분들이 많아서
그거를 깨기 시작하면 굉장히
무궁무진한 길이 보이기 시작하죠
뭐 가끔 컨퍼런스나 이런 데 발표되는
그래픽 자료들도 보면은 그런
우리는 이런이런 정보를 이렇게 텍스쳐에 담았다
이런 거, 그게 다 그 얘기에요
그 색상이 아니라 그냥 그 메모리 byte의 정보를 담았다
그게 중요할 뿐이에요
그럼 오늘 비디오는 굉장히 짧게 되겠지만
이 정도에서 끊을게요
포프였습니다