diff --git a/doc/en/block-properties.md b/doc/en/block-properties.md
index 8dc73d69..055a5901 100644
--- a/doc/en/block-properties.md
+++ b/doc/en/block-properties.md
@@ -62,6 +62,7 @@ Rotation profile (set of available block rotations and behaviour of placing bloc
- "none" - no rotation available (default profile)
- "pipe" - wood logs, pipes, pillars
- "pane" - panels, doors, signs
+- "stairs" - "pane" + flipped variants
## Lighting
diff --git a/doc/en/resources.md b/doc/en/resources.md
index 2643f6d7..f43c0ae3 100644
--- a/doc/en/resources.md
+++ b/doc/en/resources.md
@@ -6,7 +6,9 @@ Resources include:
- framebuffers
- and other limited resources
-At the moment only **cameras** are implemented.
+At the moment only the following are implemented:
+- camera - **camera**.
+- post-effect - **effect slot**.
The resources requested by the pack are specified through the *resources.json* file in the format:
```json
diff --git a/doc/en/scripting.md b/doc/en/scripting.md
index f205a237..b9661cd3 100644
--- a/doc/en/scripting.md
+++ b/doc/en/scripting.md
@@ -19,6 +19,7 @@ Subsections:
- [file](scripting/builtins/libfile.md)
- [gfx.blockwraps](scripting/builtins/libgfx-blockwraps.md)
- [gfx.particles](particles.md#gfxparticles-library)
+ - [gfx.posteffects](scripting/builtins/libgfx-posteffects.md)
- [gfx.text3d](3d-text.md#gfxtext3d-library)
- [gfx.weather](scripting/builtins/libgfx-weather.md)
- [gui](scripting/builtins/libgui.md)
diff --git a/doc/en/scripting/builtins/libgfx-posteffects.md b/doc/en/scripting/builtins/libgfx-posteffects.md
new file mode 100644
index 00000000..ffd6c502
--- /dev/null
+++ b/doc/en/scripting/builtins/libgfx-posteffects.md
@@ -0,0 +1,37 @@
+# gfx.posteffects library
+
+A library for post-processing effects control.
+
+The effect slot is a resource and must be declared in resources.json in the root directory of the pack:
+
+```json
+{
+ "post-effect-slot": [
+ "slot_name"
+ ]
+}
+```
+
+```lua
+-- Returns the index of the effect slot by name (pack:slot_name).
+-- If the specified slot does not exist, returns -1
+gfx.posteffect.index(name: str) --> int
+
+-- Assigns the effect to the slot
+gfx.posteffect.set(slot: int, effect: str)
+
+-- Returns the effect intensity (from 0.0 to 1.0)
+-- If the slot is empty, returns 0.0
+gfx.posteffect.get_intensity(slot: int) --> number
+
+-- Sets the effect intensity (from 0.0 to 1.0)
+-- (The correctness of processing the parameter between 0.0 and 1.0
+-- depends on the effect)
+gfx.posteffect.set_intensity(slot: int, intensity: number)
+
+-- Returns true if the slot is not empty and the effect intensity is non-zero
+gfx.posteffect.is_active(slot: int) --> bool
+
+-- Sets parameters values ('param' directives)
+gfx.posteffect.set_params(params: table)
+```
diff --git a/doc/en/scripting/ui.md b/doc/en/scripting/ui.md
index 85420fa2..1ddafdba 100644
--- a/doc/en/scripting/ui.md
+++ b/doc/en/scripting/ui.md
@@ -202,6 +202,17 @@ Here, *color* can be specified in the following ways:
|----------|--------|------|-------|-----------------------------|
| src | string | yes | yes | id of the embedded document |
+## Select
+
+Derived from button with access to properties such as the text to display.
+
+Properties:
+
+| Name | Type | Read | Write | Description |
+|---------|--------|------|-------|--------------------------------------------------|
+| value | string | yes | yes | Selected value |
+| options | table | yes | yes | List of options (tables `{value=..., text=...}`) |
+
## Inventory
Properties:
diff --git a/doc/en/xml-ui-layouts.md b/doc/en/xml-ui-layouts.md
index b25028f2..1127d79f 100644
--- a/doc/en/xml-ui-layouts.md
+++ b/doc/en/xml-ui-layouts.md
@@ -163,6 +163,25 @@ Container for embedding an external document. Content is scaling to the iframe s
- `src` - document id in the format `pack:name` (`pack/layouts/name.xml`)
+## *select*
+
+Drop-down list. Options are described by `option` sub-elements, the `value` attribute of which contains the value, the inner text is the text displayed in the UI.
+
+Example of list description:
+
+```xml
+
+```
+
+- `width` - minimum content width. Default: 100.
+- `selected` - initially selected value. Default: "".
+- `onselect` - function to which the user-selected value is passed
+
# Inventory elements
## *inventory*
diff --git a/doc/ru/block-properties.md b/doc/ru/block-properties.md
index 84ffac64..8013ac14 100644
--- a/doc/ru/block-properties.md
+++ b/doc/ru/block-properties.md
@@ -63,6 +63,7 @@
- "none" - вращение блока отключено (по-умолчанию)
- "pipe" - профиль "труба". Примеры блоков: бревно, труба, лампочка
- "pane" - профиль "панель". Примеры блоков: панель, дверь, табличка
+- "stairs" - профиль "ступеньки" ("pane" + перевернутые варианты)
### Испускаемые частицы - *particles*
diff --git a/doc/ru/resources.md b/doc/ru/resources.md
index e8ea1b93..b374a9af 100644
--- a/doc/ru/resources.md
+++ b/doc/ru/resources.md
@@ -6,7 +6,9 @@
- фреймбуферы
- и подобные ограниченные по количеству ресурсы
-На данный момент реализованы только **камеры**.
+На данный момент реализованы только:
+- camera - **камера**.
+- post-effect - **слот эффектов**.
Запрашиваемые паком ресурсы указываются через файл resources.json в формате:
```json
diff --git a/doc/ru/scripting.md b/doc/ru/scripting.md
index 79e53450..6fb86dce 100644
--- a/doc/ru/scripting.md
+++ b/doc/ru/scripting.md
@@ -19,6 +19,7 @@
- [file](scripting/builtins/libfile.md)
- [gfx.blockwraps](scripting/builtins/libgfx-blockwraps.md)
- [gfx.particles](particles.md#библиотека-gfxparticles)
+ - [gfx.posteffects](scripting/builtins/libgfx-posteffects.md)
- [gfx.text3d](3d-text.md#библиотека-gfxtext3d)
- [gfx.weather](scripting/builtins/libgfx-weather.md)
- [gui](scripting/builtins/libgui.md)
diff --git a/doc/ru/scripting/builtins/libgfx-posteffects.md b/doc/ru/scripting/builtins/libgfx-posteffects.md
new file mode 100644
index 00000000..f0a75011
--- /dev/null
+++ b/doc/ru/scripting/builtins/libgfx-posteffects.md
@@ -0,0 +1,37 @@
+# Библиотека gfx.posteffects
+
+Библиотека для работы с эффектами пост-обработки.
+
+Слот эффектов является ресурсом, и должен быть объявлен в resources.json в корневой директории пака:
+
+```json
+{
+ "post-effect-slot": [
+ "имя_слота"
+ ]
+}
+```
+
+```lua
+-- Возвращает индекс слота эффектов по имени (пак:имя_слота).
+-- При отсутствии указанного слота возвращает -1
+gfx.posteffect.index(name: str) --> int
+
+-- Назначает эффект на слот
+gfx.posteffect.set(slot: int, effect: str)
+
+-- Возвращает интенсивность эффекта (от 0.0 до 1.0)
+-- Если слот пуст, возвращает 0.0
+gfx.posteffect.get_intensity(slot: int) --> number
+
+-- Устанавливает интенсивность эффекта (от 0.0 до 1.0)
+-- (Корректность обработки параметра между значениями 0.0 и 1.0 зависит
+-- от эффекта
+gfx.posteffect.set_intensity(slot: int, intensity: number)
+
+-- Возвращает true если слот не пуст и интенсивность эффекта ненулевая
+gfx.posteffect.is_active(slot: int) --> bool
+
+-- Устанавливает значения параметров (директивы 'param')
+gfx.posteffect.set_params(params: table)
+```
diff --git a/doc/ru/scripting/ui.md b/doc/ru/scripting/ui.md
index 8dae3f4d..d61d2af3 100644
--- a/doc/ru/scripting/ui.md
+++ b/doc/ru/scripting/ui.md
@@ -169,7 +169,6 @@ document["worlds-panel"]:clear()
| src | string | да | да | отображаемая текстура |
| region | vec4 | да | да | под-регион изображения |
-
## Холст (canvas)
Свойства:
@@ -203,6 +202,17 @@ document["worlds-panel"]:clear()
|----------|--------|--------|--------|----------------------------|
| src | string | да | да | id встраиваемого документа |
+## Меню выбора (select)
+
+Является производным от кнопки с доступом к свойствам, таким как отображаемый текст.
+
+Свойства:
+
+| Название | Тип | Чтение | Запись | Описание |
+|----------|--------|--------|--------|----------------------------------------------------------------|
+| value | string | да | да | Выбранное значение |
+| options | table | да | да | Список опций (таблиц `{value=..., text=...}`) |
+
## Инвентарь (inventory)
Свойства:
diff --git a/doc/ru/xml-ui-layouts.md b/doc/ru/xml-ui-layouts.md
index 179f1bc0..a2f068ca 100644
--- a/doc/ru/xml-ui-layouts.md
+++ b/doc/ru/xml-ui-layouts.md
@@ -164,6 +164,25 @@
- `src` - id документа в формате `пак:имя` (`пак/layouts/имя.xml`)
+## Меню выбора - *select*
+
+Раскрывающийся список. Опции описываются под-элементами `option`, атрибут `value` которых содержит значение, внутренний текст - текст отображаемый в UI.
+
+Пример описания списка:
+
+```xml
+
+```
+
+- `width` - минимальная ширина содержимого. По-умолчанию: 100.
+- `selected` - изначально выбранное значение. По-умолчанию: "".
+- `onselect` - функция, в которую передаётся выбранное пользователем значение
+
# Элементы инвентаря
## Инвентарь - *inventory*