-
Notifications
You must be signed in to change notification settings - Fork 5
RSB File Format RUS
Глоссарий
GR - игра Ghost Recon,
GRE - игровой движок игры Ghost Recon,
RSB - Red Storm Bitmap (формат для хранения текстур игры)
Ссылки
Подробный шаблон формата RSB для программы 010Editor RSB.bt
1. Ведение
2. Обзор
3. Секции
3.1. Заголовок файла
3.2. Пиксельные данные
3.3. Свойства текстуры
3.4. Дополнительные каналы текстуры
4. Аппендикс A
Этот документ описывает структуру формата файла RSB, используемого игровым движком GRE. RSB файлы хранятся в папке "Texture", а также некоторых других папках оригинальной игры и имеют расширение ".rsb". Формат RSB используется для хранения растровых изображений. Вы можете открывать и сохранять файлы RSB с помощью официального плагина для программы Photoshop.
RSB формат файла разделен на четыре основные секции (см Табл. 1). Файл не имеет сигнатур для определения его формата.
№ | Секция | Ссылки |
---|---|---|
1 | Заголовок файла | См. Таблица 2.0 |
2 | Пиксельные данные | См. Таблица |
3 | Дополнительные каналы поверхности | См. Таблица |
4 | Свойства текстуры | Таблица |
Размер заголовка файла в зависимости от версии файла RSB находится в пределах от 28 до 45 байт.
Размер | Тип данных | Описание | Значение |
---|---|---|---|
4 | integer | Версия файла | см. Таблицу 2.1 |
Размер текстуры | |||
4 | integer | Ширина | 1..2048 |
4 | integer | Высота | 1..2048 |
**Если версия файла 0, то добавляется переменная ** | |||
4 | integer | Есть ли в файле дополнительное 8 битная копия изображения | 0 - нет,1 - есть |
Для версий больше или равных 7ой добавляются четыре (?) переменных | |||
4 | integer (?) | Неизвестная константа | 0 |
1 | integer (?) | Неизвестная переменная | 0,1 |
1 | integer (?) | Неизвестная переменная | 0,1 |
1 | integer (?) | Неизвестная переменная | 0,1 |
Битовая маска | |||
4 | integer | Количество красные бит на один пиксель | 0, 4, 5, 6, 8 |
4 | integer | Количество зеленых бит на один пиксель | 0, 4, 5, 6, 8 |
4 | integer | Количество синих бит на один пиксель | 0, 4, 5, 6, 8 |
4 | integer | Количество битов прозрачности на один пиксель | 0, 4, 5, 6, 8 |
Для версий больше или равных 9ой добавляются две переменные | |||
4 | (?) | Неизвестная константа | hex - FFFF |
4 | integer | Версия формата сжатия DXT | 0,1,2,3,4,5 или FFFF (без ) |
Размер | Тип данных | Описание | Значение |
---|---|---|---|
2 | integer | Версия файла | 0,2,3,4,5,6 |
Версии RSB
Версия | Описание | Отличие |
---|---|---|
0, 1 | Используется в Dominant Species, Bang Gunship Elite, Force 21, Rainbow six (1998) + дополнения, Rogue Spear(2000) + дополнения, Freedom First Resistance, Ghost Recon | отсутствуют свойства текстуры, 0 - имеет два варианта структуры с палитрой и без |
2 | Используется в Ghost Recon | отсутствуют свойства текстуры |
3 | Используется в Ghost Recon | не содержит информацию о поверхности текстуры (См. Дополнительные каналы), не содержит информацию о МипМапах |
5, 6 | Используется в Ghost Recon | + свойства текстуры. которых нет в 3 |
8, 9 | Используется в Ghost Recon | + текстуры с DXT1 сжатием |
10, 11 | Используется в Rainbow Six Lockdown | + DXT5, + неизвестные переменные в секции со свойствами текстур |
№ | Размер | Комментарий |
---|---|---|
1 | 16 x 16 | |
2 | 16 x 32 | |
3 | 16 x 64 | |
4 | 32 x 32 | |
5 | 32 x 64 | |
6 | 32 x 128 | |
7 | 64 x 64 | |
8 | 64 x 128 | |
9 | 64 x 256 | |
10 | 128 x 128 | |
11 | 128 x 256 | |
12 | 128 x 512 | |
13 | 256 x 256 | |
14 | 256 x 512 | |
15 | 256 x 1024 | |
16 | 256 x 2048 | |
17 | 512 x 512 | |
18 | 512 x 1024 | |
19 | 512 x 2048 | |
20 | 1024 x 1024 | |
21 | 1024 x 2048 | |
22 | 2048 x 2048 |
Пиксельные данные в RSB файлах представляют собой массив пикселей в формате цветовой модели RGB в сжатом виде (DXT) или не сжатом. Один пиксель массива содержит значения яркости красной, зеленой и синей компоненты цвета, а также может дополнительно содержать информацию о прозрачности пикселя, т.н. альфа канал (см. Табл. 3). Значение всех переменных пикселя изменяется в пределах от 0 до 255 (см Табл. 3.1). Количество всех пикселей рассчитывается как произведение ширины на высоту текстуры.
№ | Маска (порядок) | бит на пиксель | Описание |
---|---|---|---|
1 | R5G6B5 | 16 | Красный - 5 бит, Зеленый - 6 бит, Синий - 5 бит |
2 | R8G8B8 | 24 | Красный - 8 бит, Зеленый - 8 бит, Синий - 8 бит |
3 | R4G4B4A4 | 16 | Альфа - 4 бита, Красный - 4 бита, Зеленый - 4 бит, Синий - 4 бит |
4 | R5G5B5A1 | 16 | Альфа - 1 бит, Красный - 5 бита, Зеленый - 5 бит, Синий - 5 бит |
5 | A4R4G8B8 | 24 | Альфа - 4 бита, Красный - 4 бита, Зеленый - 8 бит, Синий - 8 бит |
6 | A8B8G8R8 | 32 | Альфа - 8 бит, Красный - 8 бит, Зеленый - 8 бит, Синий- 8 бит |
7 | DXT1, DXT5 | 16 пикселей в 8(16) битном блоке | см. Описание формата DXT |
Режимы смешивания Alpha Testing и Alpha Blending.
При использовании режима Alpha Testing пиксели текстуры белого или черного цвета становятся либо полностью прозрачными или полностью непрозрачными (видимыми). Данный режим требует меньше ресурсов для отображения на экране, поскольку для его работы не требуется использование предварительной сортировки (alpha sorting). Однако, в отличии от режима Alpha Testing, режим Alpha Blending не поддерживает постепенное смешивание (gradual blend) по яркости пикселя. Таким образом Alpha Blending не подходит для отрисовки эффектов дыма, огня, воды, но хорош для заборов, деревьев, знаков, колес и любых других объектов с четкими границами.
Для работы режима Alpha Testing используются параметры Source Function и Destination Function, для Alpha Blending - Compare Function и "Reference Value".
Текстура в RSB файле может быть анимирована двумя способами: заданным смещением текстуры от первоначального положения и с использованием т.н. flipbook анимации, когда изображения последовательно сменяют друг друга.
Данный вид анимации заключается в перемещении текстуры в горизонтальном и вертикальном направлениях или ее вращении. Одновременно доступен только один вид: либо смешение, либо вращение.
Данный вид анимации заключается в смене одинаковых по размеру текстур в заданной последовательности.
№ | Название | Описание | Индекс |
---|---|---|---|
1 | Gunshot Transparent | Пули способны проходить сквозь текстуру | 1 |
2 | Grenade Transparent | Воздействие гранат и бомб сквозь текстуру | 2 |
4 | Line-of-sight Transparent | Враги (искусственный интеллект) будут видеть вас сквозь текстуру | 4 |
5 | Foliage | При попадании пули будут появляться листья | 8 |
7 | Water | Вода | 16 |
8 | Damage Texture | Не использовать | |
9 | Surface Type | Будет генерироваться звук при ходьбе по текстуре в зависимости от выбранного типа |
Теги текстуры, заданные в файле объекта к которому привязана текстура при экспорте из 3DS MAX, имеют приоритет над тегами в RSB файле.
Размер | Тип | Описание | Значение |
---|---|---|---|
Для файлов версий 5 и более + 1 переменная | |||
4 | integer | Количество дополнительных каналов | |
Если количество дополнительных каналов больше 0, то далее информация о каналах | |||
См Adobe Photoshop File Formats Specification | |||
Для всех версий | |||
1 | integer | Alpha Blending | 1 - вкл., 0 - выкл. |
1 | integer | Alpha Testing | 1 - вкл., 0 - выкл. |
1 | integer | Sampling | 1 - вкл., 0 - выкл. |
1 | integer | Animation | 1 - вкл., 0 - выкл. |
1 | integer | Scrolling | 1 - вкл., 0 - выкл. |
1 | integer | Tiled | 1 - вкл., 0 - выкл. |
1 | integer | *** Compression | 1 - on, 0 - off |
1 | integer | *** Distortion | 1 - on, 0 - off |
Для файлов версий 7 и более + 1 переменная | |||
4 | integer | TextureTags | см. Таблица |
Для файлов версий меньше чем 7 + 2 переменных | |||
3 | integer | Неизвестная переменная | |
Для всех версий | |||
4 | integer | Source Function | см. Таблица |
4 | integer | Destination Function | см. Таблица |
4 | integer | Compare Function | см. Таблица |
1 | integer | Reference Value | |
Texture scrolling | |||
4 | integer | Scrolling Type | see Table 4.5 |
4 | float | Horizontal Rate (moves texture horizontally) | |
4 | float | VerticalRate (moves texture vertically ) | |
Animation params | |||
4 | integer | Animation Type | see Table 4.4 |
4 | float | Animation Interval (play speed of an animation) | |
4 | integer | Frames Count | 0..9 |
(if Animation > 0 and TextureCount > 0) Frames Array list, repeated for Frames Count | |||
4 | integer | Frame Texture Name Length | |
string | Frame Texture Name | ||
if File Version > 4 two more values | |||
4 | integer | Maps Count | |
4 | integer | *** Subsampling Priority | |
1 | byte | Damaged | |
For all File Versions | |||
if Damaged > 0 one more value (It doesn't work properly. Do not use) | |||
4 | integer | Texture Name Length | |
string | Texture Name | ||
if File Version > 2 one more value | |||
4 | integer | Surface Type | see Table 4.6 |
*** It’s best to leave these parameters alone unless you like crashing.
№ | Texture size |
---|---|
0 | Zero |
1 | Less |
2 | Equal |
3 | Greater Equal |
4 | Always |
№ | Texture size |
---|---|
0 | Zero |
1 | One |
2 | Source Alpha |
3 | Inverse Source Alpha |
4 | Source Color |
5 | Inverse Source Color |
6 | Destination Color |
7 | Inverse Destination Color |
8 | Both Source Alpha |
9 | Both Inverse Source Alpha |
№ | Texture size |
---|---|
0 | Zero |
1 | One |
2 | Source Alpha |
3 | Inverse Source Alpha Source Color |
5 | Inverse Source Color |
6 | Destination Color |
7 | Inverse Destination Color |
8 | Both Source Alpha |
9 | Both Inverse Source Alpha |
№ | Texture size |
---|---|
0 | Cycle |
1 | Oscillate |
2 | Constant |
- Cycle - a repeating pattern that starts over when it finishes. But if its attached to a billboard object it stop at the end and the billboard will disappear.
- Oscillate - ping pong pattern
- Constant - similar to cycle but wont disappear if attached to a billboard
№ | Texture size |
---|---|
0 | Rotate |
1 | Degrees Seconds |
№ | Texture size |
---|---|
0 | NONE |
1 | Carpet |
2 | Concrete |
3 | Wood |
4 | Metal |
5 | Asphalt |
6 | Sand |
7 | Lowgrass |
8 | Highgrass |
9 | Puddle |
10 | Water |
11 | Drywall |
12 | Thin Metal |
13 | Thick Metal |
14 | Metal Gas Tank |
15 | Steam Pipe |
16 | Electrical Panel |
17 | Snow |
18 | Safety Glass |
19 | Bullet Resistant Glass |
20 | Ice |
21 | Mud |
22 | Glass |
23 | Foliage |
24 | Gravel |
25 | Glass Shards |
The RSB can store additional surface channels which apply surface properties to portions of the texture. This is useful when there are several different images on a single texture, some may be wood surfaces, some may be metal, etc.
Surface property corresponds to the sounds that are made when bullets impact the surface or when the player character walks on it. Surface Property Channels are based on photoshop alpha channles, more information about structures and data https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/.
№ | File version | Size |
---|---|---|
1 | 1, 2, 4, 5, 6 | 28 |
1 | 8 | 37 |
1 | 9 | 45 |
№ | File version | Size |
---|---|---|
1 | 1 | 0 |
2 | 2, 3 | 46 |
3 | 4 | 53 |
4 | 5, 6 | 61 |
5 | 6 | 65 |
6 | 8, 9 |
All copyrights belong to their respective owners.
Version History:
0.7
0.6
0.5
0.4