166 Commits

Author SHA1 Message Date
stu mckenna
fd6cae6b42 - Add VVM support for bit casting between floats and ints
#rb rob.krajcarski
#preflight 6466532e743f7c995bc67a0f

[CL 25548196 by stu mckenna in ue5-main branch]
2023-05-19 13:51:29 -04:00
simon tovey
c8105e2753 Fixes and improvements to write DI.
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]
2023-05-18 10:31:25 -04:00
bryan sefcik
91c57d395e Removed redundant module includes.
#preflight 645d4bf3aa3c584c0b5b3a67

[CL 25435653 by bryan sefcik in ue5-main branch]
2023-05-11 16:48:21 -04:00
simon tovey
b6da6ca240 Niagara Data Interfaces now have an optional pre and post tick stage callback hook.
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]
2023-04-22 18:39:43 -04:00
rob krajcarski
10234620d7 Small optimization to Legacy VM (contributed by licensee limztudio
#jira UE-174066
#preflight 63e2be42c11233cdcaa90502
#rb shawn.mcgrath

[CL 24386313 by rob krajcarski in ue5-main branch]
2023-02-23 14:32:28 -05:00
joe kirchoff
4eb0d7b810 Remove unnecessary private include path
#rnx
#jira UE-177808

[CL 24351077 by joe kirchoff in ue5-main branch]
2023-02-21 17:19:34 -05:00
simon tovey
361dd96bfd Niagara Data Channels v0.1
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]
2023-01-19 10:44:04 -05:00
henrik karlsson
ce587eb612 Added markups for headers that can't be compiled standalone.. this is needed for both Header units and IWYU
#preflight 63789b0c170bc34a93a869e5
#rb none

[CL 23552160 by henrik karlsson in ue5-main branch]
2022-12-21 02:46:50 -05:00
bryan sefcik
b30383a834 Fixed compile issues found after moving module files around in the unity files.
Also added missing generated.h includes.

#jira
#preflight 639bbcb2776b61ba3b35a835

[CL 23535000 by bryan sefcik in ue5-main branch]
2022-12-15 19:56:15 -05:00
rob krajcarski
dbf7f97c04 Fix for experimental VM not supporting FExternalFuncConstHandler
#rb stu.mckenna
#preflight 637fcd2e18176c67c217b0cf

[CL 23263095 by rob krajcarski in ue5-main branch]
2022-11-24 19:14:42 -05:00
henrik karlsson
b5164ac775 Fixes to make modules compile with IWYU. We've added to IWYU toolchain so it compiles "orphaned" headers which does not have a owning cpp file. This identified lots of headers that couldn't be compiled by themselves (or if they were to included first)
Change consist of only forward declaration and additional includes

#preflight 63789c1de30d438849c48188
#rb none

[CL 23218412 by henrik karlsson in ue5-main branch]
2022-11-21 03:22:23 -05:00
rob krajcarski
2aa0c9da90 Guard against integer overflow with integer divide within VectorVM
#rb stu.mckenna
#preflight 63753bfe953c19d4351d4edb

[CL 23164295 by rob krajcarski in ue5-main branch]
2022-11-16 17:41:55 -05:00
rob krajcarski
41ef4d5701 Couple of fixes for NiagaraScript's DDC content to be non-deterministic
-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]
2022-11-16 15:42:00 -05:00
joe pribele
58e5ef0030 removing PRAGMA_DISABLE_OPTIMIZATION or upgrading to UE_DISABLE_OPTIMIZATION_SHIP preparing for deprication of PRAGMA_DISABLE_OPTIMIZATION
#preflight 6372d56b324842530500335a

[CL 23130066 by joe pribele in ue5-main branch]
2022-11-14 19:05:15 -05:00
shawn mcgrath
049afd6ada Build health fix for previous submission. EVVM fix. #preflight 636921f24d3c1d9d925ce533 #rb none
[CL 23011308 by shawn mcgrath in ue5-main branch]
2022-11-07 10:50:21 -05:00
shawn mcgrath
18dd2c2b88 Separated EVVM transcendental instructions from UnrealMath* intrinsics #preflight none #rb none
[CL 23009218 by shawn mcgrath in ue5-main branch]
2022-11-07 06:34:32 -05:00
shawn mcgrath
a267abfcb3 #jira UE-165557 UE-165386 #preflight 6362988b876630122aab7cda #rb rob.krajcarski EVVM per-instance function had incorrect offset when reading constant buffers with more than 4 instances
[CL 22951661 by shawn mcgrath in ue5-main branch]
2022-11-03 09:15:29 -04:00
rob krajcarski
d69b4acfec Mirror safety net for pow EVVM instruction that was used on legacy VM (ensure base is greater than epsilon, otherwise return 0
#jira UE-166287
#rb shawn.mcgrath
#preflight 6348c9edfd22d1fbde8ca6a2

[CL 22546750 by rob krajcarski in ue5-main branch]
2022-10-14 22:21:46 -04:00
rob krajcarski
b89881d4ba Fix for acos instruction with EVVM
#jira UE-163408
#rb shawn.mcgrath
#preflight 6335bda0f76de2d4d55bfb3d

[CL 22263066 by rob krajcarski in ue5-main branch]
2022-09-30 00:44:04 -04:00
shawn mcgrath
2e964912c5 VectorVM Experimental VM bug fix with Niagara fountain emitter. #jira UE-163669 #rb stu.mckenna #preflight none
[CL 22086975 by shawn mcgrath in ue5-main branch]
2022-09-19 21:55:43 -04:00
bryan sefcik
07894f4a07 Removed redundant private include paths from build.cs files.
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]
2022-09-09 00:53:22 -04:00
shawn mcgrath
10bbc3e8cc VectorVM Fluid Sim fix #jira UE-162851 #rb Rob.Krajcarski #preflight none
[CL 21851931 by shawn mcgrath in ue5-main branch]
2022-09-07 11:41:11 -04:00
shawn mcgrath
04465d261c VectorVM Optimizations
- 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]
2022-08-30 13:11:19 -04:00
rob krajcarski
b4fd901620 Couple of fixes for handling experimental and legacy byte code side by side
-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]
2022-08-12 14:29:56 -04:00
Bryan sefcik
b4a6e947d8 Ran IWYU on Public headers under Engine/Source/Runtime/...
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]
2022-07-20 11:31:36 -04:00