필자의 분야 (경로 추적, 컴퓨터 애니메이션, 입자 시뮬레이션, 유체 역학, 이미지 처리 등을 다루는 VFX)에서 알고리즘 복잡성은 기본입니다. Linearithmic 시간보다 열악하게 작동하는 것은 수백만 개의 정점, 다각형, 복셀, 입자, 텍셀에 일반적으로 도달하는 입력에 대해 합리적인 시간에 완료 할 수있는 방법이 없습니다. 특히 많은 것들이 초당 몇 번 완료 해야하는 경우 실시간 대화식 피드백.
그럼에도 불구하고, 일반적으로 동료들 사이에서 논의 할 때 알고리즘 복잡성에 대한 강조는 강력하지 않습니다. 아마도 당연하고 다소 "기본적"인 것으로 여겨지기 때문일 것입니다. 일반적으로 경로 추적기를 작성하는 경우 로그 시간 이상으로 작동하고 볼륨 볼륨 계층과 같은 데이터 구조가 독자에게 구현하기에 친숙하고 비교적 사소한 것으로 가정합니다. 나는 숙련 된 동료조차도 멀티 스레딩과 SIMD가 알고리즘보다 중요하다고 말하면서도 버블 정렬의 병렬화를 많이 기대할 수 있다고 생각하지 않습니다. 그는 우리가 합리적인 알고리즘을 적용한다고 당연한 것으로 생각했기 때문에,
요즘에는 자주 익숙한 알고리즘을 많이 사용하여 CPU 캐시, SIMD 레지스터 및 명령어, GPU 및 다중 코어와 같은 하드웨어의 기본 특성을보다 잘 활용하는 데 중점을 둡니다. 예를 들어, 인텔은 익숙한 오래된 BVH를 가져 와서 "레이 패킷"이라는 개념을 생각해내는 새로운 방법을 고안했습니다. 기본적으로 재귀적인 트리 탐색으로 여러 개의 코 히어 런트 광선을 한 번에 테스트합니다. SIMD 명령 및 레지스터를 통해 광선 / AABB 및 광선 / 삼각형 교차에 대해 광선을 동시에 테스트 할 수 있다는 사실을 제외하고는 복잡성과 오버 헤드가 많이 있습니다.
컴퓨터 그래픽에서 매우 기초적인 내용 인 catmull-clark subdivision과 비슷한 것입니다. 그러나 오늘날 경쟁력이 높고 효율적이며 매우 효율적인 것은 Charles Loop가 대중화하고 나중에 Pixar가 채택한 Gregory Patches를 사용하여 CC 세분화를 근사화하는 GPU 구현입니다. 보다 간단한 CPU 구현은 이제 알고리즘 복잡성 측면에서 대체 된 것이 아니라 GPU에서 잘 작동하는 것으로 대체 되었기 때문에 이제는 더 이상 사용되지 않습니다.
그리고 그것은 요즘 하드웨어의 기본 특성과 상대적으로 독립적 인 방식으로 최고의 알고리즘을 제시하지 못하는 많은 과제입니다. 공간 인덱스가 아닌 계층 적 세분화 방식을 사용하여 90 년대에 캐릭터 및 기타 소프트 바디에 애니메이션을 적용하기위한 충돌 감지를 크게 가속화하는 새로운 가속 구조를 제공함으로써 실제로 업계에 발을 디,습니다. 구인을 제공하지만 요즘 인상적인 CPU 캐시와 여러 코어 및 프로그래밍 가능한 GPU를 갖기 오래 전에 게시 한 이후로 더 이상 인상적이지 않습니다. 요즘에는 크게 변경된 결과로 완전히 다른 접근법을 사용합니다. 기본 하드웨어.