Skip to content

RSB File Format RUS

AlexKimov edited this page Apr 20, 2018 · 11 revisions

Неофициальное описание формата RSB

Дата: 2018.04 | Версия: 0.8

Глоссарий

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. Структура файла RSB

Секция Ссылки
1 Заголовок файла См. Таблица 2.0
2 Пиксельные данные См. Таблица
3 Дополнительные каналы поверхности См. Таблица
4 Свойства текстуры Таблица

Секции

Заголовок файла

Размер заголовка файла в зависимости от версии файла RSB находится в пределах от 28 до 45 байт.

Таблица 2.0 Структура заголовка файла для версий игры для ПК
Размер Тип данных Описание Значение
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.1 Структура заголовка файла для версий игры на PS2
Размер Тип данных Описание Значение
2 integer Версия файла 0,2,3,4,5,6

Версии RSB

Таблица 3. Версии 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, + неизвестные переменные в секции со свойствами текстур
Таблица 4. Размеры текстур, используемые в игре.
Размер Комментарий
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). Количество всех пикселей рассчитывается как произведение ширины на высоту текстуры.

Таблица 3. Битовые маски
Маска (порядок) бит на пиксель Описание
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 анимации, когда изображения последовательно сменяют друг друга.

Анимация с помощью смещения текстуры (Scrolling)

Данный вид анимации заключается в перемещении текстуры в горизонтальном и вертикальном направлениях или ее вращении. Одновременно доступен только один вид: либо смешение, либо вращение.

Fllipbook анимация

Данный вид анимации заключается в смене одинаковых по размеру текстур в заданной последовательности.

Параметры текстуры

Таблица 4. Теги
Название Описание Индекс
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 файле.

Таблица 4. Свойства текстуры
Размер Тип Описание Значение
Для файлов версий 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.

Table 4.1 COMPARE FUNCTION PARAMETER
Texture size
0 Zero
1 Less
2 Equal
3 Greater Equal
4 Always
Table 4.2 Source function parameter
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
Table 4.3 Destination function parameter
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
Table 4.4 ANIMATION TYPE
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
Table 4.5 SCROLLING TYPE
Texture size
0 Rotate
1 Degrees Seconds
Table 4.6 SURFACE TYPE
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

Surface Property Channels

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/.

Appendix A.

File Sections sizes in bytes

File header section

File version Size
1 1, 2, 4, 5, 6 28
1 8 37
1 9 45

Texture properties section (minimumal size)

File version Size
1 1 0
2 2, 3 46
3 4 53
4 5, 6 61
5 6 65
6 8, 9

Version History:

0.7         
0.6
0.5 
0.4
Clone this wiki locally