This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
Справочник 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
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

API Migration

Major Changes#

Breaking Changes#

Procedural Mesh Modifications#

Previously, procedural mesh modification in static meshes followed a straightforward but limited workflow:

  1. Enable procedural mode
  2. Assign a new mesh
  3. Apply changes

While simple, this model had constraints that could introduce significant issues in practice.

For example, streaming was not supported for procedural meshes, so they had to be constantly kept in memory. In complex scenarios with large or numerous procedural objects, this could lead to excessive RAM and VRAM usage, and in some cases, even application crashes.

To overcome these limitations, we've significantly extended the procedural mesh API and introduced multiple procedural modes, each optimized for different performance and memory characteristics. These modes allow you to fine-tune behavior: whether you need ultra-fast updates for a small number of objects or efficient memory use via RAM-backed or disk-backed streaming.

Please note that selecting a procedural mode directly impacts streaming and memory usage (RAM, VRAM, and disk). Be sure to understand the details before making your choice.

2.19.1
Source code (C#)
ObjectMeshStatic myStaticMesh;
// ...

// Enable procedural mesh mode for this static mesh object
myStaticMesh.MeshProceduralMode = true;

// Update the mesh geometry using the provided source_mesh
myStaticMesh.ApplyMeshProcedural(source_mesh);
2.20
Source code (C#)
ObjectMeshStatic myStaticMesh;
// ...

// Choose one of the appropriate procedural modes
// DYNAMIC, BLOB, FILE or DISABLE
// For example, FILE - for streaming from disk
myStaticMesh.SetMeshProceduralMode(ObjectMeshStatic.PROCEDURAL_MODE.FILE);

// Update the source mesh of the "my_static_mesh" object via the source_mesh instance
// More options are available, pick the best for your needs
myStaticMesh.ApplyMoveMeshProceduralAsync(source_mesh);

For more details on configuration and best practices:

Updated Multithreading#

The AsyncQueue class has been expanded to support explicit task scheduling across multiple threads.

Each task can be assigned to a specific thread type (FILE_STREAM, GPU_STREAM, BACKGROUND, etc.), giving you precise control over where and how your logic runs. Each task can be assigned relative prioritiy, enabling dynamic balancing of workload under high concurrency. This is especially useful for scenarius involving:

  • Asynchronous file I/O
  • GPU-side resource initialization
  • Custom logic that should not block engine threads
  • Parallel computations

See the new AsyncQueueTasks and AsyncQueueStress samples available in both C++ and C# to explore the updates.

A comprehensive set of atomic and synchronization primitives is available to ensure thread-safe execution. These include standard mutexes, recursive locks, spinlocks, and a variety of low-level atomic types. The system supports both automatic (context-aware) synchronization behavior and manual selection of locking strategies, giving developers full control over memory consistency and contention management.

AsyncQueue Class#

ComponentSystem Class#

CustomSystemProxy Class#

DecalMesh Class#

Dir Class#

Engine Class#

UNIGINE 2.19.1 UNIGINE 2.20
FastShutdown Removed. The Engine now behaves as if Fast Shutdown is always set to 1. Please note that re-initializing the Engine again after shutting it down (call Init() after Shutdown()) without restarting the application is no longer possible!

FileSystem Class#

FileSystemMount Class#

GeodeticPivot Class#

InputGamePad Class#

New Properties

InputJoystick Class#

InputVRDevice Class#

New Functions

Json Class#

New Functions

Landscape Class#

UNIGINE 2.19.1 UNIGINE 2.20
GetTemporaryTexture( ivec2 ) Removed. Landscape textures should now be created using the corresponding constructor LandscapeTextures( ivec2 ).
ReleaseTemporaryTexture( LandscapeTextures ) Removed. Landscape textures are now removed via the destructor of the LandscapeTextures class.

New Functions

LandscapeMapFileSettings Class#

LandscapeMapFileSettings Class#

Light Class#

New Properties

LightEnvironmentProbe Class#

LightVoxelProbe Class#

UNIGINE 2.19.1 UNIGINE 2.20
Property ReflectionBias Renamed as SpecularReflectionBias.
Property ReflectionCubicFiltering Renamed as SpecularCubicFiltering.
Property ReflectionEnabled Renamed as SpecularEnabled.
Property ReflectionVisibilityRoughnessMax Renamed as SpecularVisibilityRoughnessMax.
Property ReflectionVisibilityRoughnessMin Renamed as SpecularVisibilityRoughnessMin.
Property AmbientBias Renamed as DiffuseNormalBias.
Property AmbientCubicFiltering Renamed as DiffuseCubicFiltering.

New Properties

Material Class#

UNIGINE 2.19.1 UNIGINE 2.20
TEXTURE_SOURCE_WBUFFER_WATER Replaced with TEXTURE_SOURCE_WBUFFER_FOAM instead.

New Functions

New Properties

Mesh Class#

UNIGINE 2.19.1 UNIGINE 2.20
CreateBounds( int ) Return value changed.
CreateSpatialTree( int ) Return value changed.
RemapCVertex( int ) Return value changed.
AddBoxSurface( string, vec3, int ) Set of arguments changed.
AddCapsuleSurface( string, float, float, int, int, int ) Set of arguments changed.
AddCylinderSurface( string, float, float, int, int, int ) Set of arguments changed.
AddDodecahedronSurface( string, float, int ) Set of arguments changed.
AddIcosahedronSurface( string, float, int ) Set of arguments changed.
AddPlaneSurface( string, float, float, float, int ) Set of arguments changed.
AddPrismSurface( string, float, float, float, int, int ) Set of arguments changed.
AddSphereSurface( string, float, int, int, int ) Set of arguments changed.

New Functions

New Properties

MeshAnimation Class#

UNIGINE 2.19.1 UNIGINE 2.20
FlipYZ( ) Return value changed.

MeshRender Class#

ObjectGuiMesh Class#

ObjectLandscapeTerrain Class#

ObjectMeshCluster Class#

ObjectMeshClutter Class#

ObjectMeshSkinned Class#

UNIGINE 2.19.1 UNIGINE 2.20
GetBoneSkiningTransform( int ) Renamed as GetBoneSkinningTransform( int ).

ObjectMeshStatic Class#

PackageUng Class#

UNIGINE 2.19.1 UNIGINE 2.20
PackageUng( string, string ) Set of arguments changed.
Property CompressionType Removed. Use GetCompressExtension( int ) instead.
Clone( ) Removed.
GetFileName( int ) Removed. Use GetFilePath( int ) instead.
RemoveFile( string ) Removed.
RemoveFile( int ) Removed.

New Functions

Property Class#

PropertyParameter Class#

Render Class#

UNIGINE 2.19.1 UNIGINE 2.20
GetD3D11Factory( ) Removed.
GetD3D11Device( ) Removed.
GetD3D11Context( ) Removed.
Property SSRTGINoiseStep Removed.
Property EventBeginAuxiliaryBuffer Removed. Use EventBeginAuxiliaryDecals or EventBeginAuxiliarySurfaces instead.
Property EventEndAuxiliaryBuffer Removed. Use EventEndAuxiliaryDecals or EventEndAuxiliarySurfaces instead.

New Functions

New Properties

Renderer Class#

RenderState Class#

RenderTarget Class#

Profiler Class#

Shader Class#

UNIGINE 2.19.1 UNIGINE 2.20
GetD3D11ComputeShader( ) Removed.
GetD3D11ControlShader( ) Removed.
GetD3D11EvaluateShader( ) Removed.
GetD3D11FragmentShader( ) Removed.
GetD3D11GeometryShader( ) Removed.
GetD3D11VertexShader( ) Removed.

StructuredBuffer Class#

UNIGINE 2.19.1 UNIGINE 2.20
GetD3D11ShaderResourceView( ) Removed.
GetD3D11UnorderedAccessView( ) Removed.
Property IsUsageCPUResource Removed. Use IsUsageRender instead.
Property IsUsageGPUResource Removed. Use IsUsageRender instead.

New Functions

New Properties

Texture Class#

Unsupported texture formats (RGB8/RGB16/RGB32, R24B8, D24) were removed, see replacement details below.

UNIGINE 2.19.1 UNIGINE 2.20
Texture( Image, int, int, int ) Set of arguments changed.
GetD3D11DepthStencilView( ) Removed.
GetD3D11DepthStencilView( int ) Removed.
GetD3D11RenderTargetView( int ) Removed.
GetD3D11RenderTargetView( ) Removed.
GetD3D11ShaderResourceView( ) Removed.
GetD3D11Texture( ) Removed.
GetD3D11UnorderedAccessView( int ) Removed.
FromD3D11Texture2D( IntPtr, int, int, int, int, int ) Removed.
FromD3D11Texture2D( IntPtr, int, int, int, int ) Removed.
FORMAT_RGB8 Removed. Use FORMAT_RGBA8 instead.
FORMAT_RGB16 Removed. Use FORMAT_RGBA16 instead.
FORMAT_RGB16U Removed. Use FORMAT_RGBA16U instead.
FORMAT_RGB16F Removed. Use FORMAT_RGBA16F instead.
FORMAT_RGB32U Removed. Use FORMAT_RGBA32U instead.
FORMAT_RGB32F Removed. Use FORMAT_RGBA32F instead.
FORMAT_R24B8 Removed. Use FORMAT_R32F instead.
FORMAT_D24 Removed. Use FORMAT_D32F instead (in case the Stencil was used, replace with FORMAT_D24S8/FORMAT_D32FS8).

VR Class#

VREyeTracking Class#

VRHand Class#

UNIGINE 2.19.1 UNIGINE 2.20
Property IsActive Renamed as IsTracking.

VRHandTracking Class#

New Properties

VRMixedReality Class#

Viewport Class#

ViewportData Class#

Visualizer Class#

Widget Class#

WidgetTreeBox Class#

WidgetVBox Class#

IG::Manager Class#

IG::Entity Class#

The information on this page is valid for UNIGINE 2.20 SDK.

Last update: 10.07.2025
Build: ()