Windows Application Packaging Project를 이용해서 만든 Destktop Bridge app에서 UWP App과 interop하기.

최근 Visual Studio 15.4.1에 Windows Application Packaging Project 템플릿이 추가됐다. 이 템플릿을 이용하면 손쉽게 데스크탑 어플리케이션을 AppX로 패키징할 수 있다. 그 방법이 너무나 쉬우므로 자세한 설명은 달지 않는다. 링크 참조. https://blogs.windows.com/buildingapps/2017/10/18/visual-studio-2017-update-4-makes-easy-modernize-desktop-application-make-store-ready/ 그런데 github의 MS샘플도 그렇고 어디에도 이 템플릿을 사용했을때 uwp app과 interop하는 예제는 없다. 내가 원하는 샘플과 자료는 아래 링크의 내용이다. https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-extend 그런데 빌어먹을….이건 VS2017에 … More Windows Application Packaging Project를 이용해서 만든 Destktop Bridge app에서 UWP App과 interop하기.

SW Occlusion Culling 정리

요 근래 계속 붙잡고 있던 SW Occlusion Culling을 거의 마무리 지었다. 물론 오래전에 HW Hierarchical Occlusion Culling을 구현해서 지금까지도 잘 사용하고 있다. SW Occlusion Culling을 만든 이유는 HW Occlusion Culling을 대체하기 위함이 아니다. 전혀 아니다. 이것은 완전히 용도가 다르다. 현재 복셀 월드는 KD-Tree로 공간이 분할되어있다. 그리고 보여지는 오브젝트를 찾아내기 위해 트리를 탐색한다. 이 탐색 과정에서 … More SW Occlusion Culling 정리

Compiler Intrinsic을 사용해서 SIMD코드를 작성할때 주의할 점

어셈블리어로 SIMD를 다뤄보지 않고 Compiler Intrinsic으로 SIMD를 접하면 성능이 전혀 향상되지 않는 코드를 짜기 쉽다. 기본적으로 simd명령어로 존재하지 않는 기능은 1:1 치환이 불가능하다. 예를 들어 다음과 같은 코드는 simd명령으로 치환이 불가능하다. a.m128_f32[0] = b.m128_f32[3]; 3번째 성분을 0번째 성분으로 카피하는 명령어 같은건 존재하지 않으므로 범용 명령어의 mov기능만으로 구현된다. a.m128_f32[0] = b.m128_f32[0] + c.m128_f32[0] 이런 코드의 경우 … More Compiler Intrinsic을 사용해서 SIMD코드를 작성할때 주의할 점

Voxel Horizon 게임서버에 NPC를 넣었다.

NPC를 넣었다. Voxel Horizon에서는 기본적인 충돌처리를 ‘타원체 vs 삼각형’ , ‘타원체 vs 타원체’로 충돌처리를 해서 미끄러짐 벡터를 구하는 방식으로 처리하고 있다. 이런 방식에선 NPC가 복셀 사이에 걸려서 제대로 움직이지 못할 가능성이 높다. 그래서 처음부터 NPC는 넣지 않을 생각이었다. 그러나 나 혼자 이 게임을 서비스한다면 분명 서버에 동시접속자 수가 10명도 안될것이다. 혹은 로컬서버로 플레이하고 있다면 틀림 … More Voxel Horizon 게임서버에 NPC를 넣었다.

빡치는 통신요금 납부 스토리

[발단] 1. 2000년 초 하나로통신 ADSL이 동네에 들어옴. 2. ADSL을 들이려면 집전화도 바꿔야 한다 함. 그래서 한국통신(KT) -> 하나로 통신으로 변경. 이 시점에서 전화 명의자는 아버지에서 내 이름으로 바뀜. 요금은 지로로 납부. 3. LG파워콤이 들어오면서 인터넷 회선을 하나로ADSL에서 LG파워콤으로 변경. 내 신용카드로 자동이체. 4. 몇년이 지나 어느 순간 하나로가 SK브로드밴드로 넘어갔음. 집전화가 SK브로드밴드가 됨. 5. … More 빡치는 통신요금 납부 스토리

일본의 옛 유명 프로듀서들이 크라우드 펀딩으로 먹튀한(할) 건들에 대하여.

일본의 옛 유명 프로듀서들이 크라우드 펀딩으로 먹튀한(할) 건들에 대하여. 공개한 영상 퀄리티가 문제가 아니고 플레이 가능 버전을 보여주지 못하는게 진짜 문제임. 왜 영상을 공개하느냐? 영상 퀄리티로 까이느라 플레이버전이 없다는 심각한 사실이 묻혀버리거든. 일반인들은 돈과 시간을 투입하면 게임은 무조건 나온다고 생각한다. 영화나 음악 비하하자는게 아니고 그쪽은 똥이라도 촬영하고 녹음해서 팔면 파는거지만 게임은 소프트웨어다보니 그게 안된다. 최소한 … More 일본의 옛 유명 프로듀서들이 크라우드 펀딩으로 먹튀한(할) 건들에 대하여.

Game Dev – Voxel Horizon 외곽선 처리 개선

현재 외곽선 렌더링에 사용하는 팩터는 normal map이다. 렌더링된 Normal Map에 Laplacian filter를 먹여서 외곽선을 추출한다. 전반적으로 괜찮은 방식이지만 약간 문제가 있다. 첫번째 스샷을 보면 미쿠의 넥타이에는 외곽선이 표시되지 않는다. 왜냐하면 뒤에있는 상의와 normal이 거의 비슷하기 때문이다. Normal.a에 선형 depth값을 넣어도 소용없다. z값의 차이가 너무 작다. 그렇다고 그 차이를 뻥튀기시키면 멀리 떨어진 물체들이 문제가된다. Diffuse map에서 … More Game Dev – Voxel Horizon 외곽선 처리 개선

MS 모바일의 삽질의 역사

2001년인가 2002년인가 Windows XP랑 DirectX 8이 나왔을때 한국에서 MS의 뭔 세미나가 있었다. 아마 장소가 건대였을거다. MS 본사 직원 몇명이 발표를 했고 동시통역이 있었다. 별로 의미있는 얘긴 없었던걸로 기억한다. XP의 fast user switching 짱짱 좋으니 꼭 쓰세요~ 라는 얘기만 줄창 했던거 같다. 그리고 난 먼저 귀가했고 나중에 동료한테 재밌는 얘기 없었냐고 물어봤다. 누군가가 Windows CE에서 DirectX지원 … More MS 모바일의 삽질의 역사

DX12에서 Shader에 사용할 resource 하나 세팅하려면..

DX12에서 shader에서 쓸 resource(texture, Constant Buffer, RW Buffer등) 하나 만들려면 다음과 같은 작업이 필요하다. 1. Descriptor heap 생성 (Depth Buffer와 Render Target으로 사용하는 경우 각각에 대해 또 따로 만들어야함) 2. D3DResource생성 3. Descriptor Heap으로 부터 descriptor할당 4. D3DResource로부터 descriptor의 내용 업데이트.(gpu측 억세스 정보를 descriptor에 write) 5. Shader Reosurce View, Constant Buffer View , Unordered Access … More DX12에서 Shader에 사용할 resource 하나 세팅하려면..

SSAO적용.

SSAO적용. 아직 손볼곳이 많지만 대충 구현은 완료. 현재 directional라이트만 적용했더니 복셀이 너무 밋밋해 보여서 SSAO를 넣었다. 확실히 복셀 오브젝트에선 SSAO가 있는 편이 나은것 같다. 캐릭터에선 빼는게 좋겠고. Compute Shader로 구현했는데 덕택에 UWP on XBOX버전엔 당장은 적용 못한다. UWP on XBOX에선 DX Feature Level 10까지만 지원하니까 Compute Shader를 쓸 수 없다. Pixel Shader버전으로 다시 짜줘야하는데 귀찮네. … More SSAO적용.