docs: correct renderer source contracts
Docs Deploy / Build and Deploy MkDocs (push) Successful in 33s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 33s
This commit is contained in:
2 files changed
+30
-19
No files matched your search
@@ -15,11 +15,16 @@ RVA в книге относится к определённой сборке DL
|
|||||||
## Сборка GOG
|
## Сборка GOG
|
||||||
|
|
||||||
The canonical disassembly source is the windowed GOG installation, not the
|
The canonical disassembly source is the windowed GOG installation, not the
|
||||||
Part 1/Part 2 test installations. Its `Terrain.dll` is a distinct revision:
|
Part 1/Part 2 test installations. The rows below identify GOG-specific DLL
|
||||||
|
builds. Match the module size and hash before applying one of their RVAs; the
|
||||||
|
Part 1/Part 2 builds remain listed separately above.
|
||||||
|
|
||||||
| Binary | SHA-256 | Size | Notes |
|
| Binary | Size (bytes) | SHA-256 |
|
||||||
| --- | --- | ---: | --- |
|
| --- | ---: | --- |
|
||||||
| `Terrain.dll` | `af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead` | 499712 | GOG camera receiver evidence; do not reuse Part 1/2 RVAs without a matching hash |
|
| `AniMesh.dll` | 172032 | `65659bf67f20e5be77d67a5b2f59968f61b94293143807fa59ca451c560c4f7e` |
|
||||||
|
| `Effect.dll` | 163840 | `386a3e8db1ce23f61957825d633c7dae1ed40c25cab0cf10a534385fd7cee789` |
|
||||||
|
| `iron3d.dll` | 1175552 | `d1dc4ea8535e2069b0a05c9e8be2724dd438ba44cca7a83007d8b2e50f9e35fa` |
|
||||||
|
| `Terrain.dll` | 499712 | `af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead` |
|
||||||
|
|
||||||
## Различающиеся модули
|
## Различающиеся модули
|
||||||
|
|
||||||
|
|||||||
+21
-15
@@ -87,7 +87,9 @@ drivers и video modes, проверяет поддержку 3D, перевод
|
|||||||
современная реализация заменяет наблюдаемую fixed-function семантику над этой
|
современная реализация заменяет наблюдаемую fixed-function семантику над этой
|
||||||
границей, а не должна эмулировать COM-объекты DirectX. Равный SHA-256 Ngi32 в
|
границей, а не должна эмулировать COM-объекты DirectX. Равный SHA-256 Ngi32 в
|
||||||
Частях 1 и 2 зафиксирован в [таблице оригинальных модулей](../reference/original-binaries.md);
|
Частях 1 и 2 зафиксирован в [таблице оригинальных модулей](../reference/original-binaries.md);
|
||||||
это поддерживает единый контракт Vulkan backend.
|
это поддерживает единый контракт Vulkan backend. RVA относятся к конкретной
|
||||||
|
сборке DLL: перед переносом адреса на другую установку сверяйте размер и
|
||||||
|
SHA-256 соответствующего модуля в этой таблице.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
enumerate adapters and video modes
|
enumerate adapters and video modes
|
||||||
@@ -269,7 +271,7 @@ static_assert(sizeof(Batch20) == 20);
|
|||||||
```c
|
```c
|
||||||
for (Node& node : model.nodes) {
|
for (Node& node : model.nodes) {
|
||||||
Matrix node_world = parent_world * local_transform(node);
|
Matrix node_world = parent_world * local_transform(node);
|
||||||
uint16_t sid = node.slot_index[lod * 5 + group];
|
uint16_t sid = node.slot_index[native_state * 5 + native_lod];
|
||||||
if (sid == 0xFFFF) continue;
|
if (sid == 0xFFFF) continue;
|
||||||
|
|
||||||
Slot& slot = model.slots[sid];
|
Slot& slot = model.slots[sid];
|
||||||
@@ -306,17 +308,17 @@ render queues и сортировка, но связи данных остают
|
|||||||
struct AnimKey24 {
|
struct AnimKey24 {
|
||||||
float position[3];
|
float position[3];
|
||||||
float time;
|
float time;
|
||||||
|
int16_t qw;
|
||||||
int16_t qx;
|
int16_t qx;
|
||||||
int16_t qy;
|
int16_t qy;
|
||||||
int16_t qz;
|
int16_t qz;
|
||||||
int16_t qw;
|
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
Quaternion components декодируются как signed value / `32767.0`. На диске
|
На диске quaternion записан в порядке WXYZ; каждый signed component
|
||||||
порядок полей XYZ-W, но runtime math использует логическое `[w, x, y, z]`.
|
декодируется делением на `32767.0`. Декодер переставляет поля в portable
|
||||||
Безусловная современная нормализация после чтения не добавляется без parity
|
`Pose.rotation = [x, y, z, w]` и оставляет их ненормализованными. Нормализация
|
||||||
проверки: она может изменить крайние кадры.
|
выполняется при подготовке pose к sampling.
|
||||||
|
|
||||||
Type 19 является массивом `uint16_t`; его `attr2` задаёт общее число кадров
|
Type 19 является массивом `uint16_t`; его `attr2` задаёт общее число кадров
|
||||||
timeline. Для конкретного узла `anim_map_start` указывает на блок длиной
|
timeline. Для конкретного узла `anim_map_start` указывает на блок длиной
|
||||||
@@ -622,14 +624,18 @@ Lightmap не является обычной diffuse texture. WEAR содерж
|
|||||||
отдельным slot или texture stage. Замена lightmap предварительным умножением в
|
отдельным slot или texture stage. Замена lightmap предварительным умножением в
|
||||||
diffuse texture ломает LOD, atlas coordinates и динамическую модуляцию.
|
diffuse texture ломает LOD, atlas coordinates и динамическую модуляцию.
|
||||||
|
|
||||||
Тени проходят отдельным render pass. Terrain содержит пути для теней зданий и
|
Vulkan preview строит projected shadows для выбранных зданий и роботов,
|
||||||
роботов, ограничения максимального числа, detail level и smoothing. Реализованы
|
отбрасывает spheres вне шести clip-плоскостей с радиусом `sphere + 100` и
|
||||||
native visibility по шести Vulkan clip-плоскостям с радиусом sphere +100,
|
сохраняет порядок видимых кандидатов; frame builder обрабатывает не более 20
|
||||||
порядок кандидатов и лимит 20 до построения страниц, projected-size LOD,
|
casters. Текущая реализация выделяет страницы в atlas `256 x 256` с 28 page
|
||||||
directional/point light contribution, native page layout, raster, smoothing и
|
slots и использует одну smoothing pass. Вызов preview передаёт `fade = 1.0` и
|
||||||
receiver projection с edge clipping. Unknown settings из `shade.cfg` читаются и
|
LOD defaults: minimum LOD `1` и detail multiplier `1.0` отдельно для зданий и
|
||||||
сохраняются по именам, а не заменяются произвольными modern defaults. Для native ray query
|
роботов. Rust-путь не загружает `shade.cfg`: эти значения задаются кодом, а
|
||||||
surface descriptor в `+0x10` требует наличия всех переданных bits, а descriptor
|
параметры файла пока не влияют на preview. Проекция учитывает вклад
|
||||||
|
directional и point lights.
|
||||||
|
|
||||||
|
Receiver projection обрезает projected quad по рёбрам треугольника. Native ray
|
||||||
|
query descriptor в `+0x10` требует наличия всех переданных bits, а descriptor
|
||||||
в `+0x14` исключает поверхности с любым переданным bit. Общий shadow query
|
в `+0x14` исключает поверхности с любым переданным bit. Общий shadow query
|
||||||
использует full exclusion mask `0x2000`; actor four-ray path получает compact
|
использует full exclusion mask `0x2000`; actor four-ray path получает compact
|
||||||
mask `0x8008`, который landscape boundary разворачивает в full mask
|
mask `0x8008`, который landscape boundary разворачивает в full mask
|
||||||
|
|||||||
Reference in new issue
Block a user