Overview:
- Created a new UObject: USoundConcurrency
- Defines concurrency behaviors and allows for different USoundBase assets (e.g. SoundWave's, SoundCues) to be a part of the same concurrency group.
- This feature will allow a number of powerful techniques to limit and control the number of sound assets which can play concurrently
Details and Additional Related Features:
- USoundBase's not specifying an override or a USoundConcurrency ref will result in no concurrency limits.
- Added support to existing static gameplay functions to provide an optional argument to override the USoundConcurrency of a sound at the point of playing
- Added a few new concurrency resolution rules: Resolve based on priority and Resolve based on volume
- Volume based concurrency resolution is implemented slightly different than the others due to the fact that it's complex/expensive to compute an active sound's volume before it plays due to SoundCue graph traversal. Thus, this step is made after a sound is already made it through one update of the SoundCue graph.
- It's now possible to limit max concurrency (both in groups and per-sound-instance) to the "owner" of a sound. This way different characters/actors can use the same USoundConcurrency ref but have different max-concurrency counts. With this technique, you can, for example, limit dialogue lines per actor without needing to make a USoundConcurrency object for each actor.
- A new optional concurrency behavior was also added at a suggestion from the Epic audio team: the ability to attenuate a sound based on the instance count of a sound in its concurrency group. I.e. as more sounds play in a concurrency group, the sound instances get quieter.
Backwards Compat:
- The old way limited sounds per USoundBase instance (and not different ones). You can recover this behavior by specifying an "Override" settings structure on the USoundBase. When you do this, the feature will only limit sound concurrency per instance and not per group. All existing assets with MaxConcurrency settings will fallback to this behavior.
- The default USoundBase behavior for new USoundBase objects is the same as the old behavior - i.e. max limit of 16 and non-grouped (i.e. will be an override)
#codereview marc.audy
[CL 2706947 by Aaron McLeran in Main branch]
CL 2704794 2704931 2704948 2704962 2705238 2706353 2700643 2705458
Uniform Buffer layout name
and
more debug info for this and other bugs: OR-7159 CRASH: Client crashed at start of match in D3D11Commands.cpp
Adding OptionalData (key value pairs) to the shaders (to put shader name into the shader code for better debugging), affects all RHI, invalidate DDC key for all shaders, cleanup existing code (was adding 0/1/5 bytes and had to compensate in many areas)
OptionalData:
key is a char, value is up to 255 bytes, up to 64K in total
#platformnotify Josh.Adams
[CL 2706923 by Martin Mittring in Main branch]
Largely rewritten Editor Region & Language Settings page. Far less error prone compared to the old implementation. I'd like to do a lot more to make this not so lame in the future - move the game's native culture to something not editor-specific and leverage it as the default for new game targets in the localization dashboard.
[CL 2706823 by Saul Abreu in Main branch]
Add material shader quality settings.
Enables quality overrides for android and ios (ES2 flavours)
#codereview jack.porter
[CL 2705914 by Allan Bentham in Main branch]
Made the Region & Language UI more hardy against null regions when changing your editor language.
#jira UE-20210
[CL 2704742 by Jamie Dale in Main branch]
- Add support for recording info about overlap queries
- Separate 'type' (raycast, sweep, overlap) from 'shape', add 'mode' as well (test,single,multi)
- Fix crash when sorting by ID and then grouping
- Add support for saving/loading data to file
[CL 2704213 by James Golding in Main branch]
- Native UProperties of an unconverted type, are replaced with properties of the first native type.
- support for Cast and DynamicCast
- various fixes
#codereview Mike.Beach, Robert.Manuszewski
[CL 2704010 by Maciej Mroz in Main branch]
Some platforms that implement stack walking weren't setting this to true, and there was also no default for platforms that don't support stack walking.
This define is only used when building with bUseMallocProfiler turned on.
ReviewedBy Gil.Gribb
#platformnotify Josh.Adams
[CL 2700520 by Jamie Dale in Main branch]
- Mostly coming from MatthewL with changes.
- UE-19705 (getting MAC) - reworked to use ioctl
- UE-14633: IsFirstInstance is now a function on Linux
- UE-16061:dummy windows shouldn't be visible in the task bar.
- UE-18217 fixed.
- Unnecessary printf() removed.
- Set output to non-cached if running under debugger.
#platformnotify Josh.Adams
[CL 2698549 by Dmitry Rekman in Main branch]
See SESSION console command for details. Some more updates are needed in Automation, Profiler, etc. to perform authorization on a per-instance instead of per-session basis.
#CodeReview: peter.sauerbrei
[CL 2698089 by Max Preussner in Main branch]