nVidia Visual Profiler 4.1로 돌린 결과

이놈의 충돌처리가 단순 연산만으로 작동하는게 아니고 케이스 바이 케이스로 처리할게 많아서 분기가 많다. 그러다보니 병렬화가 어렵다. 나름 죽도록 병렬화 했다고 생각하는데 실제 코드의 50%정도밖에 병렬화가 안되는것 같다. 코드 최적화는 할만큼 한거 같고 나머지는 GPU스펙에 달린듯. 이하는 NV Visual Profiler로 돌린 화면. 컴퓨팅 활용도 72.4%면 할만큼 했다고 생각한다. 매트릭스 연산이나 영상처리가 아닌지라 더 이상은 무리.

이번에 CUDA충돌처리 모듈을 만들면서 깨닫게 된 몇 가지들.

이번에 CUDA충돌처리 모듈을 만들면서 깨닫게 된 몇 가지들. 예전 프로젝트(프로젝트 엡실론)에서 멀티스레드와 SSE어셈을 떡을 쳐서 서버기반에서도 사용가능한 충돌처리 코드를 만들었었다. 세 번의 유져 테스트에도 무사히 작동했고 꽤 잘 만들었다고 생각했다. 근데 그 코드에는 중대한 결함이 있었다. 1. 기본적으로 계산 코드가 너무나 비효율적이었다..불필요하게 복잡하고 느리다. 난 수학에 자신이 없었고 그래서 다른 사람에게 코드 작성을 맡겼고 나중에 … More 이번에 CUDA충돌처리 모듈을 만들면서 깨닫게 된 몇 가지들.

CUDA 충돌처리 현재까지 진행상황

개인적으로 [CUDA를 이용한 충돌처리 엔진 프로젝트]를 시작한지 어언 두달 가까이 되었다. 현재까지 진행 상황을 간단히 적어본다. [목표] 1.MMORPG 게임 서버에서 사용할 수 있는 충돌처리 엔진을 구현한다. 2.대규모 처리를 위해서 CUDA를 사용한다. 3.캐릭터와 로켓런쳐 탄환 따위의 동적인 오브젝트는 타원체(가로세로 1:1이면 구)로, 게임맵은 삼각형집합으로 구현한다. 4. 타원테 VS 타원체 , 타원체 VS 삼각형의 충돌을 감지하고 탄성계수를 적용한 … More CUDA 충돌처리 현재까지 진행상황

CUDA로 구현한 충돌처리

퇴사 이후 다음 직장 찾을때까지 만들기로 계획했던 물건이다. 예전에 프로젝트 엡실론에서 사용했던 충돌처리코드보다 상당히 개선했다. 다이나믹 개체들간의 충돌처리도 포함되어있다. 그때보다 속도도 빠르고 코드도 간단하다. 그리고 CUDA를 지원한다. 처음부터 CUDA를 염두해두고 만들었다. 멀티스레드 버젼은 만들지 않았고 CPU 싱글 스레드 버젼과 CUDA버젼만 만들었다. 일단은 CUDA버젼이 CPU버젼보다 10배정도 빨랐는데 타원체VS타원체 들어가면서 버스 병목이 생겨서 격차가 줄어들었다. 일단 돌아가는 … More CUDA로 구현한 충돌처리

삼각형 충돌처리 코드 작성중

요새 작업 내용입니다. 프로젝트 엡실론을 진행할때 엔진과 맵툴을 비롯한 엔진관련 툴들 코드를 대부분 제가 작성했습니다. 전체 코드의 95%정도라고 생각하는데 제가 작성하지 않은 코드중 한 부분이 삼각형에 대한 충돌처리 부분입니다. 정확히는 팀 동료가 초기 수학함수를 c코드로 작성했고 그걸 제가 가공했습니다. BSP트리를 이용한 삼각형 검출 코드를 추가하고 멀티스레드 버젼으로 작성했습니다. 또한 intel SSE를 사용하도록 x86/x64어셈블리코드로 재작성했죠. 라고 … More 삼각형 충돌처리 코드 작성중

라이트맵 블러링

일전에 언급한대로 라이트맵의 경계 부분, 금가는 부분들을 부드럽게 처리하는 작업을 진행중이다. 삽질 끝에 대충 완료. 아직 이슈가 많긴 한데 그냥 이 정도로 마무리 지으려 한다. 1. 라이트맵을 스크린 스페이스에서 블러링 한 다음 프로젝션으로 입혔다. 2. 블러링 효과를 높이기 위해 1/4 사이즈로 다운스케일과 업스케일을 하여 블러 필터를 걸었다. 3. 최종 텍스쳐 합성 시에 depth버퍼를 참조해서 엣지라고 … More 라이트맵 블러링

제오라이마(ゼオライマー) 히무로미쿠(氷室美久) 레진 캐스트 피규어

오랫만의 지름, 오랫만의 비딩이다. 명왕계획 제오라이마(冥王計画ゼオライマー) 히무로 미쿠(氷室美久) 레진캐스트 되시겠다. 일단 이 애니와 캐릭터에 대해서 잠깐 얘길 해보자. 92년 중학교시절 내가 애니를 거의 처음 접하던 시절에 PC MANIA라는 국내 컴 잡지에 애니메이션의 리뷰가 연재되고 있었다. 스토리 다이제스트라는 이름으로 이범선님이 연재하던 코너였는데 그 첫 작품이 ‘명왕계획 제오라이마’. 나름 흥미진진하게 진행되다가 제작비 부족으로 마지막에 단체로 학살하고 끝나는 막장 엔딩이 … More 제오라이마(ゼオライマー) 히무로미쿠(氷室美久) 레진 캐스트 피규어

라이트맵 엣지 블랜딩 관련

라이트맵을 직접 만들어서 구워보면 엣지 부분이나 오브젝트 잘리는 부분에서 금이 가는 현상을 볼 수 있다. 이건 사실 맥스에서 구워도 완전히 해결할 방법은 없다. 티가 덜 나게 할 뿐인데 라이트맵의 uv좌표를 디자이너가 직접 펼쳐준다면 확실히 좋은 효과를 볼 수 있지만, 그건 내가 추구하는 방식이 아니므로 어떻게든 자동화시키려고 했다. 처음엔 지오메트리를 3차원상에서 어떻게든 가공해서 처리하려고 했다. 별 짓을 … More 라이트맵 엣지 블랜딩 관련

요새 하는 작업

라이트맵을 구현해 보신 분들은 아실겁니다. 시각적으로는 연결되어있는 오브젝트라도 기하구조상으로는 잘려있는 경우라든가 매쉬의 모서리 부분이라든가 라이트맵을 적용할때 어쩔 수 없이 금이 가는 현상이 있습니다. 오브젝트를 자르고 오브젝트 안에서 면을 펼쳐서 라이트맵의 uv좌표를 부여하다보면 인접한 매쉬가 반드시 인접한 텍셀을 가지도록 보장할 수 없습니다. 즉 모서리를 기준으로 바로 옆의 삼각형이지만 라이트맵 텍스쳐 상으로는 멀리 떨어진 텍스쳐 공간일 수 … More 요새 하는 작업

라이트맵 계산시에 Ambient Occlusion적용하기 #3

먼저번에 글을 올릴 당시엔 Height Field에 대해선 ambient occlusion이 적용되지 않던 상황이었다. 오늘까지의 작업으로 Height Field에 대해서도 ambient occlusion을 적용시켰다. 멀티스레드를 지원하고 계산 알고리즘을 최적화했다. 테스트에 사용된 맵의 경우 처음에 2시간 기다리다 포기. 몇 시간이 걸릴지 예상도 할 수 없었다. 다음날 알고리즘을 최적화하고 멀티스레드를 사용하고 8분 정도만에 빌드를 마쳤다. 여기에 필드 계산을 추가하고 몇 가지 … More 라이트맵 계산시에 Ambient Occlusion적용하기 #3