Fixing Same Frame Reads. We currently write to local data and then publish in post simulate, however post simulate tick can be moved to the end to the frame which means it's impossible to get same frame reads in the subsequent tick phases.
- Moved Begin/End simulate of write DI dataset to new Pre/Post stage tick path.
- Write DI now publishes from post stage so made publishing to data channel data threadsafe.
- Write DI now grabs it's data channel data once in presimulate rather than in post simulate.
- Fixed issue preventing proper init of Pre/Post simulate tick lists.
Write and Append now updating NumInstances via atomic in post stage to fix threadsafety with parallem VM exec.
Added optimized path through Append() in cases where we're emitting every particle.
This required a slight tweak to the DI handlers.
#rb Stu.Mckenna,Rob.Krajcarski
#preflight 646620cb063e77985c3efc3f
[CL 25525227 by simon tovey in ue5-main branch]
This is preliminary work for sim stages on CPU but also required for some upcomming Data Channels work.
Niagara DI VM handlers can now reset themselves back to the original state allowing DIs to iterate over the same register inputs if needed.
#rb Stu.Mckenna
[CL 25158681 by simon tovey in ue5-main branch]
Niagara Data Channels are new system for communication between Niagara Systems and with game code/BP.
The system has a few peices.
DataChannel - Data Definition for a named channel of data. New types can be added to deal with the channel differently.
DataChannelHander - Runtime counterpart for DataChannels each Channel Type will have a handler that uses the data definition to manager the channel data accordingly.
DataChannelDefinitions - Asset class containing one or more Data Channel.
DataChannelManager - Manger class contianing and providing access to all currently loaded Data Channels and their Handlers.
DataChannelAccessor - Temporary initial BP API allowing BPs to read and write to Data Channels.
Data Channel Global - Initial simple Data Channel Type. Stores all data globally.
Data Interface Data Channel Read - New DI that allows Niagara Systems to read data from a Data Channel.
Data Interface Data Channel Write - New DI that allows Niagara Systems to write data toi a Data Channel.
Data Interface Data Channel Spawn - Specialization of the Read DI which allows for easy spwaning based on the contents of a Data Channel.
Data Channels can be enabled/disabled via FX.Niagara.DataChannels.Enabled = 0.
Initially this defaults to off.
Misc:
- New DI node action providers to enable actions on the Data Channel DI nodes.
- Details customized reference class for data channels that avoids any typing the available channel names etc.
- DIs now have a post compile step that can be used to cache of certain data at compile time.
- NiagaraDataInterfaceUtilities now has an optional SearchOptions parameter that allows us to include "internal" DIs. This is required to support the above PostCompile step.
- Niagara Type Definitions now optionally allow LWC types, previously any LWC types would be auto converted to SWC on load.
- Asset Registry now tracks SWC Sim types as we would get duplicated entires in several places of the UI due to confusion between LWC and SWC types.
#jira UE-153996
#rb Stu.Mckenna, Rob.Krajcarski, Michael.Galetzka
#preflight 63c91387ac35a0e9da6adde0
[CL 23773845 by simon tovey in ue5-main branch]
Change consist of only forward declaration and additional includes
#preflight 63789c1de30d438849c48188
#rb none
[CL 23218412 by henrik karlsson in ue5-main branch]
-Cleans up some of the data written into the payload (removing compile times & writing out zeroes for unneeded non-determinstic pointers)
-Incorporates the AssetPath of the script to the DDC key to prevent identical scripts from sharing the same DDC as we still have some data in the DDC value (node guis & emitter names, ..)
#rb stu.mckenna
#jira none
#preflight 63752bdd32484253058adae3
[CL 23161488 by rob krajcarski in ue5-main branch]
Fixed include paths to be relative to the private or public folders.
Hid or removed includes that reached into other private module folders.
Updated PublicInclude paths when necessary.
#jira
#preflight 631a717cec45fbf3d74d4ba7
[CL 21916033 by bryan sefcik in ue5-main branch]
- new single, multi and AVX path
- internal pointer caching
- x64 instruction minimization
- new combined instructions
- optimized memory cache
- NEON math changes
#rb: rob.krajcarski
#preflight: 630e190b556fc14dce6c88c9
[CL 21704582 by shawn mcgrath in ue5-main branch]
-introduces a new cvar (fx.NiagaraScript.StripByteCodeOnLoad) which can be used to strip out one of the byte codes, saving memory, -1 -> strips experimental, 1 -> strips legacy
-fixes identification of whether an Inputhandle
#jira none
#rb stu.mckenna
#preflight 62f677f9f3107c023c06e84e
[CL 21359671 by rob krajcarski in ue5-main branch]
Headers are updated to contain any missing #includes needed to compile and #includes are sorted. Nothing is removed.
#ushell-cherrypick of 21065896 by bryan.sefcik
#preflight 62d4b1a5a6141b6adfb0c892
#jira
#ROBOMERGE-OWNER: Bryan.sefcik
#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21150156 via CL 21151754 via CL 21154719
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
#ROBOMERGE-CONFLICT from-shelf
[CL 21181076 by Bryan sefcik in ue5-main branch]