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

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

Upload: -

Post on 04-Jul-2015

11.795 views

Category:

Technology


1 download

DESCRIPTION

KGC 2013 강연자료입니다. 스페이스마린에서 사용했던 아티스트의 눈높이에 맞춘 3DS Max 우버 셰이더입니다.

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 우버쉐이더

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