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코드를 작성할때 주의할 점