Подробностей внутреннего устройства движка сообщается пока очень мало. В общих чертах устроено все будет так: к набору стандартных базовых типов объектов добавляется ряд новых, описывающих те структуры, которые удалось эффективно реализовать на GPU. Например, примитив Debris[Переводится это слово вовсе не так, как вы подумали, а «осколки», «обломки», «частицы»], абстракция твердого тела. Примитивы можно будет как задавать готовыми 3D-моделями, так и конструировать на лету силами центрального процессора. Последнее может оказаться особенно полезным при визуализации взрывов и прочих разрушений: например, размер и форма выбиваемых снарядами из кирпичной стены кусков будут зависеть от силы выстрела и места попадания. После того как описание объекта передано на карту, CPU им больше не занимается: все, начиная от расчета столкновений и заканчивая выводом треугольников на экран, делает графический процессор.
Обещан также некий высокоскоростной односторонний интерфейс, при помощи которого можно снабжать GPU информацией, необходимой для учета воздействия на игровой мир объектов, параметры которых хранятся не на карте, а в оперативной памяти. Очевидно, к таковым в первую очередь относятся управляемые системой ИИ вражеские монстры и все объекты, подконтрольные пользователю. В эту же группу с большой вероятностью попадают тела, форма которых задается параметрически или постоянно меняется.
Поддерживается и моделирование так называемых нечетких объектов (жидкостей, дыма), которые, как обычно, задаются системой частиц или сеткой узлов плюс набором дифференциальных уравнений, описывающих действие частиц (узлов) друг на друга и их реакцию на внешние силы. Судя по всему, в пакете реализован быстрый интегратор вроде входящего в небезызвестный пакет NovodeX. Ясно, что как раз тут прирост по скорости должен быть самым большим: уж что-что, а методы решения систем дифференциальных уравнений на массивно-параллельных системах изучены очень хорошо.
К лету nVidia и Havok обещают довести технологию до ума, так что к концу года можно ожидать первых игр с официальной поддержкой нового движка. До революции остались считанные месяцы, друзья.
Как известно, две трети населенных пунктов России находится в сельской местности, где зачастую нет даже телефона. Что уж там говорить о паре видеокарт nVidia семейства GeForce 7xxx с поддержкой технологии SLI. Так что давайте обратим взор к разработкам, не требующим таких больших мощностей, но оттого не менее интересным. В конце концов, говоря, что на GPU можно делать что угодно, я ведь не врал.
Если вы смотрели чудесный мультфильм «Последняя фантазия» («Final Fantasy: The Spirits Within»), то наверняка обратили внимание, как реалистично там выглядят волосы героев. Я был сражен наповал: и на плечи ложатся, и на ветру колышутся, и друг с другом переплетаются. И волосков там не два и не десять, а тысячи, десятки тысяч. Даже страшно представить вычислительную мощь, стоявшую за этим шедевром. Я это все к чему говорю: в сделанном пару лет назад к выходу GeForce 6800 демо-ролике «Nalu» одноименная русалка обладала шевелюрой сравнимой реалистичности. А просчитывалось все (не без участия GPU, конечно) в реальном времени. В играх я пока такого нигде не встречал, но, думаю, это лишь вопрос времени.
Другим довольно редким на экранах наших мониторов гостем является имитация одежды. Обратите внимание: плащи к персонажам игр насмерть прибиты гвоздями, в шляпы вделан титановый каркас, а все складки накрахмалены и для надежности пропитаны клеем-"момент". Но надежда есть: в последнее время стали появляться алгоритмы, позволяющие сравнительно недорогими средствами моделировать поведение ткани в интерактивном режиме. В простейшем случае поступают так: участок ткани представляют как решетку узлов, каждый из которых образует упругие связи с четырьмя соседями. Затем на каждом кадре последовательно: а) применяют действие гравитации, то есть сдвигают все узлы вниз в соответствии со временем, прошедшим с предыдущего кадра; б) проверяют, что расстояние между соседними узлами не стало слишком большим, в противном случае корректируют координаты узлов; в) следят за тем, чтобы узлы не проходили сквозь препятствия и, опять-таки, подправляют их положение в случае необходимости. Все три стадии элементарно переписываются в терминах операций над текстурами, и скорость выполнения получающегося кода весьма высока. Впрочем, в этом каждый может убедиться самостоятельно, скачав соответствующую программу, например, с сайта NVIDIA.