SlideShare une entreprise Scribd logo
1  sur  88
아티스트에게 사랑받는
3DS MAX 우버 셰이더
Pope Kim
Rendering Engineer, EA Sports FIFA
Korea Game Conference 2013
이유가 불분명한 난이도 조절용 설문조사
• 프로그래머 vs 아티스트 vs 테크니컬 아티스트?
• 현업개발자 vs 지망생?
• 셰이더가 뭔지 아시는 분 vs 모르시는 분?
• 우버 셰이더(uber shader)가 뭔지 아시는 분 vs 모르는 분?
발표자 소개 - 현재
• EA 스포츠 FIFA 팀, 렌더링 엔지니어 (PS4, Xbox One)
• 서강대 게임개발 교육원 초빙교수
• 컨퍼런스 발표: 시그래프 2012, KGC 2011/2012/2013
• 저자
• 셰이더 프로그래밍 입문 (한빛미디어): 현재 영문판 집필중
• (게임개발자가 대우받는) 북미취업 가이드 (연두미디어)
• 감수자
• HLSL Shader Cookbook (영문, Packt Pub)
• 게임 매니악스 – 슈팅 게임 알고리즘 (한빛미디어)
발표자 소개 - 과거
• 첫 게임개발시작: 1993년 정도
• 중간 외도 기간: 6년 (연세대 법학과 졸업 및 고시준비 -_-;;)
• 최근 회사들: 아이도스/스퀘어 에닉스 몬트리올, 렐릭/세가/THQ, 캡콤 밴쿠버
• 과거 개발한 플랫폼들: Xbox 360, PS3, PS2, PSP, Wii, PC
• 캐나다 AI대학 셰이더 프로그래밍 선생질: 3년 (part-time)
발표자 소개 - 기타
• 마이크로소프트 Visual C++ MVP
• 게임개발 포에버 얼굴마담 (www.gamedevforever.com)
• 포프TV(www.youtube.com/user/KimPopeTV), 블로그(kblog.popekim.com),
• 트위터 @BlindRendererKR (한국어) @BlindRenderer (영어)
• 올해는 꽃미남 드립 생략 -_-;;;
• 출시한 게임수: 많음…
많음 -_-;
오늘의 발표
• KGC 2011/ 2012 보단 덜 기술적
• Uber Shader는 이미 잘 알려진 것
• 하지만 프로그래머와 아티스트에게 모두 나름 문제있던 기법
• 2008년에 스페이스마린 프로젝트(Relic)에서 그 문제를 해결한 방법 소개
• 주로 아티스트의 효율성을 높이는 방법 (이유: 아티스트 시간이 제작비의 대부분)
• 아티스트들이 보고 프로그래머에게 “이거 해주세요~” 라고 하길…
셰이더란?
• HLSL 셰이더 프로그래밍 입문: (당연 제 책 광고)
“셰이더란 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수”
• Ndoors의 테크니컬 아티스트 디렉터 정종필 부장님:
“셰이더는 재질(때깔)이다”
게임만드려면 셰이더가 몇개나?
• 갈팡질팡
• 그래픽 프로그래머 / 아티스트 중에 목소리 높은 팀 맘대로 일지도… -_-;;;
• 아니면 그냥 남이 하는게 더 멋져 보여서… -_-;;;
• 3가지 예
• 아트마다 하나씩
• 대충 종류별로 하나씩
• 그리고 Uber Shader
아트마다 하나씩
• 장점
• 필요에 따라 셰이더를 자유로이 만들 수 있음
• 언리얼 등을 비롯 노드기반 셰이더를 지원하는 프로그램도 있음 (요즘 추세)
• 단점
• 셰이더 관리
• 성능
• 생각보다 아티스트(테크 아티스트가 아닌)가 배우기 힘듬
아트마다 - 단점
• 노드기반으론 이런 만행이 쉬움 -_-
출처: http://warby.bitproll.de/
대충 종류별로 하나씩
• 게임에 들어가는 아트 종류별로 셰이더를 하나씩 만듬
• 캐릭터 셰이더, 소품 셰이더 등등
• 장점
• 셰이더 관리가 쉬움
• 성능
• 단점
• 새로운 실험을 하거나 셰이더를 새로 만들기 힘듬
• 안쓰는 패러미터의 기본값 설정하기 귀찮음… -_-
UBER SHADER
• 셰이더 하나로 모든걸 처리. 무수히 많은 ON/OFF 스위치
• 장점
• 실험하기 정말 쉬움
• 게임 셰이더 관리도 쉬움 (하나뿐이니 -_-)
• 단점: 전에 설명했던 방법들의 모든 단점의 총집함
• 아티스트 고문
• 성능
UBER SHADER - 단점
UBER SHADER - 단점
1. 아티스트 고문문제 해법
• 한 번 해보죠 (고문말고.. 해결… -_-;;;)
정작 모든 셰이더 시스템의
문제점은..
• 프로그래머 위주의 생각…
• 아티스트에게 프로그래머 위주의 생각을 강요. (예: 이건 수학적으로 원래 그렇게
작동하는거니 이렇게 이해해서 해요 -_-+ )
• 물론 아티스트가 징징 거릴땐 귀찮음 -_-;;;;
• 아티스트가 좋아하는 툴만 주면 그거 만지면서 신나서 조용해짐..(응?)
아티스트가 생각하는 방법 1/2
• 렐릭 테크니컬 아티스트와 수많은 미팅 (Thanks, Nick Carota!)
• 5가지 큰 카테고리로 생각
• Diffuse: 표면의 색은 어떤가?
• Bumpiness: 표면이 얼마나 울퉁불퉁한가
• Reflectance: 표면의 반사정도는?
• Lighting: 조명 관련
• Etc: 기타 잡다한것, 생각하기 싫은것, 꼴도 보기 싫은 것.. (응?)
아티스트가 생각하는 방법 2/2
• 이것저것 시도(experiment)를 할 수 있어야함
• 단 주관식보단 객관식이어야 함
• 결론:
• 아티스트에겐 직관적인 객관식 UI
• 3DS Max 내에서 실시간 실험이 가능하도록 속은 Uber Shader
UI 뜯어고치기 – ITERATION 1
• 아티스트가 생각하는 category별로 UI 제공
• 게임에서 보는 것처럼 셰이더 기법의 실시간 프리뷰 가능(WYSIWYG)
카테고리별 UI
• Lighting
• Diffuse
• Normal
• Reflectance
• 기타 등등
DIFFUSE
• UV 채널 선택
• Tint / Emissive 색상
• Ambient 색상
• 기타 등등
DIFFUSE
• 16가지 기법 드롭다운
• 기법따라 각종 UI 활성화 /
비활성화
• 다양한 블렌딩 모드 지원
• 알파
• 버텍스
• 마스크 등등
PLAY TIME!!
NORMAL
• Local / Tangent 공간
• Channel 선택
• 텍스처 Reload 버튼
NORMAL
• 4가지 기법 드롭다운
• None도 옵션
• 한 때 Parallax Map 지원
• 하지만 아무도 안써서 지움
• 성능도 별로였음
• UI 활성화/비활성화
PLAY TIME!!
REFLECTANCE
• 뭔가 반사한다는 뜻 (이름은
아직도 맘에 안듬 -_-)
• Specular Map
• Multiply 색상
• 거울반사효과
• 기타 온갖 parameter들
REFLECTANCE
• 7 Reflectance 기법
• None 도 옵션
• Derived Specular: 디퓨즈
맵으로부터 계산한 Spec 맵
• UI 활성화 / 비활성화
LIGHTING
• Light Property Map
• Roughness 채널뿐
• 오렌 네이어 조명에 쓰임
• 사실 다른채널도 쓰였었으나
• 마지막에 최적화로 다 제거
• 두가지 라이트 프리뷰
• 맥스 라이팅
• 게임 라이팅
PLAY TIME!!
기타
• 물리 성질
• 오디오 등에 이용
• 블렌딩 모드
• 컬링 모드 등등
• 소팅 바이어스
UI 뜯어고치기 – ITERATION 2
• 3DS Max의 DirectX 머테리얼이 지원하는 UI Interaction 모두 지원
• 버튼 위에 텍스처 파일 끓어놓기
• 오른쪽 버튼  복사  오른쪽 버튼  붙여넣기 지원
• 버튼 위에 오른쪽 마우스 버튼 눌러 파일 경로열기
• 등등등….. 정말로 온갖 잡다한 것들…. -_-
• Max 자체 컨트롤로 지원 불가능  좌절  Max에서 .NET Object 지원
• 단 3DS Max 9에서 .NET 컨트롤을 함수인자로 못건냄  복붙복붙  3874라인 코드 -_-
오른쪽 버튼 액션
UI 뜯어고치기 – ITERATION 3
• 게임 조명 Preview
• 캐릭터 기법도 포함  별도의 category
게임조명 PREVIEW
• 별도의 UI
• 게임속 대표 레벨들의 조명세팅을
3개의 라이팅 정보로 저장
• 근사치일 뿐
• 게임은 디퍼드
• 맥스는 포워드
캐릭터 기법
• 싱글/멀티플레이어용 캐릭터 구분
• 멀티플레이어일 경우 3가지 페인트
색상으로 프리뷰 가능
• Preset으로 색상을 프리뷰할수 있는
별도의 UI도 존재
캐릭터 기법
• 게임속에서는 데칼, 페인트 색 등을
유저 커스터마이제이션에서 받아옴
• 멀티플레이어 레벨 로드시 텍스처
조합 및 페인트 적용 후 실시간 DXT
압축
• 따로 강연을 할 정도의 방대한 양이니
이걸로 생략….
프로그래머를 위한(?) 내부구현 원리
• 3DS Max UI는 Uber Shader의 각 스위치를 끄고 켜는 역할이 주
• pNormalOn = 1
• pDiffuse2On = 1
• pTintColourOn = 0
• 텍스쳐 등 기타 parameter를 대입하기도 함
• pDiffuseColour = vector4(1, 0, 0.2, 0.5);
• pDiffuseTexture = LoadTexture(“c:popeImSoSexy.png”);
2. 성능 문제 해결
• 아티스트가 선택한 옵션에 따라 게임 셰이더와 매핑 (예: Diff2_Norm_Spec.shd)
• 하지만 정말 창의적인 아티스트가 아직 게임속에 없는 셰이더를 만들면?
Diff2UV01_VtxTint_Norm2_Spec2 셰이더가
없습니다. 핫핑크 셰이더로 대체하겠습니다.
이 셰이더를 추가하려면 셰이더 문지기를
찾아주세요~
게이트 키퍼?
• 어떤 셰이더를 게임속에 넣을건지 결정하는 렌더링 프로그래머
• 스페이스마린 프로젝트에선 발표자(포프)가 게이트키퍼였음
• 존재이유: 아티스트의 필요와 성능상의 밸런스 유지
• 간단히 말해 노드기반 셰이더 제작의 단점 해결
• 아티스트가 비슷비슷한 수천개의 셰이더를 만드는 것을 방지
• 성능이 확~ 떨어지는 셰이더 제작을 방지
검토 가이드라인
• 셰이더 하나에 쓸 수있는 텍스처는 5개 (술 사주면 6개까지 허용 -_-)
• 이미 존재하는 기법중에 UV 채널만 바뀐 게 있나 확인
• 좀 더 최적화된 셰이더를 이용할 수 있는지 검토
• 예: 텍스처 대신 일반 변수 하나로 처리할 수 있는 경우
• 검토에 걸리는 시간은 5분 미만
• 결과에 따라 결정은 둘 중 하나
아무 문제 없을 경우
오오~ 정말 필요한 셰이더구만.
성능도 문제없고 아트도 정말
이쁘고…
응응~ 내가 5분안에 추가해줄께~
잠만 기둘려~
꺄아~ o(^_^)o
문제가 있을 경우
주.글.래? -_-+
…..는 농담이고
자~
이 셰이더는 이런이런 문제가 있으니 그
대신 이걸 이렇게 고쳐봐요.
그럼 괜찮을거에요.
그걸로 안되면 다시 찾아와요~
너무 무서우니 좀 웃어도 주고…
자~
이 셰이더는 이런이런 문제가 있으니 그
대신 이걸 이렇게 고쳐봐요.
그럼 괜찮을거에요.
그걸로 안되면 다시 찾아와요~
사랑한다고도 좀 해주고…(응?)
자~
이 셰이더는 이런이런 문제가 있으니 그
대신 이걸 이렇게 고쳐봐요.
그럼 괜찮을거에요.
그걸로 안되면 다시 찾아와요~
굳이 3DS MAX에서 이짓을 한
이유는?
• 아트품질 향상
• Tech Artist가 아닌 일반 아티스트가 Uber Shader로 실험 가능
• 실험 중에는 게임 셰이더에 제한받지 않음
• 3DS 맥스는 아티스트가 가장 좋아하고 온갖 꼼수를 다 부릴 수 있는 툴
• 게임으로 export해서 테스트하는 데 낭비하는 시간이 없음  무한 Iterations
• 아티스트  게임 중간에 Gate Keeper를 둠으로써 성능문제도 해결
다른 각도에서 재정리
다른 게임의 워크플로
모델링
(MAX)
아트 툴
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
아트 툴
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
미리보기
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
몇초
?
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
몇초
?
메쉬변환
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
몇초
?
메쉬변환
텍스처압축
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
몇초
?
메쉬변환
텍스처압축
마테리얼생성
등등
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
~수십번
다른 게임의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
~수십번
가끔 크래쉬
= 재부팅
= 몇분?
스페이스마린의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
~수십번
스페이스마린의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
미리보기
0초0초
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
스페이스마린의 워크플로
모델링
(MAX)
텍스처링
(포토샵)
< 5 초0초
아트 툴
게임 or 엔진툴
라이팅
~1분이상
메쉬변환
텍스처압축
마테리얼생성
등등
미리보기
0초 0초
낭비하는 시간 비교
(텍스처 수정 20회, 프리뷰 10회)
• 다른엔진: 20 x 5초 + 10 x 1분 = 11분 40초
• 스페이스마린: 20 x 5초 + 1 분 = 2분 40초  4.375배 빠름!
낭비하는 시간 비교
예: (텍스처 수정 20회, 프리뷰 100회)
• 다른엔진: 20 x 5초 + 100 x 1분 = 101분 40초
• 스페이스마린: 20 x 5초 + 1 분 = 2분 40초  38.125배 빠름!
낭비하는 시간 비교
예: (텍스처 수정 20회, 프리뷰 100회)
• 다른엔진: 20 x 5초 + 100 x 1분 = 101분 40초  사실상 불가능!
• 스페이스마린: 20 x 5초 + 1 분 = 2분 40초  38.125배 빠름!
하지만 문제는 있었다.
• 게임 출시를 몇 달 앞두고 다른 팀에서 아티스트들을 많이 빌려옴
• 하지만 출시가 임박해서 더 이상 새로운 셰이더 추가 불가
• 더 이상 실험(experiment)는 의미가 없음
• 기존에 있던 셰이더를 골라서 사용하는 게 더 일반적인 workflow가 되었음
간단한 꼼수
• 맥스 우버세이더 머테리얼에 새로운
rollout 추가
• 현존하는 셰이더를 하드에서 검색
• 셰이더 이름 토큰따라 맥스
우버셰이더의 옵션을 키고 꺼줌
게임 / MAX간의 차이
• 디퍼드 / 포워드 라이팅 차이
• SSAO
• World Space AO (http://kblog.popekim.com/2011/11/blog-post.html 참조)
• 색상 보정 (Color Correction)
• 기타 Full-screen 효과들
• 그래도 90프로 이상 매치!!
정리 / FUTURE WORK / 주의할 점
• 테크니컬 아티스트의 중요성: VISION!
• Future Work: 비슷한 셰이더들을 모아서 공통된 부모 셰이더로 합쳐주기
• 이럼 Category별로 셰이더 만들어 주는것과 비슷함
• 셰이더 스위칭에 따른 성능저하 방지 (라고 하나 이젠 별 의미 없을지도…?)
• 주의할 점:
• 새 맥스 뷰포트에선 작동안함(preference  viewport  choose driver  Direct 3D
• fx파일의 pass에서 SRGBWriteEnable 지원안됨(Max 2012)  셰이더 코드로 변환
그냥 재밌는(?) 통계
• Max 우버셰이더: 1940줄 (자체 셰이더 노드 에디터로부터 생성)
• 머테리얼용 맥스 스크립트 : 3873줄 (.NET 버튼 Object등을 인자로 못넘겨서 복붙)
• 최종 셰이더 수: 107개
• 컴파일된 셰이더 크기: < 8MB
• 아티스트 Iteration 횟수: 수없이 많이, 아마 게임사상 최고일지도 -_-
• 아티스트의 포팅 요청: 새로운 게임팀에 갈 때마다…
SPECIAL THANKS
• 발표 허락해준 현/전 회사: EA 스포츠 FIFA, Relic Entertainment(SEGA)
• 같이 이 셰이더 UI를 발명한 렐릭의 전 테크니컬 아티스트 Nick Carota
• 멋진 셰이더 정의를 훔쳐 쓰게 허락해주신 Ndoors의 정종필 부장님
• 강연자료 검토 및 피드백 주신 이현정님
• 제 블로그와 유튜브를 즐겨 봐주시는 분들
• 라고님, 이네노님 ( 이유는 다음 장에… -_-;;;; )
꽃미남드립 대신 팬아트 보여주며 질문받기(응?)

Contenu connexe

Tendances

[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기동석 김
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더동석 김
 
리얼타임 렌더링에 대해
리얼타임 렌더링에 대해리얼타임 렌더링에 대해
리얼타임 렌더링에 대해필성 권
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리changehee lee
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow MappingSukwoo Lee
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013영욱 오
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意UnityTechnologiesJapan002
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingYEONG-CHEON YOU
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기강 민우
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유Hwan Min
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 

Tendances (20)

[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
[Ndc13]Ndc 2013 김동석:UDK로 물리기반 셰이더 만들기
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
 
리얼타임 렌더링에 대해
리얼타임 렌더링에 대해리얼타임 렌더링에 대해
리얼타임 렌더링에 대해
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
Shadow mapping 정리
Shadow mapping 정리Shadow mapping 정리
Shadow mapping 정리
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 
High dynamic range
High dynamic rangeHigh dynamic range
High dynamic range
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
Ndc11 이창희_hdr
Ndc11 이창희_hdrNdc11 이창희_hdr
Ndc11 이창희_hdr
 
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
【Unite Tokyo 2018】『崩壊3rd』開発者が語るアニメ風レンダリングの極意
 
Hierachical z Map Occlusion Culling
Hierachical z Map Occlusion CullingHierachical z Map Occlusion Culling
Hierachical z Map Occlusion Culling
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
Motion blur
Motion blurMotion blur
Motion blur
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 

Similaire à 아티스트에게 사랑받는 3DS Max 우버쉐이더

Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?KwangSam Kim
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
Halo ce anniversary Postmortem
Halo ce anniversary PostmortemHalo ce anniversary Postmortem
Halo ce anniversary Postmortem진상 문
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipelinechangehee lee
 
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)valhashi
 
MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일drandom
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicLee Jungpyo
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기JP Jung
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 JiUng Choi
 
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)GAMENEXT Works
 
[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KORJisang Yoon
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo Kim
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4민웅 이
 
셰이더 합성
셰이더 합성셰이더 합성
셰이더 합성JiUng Choi
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 

Similaire à 아티스트에게 사랑받는 3DS Max 우버쉐이더 (20)

Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
Unite 2015 Seoul : 인디에게 어디가 한계인지는 해봐야 알잖아?
 
[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
Halo ce anniversary Postmortem
Halo ce anniversary PostmortemHalo ce anniversary Postmortem
Halo ce anniversary Postmortem
 
Shader compilation
Shader compilationShader compilation
Shader compilation
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
TA가 뭐예요? (What is a Technical Artist? 블루홀스튜디오)
 
MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일MMORPG게임엔진의 현재와미래 by 장언일
MMORPG게임엔진의 현재와미래 by 장언일
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
Tonicscape
TonicscapeTonicscape
Tonicscape
 
Kgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmicKgc2014 jplee allegorithmic
Kgc2014 jplee allegorithmic
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기Unity3D로 풀3D web mmorpg 만들기
Unity3D로 풀3D web mmorpg 만들기
 
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록 [KGC2014] 울프나이츠 엔진 프로그래밍 기록
[KGC2014] 울프나이츠 엔진 프로그래밍 기록
 
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
[GAMENEXT] 10년을 혈십자와 보내고.. (별바람 스튜디오)
 
[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR[GDC] Perry_POCBasedDesign_KOR
[GDC] Perry_POCBasedDesign_KOR
 
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
 
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
 
셰이더 합성
셰이더 합성셰이더 합성
셰이더 합성
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 

아티스트에게 사랑받는 3DS Max 우버쉐이더

  • 1. 아티스트에게 사랑받는 3DS MAX 우버 셰이더 Pope Kim Rendering Engineer, EA Sports FIFA Korea Game Conference 2013
  • 2. 이유가 불분명한 난이도 조절용 설문조사 • 프로그래머 vs 아티스트 vs 테크니컬 아티스트? • 현업개발자 vs 지망생? • 셰이더가 뭔지 아시는 분 vs 모르시는 분? • 우버 셰이더(uber shader)가 뭔지 아시는 분 vs 모르는 분?
  • 3. 발표자 소개 - 현재 • EA 스포츠 FIFA 팀, 렌더링 엔지니어 (PS4, Xbox One) • 서강대 게임개발 교육원 초빙교수 • 컨퍼런스 발표: 시그래프 2012, KGC 2011/2012/2013 • 저자 • 셰이더 프로그래밍 입문 (한빛미디어): 현재 영문판 집필중 • (게임개발자가 대우받는) 북미취업 가이드 (연두미디어) • 감수자 • HLSL Shader Cookbook (영문, Packt Pub) • 게임 매니악스 – 슈팅 게임 알고리즘 (한빛미디어)
  • 4. 발표자 소개 - 과거 • 첫 게임개발시작: 1993년 정도 • 중간 외도 기간: 6년 (연세대 법학과 졸업 및 고시준비 -_-;;) • 최근 회사들: 아이도스/스퀘어 에닉스 몬트리올, 렐릭/세가/THQ, 캡콤 밴쿠버 • 과거 개발한 플랫폼들: Xbox 360, PS3, PS2, PSP, Wii, PC • 캐나다 AI대학 셰이더 프로그래밍 선생질: 3년 (part-time)
  • 5. 발표자 소개 - 기타 • 마이크로소프트 Visual C++ MVP • 게임개발 포에버 얼굴마담 (www.gamedevforever.com) • 포프TV(www.youtube.com/user/KimPopeTV), 블로그(kblog.popekim.com), • 트위터 @BlindRendererKR (한국어) @BlindRenderer (영어) • 올해는 꽃미남 드립 생략 -_-;;; • 출시한 게임수: 많음…
  • 7. 오늘의 발표 • KGC 2011/ 2012 보단 덜 기술적 • Uber Shader는 이미 잘 알려진 것 • 하지만 프로그래머와 아티스트에게 모두 나름 문제있던 기법 • 2008년에 스페이스마린 프로젝트(Relic)에서 그 문제를 해결한 방법 소개 • 주로 아티스트의 효율성을 높이는 방법 (이유: 아티스트 시간이 제작비의 대부분) • 아티스트들이 보고 프로그래머에게 “이거 해주세요~” 라고 하길…
  • 8. 셰이더란? • HLSL 셰이더 프로그래밍 입문: (당연 제 책 광고) “셰이더란 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수” • Ndoors의 테크니컬 아티스트 디렉터 정종필 부장님: “셰이더는 재질(때깔)이다”
  • 9. 게임만드려면 셰이더가 몇개나? • 갈팡질팡 • 그래픽 프로그래머 / 아티스트 중에 목소리 높은 팀 맘대로 일지도… -_-;;; • 아니면 그냥 남이 하는게 더 멋져 보여서… -_-;;; • 3가지 예 • 아트마다 하나씩 • 대충 종류별로 하나씩 • 그리고 Uber Shader
  • 10. 아트마다 하나씩 • 장점 • 필요에 따라 셰이더를 자유로이 만들 수 있음 • 언리얼 등을 비롯 노드기반 셰이더를 지원하는 프로그램도 있음 (요즘 추세) • 단점 • 셰이더 관리 • 성능 • 생각보다 아티스트(테크 아티스트가 아닌)가 배우기 힘듬
  • 11. 아트마다 - 단점 • 노드기반으론 이런 만행이 쉬움 -_- 출처: http://warby.bitproll.de/
  • 12. 대충 종류별로 하나씩 • 게임에 들어가는 아트 종류별로 셰이더를 하나씩 만듬 • 캐릭터 셰이더, 소품 셰이더 등등 • 장점 • 셰이더 관리가 쉬움 • 성능 • 단점 • 새로운 실험을 하거나 셰이더를 새로 만들기 힘듬 • 안쓰는 패러미터의 기본값 설정하기 귀찮음… -_-
  • 13. UBER SHADER • 셰이더 하나로 모든걸 처리. 무수히 많은 ON/OFF 스위치 • 장점 • 실험하기 정말 쉬움 • 게임 셰이더 관리도 쉬움 (하나뿐이니 -_-) • 단점: 전에 설명했던 방법들의 모든 단점의 총집함 • 아티스트 고문 • 성능
  • 14. UBER SHADER - 단점
  • 15. UBER SHADER - 단점
  • 16. 1. 아티스트 고문문제 해법 • 한 번 해보죠 (고문말고.. 해결… -_-;;;)
  • 17. 정작 모든 셰이더 시스템의 문제점은.. • 프로그래머 위주의 생각… • 아티스트에게 프로그래머 위주의 생각을 강요. (예: 이건 수학적으로 원래 그렇게 작동하는거니 이렇게 이해해서 해요 -_-+ ) • 물론 아티스트가 징징 거릴땐 귀찮음 -_-;;;; • 아티스트가 좋아하는 툴만 주면 그거 만지면서 신나서 조용해짐..(응?)
  • 18. 아티스트가 생각하는 방법 1/2 • 렐릭 테크니컬 아티스트와 수많은 미팅 (Thanks, Nick Carota!) • 5가지 큰 카테고리로 생각 • Diffuse: 표면의 색은 어떤가? • Bumpiness: 표면이 얼마나 울퉁불퉁한가 • Reflectance: 표면의 반사정도는? • Lighting: 조명 관련 • Etc: 기타 잡다한것, 생각하기 싫은것, 꼴도 보기 싫은 것.. (응?)
  • 19. 아티스트가 생각하는 방법 2/2 • 이것저것 시도(experiment)를 할 수 있어야함 • 단 주관식보단 객관식이어야 함 • 결론: • 아티스트에겐 직관적인 객관식 UI • 3DS Max 내에서 실시간 실험이 가능하도록 속은 Uber Shader
  • 20. UI 뜯어고치기 – ITERATION 1 • 아티스트가 생각하는 category별로 UI 제공 • 게임에서 보는 것처럼 셰이더 기법의 실시간 프리뷰 가능(WYSIWYG)
  • 21. 카테고리별 UI • Lighting • Diffuse • Normal • Reflectance • 기타 등등
  • 22. DIFFUSE • UV 채널 선택 • Tint / Emissive 색상 • Ambient 색상 • 기타 등등
  • 23. DIFFUSE • 16가지 기법 드롭다운 • 기법따라 각종 UI 활성화 / 비활성화 • 다양한 블렌딩 모드 지원 • 알파 • 버텍스 • 마스크 등등
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. NORMAL • Local / Tangent 공간 • Channel 선택 • 텍스처 Reload 버튼
  • 31. NORMAL • 4가지 기법 드롭다운 • None도 옵션 • 한 때 Parallax Map 지원 • 하지만 아무도 안써서 지움 • 성능도 별로였음 • UI 활성화/비활성화
  • 33.
  • 34.
  • 35.
  • 36. REFLECTANCE • 뭔가 반사한다는 뜻 (이름은 아직도 맘에 안듬 -_-) • Specular Map • Multiply 색상 • 거울반사효과 • 기타 온갖 parameter들
  • 37. REFLECTANCE • 7 Reflectance 기법 • None 도 옵션 • Derived Specular: 디퓨즈 맵으로부터 계산한 Spec 맵 • UI 활성화 / 비활성화
  • 38. LIGHTING • Light Property Map • Roughness 채널뿐 • 오렌 네이어 조명에 쓰임 • 사실 다른채널도 쓰였었으나 • 마지막에 최적화로 다 제거 • 두가지 라이트 프리뷰 • 맥스 라이팅 • 게임 라이팅
  • 40.
  • 41.
  • 42.
  • 43.
  • 44. 기타 • 물리 성질 • 오디오 등에 이용 • 블렌딩 모드 • 컬링 모드 등등 • 소팅 바이어스
  • 45. UI 뜯어고치기 – ITERATION 2 • 3DS Max의 DirectX 머테리얼이 지원하는 UI Interaction 모두 지원 • 버튼 위에 텍스처 파일 끓어놓기 • 오른쪽 버튼  복사  오른쪽 버튼  붙여넣기 지원 • 버튼 위에 오른쪽 마우스 버튼 눌러 파일 경로열기 • 등등등….. 정말로 온갖 잡다한 것들…. -_- • Max 자체 컨트롤로 지원 불가능  좌절  Max에서 .NET Object 지원 • 단 3DS Max 9에서 .NET 컨트롤을 함수인자로 못건냄  복붙복붙  3874라인 코드 -_-
  • 47. UI 뜯어고치기 – ITERATION 3 • 게임 조명 Preview • 캐릭터 기법도 포함  별도의 category
  • 48. 게임조명 PREVIEW • 별도의 UI • 게임속 대표 레벨들의 조명세팅을 3개의 라이팅 정보로 저장 • 근사치일 뿐 • 게임은 디퍼드 • 맥스는 포워드
  • 49. 캐릭터 기법 • 싱글/멀티플레이어용 캐릭터 구분 • 멀티플레이어일 경우 3가지 페인트 색상으로 프리뷰 가능 • Preset으로 색상을 프리뷰할수 있는 별도의 UI도 존재
  • 50. 캐릭터 기법 • 게임속에서는 데칼, 페인트 색 등을 유저 커스터마이제이션에서 받아옴 • 멀티플레이어 레벨 로드시 텍스처 조합 및 페인트 적용 후 실시간 DXT 압축 • 따로 강연을 할 정도의 방대한 양이니 이걸로 생략….
  • 51. 프로그래머를 위한(?) 내부구현 원리 • 3DS Max UI는 Uber Shader의 각 스위치를 끄고 켜는 역할이 주 • pNormalOn = 1 • pDiffuse2On = 1 • pTintColourOn = 0 • 텍스쳐 등 기타 parameter를 대입하기도 함 • pDiffuseColour = vector4(1, 0, 0.2, 0.5); • pDiffuseTexture = LoadTexture(“c:popeImSoSexy.png”);
  • 52. 2. 성능 문제 해결 • 아티스트가 선택한 옵션에 따라 게임 셰이더와 매핑 (예: Diff2_Norm_Spec.shd) • 하지만 정말 창의적인 아티스트가 아직 게임속에 없는 셰이더를 만들면? Diff2UV01_VtxTint_Norm2_Spec2 셰이더가 없습니다. 핫핑크 셰이더로 대체하겠습니다. 이 셰이더를 추가하려면 셰이더 문지기를 찾아주세요~
  • 53. 게이트 키퍼? • 어떤 셰이더를 게임속에 넣을건지 결정하는 렌더링 프로그래머 • 스페이스마린 프로젝트에선 발표자(포프)가 게이트키퍼였음 • 존재이유: 아티스트의 필요와 성능상의 밸런스 유지 • 간단히 말해 노드기반 셰이더 제작의 단점 해결 • 아티스트가 비슷비슷한 수천개의 셰이더를 만드는 것을 방지 • 성능이 확~ 떨어지는 셰이더 제작을 방지
  • 54. 검토 가이드라인 • 셰이더 하나에 쓸 수있는 텍스처는 5개 (술 사주면 6개까지 허용 -_-) • 이미 존재하는 기법중에 UV 채널만 바뀐 게 있나 확인 • 좀 더 최적화된 셰이더를 이용할 수 있는지 검토 • 예: 텍스처 대신 일반 변수 하나로 처리할 수 있는 경우 • 검토에 걸리는 시간은 5분 미만 • 결과에 따라 결정은 둘 중 하나
  • 55. 아무 문제 없을 경우 오오~ 정말 필요한 셰이더구만. 성능도 문제없고 아트도 정말 이쁘고… 응응~ 내가 5분안에 추가해줄께~ 잠만 기둘려~ 꺄아~ o(^_^)o
  • 57. …..는 농담이고 자~ 이 셰이더는 이런이런 문제가 있으니 그 대신 이걸 이렇게 고쳐봐요. 그럼 괜찮을거에요. 그걸로 안되면 다시 찾아와요~
  • 58. 너무 무서우니 좀 웃어도 주고… 자~ 이 셰이더는 이런이런 문제가 있으니 그 대신 이걸 이렇게 고쳐봐요. 그럼 괜찮을거에요. 그걸로 안되면 다시 찾아와요~
  • 59. 사랑한다고도 좀 해주고…(응?) 자~ 이 셰이더는 이런이런 문제가 있으니 그 대신 이걸 이렇게 고쳐봐요. 그럼 괜찮을거에요. 그걸로 안되면 다시 찾아와요~
  • 60. 굳이 3DS MAX에서 이짓을 한 이유는? • 아트품질 향상 • Tech Artist가 아닌 일반 아티스트가 Uber Shader로 실험 가능 • 실험 중에는 게임 셰이더에 제한받지 않음 • 3DS 맥스는 아티스트가 가장 좋아하고 온갖 꼼수를 다 부릴 수 있는 툴 • 게임으로 export해서 테스트하는 데 낭비하는 시간이 없음  무한 Iterations • 아티스트  게임 중간에 Gate Keeper를 둠으로써 성능문제도 해결
  • 65. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 미리보기
  • 66. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기
  • 67. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초
  • 68. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 몇초 ?
  • 69. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 몇초 ? 메쉬변환
  • 70. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 몇초 ? 메쉬변환 텍스처압축
  • 71. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 몇초 ? 메쉬변환 텍스처압축 마테리얼생성 등등
  • 72. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등
  • 73. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등
  • 74. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등 ~수십번
  • 75. 다른 게임의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등 ~수십번 가끔 크래쉬 = 재부팅 = 몇분?
  • 76. 스페이스마린의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등 ~수십번
  • 77. 스페이스마린의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 미리보기 0초0초 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등
  • 78. 스페이스마린의 워크플로 모델링 (MAX) 텍스처링 (포토샵) < 5 초0초 아트 툴 게임 or 엔진툴 라이팅 ~1분이상 메쉬변환 텍스처압축 마테리얼생성 등등 미리보기 0초 0초
  • 79. 낭비하는 시간 비교 (텍스처 수정 20회, 프리뷰 10회) • 다른엔진: 20 x 5초 + 10 x 1분 = 11분 40초 • 스페이스마린: 20 x 5초 + 1 분 = 2분 40초  4.375배 빠름!
  • 80. 낭비하는 시간 비교 예: (텍스처 수정 20회, 프리뷰 100회) • 다른엔진: 20 x 5초 + 100 x 1분 = 101분 40초 • 스페이스마린: 20 x 5초 + 1 분 = 2분 40초  38.125배 빠름!
  • 81. 낭비하는 시간 비교 예: (텍스처 수정 20회, 프리뷰 100회) • 다른엔진: 20 x 5초 + 100 x 1분 = 101분 40초  사실상 불가능! • 스페이스마린: 20 x 5초 + 1 분 = 2분 40초  38.125배 빠름!
  • 82. 하지만 문제는 있었다. • 게임 출시를 몇 달 앞두고 다른 팀에서 아티스트들을 많이 빌려옴 • 하지만 출시가 임박해서 더 이상 새로운 셰이더 추가 불가 • 더 이상 실험(experiment)는 의미가 없음 • 기존에 있던 셰이더를 골라서 사용하는 게 더 일반적인 workflow가 되었음
  • 83. 간단한 꼼수 • 맥스 우버세이더 머테리얼에 새로운 rollout 추가 • 현존하는 셰이더를 하드에서 검색 • 셰이더 이름 토큰따라 맥스 우버셰이더의 옵션을 키고 꺼줌
  • 84. 게임 / MAX간의 차이 • 디퍼드 / 포워드 라이팅 차이 • SSAO • World Space AO (http://kblog.popekim.com/2011/11/blog-post.html 참조) • 색상 보정 (Color Correction) • 기타 Full-screen 효과들 • 그래도 90프로 이상 매치!!
  • 85. 정리 / FUTURE WORK / 주의할 점 • 테크니컬 아티스트의 중요성: VISION! • Future Work: 비슷한 셰이더들을 모아서 공통된 부모 셰이더로 합쳐주기 • 이럼 Category별로 셰이더 만들어 주는것과 비슷함 • 셰이더 스위칭에 따른 성능저하 방지 (라고 하나 이젠 별 의미 없을지도…?) • 주의할 점: • 새 맥스 뷰포트에선 작동안함(preference  viewport  choose driver  Direct 3D • fx파일의 pass에서 SRGBWriteEnable 지원안됨(Max 2012)  셰이더 코드로 변환
  • 86. 그냥 재밌는(?) 통계 • Max 우버셰이더: 1940줄 (자체 셰이더 노드 에디터로부터 생성) • 머테리얼용 맥스 스크립트 : 3873줄 (.NET 버튼 Object등을 인자로 못넘겨서 복붙) • 최종 셰이더 수: 107개 • 컴파일된 셰이더 크기: < 8MB • 아티스트 Iteration 횟수: 수없이 많이, 아마 게임사상 최고일지도 -_- • 아티스트의 포팅 요청: 새로운 게임팀에 갈 때마다…
  • 87. SPECIAL THANKS • 발표 허락해준 현/전 회사: EA 스포츠 FIFA, Relic Entertainment(SEGA) • 같이 이 셰이더 UI를 발명한 렐릭의 전 테크니컬 아티스트 Nick Carota • 멋진 셰이더 정의를 훔쳐 쓰게 허락해주신 Ndoors의 정종필 부장님 • 강연자료 검토 및 피드백 주신 이현정님 • 제 블로그와 유튜브를 즐겨 봐주시는 분들 • 라고님, 이네노님 ( 이유는 다음 장에… -_-;;;; )
  • 88. 꽃미남드립 대신 팬아트 보여주며 질문받기(응?)