Найти тему
Терри МакГиннис

Как устроены компьютерные игры: "рендеринг" - что это такое?

Бывало такое, что рассматривая какой-то объект в игре, вы замечали насколько хорошо он детализирован? Вы видели все трещинки, все пятнышки и понимали что это всё не просто нарисовано, а и вправду объёмно и реагирует на окружение (трещинки отбрасывают тень, а разные отполированные детали имеют реалистичное отражение).
Но что, если я вам скажу, что большинство из этих деталей - фейк и на самом деле являются простейшей текстурой?
Заваривайте чашку пельменей! На связи разработчик игр с восьмилетней практикой работы и сегодня я расскажу вам как нам дурачат глаз опытные разработчики игр!

Текстура как карта

В этой статье мы поговорим о том, как обычные картинки и немного программной магии создают просто неописуемо красивые эффекты.
В первую очередь давайте определимся с несколькими понятиями:

Текстура - обычная картинка в знакомых нам форматах, таких как .png .gif .jpg и т.д.

Ваша видеокарта (если она у вас есть :) при отрисовки текстуры видит её не как целую картинку, а как последовательность цифр. Чтоб было понятнее покажу на примере простой картинки:

Итак, мы видим небольшую картинку 5 пикселей в ширину и 1 в высоту. Однако наша видеокарта видит последовательность цветов: "белый, чёрный, белый, чёрный, белый". Если мы переведём названия цветов, в их чисельные эквиваленты (для белого это 255, для чёрного 0) то мы получим чисельною последовательность: "255000255000255".

Рендеринг

Что нам это даёт? Из обычной картинки мы получили текстуру или последовательность чисел, которую называют на лексике разработчиков игр картой. Для наглядности давайте представим что камера в игре навелась на эту же чёрно белую полосу. Выберем на видео из камеры одну зелёную точку.

-2

Теперь давайте посмотрим на камеру со стороны и проведём луч из центра камеры до того места где стоит наша зелёная точка. Что произойдёт в игре? На самом деле так происходит рендер игр. Камера по одной точке выпускает такие лучи и пытается узнать на какой цветовой код наткнулся луч.

-3

В нашем случае луч наткнулся на белый цвет, а значит на код "255" и мы на своём экране видим белый цвет в этой точке.

Чем больше разрешение нашего экрана, тем больше раз будет выпущен этот луч. Не верите? Измените разрешение в любой игре вначале до 1280*720, а потом на 800*600 и посмотрите как вырастает количество кадров в секунду (FPS) в вашей игре.

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

Смотрите статью о том, как понимает компьютер трёхмерные объекты в играх в статье "Как устроены компьютерные игры: точки, ребра, полигоны, текстуры, материалы"