Top Banner
아티스트에게 사랑받는 3DS MAX 우버 셰이더 Pope Kim Rendering Engineer, EA Sports FIFA Korea Game Conference 2013
88

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

Jul 04, 2015

Download

Technology

KGC 2013 강연자료입니다. 스페이스마린에서 사용했던 아티스트의 눈높이에 맞춘 3DS Max 우버 셰이더입니다.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 아티스트에게 사랑받는 3DS Max 우버쉐이더

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

Pope KimRendering Engineer, EA Sports FIFA

Korea Game Conference 2013

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

이유가 불분명한 난이도 조절용 설문조사

• 프로그래머 vs 아티스트 vs 테크니컬 아티스트?

• 현업개발자 vs 지망생?

• 셰이더가 뭔지 아시는 분 vs 모르시는 분?

• 우버 셰이더(uber shader)가 뭔지 아시는 분 vs 모르는 분?

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

발표자 소개 - 현재

• EA 스포츠 FIFA 팀, 렌더링 엔지니어 (PS4, Xbox One)

• 서강대 게임개발 교육원 초빙교수

• 컨퍼런스 발표: 시그래프 2012, KGC 2011/2012/2013

• 저자

• 셰이더 프로그래밍 입문 (한빛미디어): 현재 영문판 집필중

• (게임개발자가 대우받는) 북미취업 가이드 (연두미디어)

• 감수자

• HLSL Shader Cookbook (영문, Packt Pub)

• 게임 매니악스 – 슈팅 게임 알고리즘 (한빛미디어)

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

발표자 소개 - 과거

• 첫 게임개발시작: 1993년 정도

• 중간 외도 기간: 6년 (연세대 법학과 졸업 및 고시준비 -_-;;)

• 최근 회사들: 아이도스/스퀘어 에닉스 몬트리올, 렐릭/세가/THQ, 캡콤 밴쿠버

• 과거 개발한 플랫폼들: Xbox 360, PS3, PS2, PSP, Wii, PC

• 캐나다 AI대학 셰이더 프로그래밍 선생질: 3년 (part-time)

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

발표자 소개 - 기타

• 마이크로소프트 Visual C++ MVP

• 게임개발 포에버 얼굴마담 (www.gamedevforever.com)

• 포프TV(www.youtube.com/user/KimPopeTV), 블로그(kblog.popekim.com),

• 트위터 @BlindRendererKR (한국어) @BlindRenderer (영어)

• 올해는 꽃미남 드립 생략 -_-;;;

• 출시한 게임수: 많음…

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

많음 -_-;

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

오늘의 발표

• KGC 2011/ 2012 보단 덜 기술적

• Uber Shader는 이미 잘 알려진 것

• 하지만 프로그래머와 아티스트에게 모두 나름 문제있던 기법

• 2008년에 스페이스마린 프로젝트(Relic)에서 그 문제를 해결한 방법 소개

• 주로 아티스트의 효율성을 높이는 방법 (이유: 아티스트 시간이 제작비의 대부분)

• 아티스트들이 보고 프로그래머에게 “이거 해주세요~” 라고 하길…

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

셰이더란?

• HLSL 셰이더 프로그래밍 입문: (당연 제 책 광고)

“셰이더란 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수”

• Ndoors의 테크니컬 아티스트 디렉터 정종필 부장님:

“셰이더는 재질(때깔)이다”

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

게임만드려면 셰이더가 몇개나?

• 갈팡질팡

• 그래픽 프로그래머 / 아티스트 중에 목소리 높은 팀 맘대로 일지도… -_-;;;

• 아니면 그냥 남이 하는게 더 멋져 보여서… -_-;;;

• 3가지 예

• 아트마다 하나씩

• 대충 종류별로 하나씩

• 그리고 Uber Shader

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

아트마다 하나씩

• 장점

• 필요에 따라 셰이더를 자유로이 만들 수 있음

• 언리얼 등을 비롯 노드기반 셰이더를 지원하는 프로그램도 있음 (요즘 추세)

• 단점

• 셰이더 관리

• 성능

• 생각보다 아티스트(테크 아티스트가 아닌)가 배우기 힘듬

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

아트마다 - 단점

• 노드기반으론 이런 만행이 쉬움 -_-

출처: http://warby.bitproll.de/

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

대충 종류별로 하나씩

• 게임에 들어가는 아트 종류별로 셰이더를 하나씩 만듬

• 캐릭터 셰이더, 소품 셰이더 등등

• 장점

• 셰이더 관리가 쉬움

• 성능

• 단점

• 새로운 실험을 하거나 셰이더를 새로 만들기 힘듬

• 안쓰는 패러미터의 기본값 설정하기 귀찮음… -_-

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

UBER SHADER

• 셰이더 하나로 모든걸 처리. 무수히 많은 ON/OFF 스위치

• 장점

• 실험하기 정말 쉬움

• 게임 셰이더 관리도 쉬움 (하나뿐이니 -_-)

• 단점: 전에 설명했던 방법들의 모든 단점의 총집함

• 아티스트 고문

• 성능

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

UBER SHADER - 단점

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

UBER SHADER - 단점

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

1. 아티스트 고문문제 해법

• 한 번 해보죠 (고문말고.. 해결… -_-;;;)

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

정작 모든 셰이더 시스템의문제점은..

• 프로그래머 위주의 생각…

• 아티스트에게 프로그래머 위주의 생각을 강요. (예: 이건 수학적으로 원래 그렇게

작동하는거니 이렇게 이해해서 해요 -_-+ )

• 물론 아티스트가 징징 거릴땐 귀찮음 -_-;;;;

• 아티스트가 좋아하는 툴만 주면 그거 만지면서 신나서 조용해짐..(응?)

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

아티스트가 생각하는 방법 1/2

• 렐릭 테크니컬 아티스트와 수많은 미팅 (Thanks, Nick Carota!)

• 5가지 큰 카테고리로 생각

• Diffuse: 표면의 색은 어떤가?

• Bumpiness: 표면이 얼마나 울퉁불퉁한가

• Reflectance: 표면의 반사정도는?

• Lighting: 조명 관련

• Etc: 기타 잡다한것, 생각하기 싫은것, 꼴도 보기 싫은 것.. (응?)

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

아티스트가 생각하는 방법 2/2

• 이것저것 시도(experiment)를 할 수 있어야함

• 단 주관식보단 객관식이어야 함

• 결론:

• 아티스트에겐 직관적인 객관식 UI

• 3DS Max 내에서 실시간 실험이 가능하도록 속은 Uber Shader

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

UI 뜯어고치기 – ITERATION 1

• 아티스트가 생각하는 category별로 UI 제공

• 게임에서 보는 것처럼 셰이더 기법의 실시간 프리뷰 가능(WYSIWYG)

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

카테고리별 UI

• Lighting

• Diffuse

• Normal

• Reflectance

• 기타 등등

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

DIFFUSE

• UV 채널 선택

• Tint / Emissive 색상

• Ambient 색상

• 기타 등등

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

DIFFUSE

• 16가지 기법 드롭다운

• 기법따라 각종 UI 활성화 /

비활성화

• 다양한 블렌딩 모드 지원

• 알파

• 버텍스

• 마스크 등등

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

PLAY TIME!!

Page 25: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 26: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 27: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 28: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 29: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 30: 아티스트에게 사랑받는 3DS Max 우버쉐이더

NORMAL

• Local / Tangent 공간

• Channel 선택

• 텍스처 Reload 버튼

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

NORMAL

• 4가지 기법 드롭다운

• None도 옵션

• 한 때 Parallax Map 지원

• 하지만 아무도 안써서 지움

• 성능도 별로였음

• UI 활성화/비활성화

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

PLAY TIME!!

Page 33: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 34: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 35: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 36: 아티스트에게 사랑받는 3DS Max 우버쉐이더

REFLECTANCE

• 뭔가 반사한다는 뜻 (이름은

아직도 맘에 안듬 -_-)

• Specular Map

• Multiply 색상

• 거울반사효과

• 기타 온갖 parameter들

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

REFLECTANCE

• 7 Reflectance 기법

• None 도 옵션

• Derived Specular: 디퓨즈

맵으로부터 계산한 Spec 맵

• UI 활성화 / 비활성화

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

LIGHTING

• Light Property Map

• Roughness 채널뿐

• 오렌 네이어 조명에 쓰임

• 사실 다른채널도 쓰였었으나

• 마지막에 최적화로 다 제거

• 두가지 라이트 프리뷰

• 맥스 라이팅

• 게임 라이팅

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

PLAY TIME!!

Page 40: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 41: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 42: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 43: 아티스트에게 사랑받는 3DS Max 우버쉐이더
Page 44: 아티스트에게 사랑받는 3DS Max 우버쉐이더

기타

• 물리 성질

• 오디오 등에 이용

• 블렌딩 모드

• 컬링 모드 등등

• 소팅 바이어스

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

UI 뜯어고치기 – ITERATION 2

• 3DS Max의 DirectX 머테리얼이 지원하는 UI Interaction 모두 지원

• 버튼 위에 텍스처 파일 끓어놓기

• 오른쪽 버튼복사오른쪽 버튼붙여넣기 지원

• 버튼 위에 오른쪽 마우스 버튼 눌러 파일 경로열기

• 등등등….. 정말로 온갖 잡다한 것들…. -_-

• Max 자체 컨트롤로 지원 불가능좌절Max에서 .NET Object 지원

• 단 3DS Max 9에서 .NET 컨트롤을 함수인자로 못건냄복붙복붙 3874라인 코드 -_-

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

오른쪽 버튼 액션

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

UI 뜯어고치기 – ITERATION 3

• 게임 조명 Preview

• 캐릭터 기법도 포함별도의 category

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

게임조명 PREVIEW

• 별도의 UI

• 게임속 대표 레벨들의 조명세팅을

3개의 라이팅 정보로 저장

• 근사치일 뿐

• 게임은 디퍼드

• 맥스는 포워드

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

캐릭터 기법

• 싱글/멀티플레이어용 캐릭터 구분

• 멀티플레이어일 경우 3가지 페인트

색상으로 프리뷰 가능

• Preset으로 색상을 프리뷰할수 있는

별도의 UI도 존재

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

캐릭터 기법

• 게임속에서는 데칼, 페인트 색 등을

유저 커스터마이제이션에서 받아옴

• 멀티플레이어 레벨 로드시 텍스처

조합 및 페인트 적용 후 실시간 DXT

압축

• 따로 강연을 할 정도의 방대한 양이니

이걸로 생략….

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

프로그래머를 위한(?) 내부구현 원리

• 3DS Max UI는 Uber Shader의 각 스위치를 끄고 켜는 역할이 주

• pNormalOn = 1

• pDiffuse2On = 1

• pTintColourOn = 0

• 텍스쳐 등 기타 parameter를 대입하기도 함

• pDiffuseColour = vector4(1, 0, 0.2, 0.5);

• pDiffuseTexture = LoadTexture(“c:\pope\ImSoSexy.png”);

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

2. 성능 문제 해결

• 아티스트가 선택한 옵션에 따라 게임 셰이더와 매핑 (예: Diff2_Norm_Spec.shd)

• 하지만 정말 창의적인 아티스트가 아직 게임속에 없는 셰이더를 만들면?

Diff2UV01_VtxTint_Norm2_Spec2 셰이더가

없습니다. 핫핑크 셰이더로 대체하겠습니다.

이 셰이더를 추가하려면 셰이더 문지기를

찾아주세요~

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

게이트 키퍼?

• 어떤 셰이더를 게임속에 넣을건지 결정하는 렌더링 프로그래머

• 스페이스마린 프로젝트에선 발표자(포프)가 게이트키퍼였음

• 존재이유: 아티스트의 필요와 성능상의 밸런스 유지

• 간단히 말해 노드기반 셰이더 제작의 단점 해결

• 아티스트가 비슷비슷한 수천개의 셰이더를 만드는 것을 방지

• 성능이 확~ 떨어지는 셰이더 제작을 방지

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

검토 가이드라인

• 셰이더 하나에 쓸 수있는 텍스처는 5개 (술 사주면 6개까지 허용 -_-)

• 이미 존재하는 기법중에 UV 채널만 바뀐 게 있나 확인

• 좀 더 최적화된 셰이더를 이용할 수 있는지 검토

• 예: 텍스처 대신 일반 변수 하나로 처리할 수 있는 경우

• 검토에 걸리는 시간은 5분 미만

• 결과에 따라 결정은 둘 중 하나

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

아무 문제 없을 경우

오오~ 정말 필요한 셰이더구만.

성능도 문제없고 아트도 정말

이쁘고…

응응~ 내가 5분안에 추가해줄께~

잠만 기둘려~

꺄아~ o(^_^)o

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

문제가 있을 경우

주.글.래? -_-+

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

…..는 농담이고

자~

이 셰이더는 이런이런 문제가 있으니 그

대신 이걸 이렇게 고쳐봐요.

그럼 괜찮을거에요.

그걸로 안되면 다시 찾아와요~

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

너무 무서우니 좀 웃어도 주고…

자~

이 셰이더는 이런이런 문제가 있으니 그

대신 이걸 이렇게 고쳐봐요.

그럼 괜찮을거에요.

그걸로 안되면 다시 찾아와요~

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

사랑한다고도 좀 해주고…(응?)

자~

이 셰이더는 이런이런 문제가 있으니 그

대신 이걸 이렇게 고쳐봐요.

그럼 괜찮을거에요.

그걸로 안되면 다시 찾아와요~

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

굳이 3DS MAX에서 이짓을 한이유는?

• 아트품질 향상

• Tech Artist가 아닌 일반 아티스트가 Uber Shader로 실험 가능

• 실험 중에는 게임 셰이더에 제한받지 않음

• 3DS 맥스는 아티스트가 가장 좋아하고 온갖 꼼수를 다 부릴 수 있는 툴

• 게임으로 export해서 테스트하는 데 낭비하는 시간이 없음무한 Iterations

• 아티스트게임 중간에 Gate Keeper를 둠으로써 성능문제도 해결

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

다른 각도에서 재정리

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

다른 게임의 워크플로

모델링

(MAX)

아트 툴

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

아트 툴

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

미리보기

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

몇초

?

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

몇초

?메쉬변환

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

몇초

?메쉬변환

텍스처압축

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

몇초

?메쉬변환

텍스처압축

마테리얼생성

등등

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

~수십번

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

다른 게임의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

~수십번

가끔 크래쉬

= 재부팅

= 몇분?

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

스페이스마린의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

~수십번

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

스페이스마린의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

미리보기

0초0초

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

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

스페이스마린의 워크플로

모델링

(MAX)

텍스처링

(포토샵)

< 5 초0초

아트 툴

게임 or 엔진툴

라이팅

~1분이상

메쉬변환

텍스처압축

마테리얼생성

등등

미리보기

0초 0초

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

낭비하는 시간 비교

(텍스처 수정 20회, 프리뷰 10회)

• 다른엔진: 20 x 5초 + 10 x 1분 = 11분 40초

• 스페이스마린: 20 x 5초 + 1 분 = 2분 40초 4.375배 빠름!

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

낭비하는 시간 비교

예: (텍스처 수정 20회, 프리뷰 100회)

• 다른엔진: 20 x 5초 + 100 x 1분 = 101분 40초

• 스페이스마린: 20 x 5초 + 1 분 = 2분 40초 38.125배 빠름!

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

낭비하는 시간 비교

예: (텍스처 수정 20회, 프리뷰 100회)

• 다른엔진: 20 x 5초 + 100 x 1분 = 101분 40초사실상 불가능!

• 스페이스마린: 20 x 5초 + 1 분 = 2분 40초 38.125배 빠름!

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

하지만 문제는 있었다.

• 게임 출시를 몇 달 앞두고 다른 팀에서 아티스트들을 많이 빌려옴

• 하지만 출시가 임박해서 더 이상 새로운 셰이더 추가 불가

• 더 이상 실험(experiment)는 의미가 없음

• 기존에 있던 셰이더를 골라서 사용하는 게 더 일반적인 workflow가 되었음

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

간단한 꼼수

• 맥스 우버세이더 머테리얼에 새로운

rollout 추가

• 현존하는 셰이더를 하드에서 검색

• 셰이더 이름 토큰따라 맥스

우버셰이더의 옵션을 키고 꺼줌

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

게임 / MAX간의 차이

• 디퍼드 / 포워드 라이팅 차이

• SSAO

• World Space AO (http://kblog.popekim.com/2011/11/blog-post.html 참조)

• 색상 보정 (Color Correction)

• 기타 Full-screen 효과들

• 그래도 90프로 이상 매치!!

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

정리 / FUTURE WORK / 주의할 점

• 테크니컬 아티스트의 중요성: VISION!

• Future Work: 비슷한 셰이더들을 모아서 공통된 부모 셰이더로 합쳐주기

• 이럼 Category별로 셰이더 만들어 주는것과 비슷함

• 셰이더 스위칭에 따른 성능저하 방지 (라고 하나 이젠 별 의미 없을지도…?)

• 주의할 점:

• 새 맥스 뷰포트에선 작동안함(preference viewport choose driver Direct 3D

• fx파일의 pass에서 SRGBWriteEnable 지원안됨(Max 2012) 셰이더 코드로 변환

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

그냥 재밌는(?) 통계

• Max 우버셰이더: 1940줄 (자체 셰이더 노드 에디터로부터 생성)

• 머테리얼용 맥스 스크립트 : 3873줄 (.NET 버튼 Object등을 인자로 못넘겨서 복붙)

• 최종 셰이더 수: 107개

• 컴파일된 셰이더 크기: < 8MB

• 아티스트 Iteration 횟수: 수없이 많이, 아마 게임사상 최고일지도 -_-

• 아티스트의 포팅 요청: 새로운 게임팀에 갈 때마다…

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

SPECIAL THANKS

• 발표 허락해준 현/전 회사: EA 스포츠 FIFA, Relic Entertainment(SEGA)

• 같이 이 셰이더 UI를 발명한 렐릭의 전 테크니컬 아티스트 Nick Carota

• 멋진 셰이더 정의를 훔쳐 쓰게 허락해주신 Ndoors의 정종필 부장님

• 강연자료 검토 및 피드백 주신 이현정님

• 제 블로그와 유튜브를 즐겨 봐주시는 분들

• 라고님, 이네노님 ( 이유는 다음 장에… -_-;;;; )

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

꽃미남드립 대신 팬아트 보여주며 질문받기(응?)