Частью грядущего обновления игры станет улучшение качества отображения теней, отбрасываемых космическими объектами; при этом нагрузка на видеокарту практически не увеличится. Неровные края теней и их невысокая точность уйдут в прошлое — тени будут четкими и жесткими, как и подобает игре про мрачное и опасное будущее.
Эффективное использование площади текстур
Начали мы с оптимизации существующих карт теней (shadow maps) — теперь площадь соответствующих текстур используется гораздо более эффективно. Раньше размеры области, освещавшейся источником света, определялись при помощи сферы, в которую вписывалась модель (bounding sphere); в свою очередь, эта сфера вписывалась в куб, сориентированный по осям координат (axis-aligned bounding box, AABB), а силуэт куба проецировался в поле зрения источника света. У карт теней для кораблей, не заполняющих собой полностью объем сферы (то есть всех кораблей, существующих в игре), были слишком широкие поля; решение было технически правильным, однако на выходе мы получали не очень точные тени. Теперь мы определяем освещаемую площадь при помощи прямоугольного объема, в который вписывается сама модель — источник света как бы фокусируется на ней, не освещая пустоту вокруг.
На приведенных ниже изображениях наглядно видна разница между качеством «старых» и «новых» теней — создается иллюзия значительного увеличения размеров текстуры (при том, что на самом деле они не изменились).
Оптимизация работы фильтра
Неровные края и дефекты теней невозможно свести на нет одним лишь увеличением размеров текстуры (реальным или кажущимся) — они станут меньше, но никуда при этом не исчезнут. Мягкость краев теней в «Еве» обеспечивается алгоритмом Variance Shadow Mapping (VSM), однако до настоящего времени результаты его работы оставляли желать лучшего — сказывались маленькие размеры рисунка на карте теней, неправильно подобранные параметры алгоритма и всевозможные недоработки. Фильтрами мы не пользовались вовсе — при таком качестве исходного материала от них не было никакого толку. К счастью, все эти проблемы были нами устранены; теперь неровные края теней по большей части сглаживаются без излишнего размытия и потери детализации.
В качестве примера возьмем модель линкора класса «Скорпион»; на обеих парах картинок сверху показаны «старые» тени, а снизу — тени, обработанные новым фильтром (обратите внимание на число в левом верхнему углу — оно указывает на длину стороны текстуры).
Следует ли считать, что мы добились идеального результата? Увы, нет — у каждого способа построения теней есть свои недостатки, и VSM отнюдь не является исключением из этого правила. Тем не менее, мы уверены в том, что внесенные нами изменения позволят добиться отличного качества теней в 90% случаев, так что на долю теней-со-странностями останется лишь 10% (а не 100%, как это было раньше).