Alanımda (yol izleme, bilgisayar animasyonu, parçacık simülasyonu, akışkan dinamiği, görüntü işleme, vb. Gibi şeyleri kapsayan VFX) algoritmik karmaşıklık esastır. Lineeritmik zamandan daha kötü çalışan herhangi bir şeyin, milyonlarca köşe noktasına, çokgenlere, voksellere, parçacıklara, teknelere, özellikle de bu şeylerin çoğunun sağlamak için saniyede birçok kez tamamlanması gerektiğinde, girişlerde makul bir sürede tamamlamayı umması mümkün değildir. gerçek zamanlı, etkileşimli geri bildirim.
Bununla birlikte, tipik olarak meslektaşlar arasında tartışmadaki algoritmik karmaşıklığa vurgu yapılmasının güçlü bir yanı yoktur, çünkü belki de biraz kabul edilmiş ve daha ziyade "ilkel" için alınmıştır. Genellikle bir yol izleyici yazıyorsanız, logaritmik veya daha iyi bir zamanda çalışacağı ve sınırlayıcı hacim hiyerarşileri gibi veri yapılarının okuyucu için uygulanması tanıdık ve nispeten önemsiz olduğu varsayılır. Multithreading ve SIMD'nin algoritmalardan daha önemli olduğunu söyleyen yetenekli bir meslektaşım bile vardı ve bir kabarcık türünü paralelleştirmekten çok daha fazlasını bekleyebileceğiniz anlamına geldiğini düşünmüyorum. Sanırım bunu söyledi çünkü mantıklı algoritmalar uygulayacağımızı kabul etti,
Çoğu zaman bu günlerde odak noktası, bu tanıdık algoritmaların çoğunu alıp CPU önbelleği, SIMD kayıtları ve talimatları, GPU'lar ve çoklu çekirdekler gibi donanımın temel özelliklerinden daha iyi yararlanmalarını sağlamaktır. Örneğin Intel, tanıdık eski BVH'yi alıp "ışın paketleri" kavramını bulmanın yeni bir yolunu bulmuş, temelde birden fazla tutarlı ışınları tek seferde yinelenen bir ağaç gezintisiyle test ediyordu (ki bu kulağa hoş gelebilir) karmaşıklık ve ek yük payı ile birlikte gelirdi, ancak bu ışınların artık SIMD talimatları ve kayıtları aracılığıyla ışın / AABB ve ışın / üçgen kavşakları için aynı anda test edilebilmesinden daha fazlasıdır).
Bilgisayar grafiklerinde çok temel şeyler olan catmull-clark alt bölümü ile benzer bir şey. Ancak günümüzde rekabetçi ve sıcak ve süper verimli olan şey, Charles Loop tarafından popülerleştirilen ve daha sonra Pixar tarafından benimsenen Gregory Patches kullanarak CC alt bölümünü yaklaşık olarak gösteren GPU uygulamalarıdır. Daha basit CPU uygulaması artık oldukça eskidir, algoritmik karmaşıklık açısından yerini aldığı için değil, GPU ile iyi oynayan bir şeyin yerini aldığı için.
Ve bu, genellikle bu günlerde donanımın altta yatan özelliklerinden nispeten bağımsız bir şekilde en iyi algoritma ile karşılaşılmaması gereken bir çok zorluktur. Aslında 90'lı yıllarda karakterleri ve diğer yumuşak bedenleri canlandırmak için çarpışma tespitini önemli ölçüde hızlandıran yeni bir hızlanma yapısı bulmaya başlayarak endüstride ayağımı aldım, bu da beni çok fazla alan olan bir hiyerarşik segmentasyon yaklaşımı kullanarak ancak bu kadar etkileyici CPU önbellekleri ve birden çok çekirdeği ve programlanabilir GPU'ları olmadan önce yayınladığımdan beri çok etkileyici değil ve bugünlerde, önemli değişikliklerin bir sonucu olarak tamamen farklı bir yaklaşım kullanıyorum. temel donanım.