API Migration
Major Changes#
- Added a new AtomicInteger class.
- Added a new AtomicLockFreeAlign class.
- Added a new AtomicLockFreeRaw class.
- Added a new AtomicPointer class.
- Added a new AtomicWithMutex class.
- Added a new CPUShaderCallable class.
- Added a new CPUShaderCallableStateless class.
- Added a new MutexAdvance class.
- Added a new MutexCriticalSection class.
- Added a new MutexSlim class.
- Added a new MutexSpin class.
- Added a new PoolCPUShaders class.
- Added a new RWMutexSlim class.
- Added a new RWMutexSpin class.
- Added a new ReentrantMutexBase class.
- Added a new ScopedMutexLock class.
- Added a new ScopedMutexReaderLock class.
- Added a new ScopedMutexWriterLock class.
- Added a new ScopedSpinLockInteger class.
Breaking Changes#
Procedural Mesh Modifications#
Previously, procedural mesh modification in static meshes followed a straightforward but limited workflow:
- Enable procedural mode
- Assign a new mesh
- 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++)
|
---|---|
2.20 |
Source code (C++)
|
For more details on configuration and best practices:
- Refer to the updated Procedural Mesh Workflow.
- See the following classes: ObjectMeshStatic, ObjectGuiMesh, DecalMesh, ObjectMeshCluster, ObjectMeshClutter
- Check out the new Mesh Modification and Mesh Generation samples available in both C++ and C#
Const-Qualified Engine Types#
To improve code safety and consistency in C++ workflows, a wide range of engine objects now have const-qualified versions.
It allows to explicitly mark references as read-only, ensuring that non-const methods cannot be called on them. This helps improve code clarity, prevent accidental modifications, and enforce stricter API contracts at compile time.
XmlPtr xml = Xml::create();
xml->addChild("Node"); // OK: XmlPtr allows modification
ConstXmlPtr const_xml = Xml::create();
const_xml->addChild("Node"); // Error: cannot modify through ConstXmlPtr
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#
New Functions
- ASYNC_THREAD_BACKGROUND
- ASYNC_THREAD_ASYNC
- ASYNC_THREAD_ASYNC_FRAME_POOL
- ASYNC_THREAD_GPU_STREAM
- ASYNC_THREAD_FILE_STREAM
- ASYNC_THREAD_MAIN
- ASYNC_THREAD_NEW
- NUM_ASYNC_THREADS
- ASYNC_PRIORITY_CRITICAL
- ASYNC_PRIORITY_DEFAULT
- ASYNC_PRIORITY_BACKGROUND
- runSyncMultiThread( CallbackBase2<int, int> *, int )
- runAsyncMultiThread( CallbackBase2<int, int> *, int )
- runAsync( AsyncQueue::ASYNC_THREAD, CallbackBase *, AsyncQueue::ASYNC_PRIORITY )
- isPoolCPUShaderThread( )
- isAsyncRenderThread( )
- isBackgroundThread( )
- isAsyncThread( )
- isFileStreamThread( )
- isGPUStreamThread( )
- isMainThread( )
CustomSystemProxy Class#
New methods should be implemented in case you inherit from the CustomSystemProxy Class.
DecalMesh Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
getMeshCurrentRAM( ) | Return value changed. |
getMeshForceRAM( ) | Return value changed. |
getMeshAsyncRAM( ) | Return value changed. |
getMeshProceduralRAM( ) | Renamed as getMeshDynamicRAM( ). |
getMeshProceduralVRAM( ) | Renamed as getMeshDynamicVRAM( ). |
asyncCalculateNodes( int ) | Removed. |
asyncCalculateEdges( int ) | Removed. |
setMeshProceduralMode( ObjectMeshStatic::PROCEDURAL_MODE, int ) | Set of arguments changed. |
isMeshProceduralMode( ) | Removed. |
applyMeshProcedural( const Ptr<Mesh> & ) | Removed. Use one of the following methods: applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int ) applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, int ) applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int ) |
New Functions
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- deleteDynamicMesh( )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int )
- getCopyMeshRAM( Ptr<Mesh> & )
- createCopyMeshRAM( )
Dir Class#
Engine Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
isFastShutdown() | 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#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
createMount( const char *, const char *, int, const Vector<String> &, const Vector<String> &, const Vector<String> &, bool ) | Set of arguments changed. |
New Functions
FileSystemMount Class#
GeodeticPivot Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
toWorld( const Math::dvec3 &, GeodeticPivot::UP_AXIS ) | Set of arguments changed. |
toWorldPreserveRotation( const Math::mat4 &, const Math::dvec3 &, GeodeticPivot::UP_AXIS ) | Set of arguments changed. |
toWorldPreserveRotation( const Math::dmat4 &, const Math::dvec3 &, GeodeticPivot::UP_AXIS ) | Set of arguments changed. |
New Functions
InputGamePad Class#
InputJoystick Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
playForceFeedbackEffectConstant( float ) | Set of arguments changed. |
playForceFeedbackEffectRamp( float, unsigned long long ) | Set of arguments changed. |
playForceFeedbackEffectSineWave( float, unsigned int ) | Set of arguments changed. |
playForceFeedbackEffectSquareWave( float, unsigned int ) | Set of arguments changed. |
playForceFeedbackEffectTriangleWave( float, unsigned int ) | Set of arguments changed. |
playForceFeedbackEffectSawtoothDownWave( float, unsigned int ) | Set of arguments changed. |
playForceFeedbackEffectSawtoothUpWave( float, unsigned int ) | Set of arguments changed. |
New Functions
- playForceFeedbackEffectDamper( float, float, float, float )
- playForceFeedbackEffectFriction( float, float, float, float )
- playForceFeedbackEffectSpring( float, float, float, float, float, float )
- playForceFeedbackEffectSawtoothDownWave( float, float, float, int, unsigned int, unsigned int, unsigned int, unsigned int )
- playForceFeedbackEffectSawtoothUpWave( float, float, float, int, unsigned int, unsigned int, unsigned int, unsigned int )
- playForceFeedbackEffectTriangleWave( float, float, float, int, unsigned int, unsigned int, unsigned int, unsigned int )
- playForceFeedbackEffectSquareWave( float, float, float, int, unsigned int, unsigned int, unsigned int, unsigned int )
- playForceFeedbackEffectSineWave( float, float, float, int, unsigned int, unsigned int, unsigned int, unsigned int )
InputVRDevice Class#
Json Class#
Landscape Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
getTemporaryTexture( const Math::ivec2 & ) | Removed. Landscape textures should now be created using the corresponding constructor LandscapeTextures::create( const Math::ivec2 & ). |
releaseTemporaryTexture( const Ptr<LandscapeTextures> & ) | Removed. Landscape textures are now removed via the destructor of the LandscapeTextures class. |
New Functions
- asyncResetModifications( const UGUID & )
- asyncResetModifications( int, const UGUID & )
- asyncTextureDraw( const UGUID &, const Math::ivec2 &, const Math::ivec2 &, int, const Vector<Math::WorldBoundBox> &, const Vector<Math::WorldBoundBox> & )
- asyncTextureDraw( int, const UGUID &, const Math::ivec2 &, const Math::ivec2 &, int, const Vector<Math::WorldBoundBox> &, const Vector<Math::WorldBoundBox> & )
LandscapeMapFileSettings Class#
LandscapeMapFileSettings Class#
Light Class#
LightEnvironmentProbe Class#
LightVoxelProbe Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
setAmbientCubicFiltering( bool ) | Renamed as setDiffuseCubicFiltering( bool ). |
isAmbientCubicFiltering( ) | Renamed as isDiffuseCubicFiltering( ). |
setAmbientBias( float ) | Renamed as setDiffuseNormalBias( float ). |
getAmbientBias( ) | Renamed as getDiffuseNormalBias( ). |
setReflectionEnabled( bool ) | Renamed as setSpecularEnabled( bool ). |
isReflectionEnabled( ) | Renamed as isSpecularEnabled( ). |
setReflectionBias( float ) | Renamed as setSpecularReflectionBias( float ). |
getReflectionBias( ) | Renamed as getSpecularReflectionBias( ). |
setReflectionCubicFiltering( bool ) | Renamed as setSpecularCubicFiltering( bool ). |
isReflectionCubicFiltering( ) | Renamed as isSpecularCubicFiltering( ). |
setReflectionVisibilityRoughnessMin( float ) | Renamed as getSpecularVisibilityRoughnessMin( float ). |
getReflectionVisibilityRoughnessMin( ) | Renamed as getSpecularVisibilityRoughnessMin( ). |
setReflectionVisibilityRoughnessMax( float ) | Renamed as getSpecularVisibilityRoughnessMax( float ). |
getReflectionVisibilityRoughnessMax( ) | Renamed as getSpecularVisibilityRoughnessMax( ). |
New Functions
- getDiffuseTangentBias( )
- setDiffuseTangentBias( float )
- setDiffuseTranslucentIndirect( float )
- getDiffuseTranslucentIndirect( )
- setDiffuseTranslucentSoftIndirect( float )
- getDiffuseTranslucentSoftIndirect( )
- setSpecularNormalBias( float )
- getSpecularNormalBias( )
- setSpecularTangentBias( float )
- getSpecularTangentBias( )
Material Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
TEXTURE_SOURCE_WBUFFER_WATER | Replaced with TEXTURE_SOURCE_WBUFFER_FOAM instead. |
New Functions
Mesh Class#
New Functions
- VERTEX_CACHE_LEGACY
- BACK_TO_FRONT_LEGACY
- COLLISION_DATA_BOUNDS
- COLLISION_DATA_EDGES
- COLLISION_DATA_SPATIAL_TREE
- COLLISION_DATA_ALL
- getTriangleCollision( const Math::vec3 &, const Math::vec3 &, Vector<int> &, int )
- getTriangleCollision( const Math::BoundFrustum &, Vector<int> &, int )
- getTriangleCollision( const Math::BoundBox &, Vector<int> &, int )
- getTriangleCollision( CollisionFilter filter, CollisionResult triangle_index_result, int surface )
- getSurfaceCollision( const Math::vec3 &, const Math::vec3 &, Vector<int> & )
- getSurfaceCollision( Math::BoundFrustum &, Vector<int> & )
- getSurfaceCollision( const Math::BoundBox &, Vector<int> & )
- getSurfaceCollision( CollisionFilter filter, CollisionResult surface_index_result )
- getRandomPoint( Math::vec3 &, Math::vec3 &, Math::vec3 &, int )
- clearSurface( int, int )
- createCollisionData( int )
- clearCollisionData( int )
- createEdges( int )
- hasEdges( int )
- setSpatialTreeTriangles( int )
- getSpatialTreeTriangles( )
- swap( const Ptr<Mesh> & )
- getIntersection( const Math::dvec3 &, const Math::dvec3 &, Math::dvec3 *, Math::vec3 *, int *, int, int )
- hasCollisionData( int )
- clearEdges( int )
- clearSpatialTree( int )
MeshAnimation Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
flipYZ( ) | Return value changed. |
MeshRender Class#
ObjectGuiMesh Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
getMeshCurrentRAM( ) | Return value changed. |
getMeshForceRAM( ) | Return value changed. |
getMeshAsyncRAM( ) | Return value changed. |
getMeshProceduralRAM( ) | Renamed as getMeshDynamicRAM( ). |
getMeshProceduralVRAM( ) | Renamed as getMeshDynamicVRAM( ). |
asyncCalculateNodes( int ) | Removed. |
asyncCalculateEdges( int ) | Removed. |
applyMeshProcedural( const Ptr<Mesh> & ) | Removed. Use one of the following methods: applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int ) applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, int ) applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int ) |
setMeshProceduralMode( ObjectMeshStatic::PROCEDURAL_MODE, int ) | Set of arguments changed. |
isMeshProceduralMode( ) | Removed. |
New Functions
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- deleteDynamicMesh( )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int )
- getCopyMeshRAM( Ptr<Mesh> & )
- createCopyMeshRAM( )
ObjectLandscapeTerrain Class#
ObjectMeshCluster Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
applyMeshProcedural( const Ptr<Mesh> & ) | Removed. Use one of the following methods: applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int ) applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, int ) applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int ) |
getMeshCurrentRAM( ) | Return value changed. |
getMeshForceRAM( ) | Return value changed. |
getMeshAsyncRAM( ) | Return value changed. |
getMeshProceduralRAM( ) | Renamed as getMeshDynamicRAM( ). |
getMeshProceduralVRAM( ) | Renamed as getMeshDynamicVRAM( ). |
asyncCalculateNodes( int ) | Removed. |
asyncCalculateEdges( int ) | Removed. |
setMeshProceduralMode( ObjectMeshStatic::PROCEDURAL_MODE, int ) | Set of arguments changed. |
isMeshProceduralMode( ) | Removed. |
New Functions
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- deleteDynamicMesh( )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int )
- isMeshProceduralDynamic( )
- isMeshProceduralActive( )
- isMeshProceduralDone( )
- getCopyMeshRAM( Ptr<Mesh> & )
- createCopyMeshRAM( )
ObjectMeshClutter Class#
New Functions
- getIntersectionMask( )
- setIntersectionMask( int )
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- deleteDynamicMesh( )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int )
- isMeshProceduralDynamic( )
- isMeshProceduralActive( )
- isMeshProceduralDone( )
- getCopyMeshRAM( Ptr<Mesh> & )
- createCopyMeshRAM( )
ObjectMeshSkinned Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
getBoneSkiningTransform( int ) | Renamed as getBoneSkinningTransform( int ). |
applyMeshProcedural( const Ptr<ConstMesh> & ) | Set of arguments changed. |
ObjectMeshStatic Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
applyMeshProcedural( const Ptr<Mesh> & ) | Removed. Use one of the following methods: applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int ) applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & ) applyMoveMeshProceduralForce( const Ptr<Mesh> &, int ) applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int ) |
getMeshCurrentRAM( ) | Return value changed. |
getMeshForceRAM( ) | Return value changed. |
getMeshAsyncRAM( ) | Return value changed. |
getMeshProceduralRAM( ) | Renamed as getMeshDynamicRAM( ). |
getMeshProceduralVRAM( ) | Renamed as getMeshDynamicVRAM( ). |
asyncCalculateNodes( int ) | Removed. |
asyncCalculateEdges( int ) | Removed. |
setMeshProceduralMode( ObjectMeshStatic::PROCEDURAL_MODE, int ) | Set of arguments changed. |
isMeshProceduralMode( ) | Removed. |
New Functions
- PROCEDURAL_MODE_DISABLE
- PROCEDURAL_MODE_DYNAMIC
- PROCEDURAL_MODE_FILE
- PROCEDURAL_MODE_BLOB
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralForce( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, int )
- runGenerateMeshProceduralAsync( CallbackBase1<Ptr<Mesh>> *, CallbackBase *, int )
- deleteDynamicMesh( )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralAsync( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralAsync( const Ptr<ConstMesh> &, int )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, const Ptr<MeshRender> & )
- applyMoveMeshProceduralForce( const Ptr<Mesh> &, int )
- applyCopyMeshProceduralForce( const Ptr<ConstMesh> &, int )
- isMeshProceduralDynamic( )
- isMeshProceduralActive( )
- isMeshProceduralDone( )
- getCopyMeshRAM( Ptr<Mesh> & )
- createCopyMeshRAM( )
PackageUng Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
PackageUng( const char *, const char * ) | Set of arguments changed. |
clone( ) | Removed. |
getCompressionType( ) | Removed. Use getCompressExtension( int ) instead. |
getFileName( int ) | Removed. Use getFilePath( int ) instead. |
removeFile( const char * ) | 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. |
getD3D11Context( ) | Removed. |
setSSRTGINoiseStep ( float ) | Removed. |
getSSRTGINoiseStep ( ) | Removed. |
getEventBeginAuxiliaryBuffer ( ) | Removed. Use getEventBeginAuxiliarySurfaces() or getEventBeginAuxiliaryDecals() instead. |
getEventEndAuxiliaryBuffer ( ) | Removed. Use getEventEndAuxiliarySurfaces() or getEventEndAuxiliaryDecals() instead. |
New Functions
- RENDER_VR_EMULATION_MODE_DISABLED
- RENDER_VR_EMULATION_MODE_VIVE
- RENDER_VR_EMULATION_MODE_VIVE_PRO
- RENDER_VR_EMULATION_MODE_VIVE_PRO_2
- RENDER_VR_EMULATION_MODE_VIVE_FOCUS_3
- RENDER_VR_EMULATION_MODE_VIVE_FOCUS_VISION
- RENDER_VR_EMULATION_MODE_VIVE_XR_ELITE
- RENDER_VR_EMULATION_MODE_OCULUS_RIFT
- RENDER_VR_EMULATION_MODE_QUEST_2
- RENDER_VR_EMULATION_MODE_QUEST_3S
- RENDER_VR_EMULATION_MODE_QUEST_3
- RENDER_VR_EMULATION_MODE_QUEST_PRO
- RENDER_VR_EMULATION_MODE_PICO_4
- RENDER_VR_EMULATION_MODE_VALVE_INDEX
- RENDER_VR_EMULATION_MODE_VARJO_VR_3
- RENDER_VR_EMULATION_MODE_VARJO_VR_4
- RENDER_VR_EMULATION_NUM_MODES
- RENDER_DLSS_PRESET_H
- RENDER_DLSS_PRESET_I
- RENDER_DLSS_PRESET_J
- RENDER_DLSS_PRESET_K
- setIndirectSpecularNormalization( bool )
- isIndirectSpecularNormalization( )
- isUpscaleModeSupported( Render::RENDER_UPSCALE_MODE )
- isReflectionDynamicAlphaFade( )
- setReflectionDynamicAlphaFade( bool )
- isSharpenDiagonalSamples( )
- setSharpenDiagonalSamples( bool )
- getSharpenBlurRadius( )
- setSharpenBlurRadius( int )
- getSharpenBlurDarkColorThresholdBias( )
- setSharpenBlurDarkColorThresholdBias( float )
- getSharpenBlurColorThreshold( )
- setSharpenBlurColorThreshold( float )
- getSharpenBlurSigma( )
- setSharpenBlurSigma( float )
- getEventBeginWaterGBuffer( )
- getEventEndWaterGBuffer( )
- getEventBeginAuxiliarySurfaces( )
- getEventEndAuxiliarySurfaces( )
- getEventBeginAuxiliaryDecals( )
- getEventEndAuxiliaryDecals( )
- setStreamingCacheRAM( int )
- getStreamingCacheRAM( )
- setStreamingCacheVRAM( int )
- getStreamingCacheVRAM( )
- setStreamingCommittedMemoryOvercommit( bool )
- isStreamingCommittedMemoryOvercommit( )
Renderer Class#
RenderState Class#
RenderTarget Class#
Profiler Class#
Shader Class#
StructuredBuffer Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
getD3D11ShaderResourceView( ) | Removed. |
getD3D11UnorderedAccessView( ) | Removed. |
isUsageCPUResource( ) | Removed. Use isUsageRender( ) instead. |
isUsageGPUResource( ) | Removed. Use isUsageRender( ) instead. |
New Functions
Texture Class#
Unsupported texture formats (RGB8/RGB16/RGB32, R24B8, D24) were removed, see replacement details below.
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
create( const Ptr<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( void *, int, int, int, int, int ) | Removed. |
fromD3D11Texture2D( void *, 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#
New Functions
- getInputRuntimeVersion( )
- setRenderWhileHMDIdle( bool )
- isRenderWhileHMDIdle( )
- setPeripheralRenderingFocusDeadzone( float )
- getPeripheralRenderingFocusDeadzone( )
- setPeripheralRenderingFocusScale( const Math::vec2 & )
- getPeripheralRenderingFocusScale( )
- setPeripheralRenderingFOVScale( const Math::vec2 & )
- getPeripheralRenderingFOVScale( )
- setPeripheralRenderingBorderWidth( float )
- getPeripheralRenderingBorderWidth( )
- setPeripheralRenderingDebugEnabled( bool )
- isPeripheralRenderingDebugEnabled( )
- getEyeNativeFOV( )
- resetEyeOverrideFOV( )
- setEyeOverrideFOV( float )
- getEyeOverrideFOV( )
- isEyeOverriddenFOV( )
- resetEyeOffset( )
- resetEyeOffset( VR::EYE_TYPE )
- setEyeOffset( VR::EYE_TYPE, const Math::mat4 & )
- getEyeOffset( VR::EYE_TYPE )
- getScriptableMaterialEnabled( VR::EYE_TYPE, int )
- setScriptableMaterialEnabled( VR::EYE_TYPE, int, bool )
- swapScriptableMaterials( VR::EYE_TYPE, int, int )
- removeScriptableMaterial( VR::EYE_TYPE, int )
- addScriptableMaterial( VR::EYE_TYPE, const Ptr<Material> & )
- findScriptableMaterial( VR::EYE_TYPE, const Ptr<Material> & )
- insertScriptableMaterial( VR::EYE_TYPE, int, const Ptr<Material> & )
- setScriptableMaterial( VR::EYE_TYPE, int, const Ptr<Material> & )
- getScriptableMaterial( VR::EYE_TYPE, int )
- getNumScriptableMaterials( VR::EYE_TYPE )
- clearScriptableMaterials( VR::EYE_TYPE )
VREyeTracking Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
getRawCaptureTime( llong ) | Renamed as getCaptureTime( llong ) |
New Functions
VRHand Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
isActive( ) | Renamed as isTracking( ). |
VRHandTracking Class#
VRMixedReality Class#
Viewport Class#
UNIGINE 2.19.1 | UNIGINE 2.20 |
---|---|
setPaused( bool ) | Removed. |
isPaused( ) | Removed. |
getEventBeginAuxiliaryBuffer ( ) | Removed. Use getEventBeginAuxiliarySurfaces() or getEventBeginAuxiliaryDecals() instead. |
getEventEndAuxiliaryBuffer ( ) | Removed. Use getEventEndAuxiliarySurfaces() or getEventEndAuxiliaryDecals() instead. |
New Functions
ViewportData Class#
Visualizer Class#
New Functions
- renderSolidMesh( const char *, const Math::Mat4 &, const Math::vec4 &, float, bool )
- renderSolidMesh( const UGUID &, const Math::Mat4 &, const Math::vec4 &, float, bool )
- renderSolidMesh( const Ptr<MeshRender> &, const Math::Mat4 &, const Math::vec4 &, float, bool )
- renderMesh( const char *, const Math::Mat4 &, const Math::vec4 &, float, bool )
- renderMesh( const UGUID &, const Math::Mat4 &, const Math::vec4 &, float, bool )
- renderMesh( const Ptr<MeshRender> &, const Math::Mat4 &, const Math::vec4 &, float, bool )
Widget Class#
WidgetTreeBox Class#
WidgetVBox Class#
New Functions
- getBackgroundCustomFilter( )
- setBackgroundCustomFilter( int )
- isBackgroundCustomFilterEnabled( )
- setBackgroundCustomFilterEnabled( bool )
- getBackground9SliceScale( )
- setBackground9SliceScale( float )
- getBackground9SliceOffsets( )
- setBackground9SliceOffsets( float, float, float, float )
- isBackground9Sliced( )
- setBackground9Sliced( bool )
- getBackgroundRender( )
- setBackgroundRender( const Ptr<Texture> &, int )
- getBackgroundTexture( )
- setBackgroundTexture( const char * )
- getBackgroundImage( )
- setBackgroundImage( const Ptr<Image> &, int )
IG::Manager Class#
IG::Entity Class#
The information on this page is valid for UNIGINE 2.20 SDK.