Commit Graph

383 Commits

Author SHA1 Message Date
arciel rekman
4c3e0b8db3 Fix inability to cook spline meshes by a cooked cooker (resubmit after backout in CL 30847866).
Cooked cooker is a relatively new platform in Unreal that allows producing a cooked editor build and using it to cook new assets (e.g. DLC for the base game). Such cooked cooker build is faster to load than the original editor build that would cook from the source assets, and it can also be more easily deployed to cloud environments.

The problem this fix is solving is as follows:

1) Spline mesh needs collision data from the static mesh it deforms. This collision data is usually derived from its render data.
2) Cooked cooker target platform (see TCookedCookerTargetPlatform) is basically a server build, assets cooked for this platform do not store render data.
3) If a new (uncooked) spline mesh is referencing a static mesh from the base build, it fails to get its collision data because the render data was stripped when producing the cooked version of the base build.

The solution is

- to introduce a new target platform feature that allows to distinguish cooked cooker target platform from other platforms that strip audio-visual data.
- when cooking static meshes for a "cooked cooker" target get a separate copy of the asset's collision data and save it inline in the cooked asset.
- inside the cooked cooker, use this copy as static mesh's collision data instead of trying to derive it from (non-existent at that point) static mesh's render data.

- James Singer reviewed the fixed change.

#rb Brian.Marshall1, Francis.Hurteau, Benn.Gallagher, James.Singer

[CL 30857184 by arciel rekman in ue5-main branch]
2024-01-24 14:43:39 -05:00
sean boocock
1229fccd3c [Backout] - CL30812030
[FYI] Arciel.Rekman
Original CL Desc
-----------------------------------------------------------------
Fix inability to cook spline meshes by a cooked cooker.

Cooked cooker is a relatively new platform in Unreal that allows producing a cooked editor build and using it to cook new assets (e.g. DLC for the base game). Such cooked cooker build is faster to load than the original editor build that would cook from the source assets, and it can also be more easily deployed to cloud environments.

The problem this fix is solving is as follows:

1) Spline mesh needs collision data from the static mesh it deforms. This collision data is usually derived from its render data.
2) Cooked cooker target platform (see TCookedCookerTargetPlatform) is basically a server build, assets cooked for this platform do not store render data.
3) If a new (uncooked) spline mesh is referencing a static mesh from the base build, it fails to get its collision data because the render data was stripped when producing the cooked version of the base build.

The solution is

- to introduce a new target platform feature that allows to distinguish cooked cooker target platform from other platforms that strip audio-visual data.
- when cooking static meshes for a "cooked cooker" target get a separate copy of the asset's collision data and save it inline in the cooked asset.
- inside the cooked cooker, use this copy as static mesh's collision data instead of trying to derive it from (non-existent at that point) static mesh's render data.

#rb Brian.Marshall1, Francis.Hurteau, Benn.Gallagher

[CL 30847941 by sean boocock in ue5-main branch]
2024-01-24 11:44:40 -05:00
arciel rekman
7cd1420836 Fix inability to cook spline meshes by a cooked cooker.
Cooked cooker is a relatively new platform in Unreal that allows producing a cooked editor build and using it to cook new assets (e.g. DLC for the base game). Such cooked cooker build is faster to load than the original editor build that would cook from the source assets, and it can also be more easily deployed to cloud environments.

The problem this fix is solving is as follows:

1) Spline mesh needs collision data from the static mesh it deforms. This collision data is usually derived from its render data.
2) Cooked cooker target platform (see TCookedCookerTargetPlatform) is basically a server build, assets cooked for this platform do not store render data.
3) If a new (uncooked) spline mesh is referencing a static mesh from the base build, it fails to get its collision data because the render data was stripped when producing the cooked version of the base build.

The solution is

- to introduce a new target platform feature that allows to distinguish cooked cooker target platform from other platforms that strip audio-visual data.
- when cooking static meshes for a "cooked cooker" target get a separate copy of the asset's collision data and save it inline in the cooked asset.
- inside the cooked cooker, use this copy as static mesh's collision data instead of trying to derive it from (non-existent at that point) static mesh's render data.

#rb Brian.Marshall1, Francis.Hurteau, Benn.Gallagher

[CL 30812215 by arciel rekman in ue5-main branch]
2024-01-23 13:58:58 -05:00
dan thompson
26a614468f Rad Audio Codec: SDK and UE integration.
This has several preflights that aren't listed, covering various platforms.

#rb jeff.roberts, jimmy.smith, fabian.giesen
#jira UE-195336

[CL 30785991 by dan thompson in ue5-main branch]
2024-01-22 16:42:09 -05:00
christopher waters
e9661bc768 Preparing for dependency cleanup.
[CL 30244022 by christopher waters in ue5-main branch]
2023-12-11 13:55:22 -05:00
rex hill
668a71e420 Allow building without Turnkey Support
#rb josh.adams
#tests Opened editor and confirmed it loads with no issues

[CL 29603508 by rex hill in ue5-main branch]
2023-11-09 13:51:05 -05:00
dan elksnitis
54fb5cf56d [shaders] further deprecation (SupportsIndependentPreprocessing/OptionalFinalShaderSource/bIndependentPreprocessed are no longer needed since all backends are migrated)
#rb Laura.Hermanns

[CL 29117027 by dan elksnitis in ue5-main branch]
2023-10-25 22:21:30 -04:00
florian penzkofer
f0d3b0bf34 Add support for DBuffer decals to the mobile forward renderer.
The DBuffer layout and most code is the same as for the desktop renderer.
Added new CVar r.Mobile.DBuffer so that is disabled by default. DBuffer for the SM5 renderer on mobile is enabled by default.

#rb Dmitriy.Dyomin, Sebastien.Hillaire

[CL 28598190 by florian penzkofer in ue5-main branch]
2023-10-09 16:48:41 -04:00
dan elksnitis
5518e3d9f3 [shaders] deprecating old PreprocessShader and IShaderFormat::CompileShader APIs now that all shader formats have been migrated
#rb Jason.Nadro

[CL 28452658 by dan elksnitis in ue5-main branch]
2023-10-04 09:22:36 -04:00
adam kinge
5a87b69c38 Only iOS and tvOS currently support device connection type specific icons
#jira UE-190844
#rb jack.porter
#rnx
#lockdown jack.porter

[CL 27022315 by adam kinge in ue5-main branch]
2023-08-11 00:46:34 -04:00
aleksander netzel
d700a739fa Add offline BLAS compression for supporting platforms:
* Add IsCompressed() to FRHIRayTracingGeometry.
* If BLAS is compressed it will trigger a build that will do the decompression.
* Controlled by target platform setting "Enable Static Mesh Offline BVH Compression"
* Enabled by default.

#jira UE-146162
#rb yuriy.odonnell

[CL 26559972 by aleksander netzel in ue5-main branch]
2023-07-24 20:01:35 -04:00
dan elksnitis
5c00384f67 [shaders]
- Remove the condition causing SCW to automatically exit after a single job if HLSLcc was used. This doesn't appear to be beneficial; HLSLcc uses a lot of memory but does not appear to leak it, so we're wasting time spinning up new processes unnecessarily here. This allows us to deprecated the associated field in the compiler output and function in IShaderFormat.
- Strip out compiler invocations stats; this was not accurate in some cases and it was decided after discussion that at this point the effort to fix the problems was not worth the utility we get from it.

#rb Jason.Nadro
#rb Laura.Hermanns

[CL 26256933 by dan elksnitis in ue5-main branch]
2023-06-27 10:11:41 -04:00
dan elksnitis
00685561cc [shaders]
- Add option to independent preprocessing IShaderFormat API to allow a "secondary" preprocess & compile if a RequiresSecondaryCompile predicate implemented in the shader format returns true; this predicate takes as input the compile input, environment,  and the output of the first execution of the preprocess function. This is intended to handle the usage of UESHADERMETADATA pragmas (set in the preprocess output) by some backends to indicate a secondary compilation is required to target the variant hardware (setting additional #defines and potentially different compiler arguments). Other backends have an additional requirement that any stereo shaders also require separate compilation for each target, which can be handled by querying the FShaderCompilerEnvironment in this same predicate.
- Move the combining of outputs in the secondary compile case into the core shader system so it doesn't need to be copypasta'd in any shader format backends which require the aforementioned secondary compilation, exposing an API function which returns the particular "key" used to identify these combined shader outputs in the RHI.
- Rework the internal compilation/preprocess functions so a minimal amount of code needs to be wrapped in __try/__except (allowing objects with destructors to be created in the higher level functions).

#rb Massimo.Tristano

[CL 25977467 by dan elksnitis in ue5-main branch]
2023-06-14 10:11:27 -04:00
jimmy smith
ac34b71821 Fix for editor crash on startup
#rb josh.adam aaron.mcleran

[CL 25960030 by jimmy smith in ue5-main branch]
2023-06-13 15:15:40 -04:00
dan elksnitis
06395bee56 [shaders] add Hash field to FShaderCompilerInput so debug output of InputHash.txt works correctly whether or not the preprocessed cache is enabled, and the IShaderFormat API for debug output of independent-preprocessing-enabled backends is cleaner
#rb Jason.Nadro

[CL 25814977 by dan elksnitis in ue5-main branch]
2023-06-06 09:55:43 -04:00
josh adams
f6381544e2 - Allow a project to override the Main SDK version for a platform (the platform's project Engine.ini would set
[OverrideSDK]
  SDKVersion=x.y.z
and AutoSDK, or anything using GetMainVersion(), would use that version string instead
- If multiple targets are built in one run of UBT/UAT, it will error out because there is no support to switch SDKs (and builds happen in parallel, etc)
- This is not a complete solution, because it can cause problems with shared tools like ShaderCompileWorker, when different projects are on different SDKs and they have one SCW to share
- Renamed GetMainVersion to GetMainVersionInternal(), and wrapped that in a new non-vitual GetMainVersion() that calls GetMainVersionInternal() (and handles the ini overrides)
#rb david.harvey,dave.barrett
#jira UE-185364
#preflight 647a12e7b0670733186c928e

[CL 25767233 by josh adams in ue5-main branch]
2023-06-02 13:42:59 -04:00
jimmy smith
13dbfcba26 READD: Chunked Seektables for BinkAudio (with Fixes)
#rb dan.thompson igor.dallavanzi

[CL 25645493 by jimmy smith in ue5-main branch]
2023-05-26 12:21:41 -04:00
adam kinge
b31af19cc7 Fix display of multiple iOS/tvOS devices in the QuickLaunch menu within the editor. The iOS icon will now show the type of device connection (wifi/usb)
- On a mouse hover over the mobile device (includes Android), show additional info about the OS version and model of the device
  - fixes top level device not showing the last selected device
  - don't reshow the selected device in the sub-menu

#jira UE-176230
#rb josh.adams
#preflight 646d3a424422ba05f4c29427

[CL 25601745 by adam kinge in ue5-main branch]
2023-05-24 09:39:39 -04:00
jimmy smith
3b948e43be [Backout] - CL25419229
[FYI] jimmy.smith
Original CL Desc
-----------------------------------------------------------------
Chunked Seektables for BinkAudio
#rb dan.thompson igor.dallavanzi

[CL 25497743 by jimmy smith in ue5-main branch]
2023-05-16 17:05:51 -04:00
jimmy smith
201ef64f16 Chunked Seektables for BinkAudio
#rb dan.thompson igor.dallavanzi

[CL 25420189 by jimmy smith in ue5-main branch]
2023-05-10 20:29:00 -04:00
Stu McKenna
33933e245f - Include the VVM format to ensure we find the format
- Without doing this the found formats might not contain the format leading to a crash when compiling with the VVM

#rb Dan.Elksnitis
#jira UE-185063
#rnx
#preflight 645405e8023fe5d3ad3fbb52

[CL 25343124 by Stu McKenna in ue5-main branch]
2023-05-04 17:36:58 -04:00
dan elksnitis
b52faed5d5 [shaders]
- add new IShaderFormat API for separate preprocessing and compilation; backends can implement one or the other depending on the return value of SupportsIndependentPreprocessing
- add support for executing preprocessing in the cook process prior to job submission and constructing job input hashes based on preprocessed source (and a subset of the environment used as compile inputs). controlled by a cvar for now and disabled by default
- add a BaseShaderFormat class in ShaderCompilerCommon which implements common behaviour for output of debug data - note this function is only called for formats which support independent preprocessing, so is expected to be used only by formats which have been converted to use this API
- add new cvars for output of some additional shader debug data - 1. a txt file containing the input hash a.k.a. job cache key 2. a text file containing all diagnostic messages (errors and warnings) for the job
- minor change to how input hashes are constructed for pipeline jobs - sum hashes as 256-bit ints instead of adding to a buffer and re-hashing. faster and simpler, and also more collision resistant (sum of two well distributed hashes equally well distributed)

#rb Jason.Nadro
#rb Yuriy.ODonnell
#preflight 64512c88c86798f650b953d3

[CL 25317218 by dan elksnitis in ue5-main branch]
2023-05-03 10:17:48 -04:00
Matt Peters
7ecf3f6906 SavePackage support for OnlyEditorOnly: Remove exports that are private and are only referenced by editoronly properties from the cookable exports. Remove imports and softobjectpaths that are only referenced from these OnlyEditorOnly exports from the cooked package's imports. For editor saves, mark these OnlyEditorOnly-referenced imports and softobjectpaths as editoronly dependencies. Also return the list of ImportPackages and SoftPackageReferences to the cooker so it can add them to the cook.
#rb Francis.Hurteau
#rnx
#preflight 643554b61b3664fdfaa9ef1b

[CL 24989912 by Matt Peters in ue5-main branch]
2023-04-11 09:00:33 -04:00
gwennael arbona
a17fdde006 Instrument loading times of PS4 & Switch target platform modules
#preflight 641c21eeec01de16647b08f0
#rb john.huelin, wojciech.krywult


RESOLUTION: fixed conflict with new "impl" method

[CL 24762328 by gwennael arbona in ue5-main branch]
2023-03-23 11:22:16 -04:00
charles bloom
0c583e951f remove unnecessary code dupes of GetRunningTargetPlatform
#preflight https://horde.devtools.epicgames.com/job/6407b706fb10f393c215eb82
#rb fabian.giesen

[CL 24552030 by charles bloom in ue5-main branch]
2023-03-07 19:12:38 -05:00