Графический конвейер

Графический конвейер

Итак, центральный процессор разобрался с тем, как должен выглядеть игровой мир в данный момент времени, заранее «закачал» все текстуры и каркасы в память видеокарты. Теперь дело за графическим процессором, и в первую очередь он должен заняться трансформацией, т. е. спроецировать каждый трёхмерный каркас на плоскость экрана. Необходимо также просчитать освещение каждой узловой точки с учётом всех источников света. Впоследствии эта информация будет использована для имитации отражения света объектами и их взаимного затенения.

Графический конвейер

Обе задачи для современных игр с множеством сложных объектов требуют нешуточных ресурсов. До появления первых процессоров NVIDIA GeForce и АП Radeon эти проблемы возлагались на центральный процессор. Но в составе теперешних графических процессоров соответствующий блок («вершинный конвейер») присутствует даже не в единственном числе. А у самых мощных карт таких конвейеров десятки, что позволяет за один такт вычислять позиции множества точек, в секунду, таким образом, могут быть определены координаты нескольких миллионов точек

 

Впрочем, с ростом разрешения экрана основная нагрузка ложится на следующий блок графического процессора, куда поступают уже готовые к покрытию текстурами каркасы. Называется он пиксельным конвейером и, пожалуй, играет определяющую роль в производительности видеокарты. Дело в том. что одной текстурой для покрытия отдельно взятого полигона очень редко удаётся ограничиться.

 

Например, если в игре в тёмной пещере зажигается свет, придётся накладывать поверх текстур стен и потолка дополнительный комплект текстур освещённости. Для передачи рельефа наряду с простой текстурой используется дополнительная, где отмечены возвышенности и впадины наподобие того, как это делается на картах местности, только более светлым оттенком отмечаются вершины, а тёмным — впадины. Для предметов, отражающих свет и тем более зеркальных, потребуется дополнительный комплект текстур отражения, причём во втором случае он должен создаваться в реальном времени на основе уже прорисованной части игрового мира позади игрока, т. е. непосредственно на экране не присутствующей!

Не меньшую проблему представляет задача строительства протяжённых объектов — уходящего вдаль забора, стен, пола, потолка лабиринта и т. п. Необходимы как минимум три комплекта текстур с разным разрешением, в противном случае придётся либо довольствоваться крупноблочной картинкой вблизи, либо тратить процессорные ресурсы на заполнение текстурами с высоким разрешением удалённого, едва видимого участка. А чтобы стыки текстур из разных комплектов не были заметны и выглядели чётко, приходится смешивать и фильтровать их по особым алгоритмам.

Графический конвейер

Даже в таком кратком описании задача выглядит весьма сложной. Но надо учесть, что построить изображение «от и до» графический процессор должен успеть хотя бы 30 раз в секунду, иначе движение в кадре будет выглядеть «дёрганным». И к тому же готовыми текстурами можно передать далеко не все привычные в реальном мире объекты и явления.

Например, крайне трудно передать мимику и меняющееся выражение лица, текущую воду, колышущиеся листья и траву. Если пытаться увеличить наборы текстур до необходимого объёма, даже самый мощный графический процессор начинает «захлёбываться». Для решения этой задачи был предложен оригинальный выход — поручить графическому процессору не простое наложение текстур из заранее подготовленного комплекта, а их самостоятельное изготовление. Для этого в пиксельный конвейер загружается маленькая программа-шейдер, которая и определяет алгоритм построения текстуры в каждом кадре. В частности, таким образом на экране передаются течение воды и другие природные явления.

По смыслу названия шейдер (от англ. shade — «затенять») — программа построения теней. Вероятно, первоначально разработчики связывали использование шейдеров с задачей воссоздания реалистичного освещения, очень важной для правильной передачи атмосферы игры. Но сейчас приём смешивания текстур непосредственно в графическом процессоре используется практически всегда.

Это очень важно для программирования природных явлений. Ведь не секрет, что действие старых игр разворачивалось по преимуществу в подземельях, так как затемнённые интерьеры проще программировать. Теперь же игроки наконец получили возможность окончательно выбраться из подземелий и лабиринтов и играть на открытых пространствах.

 

Понравилась статья? Поделиться с друзьями:
prime-pc.ru
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: