4.8 Светящиеся текстуры (создание RAD-файла) Любая текстура в Half-Life может излучать свет. Но для этого она должна быть прописана в RAD-файле (файл текстового типа). Данный файл должен быть «подключен» при компиляции. О создании такого файла и пойдет речь в данной статье.
Зачем нужны светящиеся текстуры?
Как нам кажется, следующая картинка наглядно демонстрирует «зачем»:
Как видно из рисунка, светящаяся текстура делает лампу как бы действительно включенной. А вот если использовать обычный источник света — объект light, то стороны лампы получаются темными.
Есть, кстати, и еще один способ заставить объект светиться. Только при этом он абсолютно не будет излучать свет, а просто будет ярким. Существенным преимуществом данного метода перед светящимися текстурами является гораздо меньшее время компиляции.
Метод: превратите лампу в энтити-объект (func_wall, func_illusionary, возможно, какой-то другой объект) и выставьте параметр Minimum light level (иногда встречается _minlight) в какое-нибудь значение отличное от 0, например, 0.5. Теперь лампа будет обладать минимальной яркостью. Около лампы нужно будет создать источник света light, т.к. сама она свет не излучает.
Замечание: чтобы использовать выше описанный совет, у Вас должна быть новая версия FGD-файла (0.7.7 и выше) и компиляторы ZHLT 2.5.3 и выше.
Возвращаясь к светящимся текстурам, скажем что их можно использовать вместо источников света (light и light_spot), только делать это надо аккуратно и особо не увлекаться, ибо чревато большим (и очень большим) временем компиляции.
Свет, испускаемый такими текстурами, более реалистичен, чем при использовании вышеупомянутых объектов. Недостатком светящихся текстур является ограничение на их использование: на одном объекте не может быть больше 8 различных светящихся текстур, также ОЧЕНЬ нежелательно использовать много таких текстур на карте, т.к. для расчета освещения потребуется больше памяти и соответственно увеличится время компиляции. Кстати, при компиляции карты со светящимися текстурами неправильно отображается количество источников света. Их может быть написано, например, 1520, тогда как реально их создано не более 20 или 25. Виноваты светящиеся текстуры.
RAD-файл представляет из себя обычный текстовый файл, имеющий расширение *.rad. Давайте посмотрим на синтаксис этого файла.
+0~GENERIC65 255 255 255 100
+0~GENERIC86B 60 220 170 7500
EMERGLIGHT 255 200 100 50000
Здесь все просто. Каждая светящаяся текстура описывается в отдельной строке. Сначала идет точное название текстуры, например, EMERGLIGHT, затем в трех последующих числах указывается цвет испускаемого света в формате RGB. Его Вы можете подобрать в любом графическом редакторе, хотя бы в обычном Paint Brush. После 3-х чисел цвета ставится еще одно число, обозначающее яркость света. Яркость определяется не так, как для объектов light. Как видите, она может быть и 100 и 50000 и даже больше.
При определении яркости руководствоваться стоит размерами текстуры. Например, текстура с размерами 16х16 и текстура с размерами 256х160 при одинаковой яркости будут излучать разное количество света. Если необходимо, чтобы небольшая текстура (используемая, например, как лампочка) освещала всю комнату, то нужно выставлять довольно большие значения яркости (десятки тысяч). Для создания простой светящейся рекламы подойдет небольшое значение (100-200).
Как подключить rad-файл при компиляции?
По умолчанию компилятор HLRAD использует информацию о светящихся текстурах из файлов lights.rad и имя_карты.rad. Таким образом, чтобы текстура в игре излучала свет, необходимо создать rad-файл с именем карты (например, карта называется mybest.map, тогда rad-файл необходимо назвать mybest.rad), записать в него названия текстур, подобрать для них цвет света и его яркость и поместить rad-файл в папку к компиляторам. Все дополнительно ничего делать не требуется, т.е. не надо ничего дописывать к компиляторам, они сами найдут этот файл по имени.
Если имя у rad-файла другое, то здесь уже придется указать компилятору HLRAD (а именно он использует rad-файл) название rad-файла. Делается это при помощи параметра -lights. Пишем: -lights имя_файла.rad. Но в любом случае rad-файл должен находится в одной директории с компиляторами.