-
Notifications
You must be signed in to change notification settings - Fork 10
/
0307.txt
212 lines (212 loc) · 15.4 KB
/
0307.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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
오늘은 음 디렉트 x2 알리오 에 대해서 다시한번 또 얘기를 해볼게요
전에 이제 전부터 몇 번 방송을 했죠
영천 님하고 라이브도 한두 번 했고 아 그루브 그때 디어 텍스트와 이브
페이스북 그룹을 만들었다고 한곳 했어요 그리고 거기에 제모
아무도 알려주지 않는 dexter 개발자가 알아야 할 사실들 넘버원 너무
틀어 올렸었던 걸로 기억하고
넘버쓰리 를 원래 올리려고 했는데 뭐 어차피 비디오도 만드는 사람이니까
비디오로 얘기하고 그런 링크를 보면 되겠구나
그러면 나한테 도 광고 수익이 돌아오겠지 이런 생각으로
만들고 있어요 그래서 오늘 할 얘기는 음
ot miga 션 중에 하나에요 왜냐면 지역 텍스트 와이프가
이제 로우레벨 그 그래픽스 a 피해를 그냥 올해 내 던져준 거에요
예전에는 곁에 c11 까지는 드라이버가 많은 일을 해 줬어요 mbd 어
가 만든 그래픽 드라이버가
이 중간 과정의 있으면서 저희가 대충 함수로 투 래도 지 내가 쓰레드 다
돌리면서 최적화 다 해주고 1프레임 딜레이 넣으면서 그림 그려주고
됐거든요
근데 dx2 할 분은 그걸 저희 보고하라는 거에요 왜냐하면 엔비디아가
다해 줘 봤자 거는 일반적인 방법이고
4 게임의 정확히 맞는 투 패스 틱한 방법 굉장히 특화된 방법을 저희가
만들면 최적화 라 엄청나게 할 수 있다
그러나 이제 거기에 대한 단점은 저희가 엔비디아 엔지니어 보다 굉장히
똑똑해야 한다는 단점이 있어요
아니면 비슷한 정도의 단 비슷하거나 약간 뭐 잘라도 우리 게임에 맞는
그런 추적할 수 있으니까 나올 수 있다
엔비디아 사람들도 이제 인텔의 있는 개발자 많고 괴물들이 거든요 근데
괴물이 되기 위해서 노력을 하셔야 되고 한 때의 그 중에서 이제 나온거
하나가 이제
파이프라인 스테이터 오브젝트 라는게 있어요 그래서 이게 뭐냐
예전에 이제 디렉터 x9 정도나 뭐 1라운드 똑같고 그걸 하시는 분들은
보통 이런 함수 줄씩 기억하실 거에요
3 스테이트 그리고 뭐 알파 블렌딩 올해의 없어 뭐 인해 볼 티스 해
버렸지만
그리고 우선 3 예의를 로버 택시를 픽셀 죄를 이런거 했었고
뭐 여러가지 상태를 느는 게 있었잖아요 왜냐면 기억해서 상태니까 상태
머신 이니까
그럼 집에 테스트에서 이건 뭐 하냐 며 는 스테이트 다꾸 때마다 굉장히
좀 늘린 연산 이거든요 금연 애들은 아이 연산이 바뀌어 쓰니까 이스테이트
다 모아서
딱 이렇게 무슨 바이너리 이렇게 블럭으로 만든 다음에 걸 그래픽카드의
던져주는 거에요
그리고 드로우 함수를 호출하면 은 이제 그거에 맞게 끌려 그려 주는 거죠
그런데 뭐 알파 블렌딩을 끈 야 시니아 뭐 이런 하나하나가
아 그 내부적으로 동작하는 방법을 바꿔 줘야 되는 거에요
흔히 그냥 하드웨어적으로 생각하면 그 단순한 하드웨어
여러가지 스위치가 있고 아이 스위치로 올리고 저수 채 내리고 저서 있어
올리고 이 수출 내린 다음에 시작버튼 이렇게 누르는 개념 이거든요 그래서
그 전환이 언제나 드렸어요
그것을 빨리 하기 위해서 만든 게 필수에요
그래서 p8 플라잉 스테이터 오브젝트 이게 뭐냐면 아까 말한 바이너리
블락 있자나요 그거 를 저희가 프로그래머가 미리 다 만들어 놓을 수 있게
하는 방법이기 해요 그러니까 이걸 만드려면 어떻게 하냐면
그 안에 들어가 정보 굉장히 많아서 제가 좀 적어 놨는데
따 쉐이더 에 들어가는 모든 그 컴파일된 바이트 코드가 거기에 들어가고
그고 버텍스 펌에 그러니까 이 모델에서 이제 버텍스 가 있잖아요 그럼
이게 10
어디서부터 어디까지가 포지션이 고 어디서부터 어디까지가 팩트 쳐 코디는
유 비 고
이런 정보를 들어가고 이 들어오니 정 점들이 삼각형 이냐 사각형 이냐
트라이앵글 리스트 이냐 트라이앵글 뭐 팬인 야 이런 정보도 거기 들어가
있고 뭔가 블렌드 에스테이트 알파 브랜드 이런것들 그리고 뭐 베스트
라이즈 데이트 갯수 스텐스 1건은 텝스 테스트하고 많은거 그런것도 들어가
있고 오랜 듯하게 포멧이 라던가 뎁스 스텐 슈퍼 포맷이 라던가 랜드 타게
숫자 멀티 샘플링 할 때 아 뭐 벌 티 샘플링 할 때 그 매개 변수들
그리고 뭐 기타 등등 뭐 루트 시간 애초 라는 것도 좀 있는데 그 특별한
거긴 한데 이건 그냥 맵핑 파일 이에요
이 셰이드 에 쓰는 리소스와 실제 일이죠 쓰고 어느 메모리에 있는지
그런게 모두 pso 에 들어가서
바이너리 블럭을 만들게 되요 그 실제 저희가 코딩을 할 때는 어떻게 해야
되냐면
필수 az 아까 다 필수 이제 개체를 만들고 거기다가 모든것을 적 지금
없는거예요 eps 개체는
브랜드가 원이고 개수가 봅시다 그렇기 때 다른게 똑같으면 그럼 이제 하나
만들어 그럼 두번째 ps 오는
이제 이 여기는 브랜드가 곡우 지만 텝스는 온 이다 그러면 또 두번째 가
나오고 이 하나하나의 매개변수가 바뀔 때마다 px 가 새로 생기는 거에요
원래는 d 라이브 하셨던 걸로 저희가 하는 일이죠
그래서 예전에 영천리 막을 알고 알다 필수 관리 마
ex4 4시아 크로스 된다고 그거 있잖아 폭발적인 성장 그 2 곱하기
2는 사지만 거기다가 여기에 또 믹스는 이 두개를 또 9 부침에 8개가
되고
2개면 16개가 되고 32개 64 개의 막 이렇게 올라가 잖아요 그래서
이런 조합하는 매개변수가 하나씩 많을수록 엄청난 성장을 하거든요 근데
지금 제가 말씀드린 eps 5에 들어가는 모든 거에 대해서 미리 ps 에
들어가는 모든 매개 변수에 좋아 그래서 펌이 테이션 이라고 하는데 정확히
한국말로 뭔지 기억이 안나요
그래서 펌이 테이션을 해서 이것을 다 보면 가능한 수를 이게 막 수백
암벽 빌리언 이 될 거야 아마 엄청나게 많아요 그래서 이걸 만들어 놓으면
메모리가 마 학교 기간 집 10
즉 몇 백 기관지 엄청나게 폭발이 되고 조금 불가능하기 때문에 게임
실행중에 이렇게 만드는 경우가 있거든요 제가 저번에 냈던 그 지역의
스토리의 부영 게임을 한 했잖아요
그 게임 도 그런 식이었어요 근데 문제는
예를 들어서 만약에 이제 엔진을 돌리는 도중에 이 pso 를 만든다
예를 들어서 게임 시작할 때가 아니라 엔진을 돌리는 도중에 갑자기 새로운
레벨을 읽었는데 거기에서 아 여기는 알파 블렌딩 스테이트 가 특히 하게
나와 그럼 그거에 맞는 ps 도 만들어야 되잖아요
그게 시간이 꽤 걸려요 시간이 진짜 많이 걸려요
옛날에는 드라이브가 2 제 1프레임 딜레이 주면서 이런 정보가 있으면
다른 스레드를 돌렸어요 그러 처리하고 눈 는 그런 딜레이가 충분히
있었는데 지금은 곧바로 그리는 그런 개념으로 가거든요 사실은
그렇기 때 그게 ps 으로 만드는게 막 갑자기 한 프레임에 새로운 레벨이
바 올라와서
막 탄 챙 개의 패소로 만들어야 된다
그럼 이러한 100 밀리 세컨드 걸리는 경우도 봤어요
4 게임 한번에 10 밀리 세컨드 퀄러티를 그렇게 그려야 되거든
그러면 10 프레임이 스토리 딱 걸리는 거에요
딱 보이지 어따 움직 아 딱 걸리다 같다 움직이는거
그래서 이제 저희가 최적화를 하기 위해서 굉장히 많은 했었고 그래서 이제
pso 를 저희도 이제 따른 스레드로 올려 왔고 피해서 모을 때마다 필수
제네레이터 라고 이제 잡을 만들고 딴 스레드의 던져주고 그 워커 트레드가
만든 다음에
실용적으로 이제 썸 2 타기 전까지 까이 이 렌더링 틀을 써미트 하기
전까지만 끝나면 상관이 없는 거니까 그렇게 했어요
그래서 이제 그것은 헬기 얻고 정말 얘기 얻고
이것을 올바르게 하려면 정말 올바르게 하려면
음 예전에 오버 쉐이더 제가 강연 했을 때도 똑같은 얘기를 했지만
누구인가는 이런거를 게이트 킹을 해야되요 아니면은 아
아니면은 이걸 이제 오프라인에서 미리 어떻게 해 주던가
그래서 어떤 말이냐면 은
첫번째는 첫번째 방법 뭐냐면 이 우리 게임에 쓸 수 있는 블랜드 스테이트
는 이거하고 이거 가까이 쉐이더 는 이런 이런 브랜드 sds 말 쓸 수
있고 뭐 이 쉐이더 는 이런 갯수만 쓸 수 있고 해서 이 그 가능한
조합을
미리 정해놓는 거에요 굉장히 리미티드 안셀 스스로 그 제한적으로 벌어
놓고 아트를 만드는 사람이나 게임 엔진에서 그 상태를 저장하는 것도 그
외에는 절대 안 되게
그 나중에 그게 필요하다면 직접 말해서 그 관을 올려줄 수 있게 그러면은
조합의 수가 줄어들고
실제 엔진이 딱 시작할 때 그런 pso 를 만들 수가 있어요 부팅 도중에
그러면 게임이 실행되는 도중에 는 ps 로 새로 만들 게 없으니까 이미
있으니까 쓰면 되는 장점이 있죠 이게 그 영천 이미 그때 기업 텍스트를
만들었던 게임에서 그런 식으로 할 거에요 왜냐하면 2분은 스폰 자
개발하시는 분 이고
자기가 어떤 스텟 있을지 일이다 결정해 주신 분이기 때문에
그럼 확실하게 할 수 있어요 근데 이게 아니라 그냥 아티스트가 만들어 다
하게 돼 뜨면 좀 1000만개 뽑아야 될 수도 있어요 왜냐면 및 미립
그런 오려면 근데 불가능 하잖아
미리 ps 로 만들어 놓는게 맞춤하게 없고 가능하니까 그러면 저희 처럼
이렇게 말도 안되는 핵을 해갖고
5 그런 식으로 이제 시간 중에 어떻게 만원씩 들에게 올려 갖고 버텨
보기 이렇게 할 수밖에 없는 거죠 이건 첫번째 안보이고 뭐좀 굉장히
제한적이고 굉장히 주먹구구 한 방법인데
어 뭐랄까 게임을 여러분 만들어 본 느낌으로는
주먹구구 1 방식이 솔직히 그렇게 나쁜건 아니에요
굉장히 제한적이지만 굉장히 훌륭한 방법이에요
아 그리고
뭐죠 으
두번째 방법은 뭐냐면은
파이프에서 모든걸 처리해 주는 거에요 그래서 실제
레벨을 이렇게 저희가 막 뭐네 벨트에서 만들거나 뭐 한 다음에 실제
게임에 놀려고 이제 출력을 하잖아요
이 게임의 눌러붙지 않아요 그럼 궁 능 과정에서
아니면 레벨 에디터 에서 레벨의 덧셈 하는 과정에서 여기서 쓴 ss
이거의 필 쏘 상태는 이렇다 라는 걸 모두 다 저장을 해놓고 그걸
오프라인으로 만들 만들어도 좋고
지금 제 기억으로는 이게 오프라인으로 아마 만들 수가 없을 거 에어
드라이버 마다 바이너리를 주는게 달라요 amd 엔비디아 에 따라 근데 그
좋아만 미리 알고 있으면 그 조합을 미리 저장해두고
아 그 조합으로 이제 그 뭐랄까 처음에
그걸 조합이 뭔지를 기록해 된 다음에 엔진의 처음 세 가지 조합이 뭐가
뭐가 필요한지 아니까 예배를 읽을 때 그때 굽는다 거나 아니면 그 유학을
모두 다 모아서 글로벌 한번 9 없는 다거나
엔진의 시작할 때 그래서 그런 방식으로 가는게 더 맞아요
발파 이쪽으로 가서 그러면은 아티스트가 없은 짓을 하던 그것을 꺼낼 수
있으니까 뭐 그래도 워낙 많은 걸 쓰는건 문제겠지만
모 게임에서 쓰는게 맞나 봐요 얼마나 밖에 써 모든 가능한 커뮤니케이션
만드는 것보다 그게 훨씬 낫겠죠
그래서 그런 방법이 있고 생각하다 보니까 저희가 최적화 할 때는 그것
뿐만이 아니라 이 방법을 썼어요
그것도 너무 들었어 1000개 아까 말 때 뭐 161 세컨드 막 걸리고
때면 이잖아요 레벨 1 와 로딩할 때 그 저희는 뭘 했냐면 은 저희 너
그 파이프라인을 고추 수가 없는 상황이었어요 출시를 곧바로 해야되고
저희가 포팅을 하는 상황이었기 때문에 저희가 닐은 정말 극악 무도 했지만
뭘 했냐면 은
그 코드를 하나 만들었어요 개발자 만 볼 수 있는 코드 실행되는 코드를
만들어서
2 4 벨의 들어가서 게임을 실행하는 게임을 진행하는 동안 여기서 쓴
px ol 컴비네이션 어떤 스테이트 하는지를
다 저장해서 다른 파일로 저장을 했어요 pc 버전에서
그 다음에 이제 그 버전을 딱 하나 구워서 아까 말했던 그 팔까 원래는
제가 볼땐 레벨의 되서 쎄이 그 할 때 써야 되는 일을 게임을 실행하면서
만든 다음에 구워서 실제 게임을 구워서 데이터를 만들고 그 다음에 게임을
실행할 때 그 미리 만들어 놓은 그 데이터를 보고 pso 를 만든
만들어서 그 dx 드라이버의
만들어서 이제 그 다음에 썼던거 아니라 다행히도 레벨 로딩하는 로딩
스크린 이안에게 포함이 되어 있었기 때문에 게임을 실행한 도중에는 그런
멈춘 상황이 없었고 이 문제의 단점은
과연 저희가 모든 레벨의 구석구석을 가 받고 모든 캐릭터를 써봤고 모든
총을 써봤고 모든 2세트를 실행을 해 봤다는 보장이 없잖아요
그 피에 소를 그 데이터를 뽑으려고 했을 때
그렇기 때문에 실제 원서 미씽 하게 있을 수도 있어요 그럼 이 시각에
있다면 그 어느 실시간으로 만들어요 그런데
그래봐야 몇 천개 수준은 아니기 때문에 아무 문제가 없었다 그래서 이런
좀 이상한 집들을 했어요 사실은
그래서 이제 필수 에 맞게 dfx 트웰브 가 나왔고 그거에 대한 뭔가를
맞는다면 은
그거에 맞는 파이프라인이 필요하다는 생각을 하게 됐어요
그리고 그 중에 특히 성능의 정말 많은 영향을 미치는 게 중 중의 하나가
pso 정말 많은 영향을 미쳐요
그래서 이거는 아무도 그렇게 막 10시 말해 줘 1ps 라는게 있다 이걸
쓰면 은 하드웨어가 스테이트 1 바꿀 일이 없어서 굉장히 빠르다 라고
얘기하지만 필수 를 만드는게 엄청 느리기 때문에 이거를 정말 빨리 해야
된다고 문서에는 약간은 써 있어요 한번 뭐 이거 맛이 떨어지므로 돌리거나
미리 만들어 놓거나 해야 된다고 써 있긴 한데 지나가듯이 말했고
중요하다고 얘기를 안해서
아무도 말해주지 않는 드디어 텍스트 10부 이야기 한거 같아요 이거 또
그래서 오늘 이야기는 ps 5편으로 하고 뭐 정리를 하려고 했는데 정리를
해봐야 여태까지 한 말을 다 반복해야 될 것 같애
정리는 따로 안 하겠고 잘 이해가 안되시는 데 필요하신 분들은
달 처음부터 돌려 고지는 개설할 것 같아요 알아서 오늘은 이 정도로 하고
예 뽑혔습니다