This page has been translated automatically.
Video Tutorials
Interface
Essentials
Advanced
How To
Professional (SIM)
UnigineEditor
Interface Overview
Assets Workflow
Version Control
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Sandworm
Using Editor Tools for Specific Tasks
Extending Editor Functionality
Built-in Node Types
Nodes
Objects
Effects
Decals
Light Sources
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
Programming
Fundamentals
Setting Up Development Environment
Usage Examples
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
Materials and Shaders
Rebuilding the Engine Tools
GUI
VR Development
Double Precision Coordinates
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Content Creation
Content Optimization
Materials
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials

Streaming

This section contains settings related to resource streaming.

Streaming settings

Streaming Settings
First Frames Force The number of frames to load immediately after the first frame. It will make the scene appear right at the application start-up.
Range of values: [0, INT_MAX]. The default value is : 60.
Console access: render_streaming_first_frames_force (API control)
Max Threads The maximum number of threads used for streaming. Higher number of threads results in faster streaming, but may cause spikes in case of excessive consumption of GPU resources.
Range of values: [1, 256]. The default value is : 1.
Console access: render_streaming_max_threads (API control)
Particles Memory Limit The cache memory limit for vertices of particle systems, in percentage of the total GPU memory.
Notice
Setting a too low limit for a huge number of particle systems in the scene may lead to rendering only some of them.

Range of values: [0, 100]. The default value is : 3.
Console access: render_streaming_particles_memory_limit (API control)

Shaders#

Compile Mode The compilation mode for shaders that are used in the loaded world. The following modes are available:
  • Async - asynchronous shaders compilation.
  • Force - forced compilation of shaders required for each frame at ones.
Option #1 is selected by default (see above).
(API control)

Budgets#

Loading The time limit for loading graphics resources, in milliseconds per frame. Increasing the limit leads to increasing the streaming performance. However, memory consumption also increases due to a decrease in the resource loading speed.
Range of values: [0.0f, inf]. The default value is : 1.0f.
Console access: render_streaming_budget_loading (API control)
Textures Destroy The time limit for deleting textures, in milliseconds per frame. The Engine will distribute the textures cleanup process by the required number frames in order to not exceed the time limit. The number of frames will also depend on the amount of content in the scene and the computing capacity. Increasing the limit leads to increasing the streaming performance. However, memory consumption also increases due to a decrease in the texture unloading speed.
Range of values: [0.0f, inf]. The default value is : 0.1f.
Console access: render_streaming_budget_destroy_textures (API control)
Meshes Destroy The time limit for deleting meshes, in milliseconds per frame. The Engine will distribute the meshes cleanup process by the required number frames in order to not exceed the time limit. The number of frames will also depend on the amount of content in the scene and the computing capacity. Increasing the limit leads to increasing the streaming performance. However, memory consumption also increases due to a decrease in the mesh unloading speed.
Range of values: [0.0f, inf]. The default value is : 0.1f.
Console access: render_streaming_budget_destroy_meshes (API control)
Notice
The graphic resources are regularly checked for being modified in order to be reloaded or deleted.

Textures#

Streaming Mode The streaming mode for textures. The following modes are available:
  • Async - asynchronous loading of textures.
  • Force - force-loading of textures required for each frame at ones.
Option #1 is selected by default (see above).
(API control)
Cache Resolution The resolution for texture cache elements. These minimized copies of textures are used instead of the originals while the latter are loaded. One of the following values:
  • 8x8
  • 16x16 (by default)
  • 32x32
  • 64x64
  • 128x128
  • 256x256
  • 512x512

Console access: render_streaming_textures_cache_resolution (API control)
Memory Limit The cache memory limit used for textures streaming. This is a recommended value to aim for. So, it can be exceeded if textures are required to render the current frame. The memory limit is associated with the lifetime: textures are deleted from video memory only when both values are exceeded.
Range of values: [0, 100]. The default value is : 65.
Console access: render_streaming_textures_memory_limit (API control)
Life Time The lifetime of GPU cache used for textures rendering. The engine deletes textures after this time only if the specified memory limit for textures streaming is also exceeded.
Range of values: [1, 60]. The default value is : 4.
Console access: render_streaming_textures_life_time (API control)

Meshes GPU#

Streaming Mode The streaming mode for loading meshes to video memory (VRAM). The following modes are available:
  • Async - asynchronous loading of meshes.
  • Force - force-loading of meshes required for the current frame at once.
  • All - loading all meshes available in the project on the application start-up. This mode is good for small projects with few meshes.
Option #1 is selected by default (see above).
(API control)
Memory Limit The memory limit used for loading meshes to video memory (VRAM). This is a recommended value to aim for. So, it can be exceeded if meshes are required to render the current frame. The memory limit is associated with the lifetime: meshes are deleted from VRAM only when both values are exceeded.
Range of values: [0, 100]. The default value is : 4.
Console access: render_streaming_meshes_limit_vram (API control)
Life Time The lifetime of meshes in video memory since the last time they were accessed. The engine deletes meshes after this time only if the specified VRAM limit is also exceeded.
Range of values: [0, 60]. The default value is : 4.
Console access: render_streaming_meshes_life_time_vram (API control)

Meshes CPU#

Streaming Mode The streaming mode for loading meshes to memory (RAM). The following modes are available:
  • Async - asychronous loading of meshes.
  • Force - force-loading of meshes required for the current frame at once.
  • All - loading all meshes available in the project on the application start-up. This mode is good for small projects with few meshes.
Option #1 is selected by default (see above).
(API control)
Memory Limit The memory limit used for loading meshes to memory (RAM). This is a recommended value to aim for. So, it can be exceeded if meshes are required for the current frame. The memory limit is associated with the lifetime: meshes are deleted from RAM only when both values are exceeded.
Range of values: [1, 100]. The default value is : 5.
Console access: render_streaming_meshes_limit_ram (API control)
Life Time The lifetime of meshes in memory since the last time they were accessed. The engine deletes meshes after this time only if the RAM limit is also exceeded.
Range of values: [1, 60]. The default value is : 20.
Console access: render_streaming_meshes_life_time_ram (API control)

Prefetch CPU#

Collision Mode The mode of asynchronous pre-loading of meshes to memory before they are used. Pre-loading is available only for meshes, which have at least one surface with the Collision flag set. There are 3 modes of loading such meshes to RAM:
  • Disable - loading is disabled.
  • Radius - meshes within the prefetch radius are loaded.
  • Full - all meshes with the Collision flag are loaded.
This method should be used when the Async streaming mode for meshes is set. Option #1 is selected by default (see above).
(API control)
Intersection Mode The mode of asynchronous pre-loading of meshes into memory before they are used. Pre-loading is available only for meshes, which have at least one surface with the Intersection flag set. There are 3 modes of loading such meshes to RAM:
  • Disable - loading is disabled.
  • Radius - all meshes within the prefetch radius are loaded.
  • Full - all meshes with the Intersection flag are loaded.
This method should be used when the Async streaming mode for meshes is set. Option #1 is selected by default (see above).
(API control)
Radius The radius within which meshes are pre-loaded into memory. The value should exceed the physics radius (for collisions) and/or the radius within which intersections are calculated.
Range of values: [0.0f, inf]. The default value is : 0.0f.
Console access: render_streaming_meshes_prefetch_radius (API control)

For OpenGL Only#

The settings below are available for OpenGL API only.

Notice
These parameters should be carefully adjusted for each particular case and configuration as they are heavily dependent on hardware and driver used.
Async Buffer

Size of an intermediate buffer (between the CPU and new resource) used for mesh and texture streaming, in Mb. The size of this buffer must be equal to the size of the largest resource (mesh/texture), otherwise in case of a larger resource, the buffer will be resized causing a spike.

Notice
Be aware, that the size of this intermediate buffer will be added to total memory consumption.
Async Buffer Indices

Size of an intermediate buffer, analogous to the Async Buffer above, used for mesh streaming (to store vertex indices of meshes), in Mb.

Notice
Be aware, that the size of this intermediate buffer will be added to total memory consumption.
Async Buffer Synchronization

Enable buffer synchronization for transferring data from the streaming thread to the main one. When disabled, both async buffer and async buffer for indices are created anew each time. This reduces the number of buffer synchronizations but increases the number of memory allocations.

Notice
Sometimes (depending on the hardware/driver used, e.g. when the main thread is affected by sychronization primitives in other threads) memory allocation may be faster than synchronizations, in such cases, when streaming becomes unacceptably slow, it is recommended to disable buffer synchronization.
Last update: 2023-09-26
Build: ()