3 minute read

NDC에서 그래픽스 공부에 관한 발표 내용을 정리해보았습니다. 좋은 정보를 나누어 주셔서 정말 감사할 따름입니다..

링크 http://ndcreplay.nexon.com/NDC2014/sessions/NDC2014_0096.html


1. 진단

어떻게 우리 자신을 성장시켜야 하나?

비추천 하는 방법

  • API 사용법을 익히기
  • 예제를 따라 구현해보기

권장하는 방향 인터넷/책에 나온 것을 그대로 게임에 적용하는 것만이 아닌, 프로젝트 목표에 맞도록 개조하거나 발굴할 수 있어야 함.

일반적인 사례) Precomputed Lighting : Lightmap, PRT, Ambient Cube, …

다수의 라이트 소스로부터의 조명을 전처리 단계에서 계산

  • Ray tracing, radiosity, photon mapping .. (그래픽스 이론, 수학, C++ 등)

전처리한 데이터를 다양한 형태로 저장

  • Texture, SH, Wavelete, Tree (역시 그래픽스 이론, 신호처리, 수학, C++ 코드 등)

런타임에 라이팅 적용

  • 이 단계는 주로 Shader/3D API(이것도 그래픽스 이론, 수학, C++ 코드 등을 필요)


3D API만으로는 그래픽스의 기능들이 만들어지지 않는다.


마영전 개발 사례) 문제 생겨서 시그라프에 이러한 방법 사용

이해하고 활용하려면 Phong, Diffuse만이 아닌 근간이 되는 이론(= Rendering Equation, BRDF 등)과 이것의 응용(= Phong Lighting, Diffuse)을 함께 알아야 함.


2. 처방


기술서적 -> 속독함. 정독은 잘 안함.

시간을 아끼는 방법은 책읽는 것보단 코딩열시미해보셈.


그래픽스 관련있는 구현주제 추천 : Software Rasterizer

Software Rasterizer 구현 장점

  • 기초 그래픽스 수학 공부가 잘 됨. (대표적으로 transform)
  • 3D mesh를 직접 찍어내는 일련의 과정을 직접 구현해야 해서 코딩과 함께 그래픽스 공부가 잘 됨.
  • C++ 코딩과 최적화를 극한으로 해볼 기회. (메모리 풀, 스레드 풀, SSE 등을 적용하기 용이한 주제)
  • 구현할 것이 무궁무진함. (z-Buffering, MSAA, 테셀레이션, 텍스처링, etc) 오쿨루전 컬링으로 활용되기도 함.
    • z버퍼링 구현할 때도 여러 가지 방법이 많음. 기존에 구현했던 방법에서 조금 더 진보된 방법으로 갈고 닦으면 좋다.

게임 렌더링은 결국 그래픽스 하드웨어 상에서 동작하기에 잘 알아야 함.


2.1 필요한 기술 자료 찾는 방법.

  • 구글링. 웬만하면 영어. 트렌드가 중요한데, 번역된 거 기다리는 것은 상당히 시간이 오래걸린다.
  • 유명 기업/스튜디오/학회의 자료는 신뢰(MS, Intel, NVIDIA, AMD, Epic, Cryteck, DICE …)
  • 블로거의 프로필 사진이 노출된 블로그가 설명도 잘 함.


2.2 트렌드나 신기술 따라가기

주요 컨퍼런스 시즌을 알기

  • 시그라프8월, GDC3월, NDC 5월 등
  • All-In-One 사이트 활용 (Kesen.realtimerendering.com)

관심 분야의 유명 저자/기업을 스토킹

  • 보통 매년 1회 이상 관련 논문/기술자료를 냄(컨퍼런스 주기가 1년)
    • Future Work에서 예고한 것이 나오기도 함.

종종 커뮤니티를 방문

  • cg소사이어티, 게임데브넷


2.3 기술 자료 보는 방법

  • 크롬의 툴팁 사전 활용 (번역 기능은 NO!)
  • 자꾸 보면 비슷한 패턴 (특히 논문)
  • 읽기 쉽게 쓰는 것이 저술 시 요구사항 (특히 책 / 논문은 어려울 수도 있긴 함)
  • 영어 용어는 영어로 알기
    • 덮개 셰이더? 이중 포물면 매핑?
      • Hull Shader, ~~
    • 간혹 해석하기 애매한 단어도 있음.
      • translucent / transparent(반투명)


2.4 기술 논문의 특징

  • Introduction에 모든 내용이 있음.
    • 내용이 전혀 이해가 안되던지, 관련이 없는 것 같으면 그냥 버리면 됨.
  • Related Work에 N개의 유사 논문이 요약되어 있음.
    • 이것만 쭉 읽어도 세상에 이런 논문이 있었구나 파악하면 됨.
    • 이 쪽에 있는 내용은 조금 쉽다. 이건 이렇다 이런식으로 설명만 되어 있기 때문에
  • Conference Talk(Slide)에 쉽고 구현에 도움 되는 내용이 있음. ()
  • 수준 높은 컨퍼런스의 논문이 설명도 잘 함.
    • 유명하지 않은 컨퍼런스의 논문은 안보는게 더 도움이 될 수도 있음.
  • Journal의 내용은 읽기 괴로움 (분량이 많음. 대신 이론과 실험은 충실)
  • 논문에 나온 기술은 완벽하지 않음.
    • 실제로 구현하다보면 매직 넘버라는 것이 존재한다.
    • User Sepecific parameter표현을 하면서 구현하는 것이 있다. 논문의 구현을 하다가 잘 안되면 하드 코딩이 있을 수 있다. 이거 세팅 잘 해봐라.


저자와 소통하기

  • 논문/글 저자에게 이메일로 물어보거나 요청하자.
  • 보통 저자들은 자신의 자료에 관심이 있는 사람을 반김
  • 메일 작성 예)
    • 소개한다, 칭찬한다, 묻는다, 속내를 드러낸다(소스코드 및 PPT 자료 부탁).
    • 필요한 자료 있으면 부탁많이 해봐라.

기술적인 자료도 보기

  • 안목을 높이는데 도움이 됨.
    • 블록버스터급 영화 감상. AAA게임 플레이 등
    • 커뮤니티 방문
      • cgsociety.org - 작품, 메이킹, 뉴스, 제품광고 등
  • 아티스트를 이해하는데 도움이 됨.
  • 상대적으로 읽기 쉬움

Perception도 중요함

  • Translucency가 잘 느껴지는 방법 등.
  • 사람이 “보고” 판단하는 분야
  • 게임은 학술이 아니라서 보기에 좋으면 짱!
    • 때론 의도적인 연출도 필요

책/논문 저술의 비결?

  • 겁먹지 말고 도전하라
    • 대부분은 시도도 안 함
    • 그래서 내가 손들면 당첨(수요-공급 법칙)
    • 내 실력과 정비례하지 않으나 용기와 적극성에는 비례 함.
    • 실패해도 실력 있는 전문가가 상세히 리뷰 해 줌. (리뷰어는 싫어하겠지만, 한 번 보고 안볼분들이니 신경쓰지 마라.)
  • 한 번 참여하면 그 이후는 매우 쉬움
    • 논문은 예외 (그냥 실력과 운)

새로운 그래픽스 기법을 개발하는 방법

(주관 적인 의견임)

A) 현상 모델링 B) 하이브리드 C) 적용 분야 변경 D) 창조

A) 현상 모델링 1) 만들고자 하는 것의 레퍼런스 이미지(혹은 비디오)를 찾는다. 2) 현실 세계 현상/원리를 이해한다. 3) 현상의 모델화 : 그래픽스 이론, 프로그래밍 설계 등 4) 구현 5) 레퍼런스와 비교하며 다듬기

뒷 내용은 기억안나면 다시 영상보면 될 듯.

독학 아닌 동료의 중요성

  • 내가 알고 있는 한계를 벗어날 수 있어야 함.
    • 정보의 양이 N배
  • 나에게 자극제가 될 수 있음.

Categories:

Updated: