외국 게임 회사 면접시 질문 내용은 인터넷에서 거의 찾아볼 수가 없어서 외국으로 취업을 처음 준비하는 사람에게는 참고할만한 자료가 없어서 준비하는데 참 힘들더군요. 프로그래밍 시험 내용은 각 회사에서 비밀로 하는 내용이기 때문에 이 포스팅에서는 다루지 않겠습니다.
보통 외국 게임 회사와 연락이 닿으면 동네에 살지 않는이상 보통은 전화 면접을 먼저 보게 됩니다. 저의 경우에는 짧게는 15분 부터 길게는 1시간까지 전화면접을 보게 되었습니다.
4군데 정도 전화면접을 보게 되었는데, 보통 이경우 HR 팀에서 면접을 진행하게 됩니다. 면접 절차는 일반적으로,
1. Human Resources Department 와 면접
2. 프로그래밍 테스트
3. 실무자 테스트
4. 최종 인터뷰
이렇게 진행됩니다. 중간에 3번등은 상황에 따라 생략될 수 있습니다.
중요한게 1번은 보통 전화면접이 이루어지고, 아시다시피 전화 면접은 상당히 힘듭니다. 그냥 대면해서 하는 면접도 힘든데 전화니 아무래도 더 힘들겠죠. 예상 문제에 대한 답을 미리 외워두는게 좋습니다. 전화 인터뷰라해서 질문에 맞춰서 줄줄줄 읽는방식은 개인적으로 비추입니다.
면접시 질문 내용은 다음과 같았습니다.
1. 너 자신에 대해 간략히 설명해봐라. (Can you tell me a little about yourself?)
2. 너의 최대 장점이 무엇인가? (What is your greatest strength?)
3. 왜 우리가 너를 고용해야 하는가? (Why should we hire you?)
4. 왜 우리회사에 끌렸는가? (Why do you like this company, what attracted you to us?)
5. 너의 미래의 목적은 무엇인가? (What are your goals for the future?)
6. 너의 최대 단점은 무엇인가? (What is your biggest weakness?)
네. 아시다시피 국내 면접 질문과 크게 다른것이 없습니다.
그러나 말을 하실때에는 그냥 생각과 사실을 그대로 설명하기 보다는 항상 예를 들어 설명해야 합니다. 주관적인 것보다는 항상 객관적 사실과 근거가 뒷받침 되어야 합니다. 그리고 아주 겸손하실 필요는 없고, 그렇다고 너무 자만해서도 안됩니다.
대답을 할때에는 단답식은 무조건 피하도록 합니다. 어느정도 재치, 유머로써 전화 면접을 이끄는것도 좋은 방법인것 같습니다.(당연히 너무 장난스럽게 이끌어가면 면접 자체가 너무 가벼워지겠죠.)
또한 전화 면접 자체가 갖는 특수한 환경 및 제약을 해당 담당자도 어느정도 인지 하고 있는것으로 알고 있습니다. 그러니 sorry? pardon me? 등을 적당히 쓰셔도 상대방이 그렇게 불쾌해 하지 않을 겁니다.
한국 면접 방식과 비교해볼때 아주 큰 차이점은 없는 것 같으나 그 세부 내용에 있어 차이는 꽤 있습니다. 한국 면접시에는 대체로 추상적이거나 뭉뚱그려서 설명을 하는 경우에 적당히 면접관이 이해하고 넘어가는 부분이 있지만, 외국 게임회사 면접을 볼때에는 모두 세세한 내용이나 객관적 근거들을 물어봤습니다. 따라서 좀더 구체적이고, 객관적인 답을 준비하셔야 합니다. 저의 경우에는 대략적인 특정 알고리즘의 시간복잡도나 수학에서 특정 법칙등을 예를들어가며 설명해었는데, 시간 복잡도가 그렇게 되는 이유라던가, 해당 법칙이 활용되는 분야라던가.. 참으로 여러가지 질문을 받아서 조금 당황했습니다.
그리고 질문 있냐고 면접관이 물었을 경우에는 당연히. 질문을 하시는게 맞습니다. 이건 한국이나 외국이나 공통점이네요.
근무 시간, 연월차, 그밖의 benefit, 개발 인원, iteration 등등 미리 준비해놓으세요 ^^
Search
'Game Dev.'에 해당되는 글 36건
- 2009/10/25 외국 게임회사 면접시 질문 (5)
- 2009/09/02 The Art of Agile Development
- 2009/02/19 D3DBook is available on GDWiki (2)
- 2008/12/30 Productivity of C# (3)
- 2008/10/20 Ripken Baseball Online 2008의 스샷을 공개합니다. (8)
- 2008/04/17 Skeletal Model의 Instancing (3)
- 2008/03/05 Boundary of Shadow Techniques (6)
- 2007/11/03 마우스로 드래그해서 삼각형들 선택하기
- 2007/08/20 Variance Shadow Map (3)
- 2007/06/26 Image Based Lighting (2)
Yesterday I bought this book, and reading this book is fun and exciting.
Reading this book made me look back on the time when we faced some problems in my last project applied this method. And thanks for this method, we was able to see where we were on in the project and whether or not we had a problem in progress. (I apploud Reiot.)
Applying this method to a project is hard to make developers understand its requirements and its benifits. Especially, to get used to this method, it may take 3-5 months. In this fact, within 2-3 months since it applied, some developers tend to get confused about whether or not this method is right for their project. And the biggest reason is that some game programmers are defensive.
For these reasons, I think the programmers need to have interest in this kind of book. It may help them break their stereotype that they don't know if they have.
I found a D3DBook webpage on GDWiki. It is kind of site that is very helpful to programmers who are studying D3D10. Even though I haven't read it entirely, I'm sure that it helps programmers who have been using DX9 adapt to D3D10 easily.
Wolfgang Engel, well known as an author of game programming books, is a person of authors who joined to make the site. So the fact that he joined is enough to be worthy of attention because books that he wrote so far are very helpful.
I think most programmers might not have had any opportunity to use D3D10 at their project, because all of customers don’t have a graphic card that D3D10 is available. However, D3D10 have been being already used at development environment of XBOX360, and cheap graphic cards that support D3D10 will be spread more and more as time passed by. So I think game programmers have to get accustomed to use D3D10 to develop games that have greater graphic qualities than before and compete with other programmers in same area.
In fact, I didn’t also have the opportunity at my project, and I’m not used to D3D10. So lately I’m studying hard about D3D10 in order to be accustomed to handle D3D10. I guess most 3D programmers who are used to D3D9 can adapt to D3D10 easily if they study D3D10 a little bit.
http://wiki.gamedev.net/index.php/D3DBook:Book_Cover
부모님 가게의 전산화를 위해 유료로 판매되는 모 판매재고관리 프로그램을 구입하여 전산화 작업중인데요.
이게 참 맘에 안드는게 많습니다. 워낙 범용적으로 만들어서 판매하는 제품인지라, 부모님이 운영하시는 가게를 전산화하여 사용하기에는 부족한 점이 너무 많네요.
특히나 대부분 부족한 기능들은 단가 관리 입니다. 환율등에 영향을 받는 품목인 경우 최근처럼 널뛰기 환율에 의하여 가격변동이 심한데, 대부분의 프로그램들은 이렇게 변동된 단가들을 일일이 수작업으로 수정해줘야 하는 번거로움이 있습니다. 그냥 간단히 올릴 품목들을 선택해서 10% 만 입력하면 자동으로 도매가, 소매가, 오도매가 등이 자동으로 계산되면 편할텐데 말입니다.
어쨌건 한 두 달전에 친구랑 밤새서 열심히 입력했던 수천개의 단가들이 변동되었고, 이걸 다시 입력하자니 정말-_- 난감하더군요. 그래서 뭔가 툴을 만들어야겠다.. 라는 생각에 일단 작업에 착수했습니다.
전에 자료를 입력할 때 단순 반복되는 품목들이 많아서(예를들어 규격만 조금씩 규칙적으로 바뀐다거나..) 자동으로 품목과 단가를 입력하는 프로그램을 만들어서 입력했었는데 그때 DB 를 분석했던 기억을 되살려서 진행을 해보았습니다.
많은 분들이 이러한 툴이나 판매재고 관리 프로그램을 만드실 때 Visual Basic이나 Delphi 등을 많이 이용하시는 것 같은데 그걸 쓰면 얼마나 편할지는 잘 모르겠습니다만, 전에 C#을 공부하면서 간단한 윈도우 어플리케이션과 Direct3D 어플리케이션을 만든기억이 있는데 무지하게 편했던 기억이 있어서 C#을 선택하였습니다.
사실 DB 쪽때문에 이거 C++ 을 써야하는거 아닌가 싶었는데 뭐 걱정할 필요도 없이 바로 -_- 되는군요.
DB연동작업도 있고 해서 MFC를 썼다면 대략 작업시간으로 2~3일 분량이었는데, 하루도 안되서 작업이 끝나버렸습니다.
GRID CONTROL 만해도 MFC 를 썼다면 코드프로젝트등에서 이래저래 찾아보고, 삽질하는데도 시간이 좀 걸렸을 텐데 쓸만한 콘트롤들이 기본으로 내장되어 있고, 쓰기도 편해서 개발 시간이 대폭 감소한 것 같습니다.
여튼 C#의 이러한 생산성은 게임을 만들때. 특히나 게임 개발에 필요한 툴을 만들때에도 꽤 큰 잇점이 될 수 있는데요.
많은 프로그래머들이 C#의 속도를 신뢰하지 않기 때문에, 당장 쓰기에 많이 망설이시는것 같습니다.
특히나 엔진은 C/C++ 로 개발하고, 툴만 C#으로 만드는게 사실상 현실적으로 힘들기 때문에, 메인 코어도 C#으로 개발해야 할텐데, C#의 속도 문제때문에 무언가 검증된 결과물이 나오질 않는이상 저라도 어쩔 수 없이 C/C++ 을 사용할 것 같습니다. 일단 다른 개발자들을 설득하기도 힘들구요.;
개인적으로는 C#을 공부해보면서 생각이 드는건데, C#을 게임 개발의 메인 언어로 선택하는게 아주 큰 모험이 되진 않을 것 같다라고 판단이 서는데요. 물론 가장 크게 문제되는건 미들웨어와의 연동이겠지만요. 속도는 D3D를 사용한 간단한 지형 렌더링을 테스트 해본바로는 큰 차이는 없었습니다.
물론 게임에서 여러 데이타 및 메모리 관리가 속도에 가장 큰 영향을 미치겠지만 말입니다. 뭐 이것도 GC만 믿고, 날림으로 만들지 않는 이상 크게 문제될 부분은 없어보입니다. 좋은 메모리 메니지먼트 솔루션들이 많으니까요.
여튼 게임 개발 초기 단계의 언어 선택에 있어서, 당연히 C/C++ 이라기보단 한 번쯤은 C#을 생각해보는게 좋을 것 같습니다.
C/C++개발자라면 아주 쉽게 C#에 적응이 될 수 있고, C#이 가진 이러한 생산성은 게임 개발에 있어서 개발 속도뿐만 아니라 게임의 퀄리티를 높여주는데 분명 아주 큰 잇점이 될테니까요.
아마도 이미 국내에서도 여러 게임 회사에서 C#을 이용하여 게임개발을 진행하고 있고, 또 완료한 회사도 있을 텐데, C#을 이용해서 어떤 잇점을 얻었고, 어떤게 문제였는지 이야기를 해주었으면 좋겠네요.
C#에 익숙해지다보니 다시는 MFC를 사용하여 어플리케이션을 만들기가 싫어졌습니다..-_-;
회사에서 제가 만든 3D Engine을 사용한 야구 게임입니다.
아쉽게도 회사 사정에 의해 개발이 중단된 상태입니다.
아직 보충할 것도 많고, 다듬어야 할 것도 많은데 정말 아쉽네요.
클릭하시면 확대되고, 사용된 기술은 맨 아래 있습니다.
사용된 기술중에는 제가 독자적으로 개발한것도 몇 개 있는데, 이 부분은 공유 하기 위해 현재 문서로 작성하고 있습니다. 완성되는대로 올리겠습니다.(영어로 작성하고 있어서 언제 완성될지 ..-_-)
중간에 DHL, SAMSUNG, NIKE 이미지는 테스트겸해서 넣어본 것입니다. ^^
사용된 텍스쳐의 최대 크기는 512입니다.
그리고 이건 보너스
Reiot님의 요청에 의해 TeamFortress2의 느낌을 내보려고 후딱 렌더링 코드를 수정해봤습니다.
Shader Model 2.0
. Scriptable Shader System
. Ball Catching System(날아오는 공의 위치에 정확히 손을 뻗게 하는)
. Swing Animation Solver(날아오는 공의 위치에 방망이를 가져다 대는.정확히 방망이의 sweet position)
. HDR, Glow, Depth Of Field
. Image Based Lighting
. Ambient Occlusion
. 유니폼 커스터마이징 시스템
- 베이스 색, 줄무늬, 유저가 제작한 엠블렘, 줄무늬 색, 등번호 색, 등 이름 색
. 캐릭터 커스터마이징 시스템
- 구렛나룻, 콧수염, 턱수염, 눈썹, 머리, 머리색, 피부색, 문신 등..
. Instancing(폴리곤 관중)
. Self Shadow(TSM, VSM)
. Stadium Tool, Character Tool, Customizing Tool
. 입체감이 있는 잔디 바닥
. 흙바닥의 흙정리 한 느낌의 입체감
더 있을 법도 한데 기억이... ㅠㅠ
UBO, UBO2008, RBO, RBO2008, RBO2009, RIPKEN BASEBALL ONLINE, PLAYREALBASEBALL
저는NCKStudio 에서 야구 게임의 3D엔진을 개발하고 있습니다.
벌써 2년이 넘었네요.
오늘은 Skeletal Model의 Instancing 에 대해 이야기해볼까 합니다.
ShaderModel 2.0 에서의 Instancing 이야기이므로, 3.0 쓰면 되시는 분은 안읽으셔도 좋습니다. ^^
SkeletalModel의 Instancing 은 의외로 많은 곳에 쓰일 수 있습니다. 콘솔게임에서 적들이 우루루 몰려오는 모습이라던지, 저희 게임에서처럼 스포츠게임에서 관중표현등에 꽤 유용하게 쓰일 수 있습니다. 관중에 무슨 Skeletal 이냐~ 라는 말씀을 하실 수 있겠지만, 보다 더 자연스러운 애니메이션을 위해서 어쩔 수 없는 선택이었습니다. 그리고 적용 결과 적당히 퍼포먼스가 잘 나와주는 탓에 비교적 성공적이었던 작업이라 생각이 드네요.
저희 게임에서는 관중옵션을 최대로 하면 모든 관중(약10000명)이 뼈대를 갖는 폴리곤 모델로 렌더링되게 됩니다. 각 관중당 약 300개의 폴리곤을 가지고 있는데 그냥 렌더링하면 300만 폴리곤이 렌더링 되게 되죠.
그럼 그냥 Instancing을 잘 쓰면 되지 않느냐~ 라고 생각하실테지만 저희 게임은 ShaderModel 2.0까지만 쓸 수 있습니다. 그렇다 보니 Instancing 을 쓸때 몇 가지 제약사항이 생겨버렸습니다.
어쨌든 여러가지 시도를 해보았습니다. 기본적인 Instancing이야 Direct-X SDK 를 보시면 아실듯 하여 Instancing 에 대한 설명은 하지 않겠습니다.
일단 제가 Instancing을 할 때 필요했던 정보는 다음과 같았습니다.
1. 각 메쉬의 포지션
2. 각 메쉬의 회전값
3. 각 메쉬의 좌우 미러링(왼손잡이가 오른손잡이로;;) 정보
4. Texture Atlas 정보
5. 그외...에도 몇가지가 있긴한데 기억이 잘;;-_-
3번 좌우 미러링은 한 번에 여러명의 관중을 렌더링할 때 애니메이션이 똑같으면 너무 눈에 띄므로 좌우 미러링이 가능해야 했습니다.
4번 Texture Atlas는 한 번에 여러명의 관중을 렌더링하기 때문에 텍스쳐의 활용도를 높여야 했습니다. 그렇다고 해서 이 Atlas 정보의 값이 크면 오히려 비효율적일 수 있으므로, 2,3,4,5번의 값을 16바이트로 최대한 압축하여 쉐이더로 넘겼습니다.
그리고 가장 문제가 되는 부분은 바로 Deformable Mesh 의 Vertices 업데이트였습니다.
두 말 할 필요도 없이 ShaderModel 2.0 을 사용한다면 다음의 방법밖에는 없습니다.
1. CPU 에서 한 마리의 Vertex를 갱신하고 버퍼에 쭉 복사한다.
2. 걍 죄다 GPU 에서 스키닝한다.
결론은 2번의 승이었습니다.
물론 Vertex Shader를 정말 열심히 최적화 해야했습니다. ㅠㅠ 최적화 없이는 1번이 더 빨랐던 기억입니다.
DrawPrimitive는 10000명의 관중이 출력되면 200번이 되도록 만들었습니다. 한 번의 렌더링당 50명의 관중이 렌더링되는 셈인데 이 50명의 관중은 Texture Atlas에 따라 다양해지고, 좌우 미러링 때문에 더 다양해집니다. 게다가 띄엄띄엄 배치해버리면... 실제로 이게 Instancing을 사용하여 출력된건지 아닌건지 모를정도가 되어버립니다.
사실 게임에서 관중옵션을 최대로 올리면 60fps 가 나오던 게임이 15fps 로 떨어져버립니다. 역시나 실제로 쓰기엔 무리다... 라는 것이지요. 이 속도는 게임이 네트웍상태에서 플래이되는 모든 처리를 포함한 속도입니다. 물론 Instancing을 하면서 라이팅 처리까지 포함한 속도입니다.
그러나 10000명이 아닌 5000명을 렌더링하면 속도는 그럭저럭 게임할 수준은 나와줍니다.
폴리곤이 700개정도인 메쉬를 렌더링한다면 2500명 정도는 그럭저럭 버텨준다는 이야기이지요. 더불어 여기에 LOD 까지 들어간다면? 크게 걱정없이 게임을 할 수 있는 수준이 되어버립니다.
Shader Model 3.0 에서의 최적화 방법은 따로 생각해본적은 없습니다만 그냥 생각해도 Shader Model 2.0 보다는 더 -_- 빠를것 같네요.
뭐 Shader Model 2.0 쓰시면서 Instancing 을 쓰시는 분은 별로 많지 않을거라 생각합니다만, 고심하시는 분께 도움이 되었으면 좋겠네요.
더 좋은 아이디어가 있으시거나 잘못된 부분이 있다면 댓글을 남겨주세요~ ^^
갑자기 밤에 할일이 없어서 쓰게 되었는데; 쓰면서 졸음이 몰려온 탓에 마지막을 후다닥 마무리-_- 하게 되었네요; 궁금하신점은 댓글을..
예전 D2 프로젝트를 진행하고, 지금 3D 야구게임 프로젝트를 하면서 저는 계속 라이팅과 그림자와 싸워왔습니다.-_-
그림자의 경우 간단한 프로젝션 쉐도우부터 쉐도우 볼륨, 스텐실 쉐도우, PSM, TSM, LISPM, CUBEMAP SHADOW 등 여러가지 방법을 테스트하고, 게임에 적용해봤습니다.
Self Shadow 의 경우에는 Aliasing 때문에 정말 고생을 많이 했군요. 간단히 블러를 먹여도 보고, GRADIENT, VSM, SIMD, JITTER 등 여러가지를 시도해보았으나 OutDoor 를 하나의 텍스쳐를 사용하여 셀프 쉐도우로 표현하는 것은 결국 무리라고 최종 마무리를 지었습니다. 결국 CSM이나 PSSM 같은 방법이 그나마 OutDoor 에서 퀄리티 높은 그림자를 보여주네요. 그렇지만 지금 만들고 있는 야구게임같이 카메라의 줌인/아웃이 자유로운 상태에서는 CSM이나 PSSM 조차도 한계를 보입니다. double-precision 을 사용한다 해도 해결될 수 있는건 아니지요.
이전에는 그림자기법을 개발하면서 이러한 OutDoor에 최적화된 최신 기술을 도입하면 좀 더 나은 퀄리티를 보여줄 것이다라는 기대를 하며 개발을 진행했는데, 이제와서 그림을 그려보면서 여러가지 쉐도우 기법 알고리즘을 표현해보니 역시나 지금 만드는 야구 게임에서는 위에 열거한 그림자 기법으로는 Aliasing 을 피할 수 없다라는 결론에 도달했습니다. 그럼 어떻게 해결할 수 있겠는가? 라는 질문을 하게 되는데 결국 각 장면에 최적화된 꽁수를 사용하는 방법밖엔 없겠다 라는 생각이 드는군요.
Self Shadow의 경우 Light 에서 바라본 화면에서는 10pixel 을 차지하지만 실제 카메라로 바라본 화면에서는 10pixel 보다 훨씬 많은 부분을 차지하기 때문에 1:1 대응이 되지 않으므로 이러한 기법으로는 아무리 여러가지 방법(편차,보간,경사도)을 사용한다 해도 Aliasing 을 피할 수 없습니다.
그나마 그림자 텍스쳐의 해상도가 클 수록 Aliasing 을 줄일 수 있고, 결국은 CSM, PSSM을 연동하면 되겠다 싶지만 카메라 줌인/줌아웃때문에 역시나 고민이 되는건 마찬가지군요.
카메라 줌인을 하게 되면 화면에 보여지는 영역은 좁아지지만, 화면 안에 들어온 오브젝트는 멀리 있는 오브젝트도 크게 보이고, 가까이 있는 오브젝트도 크게 보이기 때문에 두 오브젝트의 그림자 퀄리티를 만족시키기에는 여간 힘든게 아니네요. 특히나 얼굴만 아주 크게 클로즈업 되는 경우에는 아주 죽을맛입니다. 클로즈업 한 캐릭터의 얼굴 옆 공간에 200미터 뒤에 수비수의 얼굴도 크게 나오거든요..-_-
여튼 realtime으로 SelfShadow 를 사용해야 한다면 다음과 같은 솔루션에 도달하게 됩니다.
1. Diretional
- CSM + (VSM, GRADIENT)
- PSSM + (VSM, GRADIENT)
- TSM, LISPM + (VSM, GRADIENT)
2. Spot
- (TSM, LISPM, PSM) + (VSM, GRADIENT, JITTER)
3. Omni(Point Light)
- Cubemap Shadow
(stencil을 사용하는 경우에는 칼같은 그림자가 보기에 그닥-_- 이쁘지 않으므로 제외합니다)
Cubemap shadow는 별다른건 없고, 걍 해당 라이트 기준에서 6방향으로 환경맵 만들듯이 찍어주면서 깊이를 텍스쳐에 기록합니다. 그리고 변환 matrix를 만들어서 uv 를 계산하여 처리합니다.
위의 솔루션은 직접 테스트하면서 얻은 데이터와 여타 다른 게임들을 분석하면서 얻은 결과 입니다.
realtime에서는 매 장면을 그릴때마다 그림자를 업데이트해줘야 하는 까닭에 퀄리티를 희생하고, 속도를 높이는 알고리즘으로 발전이 되어 왔습니다.
그러나 하드웨어의 발전 속도와는 다르게 그림자 기법은 크게 발전하지 않았는데 어쩌면 지금까지 사용했던 텍스쳐에 라이트로 바라본 이미지 그리기를 버리고, 새로운 기법을 찾아보는 것이 맞을 지도 모르겠네요.
마우스로 드래그해서 삼각형들 선택하기
당연히 정밀도는 높은 편이고, 필요한 함수는 AABB와 삼각형 교차/포함 판정 정도이겠군요.
1. 먼저 체크할 폴리곤들을 추립니다. 경우에 따라 안추리고 죄다 검사 해도 상관없겠죠-_-
2. 화면을 비추던 카메라의 정보를 가지고 해당 삼각형들을 projection 해버립니다.
3. 삼각형의 세 점을 다 projection 했으면 그 값으로 다시 삼각형을 만듭니다.
4. 현재 화면에 드래그 한 시작 포지션과 끝 포지션을 가지고, x는 -1부터 1, y 는 -1부터 1까지 적당히 비율 계산해서 넣습니다. z 값은 min 이 0, max 가 1일껍니다. DX라면..
5. 그 삼각형과 4번에서 만든 AABB 와 교차/포함 판정합니다.
조금만 더 개조하면 다른 폴리곤에 의해 가려진 삼각형은 선택 안하게 만들수도 있구요. 속도를 요하는 거라면 적당히 프러스텀도 써주고 샤바샤바 해주면 빨라질듯.
정말 지긋지긋한 Self Shadow의 Aliasing 에서 벗어나고 싶어 죽겠네요 ㅠㅠ
PCF+Gradient 로도 너무 눈에 크게띄고,
결국 PSSM(Parallel Split Shadow Map)과 VSM 을 섞어봐야 하는건지 ㅠㅠ
Unreal 3에서도 Aliasing은 피하지 못했으나 눈에 잘 띄진 않더군요.
여튼 VSM 에 대한 링크 자료 첨부합니다;-_-
http://developer.nvidia.com/object/variance-shadow-maps-gdc-2006.html
관련 링크
http://www.debevec.org/CGAIBL/
원리는 매우 간단합니다.
그냥 Cube 맵 가지고 매핑하는 원리만 알면 적용은 금방 되는데요.. 문제는 색감이나 이런것들 찾는게 시간이 좀 걸리네요.
적용해보니 퀄리티가 매우 높아집니다. 산란광, 반사광을 fake 로 계산해서 쓰고 있었는데 한 방에 해결되는군요. 여기에 Ambient Occlusion 만 적용되면 라이팅쪽은 더이상 신경 쓰지 않아도 될듯 합니다.
Ambient Occlusion 이 문제입니다.... 구현은 비교적 간단한데 속도가 ... ㅠㅠ

