Приблизительно так можно перевести с английского «Beyond Triangles» — название последней главы замечательной книги «GPU Gems». Она одной из первых рассказала массовому читателю о возможности использовать графический процессор для чего-то большего, нежели рендеринг составленных из треугольников моделей. Тогда это были главным образом научные расчеты: динамика жидкостей, визуализация результатов объемного сканирования, расчет стереограмм и т. д. Однако за прошедшие несколько лет ситуация радикально изменилась: на GPU были перенесены все классические алгоритмы и разработан целый ряд новых, максимально использующих преимущества, даваемые архитектурой современных видеокарт. Техника GPGPU[General-Purpose Computation on GPUs, вычисления общего назначения на графических процессорах] становится по-настоящему general-purpose, универсальной, подходящей для решения практически любых задач. Мне, как большому энтузиасту этой области компьютерных наук, хотелось бы рассказать об одном из самых многообещающих ее направлений: использовании GPU для расчета внутренней логики игр.
Дело в том, что обычно ядро игры устроено так: сначала на центральном процессоре рассчитываются все перемещения и взаимодействия объектов, изменение их формы (анимация), параметры среды и пр. Затем, с учетом всех этих данных, сцена (то есть набор моделей и спецэффектов) переводится все тем же центральным процессором в стандартное представление: набор координат вершин треугольников и их атрибутов (нормалей, цветов, текстурных координат и прочего). Полученный массив данных, зачастую довольно большой, пересылается на видеокарту, которая и занимается их выводом на экран: расчетом освещения, наложением текстур и применением различных спецэффектов. И хотя пропускная способность шины процессор-видеокарта за последние годы подросла довольно сильно, она до сих пор зачастую является «узким местом» при программировании игр. Поэтому весьма соблазнительно избежать этой пересылки и реализовать выполнение как можно большей части алгоритмов прямо на графическом процессоре.
Чего не хватает современным играм, чтобы их наконец-то можно было назвать по-настоящему реалистичными? Поиграв во второй HalfLife на максимальных настройках графики, я уже совсем не уверен, что главным препятствием на пути окончательного переселения человечества в компьютерные миры является несовершенство визуальной составляющей. Несколько лет назад мне довелось повозиться с хорошим шлемом виртуальной реальности, и я не сомневаюсь: подай на него картинку уровня детища Valve, и достоверности изображения для девяноста девяти процентов случаев хватит с лихвой.
Другое дело, взаимодействие объектов игрового мира друг с другом и отклик их на действия человека. Лично меня при игре даже в самые динамичные игры вроде Warcraft III, Need For Speed, Grand Theft Auto или ту же HalfLife не покидает ощущение, что я попал в галактику, вдруг остывшую до нуля градусов по Кельвину. Планеты здесь подобно Луне лишены атмосферы, и ветер на них отсутствует. Дым и осколки разорвавшихся снарядов во всем подражают рентгеновским лучам и проходят сквозь тела, не причинив им ни малейшего вреда. Сами тела при этом сделаны из сплошного куска металла, но, разрушаясь, тут же растворяются в воздухе. Жидкостей здесь не бывает. Как, впрочем, и резины, дерева, глины или ваты.