전체 글 275

Inferred Lighting

개요infer : 추론하다, 추측하다, 언급하다.낮은 해상도에서 Lighting을 수행한다.따라서 Material Shader가 낮은 해상도에서도 정확한 Lighting 값을 "추론"할 수 있는 Filtering Algorithm이 중요함총 3번의 Rendering Pass가 필요하다. 하지만 투명한 오브젝트에 대해서 별도의 렌더링이 필요하지 않다.최종 결과물은 HW Anti-Aliasing이 적용되도록 한다. Light Pre-pass Rendering과 다른점Light Pre-pass는 투명한 오브젝트를 그릴 때 Forward Rendering이 필요함Light Pre-pass는 Light Buffer의 해상도가 커야 함 (=Full resolution)Light Pre-pass나 Standard D..

Game Dev/Article 2016.10.13

Light Pre-Pass Renderering (=Deferred Lighting)

개요총 3번의 Rendering Pass가 필요하다.하지만 Standard Deferred Rendering에 비해서 Render Target이 많이 필요하지 않다.가장 중요한 아이디어는 머트리얼과 빛의 속성을 분리해서 그리는 것! 구현Z-Buffer에는 Depth, Render Target에는 Normal(+Specualr Factor)만 그린다.MRT 필요하지 않음Light Buffer에 Light 속성을 그린다. (하단의 Light Buffer 참고)Forward Rendering으로 Geometry를 그리면서 Lighting을 수행한다. Light Buffer다음은 일반적인 LightingColor = Ambient + Shadow * Att * (N.L * DiffColor * DiffInten..

Game Dev/Article 2016.10.09

Light Indexed Deferred Rendering

개요현재의 렌더링 방식은 크게 2가지인데 각각 단점이 있다.Forward : Light가 많을 때 문제Deferred : Bandwidth 사용량, 반투명, MSAA각각의 장점만 취할 수 없을까?Light Volume의 Index를 저장해서 해결해보자.결론부터 말하자면 Lighting은 Deferred, Geometry는 Forward 구현Render depth only pre-passLight Index Texture에 Light Volume을 그림이 때 Light Index만 기록하면 됨Depth Write Off, Depth Test OnForward Rendering으로 Geometry를 그림2에서 기록한 Light Index Texture를 참고하면서 Lighting 문제점한 Fragment에 ..

Game Dev/Article 2016.10.08

CppCon2014 : C++ in Huge AAA Games

발표자유비소프트 몬트리얼 개발자, 아마도 Rainbow Six 프로젝트에서 일하는 듯 Code Structure 하지 않는 것RTTI : 별도의 Type 추론 구현Exception Handling : 느리니까STL Container : STL Algorithm은 사용하지만 Container는 사용하지 않음Boost in Engine Iteration-TimeFastBuild 사용http://fastbuild.org/docs/home.html무려 OpenSourceDistribution, Caching 지원 (Caching이 잘 되어있으면 3분, 아니면 5분의 Rebuild)Unity Build와 연동Debug 환경에서 /Ob1 사용/Ob : Inline 함수 최적화 여부 (기본값 2)https://msd..

Game Dev/Article 2016.10.08

C4265 Warning을 켜자!

경험적으로 현재 프로젝트에서 메모리 릭이 발생한 경우는 크게 3가지이다. 메모리를 할당하고 해제하지 않았다.array 버전인 new [ ]로 할당하고 delete로 해제했다.다른 클래스를 상속하였는데 super class가 가상 소멸자를 갖지 않았다. 1번과 2번의 경우는 std::unique_ptr을 사용하면 편해지지만 3번의 경우는 정말 어디서 발생했는지 알지 못하는 경우가 많다. cppcheck 같은 정적 분석기도 못 찾아줬고, Visual Leak Detector나 Dr.Memory 같은 별도의 메모리 분석 도구를 연동한 상태로 실행해야 찾을 수 있는데 이것도 단점이 있다. 메모리 릭을 발생한 지점이 실행되지 않으면 찾을 수 없다. 대부분의 경우 추가 메모리가 많이 필요하다.결정적으로 매우 느리다..

Game Dev/Article 2016.09.22

Clickmon Web 광고 연동 완료

AdSense를 영구정지 당하고 블로그에 광고가 없었는데 여러군데를 리서치해보다가 클릭몬 광고를 붙였다. (AdSense의 가장 안 좋은 점은 내가 어떻게, 왜 영구정지를 당했는지조차 모른다는 것이다.) 일단 연동하기는 매우 편한 것 같은데... 광고가 좀 느리게 뜨는 것 같다. 효과는 어떨지 모르겠다.http://www.clickmon.co.kr/매체사로 가입을 한다. (광고주가 아님)로그인을 한다."MonAD 배너 관리" > "Web 배너"에 들어간다.원하는 광고 유형과 크기를 선택한다.자신의 블로그나 홈페이지에서 지원하는 방식에 따라서 스크립트를 복사한 후 붙여넣는다.

Daily 2016.09.22

Unity5 안드로이드 플랫폼에서 Shader가 분홍색(혹은 검은색)으로 나오는 문제

현상분PC에서 실행한 에디터에서는 정상적으로 화면이 나온다.하지만 안드로이드에서 실행하면 특정 Shader를 사용한 부분이 모두 분홍색으로 나온다. 원인유니티는 확실히 사용되고 있는 Shader만 배포한다.예를들어 Material에 특정한 Shader를 연결하고 이 Material이 특정 오브젝트에 할당된 경우지금 해보니 Material만 만들고 할당하지 않으면 배포하지 않는듯그래서 런타임에 Shader.Find 같은 함수로 Shader를 찾는 경우 배포 버전에 포함되지 않아서 화면이 분홍색으로 나올 수 있다. 해결Edit > Project Settings > GraphicsAlways Included Shaders에서 자신이 사용하는 Shader를 추가한다.혹은 위에서 말했듯이 직접 Material을 ..

모바일게임 StarCrush 포스트모텀

게임을 만들게 된 계기 나는 약 10년차 클라이언트 프로그래머이고, 늦둥이 동생은 대학생이다. 그런데 어느날 동생이 (아마 스마트폰 어플리케이션 개발 같은 과목을 수강해서인듯) 모바일 게임을 하나 만들자고 이메일로 간단하게 컨셉을 보냈다. 사실 나는 PC 플랫폼 게임만 만들고 있었기 때문에 모바일 게임도 한번 해보고 싶었고 그렇게 제안을 받아드리게 되는데... 엔진선택 Unity와 cocos2d 둘 사이를 많이 고민을 했었는데 알고 지내는 다른 프로그래머가 자기는 cocos2d로 한다고 해서... "모르면 물어보고 배울 수도 있겠구나"라는 생각으로 cocos2d를 선택했다. 나중에 알았지만 서로 수준은 비슷했다. cocos2d의 장점Visual Studio를 이용하여 C++ 프로젝트로 게임을 만들 수 있..

Game Dev/StarCrush 2016.05.14