No meu campo (VFX, que abrange coisas como rastreamento de caminhos, animação por computador, simulação de partículas, dinâmica de fluidos, processamento de imagens etc.), a complexidade algorítmica é fundamental. Não há como algo que funcione em tempo além do tempo linearitmico possa concluir a qualquer momento razoável em entradas que geralmente atingem milhões de vértices, polígonos, voxels, partículas, texels, especialmente quando muitas dessas coisas precisam ser concluídas muitas vezes por segundo para fornecer feedback interativo em tempo real.
Com isso dito, não há uma ênfase tão forte na complexidade algorítmica na discussão normalmente entre colegas, talvez porque seja um pouco dado como certo e um tanto "rudimentar". Geralmente, é assumido que, se você estiver escrevendo um rastreador de caminho, ele funcionará em tempo logarítmico ou melhor, e que estruturas de dados, como hierarquias delimitadoras de volume, são familiares e relativamente triviais de implementar para o leitor. Eu até tive um colega habilidoso que dizia que multithreading e SIMD são mais importantes que algoritmos, e não acho que ele quis dizer isso no sentido de que você poderia esperar muito da paralelização de um tipo de bolha. Acho que ele disse isso porque, por certo, aplicaríamos algoritmos sensíveis,
Atualmente, grande parte do foco atualmente está em pegar muitos desses algoritmos familiares e em explorá-los melhor as características subjacentes do hardware, como cache da CPU, registros e instruções SIMD, GPUs e múltiplos núcleos. Por exemplo, a Intel criou uma nova maneira de pegar o velho BVH familiar e criar o conceito de "pacotes de raios", basicamente testando vários raios coerentes ao mesmo tempo com um tipo recursivo de passagem de árvore (que pode parecer ele vem com sua parcela de complexidade e sobrecarga, exceto que é mais do que compensado pelo fato de que esses raios agora podem ser testados simultaneamente para interseções de raios / AABB e raios / triângulo através de instruções e registros do SIMD).
Coisa semelhante com a subdivisão catmull-clark, que é um material muito rudimentar em computação gráfica. Hoje em dia, o que é competitivo, quente e super eficiente são as implementações de GPU que se aproximam da subdivisão de CC usando Gregory Patches, popularizado por Charles Loop e posteriormente adotado pela Pixar. A implementação mais direta da CPU agora é bastante obsoleta, não necessariamente porque foi substituída em termos de complexidade algorítmica, mas porque foi substituída por algo que funciona bem com a GPU.
Atualmente, esse é o grande desafio hoje em dia: não apresentar o melhor algoritmo de maneira relativamente independente das características subjacentes do hardware. Na verdade, eu peguei o pé na indústria ao criar uma nova estrutura de aceleração que acelerou significativamente a detecção de colisões para animar personagens e outros corpos moles nos anos 90 usando uma abordagem de segmentação hierárquica em oposição a um índice espacial, o que me levou a um monte de ofertas de emprego, mas hoje em dia não é mais tão impressionante desde que a publiquei, muito antes de termos caches de CPU impressionantes, vários núcleos e GPUs programáveis e o que não é, e hoje em dia uso uma abordagem completamente diferente como resultado das mudanças significativas no hardware subjacente.