You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/remote-rendering/how-tos/conversion/configure-model-conversion.md
+36Lines changed: 36 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -198,6 +198,42 @@ By default the converter has to assume that you may want to use PBR materials on
198
198
199
199
Knowing that you never need dynamic lighting on the model, and knowing that all texture coordinates are in `[0; 1]` range, you can set `normal`, `tangent`, and `binormal` to `NONE` and `texcoord0` to half precision (`16_16_FLOAT`), resulting in only 16 bytes per vertex. Cutting the mesh data in half enables you to load larger models and potentially improves performance.
200
200
201
+
## Memory optimizations
202
+
203
+
Memory consumption of loaded content may become a bottleneck on the rendering systems. If the memory payload becomes too high, it may compromise rendering performance or cause the model to not load altogether. This paragraph discusses some important strategies to reduce the memory footprint.
204
+
205
+
### Instancing
206
+
207
+
Instancing is a concept where meshes are reused for parts with distinct spatial transformation, as opposed every part referencing its own unique geometry. Instancing has significant impact on the memory footprint.
208
+
Example use cases for instancing are the screws in an engine model or chairs in architectural models.
209
+
210
+
The conversion service respects instancing if parts are marked up accordingly in the source file. However, conversion does not perform additional deep analysis of mesh data to identify reusable parts. Thus the content creation tool and its export pipeline are the decisive criteria for proper instancing setup. For instance, [Autodesk 3ds Max](https://www.autodesk.de/products/3ds-max) has distinct object cloning modes called **`copy mode`** (geometry is unique) and **`instance mode`** (geometry is instanced).
211
+
212
+

213
+
214
+
A simple way to test whether instancing information gets preserved during conversion is to have a look at the [output statistics](get-information.md#example-info-file), specifically the `numMeshPartsInstanced` member. If the value for `numMeshPartsInstanced` is larger than zero, it indicates that meshes are shared across instances.
215
+
216
+
> [!NOTE]
217
+
> Instancing decreases the memory footprint of a model but has non-significant impact on rendering performance.
218
+
219
+
### Depth-based composition mode
220
+
221
+
If memory is a concern, configure the renderer with the [depth-based composition mode](../../concepts/rendering-modes.md#depthbasedcomposition-mode). In this mode, GPU payload is distributed across multiple GPUs.
222
+
223
+
### Decrease vertex size
224
+
225
+
As discussed in the [best practices for component format changes](configure-model-conversion.md#best-practices-for-component-format-changes) section, adjusting the vertex format can decrease the memory footprint. However, this option should be the last resort.
226
+
227
+
### Texture sizes
228
+
229
+
Depending on the type of scenario, the amount of texture data may outweigh the memory used for mesh data. Photogrammetry models are candidates.
230
+
The conversion configuration does not provide a way to automatically scale down textures. If necessary, texture scaling has to be done as a client-side pre-processing step. The conversion step however does pick a suitable [texture compression format](https://docs.microsoft.com/windows/win32/direct3d11/texture-block-compression-in-direct3d-11):
231
+
232
+
* `BC1` for opaque color textures
233
+
* `BC7` for source color textures with alpha channel
234
+
235
+
Since format `BC7` has twice the memory footprint compared to `BC1`, it is important to make sure that the input textures do not provide an alpha channel unnecessarily.
236
+
201
237
## Typical use cases
202
238
203
239
Finding good import settings for a given use case can be a tedious process. On the other hand, conversion settings may have a significant impact on runtime performance.
0 commit comments