summaryrefslogtreecommitdiff
path: root/doc/resources.md
blob: 4931f51ae526dbef8a6d20aee53e705386c5e280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Resource formats

## Dictionary format

```
[kkkk vvvv KK... VV...]...
 ^    ^    ^     ^
 |    |    |     | value
 |    |    | key
 |    | 16-bit kalue length
 | 16-bit key length
```

## PrefabIndex

| Key      | Value Type |
| -------- | ---------- |
| \<Name\> | Resource   |

## Prefab

| Key         | Value Type                   |           |
| ----------- | ---------------------------- | --------- |
| mesh        | Matrix3, Vec3, Res<MeshPart> | Multi key |
| light       | Vec3, Res<LightPart>         | Multi key |
| environment | Res<EnvironmentPart>         |           |

## MeshPart

Combinations of g_\*, va_\* and tex_\* are multiplied except normal which is
added. Defaults should be the identity for that operation, so default is 1 /
white except normals are zero.

| Key                | Value Type    |   |                    |
| ------------------ | ------------- | - | ------------------ |
| index              | Resource      |   |                    |
| g_metallic         | Float         |   |                    |
| g_roughness        | Float         |   |                    |
| g_albedo           | Vec3          |   |                    |
| g_alpha            | Float         |   |                    |
| g_transmission     | Float         |   |                    |
| g_emission         | Vec3          |   |                    |
| g_refractive_index | Float         |   |                    |
| g_attenuation      | Vec3          |   |                    |
| g_dispersion       | Float         |   |                    |
| g_thickness        | Float         |   |                    |
| va_position        | [Resource; 3] |   |                    |
| va_normal          | [Resource; 3] |   |                    |
| va_texcoord        | [Resource; 2] |   |                    |
| va_roughness       | Resource      |   |                    |
| va_metallic        | Resource      |   |                    |
| va_albedo          | [Resource; 3] |   |                    |
| va_alpha           | Resource      |   |                    |
| va_transmission    | Resource      |   |                    |
| va_emission        | Resource      |   |                    |
| tex_normal         | Resource      |   | Use color channels |
| tex_roughness      | Resource      |   | Use green channel  |
| tex_metallic       | Resource      |   | Use blue channel   |
| tex_albedo         | Resource      |   | Use color channels |
| tex_alpha          | Resource      |   | Use alpha channel  |
| tex_transmission   | Resource      |   | Use red channel    |
| tex_emission       | Resource      |   | Use color channels |
| tex_thickness      | Resource      |   | Use green channels |

- **Attenuation**: Attenuation coefficient for each color channel due to
  scattering within the material volume expressed as e-folding distance (m^-1).
  See [KHR_materials_volume].
- **Transmission**: Equivalent to `transmissionFactor` and `transmissionTexture`
  of [KHR_materials_transmission].
- **Refractive Index**: Equivalent to `ior` of [KHR_materials_ior]
- **Thickness**: Equivalent to `thicknessFactor` and `thicknessTexture` of
  [KHR_materials_volume].
- **Dispersion**: 20 / Abbe Number. Equivalent to `dispersion` of
  [KHR_materials_dispersion].

[KHR_materials_transmission]: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_transmission
[KHR_materials_ior]: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_ior
[KHR_materials_volume]: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_volume
[KHR_materials_dispersion]: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion

## LightPart

| Key      | Value Type |
| -------- | ---------- |
| radius   | Float      |
| emission | Vec3       |

## EnvironmentPart

| Key    | Value Type |                  |
| ------ | ---------- | ---------------- |
| skybox | Resource   |                  |
| sun    | Vec3, Vec3 | Direction, Color |

## Texture

WebP