Files
UnrealEngineUWP/Engine/Source/Runtime/OpenGLDrv/Private/OpenGLTexture.cpp

2631 lines
95 KiB
C++
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
OpenGLTexture.cpp: OpenGL texture RHI implementation.
=============================================================================*/
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "CoreMinimal.h"
#include "Containers/ResourceArray.h"
#include "Stats/Stats.h"
#include "RHI.h"
#include "RenderUtils.h"
#include "OpenGLDrv.h"
#include "OpenGLDrvPrivate.h"
#include "HAL/LowLevelMemTracker.h"
#include "Engine/Texture.h"
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 3771565) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3627858 by Sorin.Gradinaru #jira UE-48948 Crash when pressing backspace on empty line Fixed: UE-48948 Backspace on empty line crashes app (virtual keyboard) UE-49112 Virtual keyboard text field isn't visible after rotating from landscape to portrait UE-49117 Chinese and Korean virtual keyboards don't allow native characters UE-49120 Virtual keyboard number pad "kicks" user back to regular keyboard UE-49121 Gboard and Swift swipe entry are not supported by Virtual keyboard UE-49124 Cursor in virtual keyboard and UMG don't match UE-49128 Virtual Keyboard text field doesn't appear if there is too much text UE-49141 Virtual keyboard is unresponsive with repeated tapping in control (some devices) UE-49139 Tapping in the same text box doesn't make the virtual keyboard disappear Change 3630732 by Sorin.Gradinaru #jira UE-43488 GitHub 3440 : Fixes exposure with planar reflections. #3440 Cancelled the applied exposure scale for non-hdr mobile Change 3631436 by Nick.Shin HTML5 recommended fix for "RuntimeError: integer result unrepresentable" from the emscripten makers #jira UE-49059 HTML5 - Unable to launch project onto HTML 5 from editor Change 3632689 by Sorin.Gradinaru #jira UE - 49301 Text in UMG controls flickers during update from Virtual Keyboard Full refresh of the Slate control for Android experimental VK - the control has focus, but the cursor was removed Change 3632769 by Adrian.Chelu #jira UEMOB-403 Improvements to "Device Mobile Preview" feature Change 3633305 by Allan.Bentham Print out the callstack when a fatal error occurs. Change 3633510 by Chris.Babcock Remove unneeded logging #jira none Change 3634827 by Adrian.Chelu #fixed build editor buildsystem linux Change 3640610 by Adrian.Chelu #fixed Cook Win64 warnings #fixed UE4Editor Static Analysis Win64 warnings Change 3663057 by Sorin.Gradinaru UE-49301 Text in UMG controls flickers during update from Virtual Keyboard #jira UE-49301 #ue4 #android On some Android devices TextWatcher.onTextChanged gets called multiple times when typing/deleting the content of a EditText (internally, the first call resets the entire content, the second fills it with the new value) The workaround is to delays sending "empty string" to the Slate, waiting for 100ms to see if there is a second call (the "real" string to update) The CL contains a fix for a 5/5 crash : select some/all the text from the native edittext, press delete. Change 3663630 by Jack.Porter Fix shader compile error on Galaxy S6 Change 3663972 by Allan.Bentham add ES3.1 framebuffer fetch. #jira UE-46251 Change 3671843 by Nick.Shin HTML5 - silence CIS warnings (changed to INFO message type) #jira UE-50415 ( Pri:1 - 4.18 ) //UE4/Release-4.18: Step "Package ShooterClient HTML5" has completed with 1 Warning: "File packager is creating an asset bundle of 815 MB. This is very large" Change 3677675 by Sorin.Gradinaru Android Experimental Virtual Keyboard 4.18 issues #jira UE-49124 Cursor in virtual keyboard and UMG don't match #jira UE-49139 Tapping in the same text box doesn't make the virtual keyboard disappear #jira UE-49141 Virtual keyboard is unresponsive with repeated tapping in control (some devices) #ue4 #android UE-49124 Cursor in virtual keyboard and UMG don't match - change in SlateTextLayout.cpp - OnPaint() don't display the cursor Changed the show/hide vk routines (Game activity.java) to solve low-repro, Android O issues related to multiple click events. Should also be tested with multiple text boxes (fast click in/out different types of TextBox controls) Change 3681555 by Adrian.Chelu UEMOB-403 Improvements to "Device Mobile Preview" feature Change 3692020 by Sorin.Gradinaru #jira UE-50645 Carriage returns can be pasted into single line UMG fields on Android #ue4 #4.19 #android Change 3692741 by Sorin.Gradinaru Andoid 3D WebBrowser #jira UE-32740 Web Browser on a Widget Component appears to be 2D when launching on to Android #ue4 #android Change 3695475 by Chris.Babcock Per project Android NDK/SDK API settings #jira UEMOB-394 #ue4 #android Change 3701364 by Dmitriy.Dyomin Fixed: WEX - Android - Log spammed with "LogRHI: Error: Unsupported EPixelFormat 28" #jira UE-50714 Change 3701664 by Jack.Porter Fix typo Change 3702355 by Cosmin.Sulea UEMOB-393 - Support "ETC 1.5" packaging #jira UEMOB-393 Change 3704950 by Chris.Babcock Add verification of support for cooked texture format(s) on device at runtime (optional with Validate texture formats checkbox in Android project settings) and skipped for cook on the fly #jira UE-50837 #ue4 #android Change 3709817 by Nick.Shin HTML5 - silence CIS warnings (changed to INFO message type) finally have a repo case to test this proper fix #jira UE-50415 ( Pri:1 - 4.18 ) "Package ShooterClient HTML5" has completed with 1 Warning: "File packager is creating an asset bundle of 815 MB. This is very large" Change 3717598 by Chris.Babcock Fix Android icon paths #jira UE-51585 #ue4 #android Change 3718456 by Adrian.Chelu #fixed spelling in category localized name Change 3719643 by Nick.Shin nuke PLATFORM_HTML5_WIN32 more "old" code to remove #jira UEMOB-433 Remove Win32 SDL "HTML5 Simulator" code Change 3720342 by Nick.Shin HTML5 redirect logs to console window #jira UE-50747 HTML5 log is not easily accessible to users Change 3720652 by Sorin.Gradinaru UE-50382 Xcode Address Sanitizer feature does not work on iOS #jira 50382 #iOS #ue4 Address sanitizer dylib loader depends on the default SDKROOT parameter (<scheme> => Build Settings => Base SDK => <Build Configuration>) For macosx or missing (also translated as macosx), the path is incorrect for iphone/appletv. Change 3720654 by Sorin.Gradinaru UE-48499 Android Voice Module has a few issues #jira 48499 #Android #ue4 1.Circular Buffer: Does the engine already have an implementation? Do we want this into core libraries? R: There is an generic template class TCircularBuffer, but it lacks functionality like write/read checks, reading/writing data chunks. Plus the code from VoiceModuleAndroid is optimized for circular byte array. I suggest to keep it. 2. Possible memory leaks: void free_circular_buffer (circular_buffer *p) is implemented, but not used. Presumably a memory leak on the variable inrb. Does CreateAudioRecorder need to be paired with any kind of destroy on shutdown? R: Fixed. Using an array ActiveVoiceCaptures to store VoiceCapture references (same as on Windows) 3. Init() There are 4 calls to setup/init things that store the result in "result" but only the last call is checked against success. Should more checks against the values be made at each stage with informative log messaging in the event of failure? R: Fixed. 4. GetVoiceData() // Workaround for dealing with noise after stand-by while(bytes<InVoiceBufferSize) { OutVoiceBuffer[bytes++]=0; } Isn't this just a memzero? R: Fixed. 5. Missing features. Need to implement GetBufferSize and DumpState R: Added GetBufferSize. Can be used like in TestVoice.cpp DumpState is never used (same on Mac, iOS), plus the OpenSL objects do not expose internal properties. Change 3722554 by Cosmin.Sulea UE-44224 - iOS - Remote Build - rsync error: files not transferred #jira UE-44224 Change 3723265 by Allan.Bentham Assign a texture format priority for ETC1a. prevents launch on from using ETC1a all the time.. Change 3729764 by Dmitriy.Dyomin Removed deprecated LightmapUVBias, ShadowmapUVBias from instanced static mesh component per-instance data (80 -> 64 bytes) Change 3729899 by Dmitriy.Dyomin Fixed tiled landcape re-import Change 3730895 by Bogdan.Vasilache UEMOB-442 --> [ Support texture streaming on Android ES 3.1 ] #jira UEMOB-442 Change 3733463 by Chris.Babcock Return error for external texture if not used in pixel shader #jira UE-51763 #ue4 Change 3736226 by Chris.Babcock Change ExposureScale to PreExposure #jira UE-52007 #jira UE-51691 #ue4 #android Change 3740509 by Allan.Bentham Add LQ (direct lighting from stationary spot/point lights) to volumetric lightmaps. #jira UE-50551 Change 3740586 by Cosmin.Sulea UE-51747 - GitHub 4174 : [BUG-FIX] Invalid ASTC texture versioning is corrected. #jira UE-51747 Change 3741110 by Chris.Babcock Fix functional code in checks removed for shipping #ue4 Change 3741117 by Chris.Babcock Fix checkin error for check -> ensure fix #ue4 Change 3741156 by Chris.Babcock Swap order of SDK and NDK overrides in menu to match Android SDK settings #jira UE-52019 #ue4 #android Change 3741271 by Chris.Babcock Use final NDK and SDK levels only in UEBuildSettings.txt and rename the overrides to be clearer #jira UE-52058 #ue4 #android Change 3741464 by Chris.Babcock Add NDK and SDK platform validation (installed) for Android #jira UE-52069 #ue4 #android Change 3744602 by Josh.Adams From Meerkat: - Added optional 0 or 1 param to showlayer that will set the visibility instead of toggling it for entire layer Change 3744603 by Josh.Adams From Meerkat: - Fixed a comment about debug view modes on consoles Change 3744607 by Josh.Adams From Meerkat: - Added HWInstances to the PrimitiveStats view in Statistics window Change 3754890 by Chris.Babcock Updated IntelISPCTexComp DLLs to fix crashes with some processors on Windows #jira UE-52281 #ue4 Change 3755147 by Jack.Porter Fixed Google Cardboard rendering upside down on iPhone 6S+ #jira UE-38555 Change 3755458 by Cosmin.Sulea UE-47801 - RSync Error when Generating SSH Key for Remote Mac Building when Mac username contains a space #jira UE-47801 Change 3755492 by Jack.Porter Fix merge error Change 3759140 by Bogdan.Vasilache UE-52396 --> Assertion in FOpenGLDynamicRHI::CreateOpenGLTexture when launching on Mali Galaxy S III #jira UE-52396 Change 3760536 by Sorin.Gradinaru UE-51262 values for pinch input produce very different results for same area on android device #jira 51262 #iOS #Android #ue4 1. When the pinch goes beyond the viewport boundaries (when zooming out), the touch that goes off-screen is "released" and the zooming effect is over. Solved by remembering last pinch event values 2. "Hack" the initial distance for the pinch/ rotate, by touching the screen and moving the finger to another position before using the second finger. Solved by using the correct values when the pinch event starts Change 3761279 by Chris.Babcock Flag vertex and fragment shaders belonging to materials with external textures #jira UE-52398 #ue4 #android Change 3761494 by Chris.Babcock Fix access to FrameUpdateInfo in MediaPlayer14.java and CameraPlayer14.java with Proguard #jira UE-52471 #ue4 #android Change 3763146 by Jack.Porter Default assets for web browser widget #jira UE-51374 Change 3764242 by Chris.Babcock Disable Niagara vertex factories for mobile and Switch #jira UE-52425 #ue4 #mobile #switch Change 3766027 by Allan.Bentham Fix crash when no LQ volumetric lightmap data exists #jira UE-52508 Change 3766075 by Josh.Adams - Updating UDKRemote. Still needs art updated, and some some unneeded assets removed Change 3766141 by Allan.Bentham Show unbuilt lightmap warning when LQ data is missing from volumetric lightmap in mobile shading mode. Change 3766163 by Josh.Adams - Updated icons and added a generator script when we get a new one Change 3766560 by Allan.Bentham Workaround for broken offsets with automation screenshots. #jira UE-52491 Change 3767193 by Peter.Sauerbrei remove Oculus shader from being cached force a metal shader re-compile #jira UE-52587 Change 3767604 by Peter.Sauerbrei fix the Oculusshader the right way #jira UE-52587 Change 3768543 by Sorin.Gradinaru Android WebBrowser 3D - webbrowser plugin contins the assets, 2D behaviour restored #Android #UE4 #4.19 #jira UE-51374 Web Browser widget is not working on Android #jira UE-52399 Android web browser does not accept input Change 3663915 by Jack.Porter Prevent FTcpListener from busy polling while waiting for connections #jira UE-50125 Change 3709224 by Allan.Bentham Add android target device to gauntlet. Automation screenshot uses high res screenshot api for mobile. #jira UEMOB-360 Change 3741453 by Chris.Babcock Match the 4.18.1 fixes for shipping checks removing code (from CL3741091) #ue4 Change 3769301 by Peter.Sauerbrei fix for missing ue4_stdmetal.lib, courtesty of MarkS #jira UE-52587 Change 3770597 by Sorin.Gradinaru Android WebBrowser - remove the WebBrowser plugin reference from the Engine Load the default material directly from the resources. #Android #UE4 #jira UE-51374 Web Browser widget is not working on Android #jira UE-52399 Android web browser does not accept input [CL 3771573 by Chris Babcock in Main branch]
2017-11-22 16:42:04 -05:00
#if PLATFORM_ANDROID
#include "ThirdParty/Android/detex/AndroidETC.h"
#endif //PLATFORM_ANDROID
static TAutoConsoleVariable<int32> CVarDeferTextureCreation(
TEXT("r.OpenGL.DeferTextureCreation"),
0,
TEXT("0: OpenGL textures are sent to the driver to be created immediately. (default)\n")
TEXT("1: Where possible OpenGL textures are stored in system memory and created only when required for rendering.\n")
TEXT(" This can avoid memory overhead seen in some GL drivers."),
ECVF_RenderThreadSafe);
static TAutoConsoleVariable<int32> CVarDeferTextureCreationExcludeMask(
TEXT("r.OpenGL.DeferTextureCreationExcludeFlags"),
static_cast<int32>(~(TexCreate_ShaderResource | TexCreate_SRGB | TexCreate_Streamable | TexCreate_OfflineProcessed)),
TEXT("Deferred texture creation exclusion mask, any texture requested with flags in this mask will be excluded from deferred creation."),
ECVF_RenderThreadSafe);
static int32 GOGLDeferTextureCreationKeepLowerMipCount = -1;
static FAutoConsoleVariableRef CVarDeferTextureCreationKeepLowerMipCount(
TEXT("r.OpenGL.DeferTextureCreationKeepLowerMipCount"),
GOGLDeferTextureCreationKeepLowerMipCount,
TEXT("Maximum number of texture mips to retain in CPU memory after a deferred texture has been sent to the driver for GPU memory creation.\n")
TEXT("-1: to match the number of mips kept resident by the texture streamer (default).\n")
TEXT(" 0: to disable texture eviction and discard CPU mips after sending them to the driver.\n")
TEXT(" 16: keep all mips around.\n"),
ECVF_RenderThreadSafe);
static int32 GOGLTextureEvictFramesToLive = 500;
static FAutoConsoleVariableRef CVarTextureEvictionFrameCount(
TEXT("r.OpenGL.TextureEvictionFrameCount"),
GOGLTextureEvictFramesToLive,
TEXT("The number of frames since a texture was last referenced before it will considered for eviction.\n")
TEXT("Textures can only be evicted after creation if all their mips are resident, ie its mip count <= r.OpenGL.DeferTextureCreationKeepLowerMipCount."),
ECVF_RenderThreadSafe
);
int32 GOGLTexturesToEvictPerFrame = 10;
static FAutoConsoleVariableRef CVarTexturesToEvictPerFrame(
TEXT("r.OpenGL.TextureEvictsPerFrame"),
GOGLTexturesToEvictPerFrame,
TEXT("The maximum number of evictable textures to evict per frame, limited to avoid potential driver CPU spikes.\n")
TEXT("Textures can only be evicted after creation if all their mips are resident, ie its mip count <= r.OpenGL.DeferTextureCreationKeepLowerMipCount."),
ECVF_RenderThreadSafe
);
static int32 GOGLTextureEvictLogging = 0;
static FAutoConsoleVariableRef CVarTextureEvictionLogging(
TEXT("r.OpenGL.TextureEvictionLogging"),
GOGLTextureEvictLogging,
TEXT("Enables debug logging for texture eviction."),
ECVF_RenderThreadSafe
);
/*-----------------------------------------------------------------------------
Texture allocator support.
-----------------------------------------------------------------------------*/
/** Caching it here, to avoid getting it every time we create a texture. 0 is no multisampling. */
GLint GMaxOpenGLColorSamples = 0;
GLint GMaxOpenGLDepthSamples = 0;
GLint GMaxOpenGLIntegerSamples = 0;
// in bytes, never change after RHI, needed to scale game features
int64 GOpenGLDedicatedVideoMemory = 0;
// In bytes. Never changed after RHI init. Our estimate of the amount of memory that we can use for graphics resources in total.
int64 GOpenGLTotalGraphicsMemory = 0;
void FOpenGLTexture::UpdateTextureStats(FOpenGLTexture* Texture, bool bAllocating)
{
const FRHITextureDesc& Desc = Texture->GetDesc();
const bool bRenderTarget = EnumHasAnyFlags(Desc.Flags, TexCreate_RenderTargetable | TexCreate_ResolveTargetable | TexCreate_DepthStencilTargetable);
const int64 TextureSize = bAllocating
? int64(Texture->MemorySize)
: -int64(Texture->MemorySize);
const int64 TextureSizeInKBs = bAllocating
? FMath::DivideAndRoundUp(int64(Texture->MemorySize), 1024ll)
: -FMath::DivideAndRoundUp(int64(Texture->MemorySize), 1024ll);
if (bRenderTarget)
{
switch (Desc.Dimension)
{
default: checkNoEntry();
case ETextureDimension::Texture2D: INC_MEMORY_STAT_BY(STAT_RenderTargetMemory2D , TextureSize); break;
case ETextureDimension::Texture2DArray: INC_MEMORY_STAT_BY(STAT_RenderTargetMemory2D , TextureSize); break;
case ETextureDimension::Texture3D: INC_MEMORY_STAT_BY(STAT_RenderTargetMemory3D , TextureSize); break;
case ETextureDimension::TextureCube: INC_MEMORY_STAT_BY(STAT_RenderTargetMemoryCube, TextureSize); break;
case ETextureDimension::TextureCubeArray: INC_MEMORY_STAT_BY(STAT_RenderTargetMemoryCube, TextureSize); break;
}
GCurrentRendertargetMemorySize += TextureSizeInKBs;
LLM_SCOPED_PAUSE_TRACKING_WITH_ENUM_AND_AMOUNT(ELLMTag::GraphicsPlatform, TextureSize, ELLMTracker::Platform, ELLMAllocType::None);
LLM_SCOPED_PAUSE_TRACKING_WITH_ENUM_AND_AMOUNT(ELLMTag::RenderTargets , TextureSize, ELLMTracker::Default , ELLMAllocType::None);
}
else
{
switch (Desc.Dimension)
{
default: checkNoEntry();
case ETextureDimension::Texture2D: INC_MEMORY_STAT_BY(STAT_TextureMemory2D , TextureSize); break;
case ETextureDimension::Texture2DArray: INC_MEMORY_STAT_BY(STAT_TextureMemory2D , TextureSize); break;
case ETextureDimension::Texture3D: INC_MEMORY_STAT_BY(STAT_TextureMemory3D , TextureSize); break;
case ETextureDimension::TextureCube: INC_MEMORY_STAT_BY(STAT_TextureMemoryCube, TextureSize); break;
case ETextureDimension::TextureCubeArray: INC_MEMORY_STAT_BY(STAT_TextureMemoryCube, TextureSize); break;
}
GCurrentTextureMemorySize += TextureSizeInKBs;
LLM_SCOPED_PAUSE_TRACKING_WITH_ENUM_AND_AMOUNT(ELLMTag::GraphicsPlatform, TextureSize, ELLMTracker::Platform, ELLMAllocType::None);
LLM_SCOPED_PAUSE_TRACKING_WITH_ENUM_AND_AMOUNT(ELLMTag::Textures , TextureSize, ELLMTracker::Default , ELLMAllocType::None);
}
}
FDynamicRHI::FRHICalcTextureSizeResult FOpenGLDynamicRHI::RHICalcTexturePlatformSize(FRHITextureDesc const& Desc, uint32 FirstMipIndex)
{
FDynamicRHI::FRHICalcTextureSizeResult Result;
Result.Size = Desc.CalcMemorySizeEstimate(FirstMipIndex);
Result.Align = 1;
return Result;
}
/**
* Retrieves texture memory stats. Unsupported with this allocator.
*
* @return false, indicating that out variables were left unchanged.
*/
void FOpenGLDynamicRHI::RHIGetTextureMemoryStats(FTextureMemoryStats& OutStats)
{
OutStats.DedicatedVideoMemory = GOpenGLDedicatedVideoMemory;
OutStats.DedicatedSystemMemory = 0;
OutStats.SharedSystemMemory = 0;
OutStats.TotalGraphicsMemory = GOpenGLTotalGraphicsMemory ? GOpenGLTotalGraphicsMemory : -1;
OutStats.AllocatedMemorySize = int64(GCurrentTextureMemorySize) * 1024;
Copying //UE4/Orion-Staging to //UE4/Main (Origin: //Orion/Dev-General @2826496) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2826201 on 2016/01/13 by Zabir.Hoque Add more verbose logging to try to understand #OR-11297 #lockdown Andrew.Grant #CodeReview Marcus.Wassmer #RB none #TESTS compiled Win64 debug editor, ran agora_p Change 2826170 on 2016/01/13 by Marcus.Wassmer Flush unloaded resource properly in LoadMap #codereview Gil.Gribb #rb none #test cycling game. memory is freed properly now. #lockdown Andrew.Grant Change 2826135 on 2016/01/12 by Michael.Noland Orion: Improve login screen on PC to reduce the potential impact of framerate on data center ping calculation - Disabled async streaming for the duration of the QOS ping measurement to avoid hitches - Added a circular throbber in the top left corner of the login screen indicating that something is async streaming (as a diagnostic tool for users affected by the datacenter ping, can be removed in the future) - Added logging of the current average frame time when the datacenter ping is finalized - Added a 'Pick Ideal Settings' button to the login screen (note: on the actual screen, not the login widget, so it will not appear on PS4) #jira OR-12453 #rb paul.moore #tests Ran a QOS server and client and verified that the new logging is occurring, tried out the new benchmark button, etc... Merging CL# 2826128 using //Orion/Main_to_//Orion/Dev-General Change 2826131 on 2016/01/12 by Michael.Noland #UE4 - added print out of MS/FPS during Qos ping evaluation #rb michael.noland #tests loaded up through login screen to see output Merging CL# 2825678 using //Orion/Main_to_//Orion/Dev-General Change 2826128 on 2016/01/12 by Michael.Noland Orion: Improve login screen on PC to reduce the potential impact of framerate on data center ping calculation - Disabled async streaming for the duration of the QOS ping measurement to avoid hitches - Added a circular throbber in the top left corner of the login screen indicating that something is async streaming (as a diagnostic tool for users affected by the datacenter ping, can be removed in the future) - Added logging of the current average frame time when the datacenter ping is finalized - Added a 'Pick Ideal Settings' button to the login screen (note: on the actual screen, not the login widget, so it will not appear on PS4) #jira OR-12453 #rb paul.moore #tests Ran a QOS server and client and verified that the new logging is occurring, tried out the new benchmark button, etc... Merging CL# 2826116 using //Orion/Release-Next->//Orion/Main Change 2826116 on 2016/01/12 by Michael.Noland Orion: Improve login screen on PC to reduce the potential impact of framerate on data center ping calculation - Disabled async streaming for the duration of the QOS ping measurement to avoid hitches - Added a circular throbber in the top left corner of the login screen indicating that something is async streaming (as a diagnostic tool for users affected by the datacenter ping, can be removed in the future) - Added logging of the current average frame time when the datacenter ping is finalized - Added a 'Pick Ideal Settings' button to the login screen (note: on the actual screen, not the login widget, so it will not appear on PS4) #jira OR-12453 #rb paul.moore #tests Ran a QOS server and client and verified that the new logging is occurring, tried out the new benchmark button, etc... #lockdown andrew.grant #codereview josh.markiewicz Change 2825772 on 2016/01/12 by Dmitry.Rekman Linux signal handling improvements. - Switch crash handlers to use "crash malloc" (preallocated memory) on crash. - Remove unnecessary memory allocations from graceful termination handler. #rb none #tests Run the Linux server and crashed it a few times. #codereview David.Vossel, Michael.Trepka Change 2825768 on 2016/01/12 by Josh.Markiewicz #UE4 - added print out of MS/FPS during Qos ping evaluation #rb michael.noland #tests loaded up through login screen to see output Change 2825703 on 2016/01/12 by Brian.Karis Switched on new motion blur. Set temporal AA sharpness to 1. #rb none #TESTS editor Change 2825689 on 2016/01/12 by Lina.Halper Fix for get animation notify crash https://jira.ol.epicgames.net/browse/OR-12248 https://jira.ol.epicgames.net/browse/OR-12348 - Also fixed the crash in preview of persona due to blend sample cache contains previous animation data - Also fixed blend space player to reinitialize cache data - The main issue is marker doesn't clamp the length, causing notifies ensure to trigger. #rb : Laurent.Delayen #tests: 10 Sparrows bot match for long time #code review: Martin.Wilson #lockdown: Andrew.Grant Change 2825680 on 2016/01/12 by Martin.Mittring fixed all cases with r.Tonemapper.ScreenPercentage, ScreenPercentage, Fringe, Vignette, ViewRect, flickering with transluceny (View members have been modified while other thread was reading) #rb:Olaf.Piesche, David.Hill #test: PC, many cases Change 2825579 on 2016/01/12 by Chris.Bunner Force shadow shape bone indices on the required update list. #rb Lina.Halper, Rolando.Caloca #tests Editor #codereview Daniel.Wright #jira OR-12339 Change 2825443 on 2016/01/12 by Martin.Mittring
2016-01-14 08:11:47 -05:00
OutStats.LargestContiguousAllocation = OutStats.AllocatedMemorySize;
OutStats.TexturePoolSize = GTexturePoolSize;
OutStats.PendingMemoryAdjustment = 0;
}
/**
* Fills a texture with to visualize the texture pool memory.
*
* @param TextureData Start address
* @param SizeX Number of pixels along X
* @param SizeY Number of pixels along Y
* @param Pitch Number of bytes between each row
* @param PixelSize Number of bytes each pixel represents
*
* @return true if successful, false otherwise
*/
bool FOpenGLDynamicRHI::RHIGetTextureMemoryVisualizeData( FColor* /*TextureData*/, int32 /*SizeX*/, int32 /*SizeY*/, int32 /*Pitch*/, int32 /*PixelSize*/ )
{
return false;
}
FOpenGLTextureDesc::FOpenGLTextureDesc(FRHITextureDesc const& InDesc)
: NumSamplesRendered (InDesc.NumSamples)
, NumSamplesStored (InDesc.NumSamples)
, bCubemap (InDesc.IsTextureCube())
, bArrayTexture (InDesc.IsTextureArray())
, bStreamable (EnumHasAnyFlags(InDesc.Flags, TexCreate_Streamable))
, bDepthStencil (EnumHasAnyFlags(InDesc.Flags, TexCreate_DepthStencilTargetable))
, bCanCreateAsEvicted(false)
, bIsPowerOfTwo (false)
, bTileMemDepthBuffer(false)
{
checkf(!bCubemap || NumSamplesStored == 1, TEXT("Texture cubes cannot be multisampled."));
checkf(FOpenGL::SupportsTexture3D() || (!InDesc.IsTexture3D() && !InDesc.IsTextureArray()), TEXT("Texture3D / Texture2DArray support requires FOpenGL::SupportsTexture3D()."));
// Use on-chip tile memory for MSAA if available
if (NumSamplesStored <= FOpenGL::GetMaxMSAASamplesTileMem())
{
NumSamplesRendered = FMath::Min<uint32>(NumSamplesStored, FOpenGL::GetMaxMSAASamplesTileMem());
NumSamplesStored = 1;
}
// Select an appropriate texture target
#if PLATFORM_ANDROID
if (bDepthStencil && NumSamplesRendered != NumSamplesStored)
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3443236) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3385304 on 2017/04/07 by Ryan.Vance #jira UEVR-694 GL_TEXTURE_EXTERNAL_OES support hlslcc changes to support the TextureExternal keyword RHI changes to support RHICreateTextureExternal2D Fall back to a standard 2d texture on platforms without extension support Did not implement a shader cache solution as the resource is expected to be shared across processes, so recreating it from the shader cache would be a bad thing Change 3391376 on 2017/04/12 by Ben.Marsh Build: Add additional UE4Game targets for Dev-VR, to catch build failures in plugins that are disabled for games. Change 3392546 on 2017/04/13 by Jeff.Fisher Duplicating in Dev-VR (from Release-4.16) UEVR-734 PSVR sdk 4.5 tracking improvements UEVR-738 PSVR prediction time dynamic adjustment -New tracker profile and camera config to activate ps4 tracking improvements. -Calculating prediction time based on flip timings rather than assuming it will be a particular value. This makes the prediction time nearly perfect as long as we meet framerate and lets it adapt to the timing of when the prediction is made in the frame. -Changed reprojection fliparg to be the frame number, rather than a separate incrementor, so its more useful for debugging. #jira UEVR-734 #review-3391147 Change 3394508 on 2017/04/14 by Jeff.Fisher merge fix ShaderCacheTypes.h Change 3399628 on 2017/04/19 by Jeff.Fisher UEVR-582 PSVR not applying WorldToMeters for position accessor -Changed to apply WorldToMeters scale when we get the position data from PS4Tracker, so that the positions stored in MorpheusHMD are always in world space. #jira UEVR-582 #review-3398683 Change 3404200 on 2017/04/21 by Jeff.Fisher UEVR-239 GearVR headset worn/notworn notifications -Implemented the IHeadMountedDisplay accessor for this, and also hooked up the delegates that fire on PS4. -Implemented the IHeadMountedDisplay accessor for PS4. #jira UEVR-239 #review-3404174 @keli.hloedversson Change 3412688 on 2017/04/27 by Jeff.Fisher UEVR-766 PSVR test level improvements -VR/TM-MotionControllers --Hooked up QA_MoCoAll to the cycle of playercontrllers. --Added instructions for motion tracked device management controls, if the platform supports. -QA_MoCoAll --Switched tracking state colors to tracking spheres, becuase the arrows need to be not rendered in game for some configuration. --Added duplicate motion controller component to pad and another duplicate with disabled low latency tracking. -QA_MoCoDualShock --removed gun controller from this playercontroller, its redundant to the one in QA_MoCoAll -QA_MoCoComponents --world scale from controllers mode added ctrl-w, this is a good way to torture test world scale. #jira UEVR-766 Change 3413801 on 2017/04/28 by Keli.Hlodversson #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) on OculusRift Change 3429305 on 2017/05/08 by Keli.Hlodversson SteamVR Layers don't honor the (absence of) LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO flag Avoid potential divide by zero in the DefaultStereoLayers implementation of the same flag. #jira UE-42855 Change 3429362 on 2017/05/08 by Ryan.Vance Integrating 3416918 for #jira UE-44404 Change 3429426 on 2017/05/08 by Keli.Hlodversson Set up a Test case for Layers in QA Game so that we can determine differences between platforms #jira UEVR-741 Change 3430829 on 2017/05/09 by Keli.Hlodversson Implement World-locked layer position type on SteamVR #jira UE-42940 Also fixes LAYER_FLAG_TEX_CONTINUOUS_UPDATE flag on SteamVR Change 3432895 on 2017/05/10 by Nick.Whiting Skipping recording of analytics if there is no device connected on startup, to prevent false reports when Oculus / SteamVR runtimes are installed on the user's machine #jira UE-37166 Change 3435917 on 2017/05/11 by Jeff.Fisher UE-44941 LoadErrors produced in log when opening TM-MotionControllers -LoadErrors:Error: Error /Game/Blueprints/QA_MoCoAll : Can't find file for asset. /Game/NewTextureRenderTarget2D -Removed the component that was referencing that. It was temporary test content, not meant to be submitted. #jira UE-44941 Change 3435938 on 2017/05/11 by Ryan.Vance Incorrect VertexDeclarationRHI for the hidden area mask pso. Change 3437197 on 2017/05/12 by Keli.Hlodversson Remove a irrelevant comment. Change 3437221 on 2017/05/12 by Keli.Hlodversson ... and now actually include the change that was supposed to go in CL#3437197 Remove a irrelevant comment. Change 3439359 on 2017/05/15 by Keli.Hlodversson Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439422 on 2017/05/15 by Keli.Hlodversson Fixes for CL#3439359 after review: Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439599 on 2017/05/15 by Jeff.Fisher UE-44962 Motion controller input not registered in TM-MotionControllers package -Pre-exising blueprint assumed only one textrenderactor in the level, but I added two more. It was working or not depending on the order in which they were constructed. -Now searching up the correct actor by Tag. #jira UE-44962 Change 3441176 on 2017/05/16 by Mike.Beach Can now explicitly hide components from a specific player through the player controller. Change 3441242 on 2017/05/16 by Mike.Beach Making it so any component can invoke a preview viewport in the editor (want it to be extended by scene capture components). Change 3441571 on 2017/05/16 by Mike.Beach Fixing CIS shadowed variable name issue (fallout from CL 3441176). Change 3443223 on 2017/05/17 by Mike.Beach Fixing root of shadowed variable name warning (now only in UT, fallout from 3441176) - renaming new base class variable so it doesn't conflict with third parties either. #jira UE-45120 [CL 3443810 by Mike Beach in Main branch]
2017-05-17 12:45:38 -04:00
{
// Special case for MSAA depth render target on tiled GPUs / mobile renderer.
Target = GL_RENDERBUFFER;
bTileMemDepthBuffer = true;
}
else
#endif
{
if (EnumHasAnyFlags(InDesc.Flags, TexCreate_External))
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3443236) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3385304 on 2017/04/07 by Ryan.Vance #jira UEVR-694 GL_TEXTURE_EXTERNAL_OES support hlslcc changes to support the TextureExternal keyword RHI changes to support RHICreateTextureExternal2D Fall back to a standard 2d texture on platforms without extension support Did not implement a shader cache solution as the resource is expected to be shared across processes, so recreating it from the shader cache would be a bad thing Change 3391376 on 2017/04/12 by Ben.Marsh Build: Add additional UE4Game targets for Dev-VR, to catch build failures in plugins that are disabled for games. Change 3392546 on 2017/04/13 by Jeff.Fisher Duplicating in Dev-VR (from Release-4.16) UEVR-734 PSVR sdk 4.5 tracking improvements UEVR-738 PSVR prediction time dynamic adjustment -New tracker profile and camera config to activate ps4 tracking improvements. -Calculating prediction time based on flip timings rather than assuming it will be a particular value. This makes the prediction time nearly perfect as long as we meet framerate and lets it adapt to the timing of when the prediction is made in the frame. -Changed reprojection fliparg to be the frame number, rather than a separate incrementor, so its more useful for debugging. #jira UEVR-734 #review-3391147 Change 3394508 on 2017/04/14 by Jeff.Fisher merge fix ShaderCacheTypes.h Change 3399628 on 2017/04/19 by Jeff.Fisher UEVR-582 PSVR not applying WorldToMeters for position accessor -Changed to apply WorldToMeters scale when we get the position data from PS4Tracker, so that the positions stored in MorpheusHMD are always in world space. #jira UEVR-582 #review-3398683 Change 3404200 on 2017/04/21 by Jeff.Fisher UEVR-239 GearVR headset worn/notworn notifications -Implemented the IHeadMountedDisplay accessor for this, and also hooked up the delegates that fire on PS4. -Implemented the IHeadMountedDisplay accessor for PS4. #jira UEVR-239 #review-3404174 @keli.hloedversson Change 3412688 on 2017/04/27 by Jeff.Fisher UEVR-766 PSVR test level improvements -VR/TM-MotionControllers --Hooked up QA_MoCoAll to the cycle of playercontrllers. --Added instructions for motion tracked device management controls, if the platform supports. -QA_MoCoAll --Switched tracking state colors to tracking spheres, becuase the arrows need to be not rendered in game for some configuration. --Added duplicate motion controller component to pad and another duplicate with disabled low latency tracking. -QA_MoCoDualShock --removed gun controller from this playercontroller, its redundant to the one in QA_MoCoAll -QA_MoCoComponents --world scale from controllers mode added ctrl-w, this is a good way to torture test world scale. #jira UEVR-766 Change 3413801 on 2017/04/28 by Keli.Hlodversson #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) on OculusRift Change 3429305 on 2017/05/08 by Keli.Hlodversson SteamVR Layers don't honor the (absence of) LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO flag Avoid potential divide by zero in the DefaultStereoLayers implementation of the same flag. #jira UE-42855 Change 3429362 on 2017/05/08 by Ryan.Vance Integrating 3416918 for #jira UE-44404 Change 3429426 on 2017/05/08 by Keli.Hlodversson Set up a Test case for Layers in QA Game so that we can determine differences between platforms #jira UEVR-741 Change 3430829 on 2017/05/09 by Keli.Hlodversson Implement World-locked layer position type on SteamVR #jira UE-42940 Also fixes LAYER_FLAG_TEX_CONTINUOUS_UPDATE flag on SteamVR Change 3432895 on 2017/05/10 by Nick.Whiting Skipping recording of analytics if there is no device connected on startup, to prevent false reports when Oculus / SteamVR runtimes are installed on the user's machine #jira UE-37166 Change 3435917 on 2017/05/11 by Jeff.Fisher UE-44941 LoadErrors produced in log when opening TM-MotionControllers -LoadErrors:Error: Error /Game/Blueprints/QA_MoCoAll : Can't find file for asset. /Game/NewTextureRenderTarget2D -Removed the component that was referencing that. It was temporary test content, not meant to be submitted. #jira UE-44941 Change 3435938 on 2017/05/11 by Ryan.Vance Incorrect VertexDeclarationRHI for the hidden area mask pso. Change 3437197 on 2017/05/12 by Keli.Hlodversson Remove a irrelevant comment. Change 3437221 on 2017/05/12 by Keli.Hlodversson ... and now actually include the change that was supposed to go in CL#3437197 Remove a irrelevant comment. Change 3439359 on 2017/05/15 by Keli.Hlodversson Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439422 on 2017/05/15 by Keli.Hlodversson Fixes for CL#3439359 after review: Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439599 on 2017/05/15 by Jeff.Fisher UE-44962 Motion controller input not registered in TM-MotionControllers package -Pre-exising blueprint assumed only one textrenderactor in the level, but I added two more. It was working or not depending on the order in which they were constructed. -Now searching up the correct actor by Tag. #jira UE-44962 Change 3441176 on 2017/05/16 by Mike.Beach Can now explicitly hide components from a specific player through the player controller. Change 3441242 on 2017/05/16 by Mike.Beach Making it so any component can invoke a preview viewport in the editor (want it to be extended by scene capture components). Change 3441571 on 2017/05/16 by Mike.Beach Fixing CIS shadowed variable name issue (fallout from CL 3441176). Change 3443223 on 2017/05/17 by Mike.Beach Fixing root of shadowed variable name warning (now only in UT, fallout from 3441176) - renaming new base class variable so it doesn't conflict with third parties either. #jira UE-45120 [CL 3443810 by Mike Beach in Main branch]
2017-05-17 12:45:38 -04:00
{
check(InDesc.IsTexture2D());
check(!InDesc.IsTextureArray());
Target = FOpenGL::SupportsImageExternal()
? GL_TEXTURE_EXTERNAL_OES
// Fall back to a regular 2d texture if we don't have support.
// Texture samplers in the shader will also fall back to a regular sampler2D.
: GL_TEXTURE_2D;
}
else if (EnumHasAnyFlags(InDesc.Flags, TexCreate_Presentable))
{
check(InDesc.Dimension == ETextureDimension::Texture2D);
Target = GL_RENDERBUFFER;
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3443236) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3385304 on 2017/04/07 by Ryan.Vance #jira UEVR-694 GL_TEXTURE_EXTERNAL_OES support hlslcc changes to support the TextureExternal keyword RHI changes to support RHICreateTextureExternal2D Fall back to a standard 2d texture on platforms without extension support Did not implement a shader cache solution as the resource is expected to be shared across processes, so recreating it from the shader cache would be a bad thing Change 3391376 on 2017/04/12 by Ben.Marsh Build: Add additional UE4Game targets for Dev-VR, to catch build failures in plugins that are disabled for games. Change 3392546 on 2017/04/13 by Jeff.Fisher Duplicating in Dev-VR (from Release-4.16) UEVR-734 PSVR sdk 4.5 tracking improvements UEVR-738 PSVR prediction time dynamic adjustment -New tracker profile and camera config to activate ps4 tracking improvements. -Calculating prediction time based on flip timings rather than assuming it will be a particular value. This makes the prediction time nearly perfect as long as we meet framerate and lets it adapt to the timing of when the prediction is made in the frame. -Changed reprojection fliparg to be the frame number, rather than a separate incrementor, so its more useful for debugging. #jira UEVR-734 #review-3391147 Change 3394508 on 2017/04/14 by Jeff.Fisher merge fix ShaderCacheTypes.h Change 3399628 on 2017/04/19 by Jeff.Fisher UEVR-582 PSVR not applying WorldToMeters for position accessor -Changed to apply WorldToMeters scale when we get the position data from PS4Tracker, so that the positions stored in MorpheusHMD are always in world space. #jira UEVR-582 #review-3398683 Change 3404200 on 2017/04/21 by Jeff.Fisher UEVR-239 GearVR headset worn/notworn notifications -Implemented the IHeadMountedDisplay accessor for this, and also hooked up the delegates that fire on PS4. -Implemented the IHeadMountedDisplay accessor for PS4. #jira UEVR-239 #review-3404174 @keli.hloedversson Change 3412688 on 2017/04/27 by Jeff.Fisher UEVR-766 PSVR test level improvements -VR/TM-MotionControllers --Hooked up QA_MoCoAll to the cycle of playercontrllers. --Added instructions for motion tracked device management controls, if the platform supports. -QA_MoCoAll --Switched tracking state colors to tracking spheres, becuase the arrows need to be not rendered in game for some configuration. --Added duplicate motion controller component to pad and another duplicate with disabled low latency tracking. -QA_MoCoDualShock --removed gun controller from this playercontroller, its redundant to the one in QA_MoCoAll -QA_MoCoComponents --world scale from controllers mode added ctrl-w, this is a good way to torture test world scale. #jira UEVR-766 Change 3413801 on 2017/04/28 by Keli.Hlodversson #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) on OculusRift Change 3429305 on 2017/05/08 by Keli.Hlodversson SteamVR Layers don't honor the (absence of) LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO flag Avoid potential divide by zero in the DefaultStereoLayers implementation of the same flag. #jira UE-42855 Change 3429362 on 2017/05/08 by Ryan.Vance Integrating 3416918 for #jira UE-44404 Change 3429426 on 2017/05/08 by Keli.Hlodversson Set up a Test case for Layers in QA Game so that we can determine differences between platforms #jira UEVR-741 Change 3430829 on 2017/05/09 by Keli.Hlodversson Implement World-locked layer position type on SteamVR #jira UE-42940 Also fixes LAYER_FLAG_TEX_CONTINUOUS_UPDATE flag on SteamVR Change 3432895 on 2017/05/10 by Nick.Whiting Skipping recording of analytics if there is no device connected on startup, to prevent false reports when Oculus / SteamVR runtimes are installed on the user's machine #jira UE-37166 Change 3435917 on 2017/05/11 by Jeff.Fisher UE-44941 LoadErrors produced in log when opening TM-MotionControllers -LoadErrors:Error: Error /Game/Blueprints/QA_MoCoAll : Can't find file for asset. /Game/NewTextureRenderTarget2D -Removed the component that was referencing that. It was temporary test content, not meant to be submitted. #jira UE-44941 Change 3435938 on 2017/05/11 by Ryan.Vance Incorrect VertexDeclarationRHI for the hidden area mask pso. Change 3437197 on 2017/05/12 by Keli.Hlodversson Remove a irrelevant comment. Change 3437221 on 2017/05/12 by Keli.Hlodversson ... and now actually include the change that was supposed to go in CL#3437197 Remove a irrelevant comment. Change 3439359 on 2017/05/15 by Keli.Hlodversson Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439422 on 2017/05/15 by Keli.Hlodversson Fixes for CL#3439359 after review: Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439599 on 2017/05/15 by Jeff.Fisher UE-44962 Motion controller input not registered in TM-MotionControllers package -Pre-exising blueprint assumed only one textrenderactor in the level, but I added two more. It was working or not depending on the order in which they were constructed. -Now searching up the correct actor by Tag. #jira UE-44962 Change 3441176 on 2017/05/16 by Mike.Beach Can now explicitly hide components from a specific player through the player controller. Change 3441242 on 2017/05/16 by Mike.Beach Making it so any component can invoke a preview viewport in the editor (want it to be extended by scene capture components). Change 3441571 on 2017/05/16 by Mike.Beach Fixing CIS shadowed variable name issue (fallout from CL 3441176). Change 3443223 on 2017/05/17 by Mike.Beach Fixing root of shadowed variable name warning (now only in UT, fallout from 3441176) - renaming new base class variable so it doesn't conflict with third parties either. #jira UE-45120 [CL 3443810 by Mike Beach in Main branch]
2017-05-17 12:45:38 -04:00
}
else
{
switch (InDesc.Dimension)
{
default: checkNoEntry();
case ETextureDimension::Texture2D: Target = (NumSamplesStored > 1) ? GL_TEXTURE_2D_MULTISAMPLE : GL_TEXTURE_2D; break;
case ETextureDimension::Texture2DArray: Target = (NumSamplesStored > 1) ? GL_TEXTURE_2D_MULTISAMPLE_ARRAY : GL_TEXTURE_2D_ARRAY; break;
case ETextureDimension::TextureCubeArray: Target = GL_TEXTURE_CUBE_MAP_ARRAY; break;
case ETextureDimension::TextureCube: Target = GL_TEXTURE_CUBE_MAP; break;
case ETextureDimension::Texture3D: Target = GL_TEXTURE_3D; break;
}
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3443236) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3385304 on 2017/04/07 by Ryan.Vance #jira UEVR-694 GL_TEXTURE_EXTERNAL_OES support hlslcc changes to support the TextureExternal keyword RHI changes to support RHICreateTextureExternal2D Fall back to a standard 2d texture on platforms without extension support Did not implement a shader cache solution as the resource is expected to be shared across processes, so recreating it from the shader cache would be a bad thing Change 3391376 on 2017/04/12 by Ben.Marsh Build: Add additional UE4Game targets for Dev-VR, to catch build failures in plugins that are disabled for games. Change 3392546 on 2017/04/13 by Jeff.Fisher Duplicating in Dev-VR (from Release-4.16) UEVR-734 PSVR sdk 4.5 tracking improvements UEVR-738 PSVR prediction time dynamic adjustment -New tracker profile and camera config to activate ps4 tracking improvements. -Calculating prediction time based on flip timings rather than assuming it will be a particular value. This makes the prediction time nearly perfect as long as we meet framerate and lets it adapt to the timing of when the prediction is made in the frame. -Changed reprojection fliparg to be the frame number, rather than a separate incrementor, so its more useful for debugging. #jira UEVR-734 #review-3391147 Change 3394508 on 2017/04/14 by Jeff.Fisher merge fix ShaderCacheTypes.h Change 3399628 on 2017/04/19 by Jeff.Fisher UEVR-582 PSVR not applying WorldToMeters for position accessor -Changed to apply WorldToMeters scale when we get the position data from PS4Tracker, so that the positions stored in MorpheusHMD are always in world space. #jira UEVR-582 #review-3398683 Change 3404200 on 2017/04/21 by Jeff.Fisher UEVR-239 GearVR headset worn/notworn notifications -Implemented the IHeadMountedDisplay accessor for this, and also hooked up the delegates that fire on PS4. -Implemented the IHeadMountedDisplay accessor for PS4. #jira UEVR-239 #review-3404174 @keli.hloedversson Change 3412688 on 2017/04/27 by Jeff.Fisher UEVR-766 PSVR test level improvements -VR/TM-MotionControllers --Hooked up QA_MoCoAll to the cycle of playercontrllers. --Added instructions for motion tracked device management controls, if the platform supports. -QA_MoCoAll --Switched tracking state colors to tracking spheres, becuase the arrows need to be not rendered in game for some configuration. --Added duplicate motion controller component to pad and another duplicate with disabled low latency tracking. -QA_MoCoDualShock --removed gun controller from this playercontroller, its redundant to the one in QA_MoCoAll -QA_MoCoComponents --world scale from controllers mode added ctrl-w, this is a good way to torture test world scale. #jira UEVR-766 Change 3413801 on 2017/04/28 by Keli.Hlodversson #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) on OculusRift Change 3429305 on 2017/05/08 by Keli.Hlodversson SteamVR Layers don't honor the (absence of) LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO flag Avoid potential divide by zero in the DefaultStereoLayers implementation of the same flag. #jira UE-42855 Change 3429362 on 2017/05/08 by Ryan.Vance Integrating 3416918 for #jira UE-44404 Change 3429426 on 2017/05/08 by Keli.Hlodversson Set up a Test case for Layers in QA Game so that we can determine differences between platforms #jira UEVR-741 Change 3430829 on 2017/05/09 by Keli.Hlodversson Implement World-locked layer position type on SteamVR #jira UE-42940 Also fixes LAYER_FLAG_TEX_CONTINUOUS_UPDATE flag on SteamVR Change 3432895 on 2017/05/10 by Nick.Whiting Skipping recording of analytics if there is no device connected on startup, to prevent false reports when Oculus / SteamVR runtimes are installed on the user's machine #jira UE-37166 Change 3435917 on 2017/05/11 by Jeff.Fisher UE-44941 LoadErrors produced in log when opening TM-MotionControllers -LoadErrors:Error: Error /Game/Blueprints/QA_MoCoAll : Can't find file for asset. /Game/NewTextureRenderTarget2D -Removed the component that was referencing that. It was temporary test content, not meant to be submitted. #jira UE-44941 Change 3435938 on 2017/05/11 by Ryan.Vance Incorrect VertexDeclarationRHI for the hidden area mask pso. Change 3437197 on 2017/05/12 by Keli.Hlodversson Remove a irrelevant comment. Change 3437221 on 2017/05/12 by Keli.Hlodversson ... and now actually include the change that was supposed to go in CL#3437197 Remove a irrelevant comment. Change 3439359 on 2017/05/15 by Keli.Hlodversson Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439422 on 2017/05/15 by Keli.Hlodversson Fixes for CL#3439359 after review: Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439599 on 2017/05/15 by Jeff.Fisher UE-44962 Motion controller input not registered in TM-MotionControllers package -Pre-exising blueprint assumed only one textrenderactor in the level, but I added two more. It was working or not depending on the order in which they were constructed. -Now searching up the correct actor by Tag. #jira UE-44962 Change 3441176 on 2017/05/16 by Mike.Beach Can now explicitly hide components from a specific player through the player controller. Change 3441242 on 2017/05/16 by Mike.Beach Making it so any component can invoke a preview viewport in the editor (want it to be extended by scene capture components). Change 3441571 on 2017/05/16 by Mike.Beach Fixing CIS shadowed variable name issue (fallout from CL 3441176). Change 3443223 on 2017/05/17 by Mike.Beach Fixing root of shadowed variable name warning (now only in UT, fallout from 3441176) - renaming new base class variable so it doesn't conflict with third parties either. #jira UE-45120 [CL 3443810 by Mike Beach in Main branch]
2017-05-17 12:45:38 -04:00
}
}
check(Target != GL_NONE);
// can run on RT.
bCanCreateAsEvicted =
CanDeferTextureCreation()
&& FOpenGL::SupportsCopyImage()
&& InDesc.Flags != TexCreate_None // ignore TexCreate_None
&& !EnumHasAnyFlags((ETextureCreateFlags)CVarDeferTextureCreationExcludeMask.GetValueOnAnyThread(), InDesc.Flags) // Anything outside of these flags cannot be evicted.
&& Target == GL_TEXTURE_2D
&& InDesc.IsTexture2D(); // 2d only.
if (GOGLTextureEvictLogging)
{
UE_CLOG(!bCanCreateAsEvicted, LogRHI, Warning, TEXT("CanDeferTextureCreation:%d, SupportsCopyImage:%d, Flags:%llx Mask:%x, Target:%x"),
bCanCreateAsEvicted, FOpenGL::SupportsCopyImage(), InDesc.Flags, CVarDeferTextureCreationExcludeMask.GetValueOnAnyThread(), Target);
}
bIsPowerOfTwo =
FMath::IsPowerOfTwo(InDesc.Extent.X)
&& FMath::IsPowerOfTwo(InDesc.Extent.Y)
&& FMath::IsPowerOfTwo(InDesc.Depth);
MemorySize = InDesc.CalcMemorySizeEstimate();
// Determine the attachment point for the texture.
if (EnumHasAnyFlags(InDesc.Flags, TexCreate_RenderTargetable | TexCreate_CPUReadback))
{
Attachment = GL_COLOR_ATTACHMENT0;
}
else if (EnumHasAnyFlags(InDesc.Flags, TexCreate_DepthStencilTargetable))
{
Attachment = (InDesc.Format == PF_DepthStencil) ? GL_DEPTH_STENCIL_ATTACHMENT : GL_DEPTH_ATTACHMENT;
}
else if (EnumHasAnyFlags(InDesc.Flags, TexCreate_ResolveTargetable))
{
Attachment = (InDesc.Format == PF_DepthStencil)
? GL_DEPTH_STENCIL_ATTACHMENT
: ((InDesc.Format == PF_ShadowDepth || InDesc.Format == PF_D24)
? GL_DEPTH_ATTACHMENT
: GL_COLOR_ATTACHMENT0);
}
else
{
Attachment = GL_NONE;
}
switch (Attachment)
{
case GL_COLOR_ATTACHMENT0:
check(GMaxOpenGLColorSamples >= (GLint)NumSamplesRendered);
break;
case GL_DEPTH_ATTACHMENT:
case GL_DEPTH_STENCIL_ATTACHMENT:
check(GMaxOpenGLDepthSamples >= (GLint)NumSamplesRendered);
break;
default:
break;
}
}
// Constructor for RHICreateAliasedTexture
FOpenGLTexture::FOpenGLTexture(FOpenGLTexture& Other, const FString& Name, EAliasConstructorParam)
: FRHITexture(FRHITextureCreateDesc(Other.GetDesc(), ERHIAccess::SRVMask, *Name))
, Target (Other.Target)
, Attachment (Other.Attachment)
, MemorySize (0)
, NumSamplesInternal (Other.NumSamplesInternal)
, bIsPowerOfTwo (Other.bIsPowerOfTwo)
, bCanCreateAsEvicted(false)
, bStreamable (Other.bStreamable)
, bCubemap (Other.bCubemap)
, bArrayTexture (Other.bArrayTexture)
, bDepthStencil (Other.bDepthStencil)
, bTileMemDepthBuffer(Other.bTileMemDepthBuffer)
, bAlias (true)
{
RunOnGLRenderContextThread([&]()
{
AliasResources(Other);
});
}
void FOpenGLTexture::AliasResources(FOpenGLTexture& Texture)
{
VERIFY_GL_SCOPE();
check(bAlias && !Texture.bAlias);
// restore the source texture, do not allow the texture to become evicted, the aliasing texture cannot re-create the resource.
if (Texture.IsEvicted())
{
Texture.RestoreEvictedGLResource(false);
}
Resource = Texture.Resource;
}
// Constructor for external resources (RHICreateTexture2DFromResource etc).
FOpenGLTexture::FOpenGLTexture(FOpenGLTextureCreateDesc const& CreateDesc, GLuint InResource)
: FRHITexture (CreateDesc)
, Resource (InResource)
, Target (CreateDesc.Target)
, Attachment (CreateDesc.Attachment)
, MemorySize (CreateDesc.MemorySize)
, NumSamplesInternal (CreateDesc.NumSamplesRendered)
, bIsPowerOfTwo (CreateDesc.bIsPowerOfTwo)
, bCanCreateAsEvicted(false)
, bStreamable (CreateDesc.bStreamable)
, bCubemap (CreateDesc.bCubemap)
, bArrayTexture (CreateDesc.bArrayTexture)
, bDepthStencil (CreateDesc.bDepthStencil)
, bTileMemDepthBuffer(CreateDesc.bTileMemDepthBuffer)
, bAlias (true)
{}
// Standard constructor.
FOpenGLTexture::FOpenGLTexture(FOpenGLTextureCreateDesc const& CreateDesc)
: FRHITexture (CreateDesc)
, Target (CreateDesc.Target)
, Attachment (CreateDesc.Attachment)
, MemorySize (CreateDesc.MemorySize)
, NumSamplesInternal (CreateDesc.NumSamplesRendered)
, bIsPowerOfTwo (CreateDesc.bIsPowerOfTwo)
, bCanCreateAsEvicted(CreateDesc.bCanCreateAsEvicted)
, bStreamable (CreateDesc.bStreamable)
, bCubemap (CreateDesc.bCubemap)
, bArrayTexture (CreateDesc.bArrayTexture)
, bDepthStencil (CreateDesc.bDepthStencil)
, bTileMemDepthBuffer(CreateDesc.bTileMemDepthBuffer)
, bAlias (false)
{
check(IsInRenderingThread());
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
SCOPE_CYCLE_COUNTER(STAT_OpenGLCreateTextureTime);
if (bCanCreateAsEvicted)
{
EvictionParamsPtr = MakeUnique<FTextureEvictionParams>(CreateDesc.NumMips);
}
void* BulkDataPtr = nullptr;
uint64 BulkDataSize = 0;
bool bFreeBulkData = false;
if (CreateDesc.BulkData)
{
if (!ShouldRunGLRenderContextOpOnThisThread(RHICmdList))
{
// If bulk data is provided, and texture initialization is done by the RHI thread, it needs to be copied out of the FResourceBulkDataInterface.
// It is not safe to pass this pointer to the RHI thread, as the interface may have been stack allocated in the renderer.
// @todo: remove this memcpy when the new resource creation API is available.
BulkDataSize = CreateDesc.BulkData->GetResourceBulkDataSize();
BulkDataPtr = FMemory::Malloc(BulkDataSize);
FMemory::Memcpy(BulkDataPtr, CreateDesc.BulkData->GetResourceBulkData(), BulkDataSize);
bFreeBulkData = true;
}
else
{
// Otherwise, initialization will be done on this thread.
// Just use the raw pointer / size as-is.
BulkDataSize = CreateDesc.BulkData->GetResourceBulkDataSize();
BulkDataPtr = const_cast<void*>(CreateDesc.BulkData->GetResourceBulkData());
}
}
RunOnGLRenderContextThread([this, BulkDataPtr, BulkDataSize, bFreeBulkData]()
{
FOpenGLDynamicRHI::Get().InitializeGLTexture(this, BulkDataPtr, BulkDataSize);
if (bFreeBulkData)
{
FMemory::Free(BulkDataPtr);
}
});
UpdateTextureStats(this, true);
PixelBuffers.AddZeroed(CreateDesc.NumMips * (bCubemap ? 6 : 1) * GetEffectiveSizeZ());
if (CreateDesc.BulkData)
{
CreateDesc.BulkData->Discard();
}
}
FOpenGLTexture::~FOpenGLTexture()
{
VERIFY_GL_SCOPE();
FTextureEvictionLRU::Get().Remove(this);
if (!bCanCreateAsEvicted)
{
ReleaseOpenGLFramebuffers(this);
}
DeleteGLResource();
UpdateTextureStats(this, false);
}
void FOpenGLTexture::DeleteGLResource()
{
VERIFY_GL_SCOPE();
QUICK_SCOPE_CYCLE_COUNTER(STAT_OpenGLDeleteGLTextureTime);
if (Resource != 0)
{
switch (Target)
{
case GL_TEXTURE_2D:
case GL_TEXTURE_2D_MULTISAMPLE:
case GL_TEXTURE_3D:
case GL_TEXTURE_CUBE_MAP:
case GL_TEXTURE_2D_ARRAY:
case GL_TEXTURE_CUBE_MAP_ARRAY:
case GL_TEXTURE_EXTERNAL_OES:
FOpenGLDynamicRHI::Get().InvalidateTextureResourceInCache(Resource);
if (!bAlias)
{
FOpenGL::DeleteTextures(1, &Resource);
}
break;
case GL_RENDERBUFFER:
if (!bAlias)
{
glDeleteRenderbuffers(1, &Resource);
}
break;
default:
checkNoEntry();
break;
}
}
}
static inline bool IsAstcLdrRGBAFormat(GLenum Format)
{
return Format >= GL_COMPRESSED_RGBA_ASTC_4x4_KHR && Format <= GL_COMPRESSED_RGBA_ASTC_12x12_KHR;
}
uint32 GTotalTexStorageSkipped = 0;
uint32 GTotalCompressedTexStorageSkipped = 0;
void FOpenGLDynamicRHI::InitializeGLTexture(FOpenGLTexture* Texture, const void* BulkDataPtr, uint64 BulkDataSize)
{
VERIFY_GL_SCOPE();
if (EnumHasAnyFlags(Texture->GetDesc().Flags, TexCreate_Presentable))
return;
// Allocate the GL resource ID
GLuint TextureID;
if (Texture->bTileMemDepthBuffer)
{
check(Texture->Target == GL_RENDERBUFFER);
glGenRenderbuffers(1, &TextureID);
}
else
{
check(Texture->Target != GL_RENDERBUFFER);
glGenTextures(1, &TextureID);
}
Texture->SetResource(TextureID);
if (!Texture->IsEvicted())
{
InitializeGLTextureInternal(Texture, BulkDataPtr, BulkDataSize);
}
else
{
// creating this as 'evicted'.
GTotalTexStorageSkipped++;
EPixelFormat PixelFormat = Texture->GetFormat();
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
bool bIsCompressed = GLFormat.bCompressed;
GTotalCompressedTexStorageSkipped += bIsCompressed ? 1 : 0;
if (BulkDataPtr)
{
check(!GLFormat.bCompressed);
const uint32 BlockSizeX = GPixelFormats[PixelFormat].BlockSizeX;
const uint32 BlockSizeY = GPixelFormats[PixelFormat].BlockSizeY;
uint8* Data = (uint8*)BulkDataPtr;
uint32 MipOffset = 0;
const FRHITextureDesc& Desc = Texture->GetDesc();
// copy bulk data to evicted mip store:
for (uint32 MipIndex = 0; MipIndex < Desc.NumMips; MipIndex++)
{
uint32 NumBlocksX = AlignArbitrary(FMath::Max<uint32>(1, (Desc.Extent.X >> MipIndex)), BlockSizeX) / BlockSizeX;
uint32 NumBlocksY = AlignArbitrary(FMath::Max<uint32>(1, (Desc.Extent.Y >> MipIndex)), BlockSizeY) / BlockSizeY;
uint32 NumLayers = FMath::Max<uint32>(1, Desc.ArraySize);
uint32 MipDataSize = NumBlocksX * NumBlocksY * NumLayers * GPixelFormats[PixelFormat].BlockBytes;
Texture->EvictionParamsPtr->SetMipData(MipIndex, &Data[MipOffset], MipDataSize);
MipOffset += MipDataSize;
}
}
}
}
void FOpenGLDynamicRHI::InitializeGLTextureInternal(FOpenGLTexture* Texture, void const* BulkDataPtr, uint64 BulkDataSize)
{
VERIFY_GL_SCOPE();
GLuint const TextureID = Texture->GetRawResourceName();
const FRHITextureDesc& Desc = Texture->GetDesc();
const GLenum Target = Texture->Target;
const bool bSRGB = EnumHasAnyFlags(Desc.Flags, TexCreate_SRGB);
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[Desc.Format];
if (GLFormat.InternalFormat[bSRGB] == GL_NONE)
{
UE_LOG(LogRHI, Fatal,TEXT("Texture format '%s' not supported (sRGB=%d)."), GPixelFormats[Desc.Format].Name, bSRGB);
}
FOpenGLContextState& ContextState = GetContextStateForCurrentContext();
// Make sure PBO is disabled
CachedBindPixelUnpackBuffer(ContextState, 0);
bool bAllocatedStorage = false;
#if PLATFORM_ANDROID
if (Texture->bTileMemDepthBuffer)
{
glBindRenderbuffer(GL_RENDERBUFFER, TextureID);
glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, Texture->GetNumSamplesRendered(), GL_DEPTH24_STENCIL8, Desc.Extent.X, Desc.Extent.Y);
VERIFY_GL(glRenderbufferStorageMultisampleEXT);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
bAllocatedStorage = true;
}
else
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 4064755) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3873313 by Nick.Atamas Merging CL 3834212 using //UE4/Dev-VR=>//Tasks/UE4/Dev-VR-4.19a Merging CL 3805354, CL 3822769, CL 3827454, CL 3831789 //UE4/Partner-Google-VR/Engine/... to //Tasks/UE4/Dev-VR-4.19a/Engine/... Change 3873330 by Nick.Atamas Merging CL 3835373 using //UE4/Dev-VR=>//Tasks/UE4/Dev-VR-4.19a Merging CL 3777058 //UE4/Partner-Google-VR/Engine/... to //Tasks/UE4/Dev-VR-4.19a/Engine/... and fixing up QAARApp to work with latest ARCore changes. Change 3873791 by Nick.Atamas Merging //UE4/Dev-Main@3866324 to Dev-VR (//UE4/Dev-VR) to get missing files and fixing CIS. Change 3933769 by Keli.Hlodversson Remove unused IStereoRendering::GetCustomPresent #jira UEVR-1083 Change 3935219 by Nick.Atamas QAARApp re-write. Change 3935664 by Mike.Beach Oculus SI 1.23 changes Change 3941505 by Joe.Graf Made the send & recv buffer sizes for the BackChannel plugin configurable Added send & recv counters for tracking the amount of transmission data Change 3944003 by Joe.Graf Added -buildscw to the CMake build command lines for editors to match what XCode is doing on Mac Change 3945189 by Douglas.Copeland Saving Material with Use w/ Static Lighting Flag set to resolve Engine warnings Change 3945245 by Douglas.Copeland Resaving QA_MeshTypes asset to resolve warnings produced by missing info Change 3945266 by Douglas.Copeland Updating TM-HMDNodes LevelBP WallofGets to use PxielDensity instead of ScreenPercentage. Resolving Engine warnings Change 3947785 by Mike.Beach Oculus changes to Android core count - only count usable cores not deadicated to the OS, etc. Change 3951763 by Joe.Graf Fixed thread ordering bug with remote session frame compression Change 3952242 by Joe.Graf Saved about 20-25% of the cpu time for compressing jpeg when performing the cpu swizzle Change 3954571 by Keli.Hlodversson * Add FXRRenderBridge base class containing common code from different CustomPresent implementations. * Create a default implementation of UpdateViewportRHIBridge in FXRRenderTargetManager by adding GetActiveRenderBridge_GameThread. ** The default implementation now handles calling View->SetCustomPresent instead of making it up to the custom present (now XRRenderBridge) implementation (it already had to handle when the custom present was null.) * Remove unused member variable ViewportRHI from RHICustomPresent. #jira UEVR-1081 Change 3954572 by Keli.Hlodversson * Apply XRRenderBridge and XRRenderTargetManager changes to the SteamVR plugin * Move duplicated methods into an already existing BridgeBaseImpl class #jira UEVR-592 Change 3954573 by Keli.Hlodversson * Apply XRRenderBridge refactor to Oculus plugin #jira UEVR-590 Change 3954575 by Keli.Hlodversson * Apply XRRenderBridge refactor to OSVR #jira UEVR-595 Change 3954578 by Keli.Hlodversson * Apply XRRenderBridge refactor to GoogleVR #jira UEVR-594 Change 3954596 by Keli.Hlodversson Add file missing from cl#3954572 Change 3957882 by Jeff.Fisher UEVR-1100 bLockToHmd false doesn't work correctly -CameraComponent can now tell the LateUpdateManager to store, correctly buffered, the fact that we don't want to do late update this frame. DefaultXRCamera checks that flag before applying the late upate to the camera. #jira UEVR-1100 #review-3956168 Change 3957945 by Jeff.Fisher Fix for Oculus begin/end frame problem after XRRenderBridge refactor. -The 'Frame' lifetime in the frame was not long enough, so it was null by the time GetActiveRenderBridge_GameThread was called. NextFrameToRender is the same value, but has a long enough lifetime. #review-3957897 Change 3958760 by Dongsik.Seo Adding UseCameraRotation feature to StereoPanorama plug-in. To enable this feature, use console command SP.UseCameraRotation 7 Simply add numbers to mark axis to use. 1 = Pitch, 2 = Yaw, 4 = Roll 7 means all axis (1+2+4) #review-3958756 @Joe.Conley Change 3959347 by Douglas.Copeland Fixing spelling errors in test displays Change 3964331 by Jason.Bestimt Merging CL 3959979 from 4.19 to Dev-VR + uplugin change from CL 3954046 GoogleARCore Plugin fixes for Unreal 4.19.1 hotfix: Fixed the crash in Acquire/Release UGoogleARCorePointCloud. Fixed the issue that multiple line trace channel doesn't work correctly. Fixed the issue the passthrough camera texture has blue and red channel swapped when building against gles 3.1 Fixed the issue that UGoogleARCorePointCloud::GetPoint doesn't return position in world space. Change 3967485 by Ryan.Vance Removed the exlude rect, we want to clear stencil on the entire surface. Change 3968028 by Zak.Parrish Nuking contents of existing FaceARSample, to be replaced by the one from Release-4.19. Change 3968114 by Zak.Parrish Adding in the new version of FaceARSample from Release-4.19 #rb none Change 3978381 by Mike.Beach Mirroring CL 3969503 from 4.19 Only triggering new Blueprint event, OnMotionControllerUpdated, from the game thread (causing a assert/crash when triggered from the render thread and the component has been destroyed on the main thread). #jira UE-55445 Change 3981160 by Joe.Graf Merged the BackChannel unit test fix over from Owl Change 3981705 by Mike.Beach [WIP] MR Calibration - Expose a config setting that will alter the tracking origin type used to calibrate (eye vs. floor). #jira UE-55220 Change 3981898 by Joe.Graf Added support for Apple hardware accelerated image conversion to JPEG, TIFF, PNG, and HEIF Added a Blueprint latent action to perform the conversion in the background Change 3981910 by Joe.Graf WIP AR texture support so that other systems can interact with the camera data Change 3982102 by Joe.Graf Pull request: Update CMakefileGenerator.cs for CLion Fixed an issue in the PR and added cleanup for the macro errors that result in FOO()= definitions #jira: UE-57103 GitHub #4619 Change 3982883 by Joe.Graf Added a CLionGenerator for consistency Fixed editor preferred source code accessor parsing in the project file generator Added code to detect the bad assumption of the project name always being UE4 and stripped that off in the CLionSourceCodeAccessor #jira UE-54801 Change 3983687 by Joe.Graf Fixed the lack of platform checks for adding a framework in the Apple image utils plugin causing a Switch compile error Change 3984325 by Jeff.Fisher UEVR-1141 PSVR - fix morpheus on pc render target scaling -Hard coding the target size. Perhaps the old method broke with the pixel density change. #review-3983261 Change 3984563 by Joe.Graf Temporarily disabled ConvertToHEIF on Mac until the build machines are updated to XCode 9.3 Change 3985213 by Zak.Parrish Removing a ton of excess art assets that were taking up lots of space and possibly throwing warnings. We weren't going to use them anyway. #rb none Change 3985577 by Joe.Graf WIP support for the Apple Vision API to perform computer vision tasks on images Change 3985654 by Joe.Graf Fixed missing forward declaration hidden by unity files Change 3990596 by Mike.Beach Adding a delegate for handling when the active XR system modifies the tracking space origin, and a API function for getting a transform between floor and eye space. #jira UE-55220 Change 3990788 by Mike.Beach Attempted CIS fix (fallout from CL 3990596) Change 3990824 by Ryan.Vance Re-submitting 4.19.1 hotfox 3968537 Change 3995804 by Jeff.Fisher Merging cl 3995785 //UE4/Dev-VR-Seal/Engine/Source/... to //UE4/Dev-VR/Engine/Source/... UEVR-1148 bLockToHmd change breaking qagame entry level xr camera behavior -Fixing late update when no camera component is in use. -The camera component's bLockToHMD==false behavior is supposed to be that hmd motion is ignored, meaning we should not do a late update. This behavior is being applied TO the XRCamera system FROM the camera component, but the camera component can go away or be switched at any time. We want the default to be do apply hmd motion and late update, so disabling late update needs to be a positive setting applied each frame. #review-3995764 Change 3999842 by Nick.Whiting Exposing Apple ARKit function library as public for our buddies down under. Change 4005541 by Joe.Graf UE-57541 Blacklisted TVOS since it also defines PLATFORM_IOS as 1 #jira UE-57541 Change 4006308 by Jason.Bestimt #DEV_VR - Hopeful fix for possible unity issue Change 4006543 by Joe.Graf Added code to be more correct on setting face blendshapes Change 4007508 by Jason.Bestimt #LUMIN - Adjusting automation tests. - Moved QA specific content test into QA Game - Wrapped controller not found to only happen on device Change 4007515 by Jason.Bestimt #LUMIN - Disabling privilege warning except on device Change 4007552 by Jason.Bestimt #LUMIN - Wrapping LuminTargetPlatform internals that require WITH_ENGINE Change 4008585 by Joe.Graf Added virtual curves for the head rotation information from the FaceAR's face tracking for streaming via LiveLink #jira: UE-57830 Change 4008604 by Mike.Beach MR - Making the chroma key material easier to customize & switch out. Updating the calibration to let you set whatever params you've exposed in the video processing material (removing hardcoded params for old chroma keying material). #jira UEVR-1153 Change 4009396 by Jason.Bestimt #DEV-VR - Removing warning about stat on different threads (CL 4009124) Change 4009514 by Joe.Graf Added a weighted moving average method to the modify curve anim node Change 4010125 by Jason.Bestimt #DEV-VR - Integrating 0.12 changes from Dev-VR-Seal to Dev-VR Change 4010434 by Jason.Bestimt #DEV-VR - Fix for Lumin Haptic Test include Change 4010945 by Jeff.Fisher QAHapticTests build fix -removed unused bad include Change 4011002 by Nick.Atamas Fixed Android compilation. Change 4011220 by Nick.Atamas - Adding visualization for boundary polygons. - Adding support for vertical planes. Change 4011298 by Mike.Beach MR - Revamping the VideoProcessing/ChromaKeying material so that it: 1) Better extracts luminance from the image 2) Utilizes despill to remove chroma bleed from the scene 3) Leverages the generated despill mask to add back in a faux bounce #jira UEVR-1153 Change 4011858 by Keli.Hlodversson Move ExecuteOn(RHI|Render)Thread from Oculus plugin into XRThreadUtils.{h|cpp} inside the HMD module Use TFunction and TFunctionRef instead of std::function as arguments. (Depends on the changes in CL#3987166: Allow overloading of functions which take TFunctions or TFunctionRefs with mutually exclusive signatures.) -- Ref for methods that guarantee the function has been invoked before returning, TFunction for *_NoWait, as the function may not get execured until later when RHI is in a separate thtread and not bypassed. #jira UE-57380 Change 4011956 by Keli.Hlodversson Fix missing includes after CL#4011858 Change 4012096 by Joe.Graf Disabled building AppleVision on Mac until there's a good solution for older Mac OSes Change 4012294 by Jason.Bestimt #DEV-VR - Adding dependency on LuminRuntimeSettings to MagicLeap module. Hopefully, this will fix the generated files not being found Change 4012390 by Jason.Bestimt #DEV-VR - Misc fixes for static code analysis issues - Guards around GEngine usage - Fix from Rolando for uint32 -> uint64 + shifting warning - Redundant if checks Change 4013426 by Jason.Bestimt #DEV-VR - Guarding RestoreBaseProfile so we don't crash on exit #JIRA: UE-57960 Change 4014661 by Ryan.Vance Initial support for omni-directional stereo captures. https://developers.google.com/vr/jump/rendering-ods-content.pdf Change 4015561 by Jason.Bestimt #DEV-VR - Moving MLSDK out of thirdparty directory to fix static code analysis issue Change 4016202 by Jason.Bestimt #DEV-VR - Integrated CL 2685 from Seal depot #JIRA: UEVR-1157 Change 4016448 by Jason.Bestimt #DEV-VR - Adding LuminRuntimeSettings as dependent modules for anything that references the MLSDK Change 4016457 by Ryan.Vance #jira UE-58018 Cleaning up compiler errors/warnings. Change 4017246 by Jason.Bestimt #DEV-VR - Potential fix for UE-58043 where metal asserts that it should be in the render thread rather than either the render thread OR RHI Thread #JIRA: UE-58043 Change 4018571 by Joe.Graf Added a remapping of curve values in a range to the modify curve anim node Change 4018991 by Joe.Graf Wrapped vertical plane detection in a if iOS 11.3 check since ARKit 1.5 is only availabe from 11.3 on #jira: UE-57999 Change 4019068 by Joe.Graf Changed how Apple Vision support is enabled in code #jira: UE-57552 Change 4019194 by Joe.Graf Added a console command to change where Face AR is publishing LiveLink curve data "LiveLinkFaceAR SendTo=192.168.1.1" Change 4019648 by Keli.Hlodversson Work around build failures caused by missing virtual destructor warnings. Reverting back to Oculus' original method of implementing own RHICommand wrapper around TFunctions and TFunctionRefs (using overloaded inline functions and templates to reduce code duplication.) Change 4019871 by Joe.Graf Changed the __IPHONE_11_3 to the raw numeric value Change 4020121 by Keli.Hlodversson Fix parameter types to match header declarations. Change 4020127 by Keli.Hlodversson Remove dllimport/export macros from cpp file. Change 4020621 by Joe.Graf Wrapped the Apple ARKit plane geometry building in a #if IOS_11_3 check Change 4020910 by Joe.Graf Refactored how ARKit support #define to make it easy to wrap individual features by ARKit version Change 4020952 by Joe.Graf Added checks to make sure PLATFORM_IOS and PLATFORM_TVOS are defined to 0 on non-Apple platforms when checking for ARKit Change 4021116 by Jason.Bestimt #DEV-VR - Integrating CL 4005915 from Dev-Core to remove plugin modules that aren't supported on target platform Change 4021320 by Joe.Graf Fixed warnings resulting from unity builds hiding them Change 4021738 by Chad.Garyet - adding lumin filters - changing defaults for platforms back to true, this was brought over erroneously. #jira none #ROBOMERGE: Dogma, Nightlies Change 4021898 by Chad.Garyet added missing bits from the ue4main script #jira none #ROBOMERGE: Dogma, Nightlies Change 4022583 by Joe.Graf Added functions for checking ARKit version availability at runtime Change 4022610 by Joe.Graf Added checks for ARKit 1.0 availability when creating the AR session to prevent calling invalid selectors on older iOSes Change 4022616 by Joe.Graf Added support for enabling the ARKit 1.5 autofocus setting Change 4022650 by Joe.Graf Defaulted autofocus for AR to on Change 4023026 by Joe.Graf Changed the ARKit video overlay to use the new availability api Change 4023124 by Joe.Graf Switched another version check in the ARKit overlay code to use the faster version Change 4023489 by Ethan.Geller [Dev-VR] #jira none fix AudioMixerModuleName for Lumin. #fyi nick.whiting, jason.bestimt Change 4023995 by Nick.Atamas Properly deprecated the bitfield for plane detection mode. #jira UE-57842 Change 4024992 by Jason.Bestimt #DEV-VR - Adding SupportPlatforms to MagicLeapAnalytics plugin Change 4025702 by Jason.Bestimt #DEV-VR - Fix for loading ML libraries even when the MLSDK is not present #JIRA: UE-58033 Change 4026639 by Mike.Beach Removing innocuous Oculus error that did not match up with the rest of the code - it is handled/acceptable when Frame_RenderThread has been reset. #jira UE-58001 Change 4026949 by Mike.Beach MR - Making a few fixes to the lens undistortion and how it interacts with the MRC component... - Switching to a 16bit displacement map instead of a 32bit UV map (updating the materials accordingly) - Using the OpenCV focal ratio to scale the aspect ratio to avoid stretching from the undistortion - Adding CVar commands to enable/disable pieces of the undistortion - Changing the default undistortion cropping to be uncropped - Removing the need for the 'EnableMapping' material parameter #jira UE-55195 Change 4027147 by Jason.Bestimt #DEV-VR - Fix for UE-58043 (more call sites where it should be Render OR RHI thread) #JIRA: UE-58043 Change 4027301 by Mike.Beach Updating the MRCalibration project's ini so it doesn't error on packaging. Change 4027469 by Mike.Beach MR Calibration - Setting StartInVR to true, so when we package the app, we don't have to manually enable it. Change 4027957 by Mike.Beach As part of renaming the MR plugin, first renaming the root folder to be MixedRealityCaptureFramework. #jira UE-57782 Change 4029182 by Keli.Hlodversson Revert back to not enqueuing RHI tasks when RHI is not on a separate thread. Oculus code depends on being able to call ExecuteOnRHIThread from code potentially called from within other calls to ExecuteOnRHIThread. #jira UE-58079 Change 4029687 by Dragan.Jerosimovic Boy rig and pose asset mb files, maps and masks Change 4030059 by Mike.Beach As part of renaming the MR plugin, renaming the inner module to be MixedRealityCaptureFramework. #jira UE-57782 Change 4030296 by Charles.Egenbacher #LUMIN Copying from Dev-Incoming-Staging to Dev-VR Change 4030593 by Jason.Bestimt #DEV-VR - Merging olaf test maps to Dev-VR Change 4031042 by Keli.Hlodversson Allow executing ExecuteOnRHIThread* on the RHI thread. Enables simplifying destructors that can either be invoked on the RHI or Render thread. #jira UE-58239 Change 4031046 by Keli.Hlodversson Use the new XRThreadUtils functions in the HMD module for executing tasks on the RHI thread #jira UE-58238 Change 4032593 by Mike.Beach As part of renaming the MR plugin, renaming the inner module to be MixedRealityCaptureCalibration. #jira UE-57782 Change 4033911 by Jason.Bestimt #DEV-VR - Fix to LuminToolChain to allow it use a custom strip executable (android instead of gcc) Change 4034087 by Mike.Beach Renaming the MR plugin to be the 'MixedRealityCaptureFramework' plugin. #jira UE-57782 Change 4034253 by Joe.Graf Made the Apple Vision plugin use version checking consistent with ARKit Change 4034543 by Joe.Graf Added availability checks for the Apple Image Utils plugin similar to ARKit #jira: UE-57541 Change 4034548 by Joe.Graf Fixed the implicit conversion in the head rotation curves from the face ar feed causing the values to be 0 Change 4034577 by Jason.Bestimt #DEV-VR - Removing MAC Custom Metal present (fixes Mac with -game rendering all black) Change 4034605 by zak.parrish Checking in test case for head rotation tracking - minor temporary change to AnimBP #rb none Change 4034686 by Jason.Bestimt #DEV-VR - Integrating (most of) CL 3980919 to disable instances of deprecation warnings caused by building for ios11 #JIRA: UE-58046 Change 4034799 by Joe.Graf Added base types for detecting images in a AR session Change 4034820 by Joe.Graf Added a friendly name to UARCandidateImage objects Change 4035010 by Joe.Graf Added support for handling ARImageAnchor notifications from ARKit Change 4035355 by Mike.Beach [WIP] MR - Renaming some classes to reflect the plugin's new name. #jira UE-57782 Change 4035464 by Joe.Graf Added orientation to the ARCandidateImage object to pass to the detection system Change 4035524 by Mike.Beach [WIP] MR - More renaming of some classes to better match the plugin's new name. #jira UE-57782 Change 4035606 by Mike.Beach [WIP] MR - More renaming of some classes to better match the plugin's new name. #jira UE-57782 Change 4035918 by Mike.Beach [WIP] MR - Renaming the MrcFramework module's source files to better match the plugin's new name. #jira UE-57782 Change 4035976 by Mike.Beach [WIP] MR - Renaming some more files and classes to better match the MRC framework's new name. #jira UE-57782 Change 4036044 by Ryan.Vance #jira UEVR-377 Adding support for ISR Translucency. Change 4036069 by Ryan.Vance We can remove the last word PrimitiveVisibilityMap masking for ISR since the maps are always the same size between views. Change 4036073 by Chance.Ivey Fixed select blocks on LuminSamplePawn and GesturesAndTotem map to reflect recent changes. Fixes #JIRA UE-58328 #rb none Change 4036307 by Mike.Beach [WIP] MR - Renaming the MRC calibration files to better match the MRC framework's new name. #jira UE-57782 Change 4036314 by Mike.Beach [WIP] MR - Renaming some more calibration classes to better match the MRC framework's new name. #jira UE-57782 Change 4036319 by Charles.Egenbacher #LUMIN this is an out-of-date version of the lumin sample. Nuking. Change 4036396 by Charles.Egenbacher #LUMIN Adding the up to date version of the LuminSample. Change 4036485 by Sorin.Gradinaru UE-57773 Disable Thermals Message #4.20 #iOS Add in the Remote Session App BP an Execute Console Command node immediately after Event Begin Play, disabling all on-screen messages, for all builds. Change 4036695 by Jason.Bestimt #DEV-VR - Adding Lumin case to PrecompileTargetType check Change 4037110 by Jason.Bestimt #DEV-VR - Extra deprecated macro guards around HarfBuzz includes #JIRA: UE-58046 Change 4037443 by Jason.Bestimt #DEV-VR - Merging CL 4028003 from Partners-Google Change 4037490 by Jason.Bestimt #DEV-VR - Integrating CL 4028922 from Partners-Google (+ assignment guarding) Change 4037691 by Jason.Bestimt #DEV-VR - Swapping order of comparrison operator to deal with const error Change 4037892 by Joe.Graf Added UTexture2D to CGImage conversion in Apple Image Utils plugin Change 4037894 by Joe.Graf Changed the name of a property to make it clearer as to what it is and to have fewer things named similar in the same system Change 4037901 by Joe.Graf Added support for configuring which images you'd like detected during a AR session Change 4037906 by Jason.Bestimt #DEV-VR - Fixing buckled logic for =operator (derp) Change 4038293 by Mike.Beach [WIP] MR - Moving the calibration setup/level/content into its own project, and out of the MR plugin. #jira UE-57782 Change 4038403 by Joe.Graf Added the name from the candidate image when creating the Apple side representation Change 4038488 by Mike.Beach [WIP] MR Calibration - Moving calibration specific files to the MRCalibration project, out of the plugin (followup to CL 4038293). This makes the MRCalibration project a code project now. #jira UE-57782 Change 4038776 by Chance.Ivey Updates to Fix for Gestures change. Affects #JIRA UE-58328, though other non-content issues may cause packaging to fail #rb none #fyi Nick.Whiting Change 4038877 by Mike.Beach [WIP] MR - Renaming assets to better match the new plugin name. #jira UE-57782 Change 4039097 by Joe.Graf Fixed the public include path warnings in the Apple* plugins I added Change 4039106 by Joe.Graf Worked around a bad compile time assert that blocked valid FString::Printf debug code Change 4039209 by Jeff.Fisher Fixing one build script paths Change 4039275 by Jeff.Fisher More include path fixes. Change 4039415 by Joe.Graf Added support for remote session sending AR camera image data to be rendered on the host like we do for AR on device Change 4039471 by Joe.Graf Added a file I missed when adding to the remote session plugin Change 4039473 by Joe.Graf #ifdef-ed some code out until the linkage can be fixed Change 4040249 by Mike.Beach [WIP] MR - Moving some more asset files that aren't needed for the MRC plugin #jira UE-57782 Change 4040365 by Mike.Beach Fixing a compiler issue in the MRCalibration project, since moving MRC files there (WITH_OPENCV is not defined for the project). #jira UE-57782 Change 4040455 by Mike.Beach Moving the few remaining methods that were calibration specific, sprinkled through the MRC plugin. #jira UE-57782 Change 4041404 by Mike.Beach Fixing an issue with BP async nodes - making it so their wrapped function can be renamed and redirected. Change 4041406 by Mike.Beach MR - Splitting the Mrc video util library so that the BP functions needed for calibration aren't exposed to users. #jira UE-57782 Change 4042110 by Jason.Bestimt #DEV-VR - Stopping spew for ML eye tracking when not on platform #JIRA: UE-58365 Change 4042407 by Joe.Graf Disabled HEIF compression on Mac #jira: UE-58479 Change 4042727 by Jason.Bestimt #DEV-VR - Fix for Android compiling without version 24 Change 4042861 by Olaf.Piesche #jira UE-57784 Change 4043105 by Mike.Beach Exposing a way for programmers to strip save game headers from save data, and get to the tagged object serialization portion. #jira UE-58389 Change 4043120 by Mike.Beach MR - Loading the base save data, even if we're unable to fully construct the original save object class. #jira UE-58389 Change 4043401 by Mike.Beach New Oculus poke-a-hole material, in support on SI 1.25. Checking in to alleviate QA contention for testing the rest of SI 1.25. #jira UEVR-1143 Change 4043424 by Mike.Beach Oculus SI 1.24/1.25 - Engine rendering changes #jira UEVR-1143 Change 4043495 by Mike.Beach CIS fix - Missing files needed for the Oculus SI 1.24/25 Vulkan changes. #jira UEVR-1143 Change 4043642 by Zak.Parrish Changes to FaceARSample: added in support for JoeG's smoothing algorithm, also refactored calibration to use the new Modify Curves node. Added some more comments to the AnimBp to make it easier to read. #rb none Change 4045638 by Zak.Parrish Some minor updates to FaceARSample content. Mostly refactoring for new ModifyCurve stuff. Change 4046003 by Jason.Bestimt #DEV-VR - Fix for bEnableAlphaChannelInPostProcessing reading in as false for LuminSample bEnableAlphaChannelInPostProcessing translates to r.PostProcessing.PropagateAlpha in ini files #JIRA: UE-58523 Change 4046548 by Jules.Blok Fix SetInstancedEyeIndex() ignoring the left eye. #jira UE-54044 Change 4046859 by zak.parrish Checking in the new rig from 3Lateral - this prevents the eyelashes from separating Change 4047060 by Nick.Whiting Wrapping -norhithread in PLATFORM_LUMIN to prevent the ML plugin from always disabling RHI threading. #jira UEVR-1192 Change 4047667 by Mike.Beach CIS fix - removing uneeded line from bad merge. Change 4047673 by Mike.Beach More CIS fixes for fallout from recent rendering merge. Change 4048227 by Rolando.Caloca VR - vk - Some Vulkan merge conflicts resolved Change 4048421 by Jason.Bestimt #DEV-VR - Converting OwnerName to EventName in UpdateSceneCaptureContent_RenderThread call Change 4048423 by Jason.Bestimt #DEV-VR - Fixing mediandk version check Change 4048452 by Rolando.Caloca VR - Merge fix Change 4048530 by Rolando.Caloca VR - Merge fix Change 4048607 by Jason.Bestimt #DEV-VR - Probable repair of Mr Mesh post merge Change 4048794 by Rolando.Caloca VK - Fix mobile from merge Change 4048972 by Jeff.Fisher Fixing MeshReconstructor merge problems. Change 4049969 by Ryan.Vance Fixing missing shader assert. Change 4050831 by Ryan.Vance Merge clean up. This is still needed to build w/ vulkan on Lumin. Change 4050854 by Ryan.Vance Merge clean up. We need GetAllocationHandle for the ML Vulkan custom present sRGB workaround. Change 4051495 by Jason.Bestimt #DEV-VR - Adding Android, Quail, Linux vulkan include clauses Change 4052528 by Zak.Parrish Changing defaultEngine.ini for the higher res version of Gremlin Change 4052880 by Ryan.Vance Merge clean up. Now with more Lumin #jira UE-58645 Change 4052991 by zak.parrish Update to FaceTrackingMap2 for proper camera positioning Change 4053139 by Nick.Whiting Fixing Lumin Vulkan platform header Change 4053352 by Mike.Beach On PC (in editor), not enabling ML stereo by default. Waiting for it to be enable by the EnableStereo() call (like we do for Oculus/SteamVR). #jira UE-57991 Change 4053644 by Nick.Whiting Fix for build break by wrapping bStereoDesired in !PLATFORM_LUMIN Change 4054329 by Jason.Bestimt #DEV-VR - Resave of GoogleARCorePassthroughCameraMaterial.uasset #JIRA: UE-58689 Change 4054785 by Mike.Beach Fixing a MRCalibration BP compilation error from the latest merge - was using a deprecated variable which was no longer exposed to BPs. Change 4055466 by Jules.Blok Suppress SteamVR submission errors after they've been logged once. Change 4055500 by Jason.Bestimt #DEV-VR - MrMeshComponent fix for unsupported pixel format #JIRA: UE-58759 Change 4055761 by Ryan.Vance #jira UE-58729 There's a single frame where the TLV textures are not initialized when using FCanvasTileRendererItem on startup. Change 4056008 by Mike.Beach Fixing bad merge from Main. Change 4056616 by Nick.Whiting Changing UBT configs to use Lumin-specific config files #jira UE-58760 Change 4056969 by Keli.Hlodversson MRCalibration: Set r.SceneRenderTargetResizeMethod to "Grow" to avoid cycling the scene render target size on every frame causing a flicker #jira UE-58191 Change 4057356 by Jason.Bestimt #DEV-VR - Guard around JNI function for Lumin Change 4059353 by Nick.Whiting Fix for shadow variable warnings on Linux #jira UE-58843 Change 4060158 by Rolando.Caloca DVR - vk - Temporarily add backbuffer delay/extra copy blit on android #jira UE-58859 Change 4060432 by Mike.Beach Fix for shadow variable warnings on Linux #jira UE-58843 Change 4060520 by Rolando.Caloca VR - Proper fix for r.Vulkan.DelayAcquireBackBuffer=0 - Restore Android to not delay #jira UE-58859 Change 4060587 by Nick.Whiting Fix for minimum iOS version being set to iOS 8 on MRCalibration, which was causing CIS warnings #jira UE-58762 Change 4061277 by Jeff.Fisher UE-58861 //UE4/Dev-VR - Compile UE4Game Lumin - ERROR: MLSDK is not specified; cannot use Lumin toolchain. -Overriding HasAnySDK to setup the MLSDK. Change 4061308 by Jason.Bestimt #DEV-VR - Work around of UE-58864 crashing when mousing over project launcher with only a Lumin device plugged in #JIRA: UE-58864 Change 4062111 by Ryan.Vance #jira UE-58875 Fixing audio compilation failure. Change 4064091 by Jason.Bestimt #DEV-VR - Disabling ML Plugin with the editor when bIsVDZIEnabled is off #JIRA: UE-58954 Change 4064554 by Jason.Bestimt #DEV-VR - Removing ML haptic tests when not on the platform #JIRA: UE-58966 Change 4064755 by Jeff.Fisher UE-58970 Dev-VR - Incremental UE4Editor Linux - Referenced directory 'D:\Build\AutoSDK\HostWin64\Lumin\0.12\lib\linux64' does not exist. -Removed linux from magicleap plugin whitelists, we have no sdk for linux. #review-4064614 #jira UE-58970 [CL 4064889 by Mike Beach in Main branch]
2018-05-10 14:17:01 -04:00
#endif
{
// Use a texture stage that's not likely to be used for draws, to avoid waiting
CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Target, TextureID, 0, Desc.NumMips);
if((GLFormat.bBGRA && !EnumHasAnyFlags(Desc.Flags, TexCreate_RenderTargetable))
#if !PLATFORM_ANDROID
|| (GLFormat.InternalFormat[0] == GL_RGB5_A1)
#endif
)
{
glTexParameteri(Target, GL_TEXTURE_SWIZZLE_R, GL_BLUE);
glTexParameteri(Target, GL_TEXTURE_SWIZZLE_B, GL_RED);
}
if (Texture->GetNumSamplesStored() == 1)
{
if (Target == GL_TEXTURE_EXTERNAL_OES || !FMath::IsPowerOfTwo(Desc.Extent.X) || !FMath::IsPowerOfTwo(Desc.Extent.Y))
{
glTexParameteri(Target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(Target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
if (FOpenGL::SupportsTexture3D())
{
glTexParameteri(Target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
}
}
else
{
glTexParameteri(Target, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(Target, GL_TEXTURE_WRAP_T, GL_REPEAT);
if (FOpenGL::SupportsTexture3D())
{
glTexParameteri(Target, GL_TEXTURE_WRAP_R, GL_REPEAT);
}
}
glTexParameteri(Target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(Target, GL_TEXTURE_MIN_FILTER, Desc.NumMips > 1 ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST);
if (FOpenGL::SupportsTextureFilterAnisotropic())
{
glTexParameteri(Target, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1);
}
}
glTexParameteri(Target, GL_TEXTURE_BASE_LEVEL, 0);
// Do not use GL_TEXTURE_MAX_LEVEL if external texture
if (Target != GL_TEXTURE_EXTERNAL_OES)
{
glTexParameteri(Target, GL_TEXTURE_MAX_LEVEL, Desc.NumMips - 1);
}
TextureMipLimits.Add(TextureID, TPair<GLenum, GLenum>(0, Desc.NumMips - 1));
if (FOpenGL::SupportsASTCDecodeMode())
{
if (IsAstcLdrRGBAFormat(GLFormat.InternalFormat[bSRGB]))
{
glTexParameteri(Target, TEXTURE_ASTC_DECODE_PRECISION_EXT, GL_RGBA8);
}
}
if (Target != GL_TEXTURE_EXTERNAL_OES)
{
auto EnumerateSubresources = [&](void const* Data, TFunctionRef<bool(GLenum Target, uint32 SizeX, uint32 SizeY, uint32 SizeZ, uint32 MipIndex, uint32 ArraySlice, void const* MipSliceData, uint32 MipSliceSize)> Callback)
{
struct FScopedPackAlignment
{
FScopedPackAlignment() { glPixelStorei(GL_UNPACK_ALIGNMENT, 1); }
~FScopedPackAlignment() { glPixelStorei(GL_UNPACK_ALIGNMENT, 4); }
} PackAlignment;
uint64 DataOffset = 0;
for (uint32 MipIndex = 0; MipIndex < Desc.NumMips; ++MipIndex)
{
for (uint32 ArraySlice = 0; ArraySlice < Desc.ArraySize; ++ArraySlice)
{
for (uint32 FaceIndex = 0; FaceIndex < (Desc.IsTextureCube() ? 6u : 1u); ++FaceIndex)
{
const uint32 MipPixelSizeX = FMath::Max<uint32>(1u, Desc.Extent.X >> MipIndex);
const uint32 MipPixelSizeY = FMath::Max<uint32>(1u, Desc.Extent.Y >> MipIndex);
const uint32 MipPixelSizeZ = FMath::Max<uint32>(1u, Desc.Depth >> MipIndex);
const GLenum CurrentTarget = Target == GL_TEXTURE_CUBE_MAP
? GL_TEXTURE_CUBE_MAP_POSITIVE_X + FaceIndex
: Target;
if (Data)
{
const uint32 MipBlockSizeX = FMath::DivideAndRoundUp<uint32>(MipPixelSizeX, GPixelFormats[Desc.Format].BlockSizeX);
const uint32 MipBlockSizeY = FMath::DivideAndRoundUp<uint32>(MipPixelSizeY, GPixelFormats[Desc.Format].BlockSizeY);
const uint32 MipBlockSizeZ = FMath::DivideAndRoundUp<uint32>(MipPixelSizeZ, GPixelFormats[Desc.Format].BlockSizeZ);
const uint32 MipNumBlocks = MipBlockSizeX * MipBlockSizeY * MipBlockSizeZ;
const uint32 MipSize = MipNumBlocks * GPixelFormats[Desc.Format].BlockBytes * Desc.ArraySize;
if (!Callback(CurrentTarget, MipPixelSizeX, MipPixelSizeY, MipPixelSizeZ, MipIndex, ArraySlice, Data, MipSize))
return;
DataOffset += MipSize;
if (DataOffset >= BulkDataSize)
{
// Reach the end of bulk data. Only pass nullptr to the callback for any subsequent mips / slices
Data = nullptr;
}
}
else
{
if (!Callback(CurrentTarget, MipPixelSizeX, MipPixelSizeY, MipPixelSizeZ, MipIndex, ArraySlice, nullptr, 0))
return;
}
}
}
}
};
// Create the texture resource
switch (Target)
{
default: checkNoEntry();
case GL_RENDERBUFFER:
case GL_TEXTURE_2D:
case GL_TEXTURE_CUBE_MAP:
// Try to create the texture using immutable storage
if (FOpenGL::TexStorage2D(Target, Desc.NumMips, GLFormat.InternalFormat[bSRGB], Desc.Extent.X, Desc.Extent.Y, GLFormat.Format, GLFormat.Type, Desc.Flags))
{
// Texture created with immutable storage. Now fill in the bulk data.
bAllocatedStorage = true;
if (BulkDataPtr)
{
EnumerateSubresources(BulkDataPtr, [&](GLenum CurrentTarget, uint32 MipSizeX, uint32 MipSizeY, uint32 MipSizeZ, uint32 MipIndex, uint32 ArraySlice, void const* MipSliceData, uint32 MipSliceSize)
{
// Stop when there's no more bulk data
if (MipSliceData == nullptr)
return false;
if (GLFormat.bCompressed)
{
glCompressedTexSubImage2D(
CurrentTarget,
MipIndex,
0, 0, // X/Y offset
MipSizeX, MipSizeY,
GLFormat.Format,
MipSliceSize,
MipSliceData);
}
else
{
glTexSubImage2D(
CurrentTarget,
MipIndex,
0, 0, // X/Y offset
MipSizeX, MipSizeY,
GLFormat.Format,
GLFormat.Type,
MipSliceData);
}
return true;
});
}
}
else if (GLFormat.bCompressed && !BulkDataPtr)
{
// Compressed textures created without using the TexStorage functions cannot be allocated via TexImage without bulk data.
// Do nothing here. Texture memory will be allocated when the renderer locks/unlocks the mips for writing.
}
else
{
// Failed to create immutable storage. Fall back to the standard TexImage functions.
// This both allocates the memory and fills in the bulk data simultaneously.
EnumerateSubresources(BulkDataPtr, [&](GLenum CurrentTarget, uint32 MipSizeX, uint32 MipSizeY, uint32 MipSizeZ, uint32 MipIndex, uint32 ArraySlice, void const* MipSliceData, uint32 MipSliceSize)
{
if (GLFormat.bCompressed)
{
glCompressedTexImage2D(
CurrentTarget,
MipIndex,
GLFormat.InternalFormat[bSRGB],
MipSizeX, MipSizeY,
0,
MipSliceSize,
MipSliceData);
}
else
{
glTexImage2D(
CurrentTarget,
MipIndex,
GLFormat.InternalFormat[bSRGB],
MipSizeX, MipSizeY,
0,
GLFormat.Format,
GLFormat.Type,
MipSliceData);
}
// Always continue iterating to allocate all mips/slices.
return true;
});
}
break;
case GL_TEXTURE_2D_ARRAY:
case GL_TEXTURE_CUBE_MAP_ARRAY:
case GL_TEXTURE_3D:
{
bAllocatedStorage = true; // Always supported if 3D textures are supported.
const uint32 SizeZ =
Target == GL_TEXTURE_3D ? Desc.Depth :
Target == GL_TEXTURE_CUBE_MAP_ARRAY ? Desc.ArraySize * 6 :
Desc.ArraySize;
FOpenGL::TexStorage3D(Target, Desc.NumMips, GLFormat.InternalFormat[bSRGB], Desc.Extent.X, Desc.Extent.Y, SizeZ, GLFormat.Format, GLFormat.Type);
// Texture created with immutable storage. Now fill in the bulk data.
if (BulkDataPtr)
{
EnumerateSubresources(BulkDataPtr, [&](GLenum CurrentTarget, uint32 MipSizeX, uint32 MipSizeY, uint32 MipSizeZ, uint32 MipIndex, uint32 ArraySlice, void const* MipSliceData, uint32 MipSliceSize)
{
// Stop when there's no more bulk data
if (MipSliceData == nullptr)
return false;
if (GLFormat.bCompressed)
{
glCompressedTexSubImage3D(
CurrentTarget,
MipIndex,
0, 0, ArraySlice, // X/Y/Z offset
MipSizeX, MipSizeY, MipSizeZ,
GLFormat.Format,
MipSliceSize,
MipSliceData);
}
else
{
glTexSubImage3D(
CurrentTarget,
MipIndex,
0, 0, ArraySlice, // X/Y/Z offset
MipSizeX, MipSizeY, MipSizeZ,
GLFormat.Format,
GLFormat.Type,
MipSliceData);
}
return true;
});
}
}
break;
case GL_TEXTURE_2D_MULTISAMPLE:
{
checkf(BulkDataPtr == nullptr, TEXT("Multisample textures cannot be created with initial bulk data."));
// Try to create an immutable storage texture and fallback if it fails
const bool FixedSampleLocations = true;
if (FOpenGL::TexStorage2DMultisample(Target, Texture->GetNumSamplesStored(), GLFormat.InternalFormat[bSRGB], Desc.Extent.X, Desc.Extent.Y, FixedSampleLocations))
{
bAllocatedStorage = true;
}
else
{
FOpenGL::TexImage2DMultisample(Target, Texture->GetNumSamplesStored(), GLFormat.InternalFormat[bSRGB], Desc.Extent.X, Desc.Extent.Y, FixedSampleLocations);
}
}
break;
}
}
}
// @todo: If integer pixel format
//check(GMaxOpenGLIntegerSamples>=NumSamples);
Texture->SetAllocatedStorage(bAllocatedStorage);
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
}
void FOpenGLTexture::Resolve(uint32 MipIndex,uint32 ArrayIndex)
{
VERIFY_GL_SCOPE();
check(!GetTexture2D() || GetNumSamples() == 1);
// Calculate the dimensions of the mip-map.
EPixelFormat PixelFormat = this->GetFormat();
const uint32 BlockSizeX = GPixelFormats[PixelFormat].BlockSizeX;
const uint32 BlockSizeY = GPixelFormats[PixelFormat].BlockSizeY;
const uint32 BlockBytes = GPixelFormats[PixelFormat].BlockBytes;
const uint32 MipSizeX = FMath::Max(this->GetSizeX() >> MipIndex,BlockSizeX);
const uint32 MipSizeY = FMath::Max(this->GetSizeY() >> MipIndex,BlockSizeY);
uint32 NumBlocksX = (MipSizeX + BlockSizeX - 1) / BlockSizeX;
uint32 NumBlocksY = (MipSizeY + BlockSizeY - 1) / BlockSizeY;
const uint32 MipBytes = NumBlocksX * NumBlocksY * BlockBytes;
const int32 BufferIndex = MipIndex * (bCubemap ? 6 : 1) * this->GetEffectiveSizeZ() + ArrayIndex;
// Standard path with a PBO mirroring ever slice of a texture to allow multiple simulataneous maps
if (!IsValidRef(PixelBuffers[BufferIndex]))
{
PixelBuffers[BufferIndex] = new FOpenGLPixelBuffer(GL_PIXEL_UNPACK_BUFFER, 0, MipBytes, BUF_Dynamic, nullptr);
}
TRefCountPtr<FOpenGLPixelBuffer> PixelBuffer = PixelBuffers[BufferIndex];
check(PixelBuffer->GetSize() == MipBytes);
check(!PixelBuffer->IsLocked());
// Transfer data from texture to pixel buffer.
// This may be further optimized by caching information if surface content was changed since last lock.
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
const bool bSRGB = EnumHasAnyFlags(this->GetFlags(), TexCreate_SRGB);
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = FOpenGLDynamicRHI::Get().GetContextStateForCurrentContext();
FOpenGLDynamicRHI::Get().CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Target, this->GetResource(), -1, this->GetNumMips());
glBindBuffer( GL_PIXEL_PACK_BUFFER, PixelBuffer->Resource );
{
if (GetDesc().IsTextureArray() || GetDesc().IsTexture3D())
{
// apparently it's not possible to retrieve compressed image from GL_TEXTURE_2D_ARRAY in OpenGL for compressed images
// and for uncompressed ones it's not possible to specify the image index
check(0);
}
else
{
if (GLFormat.bCompressed)
{
FOpenGL::GetCompressedTexImage(
bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
MipIndex,
0); // offset into PBO
}
else
{
// Get framebuffer for texture
FOpenGLTexture* Texture = this;
GLuint SourceFramebuffer = FOpenGLDynamicRHI::Get().GetOpenGLFramebuffer(1, &Texture, (bCubemap ? &ArrayIndex : nullptr), &MipIndex, nullptr);
// Bind the framebuffer
glBindFramebuffer(UGL_READ_FRAMEBUFFER, SourceFramebuffer);
FOpenGL::ReadBuffer(GL_COLOR_ATTACHMENT0);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, MipSizeX, MipSizeY, GLFormat.Format, GLFormat.Type, 0);
glPixelStorei(GL_PACK_ALIGNMENT, 4);
FOpenGLDynamicRHI::Get().GetContextStateForCurrentContext().Framebuffer = (GLuint)-1;
}
}
}
glBindBuffer( GL_PIXEL_PACK_BUFFER, 0 );
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
}
uint32 FOpenGLTexture::GetLockSize(uint32 InMipIndex, uint32 ArrayIndex, EResourceLockMode LockMode, uint32& DestStride)
{
// Calculate the dimensions of the mip-map.
EPixelFormat PixelFormat = this->GetFormat();
const uint32 BlockSizeX = GPixelFormats[PixelFormat].BlockSizeX;
const uint32 BlockSizeY = GPixelFormats[PixelFormat].BlockSizeY;
const uint32 BlockBytes = GPixelFormats[PixelFormat].BlockBytes;
const uint32 MipSizeX = FMath::Max(this->GetSizeX() >> InMipIndex, BlockSizeX);
const uint32 MipSizeY = FMath::Max(this->GetSizeY() >> InMipIndex, BlockSizeY);
uint32 NumBlocksX = (MipSizeX + BlockSizeX - 1) / BlockSizeX;
uint32 NumBlocksY = (MipSizeY + BlockSizeY - 1) / BlockSizeY;
const uint32 MipBytes = NumBlocksX * NumBlocksY * BlockBytes;
DestStride = NumBlocksX * BlockBytes;
return MipBytes;
}
void FOpenGLTexture::Fill2DGLTextureImage(const FOpenGLTextureFormat& GLFormat, const bool bSRGB, uint32 MipIndex, const void* BufferOrPBOOffset, uint32 ImageSize, uint32 ArrayIndex)
{
if (GLFormat.bCompressed)
{
if (GetAllocatedStorageForMip(MipIndex,ArrayIndex))
{
glCompressedTexSubImage2D(
bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
MipIndex,
0,
0,
FMath::Max<uint32>(1,(this->GetSizeX() >> MipIndex)),
FMath::Max<uint32>(1,(this->GetSizeY() >> MipIndex)),
GLFormat.InternalFormat[bSRGB],
ImageSize,
BufferOrPBOOffset); // offset into PBO
}
else
{
glCompressedTexImage2D(
bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
MipIndex,
GLFormat.InternalFormat[bSRGB],
FMath::Max<uint32>(1,(this->GetSizeX() >> MipIndex)),
FMath::Max<uint32>(1,(this->GetSizeY() >> MipIndex)),
0,
ImageSize,
BufferOrPBOOffset); // offset into PBO
SetAllocatedStorageForMip(MipIndex,ArrayIndex);
}
}
else
{
// All construction paths should have called TexStorage2D or TexImage2D. So we will
// always call TexSubImage2D.
check(GetAllocatedStorageForMip(MipIndex,ArrayIndex) == true);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexSubImage2D(
bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
MipIndex,
0,
0,
FMath::Max<uint32>(1,(this->GetSizeX() >> MipIndex)),
FMath::Max<uint32>(1,(this->GetSizeY() >> MipIndex)),
GLFormat.Format,
GLFormat.Type,
BufferOrPBOOffset); // offset into PBO
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
}
}
void* FOpenGLTexture::Lock(uint32 InMipIndex,uint32 ArrayIndex,EResourceLockMode LockMode,uint32& DestStride)
{
VERIFY_GL_SCOPE();
check(!GetTexture2D() || GetNumSamples() == 1);
SCOPE_CYCLE_COUNTER(STAT_OpenGLLockTextureTime);
const uint32 MipBytes = GetLockSize(InMipIndex, ArrayIndex, LockMode, DestStride);
check(!IsEvicted() || ArrayIndex==0);
void* result = NULL;
const int32 BufferIndex = InMipIndex * (bCubemap ? 6 : 1) * this->GetEffectiveSizeZ() + ArrayIndex;
EPixelFormat PixelFormat = this->GetFormat();
// Should we use client-storage to improve update time on platforms that require it
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
if (IsEvicted())
{
check(ArrayIndex == 0);
// check there's nothing already here?
ensure(InMipIndex >= (uint32)EvictionParamsPtr->MipImageData.Num() || EvictionParamsPtr->MipImageData[InMipIndex].Num() == 0);
EvictionParamsPtr->SetMipData(InMipIndex, 0, MipBytes);
return EvictionParamsPtr->MipImageData[InMipIndex].GetData();
}
else
{
// Standard path with a PBO mirroring ever slice of a texture to allow multiple simulataneous maps
bool bBufferExists = true;
if (!IsValidRef(PixelBuffers[BufferIndex]))
{
bBufferExists = false;
PixelBuffers[BufferIndex] = new FOpenGLPixelBuffer(GL_PIXEL_UNPACK_BUFFER, 0, MipBytes, BUF_Dynamic, nullptr);
}
TRefCountPtr<FOpenGLPixelBuffer> PixelBuffer = PixelBuffers[BufferIndex];
check(PixelBuffer->GetSize() == MipBytes);
check(!PixelBuffer->IsLocked());
// If the buffer already exists & the flags are such that the texture cannot be rendered to & is CPU accessible then we can skip the internal resolve for read locks. This makes HZB occlusion faster.
const bool bCPUTexResolved = bBufferExists && EnumHasAnyFlags(this->GetFlags(), TexCreate_CPUReadback) && !EnumHasAnyFlags(this->GetFlags(), TexCreate_RenderTargetable|TexCreate_DepthStencilTargetable);
if (LockMode != RLM_WriteOnly && !bCPUTexResolved)
{
Resolve(InMipIndex, ArrayIndex);
}
result = PixelBuffer->Lock(0, PixelBuffer->GetSize(), LockMode == RLM_ReadOnly, LockMode != RLM_ReadOnly);
}
return result;
}
// Copied from OpenGLDebugFrameDump.
inline uint32 HalfFloatToFloatInteger(uint16 HalfFloat)
{
uint32 Sign = (HalfFloat >> 15) & 0x00000001;
uint32 Exponent = (HalfFloat >> 10) & 0x0000001f;
uint32 Mantiss = HalfFloat & 0x000003ff;
if (Exponent == 0)
{
if (Mantiss == 0) // Plus or minus zero
{
return Sign << 31;
}
else // Denormalized number -- renormalize it
{
while ((Mantiss & 0x00000400) == 0)
{
Mantiss <<= 1;
Exponent -= 1;
}
Exponent += 1;
Mantiss &= ~0x00000400;
}
}
else if (Exponent == 31)
{
if (Mantiss == 0) // Inf
return (Sign << 31) | 0x7f800000;
else // NaN
return (Sign << 31) | 0x7f800000 | (Mantiss << 13);
}
Exponent = Exponent + (127 - 15);
Mantiss = Mantiss << 13;
return (Sign << 31) | (Exponent << 23) | Mantiss;
}
inline float HalfFloatToFloat(uint16 HalfFloat)
{
union
{
float F;
uint32 I;
} Convert;
Convert.I = HalfFloatToFloatInteger(HalfFloat);
return Convert.F;
}
void FOpenGLTexture::Unlock(uint32 MipIndex,uint32 ArrayIndex)
{
VERIFY_GL_SCOPE();
SCOPE_CYCLE_COUNTER(STAT_OpenGLUnlockTextureTime);
if (IsEvicted())
{
// evicted textures didn't actually perform a lock, so we can bail out early
check(ArrayIndex == 0);
// check the space was allocated
ensure(MipIndex < (uint32)EvictionParamsPtr->MipImageData.Num() && EvictionParamsPtr->MipImageData[MipIndex].Num());
return;
}
const int32 BufferIndex = MipIndex * (bCubemap ? 6 : 1) * this->GetEffectiveSizeZ() + ArrayIndex;
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[this->GetFormat()];
const bool bSRGB = EnumHasAnyFlags(this->GetFlags(), TexCreate_SRGB);
TRefCountPtr<FOpenGLPixelBuffer> PixelBuffer = PixelBuffers[BufferIndex];
check(IsValidRef(PixelBuffer));
#if PLATFORM_ANDROID
// check for FloatRGBA to RGBA8 conversion needed
if (this->GetFormat() == PF_FloatRGBA && GLFormat.Type == GL_UNSIGNED_BYTE)
{
UE_LOG(LogRHI, Warning, TEXT("Converting texture from PF_FloatRGBA to RGBA8! Only supported for limited cases of 0.0 to 1.0 values (clamped)"));
// Code path for non-PBO: and always uncompressed!
// Volume/array textures are currently only supported if PixelBufferObjects are also supported.
check(this->GetSizeZ() == 0);
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = FOpenGLDynamicRHI::Get().GetContextStateForCurrentContext();
FOpenGLDynamicRHI::Get().CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Target, GetResource(), -1, this->GetNumMips());
CachedBindPixelUnpackBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
// get the source data and size
uint16* floatData = (uint16*)PixelBuffer->GetLockedBuffer();
int32 texWidth = FMath::Max<uint32>(1, (this->GetSizeX() >> MipIndex));
int32 texHeight = FMath::Max<uint32>(1, (this->GetSizeY() >> MipIndex));
// always RGBA8 so 4 bytes / pixel
int nValues = texWidth * texHeight * 4;
uint8* rgbaData = (uint8*)FMemory::Malloc(nValues);
// convert to GL_BYTE (saturate)
uint8* outPtr = rgbaData;
while (nValues--)
{
int32 pixelValue = (int32)(HalfFloatToFloat(*floatData++) * 255.0f);
*outPtr++ = (uint8)(pixelValue < 0 ? 0 : (pixelValue < 256 ? pixelValue : 255));
}
// All construction paths should have called TexStorage2D or TexImage2D. So we will
// always call TexSubImage2D.
check(GetAllocatedStorageForMip(MipIndex, ArrayIndex) == true);
glTexSubImage2D(
bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
MipIndex,
0,
0,
texWidth,
texHeight,
GLFormat.Format,
GLFormat.Type,
rgbaData);
// free temporary conversion buffer
FMemory::Free(rgbaData);
// Unlock "PixelBuffer" and free the temp memory after the texture upload.
PixelBuffer->Unlock();
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
CachedBindPixelUnpackBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
return;
}
#endif
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 3771565) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3627858 by Sorin.Gradinaru #jira UE-48948 Crash when pressing backspace on empty line Fixed: UE-48948 Backspace on empty line crashes app (virtual keyboard) UE-49112 Virtual keyboard text field isn't visible after rotating from landscape to portrait UE-49117 Chinese and Korean virtual keyboards don't allow native characters UE-49120 Virtual keyboard number pad "kicks" user back to regular keyboard UE-49121 Gboard and Swift swipe entry are not supported by Virtual keyboard UE-49124 Cursor in virtual keyboard and UMG don't match UE-49128 Virtual Keyboard text field doesn't appear if there is too much text UE-49141 Virtual keyboard is unresponsive with repeated tapping in control (some devices) UE-49139 Tapping in the same text box doesn't make the virtual keyboard disappear Change 3630732 by Sorin.Gradinaru #jira UE-43488 GitHub 3440 : Fixes exposure with planar reflections. #3440 Cancelled the applied exposure scale for non-hdr mobile Change 3631436 by Nick.Shin HTML5 recommended fix for "RuntimeError: integer result unrepresentable" from the emscripten makers #jira UE-49059 HTML5 - Unable to launch project onto HTML 5 from editor Change 3632689 by Sorin.Gradinaru #jira UE - 49301 Text in UMG controls flickers during update from Virtual Keyboard Full refresh of the Slate control for Android experimental VK - the control has focus, but the cursor was removed Change 3632769 by Adrian.Chelu #jira UEMOB-403 Improvements to "Device Mobile Preview" feature Change 3633305 by Allan.Bentham Print out the callstack when a fatal error occurs. Change 3633510 by Chris.Babcock Remove unneeded logging #jira none Change 3634827 by Adrian.Chelu #fixed build editor buildsystem linux Change 3640610 by Adrian.Chelu #fixed Cook Win64 warnings #fixed UE4Editor Static Analysis Win64 warnings Change 3663057 by Sorin.Gradinaru UE-49301 Text in UMG controls flickers during update from Virtual Keyboard #jira UE-49301 #ue4 #android On some Android devices TextWatcher.onTextChanged gets called multiple times when typing/deleting the content of a EditText (internally, the first call resets the entire content, the second fills it with the new value) The workaround is to delays sending "empty string" to the Slate, waiting for 100ms to see if there is a second call (the "real" string to update) The CL contains a fix for a 5/5 crash : select some/all the text from the native edittext, press delete. Change 3663630 by Jack.Porter Fix shader compile error on Galaxy S6 Change 3663972 by Allan.Bentham add ES3.1 framebuffer fetch. #jira UE-46251 Change 3671843 by Nick.Shin HTML5 - silence CIS warnings (changed to INFO message type) #jira UE-50415 ( Pri:1 - 4.18 ) //UE4/Release-4.18: Step "Package ShooterClient HTML5" has completed with 1 Warning: "File packager is creating an asset bundle of 815 MB. This is very large" Change 3677675 by Sorin.Gradinaru Android Experimental Virtual Keyboard 4.18 issues #jira UE-49124 Cursor in virtual keyboard and UMG don't match #jira UE-49139 Tapping in the same text box doesn't make the virtual keyboard disappear #jira UE-49141 Virtual keyboard is unresponsive with repeated tapping in control (some devices) #ue4 #android UE-49124 Cursor in virtual keyboard and UMG don't match - change in SlateTextLayout.cpp - OnPaint() don't display the cursor Changed the show/hide vk routines (Game activity.java) to solve low-repro, Android O issues related to multiple click events. Should also be tested with multiple text boxes (fast click in/out different types of TextBox controls) Change 3681555 by Adrian.Chelu UEMOB-403 Improvements to "Device Mobile Preview" feature Change 3692020 by Sorin.Gradinaru #jira UE-50645 Carriage returns can be pasted into single line UMG fields on Android #ue4 #4.19 #android Change 3692741 by Sorin.Gradinaru Andoid 3D WebBrowser #jira UE-32740 Web Browser on a Widget Component appears to be 2D when launching on to Android #ue4 #android Change 3695475 by Chris.Babcock Per project Android NDK/SDK API settings #jira UEMOB-394 #ue4 #android Change 3701364 by Dmitriy.Dyomin Fixed: WEX - Android - Log spammed with "LogRHI: Error: Unsupported EPixelFormat 28" #jira UE-50714 Change 3701664 by Jack.Porter Fix typo Change 3702355 by Cosmin.Sulea UEMOB-393 - Support "ETC 1.5" packaging #jira UEMOB-393 Change 3704950 by Chris.Babcock Add verification of support for cooked texture format(s) on device at runtime (optional with Validate texture formats checkbox in Android project settings) and skipped for cook on the fly #jira UE-50837 #ue4 #android Change 3709817 by Nick.Shin HTML5 - silence CIS warnings (changed to INFO message type) finally have a repo case to test this proper fix #jira UE-50415 ( Pri:1 - 4.18 ) "Package ShooterClient HTML5" has completed with 1 Warning: "File packager is creating an asset bundle of 815 MB. This is very large" Change 3717598 by Chris.Babcock Fix Android icon paths #jira UE-51585 #ue4 #android Change 3718456 by Adrian.Chelu #fixed spelling in category localized name Change 3719643 by Nick.Shin nuke PLATFORM_HTML5_WIN32 more "old" code to remove #jira UEMOB-433 Remove Win32 SDL "HTML5 Simulator" code Change 3720342 by Nick.Shin HTML5 redirect logs to console window #jira UE-50747 HTML5 log is not easily accessible to users Change 3720652 by Sorin.Gradinaru UE-50382 Xcode Address Sanitizer feature does not work on iOS #jira 50382 #iOS #ue4 Address sanitizer dylib loader depends on the default SDKROOT parameter (<scheme> => Build Settings => Base SDK => <Build Configuration>) For macosx or missing (also translated as macosx), the path is incorrect for iphone/appletv. Change 3720654 by Sorin.Gradinaru UE-48499 Android Voice Module has a few issues #jira 48499 #Android #ue4 1.Circular Buffer: Does the engine already have an implementation? Do we want this into core libraries? R: There is an generic template class TCircularBuffer, but it lacks functionality like write/read checks, reading/writing data chunks. Plus the code from VoiceModuleAndroid is optimized for circular byte array. I suggest to keep it. 2. Possible memory leaks: void free_circular_buffer (circular_buffer *p) is implemented, but not used. Presumably a memory leak on the variable inrb. Does CreateAudioRecorder need to be paired with any kind of destroy on shutdown? R: Fixed. Using an array ActiveVoiceCaptures to store VoiceCapture references (same as on Windows) 3. Init() There are 4 calls to setup/init things that store the result in "result" but only the last call is checked against success. Should more checks against the values be made at each stage with informative log messaging in the event of failure? R: Fixed. 4. GetVoiceData() // Workaround for dealing with noise after stand-by while(bytes<InVoiceBufferSize) { OutVoiceBuffer[bytes++]=0; } Isn't this just a memzero? R: Fixed. 5. Missing features. Need to implement GetBufferSize and DumpState R: Added GetBufferSize. Can be used like in TestVoice.cpp DumpState is never used (same on Mac, iOS), plus the OpenSL objects do not expose internal properties. Change 3722554 by Cosmin.Sulea UE-44224 - iOS - Remote Build - rsync error: files not transferred #jira UE-44224 Change 3723265 by Allan.Bentham Assign a texture format priority for ETC1a. prevents launch on from using ETC1a all the time.. Change 3729764 by Dmitriy.Dyomin Removed deprecated LightmapUVBias, ShadowmapUVBias from instanced static mesh component per-instance data (80 -> 64 bytes) Change 3729899 by Dmitriy.Dyomin Fixed tiled landcape re-import Change 3730895 by Bogdan.Vasilache UEMOB-442 --> [ Support texture streaming on Android ES 3.1 ] #jira UEMOB-442 Change 3733463 by Chris.Babcock Return error for external texture if not used in pixel shader #jira UE-51763 #ue4 Change 3736226 by Chris.Babcock Change ExposureScale to PreExposure #jira UE-52007 #jira UE-51691 #ue4 #android Change 3740509 by Allan.Bentham Add LQ (direct lighting from stationary spot/point lights) to volumetric lightmaps. #jira UE-50551 Change 3740586 by Cosmin.Sulea UE-51747 - GitHub 4174 : [BUG-FIX] Invalid ASTC texture versioning is corrected. #jira UE-51747 Change 3741110 by Chris.Babcock Fix functional code in checks removed for shipping #ue4 Change 3741117 by Chris.Babcock Fix checkin error for check -> ensure fix #ue4 Change 3741156 by Chris.Babcock Swap order of SDK and NDK overrides in menu to match Android SDK settings #jira UE-52019 #ue4 #android Change 3741271 by Chris.Babcock Use final NDK and SDK levels only in UEBuildSettings.txt and rename the overrides to be clearer #jira UE-52058 #ue4 #android Change 3741464 by Chris.Babcock Add NDK and SDK platform validation (installed) for Android #jira UE-52069 #ue4 #android Change 3744602 by Josh.Adams From Meerkat: - Added optional 0 or 1 param to showlayer that will set the visibility instead of toggling it for entire layer Change 3744603 by Josh.Adams From Meerkat: - Fixed a comment about debug view modes on consoles Change 3744607 by Josh.Adams From Meerkat: - Added HWInstances to the PrimitiveStats view in Statistics window Change 3754890 by Chris.Babcock Updated IntelISPCTexComp DLLs to fix crashes with some processors on Windows #jira UE-52281 #ue4 Change 3755147 by Jack.Porter Fixed Google Cardboard rendering upside down on iPhone 6S+ #jira UE-38555 Change 3755458 by Cosmin.Sulea UE-47801 - RSync Error when Generating SSH Key for Remote Mac Building when Mac username contains a space #jira UE-47801 Change 3755492 by Jack.Porter Fix merge error Change 3759140 by Bogdan.Vasilache UE-52396 --> Assertion in FOpenGLDynamicRHI::CreateOpenGLTexture when launching on Mali Galaxy S III #jira UE-52396 Change 3760536 by Sorin.Gradinaru UE-51262 values for pinch input produce very different results for same area on android device #jira 51262 #iOS #Android #ue4 1. When the pinch goes beyond the viewport boundaries (when zooming out), the touch that goes off-screen is "released" and the zooming effect is over. Solved by remembering last pinch event values 2. "Hack" the initial distance for the pinch/ rotate, by touching the screen and moving the finger to another position before using the second finger. Solved by using the correct values when the pinch event starts Change 3761279 by Chris.Babcock Flag vertex and fragment shaders belonging to materials with external textures #jira UE-52398 #ue4 #android Change 3761494 by Chris.Babcock Fix access to FrameUpdateInfo in MediaPlayer14.java and CameraPlayer14.java with Proguard #jira UE-52471 #ue4 #android Change 3763146 by Jack.Porter Default assets for web browser widget #jira UE-51374 Change 3764242 by Chris.Babcock Disable Niagara vertex factories for mobile and Switch #jira UE-52425 #ue4 #mobile #switch Change 3766027 by Allan.Bentham Fix crash when no LQ volumetric lightmap data exists #jira UE-52508 Change 3766075 by Josh.Adams - Updating UDKRemote. Still needs art updated, and some some unneeded assets removed Change 3766141 by Allan.Bentham Show unbuilt lightmap warning when LQ data is missing from volumetric lightmap in mobile shading mode. Change 3766163 by Josh.Adams - Updated icons and added a generator script when we get a new one Change 3766560 by Allan.Bentham Workaround for broken offsets with automation screenshots. #jira UE-52491 Change 3767193 by Peter.Sauerbrei remove Oculus shader from being cached force a metal shader re-compile #jira UE-52587 Change 3767604 by Peter.Sauerbrei fix the Oculusshader the right way #jira UE-52587 Change 3768543 by Sorin.Gradinaru Android WebBrowser 3D - webbrowser plugin contins the assets, 2D behaviour restored #Android #UE4 #4.19 #jira UE-51374 Web Browser widget is not working on Android #jira UE-52399 Android web browser does not accept input Change 3663915 by Jack.Porter Prevent FTcpListener from busy polling while waiting for connections #jira UE-50125 Change 3709224 by Allan.Bentham Add android target device to gauntlet. Automation screenshot uses high res screenshot api for mobile. #jira UEMOB-360 Change 3741453 by Chris.Babcock Match the 4.18.1 fixes for shipping checks removing code (from CL3741091) #ue4 Change 3769301 by Peter.Sauerbrei fix for missing ue4_stdmetal.lib, courtesty of MarkS #jira UE-52587 Change 3770597 by Sorin.Gradinaru Android WebBrowser - remove the WebBrowser plugin reference from the Engine Load the default material directly from the resources. #Android #UE4 #jira UE-51374 Web Browser widget is not working on Android #jira UE-52399 Android web browser does not accept input [CL 3771573 by Chris Babcock in Main branch]
2017-11-22 16:42:04 -05:00
// Code path for PBO per slice
check(IsValidRef(PixelBuffers[BufferIndex]));
PixelBuffer->Unlock();
// Modify permission?
if (!PixelBuffer->IsLockReadOnly())
{
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = FOpenGLDynamicRHI::Get().GetContextStateForCurrentContext();
FOpenGLDynamicRHI::Get().CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Target, GetResource(), -1, this->GetNumMips());
if (GetDesc().IsTextureArray() || GetDesc().IsTexture3D())
{
if (GLFormat.bCompressed)
{
FOpenGL::CompressedTexSubImage3D(
Target,
MipIndex,
0,
0,
ArrayIndex,
FMath::Max<uint32>(1,(this->GetSizeX() >> MipIndex)),
FMath::Max<uint32>(1,(this->GetSizeY() >> MipIndex)),
1,
GLFormat.InternalFormat[bSRGB],
PixelBuffer->GetSize(),
0);
}
else
{
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
check( FOpenGL::SupportsTexture3D() );
FOpenGL::TexSubImage3D(
Target,
MipIndex,
0,
0,
ArrayIndex,
FMath::Max<uint32>(1,(this->GetSizeX() >> MipIndex)),
FMath::Max<uint32>(1,(this->GetSizeY() >> MipIndex)),
1,
GLFormat.Format,
GLFormat.Type,
0); // offset into PBO
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
}
}
else
{
Fill2DGLTextureImage(GLFormat, bSRGB, MipIndex, 0, PixelBuffer->GetSize(), ArrayIndex);
}
}
//need to free PBO if we aren't keeping shadow copies
PixelBuffers[BufferIndex] = NULL;
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
CachedBindPixelUnpackBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
}
uint32 GTotalEvictedMipMemStored = 0;
uint32 GTotalEvictedMipMemDuplicated = 0;
uint32 GTotalMipStoredCount = 0;
uint32 GTotalMipRestores = 0;
extern uint32 GTotalEvictedMipMemStored;
extern uint32 GTotalTexStorageSkipped;
float GMaxRestoreTime = 0.0f;
float GAvgRestoreTime = 0.0f;
uint32 GAvgRestoreCount = 0;
void FOpenGLTexture::RestoreEvictedGLResource(bool bAttemptToRetainMips)
{
// double StartTime = FPlatformTime::Seconds();
QUICK_SCOPE_CYCLE_COUNTER(STAT_OpenGLRestoreEvictedTextureTime);
check(!EvictionParamsPtr->bHasRestored);
EvictionParamsPtr->bHasRestored = true;
const FClearValueBinding ClearBinding = this->GetClearBinding();
FOpenGLDynamicRHI::Get().InitializeGLTextureInternal(this, nullptr, 0);
EPixelFormat PixelFormat = this->GetFormat();
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
const bool bSRGB = EnumHasAnyFlags(this->GetFlags(), TexCreate_SRGB);
checkf(EvictionParamsPtr->MipImageData.Num() == this->GetNumMips(), TEXT("EvictionParamsPtr->MipImageData.Num() =%d, this->GetNumMips() = %d"), EvictionParamsPtr->MipImageData.Num(), this->GetNumMips());
CachedBindPixelUnpackBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
for (int i = EvictionParamsPtr->MipImageData.Num() - 1; i >= 0; i--)
{
auto& MipMem = EvictionParamsPtr->MipImageData[i];
if(MipMem.Num())
{
Fill2DGLTextureImage(GLFormat, bSRGB, i, MipMem.GetData(), MipMem.Num(), 0);
}
}
// Use the resident streaming mips if our cvar is -1.
uint32 DeferTextureCreationKeepLowerMipCount = (uint32)(GOGLDeferTextureCreationKeepLowerMipCount >= 0 ? GOGLDeferTextureCreationKeepLowerMipCount : UTexture::GetStaticMinTextureResidentMipCount());
uint32 RetainMips = bAttemptToRetainMips && EnumHasAnyFlags(this->GetFlags(), TexCreate_Streamable) && this->GetNumMips() > 1 && !bAlias
? DeferTextureCreationKeepLowerMipCount
: 0;
if (CanBeEvicted())
{
if (FTextureEvictionLRU::Get().Add(this) == false)
{
// could not store this in the LRU. Deleting all backup mips, as this texture will never be evicted.
RetainMips = 0;
}
}
// keep the mips for streamable textures
EvictionParamsPtr->ReleaseMipData(RetainMips);
#if GLDEBUG_LABELS_ENABLED
FAnsiCharArray& TextureDebugName = EvictionParamsPtr->GetDebugLabelName();
if(TextureDebugName.Num())
{
FOpenGL::LabelObject(GL_TEXTURE, this->GetRawResourceName(), TextureDebugName.GetData());
if (RetainMips == 0)
{
TextureDebugName.Empty();
}
}
#endif
GTotalEvictedMipMemDuplicated += EvictionParamsPtr->GetTotalAllocated();
// float ThisTime = (float)(FPlatformTime::Seconds() - StartTime);
// GAvgRestoreCount++;
// GMaxRestoreTime = FMath::Max(GMaxRestoreTime, ThisTime);
// GAvgRestoreTime += ThisTime;
}
void FOpenGLTexture::TryEvictGLResource()
{
VERIFY_GL_SCOPE();
if (bCanCreateAsEvicted && EvictionParamsPtr->bHasRestored)
{
if (CanBeEvicted())
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_OpenGLTryEvictGLResource);
DeleteGLResource();
// create a new texture id.
EvictionParamsPtr->bHasRestored = false;
const FClearValueBinding ClearBinding = this->GetClearBinding();
// recreate the GL tex resource name (but not allocate the memory)
FOpenGLDynamicRHI::Get().InitializeGLTexture(this, nullptr, 0);
GTotalEvictedMipMemDuplicated -= EvictionParamsPtr->GetTotalAllocated();
}
}
}
bool FOpenGLTextureDesc::CanDeferTextureCreation()
{
bool bCanDeferTextureCreation = CVarDeferTextureCreation.GetValueOnAnyThread() != 0;
#if PLATFORM_ANDROID
static bool bDeferTextureCreationConfigRulesChecked = false;
static TOptional<bool> bConfigRulesCanDeferTextureCreation;
if (!bDeferTextureCreationConfigRulesChecked)
{
const FString* ConfigRulesDeferOpenGLTextureCreationStr = FAndroidMisc::GetConfigRulesVariable(TEXT("DeferOpenGLTextureCreation"));
if (ConfigRulesDeferOpenGLTextureCreationStr)
{
bConfigRulesCanDeferTextureCreation = ConfigRulesDeferOpenGLTextureCreationStr->Equals("true", ESearchCase::IgnoreCase);
UE_LOG(LogRHI, Log, TEXT("OpenGL deferred texture creation, set by config rules: %d"), (int)bConfigRulesCanDeferTextureCreation.GetValue());
}
else
{
UE_LOG(LogRHI, Log, TEXT("OpenGL deferred texture creation, no config rule set: %d"), (int)bCanDeferTextureCreation);
}
bDeferTextureCreationConfigRulesChecked = true;
}
if (bConfigRulesCanDeferTextureCreation.IsSet())
{
bCanDeferTextureCreation = bConfigRulesCanDeferTextureCreation.GetValue();
}
#endif
return bCanDeferTextureCreation;
}
bool FOpenGLTexture::CanBeEvicted()
{
VERIFY_GL_SCOPE();
checkf(!bCanCreateAsEvicted || EvictionParamsPtr.IsValid(), TEXT("%p, bCanCreateAsEvicted %d, EvictionParamsPtr.IsValid() %d"), this, bCanCreateAsEvicted, EvictionParamsPtr.IsValid());
// if we're aliased check that there's no eviction data.
check(!bCanCreateAsEvicted || !bAlias || (EvictionParamsPtr->MipImageData.Num() == 0 && EvictionParamsPtr->MipImageData.Num() != this->GetNumMips()));
// cant evict if we're aliased, or there are mips are not backed by stored data.
bool bRet = bCanCreateAsEvicted && EvictionParamsPtr->MipImageData.Num() == this->GetNumMips() && EvictionParamsPtr->AreAllMipsPresent();
return bRet;
}
void FOpenGLTexture::CloneViaCopyImage(FOpenGLTexture* Src, uint32 InNumMips, int32 SrcOffset, int32 DstOffset)
{
VERIFY_GL_SCOPE();
check(FOpenGL::SupportsCopyImage());
check(Src->bCanCreateAsEvicted == bCanCreateAsEvicted);
if (bCanCreateAsEvicted)
{
// Copy all mips that are present.
if (!(!Src->IsEvicted() || Src->EvictionParamsPtr->AreAllMipsPresent()))
{
UE_LOG(LogRHI, Warning, TEXT("IsEvicted %d, MipsPresent %d, InNumMips %d, SrcOffset %d, DstOffset %d"), Src->IsEvicted(), Src->EvictionParamsPtr->AreAllMipsPresent(), InNumMips, SrcOffset, DstOffset);
int MessageCount = 0;
for (const auto& MipData : Src->EvictionParamsPtr->MipImageData)
{
UE_LOG(LogRHI, Warning, TEXT("SrcMipData[%d].Num() == %d"), MessageCount++, MipData.Num());
}
}
check(!Src->IsEvicted() || Src->EvictionParamsPtr->AreAllMipsPresent() );
EvictionParamsPtr->CloneMipData(*Src->EvictionParamsPtr, InNumMips, SrcOffset, DstOffset);
// the dest texture can remain evicted if: the src was also evicted or has all of the resident mips available or the dest texture has all mips already evicted.
if(IsEvicted() && (Src->IsEvicted() || Src->EvictionParamsPtr->AreAllMipsPresent() || EvictionParamsPtr->AreAllMipsPresent()))
{
return;
}
}
for (uint32 ArrayIndex = 0; ArrayIndex < this->GetEffectiveSizeZ(); ArrayIndex++)
{
// use the Copy Image functionality to copy mip level by mip level
for(uint32 MipIndex = 0;MipIndex < InNumMips;++MipIndex)
{
// Calculate the dimensions of the mip-map.
const uint32 DstMipIndex = MipIndex + DstOffset;
const uint32 SrcMipIndex = MipIndex + SrcOffset;
const uint32 MipSizeX = FMath::Max(this->GetSizeX() >> DstMipIndex,uint32(1));
const uint32 MipSizeY = FMath::Max(this->GetSizeY() >> DstMipIndex,uint32(1));
if(FOpenGL::AmdWorkaround() && ((MipSizeX < 4) || (MipSizeY < 4))) break;
// copy the texture data
FOpenGL::CopyImageSubData(Src->GetResource(), Src->Target, SrcMipIndex, 0, 0, ArrayIndex,
GetResource(), Target, DstMipIndex, 0, 0, ArrayIndex, MipSizeX, MipSizeY, 1);
}
}
}
void FOpenGLTexture::CloneViaPBO(FOpenGLTexture* Src, uint32 InNumMips, int32 SrcOffset, int32 DstOffset)
{
VERIFY_GL_SCOPE();
// apparently it's not possible to retrieve compressed image from GL_TEXTURE_2D_ARRAY in OpenGL for compressed images
// and for uncompressed ones it's not possible to specify the image index
check(this->GetSizeZ() == 0);
EPixelFormat PixelFormat = this->GetFormat();
check(PixelFormat == Src->GetFormat());
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
const bool bSRGB = EnumHasAnyFlags(this->GetFlags(), TexCreate_SRGB);
check(bSRGB == EnumHasAnyFlags(Src->GetFlags(), TexCreate_SRGB));
const uint32 BlockSizeX = GPixelFormats[PixelFormat].BlockSizeX;
const uint32 BlockSizeY = GPixelFormats[PixelFormat].BlockSizeY;
const uint32 BlockBytes = GPixelFormats[PixelFormat].BlockBytes;
FOpenGLContextState& ContextState = FOpenGLDynamicRHI::Get().GetContextStateForCurrentContext();
for (uint32 ArrayIndex = 0; ArrayIndex < this->GetEffectiveSizeZ(); ArrayIndex++)
{
// use PBO functionality to copy mip level by mip level
for(uint32 MipIndex = 0;MipIndex < InNumMips;++MipIndex)
{
// Actual mip levels
const uint32 DstMipIndex = MipIndex + DstOffset;
const uint32 SrcMipIndex = MipIndex + SrcOffset;
// Calculate the dimensions of the mip-map.
const uint32 MipSizeX = FMath::Max(this->GetSizeX() >> DstMipIndex,1u);
const uint32 MipSizeY = FMath::Max(this->GetSizeY() >> DstMipIndex,1u);
// Then the rounded PBO size required to capture this mip
const uint32 DataSizeX = FMath::Max(MipSizeX,BlockSizeX);
const uint32 DataSizeY = FMath::Max(MipSizeY,BlockSizeY);
uint32 NumBlocksX = (DataSizeX + BlockSizeX - 1) / BlockSizeX;
uint32 NumBlocksY = (DataSizeY + BlockSizeY - 1) / BlockSizeY;
const uint32 MipBytes = NumBlocksX * NumBlocksY * BlockBytes;
const int32 BufferIndex = DstMipIndex * (bCubemap ? 6 : 1) * this->GetEffectiveSizeZ() + ArrayIndex;
const int32 SrcBufferIndex = SrcMipIndex * (Src->bCubemap ? 6 : 1) * Src->GetEffectiveSizeZ() + ArrayIndex;
// Standard path with a PBO mirroring ever slice of a texture to allow multiple simulataneous maps
if (!IsValidRef(PixelBuffers[BufferIndex]))
{
PixelBuffers[BufferIndex] = new FOpenGLPixelBuffer(GL_PIXEL_UNPACK_BUFFER, 0, MipBytes, BUF_Dynamic, nullptr);
}
TRefCountPtr<FOpenGLPixelBuffer> PixelBuffer = PixelBuffers[BufferIndex];
check(PixelBuffer->GetSize() == MipBytes);
check(!PixelBuffer->IsLocked());
// Transfer data from texture to pixel buffer.
// This may be further optimized by caching information if surface content was changed since last lock.
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3511476) #lockdown Nick.Penwarden ===================================== MAJOR FEATURES + CHANGES ===================================== Change 3372740 by Chris.Bunner [Experimental] Partial compute post process pipeline (r.PostProcess.PreferCompute). StencilSceneTexture added to deferred list. A few known issues to be fixed in a follow-up CL. Change 3374187 by Chris.Bunner Volume texture support for CombineLUTs/Tonemap compute pass. Refactored common param code to shared sub-class in CombineLUTs and Tonemap PS/CS. Skip compute post process out-of-bounds writes. Unsigned type conversion fixes. Trimmed compute post process shader inputs. Change 3441680 by Uriel.Doyon Added units to point light intensity, to allow the user to specify the value in candelas or lumens. New point light actors now configure the intensity in candelas by default. Replaced viewport exposure settings by an EV100 slider. Hidding the tone mapper in the show flag now still applies the exposure. Added a new AutoExposure method called EV100 which allows to specify : - MinEV100, MaxEV100 - Calibration Constnat - Exposure Compensation #jira UE-42783 Change 3454636 by Uriel.Doyon Fixed point light having an extra scale of 16 in mobile #jira UE-45272 Change 3454844 by Uriel.Doyon Fixed extra X16 on some point lights #jira UE-45250 Change 3454934 by Chris.Bunner Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability. Change 3461206 by Guillaume.Abadie Adds possibility to scene captures and player controller to render no primitives at all. Change 3461207 by Guillaume.Abadie Exposes showflag details to USceneCaptureComponent. This gives the possibility to configure scene capture's showflags in blueprint encapsulated compositing pipeline. #jira UE-6810 Change 3461233 by Chris.Bunner Added Log10 material expression. Added tooltip for Log2 and Log10. Change 3461434 by Michael.Trepka Copy of CL 3456118 In Metal RHI report texture streaming as immediately successful as on D3D to avoid a race-condition leading to deadlock between the Main, Game, Render & RHI threads. #jira UE-44961 Change 3461770 by Benjamin.Hyder Submitting TM-RayTracedDistanceField map Change 3461929 by Marc.Olano Add Sobol blueprint and material node test maps to RenderTest project Change 3462249 by Uriel.Doyon Translucency after DoF is now disabled when showflag postprocess is disabled. Change 3462371 by Brian.Karis VT addressing is now 64bit to support huge sparse virtualized volumes 16bit page tables working. Change 3462936 by Marc.Olano Extend Sobol testing map with comparision between Random Sobol and Next Sobol functions Change 3464394 by Uriel.Doyon Improved synchronization for texture streaming commands. This fixes an issue when accessing FStreamingTexture for pending textures. Change 3464743 by Guillaume.Abadie Adds .usf file extension on all shader's source file names and adds checks to verify them at engine load time. Change 3464818 by Guillaume.Abadie Fixes compilation error in FindShaderRelativePath Change 3465184 by Daniel.Wright r.Shadow.PreShadowResolutionFactor 1.0 on Epic shadow settings Change 3465283 by Marc.Olano Update Sobol Gray code tables to match random order tables Change 3465976 by Arne.Schober DR - [UE-44393] - The Canvas is using the Globalshaders for clearing but compilation is done asynconously at load time. Unfortunately there could be Code that uses a canvas to draw and cause this issue in between. There might be some plugins that do this. For now we need to wait and block for the shaqders to be compiled until we can allo the use of the canvas. #RB none Change 3467513 by Guillaume.Abadie Fixes an issue where primitives would no longer draw in gameplay. #jira UE-45550 Change 3471116 by Richard.Wallis Mac OpenGL Is No Longer Supported - Remove All Code & Shader Platforms. Merge of CL 3327784 dev-editor stream from Michael Trepka with some extra changes. - Also removed Metal shader platforms from PlatformSupportsDebugViewShaders() otherwise we get a compiler error. HLSL register binds not implemented in metal backend. #jira UE-39108 Change 3471117 by Richard.Wallis Drop down menus clip on 27" Screen iMacs. Disable viewport HDR rendering on macOS 10.12.x when in editor. #jira UE-43026 Change 3471130 by Richard.Wallis Mac GPU hang causes editor output log to be written to the wrong file. Try to emulate windows behaviour when opening a file for reading or writing. Tested against behaviour of windows log file with multiple instances running. - Only defined in for Mac and non shipping. #jira UE-44934 Change 3471224 by Guillaume.Abadie Lets the ProjectFileGenerator to look at Shaders/ directories in plugin and game projects. Change 3471646 by Daniel.Wright Fixed ensure opening UT system settings Change 3471862 by Arne.Schober DR - revert accidently checked in changes. #RB Chris.Bunner Change 3472249 by Guillaume.Abadie Implements virtual shader source directory mapping. - /Engine/... maps to Engine/Shaders/... - /Plugin/FooBar/... maps to FooBar plugin's Shaders/ directory - /Project/... maps to project's Shaders/ directory Change 3472443 by Daniel.Wright Moved the Rendering category for lights to be just below the Light category, so the bVisible property is easily accessible Change 3474537 by Uriel.Doyon Fixed lighting needs rebuild happening after blueprint rescript and a non symetrical Quaterion != ToQuaternion(ToRotator(Quaternion) Change 3475192 by Guillaume.Abadie Implements LensDistortion engine plugin. This CL import a polished version of Raven's lens distortion and undistortion from OpenCV parameters: - It is implemented as the first engine plugin with its own shaders and render thread commands; - Has feature tests in EngineTest with gold images directly extracted from OpenCV itself (GenerateLensDistortionUndistortReferences.py) Change 3475209 by Guillaume.Abadie Back out changelist 3475192 Change 3475252 by Guillaume.Abadie Reland: Implements LensDistortion engine plugin. This CL import a polished version of Raven's lens distortion and undistortion from OpenCV parameters: - It is implemented as the first engine plugin with its own shaders and render thread commands; - Has feature tests in EngineTest with gold images directly extracted from OpenCV itself (GenerateLensDistortionUndistortReferences.py) Change 3475389 by Guillaume.Abadie Adds LensDistortion plugin's feature tests. Change 3475538 by Guillaume.Abadie Adds the /Engine/* prefix on all of the renderer's USF file references. Change 3475568 by Guillaume.Abadie Adds a check for virtual shader source file path format in FShaderType::FShaderType() Change 3475871 by Guillaume.Abadie Fixes a bug in shader compile worker, were an error in a relative #include USF file would trigger an check failure in CheckVirtualShaderFilePath Change 3475997 by Yujiang.Wang Workaround for a compiler optimization bug introduced in VS2015 Update 3. * The bug causes TSHVector<2>::CalcDiffuseTransfer to go to infinity at certain spot, making movable objects with ILCQ_Volume indirect lighting cache interpolation get very dark. * Debug builds don't exhibit this bug. * Semantics are exactly the same as the original code. Change 3476203 by David.Hill Compute SSAO: problem wiht AmbientOcclusionLevels and with various viewporttest sizes. Only seen when Levels >=2 #jira UE-45741 Change 3476536 by Benjamin.Hyder adding player start to Ray Traced Distance Field Shadows Map Change 3478298 by Benjamin.Hyder disabling mesh distance fields in Tm-Raytraced_DistanceField_Shadows map Change 3478948 by Rolando.Caloca DR - Nicer check Change 3478949 by Rolando.Caloca DR - Default GPU morphs to enabled Change 3478950 by Rolando.Caloca DR - By default -vulkan will launch SM5 Change 3478984 by Rolando.Caloca DR - Pass down -vulkan Change 3479655 by Richard.Wallis Video track does not switch in AVF Media Player. Need to disable unused video tracks to allow AVPlayerItemVideoOutput to decode the required track. - Minimal change to allow video track changes/selection. - Audio samples are extracted using AVAssetReaderTrackOutput but video uses AVPlayerItemVideoOutput. Video could also use AVAssetReaderTrackOutput to access the video data unless there is an iOS reason not to... - Flush the audio sink sample buffers so we get instant audio track changes #jira UE-39750, UE-39749 Change 3479834 by Rolando.Caloca DR - Fix issue with bad vertex colors (per licensee) Change 3480376 by Guillaume.Abadie Disables ComputeLightGrid() if no volumetric fog and no lighting. #jira UE-45377 Change 3480596 by Yujiang.Wang Fix for dynamic shadows and raytraced distance field shadows of directional lights not appearing in planar reflection * Bug caused by incorrect shadow culling volumes for cascaded shadow map and backface culling mode for WholeSceneShadowProjection * Fixed by taking View.bReverseCulling into account #jira UE-34452 Change 3480600 by Yujiang.Wang Fix for UE-42376 * The bug is caused by post-processing ambient cubemaps not being supported in forward shading currently. * This fix replaces all the occurences of them in CalcSceneView with a skylight using the cubemap * If a CalcSceneView is used solely for setting the PP ambient cubemap, it is removed. #jira UE-42376 Change 3480784 by Rolando.Caloca DR - hlslcc - Initial support for [RW]StructuredBuffer Change 3481690 by Uriel.Doyon Attempt to fix static analysis warning Change 3482012 by Simon.Tovey Fixed issue when building distribution lookup tables where the final sample fell short of the max input time. As sampling is done only over this range, under constant interpolation the final value was never actually sampled and so cut from the final optimized LUT. #tests constant interpolation now works. #jira UE-45614 Change 3482965 by Yujiang.Wang Some quality of life changes for UE-42757 * The UV overlay in static mesh editor now has a darker background * Selected edges are getting highlighted and bolder * When some edges are selected others turn grey #jira UE-42757 Change 3483014 by David.Hill Change labels on bloom boost from x,y,z to min, max, mult. #jira UE-43904 a PropertyRedirect in BaseEngine.ini allows this to work with older version. Change 3484573 by Yujiang.Wang Fix for shadow color not updated after light build when a texture is changed and reimported * Bug caused by counter-intuitive design of UMaterial::GetReferencedFunctionIds and UMaterial::GetReferencedParameterCollectionIds, both of which will reset the OutIds parameter * Renamed to AppendReferencedFunctionIdsTo and AppendReferencedParameterCollectionIdsTo, the resets are removed #jira UE-45647 Change 3484969 by Yujiang.Wang Fix for UE-39929 inconsistent type between C++ and shader code * MeshDistanceFieldCasterIndices is declared as Buffer<uint> in CapsuleShadowShaders.usf, while created as PF_R32_SINT in CapsuleShadowRendering.cpp * Changed PF_R32_SINT to PF_R32_UINT in CapsuleShadowRendering.cpp #jira UE-39929 Change 3485012 by Yujiang.Wang Fix for UE-39929 #2: Changed int32 to uint32 to match PF_R32_UINT #jira UE-39929 Change 3485146 by Guillaume.Abadie Destroyes scene capture's view states on the UnRegister, to avoid large memory usage cause by the ViewState's render targets when moving blueprints arround. #jira UE-43455 Change 3486602 by Joe.Conley Adding "texcoord" keyword to UMaterialExpressionTextureCoordinate so you can search for the name that is displayed on the node in the graph. Change 3487471 by Yujiang.Wang Github #3659: Improved performance of DumpUnbuiltLightInteractions * Replaced TArrays with TSets #jira UE-45783 Change 3487641 by Guillaume.Abadie Fixes some shader file name casing issues in LPV. Change 3488014 by Uriel.Doyon New AllowAsyncLoading flag for UTexture::CachePlatformData(). It allows to load the source texture data in the async task if the source bulk data was not yet loaded. Data loaded that way is not sharable between tasks and will be discarded. This is required because updating the source data is not thread safe. #jira UERNDR-190 #jira UE-33401 Change 3488249 by Uriel.Doyon Fixed long stall in UpdateResourceStreaming() caused by Actor.GetComponents() not resetting the number of actors anymore. Fixed inconsistent results in ALODActor::HasValidSubActors() caused by the same change. #jira UE-46004 Change 3490228 by Mark.Satterthwaite Fix the Nvidia driver bug with the old reversebits fallback function - you need to use the native reverse_bits intrinsic or use some uint(ushort()) casts to get the compiler to do the right thing, which means injecting the reverse_bits function in MetalBackend not the HLSL (as it has no such type). #jira UE-46067 Change 3490538 by Arne.Schober Back out changelist 3488249 #RB none Change 3490551 by Arne.Schober Back out changelist 3488249 #RB none Change 3491828 by Guillaume.Abadie Fixes another USf file reference casing issue in C++. Change 3491924 by Yujiang.Wang Fix for UE-43302 Crash when entering the DebugCreatePlayer console command with planar reflections in the level * Crash caused by check(Views.Num() <= 2); in SceneCaptureRendering.cpp * We still want to support at most 2 views for performance, but now instead of crash the planar reflections in additional views will simply turn black #jira UE-43302 Change 3492359 by Guillaume.Abadie Fixes non editor launches, failing in FGenericPlatformProcess::AddShaderSourceDirectoryMapping(). Change 3492367 by Marc.Olano Change Sobol texture size to 32x16, tweak distribution Change 3492599 by Marcus.Wassmer PR #3669: -Fix logmessages ParticleModules_Location.cpp (Contributed by UpwindSpring01) Change 3493473 by Uriel.Doyon Back out changelist 3490538 Change 3493590 by Uriel.Doyon Back out changelist 3490551 Fixed missing #pragma once Change 3493911 by Marcus.Wassmer Fix potential GPU crash/hang caused by out of bound subresource updates. Added checks at cross-platform level to catch any instance earlier. Change 3494139 by Uriel.Doyon Fixed shadow variable issue on UE4Editor Linux. Change 3494364 by Richard.Wallis Mac OpenGL Is No Longer Supported - Remove All Code & Shader Platforms - Part 2: Remove some more areas and fixes for previous attempt. Also removed OpenGL based GPU performance checks in EditorEngine.cpp - assuming that any GPU that can run Metal is currently OK for UE4. OpenGL left in the following areas: - OpenGLShaderCompiler - StandaloneRenderer The following files need to be reviewed in conjunction with CL 3471116 as there were some logic errors made: - OpenGLTexture.cpp #jira UE-39108 Change 3494413 by Guillaume.Abadie Updates r.InvalidateCachedShader and bump ShaderVersion.ush. Change 3494422 by Guillaume.Abadie Adds LensDistortion plugin's Private shader directory. Change 3494717 by Guillaume.Abadie Strengthens shader compiler with checks on generated file names and shader type file names. Change 3494763 by Guillaume.Abadie Removes a nolonger standing TODO in GlobalBeginCompileShader() that was automatically adding /Engine/ prefix to all relative virtual shader source file path. Change 3494985 by Rolando.Caloca DR - Integrate Vulkan Rewrite Change 3495031 by Rolando.Caloca DR - Delete file as it moved Change 3495032 by Rolando.Caloca DR - Show Vulkan SM5 instead of SM4 on windows packaging - Also added support for Vulkan SM5_UB Change 3495202 by Uriel.Doyon Fixed static analysis warning with pointer dereferencing. Change 3495342 by Rolando.Caloca DR - clang compile fix Change 3495354 by Rolando.Caloca DR - clang compile fixes Change 3495420 by Marc.Olano Use Sobol sampling for PCSS Change 3495799 by Rolando.Caloca DR - Delete old dev assets Change 3496202 by Mark.Satterthwaite Switch to using actual Vector*Matrix intrinsic for Metal to avoid a problem whereby the Metal compiler reorders operations in such a way that it loses precision and ends up being different between pre-pass and base-pass. #jira UE-46070 Change 3496253 by Uriel.Doyon Fixed static analysis warning for IncludeTool Change 3496631 by Guillaume.Abadie Makes AScreenshotFunctionalTest::ScreenshotOptions blueprint readable. Change 3496851 by Guillaume.Abadie Fixes back slash issues in Platform.usf. Change 3496852 by Guillaume.Abadie Fixes other back slashes includes in PS4 specific usf files. Change 3496941 by Guillaume.Abadie Adds a check() for no backslash in virtual shader file paths. Change 3497661 by Guillaume.Abadie Lets FLensDistortionCameraModel::GetUndistortOverscanFactor() early return 1.0 if the camera model is does an identity transform. Change 3497969 by Richard.Wallis Fix for start Up Movies Are not Playing for iOS Devices. Handle case when movie is loading aysnc in background - need to wait for state changes otherwise it skips intermediate movies. - Tested on iOS and Mac. #jira UE-39585 Change 3498035 by Guillaume.Abadie Polishes //Engine/Plugins/Compositing/LensDistortion/Shaders/Private/UVGeneration.usf from debuging artifacts. Change 3498101 by Rolando.Caloca DR - Compile fix Change 3498254 by Guillaume.Abadie Exposes comparing FLensDistortionCameraModel to blueprint with == and != operator nodes for cross frame uv displacement map caching. Change 3498264 by Guillaume.Abadie Integrate 3267269: Implements SceneCaptureComponent2D::bCameraCutThisFrame Change 3498371 by Yujiang.Wang Fix for UE-46149 Planar Reflections display screenspace info when viewports are >2 * Prevent planar reflections being rendered when ViewIndex >= GMaxPlanarReflectionViews * Now planar reflections in >2 viewports will fallback to other reflection methods (SSR, reflection captures) #jira UE-46149 Change 3498409 by Rolando.Caloca DR - Swap resolves Change 3498410 by Guillaume.Abadie Adds support for opacity output alpha for post process material when doing a draw material to render target. Change 3498705 by Rolando.Caloca DR - Add UID for debugging mem allocations Change 3498759 by Marcus.Wassmer No post processing in vertexcolor view mode #jira UE-44704 Change 3498891 by Rolando.Caloca DR - Minor Vulkan per frame allocator refactor in prep for changes Change 3499206 by Rolando.Caloca DR - Fix temp frame allocator OOM on Vulkan #jira UE-45913 Change 3499319 by Rolando.Caloca DR - Vulkan support for StorageBuffer Change 3499339 by Rolando.Caloca DR - Remove deprecated typedef Change 3499400 by Rolando.Caloca DR - Remove some RHICmdList deprecated functions Change 3499422 by Rolando.Caloca DR - Allow buffer transitions inside render passes Change 3500370 by Rolando.Caloca DR - Compile fix Change 3500474 by Rolando.Caloca DR - Fix static analysis Change 3500517 by Guillaume.Abadie Exposes r.PostProcessing.PropagateAlpha to the renderer settings. Change 3500537 by Guillaume.Abadie Fixes a bug where scene capture WorldToView matrix would get scale != 1 when scaling the scene capture actor in the world. #jira UE-39389 Change 3501069 by Mark.Satterthwaite Bring back temporary 4.16 fix for iOS 9 (CL #3425995) into Dev-Rendering for 4.17 as a real fix will need to wait for 4.18. temporary fix for skewed textures on IOS 9 #jira UE-44468 Change 3501164 by Michael.Lentine PR #3402: UE-43131: Format argument count not equal to actual arguments (Contributed by projectgheist) Change 3501222 by Benjamin.Hyder Checking in Tm_SobolNoise map Change 3501612 by zachary.wilson Adding testing content for RTDF shadows on planar reflections Change 3501708 by Guillaume.Abadie Break FPostProcessSettings into smallers structs. Change 3501830 by Olaf.Piesche #jira UE-39628; using fix proposed in UDN, will investigate further Change 3501954 by Marcus.Wassmer Duplicate 3480903 Light culling safety measures. Change 3502032 by Mark.Satterthwaite Fix generation of Metal precompiled headers for the bytecode compiler when using Xcode 9. Change 3502118 by Uriel.Doyon Fixed shader compilation issues. Change 3502191 by Guillaume.Abadie Implements Composure plugin to make compositing in UE4 easier. Change 3502192 by Guillaume.Abadie Implements Composure feature testing in EngineTests Change 3502196 by Guillaume.Abadie Creates a dependency of Composure plugin over LensDistortion plugin. Change 3502213 by Arciel.Rekman Fix for loading shaders on Linux (UE-46276). Change 3502243 by Brian.Karis Bent normal map support. Multibounce AO. Spherical Gaussian based specular occlusion. Change 3502506 by Guillaume.Abadie Fixes compilation failure in Composure with unity build. Change 3502507 by Guillaume.Abadie Fixes composure Set Pass with Render Target blueprint helper. Change 3502510 by Guillaume.Abadie Attempts to fix ComposureUtils.cpp compile errors. Change 3502515 by Guillaume.Abadie Some other composure failure fixes. Change 3502545 by Guillaume.Abadie Fixes some unity build related error in Composure. Change 3502548 by Guillaume.Abadie Fixes last missing includes in ComposurePostProcessPass.cpp Change 3502672 by Guillaume.Abadie Fixes linux warning in Composure. Change 3502790 by Ryan.Brucks float4 PseudoVolumeTexture: Fixed frame layout being a float instead of float2. Now works correctly with non-square frame layouts. Only called in custom nodes and calling with a float still functions properly so no old content will break. Change 3502836 by Guillaume.Abadie Propagates scene capture engine showflag changes from blueprint editor to the blueprint instances. #jira UE-6810 Change 3503096 by Guillaume.Abadie Resave a unversioned asset. Change 3503228 by Yujiang.Wang Fix for UE-45646 Dynamic Light placed inside of a Dynamic Static Mesh doesn't pass through the geometry * Bug caused by bReflectiveShadowmap not being passed into SetViewFlagsForShadowPass * Replaced the true with bReflectiveShadowmap #jira UE-45646 Change 3503284 by Rolando.Caloca DR - Fixed initial clear on rendertargets - Added support for r.Vulkan.EnableValidation 1, 2, 3 & 4 - Dump the vulkan log into VS output log - Added validation for layouts when using dump log Change 3503545 by Arciel.Rekman Fix black UI on Linux (UE-46333) - Rebuilt hlslcc with clang 3.7.0. Whatever issues we're running in with newer clangs still seem to persist. #jira UE-46333 Change 3503638 by Daniel.Wright [Copy] Changed DynamicBentNormalAO back to fp16, as PF_FloatR11G11B10 was not enough precision and introduced banding Change 3503787 by Marcus.Wassmer Fix difference between gpu/cpu morph target application Change 3503902 by Marcus.Wassmer Roll back TAA refactor until we have time to look into the bad interaction with DOF. Change 3503953 by Arne.Schober DR - UE-46319 - borked Reflections: The resource transition needs to be in this weired place for PS4 and switch until we teach the interface to know about subresources. #RB Marcus.Wassmer Change 3504131 by Rolando.Caloca DR - Maintain a cache of pipeline and descriptor set layouts - Fix marker dump Change 3504462 by Guillaume.Abadie Fixes an assertion failure that was failing because compute light grid was not done, but the shader used where not necessarily using compute light grid results. #jira UE-46277 Change 3504779 by Chris.Bunner Potential static analysis fix. #jira UE-46360 Change 3504950 by Marc.Olano Allow Sobol material nodes & textures only if feature level is at least ES3.1 #jira UE-46334 #jira UE-46317 Change 3505035 by Daniel.Wright Increased MaxSearchCount in GetShaderIncludes. The previous limit of 20 is now getting hit in BasePassPixelShader.usf, causing compiles to fail erroneously. Change 3505386 by Daniel.Wright GetShaderIncludes handles infinite recursion gracefully, needed by Metal causing BasePassTessellation.usf to include BasePassVertexShader.usf Change 3505491 by Rolando.Caloca DR - Fix crash on first frame of particles on modern APIs Change 3505557 by Chris.Bunner [Duplicate] Workaround for outdated shader map crash. #jira UE-46061 Change 3506071 by Rolando.Caloca DR - Vulkan fixes - Fix copy out of bounds reading textures to CPU - Defer event deletion - Split validation for errors and warnings - Skip validation error about attachment not used Change 3506698 by Guillaume.Abadie Fixes Composure alpha channel clobering and performance regression in bloom and tonemapper passes caused by scene capture API compatibility breakage brought by Fortnite merge. Change 3506797 by Rolando.Caloca DR - Fix static analysis #jira UE-46428 Change 3506861 by Rolando.Caloca DR - Fix crash due to layering violation #jira UE-46424 #jira UE-46431 Change 3508098 by Rolando.Caloca DR - Fix for Vulkan ES31 crash - Fix for AMD ensure Change 3508123 by Rolando.Caloca DR - Disable occlusion queries on Vulkan to avoid flickering - Fix for bad HZB & cube mips on Vulkan (now using RHIGenerateMips) - Fix for decal blending #jira UE-46376 Change 3509064 by Uriel.Doyon Changing the logic arround generating an error when HasHadBulkDataCleared() so that it only triggers if the DDC are not found. #jira UE-46427 Change 3509854 by Marc.Olano Fix 2D Sobol gray code numbers. Just changes some numbers in initialization tables, so no effect on existing tests or content. Change 3509920 by Marcus.Wassmer Fix LPV fastvram ensure Change 3509937 by Rolando.Caloca DR - Fix crash due to deleted viewport #jira UE-46281 Change 3509988 by Marcus.Wassmer Roll back part of Sobol fix to avoid full shader recompile for integration. Change 3510255 by Rolando.Caloca DR - Fix popup window ensure #jira UE-46511 Change 3510646 by Marcus.Wassmer fix ios compiles Change 3511442 by Rolando.Caloca DR - Change mesh simplification check to ensure/checkslow to unblock #jira UE-46538 DONE! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CHANGES WITH MULTIPLE PLATFORMS!!! YOU MUST COPY THESE INTO THE OTHER ONES AS MAKES SENSE!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Change 3467095 by Guillaume.Abadie Nukes all += TEXT(".usf") #jira UE-45530 Change 3475084 by Guillaume.Abadie Fixes compilation failure of the shader compiler on PS4 and XboxOne Change 3477464 by Guillaume.Abadie Fixes dumpshaderinfo that generate unecessary sub directory, breaking shell scripts. Change 3494395 by Guillaume.Abadie Moves all engine shader files into Public and Private directory, and introduce the .ush extensions for header file that do not contains entry points. DONE! [CL 3511602 by Marcus Wassmer in Main branch]
2017-06-27 11:38:28 -04:00
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLDynamicRHI::Get().CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Src->Target, Src->GetResource(), -1, this->GetNumMips());
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3511476) #lockdown Nick.Penwarden ===================================== MAJOR FEATURES + CHANGES ===================================== Change 3372740 by Chris.Bunner [Experimental] Partial compute post process pipeline (r.PostProcess.PreferCompute). StencilSceneTexture added to deferred list. A few known issues to be fixed in a follow-up CL. Change 3374187 by Chris.Bunner Volume texture support for CombineLUTs/Tonemap compute pass. Refactored common param code to shared sub-class in CombineLUTs and Tonemap PS/CS. Skip compute post process out-of-bounds writes. Unsigned type conversion fixes. Trimmed compute post process shader inputs. Change 3441680 by Uriel.Doyon Added units to point light intensity, to allow the user to specify the value in candelas or lumens. New point light actors now configure the intensity in candelas by default. Replaced viewport exposure settings by an EV100 slider. Hidding the tone mapper in the show flag now still applies the exposure. Added a new AutoExposure method called EV100 which allows to specify : - MinEV100, MaxEV100 - Calibration Constnat - Exposure Compensation #jira UE-42783 Change 3454636 by Uriel.Doyon Fixed point light having an extra scale of 16 in mobile #jira UE-45272 Change 3454844 by Uriel.Doyon Fixed extra X16 on some point lights #jira UE-45250 Change 3454934 by Chris.Bunner Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability. Change 3461206 by Guillaume.Abadie Adds possibility to scene captures and player controller to render no primitives at all. Change 3461207 by Guillaume.Abadie Exposes showflag details to USceneCaptureComponent. This gives the possibility to configure scene capture's showflags in blueprint encapsulated compositing pipeline. #jira UE-6810 Change 3461233 by Chris.Bunner Added Log10 material expression. Added tooltip for Log2 and Log10. Change 3461434 by Michael.Trepka Copy of CL 3456118 In Metal RHI report texture streaming as immediately successful as on D3D to avoid a race-condition leading to deadlock between the Main, Game, Render & RHI threads. #jira UE-44961 Change 3461770 by Benjamin.Hyder Submitting TM-RayTracedDistanceField map Change 3461929 by Marc.Olano Add Sobol blueprint and material node test maps to RenderTest project Change 3462249 by Uriel.Doyon Translucency after DoF is now disabled when showflag postprocess is disabled. Change 3462371 by Brian.Karis VT addressing is now 64bit to support huge sparse virtualized volumes 16bit page tables working. Change 3462936 by Marc.Olano Extend Sobol testing map with comparision between Random Sobol and Next Sobol functions Change 3464394 by Uriel.Doyon Improved synchronization for texture streaming commands. This fixes an issue when accessing FStreamingTexture for pending textures. Change 3464743 by Guillaume.Abadie Adds .usf file extension on all shader's source file names and adds checks to verify them at engine load time. Change 3464818 by Guillaume.Abadie Fixes compilation error in FindShaderRelativePath Change 3465184 by Daniel.Wright r.Shadow.PreShadowResolutionFactor 1.0 on Epic shadow settings Change 3465283 by Marc.Olano Update Sobol Gray code tables to match random order tables Change 3465976 by Arne.Schober DR - [UE-44393] - The Canvas is using the Globalshaders for clearing but compilation is done asynconously at load time. Unfortunately there could be Code that uses a canvas to draw and cause this issue in between. There might be some plugins that do this. For now we need to wait and block for the shaqders to be compiled until we can allo the use of the canvas. #RB none Change 3467513 by Guillaume.Abadie Fixes an issue where primitives would no longer draw in gameplay. #jira UE-45550 Change 3471116 by Richard.Wallis Mac OpenGL Is No Longer Supported - Remove All Code & Shader Platforms. Merge of CL 3327784 dev-editor stream from Michael Trepka with some extra changes. - Also removed Metal shader platforms from PlatformSupportsDebugViewShaders() otherwise we get a compiler error. HLSL register binds not implemented in metal backend. #jira UE-39108 Change 3471117 by Richard.Wallis Drop down menus clip on 27" Screen iMacs. Disable viewport HDR rendering on macOS 10.12.x when in editor. #jira UE-43026 Change 3471130 by Richard.Wallis Mac GPU hang causes editor output log to be written to the wrong file. Try to emulate windows behaviour when opening a file for reading or writing. Tested against behaviour of windows log file with multiple instances running. - Only defined in for Mac and non shipping. #jira UE-44934 Change 3471224 by Guillaume.Abadie Lets the ProjectFileGenerator to look at Shaders/ directories in plugin and game projects. Change 3471646 by Daniel.Wright Fixed ensure opening UT system settings Change 3471862 by Arne.Schober DR - revert accidently checked in changes. #RB Chris.Bunner Change 3472249 by Guillaume.Abadie Implements virtual shader source directory mapping. - /Engine/... maps to Engine/Shaders/... - /Plugin/FooBar/... maps to FooBar plugin's Shaders/ directory - /Project/... maps to project's Shaders/ directory Change 3472443 by Daniel.Wright Moved the Rendering category for lights to be just below the Light category, so the bVisible property is easily accessible Change 3474537 by Uriel.Doyon Fixed lighting needs rebuild happening after blueprint rescript and a non symetrical Quaterion != ToQuaternion(ToRotator(Quaternion) Change 3475192 by Guillaume.Abadie Implements LensDistortion engine plugin. This CL import a polished version of Raven's lens distortion and undistortion from OpenCV parameters: - It is implemented as the first engine plugin with its own shaders and render thread commands; - Has feature tests in EngineTest with gold images directly extracted from OpenCV itself (GenerateLensDistortionUndistortReferences.py) Change 3475209 by Guillaume.Abadie Back out changelist 3475192 Change 3475252 by Guillaume.Abadie Reland: Implements LensDistortion engine plugin. This CL import a polished version of Raven's lens distortion and undistortion from OpenCV parameters: - It is implemented as the first engine plugin with its own shaders and render thread commands; - Has feature tests in EngineTest with gold images directly extracted from OpenCV itself (GenerateLensDistortionUndistortReferences.py) Change 3475389 by Guillaume.Abadie Adds LensDistortion plugin's feature tests. Change 3475538 by Guillaume.Abadie Adds the /Engine/* prefix on all of the renderer's USF file references. Change 3475568 by Guillaume.Abadie Adds a check for virtual shader source file path format in FShaderType::FShaderType() Change 3475871 by Guillaume.Abadie Fixes a bug in shader compile worker, were an error in a relative #include USF file would trigger an check failure in CheckVirtualShaderFilePath Change 3475997 by Yujiang.Wang Workaround for a compiler optimization bug introduced in VS2015 Update 3. * The bug causes TSHVector<2>::CalcDiffuseTransfer to go to infinity at certain spot, making movable objects with ILCQ_Volume indirect lighting cache interpolation get very dark. * Debug builds don't exhibit this bug. * Semantics are exactly the same as the original code. Change 3476203 by David.Hill Compute SSAO: problem wiht AmbientOcclusionLevels and with various viewporttest sizes. Only seen when Levels >=2 #jira UE-45741 Change 3476536 by Benjamin.Hyder adding player start to Ray Traced Distance Field Shadows Map Change 3478298 by Benjamin.Hyder disabling mesh distance fields in Tm-Raytraced_DistanceField_Shadows map Change 3478948 by Rolando.Caloca DR - Nicer check Change 3478949 by Rolando.Caloca DR - Default GPU morphs to enabled Change 3478950 by Rolando.Caloca DR - By default -vulkan will launch SM5 Change 3478984 by Rolando.Caloca DR - Pass down -vulkan Change 3479655 by Richard.Wallis Video track does not switch in AVF Media Player. Need to disable unused video tracks to allow AVPlayerItemVideoOutput to decode the required track. - Minimal change to allow video track changes/selection. - Audio samples are extracted using AVAssetReaderTrackOutput but video uses AVPlayerItemVideoOutput. Video could also use AVAssetReaderTrackOutput to access the video data unless there is an iOS reason not to... - Flush the audio sink sample buffers so we get instant audio track changes #jira UE-39750, UE-39749 Change 3479834 by Rolando.Caloca DR - Fix issue with bad vertex colors (per licensee) Change 3480376 by Guillaume.Abadie Disables ComputeLightGrid() if no volumetric fog and no lighting. #jira UE-45377 Change 3480596 by Yujiang.Wang Fix for dynamic shadows and raytraced distance field shadows of directional lights not appearing in planar reflection * Bug caused by incorrect shadow culling volumes for cascaded shadow map and backface culling mode for WholeSceneShadowProjection * Fixed by taking View.bReverseCulling into account #jira UE-34452 Change 3480600 by Yujiang.Wang Fix for UE-42376 * The bug is caused by post-processing ambient cubemaps not being supported in forward shading currently. * This fix replaces all the occurences of them in CalcSceneView with a skylight using the cubemap * If a CalcSceneView is used solely for setting the PP ambient cubemap, it is removed. #jira UE-42376 Change 3480784 by Rolando.Caloca DR - hlslcc - Initial support for [RW]StructuredBuffer Change 3481690 by Uriel.Doyon Attempt to fix static analysis warning Change 3482012 by Simon.Tovey Fixed issue when building distribution lookup tables where the final sample fell short of the max input time. As sampling is done only over this range, under constant interpolation the final value was never actually sampled and so cut from the final optimized LUT. #tests constant interpolation now works. #jira UE-45614 Change 3482965 by Yujiang.Wang Some quality of life changes for UE-42757 * The UV overlay in static mesh editor now has a darker background * Selected edges are getting highlighted and bolder * When some edges are selected others turn grey #jira UE-42757 Change 3483014 by David.Hill Change labels on bloom boost from x,y,z to min, max, mult. #jira UE-43904 a PropertyRedirect in BaseEngine.ini allows this to work with older version. Change 3484573 by Yujiang.Wang Fix for shadow color not updated after light build when a texture is changed and reimported * Bug caused by counter-intuitive design of UMaterial::GetReferencedFunctionIds and UMaterial::GetReferencedParameterCollectionIds, both of which will reset the OutIds parameter * Renamed to AppendReferencedFunctionIdsTo and AppendReferencedParameterCollectionIdsTo, the resets are removed #jira UE-45647 Change 3484969 by Yujiang.Wang Fix for UE-39929 inconsistent type between C++ and shader code * MeshDistanceFieldCasterIndices is declared as Buffer<uint> in CapsuleShadowShaders.usf, while created as PF_R32_SINT in CapsuleShadowRendering.cpp * Changed PF_R32_SINT to PF_R32_UINT in CapsuleShadowRendering.cpp #jira UE-39929 Change 3485012 by Yujiang.Wang Fix for UE-39929 #2: Changed int32 to uint32 to match PF_R32_UINT #jira UE-39929 Change 3485146 by Guillaume.Abadie Destroyes scene capture's view states on the UnRegister, to avoid large memory usage cause by the ViewState's render targets when moving blueprints arround. #jira UE-43455 Change 3486602 by Joe.Conley Adding "texcoord" keyword to UMaterialExpressionTextureCoordinate so you can search for the name that is displayed on the node in the graph. Change 3487471 by Yujiang.Wang Github #3659: Improved performance of DumpUnbuiltLightInteractions * Replaced TArrays with TSets #jira UE-45783 Change 3487641 by Guillaume.Abadie Fixes some shader file name casing issues in LPV. Change 3488014 by Uriel.Doyon New AllowAsyncLoading flag for UTexture::CachePlatformData(). It allows to load the source texture data in the async task if the source bulk data was not yet loaded. Data loaded that way is not sharable between tasks and will be discarded. This is required because updating the source data is not thread safe. #jira UERNDR-190 #jira UE-33401 Change 3488249 by Uriel.Doyon Fixed long stall in UpdateResourceStreaming() caused by Actor.GetComponents() not resetting the number of actors anymore. Fixed inconsistent results in ALODActor::HasValidSubActors() caused by the same change. #jira UE-46004 Change 3490228 by Mark.Satterthwaite Fix the Nvidia driver bug with the old reversebits fallback function - you need to use the native reverse_bits intrinsic or use some uint(ushort()) casts to get the compiler to do the right thing, which means injecting the reverse_bits function in MetalBackend not the HLSL (as it has no such type). #jira UE-46067 Change 3490538 by Arne.Schober Back out changelist 3488249 #RB none Change 3490551 by Arne.Schober Back out changelist 3488249 #RB none Change 3491828 by Guillaume.Abadie Fixes another USf file reference casing issue in C++. Change 3491924 by Yujiang.Wang Fix for UE-43302 Crash when entering the DebugCreatePlayer console command with planar reflections in the level * Crash caused by check(Views.Num() <= 2); in SceneCaptureRendering.cpp * We still want to support at most 2 views for performance, but now instead of crash the planar reflections in additional views will simply turn black #jira UE-43302 Change 3492359 by Guillaume.Abadie Fixes non editor launches, failing in FGenericPlatformProcess::AddShaderSourceDirectoryMapping(). Change 3492367 by Marc.Olano Change Sobol texture size to 32x16, tweak distribution Change 3492599 by Marcus.Wassmer PR #3669: -Fix logmessages ParticleModules_Location.cpp (Contributed by UpwindSpring01) Change 3493473 by Uriel.Doyon Back out changelist 3490538 Change 3493590 by Uriel.Doyon Back out changelist 3490551 Fixed missing #pragma once Change 3493911 by Marcus.Wassmer Fix potential GPU crash/hang caused by out of bound subresource updates. Added checks at cross-platform level to catch any instance earlier. Change 3494139 by Uriel.Doyon Fixed shadow variable issue on UE4Editor Linux. Change 3494364 by Richard.Wallis Mac OpenGL Is No Longer Supported - Remove All Code & Shader Platforms - Part 2: Remove some more areas and fixes for previous attempt. Also removed OpenGL based GPU performance checks in EditorEngine.cpp - assuming that any GPU that can run Metal is currently OK for UE4. OpenGL left in the following areas: - OpenGLShaderCompiler - StandaloneRenderer The following files need to be reviewed in conjunction with CL 3471116 as there were some logic errors made: - OpenGLTexture.cpp #jira UE-39108 Change 3494413 by Guillaume.Abadie Updates r.InvalidateCachedShader and bump ShaderVersion.ush. Change 3494422 by Guillaume.Abadie Adds LensDistortion plugin's Private shader directory. Change 3494717 by Guillaume.Abadie Strengthens shader compiler with checks on generated file names and shader type file names. Change 3494763 by Guillaume.Abadie Removes a nolonger standing TODO in GlobalBeginCompileShader() that was automatically adding /Engine/ prefix to all relative virtual shader source file path. Change 3494985 by Rolando.Caloca DR - Integrate Vulkan Rewrite Change 3495031 by Rolando.Caloca DR - Delete file as it moved Change 3495032 by Rolando.Caloca DR - Show Vulkan SM5 instead of SM4 on windows packaging - Also added support for Vulkan SM5_UB Change 3495202 by Uriel.Doyon Fixed static analysis warning with pointer dereferencing. Change 3495342 by Rolando.Caloca DR - clang compile fix Change 3495354 by Rolando.Caloca DR - clang compile fixes Change 3495420 by Marc.Olano Use Sobol sampling for PCSS Change 3495799 by Rolando.Caloca DR - Delete old dev assets Change 3496202 by Mark.Satterthwaite Switch to using actual Vector*Matrix intrinsic for Metal to avoid a problem whereby the Metal compiler reorders operations in such a way that it loses precision and ends up being different between pre-pass and base-pass. #jira UE-46070 Change 3496253 by Uriel.Doyon Fixed static analysis warning for IncludeTool Change 3496631 by Guillaume.Abadie Makes AScreenshotFunctionalTest::ScreenshotOptions blueprint readable. Change 3496851 by Guillaume.Abadie Fixes back slash issues in Platform.usf. Change 3496852 by Guillaume.Abadie Fixes other back slashes includes in PS4 specific usf files. Change 3496941 by Guillaume.Abadie Adds a check() for no backslash in virtual shader file paths. Change 3497661 by Guillaume.Abadie Lets FLensDistortionCameraModel::GetUndistortOverscanFactor() early return 1.0 if the camera model is does an identity transform. Change 3497969 by Richard.Wallis Fix for start Up Movies Are not Playing for iOS Devices. Handle case when movie is loading aysnc in background - need to wait for state changes otherwise it skips intermediate movies. - Tested on iOS and Mac. #jira UE-39585 Change 3498035 by Guillaume.Abadie Polishes //Engine/Plugins/Compositing/LensDistortion/Shaders/Private/UVGeneration.usf from debuging artifacts. Change 3498101 by Rolando.Caloca DR - Compile fix Change 3498254 by Guillaume.Abadie Exposes comparing FLensDistortionCameraModel to blueprint with == and != operator nodes for cross frame uv displacement map caching. Change 3498264 by Guillaume.Abadie Integrate 3267269: Implements SceneCaptureComponent2D::bCameraCutThisFrame Change 3498371 by Yujiang.Wang Fix for UE-46149 Planar Reflections display screenspace info when viewports are >2 * Prevent planar reflections being rendered when ViewIndex >= GMaxPlanarReflectionViews * Now planar reflections in >2 viewports will fallback to other reflection methods (SSR, reflection captures) #jira UE-46149 Change 3498409 by Rolando.Caloca DR - Swap resolves Change 3498410 by Guillaume.Abadie Adds support for opacity output alpha for post process material when doing a draw material to render target. Change 3498705 by Rolando.Caloca DR - Add UID for debugging mem allocations Change 3498759 by Marcus.Wassmer No post processing in vertexcolor view mode #jira UE-44704 Change 3498891 by Rolando.Caloca DR - Minor Vulkan per frame allocator refactor in prep for changes Change 3499206 by Rolando.Caloca DR - Fix temp frame allocator OOM on Vulkan #jira UE-45913 Change 3499319 by Rolando.Caloca DR - Vulkan support for StorageBuffer Change 3499339 by Rolando.Caloca DR - Remove deprecated typedef Change 3499400 by Rolando.Caloca DR - Remove some RHICmdList deprecated functions Change 3499422 by Rolando.Caloca DR - Allow buffer transitions inside render passes Change 3500370 by Rolando.Caloca DR - Compile fix Change 3500474 by Rolando.Caloca DR - Fix static analysis Change 3500517 by Guillaume.Abadie Exposes r.PostProcessing.PropagateAlpha to the renderer settings. Change 3500537 by Guillaume.Abadie Fixes a bug where scene capture WorldToView matrix would get scale != 1 when scaling the scene capture actor in the world. #jira UE-39389 Change 3501069 by Mark.Satterthwaite Bring back temporary 4.16 fix for iOS 9 (CL #3425995) into Dev-Rendering for 4.17 as a real fix will need to wait for 4.18. temporary fix for skewed textures on IOS 9 #jira UE-44468 Change 3501164 by Michael.Lentine PR #3402: UE-43131: Format argument count not equal to actual arguments (Contributed by projectgheist) Change 3501222 by Benjamin.Hyder Checking in Tm_SobolNoise map Change 3501612 by zachary.wilson Adding testing content for RTDF shadows on planar reflections Change 3501708 by Guillaume.Abadie Break FPostProcessSettings into smallers structs. Change 3501830 by Olaf.Piesche #jira UE-39628; using fix proposed in UDN, will investigate further Change 3501954 by Marcus.Wassmer Duplicate 3480903 Light culling safety measures. Change 3502032 by Mark.Satterthwaite Fix generation of Metal precompiled headers for the bytecode compiler when using Xcode 9. Change 3502118 by Uriel.Doyon Fixed shader compilation issues. Change 3502191 by Guillaume.Abadie Implements Composure plugin to make compositing in UE4 easier. Change 3502192 by Guillaume.Abadie Implements Composure feature testing in EngineTests Change 3502196 by Guillaume.Abadie Creates a dependency of Composure plugin over LensDistortion plugin. Change 3502213 by Arciel.Rekman Fix for loading shaders on Linux (UE-46276). Change 3502243 by Brian.Karis Bent normal map support. Multibounce AO. Spherical Gaussian based specular occlusion. Change 3502506 by Guillaume.Abadie Fixes compilation failure in Composure with unity build. Change 3502507 by Guillaume.Abadie Fixes composure Set Pass with Render Target blueprint helper. Change 3502510 by Guillaume.Abadie Attempts to fix ComposureUtils.cpp compile errors. Change 3502515 by Guillaume.Abadie Some other composure failure fixes. Change 3502545 by Guillaume.Abadie Fixes some unity build related error in Composure. Change 3502548 by Guillaume.Abadie Fixes last missing includes in ComposurePostProcessPass.cpp Change 3502672 by Guillaume.Abadie Fixes linux warning in Composure. Change 3502790 by Ryan.Brucks float4 PseudoVolumeTexture: Fixed frame layout being a float instead of float2. Now works correctly with non-square frame layouts. Only called in custom nodes and calling with a float still functions properly so no old content will break. Change 3502836 by Guillaume.Abadie Propagates scene capture engine showflag changes from blueprint editor to the blueprint instances. #jira UE-6810 Change 3503096 by Guillaume.Abadie Resave a unversioned asset. Change 3503228 by Yujiang.Wang Fix for UE-45646 Dynamic Light placed inside of a Dynamic Static Mesh doesn't pass through the geometry * Bug caused by bReflectiveShadowmap not being passed into SetViewFlagsForShadowPass * Replaced the true with bReflectiveShadowmap #jira UE-45646 Change 3503284 by Rolando.Caloca DR - Fixed initial clear on rendertargets - Added support for r.Vulkan.EnableValidation 1, 2, 3 & 4 - Dump the vulkan log into VS output log - Added validation for layouts when using dump log Change 3503545 by Arciel.Rekman Fix black UI on Linux (UE-46333) - Rebuilt hlslcc with clang 3.7.0. Whatever issues we're running in with newer clangs still seem to persist. #jira UE-46333 Change 3503638 by Daniel.Wright [Copy] Changed DynamicBentNormalAO back to fp16, as PF_FloatR11G11B10 was not enough precision and introduced banding Change 3503787 by Marcus.Wassmer Fix difference between gpu/cpu morph target application Change 3503902 by Marcus.Wassmer Roll back TAA refactor until we have time to look into the bad interaction with DOF. Change 3503953 by Arne.Schober DR - UE-46319 - borked Reflections: The resource transition needs to be in this weired place for PS4 and switch until we teach the interface to know about subresources. #RB Marcus.Wassmer Change 3504131 by Rolando.Caloca DR - Maintain a cache of pipeline and descriptor set layouts - Fix marker dump Change 3504462 by Guillaume.Abadie Fixes an assertion failure that was failing because compute light grid was not done, but the shader used where not necessarily using compute light grid results. #jira UE-46277 Change 3504779 by Chris.Bunner Potential static analysis fix. #jira UE-46360 Change 3504950 by Marc.Olano Allow Sobol material nodes & textures only if feature level is at least ES3.1 #jira UE-46334 #jira UE-46317 Change 3505035 by Daniel.Wright Increased MaxSearchCount in GetShaderIncludes. The previous limit of 20 is now getting hit in BasePassPixelShader.usf, causing compiles to fail erroneously. Change 3505386 by Daniel.Wright GetShaderIncludes handles infinite recursion gracefully, needed by Metal causing BasePassTessellation.usf to include BasePassVertexShader.usf Change 3505491 by Rolando.Caloca DR - Fix crash on first frame of particles on modern APIs Change 3505557 by Chris.Bunner [Duplicate] Workaround for outdated shader map crash. #jira UE-46061 Change 3506071 by Rolando.Caloca DR - Vulkan fixes - Fix copy out of bounds reading textures to CPU - Defer event deletion - Split validation for errors and warnings - Skip validation error about attachment not used Change 3506698 by Guillaume.Abadie Fixes Composure alpha channel clobering and performance regression in bloom and tonemapper passes caused by scene capture API compatibility breakage brought by Fortnite merge. Change 3506797 by Rolando.Caloca DR - Fix static analysis #jira UE-46428 Change 3506861 by Rolando.Caloca DR - Fix crash due to layering violation #jira UE-46424 #jira UE-46431 Change 3508098 by Rolando.Caloca DR - Fix for Vulkan ES31 crash - Fix for AMD ensure Change 3508123 by Rolando.Caloca DR - Disable occlusion queries on Vulkan to avoid flickering - Fix for bad HZB & cube mips on Vulkan (now using RHIGenerateMips) - Fix for decal blending #jira UE-46376 Change 3509064 by Uriel.Doyon Changing the logic arround generating an error when HasHadBulkDataCleared() so that it only triggers if the DDC are not found. #jira UE-46427 Change 3509854 by Marc.Olano Fix 2D Sobol gray code numbers. Just changes some numbers in initialization tables, so no effect on existing tests or content. Change 3509920 by Marcus.Wassmer Fix LPV fastvram ensure Change 3509937 by Rolando.Caloca DR - Fix crash due to deleted viewport #jira UE-46281 Change 3509988 by Marcus.Wassmer Roll back part of Sobol fix to avoid full shader recompile for integration. Change 3510255 by Rolando.Caloca DR - Fix popup window ensure #jira UE-46511 Change 3510646 by Marcus.Wassmer fix ios compiles Change 3511442 by Rolando.Caloca DR - Change mesh simplification check to ensure/checkslow to unblock #jira UE-46538 DONE! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CHANGES WITH MULTIPLE PLATFORMS!!! YOU MUST COPY THESE INTO THE OTHER ONES AS MAKES SENSE!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Change 3467095 by Guillaume.Abadie Nukes all += TEXT(".usf") #jira UE-45530 Change 3475084 by Guillaume.Abadie Fixes compilation failure of the shader compiler on PS4 and XboxOne Change 3477464 by Guillaume.Abadie Fixes dumpshaderinfo that generate unecessary sub directory, breaking shell scripts. Change 3494395 by Guillaume.Abadie Moves all engine shader files into Public and Private directory, and introduce the .ush extensions for header file that do not contains entry points. DONE! [CL 3511602 by Marcus Wassmer in Main branch]
2017-06-27 11:38:28 -04:00
glBindBuffer( GL_PIXEL_PACK_BUFFER, PixelBuffer->Resource );
if (GLFormat.bCompressed)
{
FOpenGL::GetCompressedTexImage(Src->bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Src->Target,
SrcMipIndex,
0); // offset into PBO
}
else
{
glPixelStorei(GL_PACK_ALIGNMENT, 1);
FOpenGL::GetTexImage(Src->bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Src->Target,
SrcMipIndex,
GLFormat.Format,
GLFormat.Type,
0); // offset into PBO
glPixelStorei(GL_PACK_ALIGNMENT, 4);
}
// copy the texture data
// Upload directly into Dst to avoid out-of-band synchronization caused by glMapBuffer!
{
CachedBindPixelUnpackBuffer( GL_PIXEL_UNPACK_BUFFER, PixelBuffer->Resource );
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLDynamicRHI::Get().CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Target, GetResource(), -1, this->GetNumMips());
if( this->GetSizeZ() )
{
// texture 2D array
if (GLFormat.bCompressed)
{
FOpenGL::CompressedTexSubImage3D(Target,
DstMipIndex,
0,
0,
ArrayIndex,
MipSizeX,
MipSizeY,
1,
GLFormat.InternalFormat[bSRGB],
PixelBuffer->GetSize(),
0);
}
else
{
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
check( FOpenGL::SupportsTexture3D() );
FOpenGL::TexSubImage3D(Target,
DstMipIndex,
0,
0,
ArrayIndex,
MipSizeX,
MipSizeY,
1,
GLFormat.Format,
GLFormat.Type,
0); // offset into PBO
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
}
}
else
{
if (GLFormat.bCompressed)
{
if (GetAllocatedStorageForMip(DstMipIndex,ArrayIndex))
{
glCompressedTexSubImage2D(bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
DstMipIndex,
0,
0,
MipSizeX,
MipSizeY,
GLFormat.InternalFormat[bSRGB],
PixelBuffer->GetSize(),
0); // offset into PBO
}
else
{
glCompressedTexImage2D(bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
DstMipIndex,
GLFormat.InternalFormat[bSRGB],
MipSizeX,
MipSizeY,
0,
PixelBuffer->GetSize(),
0); // offset into PBO
SetAllocatedStorageForMip(DstMipIndex,ArrayIndex);
}
}
else
{
// All construction paths should have called TexStorage2D or TexImage2D. So we will
// always call TexSubImage2D.
check(GetAllocatedStorageForMip(DstMipIndex,ArrayIndex) == true);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexSubImage2D(bCubemap ? GL_TEXTURE_CUBE_MAP_POSITIVE_X + ArrayIndex : Target,
DstMipIndex,
0,
0,
MipSizeX,
MipSizeY,
GLFormat.Format,
GLFormat.Type,
0); // offset into PBO
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
}
}
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3511476) #lockdown Nick.Penwarden ===================================== MAJOR FEATURES + CHANGES ===================================== Change 3372740 by Chris.Bunner [Experimental] Partial compute post process pipeline (r.PostProcess.PreferCompute). StencilSceneTexture added to deferred list. A few known issues to be fixed in a follow-up CL. Change 3374187 by Chris.Bunner Volume texture support for CombineLUTs/Tonemap compute pass. Refactored common param code to shared sub-class in CombineLUTs and Tonemap PS/CS. Skip compute post process out-of-bounds writes. Unsigned type conversion fixes. Trimmed compute post process shader inputs. Change 3441680 by Uriel.Doyon Added units to point light intensity, to allow the user to specify the value in candelas or lumens. New point light actors now configure the intensity in candelas by default. Replaced viewport exposure settings by an EV100 slider. Hidding the tone mapper in the show flag now still applies the exposure. Added a new AutoExposure method called EV100 which allows to specify : - MinEV100, MaxEV100 - Calibration Constnat - Exposure Compensation #jira UE-42783 Change 3454636 by Uriel.Doyon Fixed point light having an extra scale of 16 in mobile #jira UE-45272 Change 3454844 by Uriel.Doyon Fixed extra X16 on some point lights #jira UE-45250 Change 3454934 by Chris.Bunner Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability. Change 3461206 by Guillaume.Abadie Adds possibility to scene captures and player controller to render no primitives at all. Change 3461207 by Guillaume.Abadie Exposes showflag details to USceneCaptureComponent. This gives the possibility to configure scene capture's showflags in blueprint encapsulated compositing pipeline. #jira UE-6810 Change 3461233 by Chris.Bunner Added Log10 material expression. Added tooltip for Log2 and Log10. Change 3461434 by Michael.Trepka Copy of CL 3456118 In Metal RHI report texture streaming as immediately successful as on D3D to avoid a race-condition leading to deadlock between the Main, Game, Render & RHI threads. #jira UE-44961 Change 3461770 by Benjamin.Hyder Submitting TM-RayTracedDistanceField map Change 3461929 by Marc.Olano Add Sobol blueprint and material node test maps to RenderTest project Change 3462249 by Uriel.Doyon Translucency after DoF is now disabled when showflag postprocess is disabled. Change 3462371 by Brian.Karis VT addressing is now 64bit to support huge sparse virtualized volumes 16bit page tables working. Change 3462936 by Marc.Olano Extend Sobol testing map with comparision between Random Sobol and Next Sobol functions Change 3464394 by Uriel.Doyon Improved synchronization for texture streaming commands. This fixes an issue when accessing FStreamingTexture for pending textures. Change 3464743 by Guillaume.Abadie Adds .usf file extension on all shader's source file names and adds checks to verify them at engine load time. Change 3464818 by Guillaume.Abadie Fixes compilation error in FindShaderRelativePath Change 3465184 by Daniel.Wright r.Shadow.PreShadowResolutionFactor 1.0 on Epic shadow settings Change 3465283 by Marc.Olano Update Sobol Gray code tables to match random order tables Change 3465976 by Arne.Schober DR - [UE-44393] - The Canvas is using the Globalshaders for clearing but compilation is done asynconously at load time. Unfortunately there could be Code that uses a canvas to draw and cause this issue in between. There might be some plugins that do this. For now we need to wait and block for the shaqders to be compiled until we can allo the use of the canvas. #RB none Change 3467513 by Guillaume.Abadie Fixes an issue where primitives would no longer draw in gameplay. #jira UE-45550 Change 3471116 by Richard.Wallis Mac OpenGL Is No Longer Supported - Remove All Code & Shader Platforms. Merge of CL 3327784 dev-editor stream from Michael Trepka with some extra changes. - Also removed Metal shader platforms from PlatformSupportsDebugViewShaders() otherwise we get a compiler error. HLSL register binds not implemented in metal backend. #jira UE-39108 Change 3471117 by Richard.Wallis Drop down menus clip on 27" Screen iMacs. Disable viewport HDR rendering on macOS 10.12.x when in editor. #jira UE-43026 Change 3471130 by Richard.Wallis Mac GPU hang causes editor output log to be written to the wrong file. Try to emulate windows behaviour when opening a file for reading or writing. Tested against behaviour of windows log file with multiple instances running. - Only defined in for Mac and non shipping. #jira UE-44934 Change 3471224 by Guillaume.Abadie Lets the ProjectFileGenerator to look at Shaders/ directories in plugin and game projects. Change 3471646 by Daniel.Wright Fixed ensure opening UT system settings Change 3471862 by Arne.Schober DR - revert accidently checked in changes. #RB Chris.Bunner Change 3472249 by Guillaume.Abadie Implements virtual shader source directory mapping. - /Engine/... maps to Engine/Shaders/... - /Plugin/FooBar/... maps to FooBar plugin's Shaders/ directory - /Project/... maps to project's Shaders/ directory Change 3472443 by Daniel.Wright Moved the Rendering category for lights to be just below the Light category, so the bVisible property is easily accessible Change 3474537 by Uriel.Doyon Fixed lighting needs rebuild happening after blueprint rescript and a non symetrical Quaterion != ToQuaternion(ToRotator(Quaternion) Change 3475192 by Guillaume.Abadie Implements LensDistortion engine plugin. This CL import a polished version of Raven's lens distortion and undistortion from OpenCV parameters: - It is implemented as the first engine plugin with its own shaders and render thread commands; - Has feature tests in EngineTest with gold images directly extracted from OpenCV itself (GenerateLensDistortionUndistortReferences.py) Change 3475209 by Guillaume.Abadie Back out changelist 3475192 Change 3475252 by Guillaume.Abadie Reland: Implements LensDistortion engine plugin. This CL import a polished version of Raven's lens distortion and undistortion from OpenCV parameters: - It is implemented as the first engine plugin with its own shaders and render thread commands; - Has feature tests in EngineTest with gold images directly extracted from OpenCV itself (GenerateLensDistortionUndistortReferences.py) Change 3475389 by Guillaume.Abadie Adds LensDistortion plugin's feature tests. Change 3475538 by Guillaume.Abadie Adds the /Engine/* prefix on all of the renderer's USF file references. Change 3475568 by Guillaume.Abadie Adds a check for virtual shader source file path format in FShaderType::FShaderType() Change 3475871 by Guillaume.Abadie Fixes a bug in shader compile worker, were an error in a relative #include USF file would trigger an check failure in CheckVirtualShaderFilePath Change 3475997 by Yujiang.Wang Workaround for a compiler optimization bug introduced in VS2015 Update 3. * The bug causes TSHVector<2>::CalcDiffuseTransfer to go to infinity at certain spot, making movable objects with ILCQ_Volume indirect lighting cache interpolation get very dark. * Debug builds don't exhibit this bug. * Semantics are exactly the same as the original code. Change 3476203 by David.Hill Compute SSAO: problem wiht AmbientOcclusionLevels and with various viewporttest sizes. Only seen when Levels >=2 #jira UE-45741 Change 3476536 by Benjamin.Hyder adding player start to Ray Traced Distance Field Shadows Map Change 3478298 by Benjamin.Hyder disabling mesh distance fields in Tm-Raytraced_DistanceField_Shadows map Change 3478948 by Rolando.Caloca DR - Nicer check Change 3478949 by Rolando.Caloca DR - Default GPU morphs to enabled Change 3478950 by Rolando.Caloca DR - By default -vulkan will launch SM5 Change 3478984 by Rolando.Caloca DR - Pass down -vulkan Change 3479655 by Richard.Wallis Video track does not switch in AVF Media Player. Need to disable unused video tracks to allow AVPlayerItemVideoOutput to decode the required track. - Minimal change to allow video track changes/selection. - Audio samples are extracted using AVAssetReaderTrackOutput but video uses AVPlayerItemVideoOutput. Video could also use AVAssetReaderTrackOutput to access the video data unless there is an iOS reason not to... - Flush the audio sink sample buffers so we get instant audio track changes #jira UE-39750, UE-39749 Change 3479834 by Rolando.Caloca DR - Fix issue with bad vertex colors (per licensee) Change 3480376 by Guillaume.Abadie Disables ComputeLightGrid() if no volumetric fog and no lighting. #jira UE-45377 Change 3480596 by Yujiang.Wang Fix for dynamic shadows and raytraced distance field shadows of directional lights not appearing in planar reflection * Bug caused by incorrect shadow culling volumes for cascaded shadow map and backface culling mode for WholeSceneShadowProjection * Fixed by taking View.bReverseCulling into account #jira UE-34452 Change 3480600 by Yujiang.Wang Fix for UE-42376 * The bug is caused by post-processing ambient cubemaps not being supported in forward shading currently. * This fix replaces all the occurences of them in CalcSceneView with a skylight using the cubemap * If a CalcSceneView is used solely for setting the PP ambient cubemap, it is removed. #jira UE-42376 Change 3480784 by Rolando.Caloca DR - hlslcc - Initial support for [RW]StructuredBuffer Change 3481690 by Uriel.Doyon Attempt to fix static analysis warning Change 3482012 by Simon.Tovey Fixed issue when building distribution lookup tables where the final sample fell short of the max input time. As sampling is done only over this range, under constant interpolation the final value was never actually sampled and so cut from the final optimized LUT. #tests constant interpolation now works. #jira UE-45614 Change 3482965 by Yujiang.Wang Some quality of life changes for UE-42757 * The UV overlay in static mesh editor now has a darker background * Selected edges are getting highlighted and bolder * When some edges are selected others turn grey #jira UE-42757 Change 3483014 by David.Hill Change labels on bloom boost from x,y,z to min, max, mult. #jira UE-43904 a PropertyRedirect in BaseEngine.ini allows this to work with older version. Change 3484573 by Yujiang.Wang Fix for shadow color not updated after light build when a texture is changed and reimported * Bug caused by counter-intuitive design of UMaterial::GetReferencedFunctionIds and UMaterial::GetReferencedParameterCollectionIds, both of which will reset the OutIds parameter * Renamed to AppendReferencedFunctionIdsTo and AppendReferencedParameterCollectionIdsTo, the resets are removed #jira UE-45647 Change 3484969 by Yujiang.Wang Fix for UE-39929 inconsistent type between C++ and shader code * MeshDistanceFieldCasterIndices is declared as Buffer<uint> in CapsuleShadowShaders.usf, while created as PF_R32_SINT in CapsuleShadowRendering.cpp * Changed PF_R32_SINT to PF_R32_UINT in CapsuleShadowRendering.cpp #jira UE-39929 Change 3485012 by Yujiang.Wang Fix for UE-39929 #2: Changed int32 to uint32 to match PF_R32_UINT #jira UE-39929 Change 3485146 by Guillaume.Abadie Destroyes scene capture's view states on the UnRegister, to avoid large memory usage cause by the ViewState's render targets when moving blueprints arround. #jira UE-43455 Change 3486602 by Joe.Conley Adding "texcoord" keyword to UMaterialExpressionTextureCoordinate so you can search for the name that is displayed on the node in the graph. Change 3487471 by Yujiang.Wang Github #3659: Improved performance of DumpUnbuiltLightInteractions * Replaced TArrays with TSets #jira UE-45783 Change 3487641 by Guillaume.Abadie Fixes some shader file name casing issues in LPV. Change 3488014 by Uriel.Doyon New AllowAsyncLoading flag for UTexture::CachePlatformData(). It allows to load the source texture data in the async task if the source bulk data was not yet loaded. Data loaded that way is not sharable between tasks and will be discarded. This is required because updating the source data is not thread safe. #jira UERNDR-190 #jira UE-33401 Change 3488249 by Uriel.Doyon Fixed long stall in UpdateResourceStreaming() caused by Actor.GetComponents() not resetting the number of actors anymore. Fixed inconsistent results in ALODActor::HasValidSubActors() caused by the same change. #jira UE-46004 Change 3490228 by Mark.Satterthwaite Fix the Nvidia driver bug with the old reversebits fallback function - you need to use the native reverse_bits intrinsic or use some uint(ushort()) casts to get the compiler to do the right thing, which means injecting the reverse_bits function in MetalBackend not the HLSL (as it has no such type). #jira UE-46067 Change 3490538 by Arne.Schober Back out changelist 3488249 #RB none Change 3490551 by Arne.Schober Back out changelist 3488249 #RB none Change 3491828 by Guillaume.Abadie Fixes another USf file reference casing issue in C++. Change 3491924 by Yujiang.Wang Fix for UE-43302 Crash when entering the DebugCreatePlayer console command with planar reflections in the level * Crash caused by check(Views.Num() <= 2); in SceneCaptureRendering.cpp * We still want to support at most 2 views for performance, but now instead of crash the planar reflections in additional views will simply turn black #jira UE-43302 Change 3492359 by Guillaume.Abadie Fixes non editor launches, failing in FGenericPlatformProcess::AddShaderSourceDirectoryMapping(). Change 3492367 by Marc.Olano Change Sobol texture size to 32x16, tweak distribution Change 3492599 by Marcus.Wassmer PR #3669: -Fix logmessages ParticleModules_Location.cpp (Contributed by UpwindSpring01) Change 3493473 by Uriel.Doyon Back out changelist 3490538 Change 3493590 by Uriel.Doyon Back out changelist 3490551 Fixed missing #pragma once Change 3493911 by Marcus.Wassmer Fix potential GPU crash/hang caused by out of bound subresource updates. Added checks at cross-platform level to catch any instance earlier. Change 3494139 by Uriel.Doyon Fixed shadow variable issue on UE4Editor Linux. Change 3494364 by Richard.Wallis Mac OpenGL Is No Longer Supported - Remove All Code & Shader Platforms - Part 2: Remove some more areas and fixes for previous attempt. Also removed OpenGL based GPU performance checks in EditorEngine.cpp - assuming that any GPU that can run Metal is currently OK for UE4. OpenGL left in the following areas: - OpenGLShaderCompiler - StandaloneRenderer The following files need to be reviewed in conjunction with CL 3471116 as there were some logic errors made: - OpenGLTexture.cpp #jira UE-39108 Change 3494413 by Guillaume.Abadie Updates r.InvalidateCachedShader and bump ShaderVersion.ush. Change 3494422 by Guillaume.Abadie Adds LensDistortion plugin's Private shader directory. Change 3494717 by Guillaume.Abadie Strengthens shader compiler with checks on generated file names and shader type file names. Change 3494763 by Guillaume.Abadie Removes a nolonger standing TODO in GlobalBeginCompileShader() that was automatically adding /Engine/ prefix to all relative virtual shader source file path. Change 3494985 by Rolando.Caloca DR - Integrate Vulkan Rewrite Change 3495031 by Rolando.Caloca DR - Delete file as it moved Change 3495032 by Rolando.Caloca DR - Show Vulkan SM5 instead of SM4 on windows packaging - Also added support for Vulkan SM5_UB Change 3495202 by Uriel.Doyon Fixed static analysis warning with pointer dereferencing. Change 3495342 by Rolando.Caloca DR - clang compile fix Change 3495354 by Rolando.Caloca DR - clang compile fixes Change 3495420 by Marc.Olano Use Sobol sampling for PCSS Change 3495799 by Rolando.Caloca DR - Delete old dev assets Change 3496202 by Mark.Satterthwaite Switch to using actual Vector*Matrix intrinsic for Metal to avoid a problem whereby the Metal compiler reorders operations in such a way that it loses precision and ends up being different between pre-pass and base-pass. #jira UE-46070 Change 3496253 by Uriel.Doyon Fixed static analysis warning for IncludeTool Change 3496631 by Guillaume.Abadie Makes AScreenshotFunctionalTest::ScreenshotOptions blueprint readable. Change 3496851 by Guillaume.Abadie Fixes back slash issues in Platform.usf. Change 3496852 by Guillaume.Abadie Fixes other back slashes includes in PS4 specific usf files. Change 3496941 by Guillaume.Abadie Adds a check() for no backslash in virtual shader file paths. Change 3497661 by Guillaume.Abadie Lets FLensDistortionCameraModel::GetUndistortOverscanFactor() early return 1.0 if the camera model is does an identity transform. Change 3497969 by Richard.Wallis Fix for start Up Movies Are not Playing for iOS Devices. Handle case when movie is loading aysnc in background - need to wait for state changes otherwise it skips intermediate movies. - Tested on iOS and Mac. #jira UE-39585 Change 3498035 by Guillaume.Abadie Polishes //Engine/Plugins/Compositing/LensDistortion/Shaders/Private/UVGeneration.usf from debuging artifacts. Change 3498101 by Rolando.Caloca DR - Compile fix Change 3498254 by Guillaume.Abadie Exposes comparing FLensDistortionCameraModel to blueprint with == and != operator nodes for cross frame uv displacement map caching. Change 3498264 by Guillaume.Abadie Integrate 3267269: Implements SceneCaptureComponent2D::bCameraCutThisFrame Change 3498371 by Yujiang.Wang Fix for UE-46149 Planar Reflections display screenspace info when viewports are >2 * Prevent planar reflections being rendered when ViewIndex >= GMaxPlanarReflectionViews * Now planar reflections in >2 viewports will fallback to other reflection methods (SSR, reflection captures) #jira UE-46149 Change 3498409 by Rolando.Caloca DR - Swap resolves Change 3498410 by Guillaume.Abadie Adds support for opacity output alpha for post process material when doing a draw material to render target. Change 3498705 by Rolando.Caloca DR - Add UID for debugging mem allocations Change 3498759 by Marcus.Wassmer No post processing in vertexcolor view mode #jira UE-44704 Change 3498891 by Rolando.Caloca DR - Minor Vulkan per frame allocator refactor in prep for changes Change 3499206 by Rolando.Caloca DR - Fix temp frame allocator OOM on Vulkan #jira UE-45913 Change 3499319 by Rolando.Caloca DR - Vulkan support for StorageBuffer Change 3499339 by Rolando.Caloca DR - Remove deprecated typedef Change 3499400 by Rolando.Caloca DR - Remove some RHICmdList deprecated functions Change 3499422 by Rolando.Caloca DR - Allow buffer transitions inside render passes Change 3500370 by Rolando.Caloca DR - Compile fix Change 3500474 by Rolando.Caloca DR - Fix static analysis Change 3500517 by Guillaume.Abadie Exposes r.PostProcessing.PropagateAlpha to the renderer settings. Change 3500537 by Guillaume.Abadie Fixes a bug where scene capture WorldToView matrix would get scale != 1 when scaling the scene capture actor in the world. #jira UE-39389 Change 3501069 by Mark.Satterthwaite Bring back temporary 4.16 fix for iOS 9 (CL #3425995) into Dev-Rendering for 4.17 as a real fix will need to wait for 4.18. temporary fix for skewed textures on IOS 9 #jira UE-44468 Change 3501164 by Michael.Lentine PR #3402: UE-43131: Format argument count not equal to actual arguments (Contributed by projectgheist) Change 3501222 by Benjamin.Hyder Checking in Tm_SobolNoise map Change 3501612 by zachary.wilson Adding testing content for RTDF shadows on planar reflections Change 3501708 by Guillaume.Abadie Break FPostProcessSettings into smallers structs. Change 3501830 by Olaf.Piesche #jira UE-39628; using fix proposed in UDN, will investigate further Change 3501954 by Marcus.Wassmer Duplicate 3480903 Light culling safety measures. Change 3502032 by Mark.Satterthwaite Fix generation of Metal precompiled headers for the bytecode compiler when using Xcode 9. Change 3502118 by Uriel.Doyon Fixed shader compilation issues. Change 3502191 by Guillaume.Abadie Implements Composure plugin to make compositing in UE4 easier. Change 3502192 by Guillaume.Abadie Implements Composure feature testing in EngineTests Change 3502196 by Guillaume.Abadie Creates a dependency of Composure plugin over LensDistortion plugin. Change 3502213 by Arciel.Rekman Fix for loading shaders on Linux (UE-46276). Change 3502243 by Brian.Karis Bent normal map support. Multibounce AO. Spherical Gaussian based specular occlusion. Change 3502506 by Guillaume.Abadie Fixes compilation failure in Composure with unity build. Change 3502507 by Guillaume.Abadie Fixes composure Set Pass with Render Target blueprint helper. Change 3502510 by Guillaume.Abadie Attempts to fix ComposureUtils.cpp compile errors. Change 3502515 by Guillaume.Abadie Some other composure failure fixes. Change 3502545 by Guillaume.Abadie Fixes some unity build related error in Composure. Change 3502548 by Guillaume.Abadie Fixes last missing includes in ComposurePostProcessPass.cpp Change 3502672 by Guillaume.Abadie Fixes linux warning in Composure. Change 3502790 by Ryan.Brucks float4 PseudoVolumeTexture: Fixed frame layout being a float instead of float2. Now works correctly with non-square frame layouts. Only called in custom nodes and calling with a float still functions properly so no old content will break. Change 3502836 by Guillaume.Abadie Propagates scene capture engine showflag changes from blueprint editor to the blueprint instances. #jira UE-6810 Change 3503096 by Guillaume.Abadie Resave a unversioned asset. Change 3503228 by Yujiang.Wang Fix for UE-45646 Dynamic Light placed inside of a Dynamic Static Mesh doesn't pass through the geometry * Bug caused by bReflectiveShadowmap not being passed into SetViewFlagsForShadowPass * Replaced the true with bReflectiveShadowmap #jira UE-45646 Change 3503284 by Rolando.Caloca DR - Fixed initial clear on rendertargets - Added support for r.Vulkan.EnableValidation 1, 2, 3 & 4 - Dump the vulkan log into VS output log - Added validation for layouts when using dump log Change 3503545 by Arciel.Rekman Fix black UI on Linux (UE-46333) - Rebuilt hlslcc with clang 3.7.0. Whatever issues we're running in with newer clangs still seem to persist. #jira UE-46333 Change 3503638 by Daniel.Wright [Copy] Changed DynamicBentNormalAO back to fp16, as PF_FloatR11G11B10 was not enough precision and introduced banding Change 3503787 by Marcus.Wassmer Fix difference between gpu/cpu morph target application Change 3503902 by Marcus.Wassmer Roll back TAA refactor until we have time to look into the bad interaction with DOF. Change 3503953 by Arne.Schober DR - UE-46319 - borked Reflections: The resource transition needs to be in this weired place for PS4 and switch until we teach the interface to know about subresources. #RB Marcus.Wassmer Change 3504131 by Rolando.Caloca DR - Maintain a cache of pipeline and descriptor set layouts - Fix marker dump Change 3504462 by Guillaume.Abadie Fixes an assertion failure that was failing because compute light grid was not done, but the shader used where not necessarily using compute light grid results. #jira UE-46277 Change 3504779 by Chris.Bunner Potential static analysis fix. #jira UE-46360 Change 3504950 by Marc.Olano Allow Sobol material nodes & textures only if feature level is at least ES3.1 #jira UE-46334 #jira UE-46317 Change 3505035 by Daniel.Wright Increased MaxSearchCount in GetShaderIncludes. The previous limit of 20 is now getting hit in BasePassPixelShader.usf, causing compiles to fail erroneously. Change 3505386 by Daniel.Wright GetShaderIncludes handles infinite recursion gracefully, needed by Metal causing BasePassTessellation.usf to include BasePassVertexShader.usf Change 3505491 by Rolando.Caloca DR - Fix crash on first frame of particles on modern APIs Change 3505557 by Chris.Bunner [Duplicate] Workaround for outdated shader map crash. #jira UE-46061 Change 3506071 by Rolando.Caloca DR - Vulkan fixes - Fix copy out of bounds reading textures to CPU - Defer event deletion - Split validation for errors and warnings - Skip validation error about attachment not used Change 3506698 by Guillaume.Abadie Fixes Composure alpha channel clobering and performance regression in bloom and tonemapper passes caused by scene capture API compatibility breakage brought by Fortnite merge. Change 3506797 by Rolando.Caloca DR - Fix static analysis #jira UE-46428 Change 3506861 by Rolando.Caloca DR - Fix crash due to layering violation #jira UE-46424 #jira UE-46431 Change 3508098 by Rolando.Caloca DR - Fix for Vulkan ES31 crash - Fix for AMD ensure Change 3508123 by Rolando.Caloca DR - Disable occlusion queries on Vulkan to avoid flickering - Fix for bad HZB & cube mips on Vulkan (now using RHIGenerateMips) - Fix for decal blending #jira UE-46376 Change 3509064 by Uriel.Doyon Changing the logic arround generating an error when HasHadBulkDataCleared() so that it only triggers if the DDC are not found. #jira UE-46427 Change 3509854 by Marc.Olano Fix 2D Sobol gray code numbers. Just changes some numbers in initialization tables, so no effect on existing tests or content. Change 3509920 by Marcus.Wassmer Fix LPV fastvram ensure Change 3509937 by Rolando.Caloca DR - Fix crash due to deleted viewport #jira UE-46281 Change 3509988 by Marcus.Wassmer Roll back part of Sobol fix to avoid full shader recompile for integration. Change 3510255 by Rolando.Caloca DR - Fix popup window ensure #jira UE-46511 Change 3510646 by Marcus.Wassmer fix ios compiles Change 3511442 by Rolando.Caloca DR - Change mesh simplification check to ensure/checkslow to unblock #jira UE-46538 DONE! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CHANGES WITH MULTIPLE PLATFORMS!!! YOU MUST COPY THESE INTO THE OTHER ONES AS MAKES SENSE!! XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Change 3467095 by Guillaume.Abadie Nukes all += TEXT(".usf") #jira UE-45530 Change 3475084 by Guillaume.Abadie Fixes compilation failure of the shader compiler on PS4 and XboxOne Change 3477464 by Guillaume.Abadie Fixes dumpshaderinfo that generate unecessary sub directory, breaking shell scripts. Change 3494395 by Guillaume.Abadie Moves all engine shader files into Public and Private directory, and introduce the .ush extensions for header file that do not contains entry points. DONE! [CL 3511602 by Marcus Wassmer in Main branch]
2017-06-27 11:38:28 -04:00
// need to free PBO if we aren't keeping shadow copies
PixelBuffers[BufferIndex] = NULL;
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
}
}
// Reset the buffer bindings on exit only
glBindBuffer( GL_PIXEL_PACK_BUFFER, 0 );
CachedBindPixelUnpackBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
}
/*-----------------------------------------------------------------------------
2D texture support.
-----------------------------------------------------------------------------*/
FTextureRHIRef FOpenGLDynamicRHI::RHICreateTexture(const FRHITextureCreateDesc& CreateDesc)
{
return new FOpenGLTexture(CreateDesc);
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3443236) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3385304 on 2017/04/07 by Ryan.Vance #jira UEVR-694 GL_TEXTURE_EXTERNAL_OES support hlslcc changes to support the TextureExternal keyword RHI changes to support RHICreateTextureExternal2D Fall back to a standard 2d texture on platforms without extension support Did not implement a shader cache solution as the resource is expected to be shared across processes, so recreating it from the shader cache would be a bad thing Change 3391376 on 2017/04/12 by Ben.Marsh Build: Add additional UE4Game targets for Dev-VR, to catch build failures in plugins that are disabled for games. Change 3392546 on 2017/04/13 by Jeff.Fisher Duplicating in Dev-VR (from Release-4.16) UEVR-734 PSVR sdk 4.5 tracking improvements UEVR-738 PSVR prediction time dynamic adjustment -New tracker profile and camera config to activate ps4 tracking improvements. -Calculating prediction time based on flip timings rather than assuming it will be a particular value. This makes the prediction time nearly perfect as long as we meet framerate and lets it adapt to the timing of when the prediction is made in the frame. -Changed reprojection fliparg to be the frame number, rather than a separate incrementor, so its more useful for debugging. #jira UEVR-734 #review-3391147 Change 3394508 on 2017/04/14 by Jeff.Fisher merge fix ShaderCacheTypes.h Change 3399628 on 2017/04/19 by Jeff.Fisher UEVR-582 PSVR not applying WorldToMeters for position accessor -Changed to apply WorldToMeters scale when we get the position data from PS4Tracker, so that the positions stored in MorpheusHMD are always in world space. #jira UEVR-582 #review-3398683 Change 3404200 on 2017/04/21 by Jeff.Fisher UEVR-239 GearVR headset worn/notworn notifications -Implemented the IHeadMountedDisplay accessor for this, and also hooked up the delegates that fire on PS4. -Implemented the IHeadMountedDisplay accessor for PS4. #jira UEVR-239 #review-3404174 @keli.hloedversson Change 3412688 on 2017/04/27 by Jeff.Fisher UEVR-766 PSVR test level improvements -VR/TM-MotionControllers --Hooked up QA_MoCoAll to the cycle of playercontrllers. --Added instructions for motion tracked device management controls, if the platform supports. -QA_MoCoAll --Switched tracking state colors to tracking spheres, becuase the arrows need to be not rendered in game for some configuration. --Added duplicate motion controller component to pad and another duplicate with disabled low latency tracking. -QA_MoCoDualShock --removed gun controller from this playercontroller, its redundant to the one in QA_MoCoAll -QA_MoCoComponents --world scale from controllers mode added ctrl-w, this is a good way to torture test world scale. #jira UEVR-766 Change 3413801 on 2017/04/28 by Keli.Hlodversson #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) on OculusRift Change 3429305 on 2017/05/08 by Keli.Hlodversson SteamVR Layers don't honor the (absence of) LAYER_FLAG_QUAD_PRESERVE_TEX_RATIO flag Avoid potential divide by zero in the DefaultStereoLayers implementation of the same flag. #jira UE-42855 Change 3429362 on 2017/05/08 by Ryan.Vance Integrating 3416918 for #jira UE-44404 Change 3429426 on 2017/05/08 by Keli.Hlodversson Set up a Test case for Layers in QA Game so that we can determine differences between platforms #jira UEVR-741 Change 3430829 on 2017/05/09 by Keli.Hlodversson Implement World-locked layer position type on SteamVR #jira UE-42940 Also fixes LAYER_FLAG_TEX_CONTINUOUS_UPDATE flag on SteamVR Change 3432895 on 2017/05/10 by Nick.Whiting Skipping recording of analytics if there is no device connected on startup, to prevent false reports when Oculus / SteamVR runtimes are installed on the user's machine #jira UE-37166 Change 3435917 on 2017/05/11 by Jeff.Fisher UE-44941 LoadErrors produced in log when opening TM-MotionControllers -LoadErrors:Error: Error /Game/Blueprints/QA_MoCoAll : Can't find file for asset. /Game/NewTextureRenderTarget2D -Removed the component that was referencing that. It was temporary test content, not meant to be submitted. #jira UE-44941 Change 3435938 on 2017/05/11 by Ryan.Vance Incorrect VertexDeclarationRHI for the hidden area mask pso. Change 3437197 on 2017/05/12 by Keli.Hlodversson Remove a irrelevant comment. Change 3437221 on 2017/05/12 by Keli.Hlodversson ... and now actually include the change that was supposed to go in CL#3437197 Remove a irrelevant comment. Change 3439359 on 2017/05/15 by Keli.Hlodversson Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439422 on 2017/05/15 by Keli.Hlodversson Fixes for CL#3439359 after review: Implement NoAlpha flag in DefauiltStereoLayers. #jira UEVR-777 Change 3439599 on 2017/05/15 by Jeff.Fisher UE-44962 Motion controller input not registered in TM-MotionControllers package -Pre-exising blueprint assumed only one textrenderactor in the level, but I added two more. It was working or not depending on the order in which they were constructed. -Now searching up the correct actor by Tag. #jira UE-44962 Change 3441176 on 2017/05/16 by Mike.Beach Can now explicitly hide components from a specific player through the player controller. Change 3441242 on 2017/05/16 by Mike.Beach Making it so any component can invoke a preview viewport in the editor (want it to be extended by scene capture components). Change 3441571 on 2017/05/16 by Mike.Beach Fixing CIS shadowed variable name issue (fallout from CL 3441176). Change 3443223 on 2017/05/17 by Mike.Beach Fixing root of shadowed variable name warning (now only in UT, fallout from 3441176) - renaming new base class variable so it doesn't conflict with third parties either. #jira UE-45120 [CL 3443810 by Mike Beach in Main branch]
2017-05-17 12:45:38 -04:00
}
FTextureRHIRef FOpenGLDynamicRHI::RHIAsyncCreateTexture2D(uint32 SizeX, uint32 SizeY, uint8 Format, uint32 NumMips, ETextureCreateFlags Flags, ERHIAccess InResourceState, void** InitialMipData, uint32 NumInitialMips)
{
check(0);
return FTexture2DRHIRef();
}
void FOpenGLDynamicRHI::RHICopySharedMips(FRHITexture2D* DestTexture2D, FRHITexture2D* SrcTexture2D)
{
check(0);
}
FOpenGLShaderResourceView::FOpenGLShaderResourceView(FOpenGLTexture* InTexture, const FRHITextureSRVCreateInfo& CreateInfo)
Added RHI tracked access API to remove Unknown transitions. - New RHI command list SetTrackedAccess method for the user to supply a current whole-resource state. - New RHI command context GetTrackedAccess method for querying the tracked access in RHIBeginTransitions / RHIEndTransitions on the RHI thread. - Hooked RHICmdList.Transition and FRHICommandListExecutor::Transition to assign tracked state automatically. - Refactored RDG and resource pools to use new RHI tracking. - FRDGPooledBuffer / FRDGPooledTexture no longer contain tracked state. RDG temp-allocates state through the graph allocator instead. - All prologue transitions are 'Unknown', and all epilogue transitions coalesce into a whole resource state. - Implemented platform support for patching the 'before' state with the tracked state. - Implemented various RHI validation checks: - Asserts that the user assigned tracked state matches RHI validation tracked state, for all subresources. - Asserts that tracked state is not assigned or queried from a parallel translation context. - Added FRHIViewableResource and FRHIView base classes to RHI. FRHIView contains a pointer to an FRHIViewableResource. This is currently a raw pointer, but should be extended to a full reference in a later CL. NOTE on RHI thread constraint: Transition evaluation is now restricted to the RHI thread (i.e. no parallel translation contexts). Transitions aren't performed in parallel translate contexts anyway, so this is not a problem. If, however, we decide to refactor parallel translation to be more general, this implementation could be extended to track the state per context and update from the 'dispatch' thread. #preflight 6233b4396666d7e753a16aaf #rb kenzo.terelst [CL 19513316 by zach bethel in ue5-main branch]
2022-03-25 11:19:10 -04:00
: FRHIShaderResourceView(InTexture)
, Target (InTexture->Target)
, Texture (InTexture)
, LimitMip (CreateInfo.MipLevel)
, OwnsResource(false)
{
const uint8 Format = (CreateInfo.Format == PF_Unknown)
? Texture->GetFormat()
: CreateInfo.Format;
const bool bFormatsMatch = Format == Texture->GetFormat() || Format == PF_X24_G8;
RunOnGLRenderContextThread([this, bFormatsMatch, Format]()
{
VERIFY_GL_SCOPE();
checkf(bFormatsMatch, TEXT("SRVs cannot modify the pixel format of a texture when texture views are unsupported."));
Resource = Texture->GetResource();
// Handle the custom stencil SRV
if (Format == PF_X24_G8)
{
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = FOpenGLDynamicRHI::Get().GetContextStateForCurrentContext();
FOpenGLDynamicRHI::Get().CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Target, Resource, LimitMip, Texture->GetNumMips());
//set the texture to return the stencil index, and then force the components to match D3D
glTexParameteri(Target, GL_DEPTH_STENCIL_TEXTURE_MODE, GL_STENCIL_INDEX);
glTexParameteri(Target, GL_TEXTURE_SWIZZLE_R, GL_ZERO);
glTexParameteri(Target, GL_TEXTURE_SWIZZLE_G, GL_RED);
glTexParameteri(Target, GL_TEXTURE_SWIZZLE_B, GL_ZERO);
glTexParameteri(Target, GL_TEXTURE_SWIZZLE_A, GL_ZERO);
}
});
}
FShaderResourceViewRHIRef FOpenGLDynamicRHI::RHICreateShaderResourceView(FRHITexture* Texture, const FRHITextureSRVCreateInfo& CreateInfo)
{
return new FOpenGLShaderResourceView(GetOpenGLTextureFromRHITexture(Texture), CreateInfo);
}
/** Generates mip maps for the surface. */
void FOpenGLDynamicRHI::RHIGenerateMips(FRHITexture* SurfaceRHI)
{
if (FOpenGL::SupportsGenerateMipmap())
{
RunOnGLRenderContextThread([=]()
{
VERIFY_GL_SCOPE();
GPUProfilingData.RegisterGPUWork(0);
FOpenGLContextState& ContextState = GetContextStateForCurrentContext();
FOpenGLTexture* Texture = GetOpenGLTextureFromRHITexture(SurfaceRHI);
// Setup the texture on a disused unit
// need to figure out how to setup mips properly in no views case
CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Texture->Target, Texture->GetResource(), -1, Texture->GetNumMips());
FOpenGL::GenerateMipmap(Texture->Target);
});
}
else
{
UE_LOG( LogRHI, Fatal, TEXT("Generate Mipmaps unsupported on this OpenGL version"));
}
}
/**
* Computes the size in memory required by a given texture.
*
* @param TextureRHI - Texture we want to know the size of
* @return - Size in Bytes
*/
uint32 FOpenGLDynamicRHI::RHIComputeMemorySize(FRHITexture* TextureRHI)
{
if (!TextureRHI)
{
return 0;
}
FOpenGLTexture* Texture = GetOpenGLTextureFromRHITexture(TextureRHI);
return Texture->MemorySize;
}
FTexture2DRHIRef FOpenGLDynamicRHI::AsyncReallocateTexture2D_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture2D* Texture2DRHI, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter* RequestStatus)
{
return this->RHIAsyncReallocateTexture2D(Texture2DRHI, NewMipCount, NewSizeX, NewSizeY, RequestStatus);
}
FTexture2DRHIRef FOpenGLDynamicRHI::RHIAsyncReallocateTexture2D(FRHITexture2D* Texture2DRHI, int32 NewMipCount, int32 NewSizeX, int32 NewSizeY, FThreadSafeCounter* RequestStatus)
{
check(IsInRenderingThread());
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
FOpenGLTexture* OldTexture = GetOpenGLTextureFromRHITexture(Texture2DRHI);
FRHITextureDesc Desc = OldTexture->GetDesc();
int32 SourceMipCount = Desc.NumMips;
Desc.Extent = FIntPoint(NewSizeX, NewSizeY);
Desc.NumMips = NewMipCount;
FRHITextureCreateDesc CreateDesc(
Desc,
RHIGetDefaultResourceState(Desc.Flags, false),
TEXT("RHIAsyncReallocateTexture2D")
);
FOpenGLTexture* NewTexture = new FOpenGLTexture(CreateDesc);
RHICmdList.EnqueueLambda([OldTexture, NewTexture, SourceMipCount, NewMipCount, RequestStatus](FRHICommandListImmediate& RHICmdList)
{
VERIFY_GL_SCOPE();
// Use the GPU to asynchronously copy the old mip-maps into the new texture.
const uint32 NumSharedMips = FMath::Min(SourceMipCount, NewMipCount);
const uint32 SourceMipOffset = SourceMipCount - NumSharedMips;
const uint32 DestMipOffset = NewMipCount - NumSharedMips;
if (FOpenGL::SupportsCopyImage())
{
NewTexture->CloneViaCopyImage(OldTexture, NumSharedMips, SourceMipOffset, DestMipOffset);
}
else
{
NewTexture->CloneViaPBO(OldTexture, NumSharedMips, SourceMipOffset, DestMipOffset);
}
RequestStatus->Decrement();
});
return NewTexture;
}
/**
* Returns the status of an ongoing or completed texture reallocation:
* TexRealloc_Succeeded - The texture is ok, reallocation is not in progress.
* TexRealloc_Failed - The texture is bad, reallocation is not in progress.
* TexRealloc_InProgress - The texture is currently being reallocated async.
*
* @param Texture2D - Texture to check the reallocation status for
* @return - Current reallocation status
*/
ETextureReallocationStatus FOpenGLDynamicRHI::RHIFinalizeAsyncReallocateTexture2D(FRHITexture2D* Texture2D, bool bBlockUntilCompleted )
{
return TexRealloc_Succeeded;
}
/**
* Cancels an async reallocation for the specified texture.
* This should be called for the new texture, not the original.
*
* @param Texture Texture to cancel
* @param bBlockUntilCompleted If true, blocks until the cancellation is fully completed
* @return Reallocation status
*/
ETextureReallocationStatus FOpenGLDynamicRHI::RHICancelAsyncReallocateTexture2D(FRHITexture2D* Texture2D, bool bBlockUntilCompleted )
{
return TexRealloc_Succeeded;
}
void* FOpenGLDynamicRHI::RHILockTexture2D(FRHITexture2D* TextureRHI,uint32 MipIndex,EResourceLockMode LockMode,uint32& DestStride,bool bLockWithinMiptail)
{
return GetOpenGLTextureFromRHITexture(TextureRHI)->Lock(MipIndex, 0, LockMode, DestStride);
}
void FOpenGLDynamicRHI::RHIUnlockTexture2D(FRHITexture2D* TextureRHI, uint32 MipIndex, bool bLockWithinMiptail)
{
GetOpenGLTextureFromRHITexture(TextureRHI)->Unlock(MipIndex, 0);
}
void* FOpenGLDynamicRHI::RHILockTexture2DArray(FRHITexture2DArray* TextureRHI, uint32 TextureIndex, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail)
{
return GetOpenGLTextureFromRHITexture(TextureRHI)->Lock(MipIndex, TextureIndex, LockMode, DestStride);
}
void FOpenGLDynamicRHI::RHIUnlockTexture2DArray(FRHITexture2DArray* TextureRHI, uint32 TextureIndex, uint32 MipIndex, bool bLockWithinMiptail)
{
GetOpenGLTextureFromRHITexture(TextureRHI)->Unlock(MipIndex, TextureIndex);
}
void FOpenGLDynamicRHI::RHIUpdateTexture2D(FRHITexture2D* TextureRHI, uint32 MipIndex, const FUpdateTextureRegion2D& UpdateRegionIn, uint32 SourcePitch, const uint8* SourceDataIn)
{
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
const FUpdateTextureRegion2D UpdateRegion = UpdateRegionIn;
uint8* RHITSourceData = nullptr;
if (!ShouldRunGLRenderContextOpOnThisThread(RHICmdList))
{
const FPixelFormatInfo& FormatInfo = GPixelFormats[TextureRHI->GetFormat()];
const size_t UpdateHeightInTiles = FMath::DivideAndRoundUp(UpdateRegion.Height, (uint32)FormatInfo.BlockSizeY);
const size_t DataSize = static_cast<size_t>(SourcePitch) * UpdateHeightInTiles;
RHITSourceData = (uint8*)FMemory::Malloc(DataSize, 16);
FMemory::Memcpy(RHITSourceData, SourceDataIn, DataSize);
}
const uint8* SourceData = RHITSourceData ? RHITSourceData : SourceDataIn;
RunOnGLRenderContextThread([=]()
{
VERIFY_GL_SCOPE();
FOpenGLTexture* Texture = GetOpenGLTextureFromRHITexture(TextureRHI);
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = GetContextStateForCurrentContext();
CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Texture->Target, Texture->GetResource(), 0, Texture->GetNumMips());
CachedBindPixelUnpackBuffer(ContextState, 0);
EPixelFormat PixelFormat = Texture->GetFormat();
check(GPixelFormats[PixelFormat].BlockSizeX == 1);
check(GPixelFormats[PixelFormat].BlockSizeY == 1);
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
const uint32 FormatBPP = GPixelFormats[PixelFormat].BlockBytes;
checkf(!GLFormat.bCompressed, TEXT("RHIUpdateTexture2D not currently supported for compressed (%s) textures by the OpenGL RHI"), GPixelFormats[PixelFormat].Name);
glPixelStorei(GL_UNPACK_ROW_LENGTH, SourcePitch / FormatBPP);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexSubImage2D(Texture->Target, MipIndex, UpdateRegion.DestX, UpdateRegion.DestY, UpdateRegion.Width, UpdateRegion.Height,
GLFormat.Format, GLFormat.Type, SourceData);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
// free source data if we're on RHIT
if (RHITSourceData)
{
FMemory::Free(RHITSourceData);
}
});
}
void FOpenGLDynamicRHI::RHIUpdateTexture3D(FRHITexture3D* TextureRHI, uint32 MipIndex, const FUpdateTextureRegion3D& UpdateRegion, uint32 SourceRowPitch, uint32 SourceDepthPitch, const uint8* SourceData)
{
VERIFY_GL_SCOPE();
check( FOpenGL::SupportsTexture3D() );
FOpenGLTexture* Texture = GetOpenGLTextureFromRHITexture(TextureRHI);
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = GetContextStateForCurrentContext();
CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, Texture->Target, Texture->GetResource(), 0, Texture->GetNumMips());
CachedBindPixelUnpackBuffer(ContextState, 0);
EPixelFormat PixelFormat = Texture->GetFormat();
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
const FOpenGLTextureFormat& GLFormat = GOpenGLTextureFormats[PixelFormat];
const FPixelFormatInfo& FormatInfo = GPixelFormats[PixelFormat];
const uint32 FormatBPP = FormatInfo.BlockBytes;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
check( FOpenGL::SupportsTexture3D() );
// TO DO - add appropriate offsets to source data when necessary
check(UpdateRegion.SrcX == 0);
check(UpdateRegion.SrcY == 0);
check(UpdateRegion.SrcZ == 0);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
const bool bSRGB = EnumHasAnyFlags(Texture->GetFlags(), TexCreate_SRGB);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
if (GLFormat.bCompressed)
{
FOpenGL::CompressedTexSubImage3D(
Texture->Target,
MipIndex,
UpdateRegion.DestX, UpdateRegion.DestY, UpdateRegion.DestZ,
UpdateRegion.Width, UpdateRegion.Height, UpdateRegion.Depth,
GLFormat.InternalFormat[bSRGB],
SourceDepthPitch * UpdateRegion.Depth,
SourceData);
}
else
{
glPixelStorei(GL_UNPACK_ROW_LENGTH, UpdateRegion.Width / FormatInfo.BlockSizeX);
glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, UpdateRegion.Height / FormatInfo.BlockSizeY);
FOpenGL::TexSubImage3D(Texture->Target, MipIndex, UpdateRegion.DestX, UpdateRegion.DestY, UpdateRegion.DestZ, UpdateRegion.Width, UpdateRegion.Height, UpdateRegion.Depth, GLFormat.Format, GLFormat.Type, SourceData);
}
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glPixelStorei(GL_UNPACK_IMAGE_HEIGHT, 0);
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4041614) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3810363 by Mark.Satterthwaite More random fixes to mtlpp: most important is the extension to Buffer that allows creation of sub-buffers that are merely views onto a sub-range of the parent. These sub-buffers are valid to use throughout the mtlpp API with two exceptions: they may not be used for visibilityResultsBuffers and Set*BufferOffset functions cannot take this offset into account (as the encoder does not hold onto the buffers and I don't want it to). In the case of Set*BufferOffset the caller has to know what is going on and in the case of visibilityResultsBuffers it'll just assert as it isn't sensible. This makes it *much* easier to do things like sub-buffer allocation, though the caller must be aware of the alignment restrictions of their intended usage as they are not possible to enforce. For example, a call to SetVertexBuffer requires an offset alignment must match the alignment of the data-type in the shader for "device" resources, or for "constant" data it must be max(4, sizeof(datatype)) on iOS and 256 on macOS. This should allow for much more tightly packed sub-allocations than earlier approaches, though older drivers (e.g. Mac OS X 10.11) enforce only the coarser "constant" data restriction everywhere. Change 3810407 by Marcus.Wassmer PR #4322: ShadowSetup Bug Fix: Only stencil mask drawn meshes (Contributed by DSDambuster) Change 3810676 by Guillaume.Abadie Makes r.Test.SecondaryUpscaleOverride work with any arbitrary pixel size. Change 3810696 by Guillaume.Abadie Adds support for #include "../MyFile.ush" in the shader compiler. Change 3810698 by Guillaume.Abadie Implements enum class based shader permutation dimension. Change 3810699 by Guillaume.Abadie Implements Diaphragm DOF ground work. Change 3811536 by Guillaume.Abadie Pulls the trigger on CircleDOF's setup pass for DiaphragmDOF. Change 3811958 by Mark.Satterthwaite More fixes for mtlpp. Change 3811964 by Mark.Satterthwaite Only views onto a mtlpp::Buffer should return a valid parent-buffer. Change 3812604 by Guillaume.Abadie Changes Diaphragm DOF's source file layout. Change 3812827 by Mark.Satterthwaite More missing/broken functionality in mtlpp fixed and fixed obvious leaks. Change 3812920 by Guillaume.Abadie Adds support for per mip level UAV in FSceneRenderTarget. Change 3812926 by Mark.Satterthwaite Change the way we handle mtlpp resource construction to avoid leaks. Change 3812960 by Rolando.Caloca DR - vk - Disable DFGI Change 3812968 by Rolando.Caloca DR - Linker fix Change 3813318 by Mark.Satterthwaite Fix linear texture allocation from a buffer sub-view. Change 3813326 by Mark.Satterthwaite Fix another Metal mtlpp sub-buffer allocation failure. Change 3813328 by Guillaume.Abadie Removes global samplers in TAA for GL4, Vulkan and Switch. Change 3813937 by Rolando.Caloca DR - Fix logs not getting dumped when r.DumpSCWQueuedJobs is on Change 3813947 by Rolando.Caloca DR - noshaderworker should override r.XGEShaderCompile Change 3817017 by Uriel.Doyon Fixed texture editor black screen #jira UE-53653 Change 3818568 by Rolando.Caloca DR - Fix log when shader jobs crash - Move log10 to common - Added COMPILER_VULKAN define Change 3818603 by Uriel.Doyon Fix to static analysis warning Change 3818623 by Rolando.Caloca DR - Workaround hlslcc loop unrolling bug Change 3819070 by Uriel.Doyon Fix to stat duplication. Change 3819105 by Uriel.Doyon Refactored volume sample shader to avoid using texture dimension. Change 3819136 by Rolando.Caloca DR - vk - Per platform files (empty) Change 3819180 by Rolando.Caloca DR - vk - Move defines out of config into per platform Change 3819247 by Rolando.Caloca DR - vk - Remove more defines into platform settings Change 3819318 by Rolando.Caloca DR - vk - Fixes for linking Change 3819868 by Rolando.Caloca DR - vk - Linux & Android fixes Change 3819873 by Guillaume.Abadie Adds support for PermutationId on r.DumpShaderDebugInfo=1 Change 3819940 by Rolando.Caloca DR - vk - Fix Linux issues Change 3819956 by Rolando.Caloca DR - vk - Invalid check Change 3819961 by Michael.Lentine Hide attributes when plugin is not present Change 3819980 by Rolando.Caloca DR - vk - Standard validation always Change 3820039 by Rolando.Caloca DR - vk - Fix invalid ensure Change 3820326 by Rolando.Caloca DR - vk - Linux compile fix Change 3820422 by Michael.Lentine Add back GBufferAO. Change 3820433 by Rolando.Caloca DR - Fix D3D12 crash on 20 thread (10x2 cores) machines Change 3821677 by Rolando.Caloca DR - vk - Win32 compile fix Change 3821961 by Rolando.Caloca DR - Vulkan uses real UB by default on non-Android Change 3821968 by Rolando.Caloca DR - vk - Update glslang 1.0.65.1 Change 3821969 by Uriel.Doyon Added support for stat groups that must be sorted by name. Defined by DECLARE_STATS_GROUP_SORTBYNAME. Change 3821983 by Rolando.Caloca DR - vk - Change to static array (0.1ms on 10k draw calls) Change 3824141 by Rolando.Caloca DR - vk - Fix static analysis - Bumped up some (c) 2017->2018 Change 3824355 by Rolando.Caloca DR - vk - Accessor to find out if a cmd buffer has been submitted Change 3824420 by Rolando.Caloca DR - Sanity check number of queries per batch on D3D11 as to not break other RHIs Change 3824463 by Rolando.Caloca DR - Removed dummy ensure for D3D12 Change 3824609 by Rolando.Caloca DR - vk - Linux compile fix Change 3826074 by Mark.Satterthwaite Start IMP-caching the various descriptor types in mtlpp. Change 3826098 by Rolando.Caloca DR - vk - Dump layer compile fixes Change 3826113 by Rolando.Caloca DR - vk - Missing dump functions Change 3826302 by Rolando.Caloca DR - vk - Compile fix - Change dump handles to %p Change 3826635 by Mark.Satterthwaite Forward declarations required for mtlpp compilation without exposing Metal headers - plus fixes to the mtlpp test compiler. Change 3827072 by Mark.Satterthwaite Switch some more mtlpp descriptors over to IMPTables from objc_msgSend. Change 3827909 by Guillaume.Abadie Replaces diaphragm DOF's prefiltering with LDS bank coherent bilateral reduction, and implements 1/8 res background gathering pass. Change 3827952 by Guillaume.Abadie Updates copy right to year 2018 on diaphragm DOF's new files. Change 3828055 by Rolando.Caloca DR - vk - Rename in prep for changes Change 3828229 by Guillaume.Abadie Avoids to log multiple time global shader type name that have multiple permutations when verifying global shader map. Change 3828427 by Guillaume.Abadie Reimplements Max3x3 gathering post filtering for Diaphragm DOF with proper shader permutation. Change 3829979 by Guillaume.Abadie Fixes a color NaN source in diaphragm DOF's TAA pass. Change 3830116 by Rolando.Caloca DR - vk - Fix GPU queries/frame time on old system - New system in place, disabled temporarily Change 3830169 by Rolando.Caloca DR - vk - Fix async pso creation crash Change 3830193 by Rolando.Caloca DR - vk - CPU RHI thread improvement Change 3830291 by Guillaume.Abadie Automatically lower the number of gathering rings on background half res gather pass as far CoC is getting smaller. Change 3830300 by Rolando.Caloca DR - vk - Static analysis fix: Split VulkanCommon.h out of VulkanConfiguration.h Change 3830589 by Mark.Satterthwaite In mtlpp cache the IMPTables for all the Metal @protocol's that are dependent on the MTLDevice, this avoids a mutex & map lookup. Also make all the concrete types store their IMPTable statically as it won't change. Change 3830793 by Mark.Satterthwaite Fix a small number of bugs introduced with the mtlpp descriptor and table caching. Change 3831491 by Jian.Ru Fix driver version unknown #jira UE-53688 Change 3832335 by Rolando.Caloca DR - vk - Change include Change 3832550 by Rolando.Caloca DR - vk - Occlusion query rewrite WIP Change 3832589 by Rolando.Caloca DR - vk - Minor refactor to pools in prep for timestamps Change 3832618 by Rolando.Caloca DR - vk - Do not block timestamp queries Change 3832636 by Rolando.Caloca DR - vk - Fix old timestamp queries Change 3833138 by Rolando.Caloca DR - vk - Fix timestamp queries Change 3833249 by Rolando.Caloca DR - vk - Test lock Change 3833667 by Rolando.Caloca DR - vk - Old queries wait on the RHI thread now instead of the driver (disabled) Change 3833907 by Daniel.Wright Fixed NextStartOffset UAV index out of bounds Change 3833918 by Daniel.Wright D3D12 RHI: only refcount uniform buffers if GRHINeedsExtraDeletionLatency is false, which is no longer the case for PC or Xbox. The refcounting was heavy on performance as reported by a licensee because FRHIResource uses atomics for refcounting, which is only necessary when GRHINeedsExtraDeletionLatency is disabled. Change 3834852 by Rolando.Caloca DR - vk - Missing file Change 3834858 by Guillaume.Abadie Implements r.DOF.MinimalFullresBlurringRadius Change 3834979 by Rolando.Caloca DR - vk - Fix Change 3836117 by Rolando.Caloca DR - vk - Update to 1.0.65.1 Change 3836122 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitOcclusionBatchCmdBuffer - Added new error codes/messages Change 3836421 by Mark.Satterthwaite For the purposes of debugging and conformance testing mtlpp make it possible to compile *without* the IMP cache so that we call the underlying Objective-C. Change 3836896 by Uriel.Doyon Fixed concurrency and exit issues around d3d12 pipeline states on windows. Change 3837385 by Rolando.Caloca DR - vk - Dump memory on OOM Change 3837427 by Rolando.Caloca DR - vk - Change some arrays to array views Change 3837800 by Guillaume.Abadie Implements SHADER_PERMUTATION_RANGE_INT to make contiguous integer permutations that does not start to 0. Change 3838128 by Rolando.Caloca DR - vk - Support for non-cached memory types Change 3838540 by Guillaume.Abadie Refactors Diaphragm DOF's CoC tile buffer under a single API for better maintainability. Change 3838731 by Rolando.Caloca DR - vk - Descriptor pools per command buffer pool (turned off) Change 3838961 by Rolando.Caloca DR - vk - Use ring buffer for per frame uniform buffers - Enable descriptor pools per layout recycled per command buffer Change 3839087 by Rolando.Caloca DR - vk - Compile fixes for Android Change 3839106 by Marcus.Wassmer PR #4413: Removing unnecessary call to FString::ToLower (Contributed by gsfreema) Change 3839252 by Mark.Satterthwaite Fix mtlpp::Resource move operators. Change 3839426 by Marcus.Wassmer Duplicate 380972 Make PC GPU Benchmarks more reliable Change 3840041 by Guillaume.Abadie Fixes shader compilation failure in TAA with alpha channel through post processing support. Change 3840257 by Chris.Bunner Swapping a mul() to * in HLSLTranslator::Dot to allow scalar transformations per a UDN ticket. Change 3840308 by Rolando.Caloca DR - vk - Support for UB & non-UB on emulation mode Change 3840586 by Rolando.Caloca DR - Copy 3840577 Fix for CPUs with more than 16 cores Change 3840671 by Rolando.Caloca DR - vk - Copy from 3840663 Fix for layout ensure on HMD projects on Vulkan Change 3840980 by Rolando.Caloca DR - vk - Android compile fixes Change 3841989 by Guillaume.Abadie Slices Diaphragm DOF's Gather pass in multi shader files, and CFLAG_StandardOptimization flag for faster iteration time. Change 3842216 by Guillaume.Abadie Fixes DDOF's foreground alpha channel. Change 3842217 by Guillaume.Abadie Implements r.DOF.MaximalForegroundBlurringRadius Change 3842353 by Guillaume.Abadie Allows to disable foreground gathering with r.DOF.MaximalForegroundBlurringRadius=0 Change 3842747 by Rolando.Caloca DR - vk - Missing use of GPoolSizeVRAMPercentage - Support for smaller allocations if page size is not available Change 3842791 by Rolando.Caloca DR - vk - Use 95% of available GPU memory to handle some fragmentation Change 3843690 by Guillaume.Abadie Fixes diaphragm DOF's foreground after all this refactoring. Change 3844439 by Guillaume.Abadie Improves Coc dilate pass to make the gather pass as fast as possible, but still without artifacts caused by the fast gathering optimisation. Change 3844946 by Mark.Satterthwaite rd_route v1.1.1 with attached TPS approval. For macOS function interposition which is useful for debugging and the occasional workaround. Change 3845164 by Mark.Satterthwaite Add LLM support for macOS, including tracking of memory allocated in Objective-C. This makes use of runtime method swizzling in the Objective-C runtime and the rd_route library I added for Richard Wallis, which allows for arbitrary runtime function interposition and allows me to hook the custom allocators used in Apple's many Objective-C frameworks on which the whole macOS edifice is built. Objective-C objects are charged to the calling scope as they are too common to impose their own without murdering frame rate. We would need a TPS approval for an iOS function interposition library for this to work fully on iOS, if desired in the short term discarding LowLevelFree events that aren't in the map rather than asserting will workaround the problem. Change 3845849 by Marcus.Wassmer Fix clang and some normal refactor errors Change 3846026 by Rolando.Caloca DR - vk - Descriptor set allocation scheme rewrite - Type hash for each pool - Desc sets Pool on device Change 3846169 by Rolando.Caloca DR - vk - Remove old code for non-layout descriptor set pools Change 3846205 by Mark.Satterthwaite Disambiguate the PatchControlPointOut struct definitions in Metal tessellation shaders at Apple's suggestion to avoid a metallib gotcha. Change 3846346 by Arne.Schober DR - Missing Vector instructions Change 3847037 by Arne.Schober DR - Fix issue with GPU skincache where the offset of the clothbuffer is not relative to the offset of the actual vertexbuffer. Fixed MorphTarget Skincache Offset mixxup Change 3847275 by Marcus.Wassmer Copying MGPU to Dev-Rendering (//UE4/Dev-Rendering) Change 3847464 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3847707 by Michael.Lentine Only use MorphTargetOffset when the shader enables morph targets. Change 3848533 by Richard.Wallis Handle Metal adding FirstInstance into [[ instance_id ]] which is different to other APIs. SV_InstanceID and SV_VertexID should now have their respective base instance and base vertex ID's subtracted before use in the shader. #jira UE-51716 Change 3848625 by Richard.Wallis Compile Fix Change 3848725 by Rolando.Caloca DR - Remove use of Build/SetLocalGraphicsPipelineState Change 3848797 by Rolando.Caloca DR - Deprecate Build/SetLocalGraphicsPipelineState Change 3849237 by Arne.Schober DR - AddCustom Ver for ModelVertex Serialization Change 3851247 by Rolando.Caloca DR - vk - Util functions Change 3851523 by Arne.Schober DR - Update Reflection Comparission shot from the BuildFarm. Change 3851859 by Rolando.Caloca DR - vk - Skip loader Change 3851889 by Krzysztof.Narkowicz Removed lights with lighting channels out of tiled deferred light list. Tiled deferred lights do not support lighting channels and it's wasn't worth to add extra complexity to this shader in order support this special case. #jira UE-51512 Change 3852181 by Rolando.Caloca DR - vk - Linux compile fix Change 3852547 by Uriel.Doyon Fixed Pre-Exposure shader compilation and Temporal AA issue. #jira UE-54276 Change 3852637 by Arne.Schober DR - Fixing Normal Automated Test Result Change 3853167 by Richard.Wallis AvfPlayer - support for streaming media. Due to an operator new/delete mismatch in Apples CFNetwork - we've had to change out one of that framework allocators using rd_route to avoid the memory corruption. #jira UE-35637 Change 3853447 by Chris.Bunner Fixing typos. Change 3853645 by Krzysztof.Narkowicz Fixed light functions on subsurface materials Removed strange code from blending between static and dynamic shadows #jira UE-50275 Change 3853660 by Rolando.Caloca DR - Fix OpenGL overwriting texture samplers on forward renderer Change 3853945 by Mark.Satterthwaite Duplicate #3831616 Fix the black ground scattering on Metal - we've had issues with the atmospheric fog calculations for a long time - one or more intermediate operations generates different precision on Metal so we end up passing -ve values into sqrt which then generates NaN/INF. For Metal when compiling this file and this file only #define sqrt() to sqrt(abs()) so that we don't see anymore unexpected black in atmospheric rendering. This is far from ideal but I don't want to make abs all inputs into every sqrt because AFAIK this is the only case where we have an issue, and until we to investigate each intermediate calculation that isn't ridiculously, soul-crushingly tedious, it isn't practical to identify the source of the error. #jira UE-53720 Change 3853966 by Mark.Satterthwaite Duplicate #3835852 Fix tessellation shaders in Metal with Manual Vertex Fetch enabled: - The control points idnex buffer shouldn't collide with anything else. - We can't use the optimisation of loading texture width & height from the buffer meta-table in tessellation shaders as the combined stages don't guarantee not to clobber unused buffer slots and screw it up when we use linear textures. #jira UE-53851 Change 3854250 by Uriel.Doyon Fix fbx automation tests Change 3854736 by Uriel.Doyon Added a tooltip to the EV100 slider in the exposure menu. Using game settings now disables the slider. #jira UE-53945 Change 3855047 by Jian.Ru Fix DFAO getting NANs when samples out of ViewRect #jira UE-54403 Change 3858197 by Krzysztof.Narkowicz View frustum shadow caster culling for pointlights/spotlights #jira UE-54381 Change 3860081 by Krzysztof.Narkowicz Tighter bounding sphere for a spotlight Replaced IntersectSphere(LightProxy->Origin, LightProxy->Radius) with LightProxy->SphereBounds for tighter culling of spotlights Directional light GetBoundingSphere() now everywhere returns Sphere((0,0,0),HALF_WORLD_MAX) for consistency and proper SphereBounds #jira UE-54258 Change 3860324 by Mark.Satterthwaite Update the macOS deployment target version to 10.12 from 10.11 as we officially ended support for El Capitan a while ago. Should mean that libraries compiled for 10.12 and up won't cause link warnings. Change 3860945 by Arne.Schober DR - Fix not releaseing SRV on render thread for FPositionVertexBuffer, FStaticMeshVertexBuffer, FColorVertexBuffer, FStaticMeshInstanceBuffer. #jira UE-54587 Change 3861129 by Jian.Ru Prevent distance culled objects from casting distance field direct shadows #jira UE-54533 Change 3861502 by Jian.Ru Exclude distance culled objects from DFAO calculation #jira UE-54533 Change 3862243 by Krzysztof.Narkowicz Changed radius of a directional light's bounding sphere from HALF_WORLD_MAX to WORLD_MAX in order to encopass entire WORLD_MAX box Change 3863476 by Krzysztof.Narkowicz Added BuildReflections option to ResavePackages commandlet #jira UE-54581 Change 3863717 by Rolando.Caloca DR - vk - Missed using pipeline cache on compute PSOs Change 3865332 by Arne.Schober DR - Fix UE-52356 Bone Weight Change 3866220 by Rolando.Caloca DR - vk - Fixed GetNativeResource missing on textures - Added support for -preferNvidia|AMD|Intel - Added VulkanRHIBridge.h - Minor fixes Change 3866222 by Rolando.Caloca DR - vk - Missed file Change 3866951 by Krzysztof.Narkowicz Fixed FreezeRendering on non editor builds: ComputeAndMarkRelevanceForViewParallel was calling FrozenMatricesGuard on multiple threads, reading and writing view matrices state in parallel. #jira UE-53640 Change 3867231 by Guillaume.Abadie Adds alpha mode to allow the tonemapper to passthrough the alpha channel for broadcast industry. Change 3867233 by Guillaume.Abadie Fixes a compilation failures in TAAU with r.PostProcessing.PropagateAlpha==2 Change 3867594 by Daniel.Wright Removed EditorOnlyDefaultMaterials, which added 79s of shader compilation during startup Added a dialog when opening the Material Editor on a Default Material, warning of advanced workflow Preventing Material Editor Apply or Save for a Default Material when the preview material has compilation errors Change 3870048 by Daniel.Wright Cleaned up formatting in TranslucentRendering from merges Change 3870106 by Krzysztof.Narkowicz Fixed some FArchive Tell()/Seek() 64bit->32bit truncations Change 3870211 by Rolando.Caloca DR - vk - Added -vulkanvalidation=N/-vulkanstandardvalidation/-novulkanstandardvalidation to set validation layer behaviour from cmd line Change 3870225 by Rolando.Caloca DR - vk - Some platforms do not use a standard swapchain Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3870647 by Daniel.Wright Moved FogRendering.h to Renderer Change 3872130 by Krzysztof.Narkowicz Disable USE_GLOBAL_CLIP_PLANE for MATERIAL_DOMAIN_POSTPROCESS and MERIAL_DOMAIN_UI Merging GitHub Pull request #4459 "When material domain is not needing global clip plane there is no need to generate any code involving it. This does not alter output but removes lot of code at vertex shader and pixel shaders. At least on mobile rendered was actually generating clipping code for ui materials." #jira UE-54616 Change 3872145 by Rolando.Caloca DR - vk - Optional SupportsMarkersWithoutExtension Change 3872404 by Uriel.Doyon Added some guards when streaming virtual textures. Fixed optimized UCanvasRenderTarget2D::RepaintCanvas() to prevent resolving the texture twice. Fixed bad mipmap generation with UCanvasRenderTarget2D. Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3874176 by Ben.Marsh IncludeTool: Add an flag to prevent scanning source files for exported symbols. Change 3874935 by Krzysztof.Narkowicz Fixed white thumbnails and other issues with sky lighting on ES3_1 path, by disabling GGX prefiltering, as mobile path doesn't have a single cubemap with all initialized mips. Instead it ping-pongs between 2 partially initialized. #jira UE-54656 Change 3875710 by Daniel.Wright Renamed uniform buffer member macros to be much shorter for readability Change 3876665 by Guillaume.Abadie Cherry-pick 3870715: Implements DOF's hybrid scatering bare bones. Change 3876666 by Guillaume.Abadie Cherry-pick 3871786: DOF hybrid scatering: fixes NaN source, transition to gather on close to screen edge and low intensity. Change 3876677 by Guillaume.Abadie Cherry-pick 3872348: Implements neighbor comparison for DOF's scattering compilation pass. Change 3876680 by Guillaume.Abadie Cherry-pick 3872357: Oups... fixes build... Change 3876683 by Guillaume.Abadie Cherry-pick 3872475: Controls number of mip to generate with DOF's reduce pass. Change 3876687 by Guillaume.Abadie Cherry-pick 3874104: Fixes various bugs in diaphragm DOF's hybrid scattering. Change 3876690 by Guillaume.Abadie Cherry-pick 3874144: Packs multiple DOF scattering group into same draw instance. Change 3876694 by Guillaume.Abadie Cherry-pick 3874275: Switches hybrid scattering with indexed indirect draw call to reduce scatter vertex shader invocation. Change 3876695 by Guillaume.Abadie Cherry-pick 3874674: Records min and max coc on DOF's setup's draw event. Change 3876783 by Rolando.Caloca DR - Static analysis fix Change 3876845 by Guillaume.Abadie Implements USceneCaptureComponent::ProfilingEventName Change 3877197 by Rolando.Caloca DR - vk - OQ fixes (disabled) Change 3877428 by Krzysztof.Narkowicz Merged with tiny tweaks Ansel photography plugin improvements from Adam Moss (GitHub pull request #4426): -The free-roaming photography camera has new constraints by default, i.e. it can't pass through walls -Photography session can be started and stopped programmatically, e.g. making it possible to bind photography to an alternative hotkey or button combo. This was an often-requested feature. -Tweakables and utilities are now exposed through a Blueprint Function Library (rather than direct manipulation of console variables) -The Ansel photography session UI now exposes some engine effect tweakables as sliders. For example, if the game is using depth-of-field then sliders are made available to allow the photographer to change the focal depth etc. The developer may suppress this behavior through the Blueprint Function Library. -Letterboxing is now removed during multi-part capture, d'oh. -Tiled shots are taken at full resolution even if ScreenPercentage < 100 -SSR is enabled during super-resolution shots since Ansel is now better at hiding any ensuing artifacts -Postprocess settings are frozen at session start to avoid discontinuities during photography, i.e. wandering between postprocess volumes when the camera auto-moves for stereo and 360 shots. #jira UE-54244 #4426 Change 3879086 by Krzysztof.Narkowicz Fixed sky/reflection capture (without owner) update - they are now updated only with a correspoding world Change 3879090 by Guillaume.Abadie Fixes tones of regressions on diaphragm DOF's recombine passes. Change 3879198 by Rolando.Caloca DR - vk - Support for real uniform buffers on Android platforms Change 3879993 by Krzysztof.Narkowicz -Fixed int64->int32 FArchive offset truncation in TShaderMap, VertexFactory and TextureDerivedData -Fixed FSerializationHistory bug, when trying to serialize 0 bytes #jira UE-43203 Change 3881462 by Guillaume.Abadie Implements full res DOF's setup pass for cheaper full res gathering in recombine pass. Change 3881524 by Krzysztof.Narkowicz Fixed compilation by removing FTickableEditorObject from FPreviewScene Change 3881724 by Chris.Bunner Static analysis fix. #jira UE-54762 Change 3881861 by Rolando.Caloca DR - vk - Fix layout warning when generating mip chain Change 3881864 by Rolando.Caloca DR - Use render passes on HZB Change 3882236 by Yuriy.ODonnell IndirectLightingColorScale is now applied to SubsurfaceLighting and DiffuseLighting. Was previously only applied to DiffuseLighting. #jira UE-42534 #github 3326 Change 3882325 by Guillaume.Abadie Implements FocusOnly lower gathering pass for Diaphragm DOF's slight out focus temporal stability. Change 3882340 by Rolando.Caloca DR - vk - Fix api dump Change 3882430 by Rolando.Caloca DR - vk - KHR_maintenance2 Change 3882563 by Rolando.Caloca DR - Add depth-stencil access mode to PSO initializer Change 3882929 by Rolando.Caloca DR - vk - Proper fix for maintenance extension macros Change 3883087 by Mark.Satterthwaite Allow disabling VSync in windowed mode for macOS 10.13.4+ and above. Change 3883597 by Guillaume.Abadie Collapses full and half res DOF setup passes together. Change 3883702 by Guillaume.Abadie Fixes mac's build. Change 3884747 by Uriel.Doyon Fix for static analysis warning Change 3884975 by Rolando.Caloca DR - vk - Move some platform defines to platform properties Change 3884988 by Rolando.Caloca DR - vk - Make an override per platform Change 3885832 by Rolando.Caloca DR - vk - Cosmetic change to group similar members Change 3885891 by Rolando.Caloca DR - vk - Some _RenderThread functions to avoid stalls Change 3886044 by Rolando.Caloca DR - Added RHI api _RenderThread version of RHICreateTextureReference RHICreateShaderLibrary RHICreateRenderQuery Change 3886560 by Guillaume.Abadie Fixes strong aliasing on TAAU's fast shader permutation. This adds a 6th neighbor sampling, and switch AA_TONE ON as TAA does for its fast shader permutation. Change 3886749 by Guillaume.Abadie Cherry-pick 3884748: Implements DOF's BuildBokehLUT for diaphragm blades simulation. Only used in hybrid scattering for now. Change 3886750 by Guillaume.Abadie Cherry-pick 3885457: Simulates diaphragm blades' curvature on bokeh. Change 3886752 by Rolando.Caloca DR - Fix metal static analysis Change 3887460 by Uriel.Doyon Fixed to more static analysis warning. Change 3888201 by Rolando.Caloca DR - vk - Added r.Vulkan.SubmitAfterEveryEndRenderPass - Fixed bad layout on rendering back buffer Change 3888209 by Rolando.Caloca DR - vk - Unity compile fix Change 3888254 by Rolando.Caloca DR - vk - Fix async texture layout Change 3888893 by Guillaume.Abadie Simulates bokeh in DOF's slight out of focus. Change 3889085 by Guillaume.Abadie Fixes DOF's reduce pass sampling outside viewport. Change 3889924 by Rolando.Caloca DR - vk - Skip seemingly bad validation error Change 3890573 by Daniel.Wright Only initialize FDiaphragmDOFGlobalResource in Feature Level 5 Change 3890590 by Arne.Schober DR - Fix Paper2d crash. When addMesh is called the Vertex and Indexbuffers are nulled out. re-create Dynamic Mesh builder for every Mesh instead. #jira UE-55063 Change 3890638 by Arne.Schober DR - Better fix for Paper2d which honors batching #jira UE-55063 Change 3891099 by Krzysztof.Narkowicz 1.5 texel shadow offset fix inside Manual2x2PCF based on #4485 GitHub pull request #jira UE-54985 #4485 Change 3891234 by Krzysztof.Narkowicz Optimized PCF2x2 and PCF3x3 - merged #4494 GithHub pull request #jira UE-55121 Change 3891407 by Rolando.Caloca DR - vk - Set vendor id earlier Change 3891417 by Rolando.Caloca DR - vk - Missing layout transitions Change 3891718 by Arne.Schober DR - Do not recreate one Frame Resource for dynamic draws #jira UE-55063 Change 3891925 by Yuriy.ODonnell Fix/workaround for inconsistent preprocessor definitions for NVAftermath that result in FD3D11DynamicRHI class layout mismatch. NVAftermath support is now enabled by default for Win64. NVAftermath is declared as a private dependency in D3D11RHI. It does not automatically propagate to modules that explicitly include private RHI headers (OculusHMD, OSVR, OSVRInput). This results in NV_AFTERMATH being defined while compiling RHI module and not defined when compiling other modules, causing memory corruption at runtime. The long-term solution for this and similar issues requires some mechanism for adding transitive module dependencies, so that anyone that depends on D3D11RHI module would automatically also get the NVAftermath. Additionally, private headers should *never* be included directly by external modules. The short-term solution is to explicitly add NVAftermath dependency to OculusHMD, OSVR and OSVRInput. Additionally, NV_AFTERMATH is no longer forced by D3D11RHIPrivate.h when it's not defined. This allows catching this kind of mismatch in the future through a compiler warning (C4668). #jira UE-53065 Change 3891987 by Rolando.Caloca DR - vk - Support for dedicated allocations Change 3892339 by Jian.Ru Fix a crash when tessellation shaders are used in dx12 #jira UE-55127 Change 3892528 by Rolando.Caloca DR - vk - Update Linux headers Change 3892867 by Rolando.Caloca DR - vk - Don't create swapchain if not needed Change 3893416 by Guillaume.Abadie Implements bokeh simmulation on foreground and background gather. Change 3893732 by Chris.Bunner GetRelevance_Internal should use the immediate parent resource, not the base, as some features are overridden by permutations e.g. UsesWorldPositionOffset. #jira UE-53404 Change 3893868 by Guillaume.Abadie Allocates diaphragm DOF's buffers and structered buffer only on supported platforms. Change 3893917 by Chris.Bunner Potential fix for CIS. Change 3893933 by Chris.Bunner Duplicating CL 2647737 as this is the same issue from that JIRA where accessing game-thread data was being prevented. We don't have this check in UMaterial::GetMaterialResource already, but presumably the UMaterialInstance case was never removed as we've not been calling it until now. Change 3894218 by Rolando.Caloca DR - vk - Remove stat counters per draw call, gains 10% CPU on Infiltrator Change 3894579 by Arne.Schober RT - Fix assert not in RenderingThread from Triangle Renderer. #jira UE-55247 Change 3894724 by Rolando.Caloca DR - vk - New API for batching barriers Change 3894909 by Arne.Schober DR - Fix crash in Speedtree wind where Renderdata is unavailable #jira UE-54544 Change 3895414 by Rolando.Caloca DR - Add a configurable threshold for SCWs time outs Change 3896429 by Marcus.Wassmer Allow variable frame-latency delay in FrameGrabber frames. For performance you want at least a 1 frame delay so you don't sync the GPU to the CPU. Change 3896495 by Marcus.Wassmer Set pointer properly Fix CIS Change 3897253 by Guillaume.Abadie Fixes CIS warning in diaphragm DOF Change 3899179 by Guillaume.Abadie Implements background hybrid scatter occlusion for diaphragm DOF. Change 3903654 by Rolando.Caloca DR - vk - Rework dump layer to allow other layers Change 3903766 by Rolando.Caloca DR - vk - More wrappers Change 3904025 by Rolando.Caloca DR - vk - More wrappers Change 3904342 by Rolando.Caloca DR - vk - Track image resources & callstacks Change 3904346 by Rolando.Caloca DR - vk - Copy fix from 4.19 for flickering grass Change 3904510 by Rolando.Caloca DR - vk - Compile fix Change 3904914 by Daniel.Wright [Integrate] Fixed PS4 transitions with forward shading Change 3904916 by Daniel.Wright [Integrate] Fixed PS4 transitions with occlusion queries Change 3905975 by Rolando.Caloca DR - vk - Missing wrappers Change 3905977 by Rolando.Caloca DR - vk - Missed file Change 3907829 by Rolando.Caloca DR - Move depth bounds to the PSO Change 3907832 by Rolando.Caloca DR - vk - Prep for delaying transitions Change 3907834 by Rolando.Caloca DR - vk - Fix for depth stencil issues/validation errors Change 3907967 by Rolando.Caloca DR - vk - Linux compile Change 3908093 by Rolando.Caloca DR - vk - Fix depthstencil layout on descriptors Change 3908393 by Rolando.Caloca DR - vk - Disable dedicated allocation as it causes crashes on Nvidia 700 series Change 3908401 by Rolando.Caloca DR - Do transitions outside render pass Change 3908422 by Rolando.Caloca DR - vk - Fix transition state not getting stored Change 3908735 by Guillaume.Abadie Cherry-pick 3896619: Fixes after TAAU post process material that had wrong default buffer UV. #jira UE-55317 Change 3908736 by Guillaume.Abadie Cherry-pick 3891352: Fixes ensure when visualizing HDR with TAAU. #jira UE-55019 Change 3908753 by Guillaume.Abadie Lets the renderer layout the views in the internal render targets like it prefers. Change 3909119 by Daniel.Wright Fix some static analysis warnings Change 3911943 by Rolando.Caloca DR - vk - Fix for packaging Vulkan projects Change 3912145 by Rolando.Caloca DR - vk - Fix layout on streaming textures Change 3913029 by Rolando.Caloca DR - Fix missing transition Change 3913048 by Rolando.Caloca DR - Fix for hlslcc Change 3913054 by Rolando.Caloca DR - vk - Fix number of layers on barrier Change 3913171 by Rolando.Caloca DR - vk - Fix for decal missing transition Change 3913211 by Rolando.Caloca DR - vk - Add debug name to image tracking Change 3913449 by Rolando.Caloca DR - vk - Restore transition Change 3913466 by Rolando.Caloca DR - Fix Vulkan EngineTest Change 3913537 by Rolando.Caloca DR - vk - Fixes independent samplers & textures (contributed by AMD) Change 3913548 by Rolando.Caloca DR - vk - Warning fix Change 3913691 by Rolando.Caloca DR - vk - Fixes for parallel (wip) Change 3914656 by Rolando.Caloca DR - vk - Fix bug when using separate samplerstates and textures Change 3914730 by Rolando.Caloca DR - vk - Bump version Change 3914764 by Rolando.Caloca DR - vk - Don't crash on exit Change 3915532 by Rolando.Caloca DR - vk - Parallel context fixes Change 3915589 by Rolando.Caloca DR - vk - Hoist and rename transition and layout manager class out of the context Change 3915592 by Rolando.Caloca DR - Fix gpu marker name Change 3917607 by Rolando.Caloca DR - vk - Fix depth bounds on Vulkan Change 3917609 by Rolando.Caloca DR - vk - Fix static analysis Change 3917616 by Rolando.Caloca DR - Fix D3D11 initialization Change 3920569 by Rolando.Caloca DR - vk - Prep for layout mgr refactor Change 3921023 by Rolando.Caloca DR - vk - Dump layer fixes Change 3921623 by Rolando.Caloca DR - vk - Prep refactor for layouts - Dump now shows marker tree Change 3922007 by Rolando.Caloca DR - vk - Fix extra allocation per draw call Change 3922442 by Rolando.Caloca DR - vk - Detect potential issues Change 3922470 by Rolando.Caloca DR - vk - Minor optimization Change 3922482 by Rolando.Caloca DR - vk - More minor optimizations Change 3923158 by Rolando.Caloca DR - Move r.DisableEngineAndAppRegistration out to common RHI and use it on Vulkan Change 3923486 by Rolando.Caloca DR - vk - Minor cpu optimizations Change 3923505 by Rolando.Caloca DR - vk - Use bigger allocations for uniform buffers Change 3923516 by Rolando.Caloca DR - vk - Android compile fix Change 3923557 by Rolando.Caloca DR - vk - Cache descriptorset layouts, refactor duplicated code Change 3923851 by Rolando.Caloca DR - vk - Linux compile fix Change 3924153 by Rolando.Caloca DR - vk - Support for dynamic UBs Change 3924193 by Rolando.Caloca DR - vk - Remove old per pso descriptor pools Change 3924197 by Rolando.Caloca DR - vk - Remove unused global uniform buffer pool Change 3924220 by Rolando.Caloca DR - vk - Wrap some unused classes in their define Change 3924234 by Rolando.Caloca DR - vk - Show ring buffer wrapping messages Change 3924243 by Rolando.Caloca DR - vk - Fix bad dynamic buffer Change 3924902 by Rolando.Caloca DR - vk - Fix crash running infiltrator Change 3925209 by Rolando.Caloca DR - vk - Fix bug with dynamic buffers - Remove old defines Change 3925300 by Rolando.Caloca DR - vk - Allow packed uniforms as dynamic UBs (with r.Vulkan.DynamicGlobalUBs) Change 3925627 by Rolando.Caloca DR - vk - Move DynamicOffsets into the pipeline state Change 3925834 by Rolando.Caloca DR - vk - Cache per stage information Change 3925835 by Daniel.Wright Fixed DisplayName for UParticleModuleCollisionGPU Change 3925897 by Rolando.Caloca DR - vk - Split update descriptors loop Change 3926488 by Rolando.Caloca DR - vk - 16MB for ring buffer on desktop, 8 MB for mobile Change 3928168 by Guillaume.Abadie Cherry-pick 3917219: Implements r.DOF.RecombineQuality Change 3928173 by Guillaume.Abadie Cherry-pick 3927888: Enables r.DOF.HybridScatter.BackgroundCompositing and r.DOF.HybridScatter.ForegroundCompositing to work when both enabled. Change 3928216 by Rolando.Caloca DR - vk - Fix Android - Fix static analysis Change 3929119 by Rolando.Caloca DR - vk - Rename some classes for clarity - Fix read-only cvar Change 3929151 by Rolando.Caloca DR - vk - Rename class Change 3930046 by Rolando.Caloca DR - Temp fix Vulkan flickering grass Change 3930148 by Rolando.Caloca DR - vk - Only update dirty descriptors - Use dynamic descriptors for packed global uniform buffers Change 3930998 by Guillaume.Abadie Packs shader permutation in different XGE submissions. Change 3931079 by Rolando.Caloca DR - vk - Fixes for Android and non-real ubs platforms Change 3931942 by Krzysztof.Narkowicz Depth rendering - When EarlyZPassMode is set to DDM_AllOccluders, dynamic objects need also to test bUseAsOccluder just like static ones #jira none Change 3932819 by Daniel.Wright [Integrate] Scene Textures uniform buffer * Base Pass Uniform Buffer now contains a Scene Textures uniform buffer. Previously the translucent base pass had to check ~40 loose scene texture parameters every draw. * FMeshMaterialShader's must now bind PassUniformBuffer and supply a valid pass uniform buffer. For most passes this is just FSceneTextureUniformParameters. * FRendererModule::DrawTileMesh can now cleanly set dummy scene texture resources, just by configuring how the pass uniform buffer is created. * Moved scene texture shader functions out of Common, into SceneTexturesCommon which must be manually included by shaders that want to use them * Separate Mobile Scene Textures uniform buffer to silo the platform complexities Moved DBuffer inputs out of FDeferredPixelShaderParameters and into FOpaqueBasePassUniformParameters Removed per-frame material uniform expressions. GameTime material node with period is now implemented with an fmod in the shader, without the use of MaterialFloat, so that it will happen at full precision. * Per-frame expressions were used when the GameTime material node had a period, to do the fmod on the CPU where 32 bit precision is guaranteed, for mobile GPU's where pixel shader precision is sometimes less than 32fp. Moved forward shading data into the Base Pass Uniform Buffer Removed instanced stereo support for the light cull grid - will have to be reimplemented without changing SRV's per draw Base pass sets View Uniform Buffer from DrawRenderState instead of choosing which one to set per-draw Fixed padding in nested uniform buffer structs Skip SRV members on Feature Level SM4 and below Change 3932964 by Rolando.Caloca DR - vk - Renderdoc on Android Change 3933095 by Daniel.Wright Moved FSceneTextureUniformParameters out of the opaque base pass uniform buffer. * Base Pass shaders now enable SCENE_TEXTURES_DISABLED when compiling for a material of any domain other than MD_Surface. These are used when rendering thumbnails of a material in a different domain, which could be opaque, but the opaque base pass drawing policy does not bind a scene textures uniform buffer, so the shader must not bind it. * Opaque materials can no longer use EyeAdaptation. Change 3933096 by Daniel.Wright Better d3d11 assert message when a uniform buffer was not set by the renderer Change 3933176 by Rolando.Caloca DR - vk - Prefer mailbox if available Change 3933271 by Ryan.Vance #jira UE-55936 Fixed missing referenced uniform bindings on AR pass-through camera shaders. Change 3934000 by Guillaume.Abadie Fixes Win32 build in ShaderCompilerXGE.cpp Change 3934299 by Guillaume.Abadie Fixes a bug in DOF's reduce operator that was casusing color leaking between background and foreground. Change 3934699 by Daniel.Wright Added bAffectDistanceFieldLighting to landscape Change 3935190 by Daniel.Wright Forward Light Grid SRV's use StructuredBuffer on Metal, instead of 'invariant Buffer', which throws off RemoveUniformBuffersFromSource parsing Change 3935606 by Daniel.Wright Removed LightmapPolicy::Set which was needed for vertex lightmaps Renamed FVertexFactory::Set to SetStreams to make it findable Change 3936510 by Rolando.Caloca DR - vk - Update glslangValidator.exe to 1.0.65.1 for dumped debug SPIRV shaders Change 3936545 by Richard.Wallis Clone of CL's (3925763, 3925430, 3925424, 3925385, 3925278) Mark Satt's Xcode fixes from task stream //Tasks/UE4/Dev-UERNDR-354-mtlpp/ Plus XCode 9.2 compile fix in ApplicationPlatformCompilerPreSetup.h for -Wunused-lambda-capture. Change 3938061 by Daniel.Wright Vulkan: Added support for SRV's in Uniform Buffers Change 3938123 by Daniel.Wright Vulkan: Slightly better assert for null resources in uniform buffer Change 3939197 by Rolando.Caloca DR - vk - Disable custom memory mgmt Change 3939677 by Rolando.Caloca DR - vk - Fix static analysis warning Change 3939809 by Rolando.Caloca DR - vk - Fixes for async compute Change 3939875 by Rolando.Caloca DR - vk - Support for -vktrace Change 3939977 by Rolando.Caloca DR - vk - Skip a condition during gather UBs - Set up efficient compute async var - Fix validation cmd line Change 3939982 by Rolando.Caloca DR - vk - Revert mipchain Change 3939984 by Rolando.Caloca DR - vk - Remove unnecessary asserts Change 3940082 by Rolando.Caloca DR - vk - Custom mem mgr Change 3940475 by Rolando.Caloca DR - vk - Fix DFAO (indirect draw offset) Change 3940555 by Rolando.Caloca DR - vk - Minor fixes Change 3940675 by Rolando.Caloca DR - vk - Fix indirect type mismatch Change 3941111 by Rolando.Caloca DR - Renderpass bGeneratingMips Change 3941847 by Daniel.Wright Fixed Volumetric Lightmaps on Static geometry only working if the geometry had been built with Surface Lightmaps before Change 3941978 by Rolando.Caloca DR - vk - Minor fixes for presenting on compute queue Change 3942074 by Rolando.Caloca DR - vk - Remove some RHI stalls - Fixed swap chain stat Change 3943946 by Daniel.Wright Fixed Texcoord0 on Volume materials on a particle sprite, including SubUV particles. Change 3944065 by Daniel.Wright Fixed SceneDepth collision getting broken on GPU particles when a scene capture is rendering Change 3944158 by Daniel.Wright Fixed ViewUniformShaderParameters accessing GEngine->PreIntegratedSkinBRDFTexture too early during slate loading screen Change 3944865 by Rolando.Caloca DR - vk - Prep for render passes Change 3945196 by Rolando.Caloca DR - Move render pass validate to cpp Change 3945202 by Rolando.Caloca DR - vk - Some fixes for using real render passes Change 3945357 by Rolando.Caloca DR - Fix bad condition Change 3946295 by Yuriy.ODonnell Added a sentinel member to FLightMap, which is initialized in the ctor and reset in the dtor. Sentinel is then checked in FLightCacheInterface::GetLightMapInteraction(). This aims to shed some more light on a hard-to-repro crash, which is suspected to be a use-after-free bug: http://crashreporter/Buggs/Show/1785593 Change 3946407 by Rolando.Caloca DR - vk - Prep for refactor Change 3946648 by Rolando.Caloca DR - vk - Fixes for async compute (wip) Change 3947299 by Rolando.Caloca DR - vk - FIx static analysis Change 3948434 by Rolando.Caloca DR - vk - Fix exiting with parallel Change 3948928 by Rolando.Caloca DR - vk - Fix enabling draw markers for tools Change 3949021 by Rolando.Caloca DR - vk - Buffer tracking layer Change 3949602 by Rolando.Caloca DR - vk - static analysis fix Change 3949757 by Rolando.Caloca DR - vk - Remove bogus parameter Change 3949810 by Rolando.Caloca DR - vk - Move waits for cmd buffer Change 3950270 by Guillaume.Abadie Implements dedicated gather pass for foreground hole filling to avoid being VGPR bound in foreground gather pass, but still being hable to amend foreground. Change 3950272 by Rolando.Caloca DR - vk - Minor refactor for semaphores Change 3950279 by Guillaume.Abadie Oups... fixes build Change 3950298 by Rolando.Caloca DR - vk - Gather wait semaphores in the cmd buffers Change 3950371 by Rolando.Caloca DR - vk - fixes for async compute Change 3950597 by Rolando.Caloca DR - vk - Fix for clip distance (fixes planar reflections) Change 3951075 by Rolando.Caloca DR - vk - Fix for async compute Change 3952524 by Guillaume.Abadie Some DOF enum refactoring. Change 3955016 by Daniel.Wright Fixed BuiltData package getting renamed into the map package during a content browser folder move, causing a redirector to be incorrectly placed in the map package Change 3955668 by Guillaume.Abadie Fixes a bug where full res coc buffer was computed even if not doing slight out of focus. Change 3956722 by Guillaume.Abadie Fixes a bug where r.DOF.MaximalForegroundBlurringRadius was screen percentage dependent. Change 3959212 by Guillaume.Abadie Prefixes all DOF's shaders files with DOF keyword. Change 3959705 by Guillaume.Abadie Optimises the DOF setup pass outputing half res and full res with LDS downsample. Change 3959941 by Guillaume.Abadie Halfs DOF's hybrid scatter compilation by using a unique downsampling for both foreground and background, instead of 2 reduce passes. Change 3962273 by Rolando.Caloca DR - Fix typos #jira UE-56317 PR #4586 Change 3962615 by Rolando.Caloca DR - vk - Compile fix Change 3962949 by Rolando.Caloca DR - Fix DOFDownsample extension Change 3962993 by Guillaume.Abadie Back out changelist 3962949 Change 3963016 by Guillaume.Abadie Adds missing DOFDownsample.usf Change 3963041 by Rolando.Caloca DR - vk - Misc changes to help integrate Change 3964293 by Guillaume.Abadie Fixes DOF's setup pass reading outside of the viewport. Change 3964475 by Guillaume.Abadie Collapses DOF's hybrid scatter compilation passes into reduce passes. Change 3964883 by Daniel.Wright Fixed 3d texture in uniform buffer on unsupporting RHI Change 3964897 by Rolando.Caloca DR - Compile fixes Change 3964914 by Guillaume.Abadie Fixes a bug on r.DOF.RecombineQuality=0 Change 3965153 by Guillaume.Abadie Fixes compile warning in D3D12Commands.cpp. Change 3965814 by Rolando.Caloca DR - Prep for integration conflict resolve Change 3965899 by Rolando.Caloca DR - Fix odd linkage issue Change 3966072 by Rolando.Caloca DR - More prep for merge Change 3966163 by Rolando.Caloca DR - Merge prep Change 3966844 by Guillaume.Abadie Packs multiple DOF scattered bokeh per instance and uses PT_RectList in DOF for platforms that can. Change 3967116 by Rolando.Caloca DR - Compile fixes for integration Change 3967273 by Rolando.Caloca DR - Use same path for mip generation Change 3967277 by Rolando.Caloca DR - vk - Fix mips on cubemaps Change 3967693 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, missing shaders Change 3967851 by Rolando.Caloca DR - Copying //UE4/Dev-Main@3912313 to //UE4-DevRendering, Engine 2/2 Change 3968083 by Rolando.Caloca DR - Integration compile fixes Change 3968240 by Rolando.Caloca DR - Shader compile fixes for integration Change 3968270 by Rolando.Caloca DR - Fix for missing hash calculation Change 3969426 by Rolando.Caloca DR - vk - Fix warning Change 3969869 by Krzysztof.Narkowicz Back out changelist 3946295 - UE-54537 is fixed, so no need for this debug sentinel. #jira none Change 3969944 by Rolando.Caloca DR - Warning fix Change 3970020 by Rolando.Caloca DR - Bump after integration Change 3970052 by Rolando.Caloca DR - Fix for mobile Change 3970236 by Daniel.Wright Causing decal shader to recompile to fix a merge bug Change 3970270 by Daniel.Wright Bump shader version from merge Change 3970339 by Olaf.Piesche Replace series of locks/unlocks with a single one for curve injection #tests QAGame Change 3970390 by Rolando.Caloca DR - Rename FSceneTextureUniformParameters to FSceneTexturesUniformParameters - Remove duplicate method for occlusion queries Change 3970523 by Rolando.Caloca DR - Fix serialization of shaders Change 3970533 by Arne.Schober DR - fix for removing the Speed tree wind when the scene gets deleted. The original enque rendercommand requeues the element onto the renderthread although the call already came from the Renderthread and the scene can get lost in between. #jira UE-56322 Change 3971160 by Guillaume.Abadie Fixes CompositeEditorPrimtive pass and SelectionOutline pass for VR editor to work with TAAU. Change 3971516 by Guillaume.Abadie Cherry-pick 3912629: Fixes SSR that was computing vigneting according to PrevScreen that could let some outside viewport samples going through when rotating the camera. #jira UE-55353 Change 3971594 by Krzysztof.Narkowicz Fixed assert inside BindLightMapVertexBuffer. FSplineMeshSceneProxy was calling BindLightMapVertexBuffer for invalid (still not generated) lightmap UV channel after mesh reimport. Simplified assert, as at the moment almost all of the high callsites already clamp lightmap uv channel. #jira UE-56321 Change 3971622 by Krzysztof.Narkowicz Fixed crash inside Indirect Lighting Cache. Data (reflection captures and lightmap) generation calls ULevel::GetOrCreateMapBuildData(), which can destroy lightmap data if level has legacy data. Last Lightmap generation step recreates this data, but if user cancels lightmap generation - it won't do that. #jira UE-56171 Change 3974788 by Rolando.Caloca DR - Remove GSupportsGenerateMips Change 3974789 by Rolando.Caloca DR - Remove bogus function Change 3974986 by Rolando.Caloca DR - vk - Tracking fixes Change 3974989 by Rolando.Caloca DR - vk - Don't submit dummy barriers Change 3975075 by Olaf.Piesche Update for particle curve injection improvement, fixing ES2 problems #tests QAGame tm-shadermodels, various color curve tests in-editor Change 3975957 by Uriel.Doyon Fixed invalid max texture resolution when using the bake material tools. Change 3978471 by Daniel.Wright New cvar r.SkylightUpdateEveryFrame Change 3978779 by Rolando.Caloca DR - Accessor for texture sizes Change 3978797 by Rolando.Caloca DR - Clean up RHI CopyTexture API Change 3978832 by Rolando.Caloca DR - vk - Workaround for RenderDoc crashing due to Descriptor Pool reset Change 3978836 by Rolando.Caloca DR - vk - Remove generate mips Change 3979201 by Rolando.Caloca DR - vk - RHI CopyTexture. Uses general layout for generating mips Change 3979204 by Rolando.Caloca DR - Use render passes and CopyTexture to generate mips Change 3979592 by Rolando.Caloca DR - Warning fix Change 3980855 by Krzysztof.Narkowicz Optimize bounding sphere radius after non-uniform scale by using bounding box extent. #jira UE-56227 Change 3981065 by Rolando.Caloca DR - vk - Fix bad layout #jira UE-56238 Change 3981346 by Rolando.Caloca DR - Copy from 3707257 Support for not flushing compute jobs (r.D3D11.UAVFlushNV) Change 3981347 by Rolando.Caloca DR - Copy from 3707257 Don't flush between morph dispatched Change 3981932 by Mark.Satterthwaite Generate the shader hash and function name when a Metal shader error needs to be reported so that even without shader code we get something to go on. Change 3982442 by Rolando.Caloca DR - Fix warning Change 3982652 by Rolando.Caloca DR - vk - Signal semaphore cleanup Change 3983917 by Richard.Wallis Clone of CL 3974146 converted for mtlpp along with extra mtlpp usage suggestions by Mark Satt: Fix for black flickering on first paint with weighted material landscape on Mac. When using AsyncCopyFromBufferToTexture in Metal we put the blit operation on the prologue encoder - however after a draw call using that resource the copy operation should happen after on the current encoder, this keeps the correct order of operations. Added Bool return from various Asnyc renderpass resource requests so caller can decide correct further action. Updated to include the other async functions. Change 3984409 by Guillaume.Abadie Attempts to make static analysis happy again. Change 3984435 by Nick.Bullard Checking in Performance Test level provided to us by Tor Frick based on UE-44841. This has been utilized for checking issues against Aftermath performance impact. The Map includes 2 Level Book marks, most testing has been done against Bookmark 1 view, in fullscreen, in game mode Change 3985087 by Mark.Satterthwaite Make sure that the particle scratch buffer is large enough to hold all the data for the curve texture we are rendering to, otherwise a full set of curves will start scribbling memory after 64Kb (the curve texture is 256Kb of data - 512x512x4 as sizeof(RGBAUInt8) == 4). This happens in ElementalDemo. Change 3985201 by Rolando.Caloca DR - Fix bad CopyTexture Change 3985258 by Mark.Satterthwaite Try and detect orientation changes so that we don't blow-up on iOS due to a huge mismatch between the drawable texture for the display and the scene's depth-stencil target. I can't just fiddle with the depth-stencil texture itself without running the risk of obliterating in-use data and really we shouldn't permit such a mismatch anyway but it is fallout from 3620990. #jira UE-55756 Change 3986449 by Rolando.Caloca DR - vk - Update & consolidate Vulkan headers to 1.1.70.1 Consolidate SDK into one Change 3986571 by Guillaume.Abadie Makes PVS-Studio happy again in DOF. Change 3987039 by Yuriy.ODonnell Initial implementation of tracing profiler to show CPU and multiple GPUs on the same timeline. Currently only supported on DX12 platforms. Use `TracingProfiler frames=N` console command to trigger a capture of the next N frames. Trace is saved to disk as a JSON file into `Saved/Profiling/Traces` directory. Trace file uses Google Tracing format and can be visualized in Chrome built-in profiler (chrome://tracing). `r.GPUStatsChildTimesIncluded=1` CVar makes timing scopes hierarchical. `TracingProfiler.BufferSize=N` CVar controls the size of the tracing buffer, which may need to be increased for long traces (default is 65k events). Only can be set at startup. Change 3987074 by Yuriy.ODonnell Implemented timestamp calibration on DX11. Calibration is only performed when tracing profiler session starts. Change 3987160 by Yuriy.ODonnell Added thread naming and ordering to the tracing profiler output Change 3987331 by Mark.Satterthwaite Remove the Nvidia hack to retain resource references in command-buffers for UE-46604 as the mtlpp refactor provides stronger resource lifetime guarantees. #jira UE-46604 Change 3987754 by Mark.Satterthwaite Fix MetalRHI memory reporting in non-default path. PR #4568 Change 3988184 by Arciel.Rekman Linux: Fix editor OpenGL performance (UE-55960). - GetCurrentThreadId() calls became much more frequent with the OpenGL RHIT refactor. - We used to only cache that value in monolithic builds, because having per-thread static variables in dynamic libraries is risky due to OS limits. - This change adds dynamically-managed per-thread cache for non-monolithic builds. #jira UE-55960 Change 3988394 by Rolando.Caloca DR - vk - Improve memory mgmt - Use 256MB pages for Device heap (or 1/8th if less). - Remove texture allocations not going through resource manager Change 3988405 by Marcin.Undak Fix VulkanQuery crash on exit #codereview rolando.caloca #codereview arciel.rekman #rb arciel.rekman Change 3988567 by Rolando.Caloca DR - vk - Support for packed global UBs on pci aperture heap Change 3988668 by Rolando.Caloca DR - vk - Remove old comments Change 3988956 by Marcin.Undak RecordPerformance: added option to skip building/cooking before tests #rb none #codereview arciel.rekman Change 3989161 by Yuriy.ODonnell Static analysis error fix Change 3989196 by Guillaume.Abadie Fixes a crash in light shaft's TAA pass. #jira UE-57366 Change 3989207 by Yuriy.ODonnell Refactored FRealtimeGPUProfilerFrame to avoid splitting profile events when calculating exclusive times of scopes. This allows tracing profiler to retain the hierarchical view of the data, while keeping CSV and GPU Stat system behavior intact. Change 3989469 by Rolando.Caloca DR - vk - Fix for bad index; fix for bad transition Change 3989772 by Yuriy.ODonnell Implemented timestamp calibration on Vulkan Change 3990040 by Marcus.Wassmer Aftermath enabled by default. Removed unnecessary warning for other vendors Change 3990064 by Mark.Satterthwaite Ensure that packed globals are reuploaded when the command-encoder is restarted - don't simply invalidate the existing parameters. This properly handles cases where a single logical render-pass is broken into multiple command-encoders and/or command-buffers - otherwise all shaders must reset all parameters each time. When we move between frames we *do* want to perform a full state reset though as previous frame globals are treated as invalid. Change 3990080 by Mark.Satterthwaite Change the way we invalidate the visibility buffer between command-buffers and command-encoders so that on iOS you can reuse the same buffer within the same command-buffer, but not across more than one. The code provides an exception to this rule when running under the MetalRHI validation tools which can break each draw call into its own buffer. Change 3990084 by Mark.Satterthwaite Get MetalStatistics compiling again. Change 3990381 by Arciel.Rekman Bring back D3D12 in RecordPerformance. Change 3991113 by Rolando.Caloca DR - Fix crash on RHI thread on mobile preview - Check RHI objects are not null in the PSO initializer Change 3991191 by Ryan.Vance #jira UE-55952 Reimplemented instanced stereo for forward lighting cull grid after the srv/ub clean up. Change 3991343 by Rolando.Caloca DR - Copy from 3911492 UE4 - Disabled parallel mobile bass pass by default. This is experiemental and not known to be useful on any mobile platform. Change 3991375 by Mark.Satterthwaite Proper copyright assignment in the mtlpp debugger header. Change 3993151 by Daniel.Wright Fix RTDF resource transition found by Rolando Change 3993818 by Rolando.Caloca DR - Missed file Change 3993923 by Krzysztof.Narkowicz Fixed crashes inside RemoveSpeedTreeWind() and RemoveSpeedTreeWind_RenderThread(). FStaticMeshComponentRecreateRenderStateContext didn't flush deferred render updates causing stale RenderData to be left: 1. Thumbnail manager called SetStaticMesh(nullptr), which added StaticMeshComponent to deferred render updates. 2. UStaticMesh::Build called FStaticMeshComponentRecreateRenderStateContext and destroyed DenderData, but didn't touch Thumbnail's manager StaticMeshComponent as it was nullptr. 3. This resulted in a StaticMeshComponent with stale RenderData pointer. #jira UE-54544 Change 3994033 by Rolando.Caloca DR - vk - Reworked layers & extensions, as we were not doing it properly - Remove -vulkanstandardvalidation and -novulkanstandardvalidation as they are not needed anymore Change 3994275 by Mark.Satterthwaite Change to linking against mtlpp via AddEngineThirdPartyPrivateStaticDependencies and marking its header with THIRD_PARTY_* macros in the vain hope that might convince the remote compilation code to distribute the module to the remote machine when building MetalRHI. #jira UE-57507 Change 3994365 by Mark.Satterthwaite Pilfer some code from the old MetalHeap file to handle calculating texture memory size on older macOS and iOS builds when running with stats or LLM enabled. #jira UE-57513 Change 3994382 by Rolando.Caloca DR - vk - Some missing locks during image tracking Change 3994422 by Rolando.Caloca DR - vk - Remove bogus shader format Change 3995530 by Rolando.Caloca DR - vk - Fix for crash when validation is enabled Change 3995531 by Rolando.Caloca DR - vk - Fix static analysis Change 3995532 by Rolando.Caloca DR - vk - Added support for r.Vulkan.SaveValidationCache Change 3995610 by Uriel.Doyon Texture Streaming Changes and Fixes: - Using the small FOV items (like scopes) now only affect visible primitives (through "r.Streaming.MaxHiddenPrimitiveViewBoost"). - Static components added after the level is registered in the streaming manager are now handled correctly (fixes the low quality on the chests) - Dynamic components do not need to register to the streaming manager anymore. - Optimized dynamic component management by removing duplicate entries in the update list. - Added a pregarbage collect pass to the dynamic component management to optimize GC handling. - Added a budget reset logic whenever the scene requirements change significantly. - PIE worlds now have correct visibility information. - Fixed possible invalid memory access when processing the streaming manager slave views. - Refactored the incremental level texture data build to prevent new components from being unhandled. - Removed StreamingManager callbacks for NotifyActorSpawned() and NotifyPrimitiveAttached() - Added a StreamingManager callback NotifyPrimitiveUpdated(), to be used whenever a primitive streaming state must be updated. #jira none Change 3995908 by Arciel.Rekman Fix compile errors when using new Vulkan queries. Change 3995990 by Arciel.Rekman More compile fixes to new Vulkan queries. - MSVC did not catch this, clang did. Change 3996101 by Rolando.Caloca DR - vk - Win32 compile fix Change 3996323 by Mark.Satterthwaite Use the right include path to export the mtlpp headers. #jira UE-57507 Change 3996392 by Arciel.Rekman Vulkan: fix crash on start when using new queries. - CommandBufferManager was not yet set at that point and the code in queries relied on it. Change 3996585 by Rolando.Caloca DR - Slight improvement to GL being black, but just a temporary 'workaround' as it's not correct. Change 3998806 by Arciel.Rekman Fix Linux build (UE-57602). #jira UE-57602 Change 3998866 by Arciel.Rekman SubwaySequencer: fix old shader platform name. Change 3998947 by Mark.Satterthwaite Silence deprecation warnings in CEF on macOS now that we've moved to 10.12 as the minimum. #jira UE-57577 Change 3998951 by Mark.Satterthwaite Fix last of the deprecation errors that I am aware of for macOS 10.12. #jira UE-57581 Change 3998984 by Mark.Satterthwaite Build mtlpp for iOS 9.0 not 9.3. #jira UE-57586 Change 3999065 by Rolando.Caloca DR - vk - Make sure we use version 1.0.0 #jira UE-57521 Change 3999071 by Arne.Schober DR - [UE-55433, UE-57361] Hack SNORM support in OpenGL by re-interpreting UNORM. Underlying data is always SNORM. #jira UE-55433, UE-57361 Change 3999494 by Rolando.Caloca DR - Enable r.UnbindResourcesBetweenDrawsInDX11 in debug - Clear compute resources when r.UnbindResourcesBetweenDrawsInDX11 is enabled Change 4000197 by Krzysztof.Narkowicz Mesh simplifier - normalize TexCoordWeights using min/max TexCoord range. This fixes precision issues for very big TexCoord values and allows to optimize for all TexCoord channels when channels have values of different magnitudes (e.g. non standard TexCoord data). #jira UE-54935 Change 4000305 by Yuriy.ODonnell Suppress PVS Studio warning V547 (Expression is always true) related to Aftermath Reported issue to PVS team and to NVIDIA. Confirmed false positive, fix coming in future PVS version (v6.24). #jira UE-57579 Change 4000853 by Arciel.Rekman Linux: fix not calling CrashReportClient (UE-57678). #jira UE-57678 Change 4001504 by Rolando.Caloca DR - vk - Fix transition Change 4002460 by Krzysztof.Narkowicz Toggle for contant shadow length in word space Exposed contact shadows to Blueprints #jira none Change 4002608 by Rolando.Caloca DR - vk - Fix static analysis - Fix potential debug image tracking crash - Comment out unused methods Change 4002615 by Rolando.Caloca DR - vk - Allow r.Vulkan.WaitForIdleOnSubmit to be set at startup (e.g. in ConsoleVariables.ini) Previously, if your map needed to UpdateSkyCaptureContents on startup, an ensure would fail if GWaitForIdleOnSubmit was set. PrepareForCPURead needs to wait for the command buffer to finish before trying to read the results back, but the wait has already happened when r.Vulkan.WaitForIdleOnSubmit is set. Trying to wait again correctly complains that the command buffer is not in the correct state. So, skip the WaitForCmdBuffer call when r.Vulkan.WaitForIdleOnSubmit is set. Change 4002640 by Rolando.Caloca DR - vk - Missing support for CVarDefaultBackBufferPixelFormat Change 4002919 by Guillaume.Abadie Implements DOF's temporal upsampling pass for better dynamic resolution stability. Change 4002984 by Guillaume.Abadie Integrates Sebastian Aaltonen's ALU optimisations for TAAU. Change 4003112 by Olaf.Piesche Fir for TBB stall (resulting in severe hitches and hangs in the editor with stats active); tested multiple scenarios and encountered no hitches. #tests QAGame PerformanceTest and RenderTest map with various stats on and off Change 4003159 by Mark.Satterthwaite Undo parts of changelist 3970553 - the ref-counted pointer approach to returning textures to the pool is not working as expected so we'll remove that. It'll be faster on the CPU without it and everything works thanks to the changes this CL made to the way textures were released. #jira UE-57538 Change 4003287 by zachary.wilson Adding reflection capture content to TM-LightingScenarios Change 4003395 by Arne.Schober DR - Fix unitzialised value when clicking Go To in the editor #jira UE-57048 Change 4003425 by Rolando.Caloca DR - vk - Fix for new occlusion queries Change 4003530 by Arne.Schober DR - Disable GPU Benchmark in headless configurations #jira UE-57673 Change 4003717 by Rolando.Caloca DR - vk - Fix for depth not store, stencil store Change 4003719 by Rolando.Caloca DR - Minor switch to render pass Change 4003720 by Mark.Satterthwaite Don't suballocate private memory buffers on Vega and only Vega as there is something wrong with the blits in those cases but I can't capture a GPU trace to find out what right now (the driver is broken) - could be a bug in my code but this works on Polaris and Nvidia so it will need to be filed as a radar for AMD. Remove the FMetalBufferChunk from FMetalBuffer and simply store a pointer to the owning Heap/Magazine allocator. The FMetalResourceHeap now calls a new Release function to return the buffer to the allocator which will be faster on the CPU. #jira UE-57659 Change 4003854 by Mark.Satterthwaite Undo parts of 3990064 and try a different approach to get the uniforms to upload and remain available in the right places. As the original bug has been lost to time we should keep an eye out for missing buffer bindings by running under the Metal validation layer periodically. #jira UE-57576 Change 4004709 by Rolando.Caloca DR - Support for D3D 11, 12 & Vulkan for UAVs off Index Buffers Change 4005149 by Guillaume.Abadie Adds shader permutation to avoid clamping input buffer UV in DOF's gather pass. Change 4005284 by Uriel.Doyon Resaved volume texture assets with proper engine version. #jira UE-57534 Change 4005286 by Guillaume.Abadie Reduces constant setup in DOF's gather pass. Change 4005359 by Rolando.Caloca DR - vk - Fix annoying warning Change 4005363 by Rolando.Caloca DR - Fix android not finding vulkan shaders Change 4005457 by Rolando.Caloca DR - vk - Fix swapchain crash Change 4005473 by Patrick.Kelly UE-57135: Editor crash if set Reflection Capture Resolution to be 64 and New a Default level Codde by Daniel Tested by Patrick Change 4005474 by Rolando.Caloca DR - vk - Remove glsl code from shaders. Packaged QAGame goes from 176MB to 162MB Change 4005759 by Krzysztof.Narkowicz Fixed a bug, where reflection capture build is called, even though we are in mobile preview mode. #jira UE-57743 Change 4005774 by Mark.Satterthwaite Update the wave intrinsics to avoid implicit bool->uint conversion that Apple don't like. #jira UE-57750 Change 4005974 by Mark.Satterthwaite Don't use cubemap array types on iOS Metal as they aren't available on all devices and we need to maintain backward compatibiliy for years to come. #jira UE-57083 Change 4006056 by Mark.Satterthwaite Remove the use of the PrimitiveType argument from Metal draw calls. #jira UE-57822 Change 4006139 by Mark.Satterthwaite - Move the render-pass functions into the MetalRHI implementation for later alteration. - Implement Index buffer UAVs for Metal - makes them more like vertex-buffers so this is one more step on the road to a unified buffer base-class implementation. Change 4006215 by Mark.Satterthwaite Metal's begin & end render/compute pass API implementation will take some time, but for now make it not depend on the parent stub implementation. Change 4006394 by Mark.Satterthwaite In lieu of a real instruction count just use the number of lines in the "Main" function of the shader as the instruction count for Metal. #jira UE-57551 Change 4006493 by Mark.Satterthwaite MetalRHI can currently support 4-component formats for Buffer UAVs - this might need some thought in the future as the API evolves but we might as well take advantage while we can. Change 4006495 by Daniel.Wright Integrate from Refactor branch * New FMaterialRenderProxy function GetMaterialWithFallback which provides both the FMaterialRenderProxy and FMaterial. Needed when falling back to default material, so that proxy and material resource match. * Local vertex factory uniform buffer Change 4006851 by Brian.Karis Fix for joined charts forming an L to inflate both axii. Thanks to Jess Kube of The Coalition. Change 4006852 by Brian.Karis Fix for hard coded reflection capture cube map size. Should fix light static light aliasing in captures Change 4006918 by Brian.Karis New ByteBuffer functionality. Memcpy and scatter upload. Can implement GPU side TArray reflection. Not yet used by checked in code. WIP optimization. Change 4007246 by Guillaume.Abadie Creates lower quality permutation for DOF's gathering pass, without Coc based weighting of the samples, and lower number of gathering ring for fast accumulator. Change 4007291 by Guillaume.Abadie Exposes more DOF scalability settings. Change 4007328 by Guillaume.Abadie Optimises DOF's half res only setup pass using gather4 Change 4007627 by Richard.Wallis Fix for when Magic Mouse cannot zoom in World Composition editor. Missing default SNodePanel::OnMouseMove behaviour. Tested using a classic 2xbutton + wheel mouse and a Mac MagicMouse. #jira UE-57030 Change 4007682 by Richard.Wallis No video when playing HLS streaming video on Mac. 2 Issues, FPS was zero making duration for video sample buffer nonsense and Video Track dimensions were going to zero on the AVAsset once fully initialized when playing HSL streams. Now cache relevant details and handle zero frame rate. Notes: - Caching the frame rate is not as important as we could look it up each time and fix for zero - ignoring that at the moment. - Assume we DO NOT want the FrameSize to be the last fetched video frame size from the AvfMediaVideoSampler as I think that is the video quality for streaming video and not the media frame size. - Renamed a variable in the AvfMediaVideoSample - was called FrameRate but it was the FrameDuration by that point. #jira UE-56734 Change 4007731 by Rolando.Caloca DR - Disable byte buffers on non-hlsl based platforms #jira UE-57851 Change 4007741 by Rolando.Caloca DR - Disable byte buffers on hlslcc platforms Change 4007782 by Mark.Satterthwaite Force Metal shaders, including the stdlib, to recompile. Change 4007918 by Rolando.Caloca DR - vk - Some static asserts Change 4008404 by Arciel.Rekman Do not crash on incompatible Vulkan drivers (UE-57521). #jira UE-57521 Change 4008442 by Daniel.Wright Better comments on ERHIFeatureLevel expectations Change 4008494 by Arne.Schober DR - moved bDeletedThroughDeferredCleanup before begincleanup to catch cases where the reference is added twice to the array. also removed finishcleanup as all they ever did was deleting the pointer anyway, and it sould be adfded if such functionallity is ever required fom outside of the regular destructor. #jira UE-57754 Change 4008730 by Mark.Satterthwaite After the most recent changes to handling uniform buffer dirty bits in MetalRHI we should guard against attempts to set an unbound uniform buffer. #jira UE-57870 Change 4008949 by Brian.Karis Fix compile warning Change 4008951 by Brian.Karis Added LTC LUT textures Change 4009326 by Guillaume.Abadie Compiles out DOF's gathering bokeh simulation on platform other than desktop. Change 4009380 by Krzysztof.Narkowicz Moved area light code before the contact shadows, so contact shadows use representative light's direction. Merged all contact shadows shader code. Contact shadows keep constant screen space length independent of FoV settings. Contact shadows for translucents. Contact shadows for eye. Change 4009555 by Guillaume.Abadie Splits DOFCocTile.usf in two. Change 4009999 by Yuriy.ODonnell MallocStomp can now be enabled on certain platforms using '-stompmalloc' command line argument. Previously it was necessary to modify MallocaStomp.h and re-compile the engine. Currently supported platforms: Win64, Mac, Linux. Replaced hard-coded page size with FPlatformMemory::GetConstants().PageSize. Change 4010288 by Rolando.Caloca DR - vk - Fix for vertex streams Change 4010289 by Krzysztof.Narkowicz D3D12 - fixed depth bounds bug, where depth bounds wasn't properly set to [0;1] after disabling. #jira UE-57510 Change 4010297 by Rolando.Caloca DR - vk - Remove some functions for android Change 4010315 by Rolando.Caloca DR - vk - Remove create info macro Change 4010451 by Rolando.Caloca DR - vk - Reuse samplers - Infiltrator goes from 5759 to 24 samplers! Change 4010627 by Rolando.Caloca DR - vk - Fix missing values for tracking swapchain validation Change 4011924 by Guillaume.Abadie Implements tile based early return optimisation on DOF's postfiltering method. Change 4011941 by Guillaume.Abadie Shaves some ALU in DOF's accumulator for LowQuality permutation. Change 4012093 by Yuriy.ODonnell Disable MallocStompOverrunTest() in static analysis config, as it intentionally performs an out-of-bounds access. Change 4012195 by Rolando.Caloca DR - vk - Fix for mobile backbuffer layout Change 4012202 by Rolando.Caloca DR - vk - Don't use staging buffers on UMA Change 4012467 by Rolando.Caloca DR - Remove redundant check Change 4012486 by Rolando.Caloca DR - Fix missing transition Change 4012518 by Guillaume.Abadie Implements fast shader permutation for DOF's TAA pass. Change 4013084 by Arciel.Rekman Fix for Linux clock discrepancy. - Causing at least one precision issue, possibly more. (Edigrating 4003273, 4012462 from //UE4/Dev-Editor/... to //UE4/Dev-Rendering/...) Change 4013266 by Uriel.Doyon Fixed crash when setting SceneDepthTextureNonMS and not having valid depth buffers in the SceneContext. Change 4013626 by Uriel.Doyon Fixed crash in the lighting build when creating a blueprint of the ALight and placing a light component in it. #jira UE-51672 Change 4013805 by Rolando.Caloca DR - Fix more missing transitions Change 4014128 by Arne.Schober DR - Do not create LocalVFUniformBuffer when running without MVF #jira UE-57929 Change 4014193 by Uriel.Doyon Editing component transforms now invalidate the component's lighting cache. #jira UE-48134 Change 4014282 by Rolando.Caloca DR - vk - Remove extra validation during dump Change 4014584 by Uriel.Doyon Duplicated static meshes now generate a new GUID to prevent possible issues with lightmass. #jira UE-49064 Change 4014604 by Uriel.Doyon UStaticMesh postduplicate now only generates a new GUID if !bDuplicateForPIE. Change 4015460 by Guillaume.Abadie Composes separate translucency within DOF's recombine pass. Change 4015571 by Guillaume.Abadie Refactors tonemapper to use global shader permutation API, that adds permutation for HDR output device rather than dynamic branching that some shader compiler are not very well optimizing. Change 4015984 by Krzysztof.Narkowicz Fixed crash inside DFAO resource allocation, when DFAO viewport has zero area. #jira UE-58000 Change 4016056 by Mark.Satterthwaite Fix Mac Metal shader compilation of texture cube arrays. Change 4016062 by Richard.Wallis Convert things like Space, Delete, F6 etc to unicode so they display correctly on the Mac menu rather than first letter of word. Added the default Mac commands to the GenericCommands so we get a Chord overwrite message and stop things like cmd+ q / w / h from getting bound. #jira UE-46999 Change 4016109 by Mark.Satterthwaite One unified Metal buffer implementation - will make further changes a heck of a lot easier. Change 4016221 by Patrick.Kelly UE-57617: Ensure changing viewmode to ShaderComplexity while in -game Change 4016238 by Guillaume.Abadie Makes clang happy again in Tonemapper. Change 4016309 by Mark.Satterthwaite More *_RenderThread implementations for MetalRHI. Change 4016414 by Mark.Satterthwaite And MetalRHI version of CreateStructuredBuffer_RenderThread... Change 4016498 by Mark.Satterthwaite Don't hold on to the uniform buffers bound to the hull shader when switching to a tessellated draw call as they'll have the wrong buffer layout. #jira UE-57930 Change 4017394 by Juan.Canada OpenGL: Fixed shading artifacts due incorrect UNORM/SNORM conversions in skin/skincache/computetangent shaderss. #jira UE-57691 Change 4017522 by Rolando.Caloca DR - vk - Remove unused code path (old mip generation detection) Change 4017539 by Rolando.Caloca DR - vk - Fix for sky lighting mips showing green on AMD Change 4017542 by Arciel.Rekman Moved appCountTrailingZeros to a non-SSE header (fixes ARM64 build). - Arguably WITH_SLI shouldn't apply to Linux on ARM but the fact that the function wasn't available is bad on its own. Change 4017827 by Guillaume.Abadie Optimises DOF's scattering cost by a third. Change 4017835 by Rolando.Caloca DR - Only allow a render pass to generate mips for one color render target Change 4017889 by Mark.Satterthwaite Cache all the Metal state objects to avoid hitting the API unnecessarily. Change 4018251 by Mark.Satterthwaite Fix broken rendering on Metal that tracked back to the innocuous looking changes in CL #4006495 (no blame attached - these changes are entirely reasonable) and cause various bugs in QAGame's TM-DistanceFields, ElementalDemo and probably more. Doesn't fix broken SpeedTree rendering :(. MetalRHI was allowing uniform buffers to blow away linear texture buffers when the constant buffer has been elided due to dead-code elimination. This problem can manifest without linear textures if the uniform buffer contains both constant data and a resource-table but the shader doesn't use any of the constant data. That's because Metal doesn't separate constant buffers from any other kind of buffer unlike D3D which separates all the slots out - and Metal doesn't provide enough buffers to emulate the D3D arrangement. So far this has only manifested in the MVF + Linear Texture case but a more robust solution will be necessary long term. Change 4018514 by Guillaume.Abadie Implements r.DOF.Scatter.MinCocRadius. Change 4018553 by Guillaume.Abadie Implements r.DOF.Scatter.MaxSpriteRatio to control the budget upperbound of DOF's scattering Change 4020369 by Yuriy.ODonnell Disable MallocStompOverrunTest in all static analysis configs (using USING_CODE_ANALYSIS macro) Previously was only disabled for PVS-Studio. Change 4020620 by Arciel.Rekman Fix XboxOne CIS (fallout of appCountTrailingZeros move). Change 4020949 by Guillaume.Abadie Configures DOF in scalability settings. Change 4021593 by Rolando.Caloca DR - vk - Support for Aftermath style api on AMD Change 4021740 by Rolando.Caloca DR - vk - Change log output Change 4022008 by Uriel.Doyon Fixed renderthread stalls when streaming texture mips on low end systems. Change 4022135 by Rolando.Caloca DR - vk - Fix last mip's layout during mip chain creation Change 4022607 by Jian.Ru Speculative fix for a bug where an invalid vertex buffer is deferenced #jira UE-56229 Change 4022890 by Rolando.Caloca DR - Fix reference count not getting released Change 4023540 by Mark.Satterthwaite Avoid some pointless retain/release calls on Metal Encoders. Change 4023796 by Marcus.Wassmer Tell users they are over the maximum size when allocating very large rendertargets. Change 4025337 by Yuriy.ODonnell Improved use-after-free detection mechanism and physical memory usage of MallocStomp on Windows. MallocStomp on Windows will now reserve virtual address space for every allocation and then commit physical pages only to the valid usable part. Physical pages will be unmapped on Free, but virtual address space will not be released and therefore will never be re-used. Virtual address space is allocated from the OS in blocks of 1GB and then linearly sub-allocated. This reduces VA space usage, as VirtualAlloc returns blocks on 64KB granularity even if we just need 4KB. As a small bonus, this also reduces number of syscalls per allocation. This dramatically increases accuracy of use-after-free detection, but consumes significant amount of memory for the OS page table. Virtual memory limit for a process on Win10 is 128 TB, which means we can afford to keep virtual memory reserved for a long time. Running Infiltrator demo consumes ~700MB of virtual address space per second. Additionally, committing physical pages only for the usable part of the entire virtual block reduces physical memory usage by ~30% compared to old behavior, which allocated and committed entire block of pages via BinnedAllocFromOS and then marks border page as non-accessible. Change 4026047 by Rolando.Caloca DR - Fix test/shipping #jira UE-58148 Change 4026150 by Krzysztof.Narkowicz Force proper ordering of buffer visualization materials - after tonemapping (so exposure doesn't influence it) and before editor stuff like icons. #jira UE-57992 Change 4026226 by Rolando.Caloca DR - Fix static analysis #jira UE-58150 Change 4026354 by Jian.Ru Debug check trying to catch a crash. Only enabled in editor build #jira UE-50111 Change 4026655 by Rolando.Caloca DR - Fix for static analysis #jira UE-58149 Change 4026763 by Rolando.Caloca DR - Remove references to defunct CCT to avoid confusing licensees Change 4027167 by Uriel.Doyon Fixed possible out of bound buffer access when serializing with FDuplicateDataWriter. #jira UE-56509 Change 4027850 by Jian.Ru Prevent log spam #jira UE-50111 Change 4029546 by Rolando.Caloca DR - Compile fixes Change 4029624 by Yuriy.ODonnell Addressed static analysis errors in MallocStomp - VirtualAlloc return value is now explicitly checked. - C6250 is suppressed, as VirtualFree does not release address space by design. Change 4030225 by Yuriy.ODonnell Static analysis warning fix: make sure declaration of Sleep() is consistent between Windows headers and TBB The complexity with this particular case is that the warning is generated in synchapi.h, which is included by some Windows headers. If a module includes TBB and then Windows platform headers, static analyzer will report this warning. Suppressing it would require wrapping all instances of Windows header includes in third-party macros. Current pragmatic solution is to modify the Sleep() declaration in TBB header to be consistent with Windows and to report the issue to Intel for a permanent fix. Change 4030440 by Rolando.Caloca DR - Fix crash on mobile #jira UE-58222 Change 4030570 by Daniel.Wright Allow null SRV's in uniform buffers for feature levels that don't support SRV's in shaders Change 4030618 by Arne.Schober DR - missing tangent/normal sign conversion after integration from main #jira UE-58224 Change 4031588 by Rolando.Caloca DR - vk - Fix compile error when missing vkCmdWriteBufferMarkerAMD Change 4032145 by Mark.Satterthwaite Fix UE-58268 by only emitting the base_instance/base_vertex variables required to fix-up the instance/vertex ID values to match D3D when the Metal version is 1.1 or higher, earlier versions don't support these features. #jira UE-58268 Change 4032209 by Rolando.Caloca DR - Fix crash on EngineTest: Mesh Batch's UserIndex is not a union anymore Change 4033178 by Guillaume.Abadie Fixes FXAA sampling outside viewports, that was causing black outline on bottom and right edge of the screen when ViewSize != BufferSize, problematic for some screenshot automated test. #jira UE-58151 Change 4034489 by Daniel.Wright Fixed UStaticMeshComponent modifying its UStaticMesh when undoing a change. This caused a crash when other static mesh components using the same mesh asset were rendered, since their rendering state was not recreated. A component should not modify its asset during PostEditUndo. * This behavior has been present for a long time but was previously hidden because only the vertex factory of the mesh asset is cached in static draw lists, not any of its rendering resources (eg vertex declaration). Change 4035157 by Uriel.Doyon Fixed deadlock in the streaming code when running with -onethread. #jira UE-58299 Change 4035198 by Rolando.Caloca DR - vk - Fix issue when an older SDK was installed, UBT would pick it (should pick the newer of ThirdParty\Vulkan or installed SDK). #jira UE-58267 Change 4035730 by Arne.Schober DR - Fix missing Fog parameters during LightScattering Injection #jira UE-57608 Change 4035843 by Daniel.Wright Reimplemented support for EyeAdaptation node in opaque materials Change 4036837 by Marcus.Wassmer Replace some of the screenshots to match new un-tonemapped buffer visualization Change 4036980 by Rolando.Caloca DR - vk - Fix deadlock contention during mem allocation on Linux Change 4037225 by Guillaume.Abadie Fixes jittering selection outline. #jira UE-58350 Change 4038056 by Marcus.Wassmer roll back changelist 4026150. breaks a bunch of automated tests by cutting off half the image. Change can go back in later with that part fixed also Change 4038296 by Jian.Ru Static analysis fix #jira UE-58377 Change 4038402 by Ben.Marsh Suppress IncludeTool warnings caused by CL 3998947. Change 4038514 by Arne.Schober DR - Fix case with MVF where instance offset is not supported by the API (in this case only foliage OpenGL and TvOS), usually the buffers are offsetted instead but with MVF we do not use offsetted buffers, therfore the offset needs to be passed into the shader although we are drawing with offset of 0. #jira UE-57652 Change 4038747 by Marcus.Wassmer Back out changelist 3853645, causing us to lose shadows in the shaderhair test Change 4040138 by Rolando.Caloca DR - Fix compile warning Change 4041614 by Rolando.Caloca DR - vk - Fix for Oculus module #jira UE-58267 Change 3810277 by Daniel.Wright Ray Traced Distance Field shadows use a two pass tile culling algorithm with no tile max - fixes flickering from tile overflow in dense areas or with a low sun angle. Costs .2ms on PS4. The distance field scene buffers now use float4 on PS4 and Xbox, saves .1ms on PS4. Change 3817029 by Uriel.Doyon Added UVolumeTexture, which use 3D textures. Compressed formats are supported on DX11, DX12, PS4 and XB1. Projects targetting OpengGL don't have access to compressed formats (as the implementation has texture tiling issues). Add "r.AllowVolumeTextureAssetCreation" set as 0 by default, which controls whether volume texture can be sampled in materials and whether they can be created from 2D texture assets. Platform not supporting BC7, will now fallback on RGBA8 instead of DXT to preserve quality, in an attemps to increase usage of BC7. #jira UE-32263 Change 3819960 by Michael.Lentine Expose UEPhysics Clothing Parameters through UI. Change 3823401 by Rolando.Caloca DR - Add NumQueriesInBatch to RHIBeginOcclusionQueryBatch Change 3844805 by Arne.Schober DR - Increased Intermediate normal of Umodel and Skelmesh from 8bit Unorm Compressed to float. A resave/rebuid/reimport of the meshes is recommended to recover some lost precision. Fixed an issue with compressed (packed) normals on the GPU which were off by one integer representation. Also switched from UNORM to SNORM to get a discrete zero representation and removed some mads from all the VertexShaders. Change 3847283 by Marcus.Wassmer Extra fixes from Uriel Change 3876607 by Rolando.Caloca DR - Use render passes when running occlusion queries - Removes the RHI(Begin|End)OcclusionQueryBatch API Change 3903799 by Daniel.Wright [Integrate] Pass Uniform Buffers * All pass-constant shader inputs should go into the appropriate pass uniform buffer, instead of being set per-draw * Moved many per-draw base pass parameters over to the Base Pass Uniform Buffer * Opaque and Translucent base pass shaders have different uniform buffers, which allows compile errors when accessing an invalid resource (eg GBuffer in Opaque), instead of silently falling back to GBlackTexture Uniform buffers can now contain nested structs with UNIFORM_MEMBER_STRUCT() * This allows composing a uniform buffer at a particular update frequency out of many features, with encapsulation of each feature's parameters in a struct. * Eg deferred fog uses FFogUniformParameters, but so does translucency in the base pass, where FFogUniformParameters is reused nested inside the base pass uniform buffer. * Resources can now be located anywhere in the uniform buffer. Padding is inserted to the cbuffer representation to keep memory layouts matching. In the future the cbuffer could be compacted. * RemoveUniformBuffersFromSource() which works around HLSLCC lack of struct initializers now handles nested structs Change 3917500 by Rolando.Caloca DR - Change depth bounds so only the enable bit is in the PSO, allow min/max to be dynamically modified Change 3964907 by Guillaume.Abadie Implements RectList topology support in RHI. Change 3979171 by Mark.Satterthwaite Copying //Tasks/UE4/Dev-UERNDR-354-mtlpp to Dev-Rendering (//UE4/Dev-Rendering): Rewrites MetalRHI in terms of mtlpp, which is a C++ wrapper library built around Metal's Objective-C API that attempts to reduce overheads and eliminate resource lifetime errors. Regarding mtlpp: - The mtlpp library uses C++ constructor/destructor and smart-pointer style management of Objective-C retain/release calls to prevent over- and under-release problems. - To reduce Objective-C overheads the mtlpp library caches the internal C-function that implements the Objective-C selectors for the most commonly used Metal protocol types and calls the function directly - this avoids objc_msgSend which does this look-up dynamically and thus improves CPU performance slightly. - Another advantage is that mtlpp provides infrastructure to extend the Metal API slightly to help improve MetalRHI - the two important aspects are mtlpp::CommandBufferFence which provides a consistent CPU<->GPU synchronisation primitive and sub-buffer allocations from mtlpp::Buffer which allow for far superior memory management. - Validation functionality is also provided by mtlpp to detect CPU vs. GPU data races and resource lifetime validation - this is expensive and is thus optional and compiled out from Shipping binaries that should be used when performance is most critical. The validation only works between resource modification and *submitted* command-buffers - anything that is being actively encoded on the CPU is ignored and it remains the responsibility of the application to validate the order of operations when encoding. Apple Platform: - LLM support which tracks Objective-C objects is enabled only on macOS - we don't have the necessary libraries to intercept and override the internal system calls on iOS. MetalRHI: - All the types are switched over, (mostly) insuling the external API from the horror of Metal and Objective-C. - Buffers are now managed quite differently, small buffers are allocated from a magazine allocator that allocates in fixed blocks from a larger parent buffer, intermediate sized buffers are allocated from a simple heap allocator that wraps a larger buffer and anything of reasonable size (>2Mb) will use the pooled allocator. This *radically* reduces the number of buffer resources, by as much as a factor of 10, because they are now sub-allocated without the need to use MTLHeap or MTLFence so they are performance equivalent to the existing implementation on the GPU and much faster on the CPU. Total memory use is approximately the same. - Vertex & index buffer management has been updated to reflect changes in the management and to avoid reallocating buffers which provide a Linear Texture (for SRVs) unless strictly necessary. This ensures that even in cases where a dynamic buffer is updated multiple times in a frame it will still work acceptably well. - The Metal ring-buffer implementation is completely different again, this time it can use Managed memory on macOS which allows for much better performance on eGPUs which will be more and more important for Mac. - Everyone that needs to wait on a command-buffer fence (rather than a command-buffer itself) now use mtlpp::CommandBufferFence, which prevents race conditions between the different command-buffer handlers (which sometimes execute out of order). - LLM tracking should now report the same data as the MetalRHI stats group for buffer & texture allocations - there is no segmentation for Vertex/index/Structured/Uniform allocations in Metal so these numbers are going to be wrong and will need to be rethought. - What will be unseen are the number of small but important resource usage fixes that avoid stale resources from being bound to the device after the point at which they become invalid. This should eliminate a class of errors where the GPU uses a resource pointer that is modified by the CPU and was necessary to satisfy the new mtlpp validation code. Other: - Remove the Metal focused workarounds from the ClothBuffer resource binding and related vertex-buffer SRV - these were put in when MetalRHI/MetalShaderFormat couldn't handle float->uint conversions correctly and they should now. - Fix a validation error caused by trying to render a 0-sized scissor rect which is invalid in Metal and simply pointless elsewhere. - Consistency of disabling the Manual Vertex Fetch behaviour in shaders. #jira UERNDR-354 Change 3979312 by Rolando.Caloca DR - Remove bogus bKeepOriginalSurface parameter in CopyToResolveTarget Change 4005122 by Rolando.Caloca DR - Support for PS4 Index Buffer UAVs Change 4016298 by Guillaume.Abadie Fixes DOF hybrid scattering on platforms that supports RectList topology. Change 4018575 by Guillaume.Abadie Optimises DOF's reduce pass when doing scattering compilation. Change 4020317 by Guillaume.Abadie Implements WaveBroadcastIntrinsics.ush. [CL 4042226 by Marcus Wassmer in Main branch]
2018-05-01 10:36:33 -04:00
// No need to restore texture stage; leave it like this,
// and the next draw will take care of cleaning it up; or
// next operation that needs the stage will switch something else in on it.
}
void FOpenGLDynamicRHI::InvalidateTextureResourceInCache(GLuint Resource)
{
VERIFY_GL_SCOPE();
if (SharedContextState.Textures || RenderingContextState.Textures || PendingState.Textures)
{
Copying //UE4/Dev-Niagara to //UE4/Dev-Main (Source: //UE4/Dev-Niagara @ 4074996) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3853627 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse VectorVM #tests non-gpu auto tests pass Change 3853628 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Runtime #tests all non-gpu auto tests pass Change 3853629 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Shaders #tests all non-gpu auto tests pass Change 3853630 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Plugins\FX #tests all non-gpu auto tests pass Change 3853631 by Shaun.Kime Jonathan's material function from Orion\DevNiagara #tests all non-gpu auto tests pass Change 3853633 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse EngineTest #tests all non-gpu auto tests pass Change 3853911 by Shaun.Kime GPU rendering now works #tests GPU tests now pass Change 3854179 by Shaun.Kime Removing dead system #tests now just with a warning Change 3854731 by Shaun.Kime Checkpointing current work #tests n/a Change 3855080 by Shaun.Kime Fixing not all control paths return a value error #tests n/a Change 3856185 by Bradut.Palas MultiStack with pinning support. #jira UE-53459 #tests none Change 3856615 by Shaun.Kime Preventing a null pointer dereference when copying unallocated data #tests auto tests pass Change 3856622 by Shaun.Kime Getting rid of the bogus get alias method #tests auto tests pass Change 3856644 by Shaun.Kime Adding the ability to query the number of filtered triangles, index those triangles directly, and compute the position, velocity, UV, and NBT of a triangle. #tests all auto tests now pass Change 3856645 by Shaun.Kime Added several new auto tests and tweaked existing ones. + PerParticleRandom still had some randomness in it + UserColorCurve has a user color curve defined in 3 different components referencing the same system + BasicSkinnedEmitter has 4 skinning sub-tests, attached as a subcomponent, referencing a world skeletal mesh, using a material filter, and using a bone filter + added a skinning module that spawns based off exec index and a data interface that queries the number of triangles on a skeletal mesh. #tests auto tests pass Change 3856675 by Shaun.Kime Fixing crash on delete of an emitter #tests removed one and multiple emitters from active multi-emitter. No crash #jira UE-54378 Change 3860613 by jonathan.lindquist New dynamic input Change 3862549 by Shaun.Kime Missing last known good images Change 3864525 by Simon.Tovey Fix for vm compiler crash when using structs as constants. #tests No longer crashes. Change 3864729 by Frank.Fella Sequencer - Fixed a few places which were modifying sequencer data, but not calling the NotifySequencerDataChanged. Change 3864737 by Frank.Fella Niagara - Fix the timeline in the niagara editor plus other fixes. + Turned on looping in the timeline by default. + Added simulation options to control playback in the editor, including turning off auto-play, disabling reset on change, and disabling resimulation when changing while paused. + Added a buttons to the timeline for each renderer an emitter has which shows a renderer specific icon and will allow navigation directly to the renderer with future stack changes. + Fixed issues in the emitter life cycle and spawn rate modules which were preventing delay and looping from working consistently. (includes auto-test) + Added top level metadata for modules. + Added the ability to add metadata to a module and it's inputs to allow it to be edited directly using timed sections in the timeline. Currently configured for the emitter life cycle module. + Changed the way the "MaxSimTime" on niagara component works so that it now represents the maximum frame time which should be used when seeking the component to the desired age. This previously was the maximum amount of simulation time to run which would prevent simple effects from simulating quickly, and would also allow more complicated effects to hang the UI while seeking. + Changed the behavior of niagara component when seeking to desired age so that it always uses the exact specified seek delta instead of trying to seek to the exact desired age. + Fixed the component so that systems which are seeking to the desired age in the editor no longer draw in fast forward mode. + Changed the default playback range for effects in the timeline from 1000 seconds to 10 seconds, and fixed the timeline so that the playback range is serialized into the asset which will persist the setting across loads. + Fixed scrubbing in the timeline so that it doesn't immediately reset when scrubbing backwards. + Added a button to the timeline track for enabling and disabling isolation mode for emitters. + Added a checkbox to the timeline to enabled and disable emitters from the timeline. + Fixed PinToNiagaraVariable so that it asserts if bNeedsValue is specified and it can't actually provide a value. + Create a class called FNiagaraStackFunctionInputBinder which allows binding to an input of a function on a stack so that you can easily set and get the value of the input without having to worry about modifying the graph or rapid iteration parameter sets directly. #tests Existing auto-tests and 1 new test for life cycle changes. Change 3867179 by Frank.Fella Niagara - Turn off GPU simulation for test assets for Shaun. Change 3869201 by Simon.Tovey Bypassing JonLs issue #tests no longer crashes. Change 3869897 by Frank.Fella Niagara - Fix crashes when using the skeletal mesh data interface. NOTE: The change to the actual skeletal mesh data interface code doesn't seem needed, but without it, it crashes with the stomp allocator on. We'll have to investigate further. Change 3870487 by Frank.Fella Niagara - Always generate cached skin data immediately, and make sure we're not indexing triangles that don't exist. This is a temporary fix to avoid a crash when changing the skeletal mesh source on an effect in the level from the details panel. Change 3877378 by Frank.Fella Niagara - Update the burst and lifecycle modules with new metadata for incoming timeline changes. Change 3877564 by Frank.Fella Sequencer - Fix a few more places which were modifying sequencer data without calling NotifyMovieSceneDataChanged. Change 3877565 by Frank.Fella Niagara - Remove old unused burst code from some runtime classes. Change 3877567 by Frank.Fella Niagara - Add support for keying bursts on the timeline which is configured using script metadata. Change 3877699 by Frank.Fella Niagara - Fix a crash in the new timeline code for when you have bursts, but you have inputs on the emitter lifecycle bound, also set lower bound of view range of the timeline to be -.1 so that you can more easily interact with keys at 0. Change 3877715 by Frank.Fella Sequencer - Update the change type when pasting keys from the clipboard from Unknown to TrackValueChanged to avoid unnecessary work. From code review on last change. Change 3879285 by Simon.Tovey A couple of fixes for using struct constants #tests Jon's case now compiles and works correctly. Change 3879378 by Frank.Fella Niagara - Fix a few spots where recursive graph traversal was visiting nodes multiple times because of diamonds in the pin connections. This reduces a terrible hang in UNiagaraScriptSource::InitializeNewRapidIterationParameters from 5 minutes to 5 seconds but there are futher issues to investigate becasue even 5 seconds it too long. Change 3879858 by Shaun.Kime Moved the VM script compilation to the DDC in order to facilitate better team compilation behavior. Significant changes to the translator and overall compile workflow to make the data behave better for a future multi-threaded compilation path. In order to know when to compile, a key is generated that uses the compile id's of the graphs that influence the compilation of our node. In this way, if an end user goes and edits a function or module and checks in, the overall compile id will not match b/c that function is in the dependency list of a system downstream. The system will then know to recompile. However, everyone else on the team will generate the same key because the asset in question was checked in with its local compile id already changed. Additionally, we now employ change tracking on traversals from a node graph. These traversals walk through all the nodes leading to a given output node and see if they've been altered. If they have, a new compile id is generated. If not, the old compile id is used. This also means that if you edit a particle update section in the stack, the emitter section won't force the system to recompile. GPU scripts now have their own script slot rather than riding alongside particle spawn scripts. This allows us to address them independently in the translator and put them in the DDC as well. Once the text is generated, we then go back out to the DDC to generate the shader associated. Known issues: + Emitters are sometimes marked dirty on open + Nodes connected to event writes aren't part of the hashing + DataInterface signature changes don't dirty the compiles + Struct changes don't dirty the compiles + On system loading, we go out to the DDC instead of using existing scripts, which is slower.. #tests all auto-tests pass, additional tests run to validate proper behavior Change 3879859 by Shaun.Kime Content update post DDC change Change 3879862 by Shaun.Kime Niagara plugin content to ddc Change 3879958 by Frank.Fella Niagara - Actually fix the bad recursion in this function by using the existing traversal method. Change 3881727 by Damien.Pernuit Niagara - Houdini - Created a separate plug-in for the Houdini CSV Data Interface. Change 3881877 by Simon.Tovey Fix for mac compile issue Change 3882773 by Simon.Tovey Actual fix for Mike Change 3882822 by Shaun.Kime Rather than throw a check, I instead emit an error when we can't match up a data interface and instantiate a CDO version. Not perfect, but this will let you recompile. #tests allows me to open jonathan's file Change 3883538 by Shaun.Kime Moving particle-level scripts to compile with the emitter named Emitter in their internal scripts. This simplifies the dependencies quite a bit, but causes some complexity on the wiring side (most of which we were already doing anyway). Getting rid of some allocations in translation (still more to go). Fixed some of the logic for emitters that had modules of the same name to now properly concatenate. Compile version bumped, so all scripts will be forced to recompile. Not saving this into the test files for now, as I expect this to happen a bit for the near term. #tests all auto-tests pass, creating a new emitter and system on PC works Change 3883552 by Shaun.Kime Fixing renaming to work properly now. It just invalidates the system script compile id's, forcing it to auto-compile. #tests auto-tests pass Change 3884722 by Bradut.Palas Added searchbar with basic name search for Niagara stack #tests none #jira UE-53469 Change 3884793 by Shaun.Kime Adding pragma once #tests no longer complains about duplicate definition Change 3885629 by Wyeth.Johnson Setting up a transient meshrotation framework pre-integration Change 3887440 by Wyeth.Johnson Custom HLSL failure for Shaun Change 3888911 by Bradut.Palas stack search box now has a minimum width of 300 pixels #tests none Change 3890843 by Shaun.Kime Creating a Niagara quaternion type. #tests created in editor, saw default was correct, carried through to VM runtime through attribute viewer Change 3890849 by Shaun.Kime Porting over 4.19 fix to Dev-Niagara #tests allows creation of valid scripts even when ini is cleared. Change 3891088 by Frank.Fella Sequencer - When getting selected tracks for the external selection api, include tracks if any of their child nodes are selected. This matches the behavior object guid external selection. Change 3891114 by Bradut.Palas Fixing crash that sometimes happens if a stack tree changes while a stack search is active #tests none Change 3891131 by Frank.Fella Sequencer - Move section headers for bool, int, vector, and color to the public directory so they can be used by the niagara level sequence integration. Change 3891165 by Wyeth.Johnson error for shaun Change 3891354 by Shaun.Kime Adding Quat struct to more locations. Now treated like hlsl float4. #tests EulerToQuaternion now compiles Change 3891463 by Bradut.Palas Fix crash that sometimes happens when deleting module and hitting Ctrl-Z to undo (the condition for removing the listeners from the rootentry should not be tied to the validity of weak pointers for system and emitter, because sometimes they are out of sync when changing the graph) #tests none Change 3891641 by Wyeth.Johnson resave node Change 3893143 by Shaun.Kime Fixing issue where you try to bind a vertex color sampler to a mesh without it. We failthe binding rather than crash due to a check later. Also fixed up error logging to only mention the one that failed. #tests can open NiagaraSystem'/Game/FX/SkeletalMeshDissolve/EmittersAndSystems/FightSceneDissolve.FightSceneDissolve' with an error.. Change 3893528 by Bradut.Palas fix another crash when search results are invalidated during search #tests none Change 3893830 by Shaun.Kime Fix for copy & paste of comment boxes #tests can now copy and paste comment boxes Change 3894012 by Bradut.Palas no longer executing search tick if the rootentry is null #tests none Change 3894828 by Frank.Fella Niagara - Runtime changes to support sequencer animation + Reset the simulation when force solo is changed on the component. + Invalidate the render data and clear the buffers when resetting to avoid previously rendered particles from drawing. + Automatically sync the override parameters in the component when the source assets exposed parameters change and removed forced syncing from various places. + Remove lots of refresh code from the niagara component details which should not be neccessary anymore. #TESTS Ran autotests, tested through the UI while building the sequencer tests asests. Change 3894832 by Frank.Fella Niagara - Level sequence support for spawning and animating system life cycle and select user parameter types. #Tests Ran existing tests and added a new test to verify added functionality. Change 3896944 by Bradut.Palas safeguard entries with no search items (it actually can be null) #tests none Change 3896948 by Bradut.Palas Fix assert when dereferencing source array (no need for a raw pointer to the array since it's initialized with the content anyway) #tests none Change 3896950 by Bradut.Palas fix compile error with previous commit #tests none Change 3897698 by Frank.Fella Niagara - Fix some safety issues with parameter initialization on the niagara component. + Kill the current system if we synchronize parameters to avoid issues with data interface lifetime. + Always sync parameters when the asset is set to prevent missing data interfaces in the override list. + Add an enum to control how data interface parameters are handled when calling CopyParametersTo. + When the system instance is copying the asset parameters, have it copy data interfaces by reference so that it's not creating data interfaces copies which will be deleted at the next garbage collection. #Tests Auto-tests, also doesn't crash anymore when opeining Jonathan's disolve effect and then opening a level. Change 3897953 by Frank.Fella Niagara - Remove some namespace restrictions from the code that generates the available parameters to read from in the stack UI since it was preventing the use of custom namespaces in modules and it was not clear what issue it was solving since we already prevent scripts from addressing parameters from lower level scripts. Also move user parameters to their own menu section. #Tests Custom namespaces are usable again in the stack. Change 3898926 by Bradut.Palas Fix for crash caused by garbage collection and async search #jira UE-55284 (Stack search doesn't work on collapsed entries) now searching through unfiltered children, will need extra fixes on the stack to eliminate "ghost" results" Both are still under code review, submitting because they are simple to rollback and harmless to other features. #tests none Change 3899069 by Shaun.Kime Parallel compilation Major changes: Rather than a custom streaming version that we know influences a rebuild, I'm moving away to a guid that you need to regenerate if you change the compiler in any meaningful way needed for multiple reasons, 1) if two people are making changes to the compiler, having something other than a guid as the value makes the content of the ddc ambiguous 2) when iterating I often need to make multiple changes to get to a working final result, bumping the version number each time that happens gets old fast We fully clone the input graph to do the compile in the background. While the translation step is not a huge amount of time, it keeps the main thread responsive. We currently have a big critsec around the crosscompiler to bytecode as it isn't threadsafe. Future changes will push this to the ShaderCompilerWorker. #tests all tests pass as well as stress tests around saving while compilng, long compile times, etc. Change 3899071 by Shaun.Kime Fixing the availability flags for system and emitter scripts. #tests all auto tests pass Change 3899077 by Shaun.Kime Fixing assets to have their wait on compile finished checkbox checked in the editor for testing #tests n/a Change 3899114 by Wyeth.Johnson Random bool custom hlsl node Change 3899184 by Bradut.Palas implemented categories for module inputs (now inputs can be assigned a category in the module editor and they will be grouped by those categories in the Niagara stack) #tests none Change 3899329 by Bradut.Palas fix broken commit by adding missing new files NiagaraStackInputCategory.cpp and .h #tests none Change 3899439 by Yannick.Lange Niagara reroute node. Change 3899516 by Shaun.Kime Official angle conversion modules. #tests made a local test emitter that converted back and forth between angles. Results were correct. Change 3900193 by Shaun.Kime Fixing build #tests now compiles Change 3900474 by Shaun.Kime Fixes to help Mac compile #tests n/a Change 3901131 by Simon.Tovey Warmup feature. CPU Sim only. Also has ability to advance simulation by tick count or seconds via BP/C++. Includes some engine tests. #tests editor + autotests Change 3901455 by Frank.Fella Niagara - Add WITH_EDITORONLY_DATA to prevent non-editor compile failures. Change 3902477 by Frank.Fella Niagara - Fix FNiagaraEditorTypeUtilities to be a thread safe TSharedFromThis since it's always created with a thread safe shared pointer, also fix up issues related to this change. Fixes a crash which occurrs when it's the target object of a delegate binding. #Tests adding a curve data interface to a parameter collection no longer crashes. #jira UE-55403 Change 3903478 by Shaun.Kime No longer doing the check if compiling on load is enabled as this always forces different change ids' #tests n/a Change 3903783 by Shaun.Kime Trimming down excess log spew #tests auto-tests pass Change 3905753 by Shaun.Kime Made Sine(Degrees), Sine(Radians), and Sine, and the variants thereof for trig functions. #tests n/a Change 3905759 by Shaun.Kime Auto tests for mesh orientation #tests these now pass Change 3905762 by Shaun.Kime These files needed to be resaved for some reason to keep passing. Change 3906727 by Bradut.Palas Curve UX improvements #jira UE-55134 #tests none Change 3908177 by Shaun.Kime Fixing build due to typo #tests now compiles Change 3908199 by Shaun.Kime Trying to fix compilation when destroying objects. We cannot safely attach anything beneath us at this point ,we just need to clear out the queues. #tests normal work day-to-day Change 3908201 by Shaun.Kime Working to fix crashes where the component was destroyed out from underneath us due to PIE shutting down and we have a Niagara item editable in Blueprint or world editor. #tests n/a Change 3908985 by Bradut.Palas Renaming ColorCurveAsset to CurveAsset to better reflect the actual usage of the variable (fixing copy-paste issue) #tests none Change 3909222 by Yannick.Lange Niagara graph connection colors Change 3909436 by Bradut.Palas fix crash in curve ux when importing a linear curve (curve of floats) #tests none Change 3909561 by Bradut.Palas Updating LUT before sending NotifyPostChange when editing curves inline (so that LUT will not go out of sync) #tests none Change 3910010 by Yannick.Lange Use new Niagara Actor icon Change 3910191 by Yannick.Lange Fix viewport widget showing up in the viewport when pressing W, E or R. #jira UE-55142 Change 3910213 by Frank.Fella PropertyEditor - PropertyRowGenerator - Added features and fixes to support integration into niagara's stack view. + Added a method to get filter/search strings for an IDetailTreeNode to support external searching and filtering. + Added a delegate to the layout builder for when one of it's owned nodes has it's visibility forcibly changed by a customization. + Changed the filtering so nodes are generated for properties marked as advanced. + Pass the notify hook down to the detail utilities so that change notifications work as expected. + Add layout data for the widgets returned from the IDetailTreeNode to prevent alignment and sizing issues in custom implementations. Change 3910307 by Frank.Fella PropertyEditor - Missed in last checkin. Change 3910509 by Frank.Fella Niagara - Removed nested details panels from the stack and integrate them properly plus other fixes. + Generate rows for nested objects using the details panel property row generator. + Fix the horizontal sizing for niagara parameter editors. + Add an IsValid() method to the base niagara stack entry so that derived classes can know if the associated view models are still valid when processing events. This is a temporary measure to fix a crash in the user parameter UI. + Set stack entries to be expandable by default and delete usages which were setting it to true. + Highlight the active search result with a border since property rows can't highlight text. Change 3911653 by Frank.Fella Niagara - Fix stack spacer sizing. Change 3911667 by Frank.Fella PropertyEditor - Actually fix the notify hook handling in the property row generator. Change 3911896 by Yannick.Lange Niagara function input context menu. Change 3911900 by Yannick.Lange Project setting for not showing comment bubbles. Change 3911996 by Yannick.Lange Niagara fix if node persistent guids for older nodes. The OutputVarGuids are always synced on PostLoad. Change 3912221 by Wyeth.Johnson Renderer Icons for timeline Change 3912608 by Bradut.Palas stack style refactor #jira UE-55399 #tests none Change 3913063 by Wyeth.Johnson Icons for stack added, including new system param png Change 3913618 by Shaun.Kime Fixing two of the most common Illegal call to StaticFindObject() errors while compiling. #tests ran through compilation after changes. Change 3914369 by Bradut.Palas Using new SystemParams.png icon provided by Wyett (instead of the old "Parameters.png") #tests none Change 3914782 by Wyeth.Johnson Adjusting icon for update to not indicate "flow" Change 3915738 by Shaun.Kime Moving away from the generic and super-slow EdGraphSchema ShouldAlwaysPurgeOnModification being true to using the same mechanism we use to invalidate the compile to synchronize nodes. This should be substantially faster. #jira UE-55463 #tests ran through a variety of tests creating and wiring nodes Change 3915739 by Shaun.Kime Assignment nodes need to invalidate the graph for compile. Change 3915741 by Shaun.Kime Making default values more accessible and making it possible to route renderers to use different values than the defaults. #tests n/a Change 3915798 by Frank.Fella SearchBox - Add options to show the number of search results and an option to show a throbber when a search is active. Change 3915966 by Shaun.Kime Changing the default for velocity to 0,0,0 as requested by Wyeth #tests n/a Change 3915982 by Shaun.Kime Making the default text more readable #tests n/a Change 3916237 by Frank.Fella PropertyEditor - Change the DetailCategoryBuilderImpl so that it sets the horizontal alignment to fill for value widgets when generating stand alone widgets so that the behavior in the property row generator matches the behavior of the property grid. Change 3916240 by Frank.Fella Niagara - Should prevent some recent crashes due to stack entry delegates and lifetime. Change 3916261 by Frank.Fella Niagara - Lots of minor stack ui fixes and adjustments + Tweaked padding in a bunch of different places. + Added a dark background behind the stack and stack header to prevent the colors from bleeding together. + Fixed the group text not being white anymore. + Hooked up new features of the search box for showing the search result data and an is searching throbber. + Fixed an issue where the current search result couldn't be interacted with. + Fix some other inconsistencies with searching where you might jump more than one result. + Replace the checkbox for showing curve in the curves tab with an icon based button. (icon is placeholder) Change 3916833 by Shaun.Kime Fixing issue where the system wasn't set to wait for compilation on load, sometimes leading to failures for auto-tests #tests this test now passes when forced to recompile Change 3916846 by Shaun.Kime Missed one system in the scene. #tests n/a Change 3917458 by Shaun.Kime Fixing another potential race condition on the DDC. #tests n/a Change 3918349 by Frank.Fella Niagara - Invalidate the node visuals when reallocating pins. #Jira UE-55698 Change 3918783 by Olaf.Piesche Correct 'temp' to 'Temp' in map set Change 3919262 by Shaun.Kime We weren't properly updating the default values for user data interface components when tweaked in the editor. #tests open skinned mesh auto test system change the preview for the user skinned mesh to be SK_Mannequin_Niagara. It now updates, it didn't before. Change 3919602 by Shaun.Kime Fixing the skeletal mesh to now clamp to the end of the index buffer for safety as well as adding IsValidTriCood. This lets us keep going even when swapping out the skeletal mesh underneath. Tested out isvalidtricoord in the test skinning module. #tests auto tests pass #codereivew simon.tovey Change 3921701 by Yannick.Lange Make Vector2 and Vector4 default blue color to be consistent with blueprints. Change 3922331 by Damien.Pernuit Niagara - Houdini - Added support of CSV File as UAsset (HoudiniCSV) Modified the Data Interface to use the CSV asset instead of the imported buffers from the CSV File Path. Added some new functions to the DI: GetLastParticleIndexAtTime() GetCSVPositionAndTime() GetCSVVectorValue() GetCSVFloatValueByString() Change 3923118 by Simon.Tovey PS4 compile fix. Change 3924934 by Bradut.Palas fix Mac compile issues #jira UE-55426 #tests none Change 3925168 by Bradut.Palas Curve logspamming #jira UE-55593 #tests none The UpdateCompiledDataInterfaces would end up comparing LUTs when copying curves and the source LUT was out of date. Change 3925366 by Frank.Fella Slate - SMenuAnchor - Fix the implementation of "BelowRightAnchor" to align the right edge of the menu with the right edge of the anchor. There aren't any other usages of this in the engine as far as I can tell, hopefully people weren't relying on the broken behavior in a game somwhere. Change 3925423 by Frank.Fella Niagara - Remove the large add buttons from the stack and add smaller add buttons in the group headers. Change 3925877 by Olaf.Piesche New collision modules, separating query, linear and angular impulse; Solve forces and velocity takes care of integrating f->v->p and fA->vA->O; linear impulse module would probably be cleaner by zeroing velocity on collision and calculating a force instead of setting new velocity directly Change 3926582 by Simon.Tovey PS4 compile fix Change 3927401 by Shaun.Kime Fixing events due to added member #tests all tests pass as of 3925423 with this change Change 3927496 by Shaun.Kime Getting auto-tests to run Questions: Why did I have to recompile the GPU tests... something is missing in their key generation? Resaved several files. #tests almost all pass now Change 3927582 by Shaun.Kime Fixing last failing auto test #tests all tests now pass Change 3927924 by Simon.Tovey Chunk level vm parallelism. Any execution processing > batch_size chunks will go wide. The batch size is 4 currently but adjsutable via vm.ParallelChunksPerBatch. VM parallelism can be disabled by vm.Parallel 0 Change 3927990 by Shaun.Kime Submitting redirector Change 3928426 by Frank.Fella Niagara - Always propagate rapid iterations parameters when merging an emitter. Change 3929823 by Frank.Fella Niagara - Fix hlsl generation for system/emitter spawn script so that we read the engine and user parameters from the data set instead of initializing them to 0. #Tests Full recompile + auto-tests Change 3929983 by Simon.Tovey Curve LUT Interpolation + updated test altered by it. Change 3930551 by Frank.Fella Niagara - Fix what looks like a copy/paste error in the SNiagaraSelectedEmitterGraph destructor which was preventing clean removal of delegates and causing a crash. #Tests closing the "Selected Emitter Graph" tab and then changing the selected emitter no longer crashes. Change 3932695 by Damien.Pernuit Niagara - Houdini: Houdini CSV Asset: - Packed vector values in the CSV file are now properly supported (not just for Position/Normal) and can be of any size. - Added support for reimporting Houdini CSV files. - Added an "open in text editor" entry in the context menu. - Improved error/warning logging during the parsing of the file Houdini Niagara Data Interface: - Added GetParticleIndexesToSpawnAtTime(): New helper functions returning the min index, max index and number of particles to be spawned for a given time value. Uses an internal LastSpawnIndex to avoid spawning the same particles twice. - Modified GetLastParticleIndexAtTime(): If the CSV file doesn't have time informations, returns false and set the LastIndex to the last particle If desiredTime is smaller than the first particle, LastIndex will be set to -1 If desiredTime is higher than the last particle in the csv file, LastIndex will be set to the last particle's index Change 3933425 by Shaun.Kime Made the spreadsheet debugger capable of capturing in-world systems as long as they are solo'ed. #tests have been running with it for several days, debugging real-world assets stably Change 3933986 by Frank.Fella Niagara - Fixed a bug with merging where added dynamic inputs which changed names could end up with the wrong rapid iteration parameters. Also fixed an issue where added dynamnic inputs would be renamed when they didn't need to be. #Tests Engine tests and fixes custom repro. Change 3934052 by Frank.Fella Niagara - Added a console command to dump rapid iteration parameters for a system or emitter asset. Change 3934436 by Simon.Tovey Fixes for sprite VF depth test failure issue Change 3934658 by Frank.Fella Niagara - Make disabled modules visually distinct. #Tests General stack use. Change 3935383 by Shaun.Kime Fixing mac compile errors #tests n/a #jira UE-55911 Change 3935420 by Yannick.Lange Niagara parameter UI first version. Change 3935482 by Yannick.Lange Add missing files for parameters Change 3935591 by Shaun.Kime more macos compile #tests na Change 3935637 by Shaun.Kime Reverting to prior behavior #tests na Change 3936541 by Yannick.Lange Remove the merge up menu entry for set variables module items. Change 3936841 by Wyeth.Johnson Bool comparison dynamic input Change 3936895 by Simon.Tovey A few perf improvements and fixes to the SetSolo transfering between solo and batched so all lightning sims can run batched after they're warmded up. Change 3936899 by Simon.Tovey Missed a file Change 3937178 by Krzysztof.Narkowicz Fixed bHasSkipOutputVelocityParameter for shaders without PreviousLocalToWorldMatrix (e.g. particles) #jira UE-50914 Change 3937222 by Yannick.Lange Random event spawn Change 3937292 by Yannick.Lange Fix Adding a new parameter then renaming it the default name deletes the new parameter #jira UE-55994 Change 3938472 by Yannick.Lange Fix new parameters in emitters saving by using the editable emitter. Change 3938474 by Yannick.Lange - Store graphs as weak object pointers in the parameter UI. - Allow right mouse menu on parameters in the system toolkit. - Refresh only the parameter actions when deleting an entry instead of refreshing the graphs aswell. Change 3938525 by Yannick.Lange Fix creating an unique FName every tick for parameterstores by using a FString instead. Change 3938596 by Shaun.Kime Macos compile #tests n/a Change 3939362 by jonathan.lindquist Adding a new Component Spacing input to the debug value functions. This will allow users to make better use of space when debugging values. Change 3939365 by Shaun.Kime Back out changelist 3936895 and 3936899 Leaving in some changes around stats as they should be harmless. These changes were removed b/c they added poor perf to Jonathan's dissolve effect and also caused multiple tests to fail in engine tests. #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939367 by jonathan.lindquist Adding greyscale output Change 3939368 by jonathan.lindquist Changing the pin order Change 3939377 by Shaun.Kime Allows the unnormalized lut table flag to be copied over #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939379 by Yannick.Lange Rename FParameterStore Name to DebugName to prevent loading a FName into a FString with existing assets. Change 3939382 by Shaun.Kime Adding the ability to have a default curve index with a custom switch node. #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939383 by Shaun.Kime Converting existing curves over to using the new default pin #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939501 by Shaun.Kime Submitting missing files #tests n/a Change 3939580 by Wyeth.Johnson Default curve indexing to three more DIs Change 3940122 by Yannick.Lange Parameters view: - Jump to new parameter added and request rename for new parameter. - Remove adding parameters to the parameterstore when a pin is requested. - Only show make new parameters in the dropdown to add a new parameter. - Use Sections of UI as types instead of int32. Change 3940214 by Bradut.Palas fix crash when rename skeletal mesh user variable #jira UE-55236 #tests none Change 3940215 by Bradut.Palas undo not working in graph editor #jira UE-55466 #tests none Overriding the BreakPinLinks methods to include a transaction Change 3940250 by Bradut.Palas Creating stats tab in module toolkit to show LastOpCount #tests none Change 3940251 by Bradut.Palas #jira UE-55684 create inline menus for stack #tests none Change 3940262 by Simon.Tovey Back out changelist 3939365 with fixes Tests all now pass Change 3940333 by Shaun.Kime Nullptr check #tests n/a Change 3940338 by Krzysztof.Narkowicz Niagara sprite particles - implemented get previous position in order to fix sprite particle motion vectors #jira UE-52865 Change 3940407 by Yannick.Lange Create pin on map get and set node when dragging without recompiling the graph. Change 3940534 by Shaun.Kime Making sure that collision returns defaults of 0 if nothing was found. #tests auto-tests that have been passing still pass Change 3940709 by Simon.Tovey Temp hacks for the skeletal mesh painting issues. Change 3940960 by Yannick.Lange Only build parameter menu once when graphchanged is called multiple times in a frame. Also use the existing metadata from graph to build the parameter menu, because the metadata already looped through all nodes and pins. Change 3941019 by Yannick.Lange Meta data UI refresh next tick to avoid refreshing multiple times a tick. Change 3941853 by Simon.Tovey Adding more dynamic parameters Change 3941957 by Frank.Fella Property Editor - Fix issues with property row generator to support the niagara stack. + Make the detail tree node name accessible through the interface, and fix the implementations for category group and property item. + Add a temporary fix for passing instance customizations from the property row generator to the detail property row through the detail layout builder. This should be unified in a nicer way, but this will work for the time being. Change 3942174 by Frank.Fella Niagara - Stack UI Pass + Advanced rows are not handled properly per item. + Expanded and scroll state is now saved in editor data per asset. + Added a "View Options" drop down for showing all advanced rows, and for showing/hiding outputs. + Added an option to collapse all stack items from the emitter header context menu. + Added support for "Edit Conditions" on module and dymaic inputs which will enable and disabled an input based on the value of another input. This includes showing a checlbox inline for the edit condition toggle input. + Added support for "Visible Conditions" on module and dynamic inputs which will hide and show inputs based on the value of another input. + Removed the pencil icon for locally editable values in the stack. + Fixed issues with invisible search results. It's still possible for a search result to not highlight the text correctly, but the outline never disappears. + Removed pinning for module inputs. + Fixed the event handler properties so that they use the property row generator instead of an embedded details panel. + Unified indent handling across all stack classes. + Unified stack editor data across all stack classes. Change 3942427 by Simon.Tovey Another hack for vertex painting tool Change 3942453 by Simon.Tovey Some more hacks for skel mesh vertex painting until Jurre's rework is ready. Change 3942799 by Yannick.Lange Rebuild metadata, input and output parameters UI next frame instead of on every graph changed call. Change 3942833 by Frank.Fella Niagara - Fix the visibility of the advanced expander item. Change 3942923 by Yannick.Lange Revert using metadata for parameters to looping through pins to find parameters in maps not connected to anything. Temporary fix to remove used parameters if they are found in the graph. Change 3943094 by Wyeth.Johnson Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Location/SphereLocation.uasset to revision 5 Change 3943154 by Wyeth.Johnson Metadata to sphere location module Change 3943256 by Wyeth.Johnson Testing out sweet new metadata control Change 3943374 by Olaf.Piesche Fixing mesh motion blur Change 3943382 by Olaf.Piesche Turning on base pass velocities until I can fix separate vel pass for particles Change 3943471 by Yannick.Lange Emitter view stats only show particles count. Use Niagara.EmitterStatsFormat 0 and 1 to switch between all data and only particle count. Default is 1 to only show particle count. Change 3943497 by Yannick.Lange Paramater map remove FTickableEditorObject and use SWidget::Tick Change 3943589 by Olaf.Piesche -Fix for linear impulse (offset by 1/2*velocity*dt instead to avoid distracting bounciness) -Collision Rest; add after impulse modules to make particles rest if in collision under threshold velocity magnitude Change 3943644 by Olaf.Piesche Turn shader development mode back off Change 3943718 by Olaf.Piesche Fix vertex factories Change 3943776 by Olaf.Piesche Properly calculate old particle position using dt for velocity rendering Change 3943780 by Frank.Fella Niagara - Fix ensure when removing dynamic inputs due to incorrect logic which would have left unused nodes in the graph. Change 3943870 by Yannick.Lange Parameter drag drop window Change 3943994 by Frank.Fella Niagara - Fix some editor settings not saving across sessions. Change 3944056 by Shaun.Kime Updating to replace values reset when Wyeth resaved files. #tests DrawOrderGPU, DrawOrder, and TestDifferentInactiveEmitters now pass Change 3944068 by Simon.Tovey Back out of my changes to vertex painting and replaced with Jurre's fixes. Change 3944174 by Frank.Fella Niagara - Fix stack categories so that they don't freak out when the stack is refreshed, and also remove the uncategorized heading and move uncategorized inputs to the top. Change 3944313 by Shaun.Kime Updated screenshots after motion blur Change 3944321 by Shaun.Kime Fixing error message to be clearer about a disconnected Get node. #tests n/a Change 3944351 by Shaun.Kime Making safe against weak pointers going away. Track error encountered by Jonathan. #tests n/a Change 3944368 by Yannick.Lange Remove automatic adding prefix "particles." when renaming functioninput. Change 3944383 by Shaun.Kime Just adding some more nullptr check #tests n/a Change 3944384 by Shaun.Kime Providing more context for a check that existed previosuly and was encountered by Wyeth today #tests n/a Change 3944872 by Yannick.Lange Remove old material parameter node. Change 3945209 by Shaun.Kime Fixing possible infinite recurson on child array size of zero #tests n/a Change 3945865 by Yannick.Lange Spreadsheet filter for output attributes Change 3946091 by Simon.Tovey Per particle sorting for translucent sprites and meshes Change 3946095 by Simon.Tovey Updated screens for dynamic param tests Change 3946378 by Olaf.Piesche Another sprite motion blur fix Change 3946864 by Shaun.Kime SkinnedMesh per-instance data requires 16 byte alignment due to usage of FMatrix. We were not guaranteeing that in our per-instance data system. We are now enforcing that to be true by aligning all memory size requests. #tests autotests pass Change 3946928 by Wyeth.Johnson Skeletal mesh location metadata. THIS VERSION ALSO CRASHES ON SAVE FYI Change 3946934 by Frank.Fella Niagara - Clean up rapid iteration parameters on compile. #Tests - Fixes the jira below, all auto tests which were currently passing still pass, and GDC effects load and look correct. #jira UE-55932 Change 3946936 by Frank.Fella Niagara - Fix crash when undoing adding a dynami input. Change 3947213 by Simon.Tovey Fix for thread safety in collision data interface. Previously I'd made them thread safe between VM chunks but they already weren't safe between system instances. Change 3947279 by Simon.Tovey Fixed thread safety issue with niagara global dynamic buffer Change 3947788 by Simon.Tovey Fix enum property warnings Change 3947849 by Olaf.Piesche Normalize orientation quats. Safety first. Change 3947877 by Frank.Fella Niagara - Fix a crash when editing meta-data for a module currently open in a system or emitter editor stack. This updates the FNiagaraStackFunctionInputBinder to track the lifetime of the default pin correctly. Change 3948445 by jonathan.lindquist Inverting alpha output Change 3948615 by Olaf.Piesche Don't access data layouts that are invalid because their bindings don't exist Change 3949361 by Yannick.Lange Command to expand all groups and collapse all items of those groups in the stack. Change 3949365 by Yannick.Lange Missing file for change 3949361 Change 3951123 by Simon.Tovey Fix bug with dynamic parameters in Niagara mesh particle VFs Change 3951199 by Simon.Tovey Fix for issues caused by unsafe reads of GT data from RT Change 3951293 by Olaf.Piesche Workaround for jittering particles with collision at rest state; will need to revisit after GDC Change 3951533 by Yannick.Lange Collapse parameter menu by default Change 3952106 by Frank.Fella Niagara - Fix data interface input initialization when inserting modules and dynamic inputs. We now put all inputs into categories in the stack and this code didn't handle that. Change 3954809 by Frank.Fella HoudiniNiagara - Add include to fix CIS incremental build. Change 3954857 by Frank.Fella Niagara - Accept newer versions of 3 automated tests images as they are stable and still look correct for what they are testing. Change 3954935 by Frank.Fella Niagara - Fix a crash in the skeletal mesh sampling info details customization when a mesh has no skeleton. Change 3954969 by Simon.Tovey Compile fix for gpu emitters Change 3955012 by Frank.Fella Niagara - Fix clang and deprecation warnings. Change 3955988 by Olaf.Piesche Fixing collision queries (separating line query trace direction and velocity, so we can look a frame ahead properly); various fixes to the impulse modules; rest module now allows for color change when particles are set to rest. This checkin should stabilize collision dynamics substantially. Change 3956730 by Yannick.Lange Cleanup parameter Change 3957065 by Bradut.Palas enable/disable mechanism for renderers #tests none Change 3957802 by Olaf.Piesche -Removing Velocity parameter from collision query DI, since velocity at query time is known and can just be passed along in temporary parameter; this stops the compiler from falling over in unity builds and also makes the Perform Query function more sane as an actual line check -Put some safeguarding against non-collisions (v.n>0) reported as intersections into the collision query module to avoid instances of particles being pushed through geometry -Updated modules to use the new function signature #tests modular explosion test map, EngineTests Change 3957804 by Olaf.Piesche Updated tests for 3957802 Change 3957859 by Frank.Fella Niagara - Add missing #if to fix some of the nightly build errors. Change 3958065 by Olaf.Piesche Fix GPU sim hlsl for the collision data interface; should make GPU collision bounce test run again Change 3958302 by Olaf.Piesche modified test for sane depth bounds; accepting new results; some changes to hlsl for collision data interface Change 3959007 by Simon.Tovey Further defining the barrier between GT and RT data. Not finished yet, especially for GPU sims but we're heading in the right direction. Change 3960004 by Bradut.Palas QOL change, now committing search text in the stack (pressing enter) will jump to the next occurrence. #tests none Change 3960019 by Frank.Fella Niagara - Preemptively fix up stack related header includes to avoid manual merges. Change 3964217 by Bradut.Palas Fixing compile issue after renderer enable feature(the Isolate features require the WITH_EDITORONLY_DATA preprocessor directive to be enabled) #tests none Change 3964581 by Frank.Fella Niagara - Get things compiling again after merge. Mostly include fixes and commeting out lots of sequencer related stuff that needs to be fixed. Change 3965057 by Frank.Fella Niagara - Fix compile issues in the houdini plugin. Also add the houdini pluging to EngineTest so that it compiles by default when running tests. Change 3965075 by Frank.Fella Niagara - Fix another include issue that was caught on the build machine. Change 3965308 by Frank.Fella Niagara - One more header fix. Should fix the win64 build in CIS. Change 3965313 by Frank.Fella Niagara - Fix in editor playback. The timeline data is still broken. Change 3965482 by Yannick.Lange Stack source taken apart into different files. Change 3965863 by Shaun.Kime Fixes scope level variable definition causing my local build to fail #tests n/a Change 3965866 by Shaun.Kime Crash fix when the module is missing. Now show an error message as well as checking for script validity before calling method on it #tests n/a Change 3968174 by Frank.Fella Niagara - Fix more merge fallout. The emitter/system editor timeline now matches the stack data again. Change 3968183 by Frank.Fella Niagara - Delete commented out include from merge. Change 3972162 by Frank.Fella Niagara - Updated level sequence testing assets. Change 3972880 by Shaun.Kime Merging using DevNiagaraToGDC2018 Allowing disabled modules to still influence parameter maps. #tests n/a Change 3973269 by Shaun.Kime Disabling warning about divide by zero as it is often incorrect #tests n/a Change 3973273 by Shaun.Kime Forcing all three planes to be GPU #tests n/a Change 3973307 by Shaun.Kime Fixing CIS win32 errors #tests n/a Change 3973374 by Shaun.Kime Fixing minor static analysis warnings #tests n/a Change 3976107 by Shaun.Kime Updating multiple files as they have the unversioned file warning #tests auto tests now show green Change 3976114 by Shaun.Kime Taking snapshots after the integration for time control to clear automated tests. Frank was uncertain about the current behavior being correct, but didn't want to hold up integration for that. #jira UE-57117 Change 3976119 by Shaun.Kime Makiing GPU shaders contain the dependencies and the compile id's and other items so that they update properly. #tests auto-tests now pass Change 3976449 by Shaun.Kime Adding additional debugging to logs #tests n/a Change 3977172 by Frank.Fella Niagara - Fix issues with the level sequence integration for niagara caused by the integration from main, and accept the new test image. This code should be updated at some point to use the new channel blending in sequencer. NOTE: There is still a timing issue that is evident in the automated test screen shot due to float timing and rounding issues in niagara, but the sequencer code is functioning correctly. Change 3977362 by Bradut.Palas UE-55601 curve snapping not working in Niagara curve editor #tests none Change 3977363 by Bradut.Palas exposed added external asset for function input so it would appear in context menu in the Niagara stack. #tests none Change 3977368 by Bradut.Palas #jira UE-51052 If you undo an emitter rename we get invalid values The CachedUsageInfo got emptied but it didn't get restored by the undo, sending the system in an endless Compile() loop Added a Modify() call in the UNiagaraScriptSource::InvalidateCachedCompileIds() #tests none Change 3978716 by Shaun.Kime Fixing half of CIS static analysis warnings and localization symbol dupe warnings from Jamie Dale #tests auto tests pass other than known level sequence test Change 3978857 by Shaun.Kime The map SpawnTest niagara actor didn't have its wait for compilation flag set, potentially leading to artifacts. Disabling for now as that didn't resolve the issue. Change 3979594 by Shaun.Kime Potential fix for cook on Orion #tests n/a Change 3979713 by Shaun.Kime Fixing several more CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale #tests n/a Change 3980017 by Shaun.Kime Fixing CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale #tests n/a Change 3981859 by Shaun.Kime Fixing crash in Paragon when the normals buffer was not present during startup with just UI screens. #jira UE-57188 #tests got through to paragon main screen, related auto-tests pass Change 3982685 by Shaun.Kime For some reason, when Lightmass is spinning off workers, the render thread is null, causing us to trigger checks that we shouldn't trigger when killing of system instances. #jira UE-57214 #tests all auto-tests pass Change 3983902 by Simon.Tovey Speculative fixes for mac errors regarding niagara vertex decls. Change 3984023 by Andrew.Rodham Sequencer: No longer upgrade bIsInfinite for section types that do not support open ranges Change 3986727 by Wyeth.Johnson Fixed add velocity from point to work in more situations, not cause errors regardless of stack location, made it more programmable with inputs, and added metadata Change 3988114 by Wyeth.Johnson fixed color and inherit parent vel Change 3989175 by Simon.Tovey Improved VM error reporting. #tests engine tests Change 3995007 by Yannick.Lange Parameter menu in system layout Change 3995192 by Yannick.Lange Fix niagara script details panel search Change 3995291 by Yannick.Lange Parameter menu tooltip fix Change 3997804 by shaun.kime Lookup table is off for this. Keys are 0,0 and 1,1, so you'd expect normalized age as a sampler to just return the same value from lookup. If LUT is disabled, this is true. If LUT is enabled, it isn't, especially the farther one gets from 0. Change 3998124 by Simon.Tovey Fixed Curve LUT generation #tests editor #jira UE-57604 Change 3998286 by Wyeth.Johnson Fixed normalized execution index to, you know, work. Change 4000324 by Shaun.Kime Replacing a thread-safety issue where we get an enum on an as-needed basis. This was causing crashes in cooking as you cannot find from the global table while serializing. #tests have not gotten the crash since Change 4000428 by Bradut.Palas UE-55750 focus curve editor when "show" button is pressed UE-55791 user variable curves cannot be shown in the Curve tab These issues were related and touched the same area of code, so I fixed them together. UE-55791 is basically just getting curve data from the system exposed variables too. #tests none Change 4001094 by Frank.Fella Niagara - Fix slowdown in the metadata editor due to delegate rebinding. Change 4001098 by Frank.Fella Niagara - Remove the tool tip from the additional options drop-down for modules since it covers the drop down menu. Change 4001133 by Bradut.Palas Fix curve editor getting focused each time a curve was changed. #jira UE-57708 #tests none Change 4001253 by Frank.Fella PropertyEditor - Fix issues with external root handling. + Fix external nodes not being cleaned up correctly when custom node builders rebuild children. + Fix expanded state being trampled when processing external nodes due to the expanded nodes list being emptied every time RestoreExpandedItems was called. + Fix performance issues with refreshing during tick by moving all calls to RestoreExpandedItems to UpdateFilteredDetails, and then only calling UpdateFilteredDetails once per tick as needed instead of per root property node and per root external node. Change 4003365 by Shaun.Kime If the physical material has gone away, make sure to set value values. Note that if this data interface is going to go on in parallel to the game thread, we'll need something more sophisticated. #tests Win64 tests pass Change 4003367 by Shaun.Kime Making sure that the system has finished compiling before we begin cooking. #tests n/a Change 4003374 by Frank.Fella Niagara - Fix a crash when adding and removing modules and dynamic inputs with data interfaces. #jira UE-57749 Change 4003696 by Shaun.Kime Getting rid of whitelist, now open on all platforms. #tests n/a Change 4005368 by Shaun.Kime Fixing compile error on Linux #tests n/a Change 4013779 by Shaun.Kime Interpolated spawn on GPU does not yet work but checkpointing work. + Added AdditionalDefines to the VMCompileId, switched interpoalted spawn to use that + Added rough interpolated spawn support to translator by refactoring away from specific calls and hard-coded update/spawn somewhat... could improve for events + Revised shader variables away from Phase0/Phase1 terminology to the true Update/Spawn meaning. Leaving the phase numbers as an implementation detail within the usf. + Added ToString to ParameterStores for debugging + Changed GPU ExecIndex() logic to actually work similar to the VM #tests collision gpu fails Change 4015355 by Simon.Tovey Persistent IDs final. Still need to change the compile ID parts over to use the new additional defines but the core functionality is in. #tests editor + engine tests Change 4018445 by Simon.Tovey Some missing assets Change 4021647 by shaun.kime Moving jonathan's DebugParticleData to Niagara Extras Change 4024809 by Yannick.Lange Parameter map hover text using metadata description. Change 4025042 by Wyeth.Johnson Dogfooding the skeletal Mesh location module w/ comments, reroute pins, map gets and sets, metadata, tooltips, etc. Change 4025236 by Shaun.Kime Working on getting interpolated spawning working. Submitting to get assistance from Simon. ... PLEASE DON'T SYNC UNLESS YOU'VE SPOKEN TO ME... #tests collision test on GPU is better, but not yet right.. ribbon id emitter is ensuring on LUT table generation Change 4025372 by Shaun.Kime Making the debug particle data stay the same size as the base particle for easier debugging. #tests n/a Change 4025701 by Shaun.Kime Debug asset for Simon #tests n/a Change 4027865 by Shaun.Kime Fixing parameter map stores to properly handle reset. Previously was leaving around padding info from previous version of the script which could be totally wrong. #tests now don't crash Change 4029638 by Wyeth.Johnson Refactor Skeletal mesh location module to test some ideas on coding standards and shake out workflow issues Change 4030135 by Shaun.Kime Interpolated spawning now works on the GPU. #tests collision gpu has stray collisions and the GenerateLocationEvent was recently updated that broke . will fix in a later update Change 4030197 by Wyeth.Johnson Refactor static mesh location module Change 4033437 by Simon.Tovey Adding a few simple new functions for direct access to vertex positions for cannabis.cod3r. Change 4033937 by Shaun.Kime Setting the wait for compilation flag #tests now pass consistently Change 4034391 by Shaun.Kime Created a parameter map default node to start default call chains.Updated standard modules and dynamic inputs. #tests all previoulsy passing tests pass Change 4035002 by Shaun.Kime Updated to work with latest main integration #tests n/a Change 4035523 by Wyeth.Johnson Refactor Cone stuff to coding standards, replace some things with functions Change 4035672 by Shaun.Kime Fixing build warnings #tests n/a Change 4036887 by Wyeth.Johnson Some metadata, some optimization, some additional refactoring and swapping in functions. Straight Dogfoodin' Change 4037132 by Shaun.Kime Adding GPU test versions of several assets Change 4037241 by Wyeth.Johnson Optimizing, metadata, and making some coding standards changes Change 4037436 by Wyeth.Johnson Fixing a pointless module to make it... pointful? Change 4037629 by Frank.Fella Niagara - Fix issues with data interfaces as parameters + Collect data interface reads and writes from parameter maps during compilation so they can be hooked up a runtime. + Add new runtime parameter stores for systems and emitters at runtime which bind the exposed data interfaces into the execution contexts. + Fix the editor code which updates the compiled data interfaces so that it updates the correct ones regardless of where they are defined. + Fix an issue where failed compiles weren't being propgated to the UI correctly. Change 4037832 by Shaun.Kime Properly handling nullptr references #tests deleting a module from the stack after it was recently refreshed now doesn't crash Change 4037917 by Wyeth.Johnson Fix add velocity from point (needed begin defaults), reorg, comment and metadata Change 4038250 by Wyeth.Johnson Big refactor of spawn per unit Change 4038665 by Shaun.Kime Events now take parameter map in/out pins #tests now the events auto-tests should pass Change 4038723 by Shaun.Kime Now renderers can say if they are compatible with the SimTarget mode. #tests now changing to GPU doesn't crash a light renderer Change 4038731 by Shaun.Kime Missing file from prior checkin #tests n/a Change 4038742 by Shaun.Kime Attempting to fix editor build, which is unfortunately fine on my machine #tests n/a Change 4040069 by Wyeth.Johnson Refactor of Event Generator and Event Receiver, new coding standards for events Change 4040377 by Wyeth.Johnson Refactor the solver to adhere to coding standards (and remove some reroute pins, sorry Shaun) Change 4040639 by Wyeth.Johnson Vector Noise Force refactor and optimization Change 4041031 by Shaun.Kime Making the modulo functions on the gpu return a value. #tests passes cook on PS4 and gets past this in compile on Mac Change 4041254 by Wyeth.Johnson Refactor Point Attraction, change some behavior also Change 4041999 by Yannick.Lange Parameters refactor: - Find parameters and references in graph - Renaming parameters, includes renaming all pins in the graph - Removing parameters - Find metadata when finding parameters, so we are not looping through all nodes/pins twice - Parameters list supports multiple emitters in systems Change 4042058 by Simon.Tovey Refactored GPU parameters. - Shader now uses the DI default object to create the correct parameters struct. All parameter and buffer management now being handled inside this parameter struct. This allows far more encapsulated code for each DI. Allows us to reamove the GPU buffers from and the Scene texture refs that were in the base DataInterface class. Simplifies the API and process of implementing DI's on the GPU considerably. - Removed all existing GPU buffer support code and usage. All DIs now use a parameters struct. - Have moved tons of curve code into the base class, simplifying the child implementation classes. - Implemented GPU curve interpolation. - Removed bAllowUnnormalizedLUT. Confusing and now unnessessary. All curves do this by default. - Modified FNiagaraShaderMapId to use the latest FNiagaraCustomVersion::LatestScriptCompileVersion and bumped it. - Created NiagaraCore module and moved a few classes into it. Anything needed by both the shaders and runtime should be here. - Refactored DI hierarchy to base from a new UNiagaraDataInterfaceBase which is inside NiagaraCore. - Removed constness from many UStruct/UEnum/UClass pointers. Technically we don't ever need these to be non const so initialy coded as const. Some existing engine code however requires these be non const so had to propagate that back through our code. Change 4043427 by jonathan.lindquist Submitting a material function that will allow users to reproduce mesh surfaces. Change 4043448 by Olaf.Piesche Async GPU buffer readbacks and updates Change 4043679 by Shaun.Kime Fixing Mac compile issue. Not sure if correct, but unused code so good for now. #tests n/a Change 4044000 by Simon.Tovey static analysis fix Change 4044001 by Simon.Tovey Fix for gpu scripts with multiple curves. Change 4044124 by Yannick.Lange Fix persistent guid for parameter map set pins. Change 4044230 by Simon.Tovey I didn't forget to check these in. Nothing to see here.... *whistling*.... Change 4044584 by Bradut.Palas Module dependency properties are now available (to be used by technical artists before the functionality is done and submitted) #jira UE-58200 #tests none Change 4044663 by Wyeth.Johnson Jitter position needed begin defaults, got a refactor which I was in there Change 4044894 by Yannick.Lange Rename parameter and all referenced pin when renaming a pin on a map set or get. Also fixes renaming a pin not deleting the old metadata. Change 4045383 by Wyeth.Johnson Fix up and comment/tooltip on mesh rotation, look at, and rot rate Change 4045488 by Wyeth.Johnson Update Age reorg just for readability Change 4045799 by Shaun.Kime Reworking test art to get rid of known issues and put known issues into their own assets. Change 4046328 by Wyeth.Johnson Some optimizations, options to polar/cartesian, starting in on Dynamic Inputs Change 4046728 by Shaun.Kime Fixed error where we were writing to Loca.Module.EventVelocity instead of Local.Module.EventVelocity. Change 4047423 by Frank.Fella Niagara - Fix post load code for the assignment node which was not conditionally post loading another object it was using which now has a custom post load. This resulted in strange pin renaming which was breaking merging and automated tests. Change 4047425 by Frank.Fella Niagara - Make the merge manager a little more resistant to malformed stacks. Change 4047788 by Bradut.Palas #jira UE-57902 Module input sort priority #tests none Change 4048063 by Yannick.Lange Fix don't show context menu on parameter view categories. #jira UE-57196 Change 4048068 by Yannick.Lange Fix create system from emitter #jira UE-57186 Change 4048132 by Yannick.Lange Add missing includes. Change 4048269 by Shaun.Kime Removing ensure that we log later #tests n/a Change 4048273 by Shaun.Kime Really doing it this time #tests n/a Change 4048595 by Yannick.Lange Fix niagara if node input disconnect on output pin rename. #jira UE-58095 Change 4049640 by Simon.Tovey Daft mistake in curve hlsl gen. Change 4050270 by jonathan.lindquist Submitting a module that lerps each of a particle system's intrinsic particle values. Each variable set utilizes an opt-in bool. Change 4050282 by jonathan.lindquist Submitting newly formated Mesh Reproduction modules. They now contain documentation, be fully generalized and meet our updated coding standards. Change 4050566 by Olaf.Piesche -More fixes and changes for async gpu buffer readback -removed more CPU intervention; spawning and death now happen largely without CPU direction, other than determining the number of particles to spawn -Added piping number of vert indices per instance from the renderer down to the GPU context and CS; as a result, GPU simulated mesh emitters are working again; this will need a bit of additional work to handle multiple renderers (will need multiple DrawIndirect parameter buffers reflecting the different renderers) -General cleanup and prettification Change 4050907 by Frank.Fella Niagara - Add support for default dynamic inputs on modules and dynamic inputs. Change 4051436 by Simon.Tovey Forcing a refresh of curve LUTs on assets with old versions. Change 4051463 by Simon.Tovey Compile fix Change 4051900 by Frank.Fella Niagara - Fix linux warning. Change 4052253 by Olaf.Piesche GPU sim interpolated spawn fixes - Look Ma, no gaps! Change 4052321 by Frank.Fella Niagara - Enable the level sequence test. Change 4052353 by Shaun.Kime Renamed variable after Wyeth's change #tests MeshOrientationTests now pass Change 4052627 by jonathan.lindquist Submitting a new spline function. Change 4052648 by Shaun.Kime PS4 development builds don't seem to be able to remove generated data for structs like this even though it is in a non-editor build. #tests n/a Change 4052661 by Olaf.Piesche -Avoid branching on every OutputData operation by allocating a scratch instance at the buffer end and setting the default index from AcquireIndex to that. -bit of shader code cleanup Change 4052706 by jonathan.lindquist Adding a module that supports a single segment spline Change 4052712 by jonathan.lindquist Adding a below threshold output to the direction and length safe function Change 4052786 by jonathan.lindquist Submitting a new height lerp function Change 4053126 by jonathan.lindquist Submiting a function that calculates a triangle's surface area. Change 4053132 by jonathan.lindquist Changing the category to geometry Change 4053141 by jonathan.lindquist Moving the asset back to a generic math category Change 4053166 by jonathan.lindquist Submitting a new threshold function that removes threshold downtime. Change 4053564 by Shaun.Kime Added staging to ini as requested by cook #tests n/a Change 4053619 by Shaun.Kime Fixing defaults #tests used by Orion art Change 4054171 by Yannick.Lange Remove bold font for parameters. Change 4054183 by Yannick.Lange Syncing system exposed parameters and parameters list. Includes adding, removing and renaming parameters. Change 4054313 by Wyeth.Johnson Refactor spawnrate to (mostly, other than a bug) conform to coding standards, and set begin defaults on a few things. Change 4054840 by Shaun.Kime Fixing redundant branch for CI #tests n/a Change 4055492 by Shaun.Kime Updating compile version since I changed the usf #tests n/a Change 4055550 by Shaun.Kime Disabling rendering of middle module as it differs between machines. #tests LevelSequenceTestsNiagara now passes Change 4056256 by Shaun.Kime Disabling the ensure and turning into log statements for curve copying #tests n/a Change 4056287 by Shaun.Kime Now using GLobalCompileShader. There are still issues with cooking as there is sometimes a runtime streaming error that we didn't read in the correct amount of data. I think the logic for when/if we stream out the compiled shader might still need TLC. #tests n/a Change 4056381 by jonathan.lindquist A new quat to angle axis and angle axis to quat conversion mat function Change 4056513 by Frank.Fella Niagara - Fix crashes for default data interfaces where the pin default was empty or the data interface wasn't initialized. #jira UE-58789 Change 4056734 by Frank.Fella Niagara - Drag and drop for modules. Change 4056880 by Simon.Tovey Replacing engine tests shots for RibbonID test. Some slight changes introduced, likely curve or recent module changes. Change 4056894 by Bradut.Palas UNiagaraStackEntry Error refactoring + Module dependency warning feature. #jira UE-58199, UE-58200 #tests none Change 4056916 by Bradut.Palas Add missing files from shelved changelist. #tests none Change 4056937 by Bradut.Palas #jira UE-54678 The skeletal mesh customisation did not update when the mesh was changed through the data interface or mesh editor #tests none Change 4057014 by Frank.Fella Niagara - Fix cis initializer order warning. Change 4057542 by Bradut.Palas #jira UE-58554 Remove Refresh UI button from Niagara script editor #jira UE-58555 Remove Numeric Output Type Selection Mode from Niagara script UI #tests none Change 4057702 by Bradut.Palas The stack editor priority in the variable metadata now properly has zero as default value. #jira UE-58740 Change 4057758 by Frank.Fella Niagara - Fix text wrapping for error items. Change 4057990 by Bradut.Palas Stack error tweaks (added error count to the stack errors button and also updating icon according to highest severity issue in the subtree) #tests none Change 4057996 by Shaun.Kime Trying to fix the static analysis header tool error in CIS #tests n/a Change 4058027 by Shaun.Kime Fixing compilation on other platforms #tests compiles on playstation Change 4058356 by Frank.Fella Niagara - Fix an assert that happens when adding a module or dynamic input with a boolean or enum input. Change 4058428 by Frank.Fella Niagara - Fix a crash when removing an input from a set variables node in the stack which was caused by the function losing an input without the stack being refreshed. This also fixes an issue where add and remove actions on a set variables module wouldn't take affect until the graph was compiled. Change 4059924 by Wyeth.Johnson Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Velocity/AddVelocity.uasset to revision 5 Change 4060256 by Wyeth.Johnson Forces are now dependent on a solver Change 4060430 by Wyeth.Johnson Velocity modules depend on a solver Change 4060949 by Shaun.Kime Fixing pragma once definition as well as a possible null deref #tests n/a Change 4060955 by Shaun.Kime Fixing due to changes in defaults #tests all now pass PC Change 4061000 by jonathan.lindquist Debug particle material improvements which includes comments in the shader, rearranged layout with a vector 2 input for particle id, new texture, a new instance that includes "focus masking" Change 4061804 by Wyeth.Johnson Optimized out a couple unnecessary bits of math from some axis alignment stuff, solver dependencies Change 4061974 by Simon.Tovey Fixed GPU cooking. - Removing check for emitter SimTarget in CanBeRunOnGpu() and relying only on the script usage having been loaded already. We can't rely on properties in the emitter being loaded before the call to UNiagaraScript::PostLoad() so this is unsafe. - Adding some dummy gpu buffers to bypass validation ensures in rhi when we need to set params for SRVs that have not been allocated yet. - Fixed bug in RHI that was returning FGPUFenceRHIParamRef and so the created fence was immediately freed and boom. Change 4062269 by Shaun.Kime Re-enabling most of the tests. #test n/a Change 4062414 by tim.gautier QAGame: Updated QA-Effects for mobile compatibility - Removed Atmospheric Fog (not supported on Mobile) - Added SkySphere (resolved lighting issues) Change 4062651 by Shaun.Kime Saving with versions Change 4062673 by Shaun.Kime Making emitter names without spaces so that they can be blacklisted if need be Change 4062686 by Shaun.Kime Getting ready for CI for 4.20 Change 4062687 by Shaun.Kime Updating mac images Change 4063298 by Shaun.Kime Disabling collision test gpu for now. Need to investigate what broke it tomorrow. #tests CollisionBounceGPU Change 4063373 by Shaun.Kime Blacklisting mac tests that still need work Change 4063434 by Shaun.Kime Cleaning out previous debug code #tests n/a Change 4063618 by Yannick.Lange Fix dragging an input pin to the add pin of an if node #jira UE-58600 Change 4063847 by Frank.Fella Niagara - Rename RibbonSortKey to RibbonLinkOrder, change it from an int32 to a float, and disable uv age offset when using link order instead of normalized age to order particles in the ribbon. This should fix the issues preventing beams from being implemented nicely. #tests Auto-tests Change 4064150 by tim.gautier QAGame: Removing floating NewWidgetBP from /Content Change 4064237 by Shaun.Kime Disabling the level sequence test for now Change 4064902 by Shaun.Kime Fixing compile errors on linux editor build #jira UE-58620 #tests n/a Change 4065167 by tim.gautier QAGame: Submitting temporary update to TM-ShaderModels, adding Niagara station Change 4065400 by tim.gautier QAGame: Submitting updated (temp) TM-ShaderModels. Set NewNiagaraEmitter to Local Space by default Change 4065540 by Frank.Fella Niagara - Temporarily disable the module dependencies until they can be fixed. Change 4065570 by Shaun.Kime Fixing linux build #tests n/a #jira UE-58979 Change 4066753 by Shaun.Kime Updating custom version after previous change to shader includes #tests autotests pass Change 4067981 by Frank.Fella Niagara - Fix potential null dereference found by CIS #jira UE-59013 Change 4067998 by Shaun.Kime Nullpointer checks on shutdown #jira UE-59000 Change 4068104 by Frank.Fella Niagara - Change the prefix for the previous parameter values from PREV__ to PREV_ since the cross compiler reserves all symbols with double underscores for opengl. Change 4068118 by Frank.Fella Niagara - Fix an open GL crash where we weren't passing the correct buffer index when setting parameters for compute shaders. Change 4069299 by Olaf.Piesche Async GPU readback/update mobile platform fixes CPU particles should work on Android #jira UE-58986 Change 4069603 by Shaun.Kime Making it possible to see the debug output if the console variables are set for shaders. #tests auto-tests pass Change 4069628 by Shaun.Kime OpenGL is very picky about shutting down its texture buffers. We were improperly holding onto static resources and leaking OpenGLShaderResourceViews until module shutdown. Unfortunately, this is *after* the renderer has been shut down and the corresponding OpenGL managers have been deleted, causing us to call into deleted memory. By making several classes FRendererResources, we now register at the appropriate times. In several cases, since the buffers are special purpose fallbacks I moved them into helper locations that are build on demand. Removed FNiagaraVertexFactoryBase::DummyBuffer Created FNiagaraDummyRWBufferInt and FNiagaraDummyRWBufferFloat so that I could wrap several dummy RW buffers in RendererResources and TGlobalResource. Removed NiagaraEmitterInstanceBatcher::DummyWriteIndexBuffer #tests all auto-tests pass on PC and OpenGL and we can open and close OpenGL after using Niagara assets #jira UE-59000 Change 4069646 by Shaun.Kime Disabling Niagara component activation on Switch. This is an attempt to bypass a crash after the assets have been loaded on Switch. #tests auto-tests on PC still pass #jira UE-59048 Change 4069660 by Shaun.Kime Updated Niagara version #tests Auto tests pass Change 4069714 by Shaun.Kime Fixing Olaf's checkin prior adding offset to the base readback call #tests autotests pc pass Change 4070785 by Olaf.Piesche Make RWBuffer available on Metal, Vulkan, and ES3.1 with SRVs Change 4070888 by Olaf.Piesche #jira UE-57657 Reenable ribbon custom facing mode Change 4071570 by Shaun.Kime Removing thread pool size log item as it comes up thousands of times in a cook and is purely for debugging. #tests n/a Change 4071926 by Shaun.Kime Disabling Olaf's change from earlier in the day as it doesn't work on PS4. #tests Ribbon test now works again Change 4073700 by Shaun.Kime Fixing compiler warning about float4 being used as a float. #tests pc auto tests pass #jira UE-59157 [CL 4075457 by Shaun Kime in Main branch]
2018-05-16 12:53:39 -04:00
for (int32 SamplerIndex = 0; SamplerIndex < FOpenGL::GetMaxCombinedTextureImageUnits(); ++SamplerIndex)
{
Copying //UE4/Dev-Niagara to //UE4/Dev-Main (Source: //UE4/Dev-Niagara @ 4074996) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3853627 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse VectorVM #tests non-gpu auto tests pass Change 3853628 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Runtime #tests all non-gpu auto tests pass Change 3853629 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Shaders #tests all non-gpu auto tests pass Change 3853630 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Plugins\FX #tests all non-gpu auto tests pass Change 3853631 by Shaun.Kime Jonathan's material function from Orion\DevNiagara #tests all non-gpu auto tests pass Change 3853633 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse EngineTest #tests all non-gpu auto tests pass Change 3853911 by Shaun.Kime GPU rendering now works #tests GPU tests now pass Change 3854179 by Shaun.Kime Removing dead system #tests now just with a warning Change 3854731 by Shaun.Kime Checkpointing current work #tests n/a Change 3855080 by Shaun.Kime Fixing not all control paths return a value error #tests n/a Change 3856185 by Bradut.Palas MultiStack with pinning support. #jira UE-53459 #tests none Change 3856615 by Shaun.Kime Preventing a null pointer dereference when copying unallocated data #tests auto tests pass Change 3856622 by Shaun.Kime Getting rid of the bogus get alias method #tests auto tests pass Change 3856644 by Shaun.Kime Adding the ability to query the number of filtered triangles, index those triangles directly, and compute the position, velocity, UV, and NBT of a triangle. #tests all auto tests now pass Change 3856645 by Shaun.Kime Added several new auto tests and tweaked existing ones. + PerParticleRandom still had some randomness in it + UserColorCurve has a user color curve defined in 3 different components referencing the same system + BasicSkinnedEmitter has 4 skinning sub-tests, attached as a subcomponent, referencing a world skeletal mesh, using a material filter, and using a bone filter + added a skinning module that spawns based off exec index and a data interface that queries the number of triangles on a skeletal mesh. #tests auto tests pass Change 3856675 by Shaun.Kime Fixing crash on delete of an emitter #tests removed one and multiple emitters from active multi-emitter. No crash #jira UE-54378 Change 3860613 by jonathan.lindquist New dynamic input Change 3862549 by Shaun.Kime Missing last known good images Change 3864525 by Simon.Tovey Fix for vm compiler crash when using structs as constants. #tests No longer crashes. Change 3864729 by Frank.Fella Sequencer - Fixed a few places which were modifying sequencer data, but not calling the NotifySequencerDataChanged. Change 3864737 by Frank.Fella Niagara - Fix the timeline in the niagara editor plus other fixes. + Turned on looping in the timeline by default. + Added simulation options to control playback in the editor, including turning off auto-play, disabling reset on change, and disabling resimulation when changing while paused. + Added a buttons to the timeline for each renderer an emitter has which shows a renderer specific icon and will allow navigation directly to the renderer with future stack changes. + Fixed issues in the emitter life cycle and spawn rate modules which were preventing delay and looping from working consistently. (includes auto-test) + Added top level metadata for modules. + Added the ability to add metadata to a module and it's inputs to allow it to be edited directly using timed sections in the timeline. Currently configured for the emitter life cycle module. + Changed the way the "MaxSimTime" on niagara component works so that it now represents the maximum frame time which should be used when seeking the component to the desired age. This previously was the maximum amount of simulation time to run which would prevent simple effects from simulating quickly, and would also allow more complicated effects to hang the UI while seeking. + Changed the behavior of niagara component when seeking to desired age so that it always uses the exact specified seek delta instead of trying to seek to the exact desired age. + Fixed the component so that systems which are seeking to the desired age in the editor no longer draw in fast forward mode. + Changed the default playback range for effects in the timeline from 1000 seconds to 10 seconds, and fixed the timeline so that the playback range is serialized into the asset which will persist the setting across loads. + Fixed scrubbing in the timeline so that it doesn't immediately reset when scrubbing backwards. + Added a button to the timeline track for enabling and disabling isolation mode for emitters. + Added a checkbox to the timeline to enabled and disable emitters from the timeline. + Fixed PinToNiagaraVariable so that it asserts if bNeedsValue is specified and it can't actually provide a value. + Create a class called FNiagaraStackFunctionInputBinder which allows binding to an input of a function on a stack so that you can easily set and get the value of the input without having to worry about modifying the graph or rapid iteration parameter sets directly. #tests Existing auto-tests and 1 new test for life cycle changes. Change 3867179 by Frank.Fella Niagara - Turn off GPU simulation for test assets for Shaun. Change 3869201 by Simon.Tovey Bypassing JonLs issue #tests no longer crashes. Change 3869897 by Frank.Fella Niagara - Fix crashes when using the skeletal mesh data interface. NOTE: The change to the actual skeletal mesh data interface code doesn't seem needed, but without it, it crashes with the stomp allocator on. We'll have to investigate further. Change 3870487 by Frank.Fella Niagara - Always generate cached skin data immediately, and make sure we're not indexing triangles that don't exist. This is a temporary fix to avoid a crash when changing the skeletal mesh source on an effect in the level from the details panel. Change 3877378 by Frank.Fella Niagara - Update the burst and lifecycle modules with new metadata for incoming timeline changes. Change 3877564 by Frank.Fella Sequencer - Fix a few more places which were modifying sequencer data without calling NotifyMovieSceneDataChanged. Change 3877565 by Frank.Fella Niagara - Remove old unused burst code from some runtime classes. Change 3877567 by Frank.Fella Niagara - Add support for keying bursts on the timeline which is configured using script metadata. Change 3877699 by Frank.Fella Niagara - Fix a crash in the new timeline code for when you have bursts, but you have inputs on the emitter lifecycle bound, also set lower bound of view range of the timeline to be -.1 so that you can more easily interact with keys at 0. Change 3877715 by Frank.Fella Sequencer - Update the change type when pasting keys from the clipboard from Unknown to TrackValueChanged to avoid unnecessary work. From code review on last change. Change 3879285 by Simon.Tovey A couple of fixes for using struct constants #tests Jon's case now compiles and works correctly. Change 3879378 by Frank.Fella Niagara - Fix a few spots where recursive graph traversal was visiting nodes multiple times because of diamonds in the pin connections. This reduces a terrible hang in UNiagaraScriptSource::InitializeNewRapidIterationParameters from 5 minutes to 5 seconds but there are futher issues to investigate becasue even 5 seconds it too long. Change 3879858 by Shaun.Kime Moved the VM script compilation to the DDC in order to facilitate better team compilation behavior. Significant changes to the translator and overall compile workflow to make the data behave better for a future multi-threaded compilation path. In order to know when to compile, a key is generated that uses the compile id's of the graphs that influence the compilation of our node. In this way, if an end user goes and edits a function or module and checks in, the overall compile id will not match b/c that function is in the dependency list of a system downstream. The system will then know to recompile. However, everyone else on the team will generate the same key because the asset in question was checked in with its local compile id already changed. Additionally, we now employ change tracking on traversals from a node graph. These traversals walk through all the nodes leading to a given output node and see if they've been altered. If they have, a new compile id is generated. If not, the old compile id is used. This also means that if you edit a particle update section in the stack, the emitter section won't force the system to recompile. GPU scripts now have their own script slot rather than riding alongside particle spawn scripts. This allows us to address them independently in the translator and put them in the DDC as well. Once the text is generated, we then go back out to the DDC to generate the shader associated. Known issues: + Emitters are sometimes marked dirty on open + Nodes connected to event writes aren't part of the hashing + DataInterface signature changes don't dirty the compiles + Struct changes don't dirty the compiles + On system loading, we go out to the DDC instead of using existing scripts, which is slower.. #tests all auto-tests pass, additional tests run to validate proper behavior Change 3879859 by Shaun.Kime Content update post DDC change Change 3879862 by Shaun.Kime Niagara plugin content to ddc Change 3879958 by Frank.Fella Niagara - Actually fix the bad recursion in this function by using the existing traversal method. Change 3881727 by Damien.Pernuit Niagara - Houdini - Created a separate plug-in for the Houdini CSV Data Interface. Change 3881877 by Simon.Tovey Fix for mac compile issue Change 3882773 by Simon.Tovey Actual fix for Mike Change 3882822 by Shaun.Kime Rather than throw a check, I instead emit an error when we can't match up a data interface and instantiate a CDO version. Not perfect, but this will let you recompile. #tests allows me to open jonathan's file Change 3883538 by Shaun.Kime Moving particle-level scripts to compile with the emitter named Emitter in their internal scripts. This simplifies the dependencies quite a bit, but causes some complexity on the wiring side (most of which we were already doing anyway). Getting rid of some allocations in translation (still more to go). Fixed some of the logic for emitters that had modules of the same name to now properly concatenate. Compile version bumped, so all scripts will be forced to recompile. Not saving this into the test files for now, as I expect this to happen a bit for the near term. #tests all auto-tests pass, creating a new emitter and system on PC works Change 3883552 by Shaun.Kime Fixing renaming to work properly now. It just invalidates the system script compile id's, forcing it to auto-compile. #tests auto-tests pass Change 3884722 by Bradut.Palas Added searchbar with basic name search for Niagara stack #tests none #jira UE-53469 Change 3884793 by Shaun.Kime Adding pragma once #tests no longer complains about duplicate definition Change 3885629 by Wyeth.Johnson Setting up a transient meshrotation framework pre-integration Change 3887440 by Wyeth.Johnson Custom HLSL failure for Shaun Change 3888911 by Bradut.Palas stack search box now has a minimum width of 300 pixels #tests none Change 3890843 by Shaun.Kime Creating a Niagara quaternion type. #tests created in editor, saw default was correct, carried through to VM runtime through attribute viewer Change 3890849 by Shaun.Kime Porting over 4.19 fix to Dev-Niagara #tests allows creation of valid scripts even when ini is cleared. Change 3891088 by Frank.Fella Sequencer - When getting selected tracks for the external selection api, include tracks if any of their child nodes are selected. This matches the behavior object guid external selection. Change 3891114 by Bradut.Palas Fixing crash that sometimes happens if a stack tree changes while a stack search is active #tests none Change 3891131 by Frank.Fella Sequencer - Move section headers for bool, int, vector, and color to the public directory so they can be used by the niagara level sequence integration. Change 3891165 by Wyeth.Johnson error for shaun Change 3891354 by Shaun.Kime Adding Quat struct to more locations. Now treated like hlsl float4. #tests EulerToQuaternion now compiles Change 3891463 by Bradut.Palas Fix crash that sometimes happens when deleting module and hitting Ctrl-Z to undo (the condition for removing the listeners from the rootentry should not be tied to the validity of weak pointers for system and emitter, because sometimes they are out of sync when changing the graph) #tests none Change 3891641 by Wyeth.Johnson resave node Change 3893143 by Shaun.Kime Fixing issue where you try to bind a vertex color sampler to a mesh without it. We failthe binding rather than crash due to a check later. Also fixed up error logging to only mention the one that failed. #tests can open NiagaraSystem'/Game/FX/SkeletalMeshDissolve/EmittersAndSystems/FightSceneDissolve.FightSceneDissolve' with an error.. Change 3893528 by Bradut.Palas fix another crash when search results are invalidated during search #tests none Change 3893830 by Shaun.Kime Fix for copy & paste of comment boxes #tests can now copy and paste comment boxes Change 3894012 by Bradut.Palas no longer executing search tick if the rootentry is null #tests none Change 3894828 by Frank.Fella Niagara - Runtime changes to support sequencer animation + Reset the simulation when force solo is changed on the component. + Invalidate the render data and clear the buffers when resetting to avoid previously rendered particles from drawing. + Automatically sync the override parameters in the component when the source assets exposed parameters change and removed forced syncing from various places. + Remove lots of refresh code from the niagara component details which should not be neccessary anymore. #TESTS Ran autotests, tested through the UI while building the sequencer tests asests. Change 3894832 by Frank.Fella Niagara - Level sequence support for spawning and animating system life cycle and select user parameter types. #Tests Ran existing tests and added a new test to verify added functionality. Change 3896944 by Bradut.Palas safeguard entries with no search items (it actually can be null) #tests none Change 3896948 by Bradut.Palas Fix assert when dereferencing source array (no need for a raw pointer to the array since it's initialized with the content anyway) #tests none Change 3896950 by Bradut.Palas fix compile error with previous commit #tests none Change 3897698 by Frank.Fella Niagara - Fix some safety issues with parameter initialization on the niagara component. + Kill the current system if we synchronize parameters to avoid issues with data interface lifetime. + Always sync parameters when the asset is set to prevent missing data interfaces in the override list. + Add an enum to control how data interface parameters are handled when calling CopyParametersTo. + When the system instance is copying the asset parameters, have it copy data interfaces by reference so that it's not creating data interfaces copies which will be deleted at the next garbage collection. #Tests Auto-tests, also doesn't crash anymore when opeining Jonathan's disolve effect and then opening a level. Change 3897953 by Frank.Fella Niagara - Remove some namespace restrictions from the code that generates the available parameters to read from in the stack UI since it was preventing the use of custom namespaces in modules and it was not clear what issue it was solving since we already prevent scripts from addressing parameters from lower level scripts. Also move user parameters to their own menu section. #Tests Custom namespaces are usable again in the stack. Change 3898926 by Bradut.Palas Fix for crash caused by garbage collection and async search #jira UE-55284 (Stack search doesn't work on collapsed entries) now searching through unfiltered children, will need extra fixes on the stack to eliminate "ghost" results" Both are still under code review, submitting because they are simple to rollback and harmless to other features. #tests none Change 3899069 by Shaun.Kime Parallel compilation Major changes: Rather than a custom streaming version that we know influences a rebuild, I'm moving away to a guid that you need to regenerate if you change the compiler in any meaningful way needed for multiple reasons, 1) if two people are making changes to the compiler, having something other than a guid as the value makes the content of the ddc ambiguous 2) when iterating I often need to make multiple changes to get to a working final result, bumping the version number each time that happens gets old fast We fully clone the input graph to do the compile in the background. While the translation step is not a huge amount of time, it keeps the main thread responsive. We currently have a big critsec around the crosscompiler to bytecode as it isn't threadsafe. Future changes will push this to the ShaderCompilerWorker. #tests all tests pass as well as stress tests around saving while compilng, long compile times, etc. Change 3899071 by Shaun.Kime Fixing the availability flags for system and emitter scripts. #tests all auto tests pass Change 3899077 by Shaun.Kime Fixing assets to have their wait on compile finished checkbox checked in the editor for testing #tests n/a Change 3899114 by Wyeth.Johnson Random bool custom hlsl node Change 3899184 by Bradut.Palas implemented categories for module inputs (now inputs can be assigned a category in the module editor and they will be grouped by those categories in the Niagara stack) #tests none Change 3899329 by Bradut.Palas fix broken commit by adding missing new files NiagaraStackInputCategory.cpp and .h #tests none Change 3899439 by Yannick.Lange Niagara reroute node. Change 3899516 by Shaun.Kime Official angle conversion modules. #tests made a local test emitter that converted back and forth between angles. Results were correct. Change 3900193 by Shaun.Kime Fixing build #tests now compiles Change 3900474 by Shaun.Kime Fixes to help Mac compile #tests n/a Change 3901131 by Simon.Tovey Warmup feature. CPU Sim only. Also has ability to advance simulation by tick count or seconds via BP/C++. Includes some engine tests. #tests editor + autotests Change 3901455 by Frank.Fella Niagara - Add WITH_EDITORONLY_DATA to prevent non-editor compile failures. Change 3902477 by Frank.Fella Niagara - Fix FNiagaraEditorTypeUtilities to be a thread safe TSharedFromThis since it's always created with a thread safe shared pointer, also fix up issues related to this change. Fixes a crash which occurrs when it's the target object of a delegate binding. #Tests adding a curve data interface to a parameter collection no longer crashes. #jira UE-55403 Change 3903478 by Shaun.Kime No longer doing the check if compiling on load is enabled as this always forces different change ids' #tests n/a Change 3903783 by Shaun.Kime Trimming down excess log spew #tests auto-tests pass Change 3905753 by Shaun.Kime Made Sine(Degrees), Sine(Radians), and Sine, and the variants thereof for trig functions. #tests n/a Change 3905759 by Shaun.Kime Auto tests for mesh orientation #tests these now pass Change 3905762 by Shaun.Kime These files needed to be resaved for some reason to keep passing. Change 3906727 by Bradut.Palas Curve UX improvements #jira UE-55134 #tests none Change 3908177 by Shaun.Kime Fixing build due to typo #tests now compiles Change 3908199 by Shaun.Kime Trying to fix compilation when destroying objects. We cannot safely attach anything beneath us at this point ,we just need to clear out the queues. #tests normal work day-to-day Change 3908201 by Shaun.Kime Working to fix crashes where the component was destroyed out from underneath us due to PIE shutting down and we have a Niagara item editable in Blueprint or world editor. #tests n/a Change 3908985 by Bradut.Palas Renaming ColorCurveAsset to CurveAsset to better reflect the actual usage of the variable (fixing copy-paste issue) #tests none Change 3909222 by Yannick.Lange Niagara graph connection colors Change 3909436 by Bradut.Palas fix crash in curve ux when importing a linear curve (curve of floats) #tests none Change 3909561 by Bradut.Palas Updating LUT before sending NotifyPostChange when editing curves inline (so that LUT will not go out of sync) #tests none Change 3910010 by Yannick.Lange Use new Niagara Actor icon Change 3910191 by Yannick.Lange Fix viewport widget showing up in the viewport when pressing W, E or R. #jira UE-55142 Change 3910213 by Frank.Fella PropertyEditor - PropertyRowGenerator - Added features and fixes to support integration into niagara's stack view. + Added a method to get filter/search strings for an IDetailTreeNode to support external searching and filtering. + Added a delegate to the layout builder for when one of it's owned nodes has it's visibility forcibly changed by a customization. + Changed the filtering so nodes are generated for properties marked as advanced. + Pass the notify hook down to the detail utilities so that change notifications work as expected. + Add layout data for the widgets returned from the IDetailTreeNode to prevent alignment and sizing issues in custom implementations. Change 3910307 by Frank.Fella PropertyEditor - Missed in last checkin. Change 3910509 by Frank.Fella Niagara - Removed nested details panels from the stack and integrate them properly plus other fixes. + Generate rows for nested objects using the details panel property row generator. + Fix the horizontal sizing for niagara parameter editors. + Add an IsValid() method to the base niagara stack entry so that derived classes can know if the associated view models are still valid when processing events. This is a temporary measure to fix a crash in the user parameter UI. + Set stack entries to be expandable by default and delete usages which were setting it to true. + Highlight the active search result with a border since property rows can't highlight text. Change 3911653 by Frank.Fella Niagara - Fix stack spacer sizing. Change 3911667 by Frank.Fella PropertyEditor - Actually fix the notify hook handling in the property row generator. Change 3911896 by Yannick.Lange Niagara function input context menu. Change 3911900 by Yannick.Lange Project setting for not showing comment bubbles. Change 3911996 by Yannick.Lange Niagara fix if node persistent guids for older nodes. The OutputVarGuids are always synced on PostLoad. Change 3912221 by Wyeth.Johnson Renderer Icons for timeline Change 3912608 by Bradut.Palas stack style refactor #jira UE-55399 #tests none Change 3913063 by Wyeth.Johnson Icons for stack added, including new system param png Change 3913618 by Shaun.Kime Fixing two of the most common Illegal call to StaticFindObject() errors while compiling. #tests ran through compilation after changes. Change 3914369 by Bradut.Palas Using new SystemParams.png icon provided by Wyett (instead of the old "Parameters.png") #tests none Change 3914782 by Wyeth.Johnson Adjusting icon for update to not indicate "flow" Change 3915738 by Shaun.Kime Moving away from the generic and super-slow EdGraphSchema ShouldAlwaysPurgeOnModification being true to using the same mechanism we use to invalidate the compile to synchronize nodes. This should be substantially faster. #jira UE-55463 #tests ran through a variety of tests creating and wiring nodes Change 3915739 by Shaun.Kime Assignment nodes need to invalidate the graph for compile. Change 3915741 by Shaun.Kime Making default values more accessible and making it possible to route renderers to use different values than the defaults. #tests n/a Change 3915798 by Frank.Fella SearchBox - Add options to show the number of search results and an option to show a throbber when a search is active. Change 3915966 by Shaun.Kime Changing the default for velocity to 0,0,0 as requested by Wyeth #tests n/a Change 3915982 by Shaun.Kime Making the default text more readable #tests n/a Change 3916237 by Frank.Fella PropertyEditor - Change the DetailCategoryBuilderImpl so that it sets the horizontal alignment to fill for value widgets when generating stand alone widgets so that the behavior in the property row generator matches the behavior of the property grid. Change 3916240 by Frank.Fella Niagara - Should prevent some recent crashes due to stack entry delegates and lifetime. Change 3916261 by Frank.Fella Niagara - Lots of minor stack ui fixes and adjustments + Tweaked padding in a bunch of different places. + Added a dark background behind the stack and stack header to prevent the colors from bleeding together. + Fixed the group text not being white anymore. + Hooked up new features of the search box for showing the search result data and an is searching throbber. + Fixed an issue where the current search result couldn't be interacted with. + Fix some other inconsistencies with searching where you might jump more than one result. + Replace the checkbox for showing curve in the curves tab with an icon based button. (icon is placeholder) Change 3916833 by Shaun.Kime Fixing issue where the system wasn't set to wait for compilation on load, sometimes leading to failures for auto-tests #tests this test now passes when forced to recompile Change 3916846 by Shaun.Kime Missed one system in the scene. #tests n/a Change 3917458 by Shaun.Kime Fixing another potential race condition on the DDC. #tests n/a Change 3918349 by Frank.Fella Niagara - Invalidate the node visuals when reallocating pins. #Jira UE-55698 Change 3918783 by Olaf.Piesche Correct 'temp' to 'Temp' in map set Change 3919262 by Shaun.Kime We weren't properly updating the default values for user data interface components when tweaked in the editor. #tests open skinned mesh auto test system change the preview for the user skinned mesh to be SK_Mannequin_Niagara. It now updates, it didn't before. Change 3919602 by Shaun.Kime Fixing the skeletal mesh to now clamp to the end of the index buffer for safety as well as adding IsValidTriCood. This lets us keep going even when swapping out the skeletal mesh underneath. Tested out isvalidtricoord in the test skinning module. #tests auto tests pass #codereivew simon.tovey Change 3921701 by Yannick.Lange Make Vector2 and Vector4 default blue color to be consistent with blueprints. Change 3922331 by Damien.Pernuit Niagara - Houdini - Added support of CSV File as UAsset (HoudiniCSV) Modified the Data Interface to use the CSV asset instead of the imported buffers from the CSV File Path. Added some new functions to the DI: GetLastParticleIndexAtTime() GetCSVPositionAndTime() GetCSVVectorValue() GetCSVFloatValueByString() Change 3923118 by Simon.Tovey PS4 compile fix. Change 3924934 by Bradut.Palas fix Mac compile issues #jira UE-55426 #tests none Change 3925168 by Bradut.Palas Curve logspamming #jira UE-55593 #tests none The UpdateCompiledDataInterfaces would end up comparing LUTs when copying curves and the source LUT was out of date. Change 3925366 by Frank.Fella Slate - SMenuAnchor - Fix the implementation of "BelowRightAnchor" to align the right edge of the menu with the right edge of the anchor. There aren't any other usages of this in the engine as far as I can tell, hopefully people weren't relying on the broken behavior in a game somwhere. Change 3925423 by Frank.Fella Niagara - Remove the large add buttons from the stack and add smaller add buttons in the group headers. Change 3925877 by Olaf.Piesche New collision modules, separating query, linear and angular impulse; Solve forces and velocity takes care of integrating f->v->p and fA->vA->O; linear impulse module would probably be cleaner by zeroing velocity on collision and calculating a force instead of setting new velocity directly Change 3926582 by Simon.Tovey PS4 compile fix Change 3927401 by Shaun.Kime Fixing events due to added member #tests all tests pass as of 3925423 with this change Change 3927496 by Shaun.Kime Getting auto-tests to run Questions: Why did I have to recompile the GPU tests... something is missing in their key generation? Resaved several files. #tests almost all pass now Change 3927582 by Shaun.Kime Fixing last failing auto test #tests all tests now pass Change 3927924 by Simon.Tovey Chunk level vm parallelism. Any execution processing > batch_size chunks will go wide. The batch size is 4 currently but adjsutable via vm.ParallelChunksPerBatch. VM parallelism can be disabled by vm.Parallel 0 Change 3927990 by Shaun.Kime Submitting redirector Change 3928426 by Frank.Fella Niagara - Always propagate rapid iterations parameters when merging an emitter. Change 3929823 by Frank.Fella Niagara - Fix hlsl generation for system/emitter spawn script so that we read the engine and user parameters from the data set instead of initializing them to 0. #Tests Full recompile + auto-tests Change 3929983 by Simon.Tovey Curve LUT Interpolation + updated test altered by it. Change 3930551 by Frank.Fella Niagara - Fix what looks like a copy/paste error in the SNiagaraSelectedEmitterGraph destructor which was preventing clean removal of delegates and causing a crash. #Tests closing the "Selected Emitter Graph" tab and then changing the selected emitter no longer crashes. Change 3932695 by Damien.Pernuit Niagara - Houdini: Houdini CSV Asset: - Packed vector values in the CSV file are now properly supported (not just for Position/Normal) and can be of any size. - Added support for reimporting Houdini CSV files. - Added an "open in text editor" entry in the context menu. - Improved error/warning logging during the parsing of the file Houdini Niagara Data Interface: - Added GetParticleIndexesToSpawnAtTime(): New helper functions returning the min index, max index and number of particles to be spawned for a given time value. Uses an internal LastSpawnIndex to avoid spawning the same particles twice. - Modified GetLastParticleIndexAtTime(): If the CSV file doesn't have time informations, returns false and set the LastIndex to the last particle If desiredTime is smaller than the first particle, LastIndex will be set to -1 If desiredTime is higher than the last particle in the csv file, LastIndex will be set to the last particle's index Change 3933425 by Shaun.Kime Made the spreadsheet debugger capable of capturing in-world systems as long as they are solo'ed. #tests have been running with it for several days, debugging real-world assets stably Change 3933986 by Frank.Fella Niagara - Fixed a bug with merging where added dynamic inputs which changed names could end up with the wrong rapid iteration parameters. Also fixed an issue where added dynamnic inputs would be renamed when they didn't need to be. #Tests Engine tests and fixes custom repro. Change 3934052 by Frank.Fella Niagara - Added a console command to dump rapid iteration parameters for a system or emitter asset. Change 3934436 by Simon.Tovey Fixes for sprite VF depth test failure issue Change 3934658 by Frank.Fella Niagara - Make disabled modules visually distinct. #Tests General stack use. Change 3935383 by Shaun.Kime Fixing mac compile errors #tests n/a #jira UE-55911 Change 3935420 by Yannick.Lange Niagara parameter UI first version. Change 3935482 by Yannick.Lange Add missing files for parameters Change 3935591 by Shaun.Kime more macos compile #tests na Change 3935637 by Shaun.Kime Reverting to prior behavior #tests na Change 3936541 by Yannick.Lange Remove the merge up menu entry for set variables module items. Change 3936841 by Wyeth.Johnson Bool comparison dynamic input Change 3936895 by Simon.Tovey A few perf improvements and fixes to the SetSolo transfering between solo and batched so all lightning sims can run batched after they're warmded up. Change 3936899 by Simon.Tovey Missed a file Change 3937178 by Krzysztof.Narkowicz Fixed bHasSkipOutputVelocityParameter for shaders without PreviousLocalToWorldMatrix (e.g. particles) #jira UE-50914 Change 3937222 by Yannick.Lange Random event spawn Change 3937292 by Yannick.Lange Fix Adding a new parameter then renaming it the default name deletes the new parameter #jira UE-55994 Change 3938472 by Yannick.Lange Fix new parameters in emitters saving by using the editable emitter. Change 3938474 by Yannick.Lange - Store graphs as weak object pointers in the parameter UI. - Allow right mouse menu on parameters in the system toolkit. - Refresh only the parameter actions when deleting an entry instead of refreshing the graphs aswell. Change 3938525 by Yannick.Lange Fix creating an unique FName every tick for parameterstores by using a FString instead. Change 3938596 by Shaun.Kime Macos compile #tests n/a Change 3939362 by jonathan.lindquist Adding a new Component Spacing input to the debug value functions. This will allow users to make better use of space when debugging values. Change 3939365 by Shaun.Kime Back out changelist 3936895 and 3936899 Leaving in some changes around stats as they should be harmless. These changes were removed b/c they added poor perf to Jonathan's dissolve effect and also caused multiple tests to fail in engine tests. #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939367 by jonathan.lindquist Adding greyscale output Change 3939368 by jonathan.lindquist Changing the pin order Change 3939377 by Shaun.Kime Allows the unnormalized lut table flag to be copied over #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939379 by Yannick.Lange Rename FParameterStore Name to DebugName to prevent loading a FName into a FString with existing assets. Change 3939382 by Shaun.Kime Adding the ability to have a default curve index with a custom switch node. #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939383 by Shaun.Kime Converting existing curves over to using the new default pin #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939501 by Shaun.Kime Submitting missing files #tests n/a Change 3939580 by Wyeth.Johnson Default curve indexing to three more DIs Change 3940122 by Yannick.Lange Parameters view: - Jump to new parameter added and request rename for new parameter. - Remove adding parameters to the parameterstore when a pin is requested. - Only show make new parameters in the dropdown to add a new parameter. - Use Sections of UI as types instead of int32. Change 3940214 by Bradut.Palas fix crash when rename skeletal mesh user variable #jira UE-55236 #tests none Change 3940215 by Bradut.Palas undo not working in graph editor #jira UE-55466 #tests none Overriding the BreakPinLinks methods to include a transaction Change 3940250 by Bradut.Palas Creating stats tab in module toolkit to show LastOpCount #tests none Change 3940251 by Bradut.Palas #jira UE-55684 create inline menus for stack #tests none Change 3940262 by Simon.Tovey Back out changelist 3939365 with fixes Tests all now pass Change 3940333 by Shaun.Kime Nullptr check #tests n/a Change 3940338 by Krzysztof.Narkowicz Niagara sprite particles - implemented get previous position in order to fix sprite particle motion vectors #jira UE-52865 Change 3940407 by Yannick.Lange Create pin on map get and set node when dragging without recompiling the graph. Change 3940534 by Shaun.Kime Making sure that collision returns defaults of 0 if nothing was found. #tests auto-tests that have been passing still pass Change 3940709 by Simon.Tovey Temp hacks for the skeletal mesh painting issues. Change 3940960 by Yannick.Lange Only build parameter menu once when graphchanged is called multiple times in a frame. Also use the existing metadata from graph to build the parameter menu, because the metadata already looped through all nodes and pins. Change 3941019 by Yannick.Lange Meta data UI refresh next tick to avoid refreshing multiple times a tick. Change 3941853 by Simon.Tovey Adding more dynamic parameters Change 3941957 by Frank.Fella Property Editor - Fix issues with property row generator to support the niagara stack. + Make the detail tree node name accessible through the interface, and fix the implementations for category group and property item. + Add a temporary fix for passing instance customizations from the property row generator to the detail property row through the detail layout builder. This should be unified in a nicer way, but this will work for the time being. Change 3942174 by Frank.Fella Niagara - Stack UI Pass + Advanced rows are not handled properly per item. + Expanded and scroll state is now saved in editor data per asset. + Added a "View Options" drop down for showing all advanced rows, and for showing/hiding outputs. + Added an option to collapse all stack items from the emitter header context menu. + Added support for "Edit Conditions" on module and dymaic inputs which will enable and disabled an input based on the value of another input. This includes showing a checlbox inline for the edit condition toggle input. + Added support for "Visible Conditions" on module and dynamic inputs which will hide and show inputs based on the value of another input. + Removed the pencil icon for locally editable values in the stack. + Fixed issues with invisible search results. It's still possible for a search result to not highlight the text correctly, but the outline never disappears. + Removed pinning for module inputs. + Fixed the event handler properties so that they use the property row generator instead of an embedded details panel. + Unified indent handling across all stack classes. + Unified stack editor data across all stack classes. Change 3942427 by Simon.Tovey Another hack for vertex painting tool Change 3942453 by Simon.Tovey Some more hacks for skel mesh vertex painting until Jurre's rework is ready. Change 3942799 by Yannick.Lange Rebuild metadata, input and output parameters UI next frame instead of on every graph changed call. Change 3942833 by Frank.Fella Niagara - Fix the visibility of the advanced expander item. Change 3942923 by Yannick.Lange Revert using metadata for parameters to looping through pins to find parameters in maps not connected to anything. Temporary fix to remove used parameters if they are found in the graph. Change 3943094 by Wyeth.Johnson Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Location/SphereLocation.uasset to revision 5 Change 3943154 by Wyeth.Johnson Metadata to sphere location module Change 3943256 by Wyeth.Johnson Testing out sweet new metadata control Change 3943374 by Olaf.Piesche Fixing mesh motion blur Change 3943382 by Olaf.Piesche Turning on base pass velocities until I can fix separate vel pass for particles Change 3943471 by Yannick.Lange Emitter view stats only show particles count. Use Niagara.EmitterStatsFormat 0 and 1 to switch between all data and only particle count. Default is 1 to only show particle count. Change 3943497 by Yannick.Lange Paramater map remove FTickableEditorObject and use SWidget::Tick Change 3943589 by Olaf.Piesche -Fix for linear impulse (offset by 1/2*velocity*dt instead to avoid distracting bounciness) -Collision Rest; add after impulse modules to make particles rest if in collision under threshold velocity magnitude Change 3943644 by Olaf.Piesche Turn shader development mode back off Change 3943718 by Olaf.Piesche Fix vertex factories Change 3943776 by Olaf.Piesche Properly calculate old particle position using dt for velocity rendering Change 3943780 by Frank.Fella Niagara - Fix ensure when removing dynamic inputs due to incorrect logic which would have left unused nodes in the graph. Change 3943870 by Yannick.Lange Parameter drag drop window Change 3943994 by Frank.Fella Niagara - Fix some editor settings not saving across sessions. Change 3944056 by Shaun.Kime Updating to replace values reset when Wyeth resaved files. #tests DrawOrderGPU, DrawOrder, and TestDifferentInactiveEmitters now pass Change 3944068 by Simon.Tovey Back out of my changes to vertex painting and replaced with Jurre's fixes. Change 3944174 by Frank.Fella Niagara - Fix stack categories so that they don't freak out when the stack is refreshed, and also remove the uncategorized heading and move uncategorized inputs to the top. Change 3944313 by Shaun.Kime Updated screenshots after motion blur Change 3944321 by Shaun.Kime Fixing error message to be clearer about a disconnected Get node. #tests n/a Change 3944351 by Shaun.Kime Making safe against weak pointers going away. Track error encountered by Jonathan. #tests n/a Change 3944368 by Yannick.Lange Remove automatic adding prefix "particles." when renaming functioninput. Change 3944383 by Shaun.Kime Just adding some more nullptr check #tests n/a Change 3944384 by Shaun.Kime Providing more context for a check that existed previosuly and was encountered by Wyeth today #tests n/a Change 3944872 by Yannick.Lange Remove old material parameter node. Change 3945209 by Shaun.Kime Fixing possible infinite recurson on child array size of zero #tests n/a Change 3945865 by Yannick.Lange Spreadsheet filter for output attributes Change 3946091 by Simon.Tovey Per particle sorting for translucent sprites and meshes Change 3946095 by Simon.Tovey Updated screens for dynamic param tests Change 3946378 by Olaf.Piesche Another sprite motion blur fix Change 3946864 by Shaun.Kime SkinnedMesh per-instance data requires 16 byte alignment due to usage of FMatrix. We were not guaranteeing that in our per-instance data system. We are now enforcing that to be true by aligning all memory size requests. #tests autotests pass Change 3946928 by Wyeth.Johnson Skeletal mesh location metadata. THIS VERSION ALSO CRASHES ON SAVE FYI Change 3946934 by Frank.Fella Niagara - Clean up rapid iteration parameters on compile. #Tests - Fixes the jira below, all auto tests which were currently passing still pass, and GDC effects load and look correct. #jira UE-55932 Change 3946936 by Frank.Fella Niagara - Fix crash when undoing adding a dynami input. Change 3947213 by Simon.Tovey Fix for thread safety in collision data interface. Previously I'd made them thread safe between VM chunks but they already weren't safe between system instances. Change 3947279 by Simon.Tovey Fixed thread safety issue with niagara global dynamic buffer Change 3947788 by Simon.Tovey Fix enum property warnings Change 3947849 by Olaf.Piesche Normalize orientation quats. Safety first. Change 3947877 by Frank.Fella Niagara - Fix a crash when editing meta-data for a module currently open in a system or emitter editor stack. This updates the FNiagaraStackFunctionInputBinder to track the lifetime of the default pin correctly. Change 3948445 by jonathan.lindquist Inverting alpha output Change 3948615 by Olaf.Piesche Don't access data layouts that are invalid because their bindings don't exist Change 3949361 by Yannick.Lange Command to expand all groups and collapse all items of those groups in the stack. Change 3949365 by Yannick.Lange Missing file for change 3949361 Change 3951123 by Simon.Tovey Fix bug with dynamic parameters in Niagara mesh particle VFs Change 3951199 by Simon.Tovey Fix for issues caused by unsafe reads of GT data from RT Change 3951293 by Olaf.Piesche Workaround for jittering particles with collision at rest state; will need to revisit after GDC Change 3951533 by Yannick.Lange Collapse parameter menu by default Change 3952106 by Frank.Fella Niagara - Fix data interface input initialization when inserting modules and dynamic inputs. We now put all inputs into categories in the stack and this code didn't handle that. Change 3954809 by Frank.Fella HoudiniNiagara - Add include to fix CIS incremental build. Change 3954857 by Frank.Fella Niagara - Accept newer versions of 3 automated tests images as they are stable and still look correct for what they are testing. Change 3954935 by Frank.Fella Niagara - Fix a crash in the skeletal mesh sampling info details customization when a mesh has no skeleton. Change 3954969 by Simon.Tovey Compile fix for gpu emitters Change 3955012 by Frank.Fella Niagara - Fix clang and deprecation warnings. Change 3955988 by Olaf.Piesche Fixing collision queries (separating line query trace direction and velocity, so we can look a frame ahead properly); various fixes to the impulse modules; rest module now allows for color change when particles are set to rest. This checkin should stabilize collision dynamics substantially. Change 3956730 by Yannick.Lange Cleanup parameter Change 3957065 by Bradut.Palas enable/disable mechanism for renderers #tests none Change 3957802 by Olaf.Piesche -Removing Velocity parameter from collision query DI, since velocity at query time is known and can just be passed along in temporary parameter; this stops the compiler from falling over in unity builds and also makes the Perform Query function more sane as an actual line check -Put some safeguarding against non-collisions (v.n>0) reported as intersections into the collision query module to avoid instances of particles being pushed through geometry -Updated modules to use the new function signature #tests modular explosion test map, EngineTests Change 3957804 by Olaf.Piesche Updated tests for 3957802 Change 3957859 by Frank.Fella Niagara - Add missing #if to fix some of the nightly build errors. Change 3958065 by Olaf.Piesche Fix GPU sim hlsl for the collision data interface; should make GPU collision bounce test run again Change 3958302 by Olaf.Piesche modified test for sane depth bounds; accepting new results; some changes to hlsl for collision data interface Change 3959007 by Simon.Tovey Further defining the barrier between GT and RT data. Not finished yet, especially for GPU sims but we're heading in the right direction. Change 3960004 by Bradut.Palas QOL change, now committing search text in the stack (pressing enter) will jump to the next occurrence. #tests none Change 3960019 by Frank.Fella Niagara - Preemptively fix up stack related header includes to avoid manual merges. Change 3964217 by Bradut.Palas Fixing compile issue after renderer enable feature(the Isolate features require the WITH_EDITORONLY_DATA preprocessor directive to be enabled) #tests none Change 3964581 by Frank.Fella Niagara - Get things compiling again after merge. Mostly include fixes and commeting out lots of sequencer related stuff that needs to be fixed. Change 3965057 by Frank.Fella Niagara - Fix compile issues in the houdini plugin. Also add the houdini pluging to EngineTest so that it compiles by default when running tests. Change 3965075 by Frank.Fella Niagara - Fix another include issue that was caught on the build machine. Change 3965308 by Frank.Fella Niagara - One more header fix. Should fix the win64 build in CIS. Change 3965313 by Frank.Fella Niagara - Fix in editor playback. The timeline data is still broken. Change 3965482 by Yannick.Lange Stack source taken apart into different files. Change 3965863 by Shaun.Kime Fixes scope level variable definition causing my local build to fail #tests n/a Change 3965866 by Shaun.Kime Crash fix when the module is missing. Now show an error message as well as checking for script validity before calling method on it #tests n/a Change 3968174 by Frank.Fella Niagara - Fix more merge fallout. The emitter/system editor timeline now matches the stack data again. Change 3968183 by Frank.Fella Niagara - Delete commented out include from merge. Change 3972162 by Frank.Fella Niagara - Updated level sequence testing assets. Change 3972880 by Shaun.Kime Merging using DevNiagaraToGDC2018 Allowing disabled modules to still influence parameter maps. #tests n/a Change 3973269 by Shaun.Kime Disabling warning about divide by zero as it is often incorrect #tests n/a Change 3973273 by Shaun.Kime Forcing all three planes to be GPU #tests n/a Change 3973307 by Shaun.Kime Fixing CIS win32 errors #tests n/a Change 3973374 by Shaun.Kime Fixing minor static analysis warnings #tests n/a Change 3976107 by Shaun.Kime Updating multiple files as they have the unversioned file warning #tests auto tests now show green Change 3976114 by Shaun.Kime Taking snapshots after the integration for time control to clear automated tests. Frank was uncertain about the current behavior being correct, but didn't want to hold up integration for that. #jira UE-57117 Change 3976119 by Shaun.Kime Makiing GPU shaders contain the dependencies and the compile id's and other items so that they update properly. #tests auto-tests now pass Change 3976449 by Shaun.Kime Adding additional debugging to logs #tests n/a Change 3977172 by Frank.Fella Niagara - Fix issues with the level sequence integration for niagara caused by the integration from main, and accept the new test image. This code should be updated at some point to use the new channel blending in sequencer. NOTE: There is still a timing issue that is evident in the automated test screen shot due to float timing and rounding issues in niagara, but the sequencer code is functioning correctly. Change 3977362 by Bradut.Palas UE-55601 curve snapping not working in Niagara curve editor #tests none Change 3977363 by Bradut.Palas exposed added external asset for function input so it would appear in context menu in the Niagara stack. #tests none Change 3977368 by Bradut.Palas #jira UE-51052 If you undo an emitter rename we get invalid values The CachedUsageInfo got emptied but it didn't get restored by the undo, sending the system in an endless Compile() loop Added a Modify() call in the UNiagaraScriptSource::InvalidateCachedCompileIds() #tests none Change 3978716 by Shaun.Kime Fixing half of CIS static analysis warnings and localization symbol dupe warnings from Jamie Dale #tests auto tests pass other than known level sequence test Change 3978857 by Shaun.Kime The map SpawnTest niagara actor didn't have its wait for compilation flag set, potentially leading to artifacts. Disabling for now as that didn't resolve the issue. Change 3979594 by Shaun.Kime Potential fix for cook on Orion #tests n/a Change 3979713 by Shaun.Kime Fixing several more CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale #tests n/a Change 3980017 by Shaun.Kime Fixing CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale #tests n/a Change 3981859 by Shaun.Kime Fixing crash in Paragon when the normals buffer was not present during startup with just UI screens. #jira UE-57188 #tests got through to paragon main screen, related auto-tests pass Change 3982685 by Shaun.Kime For some reason, when Lightmass is spinning off workers, the render thread is null, causing us to trigger checks that we shouldn't trigger when killing of system instances. #jira UE-57214 #tests all auto-tests pass Change 3983902 by Simon.Tovey Speculative fixes for mac errors regarding niagara vertex decls. Change 3984023 by Andrew.Rodham Sequencer: No longer upgrade bIsInfinite for section types that do not support open ranges Change 3986727 by Wyeth.Johnson Fixed add velocity from point to work in more situations, not cause errors regardless of stack location, made it more programmable with inputs, and added metadata Change 3988114 by Wyeth.Johnson fixed color and inherit parent vel Change 3989175 by Simon.Tovey Improved VM error reporting. #tests engine tests Change 3995007 by Yannick.Lange Parameter menu in system layout Change 3995192 by Yannick.Lange Fix niagara script details panel search Change 3995291 by Yannick.Lange Parameter menu tooltip fix Change 3997804 by shaun.kime Lookup table is off for this. Keys are 0,0 and 1,1, so you'd expect normalized age as a sampler to just return the same value from lookup. If LUT is disabled, this is true. If LUT is enabled, it isn't, especially the farther one gets from 0. Change 3998124 by Simon.Tovey Fixed Curve LUT generation #tests editor #jira UE-57604 Change 3998286 by Wyeth.Johnson Fixed normalized execution index to, you know, work. Change 4000324 by Shaun.Kime Replacing a thread-safety issue where we get an enum on an as-needed basis. This was causing crashes in cooking as you cannot find from the global table while serializing. #tests have not gotten the crash since Change 4000428 by Bradut.Palas UE-55750 focus curve editor when "show" button is pressed UE-55791 user variable curves cannot be shown in the Curve tab These issues were related and touched the same area of code, so I fixed them together. UE-55791 is basically just getting curve data from the system exposed variables too. #tests none Change 4001094 by Frank.Fella Niagara - Fix slowdown in the metadata editor due to delegate rebinding. Change 4001098 by Frank.Fella Niagara - Remove the tool tip from the additional options drop-down for modules since it covers the drop down menu. Change 4001133 by Bradut.Palas Fix curve editor getting focused each time a curve was changed. #jira UE-57708 #tests none Change 4001253 by Frank.Fella PropertyEditor - Fix issues with external root handling. + Fix external nodes not being cleaned up correctly when custom node builders rebuild children. + Fix expanded state being trampled when processing external nodes due to the expanded nodes list being emptied every time RestoreExpandedItems was called. + Fix performance issues with refreshing during tick by moving all calls to RestoreExpandedItems to UpdateFilteredDetails, and then only calling UpdateFilteredDetails once per tick as needed instead of per root property node and per root external node. Change 4003365 by Shaun.Kime If the physical material has gone away, make sure to set value values. Note that if this data interface is going to go on in parallel to the game thread, we'll need something more sophisticated. #tests Win64 tests pass Change 4003367 by Shaun.Kime Making sure that the system has finished compiling before we begin cooking. #tests n/a Change 4003374 by Frank.Fella Niagara - Fix a crash when adding and removing modules and dynamic inputs with data interfaces. #jira UE-57749 Change 4003696 by Shaun.Kime Getting rid of whitelist, now open on all platforms. #tests n/a Change 4005368 by Shaun.Kime Fixing compile error on Linux #tests n/a Change 4013779 by Shaun.Kime Interpolated spawn on GPU does not yet work but checkpointing work. + Added AdditionalDefines to the VMCompileId, switched interpoalted spawn to use that + Added rough interpolated spawn support to translator by refactoring away from specific calls and hard-coded update/spawn somewhat... could improve for events + Revised shader variables away from Phase0/Phase1 terminology to the true Update/Spawn meaning. Leaving the phase numbers as an implementation detail within the usf. + Added ToString to ParameterStores for debugging + Changed GPU ExecIndex() logic to actually work similar to the VM #tests collision gpu fails Change 4015355 by Simon.Tovey Persistent IDs final. Still need to change the compile ID parts over to use the new additional defines but the core functionality is in. #tests editor + engine tests Change 4018445 by Simon.Tovey Some missing assets Change 4021647 by shaun.kime Moving jonathan's DebugParticleData to Niagara Extras Change 4024809 by Yannick.Lange Parameter map hover text using metadata description. Change 4025042 by Wyeth.Johnson Dogfooding the skeletal Mesh location module w/ comments, reroute pins, map gets and sets, metadata, tooltips, etc. Change 4025236 by Shaun.Kime Working on getting interpolated spawning working. Submitting to get assistance from Simon. ... PLEASE DON'T SYNC UNLESS YOU'VE SPOKEN TO ME... #tests collision test on GPU is better, but not yet right.. ribbon id emitter is ensuring on LUT table generation Change 4025372 by Shaun.Kime Making the debug particle data stay the same size as the base particle for easier debugging. #tests n/a Change 4025701 by Shaun.Kime Debug asset for Simon #tests n/a Change 4027865 by Shaun.Kime Fixing parameter map stores to properly handle reset. Previously was leaving around padding info from previous version of the script which could be totally wrong. #tests now don't crash Change 4029638 by Wyeth.Johnson Refactor Skeletal mesh location module to test some ideas on coding standards and shake out workflow issues Change 4030135 by Shaun.Kime Interpolated spawning now works on the GPU. #tests collision gpu has stray collisions and the GenerateLocationEvent was recently updated that broke . will fix in a later update Change 4030197 by Wyeth.Johnson Refactor static mesh location module Change 4033437 by Simon.Tovey Adding a few simple new functions for direct access to vertex positions for cannabis.cod3r. Change 4033937 by Shaun.Kime Setting the wait for compilation flag #tests now pass consistently Change 4034391 by Shaun.Kime Created a parameter map default node to start default call chains.Updated standard modules and dynamic inputs. #tests all previoulsy passing tests pass Change 4035002 by Shaun.Kime Updated to work with latest main integration #tests n/a Change 4035523 by Wyeth.Johnson Refactor Cone stuff to coding standards, replace some things with functions Change 4035672 by Shaun.Kime Fixing build warnings #tests n/a Change 4036887 by Wyeth.Johnson Some metadata, some optimization, some additional refactoring and swapping in functions. Straight Dogfoodin' Change 4037132 by Shaun.Kime Adding GPU test versions of several assets Change 4037241 by Wyeth.Johnson Optimizing, metadata, and making some coding standards changes Change 4037436 by Wyeth.Johnson Fixing a pointless module to make it... pointful? Change 4037629 by Frank.Fella Niagara - Fix issues with data interfaces as parameters + Collect data interface reads and writes from parameter maps during compilation so they can be hooked up a runtime. + Add new runtime parameter stores for systems and emitters at runtime which bind the exposed data interfaces into the execution contexts. + Fix the editor code which updates the compiled data interfaces so that it updates the correct ones regardless of where they are defined. + Fix an issue where failed compiles weren't being propgated to the UI correctly. Change 4037832 by Shaun.Kime Properly handling nullptr references #tests deleting a module from the stack after it was recently refreshed now doesn't crash Change 4037917 by Wyeth.Johnson Fix add velocity from point (needed begin defaults), reorg, comment and metadata Change 4038250 by Wyeth.Johnson Big refactor of spawn per unit Change 4038665 by Shaun.Kime Events now take parameter map in/out pins #tests now the events auto-tests should pass Change 4038723 by Shaun.Kime Now renderers can say if they are compatible with the SimTarget mode. #tests now changing to GPU doesn't crash a light renderer Change 4038731 by Shaun.Kime Missing file from prior checkin #tests n/a Change 4038742 by Shaun.Kime Attempting to fix editor build, which is unfortunately fine on my machine #tests n/a Change 4040069 by Wyeth.Johnson Refactor of Event Generator and Event Receiver, new coding standards for events Change 4040377 by Wyeth.Johnson Refactor the solver to adhere to coding standards (and remove some reroute pins, sorry Shaun) Change 4040639 by Wyeth.Johnson Vector Noise Force refactor and optimization Change 4041031 by Shaun.Kime Making the modulo functions on the gpu return a value. #tests passes cook on PS4 and gets past this in compile on Mac Change 4041254 by Wyeth.Johnson Refactor Point Attraction, change some behavior also Change 4041999 by Yannick.Lange Parameters refactor: - Find parameters and references in graph - Renaming parameters, includes renaming all pins in the graph - Removing parameters - Find metadata when finding parameters, so we are not looping through all nodes/pins twice - Parameters list supports multiple emitters in systems Change 4042058 by Simon.Tovey Refactored GPU parameters. - Shader now uses the DI default object to create the correct parameters struct. All parameter and buffer management now being handled inside this parameter struct. This allows far more encapsulated code for each DI. Allows us to reamove the GPU buffers from and the Scene texture refs that were in the base DataInterface class. Simplifies the API and process of implementing DI's on the GPU considerably. - Removed all existing GPU buffer support code and usage. All DIs now use a parameters struct. - Have moved tons of curve code into the base class, simplifying the child implementation classes. - Implemented GPU curve interpolation. - Removed bAllowUnnormalizedLUT. Confusing and now unnessessary. All curves do this by default. - Modified FNiagaraShaderMapId to use the latest FNiagaraCustomVersion::LatestScriptCompileVersion and bumped it. - Created NiagaraCore module and moved a few classes into it. Anything needed by both the shaders and runtime should be here. - Refactored DI hierarchy to base from a new UNiagaraDataInterfaceBase which is inside NiagaraCore. - Removed constness from many UStruct/UEnum/UClass pointers. Technically we don't ever need these to be non const so initialy coded as const. Some existing engine code however requires these be non const so had to propagate that back through our code. Change 4043427 by jonathan.lindquist Submitting a material function that will allow users to reproduce mesh surfaces. Change 4043448 by Olaf.Piesche Async GPU buffer readbacks and updates Change 4043679 by Shaun.Kime Fixing Mac compile issue. Not sure if correct, but unused code so good for now. #tests n/a Change 4044000 by Simon.Tovey static analysis fix Change 4044001 by Simon.Tovey Fix for gpu scripts with multiple curves. Change 4044124 by Yannick.Lange Fix persistent guid for parameter map set pins. Change 4044230 by Simon.Tovey I didn't forget to check these in. Nothing to see here.... *whistling*.... Change 4044584 by Bradut.Palas Module dependency properties are now available (to be used by technical artists before the functionality is done and submitted) #jira UE-58200 #tests none Change 4044663 by Wyeth.Johnson Jitter position needed begin defaults, got a refactor which I was in there Change 4044894 by Yannick.Lange Rename parameter and all referenced pin when renaming a pin on a map set or get. Also fixes renaming a pin not deleting the old metadata. Change 4045383 by Wyeth.Johnson Fix up and comment/tooltip on mesh rotation, look at, and rot rate Change 4045488 by Wyeth.Johnson Update Age reorg just for readability Change 4045799 by Shaun.Kime Reworking test art to get rid of known issues and put known issues into their own assets. Change 4046328 by Wyeth.Johnson Some optimizations, options to polar/cartesian, starting in on Dynamic Inputs Change 4046728 by Shaun.Kime Fixed error where we were writing to Loca.Module.EventVelocity instead of Local.Module.EventVelocity. Change 4047423 by Frank.Fella Niagara - Fix post load code for the assignment node which was not conditionally post loading another object it was using which now has a custom post load. This resulted in strange pin renaming which was breaking merging and automated tests. Change 4047425 by Frank.Fella Niagara - Make the merge manager a little more resistant to malformed stacks. Change 4047788 by Bradut.Palas #jira UE-57902 Module input sort priority #tests none Change 4048063 by Yannick.Lange Fix don't show context menu on parameter view categories. #jira UE-57196 Change 4048068 by Yannick.Lange Fix create system from emitter #jira UE-57186 Change 4048132 by Yannick.Lange Add missing includes. Change 4048269 by Shaun.Kime Removing ensure that we log later #tests n/a Change 4048273 by Shaun.Kime Really doing it this time #tests n/a Change 4048595 by Yannick.Lange Fix niagara if node input disconnect on output pin rename. #jira UE-58095 Change 4049640 by Simon.Tovey Daft mistake in curve hlsl gen. Change 4050270 by jonathan.lindquist Submitting a module that lerps each of a particle system's intrinsic particle values. Each variable set utilizes an opt-in bool. Change 4050282 by jonathan.lindquist Submitting newly formated Mesh Reproduction modules. They now contain documentation, be fully generalized and meet our updated coding standards. Change 4050566 by Olaf.Piesche -More fixes and changes for async gpu buffer readback -removed more CPU intervention; spawning and death now happen largely without CPU direction, other than determining the number of particles to spawn -Added piping number of vert indices per instance from the renderer down to the GPU context and CS; as a result, GPU simulated mesh emitters are working again; this will need a bit of additional work to handle multiple renderers (will need multiple DrawIndirect parameter buffers reflecting the different renderers) -General cleanup and prettification Change 4050907 by Frank.Fella Niagara - Add support for default dynamic inputs on modules and dynamic inputs. Change 4051436 by Simon.Tovey Forcing a refresh of curve LUTs on assets with old versions. Change 4051463 by Simon.Tovey Compile fix Change 4051900 by Frank.Fella Niagara - Fix linux warning. Change 4052253 by Olaf.Piesche GPU sim interpolated spawn fixes - Look Ma, no gaps! Change 4052321 by Frank.Fella Niagara - Enable the level sequence test. Change 4052353 by Shaun.Kime Renamed variable after Wyeth's change #tests MeshOrientationTests now pass Change 4052627 by jonathan.lindquist Submitting a new spline function. Change 4052648 by Shaun.Kime PS4 development builds don't seem to be able to remove generated data for structs like this even though it is in a non-editor build. #tests n/a Change 4052661 by Olaf.Piesche -Avoid branching on every OutputData operation by allocating a scratch instance at the buffer end and setting the default index from AcquireIndex to that. -bit of shader code cleanup Change 4052706 by jonathan.lindquist Adding a module that supports a single segment spline Change 4052712 by jonathan.lindquist Adding a below threshold output to the direction and length safe function Change 4052786 by jonathan.lindquist Submitting a new height lerp function Change 4053126 by jonathan.lindquist Submiting a function that calculates a triangle's surface area. Change 4053132 by jonathan.lindquist Changing the category to geometry Change 4053141 by jonathan.lindquist Moving the asset back to a generic math category Change 4053166 by jonathan.lindquist Submitting a new threshold function that removes threshold downtime. Change 4053564 by Shaun.Kime Added staging to ini as requested by cook #tests n/a Change 4053619 by Shaun.Kime Fixing defaults #tests used by Orion art Change 4054171 by Yannick.Lange Remove bold font for parameters. Change 4054183 by Yannick.Lange Syncing system exposed parameters and parameters list. Includes adding, removing and renaming parameters. Change 4054313 by Wyeth.Johnson Refactor spawnrate to (mostly, other than a bug) conform to coding standards, and set begin defaults on a few things. Change 4054840 by Shaun.Kime Fixing redundant branch for CI #tests n/a Change 4055492 by Shaun.Kime Updating compile version since I changed the usf #tests n/a Change 4055550 by Shaun.Kime Disabling rendering of middle module as it differs between machines. #tests LevelSequenceTestsNiagara now passes Change 4056256 by Shaun.Kime Disabling the ensure and turning into log statements for curve copying #tests n/a Change 4056287 by Shaun.Kime Now using GLobalCompileShader. There are still issues with cooking as there is sometimes a runtime streaming error that we didn't read in the correct amount of data. I think the logic for when/if we stream out the compiled shader might still need TLC. #tests n/a Change 4056381 by jonathan.lindquist A new quat to angle axis and angle axis to quat conversion mat function Change 4056513 by Frank.Fella Niagara - Fix crashes for default data interfaces where the pin default was empty or the data interface wasn't initialized. #jira UE-58789 Change 4056734 by Frank.Fella Niagara - Drag and drop for modules. Change 4056880 by Simon.Tovey Replacing engine tests shots for RibbonID test. Some slight changes introduced, likely curve or recent module changes. Change 4056894 by Bradut.Palas UNiagaraStackEntry Error refactoring + Module dependency warning feature. #jira UE-58199, UE-58200 #tests none Change 4056916 by Bradut.Palas Add missing files from shelved changelist. #tests none Change 4056937 by Bradut.Palas #jira UE-54678 The skeletal mesh customisation did not update when the mesh was changed through the data interface or mesh editor #tests none Change 4057014 by Frank.Fella Niagara - Fix cis initializer order warning. Change 4057542 by Bradut.Palas #jira UE-58554 Remove Refresh UI button from Niagara script editor #jira UE-58555 Remove Numeric Output Type Selection Mode from Niagara script UI #tests none Change 4057702 by Bradut.Palas The stack editor priority in the variable metadata now properly has zero as default value. #jira UE-58740 Change 4057758 by Frank.Fella Niagara - Fix text wrapping for error items. Change 4057990 by Bradut.Palas Stack error tweaks (added error count to the stack errors button and also updating icon according to highest severity issue in the subtree) #tests none Change 4057996 by Shaun.Kime Trying to fix the static analysis header tool error in CIS #tests n/a Change 4058027 by Shaun.Kime Fixing compilation on other platforms #tests compiles on playstation Change 4058356 by Frank.Fella Niagara - Fix an assert that happens when adding a module or dynamic input with a boolean or enum input. Change 4058428 by Frank.Fella Niagara - Fix a crash when removing an input from a set variables node in the stack which was caused by the function losing an input without the stack being refreshed. This also fixes an issue where add and remove actions on a set variables module wouldn't take affect until the graph was compiled. Change 4059924 by Wyeth.Johnson Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Velocity/AddVelocity.uasset to revision 5 Change 4060256 by Wyeth.Johnson Forces are now dependent on a solver Change 4060430 by Wyeth.Johnson Velocity modules depend on a solver Change 4060949 by Shaun.Kime Fixing pragma once definition as well as a possible null deref #tests n/a Change 4060955 by Shaun.Kime Fixing due to changes in defaults #tests all now pass PC Change 4061000 by jonathan.lindquist Debug particle material improvements which includes comments in the shader, rearranged layout with a vector 2 input for particle id, new texture, a new instance that includes "focus masking" Change 4061804 by Wyeth.Johnson Optimized out a couple unnecessary bits of math from some axis alignment stuff, solver dependencies Change 4061974 by Simon.Tovey Fixed GPU cooking. - Removing check for emitter SimTarget in CanBeRunOnGpu() and relying only on the script usage having been loaded already. We can't rely on properties in the emitter being loaded before the call to UNiagaraScript::PostLoad() so this is unsafe. - Adding some dummy gpu buffers to bypass validation ensures in rhi when we need to set params for SRVs that have not been allocated yet. - Fixed bug in RHI that was returning FGPUFenceRHIParamRef and so the created fence was immediately freed and boom. Change 4062269 by Shaun.Kime Re-enabling most of the tests. #test n/a Change 4062414 by tim.gautier QAGame: Updated QA-Effects for mobile compatibility - Removed Atmospheric Fog (not supported on Mobile) - Added SkySphere (resolved lighting issues) Change 4062651 by Shaun.Kime Saving with versions Change 4062673 by Shaun.Kime Making emitter names without spaces so that they can be blacklisted if need be Change 4062686 by Shaun.Kime Getting ready for CI for 4.20 Change 4062687 by Shaun.Kime Updating mac images Change 4063298 by Shaun.Kime Disabling collision test gpu for now. Need to investigate what broke it tomorrow. #tests CollisionBounceGPU Change 4063373 by Shaun.Kime Blacklisting mac tests that still need work Change 4063434 by Shaun.Kime Cleaning out previous debug code #tests n/a Change 4063618 by Yannick.Lange Fix dragging an input pin to the add pin of an if node #jira UE-58600 Change 4063847 by Frank.Fella Niagara - Rename RibbonSortKey to RibbonLinkOrder, change it from an int32 to a float, and disable uv age offset when using link order instead of normalized age to order particles in the ribbon. This should fix the issues preventing beams from being implemented nicely. #tests Auto-tests Change 4064150 by tim.gautier QAGame: Removing floating NewWidgetBP from /Content Change 4064237 by Shaun.Kime Disabling the level sequence test for now Change 4064902 by Shaun.Kime Fixing compile errors on linux editor build #jira UE-58620 #tests n/a Change 4065167 by tim.gautier QAGame: Submitting temporary update to TM-ShaderModels, adding Niagara station Change 4065400 by tim.gautier QAGame: Submitting updated (temp) TM-ShaderModels. Set NewNiagaraEmitter to Local Space by default Change 4065540 by Frank.Fella Niagara - Temporarily disable the module dependencies until they can be fixed. Change 4065570 by Shaun.Kime Fixing linux build #tests n/a #jira UE-58979 Change 4066753 by Shaun.Kime Updating custom version after previous change to shader includes #tests autotests pass Change 4067981 by Frank.Fella Niagara - Fix potential null dereference found by CIS #jira UE-59013 Change 4067998 by Shaun.Kime Nullpointer checks on shutdown #jira UE-59000 Change 4068104 by Frank.Fella Niagara - Change the prefix for the previous parameter values from PREV__ to PREV_ since the cross compiler reserves all symbols with double underscores for opengl. Change 4068118 by Frank.Fella Niagara - Fix an open GL crash where we weren't passing the correct buffer index when setting parameters for compute shaders. Change 4069299 by Olaf.Piesche Async GPU readback/update mobile platform fixes CPU particles should work on Android #jira UE-58986 Change 4069603 by Shaun.Kime Making it possible to see the debug output if the console variables are set for shaders. #tests auto-tests pass Change 4069628 by Shaun.Kime OpenGL is very picky about shutting down its texture buffers. We were improperly holding onto static resources and leaking OpenGLShaderResourceViews until module shutdown. Unfortunately, this is *after* the renderer has been shut down and the corresponding OpenGL managers have been deleted, causing us to call into deleted memory. By making several classes FRendererResources, we now register at the appropriate times. In several cases, since the buffers are special purpose fallbacks I moved them into helper locations that are build on demand. Removed FNiagaraVertexFactoryBase::DummyBuffer Created FNiagaraDummyRWBufferInt and FNiagaraDummyRWBufferFloat so that I could wrap several dummy RW buffers in RendererResources and TGlobalResource. Removed NiagaraEmitterInstanceBatcher::DummyWriteIndexBuffer #tests all auto-tests pass on PC and OpenGL and we can open and close OpenGL after using Niagara assets #jira UE-59000 Change 4069646 by Shaun.Kime Disabling Niagara component activation on Switch. This is an attempt to bypass a crash after the assets have been loaded on Switch. #tests auto-tests on PC still pass #jira UE-59048 Change 4069660 by Shaun.Kime Updated Niagara version #tests Auto tests pass Change 4069714 by Shaun.Kime Fixing Olaf's checkin prior adding offset to the base readback call #tests autotests pc pass Change 4070785 by Olaf.Piesche Make RWBuffer available on Metal, Vulkan, and ES3.1 with SRVs Change 4070888 by Olaf.Piesche #jira UE-57657 Reenable ribbon custom facing mode Change 4071570 by Shaun.Kime Removing thread pool size log item as it comes up thousands of times in a cook and is purely for debugging. #tests n/a Change 4071926 by Shaun.Kime Disabling Olaf's change from earlier in the day as it doesn't work on PS4. #tests Ribbon test now works again Change 4073700 by Shaun.Kime Fixing compiler warning about float4 being used as a float. #tests pc auto tests pass #jira UE-59157 [CL 4075457 by Shaun Kime in Main branch]
2018-05-16 12:53:39 -04:00
if (SharedContextState.Textures && SharedContextState.Textures[SamplerIndex].Resource == Resource)
{
SharedContextState.Textures[SamplerIndex].Target = GL_NONE;
SharedContextState.Textures[SamplerIndex].Resource = 0;
}
Copying //UE4/Dev-Niagara to //UE4/Dev-Main (Source: //UE4/Dev-Niagara @ 4074996) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3853627 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse VectorVM #tests non-gpu auto tests pass Change 3853628 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Runtime #tests all non-gpu auto tests pass Change 3853629 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Shaders #tests all non-gpu auto tests pass Change 3853630 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Plugins\FX #tests all non-gpu auto tests pass Change 3853631 by Shaun.Kime Jonathan's material function from Orion\DevNiagara #tests all non-gpu auto tests pass Change 3853633 by Shaun.Kime Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse EngineTest #tests all non-gpu auto tests pass Change 3853911 by Shaun.Kime GPU rendering now works #tests GPU tests now pass Change 3854179 by Shaun.Kime Removing dead system #tests now just with a warning Change 3854731 by Shaun.Kime Checkpointing current work #tests n/a Change 3855080 by Shaun.Kime Fixing not all control paths return a value error #tests n/a Change 3856185 by Bradut.Palas MultiStack with pinning support. #jira UE-53459 #tests none Change 3856615 by Shaun.Kime Preventing a null pointer dereference when copying unallocated data #tests auto tests pass Change 3856622 by Shaun.Kime Getting rid of the bogus get alias method #tests auto tests pass Change 3856644 by Shaun.Kime Adding the ability to query the number of filtered triangles, index those triangles directly, and compute the position, velocity, UV, and NBT of a triangle. #tests all auto tests now pass Change 3856645 by Shaun.Kime Added several new auto tests and tweaked existing ones. + PerParticleRandom still had some randomness in it + UserColorCurve has a user color curve defined in 3 different components referencing the same system + BasicSkinnedEmitter has 4 skinning sub-tests, attached as a subcomponent, referencing a world skeletal mesh, using a material filter, and using a bone filter + added a skinning module that spawns based off exec index and a data interface that queries the number of triangles on a skeletal mesh. #tests auto tests pass Change 3856675 by Shaun.Kime Fixing crash on delete of an emitter #tests removed one and multiple emitters from active multi-emitter. No crash #jira UE-54378 Change 3860613 by jonathan.lindquist New dynamic input Change 3862549 by Shaun.Kime Missing last known good images Change 3864525 by Simon.Tovey Fix for vm compiler crash when using structs as constants. #tests No longer crashes. Change 3864729 by Frank.Fella Sequencer - Fixed a few places which were modifying sequencer data, but not calling the NotifySequencerDataChanged. Change 3864737 by Frank.Fella Niagara - Fix the timeline in the niagara editor plus other fixes. + Turned on looping in the timeline by default. + Added simulation options to control playback in the editor, including turning off auto-play, disabling reset on change, and disabling resimulation when changing while paused. + Added a buttons to the timeline for each renderer an emitter has which shows a renderer specific icon and will allow navigation directly to the renderer with future stack changes. + Fixed issues in the emitter life cycle and spawn rate modules which were preventing delay and looping from working consistently. (includes auto-test) + Added top level metadata for modules. + Added the ability to add metadata to a module and it's inputs to allow it to be edited directly using timed sections in the timeline. Currently configured for the emitter life cycle module. + Changed the way the "MaxSimTime" on niagara component works so that it now represents the maximum frame time which should be used when seeking the component to the desired age. This previously was the maximum amount of simulation time to run which would prevent simple effects from simulating quickly, and would also allow more complicated effects to hang the UI while seeking. + Changed the behavior of niagara component when seeking to desired age so that it always uses the exact specified seek delta instead of trying to seek to the exact desired age. + Fixed the component so that systems which are seeking to the desired age in the editor no longer draw in fast forward mode. + Changed the default playback range for effects in the timeline from 1000 seconds to 10 seconds, and fixed the timeline so that the playback range is serialized into the asset which will persist the setting across loads. + Fixed scrubbing in the timeline so that it doesn't immediately reset when scrubbing backwards. + Added a button to the timeline track for enabling and disabling isolation mode for emitters. + Added a checkbox to the timeline to enabled and disable emitters from the timeline. + Fixed PinToNiagaraVariable so that it asserts if bNeedsValue is specified and it can't actually provide a value. + Create a class called FNiagaraStackFunctionInputBinder which allows binding to an input of a function on a stack so that you can easily set and get the value of the input without having to worry about modifying the graph or rapid iteration parameter sets directly. #tests Existing auto-tests and 1 new test for life cycle changes. Change 3867179 by Frank.Fella Niagara - Turn off GPU simulation for test assets for Shaun. Change 3869201 by Simon.Tovey Bypassing JonLs issue #tests no longer crashes. Change 3869897 by Frank.Fella Niagara - Fix crashes when using the skeletal mesh data interface. NOTE: The change to the actual skeletal mesh data interface code doesn't seem needed, but without it, it crashes with the stomp allocator on. We'll have to investigate further. Change 3870487 by Frank.Fella Niagara - Always generate cached skin data immediately, and make sure we're not indexing triangles that don't exist. This is a temporary fix to avoid a crash when changing the skeletal mesh source on an effect in the level from the details panel. Change 3877378 by Frank.Fella Niagara - Update the burst and lifecycle modules with new metadata for incoming timeline changes. Change 3877564 by Frank.Fella Sequencer - Fix a few more places which were modifying sequencer data without calling NotifyMovieSceneDataChanged. Change 3877565 by Frank.Fella Niagara - Remove old unused burst code from some runtime classes. Change 3877567 by Frank.Fella Niagara - Add support for keying bursts on the timeline which is configured using script metadata. Change 3877699 by Frank.Fella Niagara - Fix a crash in the new timeline code for when you have bursts, but you have inputs on the emitter lifecycle bound, also set lower bound of view range of the timeline to be -.1 so that you can more easily interact with keys at 0. Change 3877715 by Frank.Fella Sequencer - Update the change type when pasting keys from the clipboard from Unknown to TrackValueChanged to avoid unnecessary work. From code review on last change. Change 3879285 by Simon.Tovey A couple of fixes for using struct constants #tests Jon's case now compiles and works correctly. Change 3879378 by Frank.Fella Niagara - Fix a few spots where recursive graph traversal was visiting nodes multiple times because of diamonds in the pin connections. This reduces a terrible hang in UNiagaraScriptSource::InitializeNewRapidIterationParameters from 5 minutes to 5 seconds but there are futher issues to investigate becasue even 5 seconds it too long. Change 3879858 by Shaun.Kime Moved the VM script compilation to the DDC in order to facilitate better team compilation behavior. Significant changes to the translator and overall compile workflow to make the data behave better for a future multi-threaded compilation path. In order to know when to compile, a key is generated that uses the compile id's of the graphs that influence the compilation of our node. In this way, if an end user goes and edits a function or module and checks in, the overall compile id will not match b/c that function is in the dependency list of a system downstream. The system will then know to recompile. However, everyone else on the team will generate the same key because the asset in question was checked in with its local compile id already changed. Additionally, we now employ change tracking on traversals from a node graph. These traversals walk through all the nodes leading to a given output node and see if they've been altered. If they have, a new compile id is generated. If not, the old compile id is used. This also means that if you edit a particle update section in the stack, the emitter section won't force the system to recompile. GPU scripts now have their own script slot rather than riding alongside particle spawn scripts. This allows us to address them independently in the translator and put them in the DDC as well. Once the text is generated, we then go back out to the DDC to generate the shader associated. Known issues: + Emitters are sometimes marked dirty on open + Nodes connected to event writes aren't part of the hashing + DataInterface signature changes don't dirty the compiles + Struct changes don't dirty the compiles + On system loading, we go out to the DDC instead of using existing scripts, which is slower.. #tests all auto-tests pass, additional tests run to validate proper behavior Change 3879859 by Shaun.Kime Content update post DDC change Change 3879862 by Shaun.Kime Niagara plugin content to ddc Change 3879958 by Frank.Fella Niagara - Actually fix the bad recursion in this function by using the existing traversal method. Change 3881727 by Damien.Pernuit Niagara - Houdini - Created a separate plug-in for the Houdini CSV Data Interface. Change 3881877 by Simon.Tovey Fix for mac compile issue Change 3882773 by Simon.Tovey Actual fix for Mike Change 3882822 by Shaun.Kime Rather than throw a check, I instead emit an error when we can't match up a data interface and instantiate a CDO version. Not perfect, but this will let you recompile. #tests allows me to open jonathan's file Change 3883538 by Shaun.Kime Moving particle-level scripts to compile with the emitter named Emitter in their internal scripts. This simplifies the dependencies quite a bit, but causes some complexity on the wiring side (most of which we were already doing anyway). Getting rid of some allocations in translation (still more to go). Fixed some of the logic for emitters that had modules of the same name to now properly concatenate. Compile version bumped, so all scripts will be forced to recompile. Not saving this into the test files for now, as I expect this to happen a bit for the near term. #tests all auto-tests pass, creating a new emitter and system on PC works Change 3883552 by Shaun.Kime Fixing renaming to work properly now. It just invalidates the system script compile id's, forcing it to auto-compile. #tests auto-tests pass Change 3884722 by Bradut.Palas Added searchbar with basic name search for Niagara stack #tests none #jira UE-53469 Change 3884793 by Shaun.Kime Adding pragma once #tests no longer complains about duplicate definition Change 3885629 by Wyeth.Johnson Setting up a transient meshrotation framework pre-integration Change 3887440 by Wyeth.Johnson Custom HLSL failure for Shaun Change 3888911 by Bradut.Palas stack search box now has a minimum width of 300 pixels #tests none Change 3890843 by Shaun.Kime Creating a Niagara quaternion type. #tests created in editor, saw default was correct, carried through to VM runtime through attribute viewer Change 3890849 by Shaun.Kime Porting over 4.19 fix to Dev-Niagara #tests allows creation of valid scripts even when ini is cleared. Change 3891088 by Frank.Fella Sequencer - When getting selected tracks for the external selection api, include tracks if any of their child nodes are selected. This matches the behavior object guid external selection. Change 3891114 by Bradut.Palas Fixing crash that sometimes happens if a stack tree changes while a stack search is active #tests none Change 3891131 by Frank.Fella Sequencer - Move section headers for bool, int, vector, and color to the public directory so they can be used by the niagara level sequence integration. Change 3891165 by Wyeth.Johnson error for shaun Change 3891354 by Shaun.Kime Adding Quat struct to more locations. Now treated like hlsl float4. #tests EulerToQuaternion now compiles Change 3891463 by Bradut.Palas Fix crash that sometimes happens when deleting module and hitting Ctrl-Z to undo (the condition for removing the listeners from the rootentry should not be tied to the validity of weak pointers for system and emitter, because sometimes they are out of sync when changing the graph) #tests none Change 3891641 by Wyeth.Johnson resave node Change 3893143 by Shaun.Kime Fixing issue where you try to bind a vertex color sampler to a mesh without it. We failthe binding rather than crash due to a check later. Also fixed up error logging to only mention the one that failed. #tests can open NiagaraSystem'/Game/FX/SkeletalMeshDissolve/EmittersAndSystems/FightSceneDissolve.FightSceneDissolve' with an error.. Change 3893528 by Bradut.Palas fix another crash when search results are invalidated during search #tests none Change 3893830 by Shaun.Kime Fix for copy & paste of comment boxes #tests can now copy and paste comment boxes Change 3894012 by Bradut.Palas no longer executing search tick if the rootentry is null #tests none Change 3894828 by Frank.Fella Niagara - Runtime changes to support sequencer animation + Reset the simulation when force solo is changed on the component. + Invalidate the render data and clear the buffers when resetting to avoid previously rendered particles from drawing. + Automatically sync the override parameters in the component when the source assets exposed parameters change and removed forced syncing from various places. + Remove lots of refresh code from the niagara component details which should not be neccessary anymore. #TESTS Ran autotests, tested through the UI while building the sequencer tests asests. Change 3894832 by Frank.Fella Niagara - Level sequence support for spawning and animating system life cycle and select user parameter types. #Tests Ran existing tests and added a new test to verify added functionality. Change 3896944 by Bradut.Palas safeguard entries with no search items (it actually can be null) #tests none Change 3896948 by Bradut.Palas Fix assert when dereferencing source array (no need for a raw pointer to the array since it's initialized with the content anyway) #tests none Change 3896950 by Bradut.Palas fix compile error with previous commit #tests none Change 3897698 by Frank.Fella Niagara - Fix some safety issues with parameter initialization on the niagara component. + Kill the current system if we synchronize parameters to avoid issues with data interface lifetime. + Always sync parameters when the asset is set to prevent missing data interfaces in the override list. + Add an enum to control how data interface parameters are handled when calling CopyParametersTo. + When the system instance is copying the asset parameters, have it copy data interfaces by reference so that it's not creating data interfaces copies which will be deleted at the next garbage collection. #Tests Auto-tests, also doesn't crash anymore when opeining Jonathan's disolve effect and then opening a level. Change 3897953 by Frank.Fella Niagara - Remove some namespace restrictions from the code that generates the available parameters to read from in the stack UI since it was preventing the use of custom namespaces in modules and it was not clear what issue it was solving since we already prevent scripts from addressing parameters from lower level scripts. Also move user parameters to their own menu section. #Tests Custom namespaces are usable again in the stack. Change 3898926 by Bradut.Palas Fix for crash caused by garbage collection and async search #jira UE-55284 (Stack search doesn't work on collapsed entries) now searching through unfiltered children, will need extra fixes on the stack to eliminate "ghost" results" Both are still under code review, submitting because they are simple to rollback and harmless to other features. #tests none Change 3899069 by Shaun.Kime Parallel compilation Major changes: Rather than a custom streaming version that we know influences a rebuild, I'm moving away to a guid that you need to regenerate if you change the compiler in any meaningful way needed for multiple reasons, 1) if two people are making changes to the compiler, having something other than a guid as the value makes the content of the ddc ambiguous 2) when iterating I often need to make multiple changes to get to a working final result, bumping the version number each time that happens gets old fast We fully clone the input graph to do the compile in the background. While the translation step is not a huge amount of time, it keeps the main thread responsive. We currently have a big critsec around the crosscompiler to bytecode as it isn't threadsafe. Future changes will push this to the ShaderCompilerWorker. #tests all tests pass as well as stress tests around saving while compilng, long compile times, etc. Change 3899071 by Shaun.Kime Fixing the availability flags for system and emitter scripts. #tests all auto tests pass Change 3899077 by Shaun.Kime Fixing assets to have their wait on compile finished checkbox checked in the editor for testing #tests n/a Change 3899114 by Wyeth.Johnson Random bool custom hlsl node Change 3899184 by Bradut.Palas implemented categories for module inputs (now inputs can be assigned a category in the module editor and they will be grouped by those categories in the Niagara stack) #tests none Change 3899329 by Bradut.Palas fix broken commit by adding missing new files NiagaraStackInputCategory.cpp and .h #tests none Change 3899439 by Yannick.Lange Niagara reroute node. Change 3899516 by Shaun.Kime Official angle conversion modules. #tests made a local test emitter that converted back and forth between angles. Results were correct. Change 3900193 by Shaun.Kime Fixing build #tests now compiles Change 3900474 by Shaun.Kime Fixes to help Mac compile #tests n/a Change 3901131 by Simon.Tovey Warmup feature. CPU Sim only. Also has ability to advance simulation by tick count or seconds via BP/C++. Includes some engine tests. #tests editor + autotests Change 3901455 by Frank.Fella Niagara - Add WITH_EDITORONLY_DATA to prevent non-editor compile failures. Change 3902477 by Frank.Fella Niagara - Fix FNiagaraEditorTypeUtilities to be a thread safe TSharedFromThis since it's always created with a thread safe shared pointer, also fix up issues related to this change. Fixes a crash which occurrs when it's the target object of a delegate binding. #Tests adding a curve data interface to a parameter collection no longer crashes. #jira UE-55403 Change 3903478 by Shaun.Kime No longer doing the check if compiling on load is enabled as this always forces different change ids' #tests n/a Change 3903783 by Shaun.Kime Trimming down excess log spew #tests auto-tests pass Change 3905753 by Shaun.Kime Made Sine(Degrees), Sine(Radians), and Sine, and the variants thereof for trig functions. #tests n/a Change 3905759 by Shaun.Kime Auto tests for mesh orientation #tests these now pass Change 3905762 by Shaun.Kime These files needed to be resaved for some reason to keep passing. Change 3906727 by Bradut.Palas Curve UX improvements #jira UE-55134 #tests none Change 3908177 by Shaun.Kime Fixing build due to typo #tests now compiles Change 3908199 by Shaun.Kime Trying to fix compilation when destroying objects. We cannot safely attach anything beneath us at this point ,we just need to clear out the queues. #tests normal work day-to-day Change 3908201 by Shaun.Kime Working to fix crashes where the component was destroyed out from underneath us due to PIE shutting down and we have a Niagara item editable in Blueprint or world editor. #tests n/a Change 3908985 by Bradut.Palas Renaming ColorCurveAsset to CurveAsset to better reflect the actual usage of the variable (fixing copy-paste issue) #tests none Change 3909222 by Yannick.Lange Niagara graph connection colors Change 3909436 by Bradut.Palas fix crash in curve ux when importing a linear curve (curve of floats) #tests none Change 3909561 by Bradut.Palas Updating LUT before sending NotifyPostChange when editing curves inline (so that LUT will not go out of sync) #tests none Change 3910010 by Yannick.Lange Use new Niagara Actor icon Change 3910191 by Yannick.Lange Fix viewport widget showing up in the viewport when pressing W, E or R. #jira UE-55142 Change 3910213 by Frank.Fella PropertyEditor - PropertyRowGenerator - Added features and fixes to support integration into niagara's stack view. + Added a method to get filter/search strings for an IDetailTreeNode to support external searching and filtering. + Added a delegate to the layout builder for when one of it's owned nodes has it's visibility forcibly changed by a customization. + Changed the filtering so nodes are generated for properties marked as advanced. + Pass the notify hook down to the detail utilities so that change notifications work as expected. + Add layout data for the widgets returned from the IDetailTreeNode to prevent alignment and sizing issues in custom implementations. Change 3910307 by Frank.Fella PropertyEditor - Missed in last checkin. Change 3910509 by Frank.Fella Niagara - Removed nested details panels from the stack and integrate them properly plus other fixes. + Generate rows for nested objects using the details panel property row generator. + Fix the horizontal sizing for niagara parameter editors. + Add an IsValid() method to the base niagara stack entry so that derived classes can know if the associated view models are still valid when processing events. This is a temporary measure to fix a crash in the user parameter UI. + Set stack entries to be expandable by default and delete usages which were setting it to true. + Highlight the active search result with a border since property rows can't highlight text. Change 3911653 by Frank.Fella Niagara - Fix stack spacer sizing. Change 3911667 by Frank.Fella PropertyEditor - Actually fix the notify hook handling in the property row generator. Change 3911896 by Yannick.Lange Niagara function input context menu. Change 3911900 by Yannick.Lange Project setting for not showing comment bubbles. Change 3911996 by Yannick.Lange Niagara fix if node persistent guids for older nodes. The OutputVarGuids are always synced on PostLoad. Change 3912221 by Wyeth.Johnson Renderer Icons for timeline Change 3912608 by Bradut.Palas stack style refactor #jira UE-55399 #tests none Change 3913063 by Wyeth.Johnson Icons for stack added, including new system param png Change 3913618 by Shaun.Kime Fixing two of the most common Illegal call to StaticFindObject() errors while compiling. #tests ran through compilation after changes. Change 3914369 by Bradut.Palas Using new SystemParams.png icon provided by Wyett (instead of the old "Parameters.png") #tests none Change 3914782 by Wyeth.Johnson Adjusting icon for update to not indicate "flow" Change 3915738 by Shaun.Kime Moving away from the generic and super-slow EdGraphSchema ShouldAlwaysPurgeOnModification being true to using the same mechanism we use to invalidate the compile to synchronize nodes. This should be substantially faster. #jira UE-55463 #tests ran through a variety of tests creating and wiring nodes Change 3915739 by Shaun.Kime Assignment nodes need to invalidate the graph for compile. Change 3915741 by Shaun.Kime Making default values more accessible and making it possible to route renderers to use different values than the defaults. #tests n/a Change 3915798 by Frank.Fella SearchBox - Add options to show the number of search results and an option to show a throbber when a search is active. Change 3915966 by Shaun.Kime Changing the default for velocity to 0,0,0 as requested by Wyeth #tests n/a Change 3915982 by Shaun.Kime Making the default text more readable #tests n/a Change 3916237 by Frank.Fella PropertyEditor - Change the DetailCategoryBuilderImpl so that it sets the horizontal alignment to fill for value widgets when generating stand alone widgets so that the behavior in the property row generator matches the behavior of the property grid. Change 3916240 by Frank.Fella Niagara - Should prevent some recent crashes due to stack entry delegates and lifetime. Change 3916261 by Frank.Fella Niagara - Lots of minor stack ui fixes and adjustments + Tweaked padding in a bunch of different places. + Added a dark background behind the stack and stack header to prevent the colors from bleeding together. + Fixed the group text not being white anymore. + Hooked up new features of the search box for showing the search result data and an is searching throbber. + Fixed an issue where the current search result couldn't be interacted with. + Fix some other inconsistencies with searching where you might jump more than one result. + Replace the checkbox for showing curve in the curves tab with an icon based button. (icon is placeholder) Change 3916833 by Shaun.Kime Fixing issue where the system wasn't set to wait for compilation on load, sometimes leading to failures for auto-tests #tests this test now passes when forced to recompile Change 3916846 by Shaun.Kime Missed one system in the scene. #tests n/a Change 3917458 by Shaun.Kime Fixing another potential race condition on the DDC. #tests n/a Change 3918349 by Frank.Fella Niagara - Invalidate the node visuals when reallocating pins. #Jira UE-55698 Change 3918783 by Olaf.Piesche Correct 'temp' to 'Temp' in map set Change 3919262 by Shaun.Kime We weren't properly updating the default values for user data interface components when tweaked in the editor. #tests open skinned mesh auto test system change the preview for the user skinned mesh to be SK_Mannequin_Niagara. It now updates, it didn't before. Change 3919602 by Shaun.Kime Fixing the skeletal mesh to now clamp to the end of the index buffer for safety as well as adding IsValidTriCood. This lets us keep going even when swapping out the skeletal mesh underneath. Tested out isvalidtricoord in the test skinning module. #tests auto tests pass #codereivew simon.tovey Change 3921701 by Yannick.Lange Make Vector2 and Vector4 default blue color to be consistent with blueprints. Change 3922331 by Damien.Pernuit Niagara - Houdini - Added support of CSV File as UAsset (HoudiniCSV) Modified the Data Interface to use the CSV asset instead of the imported buffers from the CSV File Path. Added some new functions to the DI: GetLastParticleIndexAtTime() GetCSVPositionAndTime() GetCSVVectorValue() GetCSVFloatValueByString() Change 3923118 by Simon.Tovey PS4 compile fix. Change 3924934 by Bradut.Palas fix Mac compile issues #jira UE-55426 #tests none Change 3925168 by Bradut.Palas Curve logspamming #jira UE-55593 #tests none The UpdateCompiledDataInterfaces would end up comparing LUTs when copying curves and the source LUT was out of date. Change 3925366 by Frank.Fella Slate - SMenuAnchor - Fix the implementation of "BelowRightAnchor" to align the right edge of the menu with the right edge of the anchor. There aren't any other usages of this in the engine as far as I can tell, hopefully people weren't relying on the broken behavior in a game somwhere. Change 3925423 by Frank.Fella Niagara - Remove the large add buttons from the stack and add smaller add buttons in the group headers. Change 3925877 by Olaf.Piesche New collision modules, separating query, linear and angular impulse; Solve forces and velocity takes care of integrating f->v->p and fA->vA->O; linear impulse module would probably be cleaner by zeroing velocity on collision and calculating a force instead of setting new velocity directly Change 3926582 by Simon.Tovey PS4 compile fix Change 3927401 by Shaun.Kime Fixing events due to added member #tests all tests pass as of 3925423 with this change Change 3927496 by Shaun.Kime Getting auto-tests to run Questions: Why did I have to recompile the GPU tests... something is missing in their key generation? Resaved several files. #tests almost all pass now Change 3927582 by Shaun.Kime Fixing last failing auto test #tests all tests now pass Change 3927924 by Simon.Tovey Chunk level vm parallelism. Any execution processing > batch_size chunks will go wide. The batch size is 4 currently but adjsutable via vm.ParallelChunksPerBatch. VM parallelism can be disabled by vm.Parallel 0 Change 3927990 by Shaun.Kime Submitting redirector Change 3928426 by Frank.Fella Niagara - Always propagate rapid iterations parameters when merging an emitter. Change 3929823 by Frank.Fella Niagara - Fix hlsl generation for system/emitter spawn script so that we read the engine and user parameters from the data set instead of initializing them to 0. #Tests Full recompile + auto-tests Change 3929983 by Simon.Tovey Curve LUT Interpolation + updated test altered by it. Change 3930551 by Frank.Fella Niagara - Fix what looks like a copy/paste error in the SNiagaraSelectedEmitterGraph destructor which was preventing clean removal of delegates and causing a crash. #Tests closing the "Selected Emitter Graph" tab and then changing the selected emitter no longer crashes. Change 3932695 by Damien.Pernuit Niagara - Houdini: Houdini CSV Asset: - Packed vector values in the CSV file are now properly supported (not just for Position/Normal) and can be of any size. - Added support for reimporting Houdini CSV files. - Added an "open in text editor" entry in the context menu. - Improved error/warning logging during the parsing of the file Houdini Niagara Data Interface: - Added GetParticleIndexesToSpawnAtTime(): New helper functions returning the min index, max index and number of particles to be spawned for a given time value. Uses an internal LastSpawnIndex to avoid spawning the same particles twice. - Modified GetLastParticleIndexAtTime(): If the CSV file doesn't have time informations, returns false and set the LastIndex to the last particle If desiredTime is smaller than the first particle, LastIndex will be set to -1 If desiredTime is higher than the last particle in the csv file, LastIndex will be set to the last particle's index Change 3933425 by Shaun.Kime Made the spreadsheet debugger capable of capturing in-world systems as long as they are solo'ed. #tests have been running with it for several days, debugging real-world assets stably Change 3933986 by Frank.Fella Niagara - Fixed a bug with merging where added dynamic inputs which changed names could end up with the wrong rapid iteration parameters. Also fixed an issue where added dynamnic inputs would be renamed when they didn't need to be. #Tests Engine tests and fixes custom repro. Change 3934052 by Frank.Fella Niagara - Added a console command to dump rapid iteration parameters for a system or emitter asset. Change 3934436 by Simon.Tovey Fixes for sprite VF depth test failure issue Change 3934658 by Frank.Fella Niagara - Make disabled modules visually distinct. #Tests General stack use. Change 3935383 by Shaun.Kime Fixing mac compile errors #tests n/a #jira UE-55911 Change 3935420 by Yannick.Lange Niagara parameter UI first version. Change 3935482 by Yannick.Lange Add missing files for parameters Change 3935591 by Shaun.Kime more macos compile #tests na Change 3935637 by Shaun.Kime Reverting to prior behavior #tests na Change 3936541 by Yannick.Lange Remove the merge up menu entry for set variables module items. Change 3936841 by Wyeth.Johnson Bool comparison dynamic input Change 3936895 by Simon.Tovey A few perf improvements and fixes to the SetSolo transfering between solo and batched so all lightning sims can run batched after they're warmded up. Change 3936899 by Simon.Tovey Missed a file Change 3937178 by Krzysztof.Narkowicz Fixed bHasSkipOutputVelocityParameter for shaders without PreviousLocalToWorldMatrix (e.g. particles) #jira UE-50914 Change 3937222 by Yannick.Lange Random event spawn Change 3937292 by Yannick.Lange Fix Adding a new parameter then renaming it the default name deletes the new parameter #jira UE-55994 Change 3938472 by Yannick.Lange Fix new parameters in emitters saving by using the editable emitter. Change 3938474 by Yannick.Lange - Store graphs as weak object pointers in the parameter UI. - Allow right mouse menu on parameters in the system toolkit. - Refresh only the parameter actions when deleting an entry instead of refreshing the graphs aswell. Change 3938525 by Yannick.Lange Fix creating an unique FName every tick for parameterstores by using a FString instead. Change 3938596 by Shaun.Kime Macos compile #tests n/a Change 3939362 by jonathan.lindquist Adding a new Component Spacing input to the debug value functions. This will allow users to make better use of space when debugging values. Change 3939365 by Shaun.Kime Back out changelist 3936895 and 3936899 Leaving in some changes around stats as they should be harmless. These changes were removed b/c they added poor perf to Jonathan's dissolve effect and also caused multiple tests to fail in engine tests. #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939367 by jonathan.lindquist Adding greyscale output Change 3939368 by jonathan.lindquist Changing the pin order Change 3939377 by Shaun.Kime Allows the unnormalized lut table flag to be copied over #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939379 by Yannick.Lange Rename FParameterStore Name to DebugName to prevent loading a FName into a FString with existing assets. Change 3939382 by Shaun.Kime Adding the ability to have a default curve index with a custom switch node. #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939383 by Shaun.Kime Converting existing curves over to using the new default pin #tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me) Change 3939501 by Shaun.Kime Submitting missing files #tests n/a Change 3939580 by Wyeth.Johnson Default curve indexing to three more DIs Change 3940122 by Yannick.Lange Parameters view: - Jump to new parameter added and request rename for new parameter. - Remove adding parameters to the parameterstore when a pin is requested. - Only show make new parameters in the dropdown to add a new parameter. - Use Sections of UI as types instead of int32. Change 3940214 by Bradut.Palas fix crash when rename skeletal mesh user variable #jira UE-55236 #tests none Change 3940215 by Bradut.Palas undo not working in graph editor #jira UE-55466 #tests none Overriding the BreakPinLinks methods to include a transaction Change 3940250 by Bradut.Palas Creating stats tab in module toolkit to show LastOpCount #tests none Change 3940251 by Bradut.Palas #jira UE-55684 create inline menus for stack #tests none Change 3940262 by Simon.Tovey Back out changelist 3939365 with fixes Tests all now pass Change 3940333 by Shaun.Kime Nullptr check #tests n/a Change 3940338 by Krzysztof.Narkowicz Niagara sprite particles - implemented get previous position in order to fix sprite particle motion vectors #jira UE-52865 Change 3940407 by Yannick.Lange Create pin on map get and set node when dragging without recompiling the graph. Change 3940534 by Shaun.Kime Making sure that collision returns defaults of 0 if nothing was found. #tests auto-tests that have been passing still pass Change 3940709 by Simon.Tovey Temp hacks for the skeletal mesh painting issues. Change 3940960 by Yannick.Lange Only build parameter menu once when graphchanged is called multiple times in a frame. Also use the existing metadata from graph to build the parameter menu, because the metadata already looped through all nodes and pins. Change 3941019 by Yannick.Lange Meta data UI refresh next tick to avoid refreshing multiple times a tick. Change 3941853 by Simon.Tovey Adding more dynamic parameters Change 3941957 by Frank.Fella Property Editor - Fix issues with property row generator to support the niagara stack. + Make the detail tree node name accessible through the interface, and fix the implementations for category group and property item. + Add a temporary fix for passing instance customizations from the property row generator to the detail property row through the detail layout builder. This should be unified in a nicer way, but this will work for the time being. Change 3942174 by Frank.Fella Niagara - Stack UI Pass + Advanced rows are not handled properly per item. + Expanded and scroll state is now saved in editor data per asset. + Added a "View Options" drop down for showing all advanced rows, and for showing/hiding outputs. + Added an option to collapse all stack items from the emitter header context menu. + Added support for "Edit Conditions" on module and dymaic inputs which will enable and disabled an input based on the value of another input. This includes showing a checlbox inline for the edit condition toggle input. + Added support for "Visible Conditions" on module and dynamic inputs which will hide and show inputs based on the value of another input. + Removed the pencil icon for locally editable values in the stack. + Fixed issues with invisible search results. It's still possible for a search result to not highlight the text correctly, but the outline never disappears. + Removed pinning for module inputs. + Fixed the event handler properties so that they use the property row generator instead of an embedded details panel. + Unified indent handling across all stack classes. + Unified stack editor data across all stack classes. Change 3942427 by Simon.Tovey Another hack for vertex painting tool Change 3942453 by Simon.Tovey Some more hacks for skel mesh vertex painting until Jurre's rework is ready. Change 3942799 by Yannick.Lange Rebuild metadata, input and output parameters UI next frame instead of on every graph changed call. Change 3942833 by Frank.Fella Niagara - Fix the visibility of the advanced expander item. Change 3942923 by Yannick.Lange Revert using metadata for parameters to looping through pins to find parameters in maps not connected to anything. Temporary fix to remove used parameters if they are found in the graph. Change 3943094 by Wyeth.Johnson Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Location/SphereLocation.uasset to revision 5 Change 3943154 by Wyeth.Johnson Metadata to sphere location module Change 3943256 by Wyeth.Johnson Testing out sweet new metadata control Change 3943374 by Olaf.Piesche Fixing mesh motion blur Change 3943382 by Olaf.Piesche Turning on base pass velocities until I can fix separate vel pass for particles Change 3943471 by Yannick.Lange Emitter view stats only show particles count. Use Niagara.EmitterStatsFormat 0 and 1 to switch between all data and only particle count. Default is 1 to only show particle count. Change 3943497 by Yannick.Lange Paramater map remove FTickableEditorObject and use SWidget::Tick Change 3943589 by Olaf.Piesche -Fix for linear impulse (offset by 1/2*velocity*dt instead to avoid distracting bounciness) -Collision Rest; add after impulse modules to make particles rest if in collision under threshold velocity magnitude Change 3943644 by Olaf.Piesche Turn shader development mode back off Change 3943718 by Olaf.Piesche Fix vertex factories Change 3943776 by Olaf.Piesche Properly calculate old particle position using dt for velocity rendering Change 3943780 by Frank.Fella Niagara - Fix ensure when removing dynamic inputs due to incorrect logic which would have left unused nodes in the graph. Change 3943870 by Yannick.Lange Parameter drag drop window Change 3943994 by Frank.Fella Niagara - Fix some editor settings not saving across sessions. Change 3944056 by Shaun.Kime Updating to replace values reset when Wyeth resaved files. #tests DrawOrderGPU, DrawOrder, and TestDifferentInactiveEmitters now pass Change 3944068 by Simon.Tovey Back out of my changes to vertex painting and replaced with Jurre's fixes. Change 3944174 by Frank.Fella Niagara - Fix stack categories so that they don't freak out when the stack is refreshed, and also remove the uncategorized heading and move uncategorized inputs to the top. Change 3944313 by Shaun.Kime Updated screenshots after motion blur Change 3944321 by Shaun.Kime Fixing error message to be clearer about a disconnected Get node. #tests n/a Change 3944351 by Shaun.Kime Making safe against weak pointers going away. Track error encountered by Jonathan. #tests n/a Change 3944368 by Yannick.Lange Remove automatic adding prefix "particles." when renaming functioninput. Change 3944383 by Shaun.Kime Just adding some more nullptr check #tests n/a Change 3944384 by Shaun.Kime Providing more context for a check that existed previosuly and was encountered by Wyeth today #tests n/a Change 3944872 by Yannick.Lange Remove old material parameter node. Change 3945209 by Shaun.Kime Fixing possible infinite recurson on child array size of zero #tests n/a Change 3945865 by Yannick.Lange Spreadsheet filter for output attributes Change 3946091 by Simon.Tovey Per particle sorting for translucent sprites and meshes Change 3946095 by Simon.Tovey Updated screens for dynamic param tests Change 3946378 by Olaf.Piesche Another sprite motion blur fix Change 3946864 by Shaun.Kime SkinnedMesh per-instance data requires 16 byte alignment due to usage of FMatrix. We were not guaranteeing that in our per-instance data system. We are now enforcing that to be true by aligning all memory size requests. #tests autotests pass Change 3946928 by Wyeth.Johnson Skeletal mesh location metadata. THIS VERSION ALSO CRASHES ON SAVE FYI Change 3946934 by Frank.Fella Niagara - Clean up rapid iteration parameters on compile. #Tests - Fixes the jira below, all auto tests which were currently passing still pass, and GDC effects load and look correct. #jira UE-55932 Change 3946936 by Frank.Fella Niagara - Fix crash when undoing adding a dynami input. Change 3947213 by Simon.Tovey Fix for thread safety in collision data interface. Previously I'd made them thread safe between VM chunks but they already weren't safe between system instances. Change 3947279 by Simon.Tovey Fixed thread safety issue with niagara global dynamic buffer Change 3947788 by Simon.Tovey Fix enum property warnings Change 3947849 by Olaf.Piesche Normalize orientation quats. Safety first. Change 3947877 by Frank.Fella Niagara - Fix a crash when editing meta-data for a module currently open in a system or emitter editor stack. This updates the FNiagaraStackFunctionInputBinder to track the lifetime of the default pin correctly. Change 3948445 by jonathan.lindquist Inverting alpha output Change 3948615 by Olaf.Piesche Don't access data layouts that are invalid because their bindings don't exist Change 3949361 by Yannick.Lange Command to expand all groups and collapse all items of those groups in the stack. Change 3949365 by Yannick.Lange Missing file for change 3949361 Change 3951123 by Simon.Tovey Fix bug with dynamic parameters in Niagara mesh particle VFs Change 3951199 by Simon.Tovey Fix for issues caused by unsafe reads of GT data from RT Change 3951293 by Olaf.Piesche Workaround for jittering particles with collision at rest state; will need to revisit after GDC Change 3951533 by Yannick.Lange Collapse parameter menu by default Change 3952106 by Frank.Fella Niagara - Fix data interface input initialization when inserting modules and dynamic inputs. We now put all inputs into categories in the stack and this code didn't handle that. Change 3954809 by Frank.Fella HoudiniNiagara - Add include to fix CIS incremental build. Change 3954857 by Frank.Fella Niagara - Accept newer versions of 3 automated tests images as they are stable and still look correct for what they are testing. Change 3954935 by Frank.Fella Niagara - Fix a crash in the skeletal mesh sampling info details customization when a mesh has no skeleton. Change 3954969 by Simon.Tovey Compile fix for gpu emitters Change 3955012 by Frank.Fella Niagara - Fix clang and deprecation warnings. Change 3955988 by Olaf.Piesche Fixing collision queries (separating line query trace direction and velocity, so we can look a frame ahead properly); various fixes to the impulse modules; rest module now allows for color change when particles are set to rest. This checkin should stabilize collision dynamics substantially. Change 3956730 by Yannick.Lange Cleanup parameter Change 3957065 by Bradut.Palas enable/disable mechanism for renderers #tests none Change 3957802 by Olaf.Piesche -Removing Velocity parameter from collision query DI, since velocity at query time is known and can just be passed along in temporary parameter; this stops the compiler from falling over in unity builds and also makes the Perform Query function more sane as an actual line check -Put some safeguarding against non-collisions (v.n>0) reported as intersections into the collision query module to avoid instances of particles being pushed through geometry -Updated modules to use the new function signature #tests modular explosion test map, EngineTests Change 3957804 by Olaf.Piesche Updated tests for 3957802 Change 3957859 by Frank.Fella Niagara - Add missing #if to fix some of the nightly build errors. Change 3958065 by Olaf.Piesche Fix GPU sim hlsl for the collision data interface; should make GPU collision bounce test run again Change 3958302 by Olaf.Piesche modified test for sane depth bounds; accepting new results; some changes to hlsl for collision data interface Change 3959007 by Simon.Tovey Further defining the barrier between GT and RT data. Not finished yet, especially for GPU sims but we're heading in the right direction. Change 3960004 by Bradut.Palas QOL change, now committing search text in the stack (pressing enter) will jump to the next occurrence. #tests none Change 3960019 by Frank.Fella Niagara - Preemptively fix up stack related header includes to avoid manual merges. Change 3964217 by Bradut.Palas Fixing compile issue after renderer enable feature(the Isolate features require the WITH_EDITORONLY_DATA preprocessor directive to be enabled) #tests none Change 3964581 by Frank.Fella Niagara - Get things compiling again after merge. Mostly include fixes and commeting out lots of sequencer related stuff that needs to be fixed. Change 3965057 by Frank.Fella Niagara - Fix compile issues in the houdini plugin. Also add the houdini pluging to EngineTest so that it compiles by default when running tests. Change 3965075 by Frank.Fella Niagara - Fix another include issue that was caught on the build machine. Change 3965308 by Frank.Fella Niagara - One more header fix. Should fix the win64 build in CIS. Change 3965313 by Frank.Fella Niagara - Fix in editor playback. The timeline data is still broken. Change 3965482 by Yannick.Lange Stack source taken apart into different files. Change 3965863 by Shaun.Kime Fixes scope level variable definition causing my local build to fail #tests n/a Change 3965866 by Shaun.Kime Crash fix when the module is missing. Now show an error message as well as checking for script validity before calling method on it #tests n/a Change 3968174 by Frank.Fella Niagara - Fix more merge fallout. The emitter/system editor timeline now matches the stack data again. Change 3968183 by Frank.Fella Niagara - Delete commented out include from merge. Change 3972162 by Frank.Fella Niagara - Updated level sequence testing assets. Change 3972880 by Shaun.Kime Merging using DevNiagaraToGDC2018 Allowing disabled modules to still influence parameter maps. #tests n/a Change 3973269 by Shaun.Kime Disabling warning about divide by zero as it is often incorrect #tests n/a Change 3973273 by Shaun.Kime Forcing all three planes to be GPU #tests n/a Change 3973307 by Shaun.Kime Fixing CIS win32 errors #tests n/a Change 3973374 by Shaun.Kime Fixing minor static analysis warnings #tests n/a Change 3976107 by Shaun.Kime Updating multiple files as they have the unversioned file warning #tests auto tests now show green Change 3976114 by Shaun.Kime Taking snapshots after the integration for time control to clear automated tests. Frank was uncertain about the current behavior being correct, but didn't want to hold up integration for that. #jira UE-57117 Change 3976119 by Shaun.Kime Makiing GPU shaders contain the dependencies and the compile id's and other items so that they update properly. #tests auto-tests now pass Change 3976449 by Shaun.Kime Adding additional debugging to logs #tests n/a Change 3977172 by Frank.Fella Niagara - Fix issues with the level sequence integration for niagara caused by the integration from main, and accept the new test image. This code should be updated at some point to use the new channel blending in sequencer. NOTE: There is still a timing issue that is evident in the automated test screen shot due to float timing and rounding issues in niagara, but the sequencer code is functioning correctly. Change 3977362 by Bradut.Palas UE-55601 curve snapping not working in Niagara curve editor #tests none Change 3977363 by Bradut.Palas exposed added external asset for function input so it would appear in context menu in the Niagara stack. #tests none Change 3977368 by Bradut.Palas #jira UE-51052 If you undo an emitter rename we get invalid values The CachedUsageInfo got emptied but it didn't get restored by the undo, sending the system in an endless Compile() loop Added a Modify() call in the UNiagaraScriptSource::InvalidateCachedCompileIds() #tests none Change 3978716 by Shaun.Kime Fixing half of CIS static analysis warnings and localization symbol dupe warnings from Jamie Dale #tests auto tests pass other than known level sequence test Change 3978857 by Shaun.Kime The map SpawnTest niagara actor didn't have its wait for compilation flag set, potentially leading to artifacts. Disabling for now as that didn't resolve the issue. Change 3979594 by Shaun.Kime Potential fix for cook on Orion #tests n/a Change 3979713 by Shaun.Kime Fixing several more CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale #tests n/a Change 3980017 by Shaun.Kime Fixing CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale #tests n/a Change 3981859 by Shaun.Kime Fixing crash in Paragon when the normals buffer was not present during startup with just UI screens. #jira UE-57188 #tests got through to paragon main screen, related auto-tests pass Change 3982685 by Shaun.Kime For some reason, when Lightmass is spinning off workers, the render thread is null, causing us to trigger checks that we shouldn't trigger when killing of system instances. #jira UE-57214 #tests all auto-tests pass Change 3983902 by Simon.Tovey Speculative fixes for mac errors regarding niagara vertex decls. Change 3984023 by Andrew.Rodham Sequencer: No longer upgrade bIsInfinite for section types that do not support open ranges Change 3986727 by Wyeth.Johnson Fixed add velocity from point to work in more situations, not cause errors regardless of stack location, made it more programmable with inputs, and added metadata Change 3988114 by Wyeth.Johnson fixed color and inherit parent vel Change 3989175 by Simon.Tovey Improved VM error reporting. #tests engine tests Change 3995007 by Yannick.Lange Parameter menu in system layout Change 3995192 by Yannick.Lange Fix niagara script details panel search Change 3995291 by Yannick.Lange Parameter menu tooltip fix Change 3997804 by shaun.kime Lookup table is off for this. Keys are 0,0 and 1,1, so you'd expect normalized age as a sampler to just return the same value from lookup. If LUT is disabled, this is true. If LUT is enabled, it isn't, especially the farther one gets from 0. Change 3998124 by Simon.Tovey Fixed Curve LUT generation #tests editor #jira UE-57604 Change 3998286 by Wyeth.Johnson Fixed normalized execution index to, you know, work. Change 4000324 by Shaun.Kime Replacing a thread-safety issue where we get an enum on an as-needed basis. This was causing crashes in cooking as you cannot find from the global table while serializing. #tests have not gotten the crash since Change 4000428 by Bradut.Palas UE-55750 focus curve editor when "show" button is pressed UE-55791 user variable curves cannot be shown in the Curve tab These issues were related and touched the same area of code, so I fixed them together. UE-55791 is basically just getting curve data from the system exposed variables too. #tests none Change 4001094 by Frank.Fella Niagara - Fix slowdown in the metadata editor due to delegate rebinding. Change 4001098 by Frank.Fella Niagara - Remove the tool tip from the additional options drop-down for modules since it covers the drop down menu. Change 4001133 by Bradut.Palas Fix curve editor getting focused each time a curve was changed. #jira UE-57708 #tests none Change 4001253 by Frank.Fella PropertyEditor - Fix issues with external root handling. + Fix external nodes not being cleaned up correctly when custom node builders rebuild children. + Fix expanded state being trampled when processing external nodes due to the expanded nodes list being emptied every time RestoreExpandedItems was called. + Fix performance issues with refreshing during tick by moving all calls to RestoreExpandedItems to UpdateFilteredDetails, and then only calling UpdateFilteredDetails once per tick as needed instead of per root property node and per root external node. Change 4003365 by Shaun.Kime If the physical material has gone away, make sure to set value values. Note that if this data interface is going to go on in parallel to the game thread, we'll need something more sophisticated. #tests Win64 tests pass Change 4003367 by Shaun.Kime Making sure that the system has finished compiling before we begin cooking. #tests n/a Change 4003374 by Frank.Fella Niagara - Fix a crash when adding and removing modules and dynamic inputs with data interfaces. #jira UE-57749 Change 4003696 by Shaun.Kime Getting rid of whitelist, now open on all platforms. #tests n/a Change 4005368 by Shaun.Kime Fixing compile error on Linux #tests n/a Change 4013779 by Shaun.Kime Interpolated spawn on GPU does not yet work but checkpointing work. + Added AdditionalDefines to the VMCompileId, switched interpoalted spawn to use that + Added rough interpolated spawn support to translator by refactoring away from specific calls and hard-coded update/spawn somewhat... could improve for events + Revised shader variables away from Phase0/Phase1 terminology to the true Update/Spawn meaning. Leaving the phase numbers as an implementation detail within the usf. + Added ToString to ParameterStores for debugging + Changed GPU ExecIndex() logic to actually work similar to the VM #tests collision gpu fails Change 4015355 by Simon.Tovey Persistent IDs final. Still need to change the compile ID parts over to use the new additional defines but the core functionality is in. #tests editor + engine tests Change 4018445 by Simon.Tovey Some missing assets Change 4021647 by shaun.kime Moving jonathan's DebugParticleData to Niagara Extras Change 4024809 by Yannick.Lange Parameter map hover text using metadata description. Change 4025042 by Wyeth.Johnson Dogfooding the skeletal Mesh location module w/ comments, reroute pins, map gets and sets, metadata, tooltips, etc. Change 4025236 by Shaun.Kime Working on getting interpolated spawning working. Submitting to get assistance from Simon. ... PLEASE DON'T SYNC UNLESS YOU'VE SPOKEN TO ME... #tests collision test on GPU is better, but not yet right.. ribbon id emitter is ensuring on LUT table generation Change 4025372 by Shaun.Kime Making the debug particle data stay the same size as the base particle for easier debugging. #tests n/a Change 4025701 by Shaun.Kime Debug asset for Simon #tests n/a Change 4027865 by Shaun.Kime Fixing parameter map stores to properly handle reset. Previously was leaving around padding info from previous version of the script which could be totally wrong. #tests now don't crash Change 4029638 by Wyeth.Johnson Refactor Skeletal mesh location module to test some ideas on coding standards and shake out workflow issues Change 4030135 by Shaun.Kime Interpolated spawning now works on the GPU. #tests collision gpu has stray collisions and the GenerateLocationEvent was recently updated that broke . will fix in a later update Change 4030197 by Wyeth.Johnson Refactor static mesh location module Change 4033437 by Simon.Tovey Adding a few simple new functions for direct access to vertex positions for cannabis.cod3r. Change 4033937 by Shaun.Kime Setting the wait for compilation flag #tests now pass consistently Change 4034391 by Shaun.Kime Created a parameter map default node to start default call chains.Updated standard modules and dynamic inputs. #tests all previoulsy passing tests pass Change 4035002 by Shaun.Kime Updated to work with latest main integration #tests n/a Change 4035523 by Wyeth.Johnson Refactor Cone stuff to coding standards, replace some things with functions Change 4035672 by Shaun.Kime Fixing build warnings #tests n/a Change 4036887 by Wyeth.Johnson Some metadata, some optimization, some additional refactoring and swapping in functions. Straight Dogfoodin' Change 4037132 by Shaun.Kime Adding GPU test versions of several assets Change 4037241 by Wyeth.Johnson Optimizing, metadata, and making some coding standards changes Change 4037436 by Wyeth.Johnson Fixing a pointless module to make it... pointful? Change 4037629 by Frank.Fella Niagara - Fix issues with data interfaces as parameters + Collect data interface reads and writes from parameter maps during compilation so they can be hooked up a runtime. + Add new runtime parameter stores for systems and emitters at runtime which bind the exposed data interfaces into the execution contexts. + Fix the editor code which updates the compiled data interfaces so that it updates the correct ones regardless of where they are defined. + Fix an issue where failed compiles weren't being propgated to the UI correctly. Change 4037832 by Shaun.Kime Properly handling nullptr references #tests deleting a module from the stack after it was recently refreshed now doesn't crash Change 4037917 by Wyeth.Johnson Fix add velocity from point (needed begin defaults), reorg, comment and metadata Change 4038250 by Wyeth.Johnson Big refactor of spawn per unit Change 4038665 by Shaun.Kime Events now take parameter map in/out pins #tests now the events auto-tests should pass Change 4038723 by Shaun.Kime Now renderers can say if they are compatible with the SimTarget mode. #tests now changing to GPU doesn't crash a light renderer Change 4038731 by Shaun.Kime Missing file from prior checkin #tests n/a Change 4038742 by Shaun.Kime Attempting to fix editor build, which is unfortunately fine on my machine #tests n/a Change 4040069 by Wyeth.Johnson Refactor of Event Generator and Event Receiver, new coding standards for events Change 4040377 by Wyeth.Johnson Refactor the solver to adhere to coding standards (and remove some reroute pins, sorry Shaun) Change 4040639 by Wyeth.Johnson Vector Noise Force refactor and optimization Change 4041031 by Shaun.Kime Making the modulo functions on the gpu return a value. #tests passes cook on PS4 and gets past this in compile on Mac Change 4041254 by Wyeth.Johnson Refactor Point Attraction, change some behavior also Change 4041999 by Yannick.Lange Parameters refactor: - Find parameters and references in graph - Renaming parameters, includes renaming all pins in the graph - Removing parameters - Find metadata when finding parameters, so we are not looping through all nodes/pins twice - Parameters list supports multiple emitters in systems Change 4042058 by Simon.Tovey Refactored GPU parameters. - Shader now uses the DI default object to create the correct parameters struct. All parameter and buffer management now being handled inside this parameter struct. This allows far more encapsulated code for each DI. Allows us to reamove the GPU buffers from and the Scene texture refs that were in the base DataInterface class. Simplifies the API and process of implementing DI's on the GPU considerably. - Removed all existing GPU buffer support code and usage. All DIs now use a parameters struct. - Have moved tons of curve code into the base class, simplifying the child implementation classes. - Implemented GPU curve interpolation. - Removed bAllowUnnormalizedLUT. Confusing and now unnessessary. All curves do this by default. - Modified FNiagaraShaderMapId to use the latest FNiagaraCustomVersion::LatestScriptCompileVersion and bumped it. - Created NiagaraCore module and moved a few classes into it. Anything needed by both the shaders and runtime should be here. - Refactored DI hierarchy to base from a new UNiagaraDataInterfaceBase which is inside NiagaraCore. - Removed constness from many UStruct/UEnum/UClass pointers. Technically we don't ever need these to be non const so initialy coded as const. Some existing engine code however requires these be non const so had to propagate that back through our code. Change 4043427 by jonathan.lindquist Submitting a material function that will allow users to reproduce mesh surfaces. Change 4043448 by Olaf.Piesche Async GPU buffer readbacks and updates Change 4043679 by Shaun.Kime Fixing Mac compile issue. Not sure if correct, but unused code so good for now. #tests n/a Change 4044000 by Simon.Tovey static analysis fix Change 4044001 by Simon.Tovey Fix for gpu scripts with multiple curves. Change 4044124 by Yannick.Lange Fix persistent guid for parameter map set pins. Change 4044230 by Simon.Tovey I didn't forget to check these in. Nothing to see here.... *whistling*.... Change 4044584 by Bradut.Palas Module dependency properties are now available (to be used by technical artists before the functionality is done and submitted) #jira UE-58200 #tests none Change 4044663 by Wyeth.Johnson Jitter position needed begin defaults, got a refactor which I was in there Change 4044894 by Yannick.Lange Rename parameter and all referenced pin when renaming a pin on a map set or get. Also fixes renaming a pin not deleting the old metadata. Change 4045383 by Wyeth.Johnson Fix up and comment/tooltip on mesh rotation, look at, and rot rate Change 4045488 by Wyeth.Johnson Update Age reorg just for readability Change 4045799 by Shaun.Kime Reworking test art to get rid of known issues and put known issues into their own assets. Change 4046328 by Wyeth.Johnson Some optimizations, options to polar/cartesian, starting in on Dynamic Inputs Change 4046728 by Shaun.Kime Fixed error where we were writing to Loca.Module.EventVelocity instead of Local.Module.EventVelocity. Change 4047423 by Frank.Fella Niagara - Fix post load code for the assignment node which was not conditionally post loading another object it was using which now has a custom post load. This resulted in strange pin renaming which was breaking merging and automated tests. Change 4047425 by Frank.Fella Niagara - Make the merge manager a little more resistant to malformed stacks. Change 4047788 by Bradut.Palas #jira UE-57902 Module input sort priority #tests none Change 4048063 by Yannick.Lange Fix don't show context menu on parameter view categories. #jira UE-57196 Change 4048068 by Yannick.Lange Fix create system from emitter #jira UE-57186 Change 4048132 by Yannick.Lange Add missing includes. Change 4048269 by Shaun.Kime Removing ensure that we log later #tests n/a Change 4048273 by Shaun.Kime Really doing it this time #tests n/a Change 4048595 by Yannick.Lange Fix niagara if node input disconnect on output pin rename. #jira UE-58095 Change 4049640 by Simon.Tovey Daft mistake in curve hlsl gen. Change 4050270 by jonathan.lindquist Submitting a module that lerps each of a particle system's intrinsic particle values. Each variable set utilizes an opt-in bool. Change 4050282 by jonathan.lindquist Submitting newly formated Mesh Reproduction modules. They now contain documentation, be fully generalized and meet our updated coding standards. Change 4050566 by Olaf.Piesche -More fixes and changes for async gpu buffer readback -removed more CPU intervention; spawning and death now happen largely without CPU direction, other than determining the number of particles to spawn -Added piping number of vert indices per instance from the renderer down to the GPU context and CS; as a result, GPU simulated mesh emitters are working again; this will need a bit of additional work to handle multiple renderers (will need multiple DrawIndirect parameter buffers reflecting the different renderers) -General cleanup and prettification Change 4050907 by Frank.Fella Niagara - Add support for default dynamic inputs on modules and dynamic inputs. Change 4051436 by Simon.Tovey Forcing a refresh of curve LUTs on assets with old versions. Change 4051463 by Simon.Tovey Compile fix Change 4051900 by Frank.Fella Niagara - Fix linux warning. Change 4052253 by Olaf.Piesche GPU sim interpolated spawn fixes - Look Ma, no gaps! Change 4052321 by Frank.Fella Niagara - Enable the level sequence test. Change 4052353 by Shaun.Kime Renamed variable after Wyeth's change #tests MeshOrientationTests now pass Change 4052627 by jonathan.lindquist Submitting a new spline function. Change 4052648 by Shaun.Kime PS4 development builds don't seem to be able to remove generated data for structs like this even though it is in a non-editor build. #tests n/a Change 4052661 by Olaf.Piesche -Avoid branching on every OutputData operation by allocating a scratch instance at the buffer end and setting the default index from AcquireIndex to that. -bit of shader code cleanup Change 4052706 by jonathan.lindquist Adding a module that supports a single segment spline Change 4052712 by jonathan.lindquist Adding a below threshold output to the direction and length safe function Change 4052786 by jonathan.lindquist Submitting a new height lerp function Change 4053126 by jonathan.lindquist Submiting a function that calculates a triangle's surface area. Change 4053132 by jonathan.lindquist Changing the category to geometry Change 4053141 by jonathan.lindquist Moving the asset back to a generic math category Change 4053166 by jonathan.lindquist Submitting a new threshold function that removes threshold downtime. Change 4053564 by Shaun.Kime Added staging to ini as requested by cook #tests n/a Change 4053619 by Shaun.Kime Fixing defaults #tests used by Orion art Change 4054171 by Yannick.Lange Remove bold font for parameters. Change 4054183 by Yannick.Lange Syncing system exposed parameters and parameters list. Includes adding, removing and renaming parameters. Change 4054313 by Wyeth.Johnson Refactor spawnrate to (mostly, other than a bug) conform to coding standards, and set begin defaults on a few things. Change 4054840 by Shaun.Kime Fixing redundant branch for CI #tests n/a Change 4055492 by Shaun.Kime Updating compile version since I changed the usf #tests n/a Change 4055550 by Shaun.Kime Disabling rendering of middle module as it differs between machines. #tests LevelSequenceTestsNiagara now passes Change 4056256 by Shaun.Kime Disabling the ensure and turning into log statements for curve copying #tests n/a Change 4056287 by Shaun.Kime Now using GLobalCompileShader. There are still issues with cooking as there is sometimes a runtime streaming error that we didn't read in the correct amount of data. I think the logic for when/if we stream out the compiled shader might still need TLC. #tests n/a Change 4056381 by jonathan.lindquist A new quat to angle axis and angle axis to quat conversion mat function Change 4056513 by Frank.Fella Niagara - Fix crashes for default data interfaces where the pin default was empty or the data interface wasn't initialized. #jira UE-58789 Change 4056734 by Frank.Fella Niagara - Drag and drop for modules. Change 4056880 by Simon.Tovey Replacing engine tests shots for RibbonID test. Some slight changes introduced, likely curve or recent module changes. Change 4056894 by Bradut.Palas UNiagaraStackEntry Error refactoring + Module dependency warning feature. #jira UE-58199, UE-58200 #tests none Change 4056916 by Bradut.Palas Add missing files from shelved changelist. #tests none Change 4056937 by Bradut.Palas #jira UE-54678 The skeletal mesh customisation did not update when the mesh was changed through the data interface or mesh editor #tests none Change 4057014 by Frank.Fella Niagara - Fix cis initializer order warning. Change 4057542 by Bradut.Palas #jira UE-58554 Remove Refresh UI button from Niagara script editor #jira UE-58555 Remove Numeric Output Type Selection Mode from Niagara script UI #tests none Change 4057702 by Bradut.Palas The stack editor priority in the variable metadata now properly has zero as default value. #jira UE-58740 Change 4057758 by Frank.Fella Niagara - Fix text wrapping for error items. Change 4057990 by Bradut.Palas Stack error tweaks (added error count to the stack errors button and also updating icon according to highest severity issue in the subtree) #tests none Change 4057996 by Shaun.Kime Trying to fix the static analysis header tool error in CIS #tests n/a Change 4058027 by Shaun.Kime Fixing compilation on other platforms #tests compiles on playstation Change 4058356 by Frank.Fella Niagara - Fix an assert that happens when adding a module or dynamic input with a boolean or enum input. Change 4058428 by Frank.Fella Niagara - Fix a crash when removing an input from a set variables node in the stack which was caused by the function losing an input without the stack being refreshed. This also fixes an issue where add and remove actions on a set variables module wouldn't take affect until the graph was compiled. Change 4059924 by Wyeth.Johnson Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Velocity/AddVelocity.uasset to revision 5 Change 4060256 by Wyeth.Johnson Forces are now dependent on a solver Change 4060430 by Wyeth.Johnson Velocity modules depend on a solver Change 4060949 by Shaun.Kime Fixing pragma once definition as well as a possible null deref #tests n/a Change 4060955 by Shaun.Kime Fixing due to changes in defaults #tests all now pass PC Change 4061000 by jonathan.lindquist Debug particle material improvements which includes comments in the shader, rearranged layout with a vector 2 input for particle id, new texture, a new instance that includes "focus masking" Change 4061804 by Wyeth.Johnson Optimized out a couple unnecessary bits of math from some axis alignment stuff, solver dependencies Change 4061974 by Simon.Tovey Fixed GPU cooking. - Removing check for emitter SimTarget in CanBeRunOnGpu() and relying only on the script usage having been loaded already. We can't rely on properties in the emitter being loaded before the call to UNiagaraScript::PostLoad() so this is unsafe. - Adding some dummy gpu buffers to bypass validation ensures in rhi when we need to set params for SRVs that have not been allocated yet. - Fixed bug in RHI that was returning FGPUFenceRHIParamRef and so the created fence was immediately freed and boom. Change 4062269 by Shaun.Kime Re-enabling most of the tests. #test n/a Change 4062414 by tim.gautier QAGame: Updated QA-Effects for mobile compatibility - Removed Atmospheric Fog (not supported on Mobile) - Added SkySphere (resolved lighting issues) Change 4062651 by Shaun.Kime Saving with versions Change 4062673 by Shaun.Kime Making emitter names without spaces so that they can be blacklisted if need be Change 4062686 by Shaun.Kime Getting ready for CI for 4.20 Change 4062687 by Shaun.Kime Updating mac images Change 4063298 by Shaun.Kime Disabling collision test gpu for now. Need to investigate what broke it tomorrow. #tests CollisionBounceGPU Change 4063373 by Shaun.Kime Blacklisting mac tests that still need work Change 4063434 by Shaun.Kime Cleaning out previous debug code #tests n/a Change 4063618 by Yannick.Lange Fix dragging an input pin to the add pin of an if node #jira UE-58600 Change 4063847 by Frank.Fella Niagara - Rename RibbonSortKey to RibbonLinkOrder, change it from an int32 to a float, and disable uv age offset when using link order instead of normalized age to order particles in the ribbon. This should fix the issues preventing beams from being implemented nicely. #tests Auto-tests Change 4064150 by tim.gautier QAGame: Removing floating NewWidgetBP from /Content Change 4064237 by Shaun.Kime Disabling the level sequence test for now Change 4064902 by Shaun.Kime Fixing compile errors on linux editor build #jira UE-58620 #tests n/a Change 4065167 by tim.gautier QAGame: Submitting temporary update to TM-ShaderModels, adding Niagara station Change 4065400 by tim.gautier QAGame: Submitting updated (temp) TM-ShaderModels. Set NewNiagaraEmitter to Local Space by default Change 4065540 by Frank.Fella Niagara - Temporarily disable the module dependencies until they can be fixed. Change 4065570 by Shaun.Kime Fixing linux build #tests n/a #jira UE-58979 Change 4066753 by Shaun.Kime Updating custom version after previous change to shader includes #tests autotests pass Change 4067981 by Frank.Fella Niagara - Fix potential null dereference found by CIS #jira UE-59013 Change 4067998 by Shaun.Kime Nullpointer checks on shutdown #jira UE-59000 Change 4068104 by Frank.Fella Niagara - Change the prefix for the previous parameter values from PREV__ to PREV_ since the cross compiler reserves all symbols with double underscores for opengl. Change 4068118 by Frank.Fella Niagara - Fix an open GL crash where we weren't passing the correct buffer index when setting parameters for compute shaders. Change 4069299 by Olaf.Piesche Async GPU readback/update mobile platform fixes CPU particles should work on Android #jira UE-58986 Change 4069603 by Shaun.Kime Making it possible to see the debug output if the console variables are set for shaders. #tests auto-tests pass Change 4069628 by Shaun.Kime OpenGL is very picky about shutting down its texture buffers. We were improperly holding onto static resources and leaking OpenGLShaderResourceViews until module shutdown. Unfortunately, this is *after* the renderer has been shut down and the corresponding OpenGL managers have been deleted, causing us to call into deleted memory. By making several classes FRendererResources, we now register at the appropriate times. In several cases, since the buffers are special purpose fallbacks I moved them into helper locations that are build on demand. Removed FNiagaraVertexFactoryBase::DummyBuffer Created FNiagaraDummyRWBufferInt and FNiagaraDummyRWBufferFloat so that I could wrap several dummy RW buffers in RendererResources and TGlobalResource. Removed NiagaraEmitterInstanceBatcher::DummyWriteIndexBuffer #tests all auto-tests pass on PC and OpenGL and we can open and close OpenGL after using Niagara assets #jira UE-59000 Change 4069646 by Shaun.Kime Disabling Niagara component activation on Switch. This is an attempt to bypass a crash after the assets have been loaded on Switch. #tests auto-tests on PC still pass #jira UE-59048 Change 4069660 by Shaun.Kime Updated Niagara version #tests Auto tests pass Change 4069714 by Shaun.Kime Fixing Olaf's checkin prior adding offset to the base readback call #tests autotests pc pass Change 4070785 by Olaf.Piesche Make RWBuffer available on Metal, Vulkan, and ES3.1 with SRVs Change 4070888 by Olaf.Piesche #jira UE-57657 Reenable ribbon custom facing mode Change 4071570 by Shaun.Kime Removing thread pool size log item as it comes up thousands of times in a cook and is purely for debugging. #tests n/a Change 4071926 by Shaun.Kime Disabling Olaf's change from earlier in the day as it doesn't work on PS4. #tests Ribbon test now works again Change 4073700 by Shaun.Kime Fixing compiler warning about float4 being used as a float. #tests pc auto tests pass #jira UE-59157 [CL 4075457 by Shaun Kime in Main branch]
2018-05-16 12:53:39 -04:00
if (RenderingContextState.Textures && RenderingContextState.Textures[SamplerIndex].Resource == Resource)
{
RenderingContextState.Textures[SamplerIndex].Target = GL_NONE;
RenderingContextState.Textures[SamplerIndex].Resource = 0;
}
if (PendingState.Textures && PendingState.Textures[SamplerIndex].Resource == Resource)
{
PendingState.Textures[SamplerIndex].Target = GL_NONE;
PendingState.Textures[SamplerIndex].Resource = 0;
}
}
}
Copying //UE4/Dev-Platform to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2719147 on 2015/10/07 by Mark.Satterthwaite Allow the shader cache to perform some precompilation synchronously on load before falling back to asynchronous compilation to balance load times against total time spent precompiling. Added a stat to the group that reports how long the precompile has been running until it completes so it is easier to track. Change 2719182 on 2015/10/07 by Mark.Satterthwaite Refactor the ShaderCache's internal data structures and change the way we handle recording whether a particular predraw state has been submitted to try and make it more efficient. Change 2719185 on 2015/10/07 by Mark.Satterthwaite Merging CL #2717701: Try and fix random crashes on Mac when manipulating bound-shader-states caused by ShaderCache potentially providing a bogus shader state pointer on exit from predraw. Change 2719434 on 2015/10/07 by Mark.Satterthwaite Make sure that Mac ensures reports have a source context and a sane callstack when sent to the crash-reports server. Change 2724764 on 2015/10/12 by Josh.Adams [Initial AppleTV support] Merging //depot/YakBranch/... to //UE4/Dev-Platform/... Change 2726266 on 2015/10/13 by Lee.Clark PS4 - Calc reserve size required for DMA copy when using unsafe command buffers Change 2726401 on 2015/10/13 by Mark.Satterthwaite Merging CL #2716418: Fix UE-15228 'Crash Report Client doesn't restart into project editor on Mac' by reporting the original command line supplied by LaunchMac, not the modified one that strips the project name. The CRC can then relaunch as expected. #jira UE-15228 Change 2726421 on 2015/10/13 by Lee.Clark PS4 - Don't try to clear invalid targets Change 2727040 on 2015/10/13 by Michael.Trepka Merging CL 2724777 - Fixed splash screen rendering for images with DPI different than 72 Change 2729783 on 2015/10/15 by Keith.Judge Fix huge memory leak in Test/Shipping configurations, caused because I am a numpty. Change 2729847 on 2015/10/15 by Mark.Satterthwaite Merging CL #2729846: On OS X unconstrain windows from the dimension of the parent display when in Windowed mode - it is OK for them to be larger in this case. They do need to be repositioned if on the Primary display so that they don't creep under the menu bar and become unmovable/unclosable and Fullscreen windows still need to be constrained to a single display. We can now take screenshots of windows that are larger than the display & not get grey bars beyond the cutoff. #jira UE-21992 Change 2729865 on 2015/10/15 by Keith.Judge Fast semantics - Finish up resource transitions, adding resource decompression where appropriate and using non-fast clears where we can't determine the resource transition. Change 2729897 on 2015/10/15 by Keith.Judge Fast Semantics - Make sure all GetData() calls are made safe with GPU fences. Change 2729972 on 2015/10/15 by Keith.Judge Removed the last vestiges of ID3D11DeviceContext/ID3D11DeviceContext1 from the Xbox RHI. Everything now uses ID3D11DeviceContextX directly. This should be marginally quicker as it stops a double call to ClearState(). Change 2731503 on 2015/10/16 by Keith.Judge Added _XDK_VERSION to the DDC key for textures, which should solve the issue of the tiling mode changing in August XDK (and future changes Microsoft may inflict). Change 2731596 on 2015/10/16 by Keith.Judge Fast Semantics - Add deferred resource deletion queue to make deleted resources be actually deleted a number of frames later so that the GPU is definitely finished with them. Hooked up the temporary SRVs for dynamic VBs as a first step. Change 2731928 on 2015/10/16 by Michael.Trepka PR #1659: Mac/Build.sh handles additional arguments (Contributed by judgeaxl) Change 2731934 on 2015/10/16 by Michael.Trepka PR #1618: added clang 3.7.0 -Wshift-negative-value ignore in JpegImageWrapper.cpp (Contributed by bsekura) Change 2732018 on 2015/10/16 by Mark.Satterthwaite Emit a shader code cache for each platforms requested shader formats, this is separate to the targeted formats as not all can or need to be cached. - The implementation extends the ShaderCache's hooks in FShaderResource's serialisation function to capture the required shaders. - Each target platform has its own list of cached shader formats, analogous to the list of targeted RHIs. Presently only the Mac implements this. - Code cached shaders are now compressed (for size) to reduce the overhead associated with keeping all the shader code around - this works esp. well for text-based formats like GLSL. Change 2732365 on 2015/10/16 by Josh.Adams - Packaging a TVOS .ipa now works (still haven't tried any of the Editor integration like Launch On) Change 2733170 on 2015/10/18 by Terence.Burns Fix for Android IAP query not returning entire inventory. Change 2733174 on 2015/10/18 by Terence.Burns Fix Movie player issue where wait for movie to finish isnt being respected. Seems a stray bUserCanceled event flag was causing this not to be observed. Added some verbose logging to apple movie player. Change 2733488 on 2015/10/19 by Mark.Satterthwaite Added the ability to merge the .ushadercache files used by the ShaderCache to store shader & draw state information. - Fixed a bug that would cause invalid shader membership and draw state information to be logged. - Added a separate command-line tool to merge shader cache files, currently Mac-only but in theory should work on other platforms too. Change 2735226 on 2015/10/20 by Mark.Satterthwaite Fix temporal AA rendering on GL/Mac OS X - you can't rely on EyeAdaptation values unless SM5 is available so only perform that code on SM5 & we must correctly clamp saturate(NaN) to 0 as the current hlslcc won't do that for us (& is required by the HLSL spec). The latter used to be clamped in the AA_ALPHA && AA_VELOCITY_WEIGHTING code block that was removed recently. #jira UE-21214 #jira UE-19913 Change 2736722 on 2015/10/21 by Daniel.Lamb Improved performance of cooking stats system. Change 2737172 on 2015/10/21 by Daniel.Lamb Improved cooking stats performance for ddc stats.
2015-12-10 16:56:55 -05:00
TextureMipLimits.Remove(Resource);
Copying //UE4/Fortnite-Staging to //UE4/Main #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2806454 on 2015/12/16 by Bob.Tellez #UE4 Getting crash reporting working again on linux servers. Since -Unattended is now being passed BEFORE the target folder, the cmd line parsing code was failing so now it parses tokens and switches in a more general way. Also, diagnostics.txt had the incorrect case, since the d is supposed to be capitolized and the crash report processor is case sensitive. #rb Ben.Zeigler #codereview Dmitry.Rekman Change 2805502 on 2015/12/16 by Ben.Zeigler #UE4 Move ValidateEnumProperties into ValidateGeneratedClass, it was happening too early in the generation process so was being called at an invalid time. As a result of this ValidateEnumProperties will not be called correctly for compile on load blueprints, that issue is covered in UE-24569 #codereview mike.beach, bob.tellez Change 2805288 on 2015/12/16 by David.Nikdel #HTTP #HttpRetry - Add new Failed_ConnectionError code to EHttpRequestStatus to distinguish between connection errors and protocol errors. - Changed HTTP retry logic a little bit * If a response was received, retry on service-specific explicit HTTP codes (defaults to empty) * If a response was not received and we did not send a full request, automatically retry * If a response was not received and a request may have been sent, retry if the verb is GET or HEAD (should be idempotent) - Adjusted Curl/IOS/Mac/PS4/WinInet to try and distinguish Failed_ConnectionError where possible * Other systems will default to Failed which is ok (ConnectionError is an opportunistic categorization) * Opened a PS4 ticket to try to improve detection, but unfortunately there's no way (currently) to distinguish between send timeout, connection timeout, and receive timeout, the latter being the problematic case. - Removed the concept of global/default HTTP retry status codes. No system has enough knowledge to set those globally. * Individual requests still specify explicit "retryable" codes and McpServiceBase sets that on each request on a per-service basis #RB: Sam.Zamani #CodeReview: Sam.Zamani, Josh.Markiewicz, Alex.Fennell, Dmitry.Rekman, Sam.Spiro #Fixes: FORT-17804 Change 2803864 on 2015/12/15 by Bob.Tellez #UE4 Changed usage of !UE_SERVER to !IsRunningDedicatedServer in cases where we are preventing load attempts on UFonts. This is so running an editor build with -server works the same as running a cooked server. #rb Dmitry.Rekman #codereview Nick.Darnell Change 2803677 on 2015/12/15 by Billy.Bramer - Expose equality and inequality operators for gameplay attributes #rb Todd.Eckert Change 2802881 on 2015/12/14 by Bob.Tellez #UE4 InheritableComponentHandler no longer keeps records for components that we are no longer inheriting. #rb Phillip.Kavan, Maciej.Mroz #codereview Phillip.Kavan, Maciej.Mroz Change 2801636 on 2015/12/14 by Bob.Tellez #UE4 Returning package insert order for non-imports back to being after those of matching priorities unconditionally since this is what you want even when you are not using the asset registry to preload packages. #codereview Graeme.Thornton Change 2800400 on 2015/12/11 by Jonathan.Lindquist Submitting a new Pivot Painter Edition - now renders to textures - improved workflow - greater capabilities Change 2799579 on 2015/12/11 by John.Abercrombie [AUTOMERGE] Fixed EQS BP query wrappers getting GCed before wrapped query finishes #UE4 Fixes FORT-18649 - Patrols don't spawn consistently - The patrol blueprint was waiting (endlessly) for an EQS query to finish but because the wrapper could be GC-ed while the EQS query was running the delegate would never fire #rb me (this code was written by MieszkoZ) (removed code review for integration of Mieszko.Zielinski, Phil.Cole, Dominic.Barile) -------- Integrated using branch UE4-Fortnite-To-UE4-FortniteReleases/0.10 (reversed) of change#2799575 by John.Abercrombie on 2015/12/11 09:55:11. Change 2799018 on 2015/12/10 by Bob.Tellez #UE4 The asset registry tags stripped from cooked builds is now a blacklist by default that includes only the FiB tag. You can opt-in to using the whitelist by flipping the bUseAssetRegistryTagsWhitelistInsteadOfBlacklist flag. #rb Fred.Kimberley #codereview Peter.Knepley Change 2798926 on 2015/12/10 by Bob.Tellez #UE4 Removed some showflags from the list of "Fixed" showflags since they were actually in use at runtime in Fortnite in a scene capture. #jira FORT-18514 #codereview Martin.Mittring Change 2797758 on 2015/12/10 by Mark.Satterthwaite Defer calls to AUGraphUpdate into FCoreAudioDevice::UpdateHardware - this call will synchronise the calling thread with the CoreAudio thread/run-loop so that the CoreAudio graph is safe to modify and this may incur a significant stall. This means it is far more efficient to amortise the cost of all changes to the graph with a single call. To ensure correctness the audio format conversion components are cached and disposed of after the call to AUGraphUpdate so that any existing operations on the CoreAudio thread are completed prior to disposal. Change 2781204 on 2015/11/25 by Dmitry.Rekman Linux: use jemalloc by default if available. - Alleviates one of the reasons for player disconnect (FORT-18048), which was machines running OOM. #rb Bob.Tellez #codereview Bob.Tellez, Ben.Zeigler Change 2779398 on 2015/11/24 by Mark.Satterthwaite Switch the default graphics API on Mac back to OpenGL, but allow Metal to run with -metal (or -metalsm5 for experimental SM5 support).
2016-01-08 19:10:43 -05:00
if (PendingState.DepthStencil && PendingState.DepthStencil->GetResource() == Resource)
Copying //UE4/Fortnite-Staging to //UE4/Main #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2806454 on 2015/12/16 by Bob.Tellez #UE4 Getting crash reporting working again on linux servers. Since -Unattended is now being passed BEFORE the target folder, the cmd line parsing code was failing so now it parses tokens and switches in a more general way. Also, diagnostics.txt had the incorrect case, since the d is supposed to be capitolized and the crash report processor is case sensitive. #rb Ben.Zeigler #codereview Dmitry.Rekman Change 2805502 on 2015/12/16 by Ben.Zeigler #UE4 Move ValidateEnumProperties into ValidateGeneratedClass, it was happening too early in the generation process so was being called at an invalid time. As a result of this ValidateEnumProperties will not be called correctly for compile on load blueprints, that issue is covered in UE-24569 #codereview mike.beach, bob.tellez Change 2805288 on 2015/12/16 by David.Nikdel #HTTP #HttpRetry - Add new Failed_ConnectionError code to EHttpRequestStatus to distinguish between connection errors and protocol errors. - Changed HTTP retry logic a little bit * If a response was received, retry on service-specific explicit HTTP codes (defaults to empty) * If a response was not received and we did not send a full request, automatically retry * If a response was not received and a request may have been sent, retry if the verb is GET or HEAD (should be idempotent) - Adjusted Curl/IOS/Mac/PS4/WinInet to try and distinguish Failed_ConnectionError where possible * Other systems will default to Failed which is ok (ConnectionError is an opportunistic categorization) * Opened a PS4 ticket to try to improve detection, but unfortunately there's no way (currently) to distinguish between send timeout, connection timeout, and receive timeout, the latter being the problematic case. - Removed the concept of global/default HTTP retry status codes. No system has enough knowledge to set those globally. * Individual requests still specify explicit "retryable" codes and McpServiceBase sets that on each request on a per-service basis #RB: Sam.Zamani #CodeReview: Sam.Zamani, Josh.Markiewicz, Alex.Fennell, Dmitry.Rekman, Sam.Spiro #Fixes: FORT-17804 Change 2803864 on 2015/12/15 by Bob.Tellez #UE4 Changed usage of !UE_SERVER to !IsRunningDedicatedServer in cases where we are preventing load attempts on UFonts. This is so running an editor build with -server works the same as running a cooked server. #rb Dmitry.Rekman #codereview Nick.Darnell Change 2803677 on 2015/12/15 by Billy.Bramer - Expose equality and inequality operators for gameplay attributes #rb Todd.Eckert Change 2802881 on 2015/12/14 by Bob.Tellez #UE4 InheritableComponentHandler no longer keeps records for components that we are no longer inheriting. #rb Phillip.Kavan, Maciej.Mroz #codereview Phillip.Kavan, Maciej.Mroz Change 2801636 on 2015/12/14 by Bob.Tellez #UE4 Returning package insert order for non-imports back to being after those of matching priorities unconditionally since this is what you want even when you are not using the asset registry to preload packages. #codereview Graeme.Thornton Change 2800400 on 2015/12/11 by Jonathan.Lindquist Submitting a new Pivot Painter Edition - now renders to textures - improved workflow - greater capabilities Change 2799579 on 2015/12/11 by John.Abercrombie [AUTOMERGE] Fixed EQS BP query wrappers getting GCed before wrapped query finishes #UE4 Fixes FORT-18649 - Patrols don't spawn consistently - The patrol blueprint was waiting (endlessly) for an EQS query to finish but because the wrapper could be GC-ed while the EQS query was running the delegate would never fire #rb me (this code was written by MieszkoZ) (removed code review for integration of Mieszko.Zielinski, Phil.Cole, Dominic.Barile) -------- Integrated using branch UE4-Fortnite-To-UE4-FortniteReleases/0.10 (reversed) of change#2799575 by John.Abercrombie on 2015/12/11 09:55:11. Change 2799018 on 2015/12/10 by Bob.Tellez #UE4 The asset registry tags stripped from cooked builds is now a blacklist by default that includes only the FiB tag. You can opt-in to using the whitelist by flipping the bUseAssetRegistryTagsWhitelistInsteadOfBlacklist flag. #rb Fred.Kimberley #codereview Peter.Knepley Change 2798926 on 2015/12/10 by Bob.Tellez #UE4 Removed some showflags from the list of "Fixed" showflags since they were actually in use at runtime in Fortnite in a scene capture. #jira FORT-18514 #codereview Martin.Mittring Change 2797758 on 2015/12/10 by Mark.Satterthwaite Defer calls to AUGraphUpdate into FCoreAudioDevice::UpdateHardware - this call will synchronise the calling thread with the CoreAudio thread/run-loop so that the CoreAudio graph is safe to modify and this may incur a significant stall. This means it is far more efficient to amortise the cost of all changes to the graph with a single call. To ensure correctness the audio format conversion components are cached and disposed of after the call to AUGraphUpdate so that any existing operations on the CoreAudio thread are completed prior to disposal. Change 2781204 on 2015/11/25 by Dmitry.Rekman Linux: use jemalloc by default if available. - Alleviates one of the reasons for player disconnect (FORT-18048), which was machines running OOM. #rb Bob.Tellez #codereview Bob.Tellez, Ben.Zeigler Change 2779398 on 2015/11/24 by Mark.Satterthwaite Switch the default graphics API on Mac back to OpenGL, but allow Metal to run with -metal (or -metalsm5 for experimental SM5 support).
2016-01-08 19:10:43 -05:00
{
PendingState.DepthStencil = nullptr;
}
}
void FOpenGLDynamicRHI::InvalidateUAVResourceInCache(GLuint Resource)
{
VERIFY_GL_SCOPE();
int32 NumUAVs = RenderingContextState.UAVs.Num();
for (int32 UAVIndex = 0; UAVIndex < NumUAVs; ++UAVIndex)
{
if (SharedContextState.UAVs[UAVIndex].Resource == Resource)
{
SharedContextState.UAVs[UAVIndex].Format = GL_NONE;
SharedContextState.UAVs[UAVIndex].Resource = 0;
}
if (RenderingContextState.UAVs[UAVIndex].Resource == Resource)
{
RenderingContextState.UAVs[UAVIndex].Format = GL_NONE;
RenderingContextState.UAVs[UAVIndex].Resource = 0;
}
if (PendingState.UAVs[UAVIndex].Resource == Resource)
{
PendingState.UAVs[UAVIndex].Format = GL_NONE;
PendingState.UAVs[UAVIndex].Resource = 0;
}
}
}
/*-----------------------------------------------------------------------------
Cubemap texture support.
-----------------------------------------------------------------------------*/
void* FOpenGLDynamicRHI::RHILockTextureCubeFace(FRHITextureCube* TextureCubeRHI, uint32 FaceIndex, uint32 ArrayIndex, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail)
{
return GetOpenGLTextureFromRHITexture(TextureCubeRHI)->Lock(MipIndex, FaceIndex + 6 * ArrayIndex, LockMode, DestStride);
}
void FOpenGLDynamicRHI::RHIUnlockTextureCubeFace(FRHITextureCube* TextureCubeRHI, uint32 FaceIndex, uint32 ArrayIndex, uint32 MipIndex, bool bLockWithinMiptail)
{
GetOpenGLTextureFromRHITexture(TextureCubeRHI)->Unlock(MipIndex, FaceIndex + ArrayIndex * 6);
}
void FOpenGLDynamicRHI::RHIBindDebugLabelName(FRHITexture* TextureRHI, const TCHAR* Name)
{
#if GLDEBUG_LABELS_ENABLED
FRHICommandListImmediate& RHICmdList = FRHICommandListExecutor::GetImmediateCommandList();
if (ShouldRunGLRenderContextOpOnThisThread(RHICmdList))
{
VERIFY_GL_SCOPE();
FOpenGLTexture* Texture = GetOpenGLTextureFromRHITexture(TextureRHI);
if (Texture->IsEvicted())
{
Texture->EvictionParamsPtr->SetDebugLabelName(TCHAR_TO_ANSI(Name));
}
else
{
FOpenGL::LabelObject(GL_TEXTURE, Texture->GetResource(), TCHAR_TO_ANSI(Name));
}
}
else
{
// copy string name for RHIT version.
FAnsiCharArray TextureDebugName;
TextureDebugName.Append(TCHAR_TO_ANSI(Name), FCString::Strlen(Name) + 1);
RunOnGLRenderContextThread([TextureRHI, TextureDebugName = MoveTemp(TextureDebugName)]()
{
VERIFY_GL_SCOPE();
FOpenGLTexture* Texture = GetOpenGLTextureFromRHITexture(TextureRHI);
if (Texture->IsEvicted())
{
Texture->EvictionParamsPtr->SetDebugLabelName(TextureDebugName);
}
else
{
FOpenGL::LabelObject(GL_TEXTURE, Texture->GetResource(), TextureDebugName.GetData());
}
});
}
#endif
}
void FOpenGLDynamicRHI::RHIVirtualTextureSetFirstMipInMemory(FRHITexture2D* TextureRHI, uint32 FirstMip)
{
}
void FOpenGLDynamicRHI::RHIVirtualTextureSetFirstMipVisible(FRHITexture2D* TextureRHI, uint32 FirstMip)
{
}
void FOpenGLDynamicRHI::RHICopyTexture(FRHITexture* SourceTextureRHI, FRHITexture* DestTextureRHI, const FRHICopyTextureInfo& CopyInfo)
{
VERIFY_GL_SCOPE();
FOpenGLTexture* SourceTexture = GetOpenGLTextureFromRHITexture(SourceTextureRHI);
FOpenGLTexture* DestTexture = GetOpenGLTextureFromRHITexture(DestTextureRHI);
checkf(SourceTexture->Target == DestTexture->Target, TEXT("Cannot copy between different texture targets, SourceTexture Target=%x, Format=%d, Flags=%x; DestTexture Target=%x, Format=%d, Flags=%x"),
SourceTexture->Target, SourceTextureRHI->GetFormat(), SourceTextureRHI->GetFlags(),
DestTexture->Target, DestTextureRHI->GetFormat(), DestTextureRHI->GetFlags()
);
checkf((SourceTextureRHI->GetFlags() & TexCreate_SRGB) == (DestTextureRHI->GetFlags() & TexCreate_SRGB), TEXT("Cannot copy between sRGB and linear, SourceTexture Format=%d, Flags=%x; DestTexture Format=%d, Flags=%x"),
SourceTextureRHI->GetFormat(), SourceTextureRHI->GetFlags(),
DestTextureRHI->GetFormat(), DestTextureRHI->GetFlags()
);
GLsizei Width, Height, Depth;
if (CopyInfo.Size == FIntVector::ZeroValue)
{
const FRHITextureDesc& SourceDesc = SourceTextureRHI->GetDesc();
// Copy whole texture when zero vector is specified for region size.
FIntVector SrcTexSize = SourceDesc.GetSize();
Width = FMath::Max(1, SrcTexSize.X >> CopyInfo.SourceMipIndex);
Height = FMath::Max(1, SrcTexSize.Y >> CopyInfo.SourceMipIndex);
switch (SourceTexture->Target)
{
case GL_TEXTURE_3D: Depth = FMath::Max(1, SrcTexSize.Z >> CopyInfo.SourceMipIndex); break;
case GL_TEXTURE_CUBE_MAP: Depth = 6; break;
default: Depth = 1; break;
}
ensure(CopyInfo.SourcePosition == FIntVector::ZeroValue);
}
else
{
Width = CopyInfo.Size.X;
Height = CopyInfo.Size.Y;
switch (SourceTexture->Target)
{
case GL_TEXTURE_3D: Depth = CopyInfo.Size.Z; break;
case GL_TEXTURE_CUBE_MAP: Depth = CopyInfo.NumSlices; break;
default: Depth = 1; break;
}
}
GLint SrcMip = CopyInfo.SourceMipIndex;
GLint DestMip = CopyInfo.DestMipIndex;
if (FOpenGL::SupportsCopyImage())
{
for (uint32 MipIndex = 0; MipIndex < CopyInfo.NumMips; ++MipIndex)
{
GLint SrcZOffset, DestZOffset;
switch (SourceTexture->Target)
{
case GL_TEXTURE_3D:
case GL_TEXTURE_CUBE_MAP:
// For cube maps, the Z offsets select the starting faces.
SrcZOffset = CopyInfo.SourcePosition.Z >> MipIndex;
DestZOffset = CopyInfo.DestPosition.Z >> MipIndex;
break;
case GL_TEXTURE_1D_ARRAY:
case GL_TEXTURE_2D_ARRAY:
// For texture arrays, the Z offsets and depth actually refer to the range of slices to copy.
SrcZOffset = CopyInfo.SourceSliceIndex;
DestZOffset = CopyInfo.DestSliceIndex;
Depth = CopyInfo.NumSlices;
break;
default:
SrcZOffset = 0;
DestZOffset = 0;
break;
}
GLint SourceX = CopyInfo.SourcePosition.X >> MipIndex;
GLint SourceY = CopyInfo.SourcePosition.Y >> MipIndex;
GLint DestX = CopyInfo.DestPosition.X >> MipIndex;
GLint DestY = CopyInfo.DestPosition.Y >> MipIndex;
FOpenGL::CopyImageSubData(SourceTexture->GetResource(), SourceTexture->Target, SrcMip, SourceX, SourceY, SrcZOffset,
DestTexture->GetResource(), DestTexture->Target, DestMip, DestX, DestY, DestZOffset,
Width, Height, Depth);
++SrcMip;
++DestMip;
Width = FMath::Max(1, Width >> 1);
Height = FMath::Max(1, Height >> 1);
if(DestTexture->Target == GL_TEXTURE_3D)
{
Depth = FMath::Max(1, Depth >> 1);
}
}
return;
}
// Convert sub texture regions to GL types
GLint XOffset = CopyInfo.DestPosition.X;
GLint YOffset = CopyInfo.DestPosition.Y;
GLint ZOffset = CopyInfo.DestPosition.Z;
GLint X = CopyInfo.SourcePosition.X;
GLint Y = CopyInfo.SourcePosition.Y;
GLint Z = CopyInfo.SourcePosition.Z;
// Use a texture stage that's not likely to be used for draws, to avoid waiting
FOpenGLContextState& ContextState = GetContextStateForCurrentContext();
CachedSetupTextureStage(ContextState, FOpenGL::GetMaxCombinedTextureImageUnits() - 1, DestTexture->Target, DestTexture->GetResource(), 0, DestTextureRHI->GetNumMips());
CachedBindPixelUnpackBuffer(ContextState, 0);
// Bind source texture to an FBO to read from
for (uint32 SliceIndex = 0; SliceIndex < CopyInfo.NumSlices; ++SliceIndex)
{
for (uint32 MipIndex = 0; MipIndex < CopyInfo.NumMips; ++MipIndex)
{
FOpenGLTexture* RenderTargets[1] = { SourceTexture };
uint32 MipLevels[1] = { static_cast<uint32>(SrcMip) };
uint32 ArrayIndices[1] = { CopyInfo.SourceSliceIndex + SliceIndex };
GLuint SourceFBO = GetOpenGLFramebuffer(1, RenderTargets, ArrayIndices, MipLevels, nullptr);
check(SourceFBO != 0);
glBindFramebuffer(GL_FRAMEBUFFER, SourceFBO);
FOpenGL::ReadBuffer(GL_COLOR_ATTACHMENT0);
switch (DestTexture->Target)
{
case GL_TEXTURE_1D:
FOpenGL::CopyTexSubImage1D(DestTexture->Target, DestMip, XOffset >> MipIndex, X >> MipIndex, 0, Width);
break;
case GL_TEXTURE_1D_ARRAY:
FOpenGL::CopyTexSubImage2D(DestTexture->Target, DestMip, XOffset >> MipIndex, CopyInfo.DestSliceIndex + SliceIndex, X >> MipIndex, 0, Width, 1);
break;
case GL_TEXTURE_2D:
case GL_TEXTURE_RECTANGLE:
FOpenGL::CopyTexSubImage2D(DestTexture->Target, DestMip, XOffset >> MipIndex, YOffset >> MipIndex, X >> MipIndex, Y >> MipIndex, Width, Height);
break;
case GL_TEXTURE_2D_ARRAY:
FOpenGL::CopyTexSubImage3D(DestTexture->Target, DestMip, XOffset >> MipIndex, YOffset >> MipIndex, CopyInfo.DestSliceIndex + SliceIndex, X >> MipIndex, Y >> MipIndex, Width, Height);
break;
case GL_TEXTURE_3D:
FOpenGL::CopyTexSubImage3D(DestTexture->Target, DestMip, XOffset >> MipIndex, YOffset >> MipIndex, ZOffset >> MipIndex, X >> MipIndex, Y >> MipIndex, Width, Height);
break;
case GL_TEXTURE_CUBE_MAP:
for (int32 FaceIndex = FMath::Min((int32)CopyInfo.NumSlices, 6) - 1; FaceIndex >= 0; FaceIndex--)
{
FOpenGL::CopyTexSubImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + (uint32)FaceIndex, CopyInfo.DestMipIndex, XOffset >> MipIndex, YOffset >> MipIndex, X >> MipIndex, Y >> MipIndex, Width, Height);
}
break;
}
}
++SrcMip;
++DestMip;
Width = FMath::Max(1, Width >> 1);
Height = FMath::Max(1, Height >> 1);
}
ContextState.Framebuffer = (GLuint)-1;
}
FTexture2DRHIRef FOpenGLDynamicRHI::RHICreateTexture2DFromResource(EPixelFormat Format, uint32 SizeX, uint32 SizeY, uint32 NumMips, uint32 NumSamples, uint32 NumSamplesTileMem, const FClearValueBinding& ClearValueBinding, GLuint Resource, ETextureCreateFlags TexCreateFlags)
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
{
const FRHITextureCreateDesc Desc =
FRHITextureCreateDesc::Create2D(TEXT("RHICreateTexture2DFromResource"), SizeX, SizeY, Format)
.SetClearValue(ClearValueBinding)
.SetFlags(TexCreateFlags)
.SetNumMips(NumMips)
.SetNumSamples(NumSamples)
.DetermineInititialState();
return new FOpenGLTexture(Desc, Resource);
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
}
FTexture2DRHIRef FOpenGLDynamicRHI::RHICreateTexture2DArrayFromResource(EPixelFormat Format, uint32 SizeX, uint32 SizeY, uint32 ArraySize, uint32 NumMips, uint32 NumSamples, uint32 NumSamplesTileMem, const FClearValueBinding& ClearValueBinding, GLuint Resource, ETextureCreateFlags TexCreateFlags)
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
{
const FRHITextureCreateDesc Desc =
FRHITextureCreateDesc::Create2DArray(TEXT("RHICreateTexture2DArrayFromResource"), SizeX, SizeY, ArraySize, Format)
.SetClearValue(ClearValueBinding)
.SetFlags(TexCreateFlags)
.SetNumMips(NumMips)
.SetNumSamples(NumSamples)
.DetermineInititialState();
return new FOpenGLTexture(Desc, Resource);
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
}
FTextureCubeRHIRef FOpenGLDynamicRHI::RHICreateTextureCubeFromResource(EPixelFormat Format, uint32 Size, bool bArray, uint32 ArraySize, uint32 NumMips, uint32 NumSamples, uint32 NumSamplesTileMem, const FClearValueBinding& ClearValueBinding, GLuint Resource, ETextureCreateFlags TexCreateFlags)
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
{
const FRHITextureCreateDesc Desc =
FRHITextureCreateDesc::Create(TEXT("RHICreateTextureCubeFromResource"), bArray ? ETextureDimension::TextureCube : ETextureDimension::TextureCubeArray)
.SetExtent(Size)
.SetArraySize(bArray ? ArraySize : 1)
.SetFormat(Format)
.SetClearValue(ClearValueBinding)
.SetFlags(TexCreateFlags)
.SetNumMips(NumMips)
.SetNumSamples(NumSamples)
.DetermineInititialState();
return new FOpenGLTexture(Desc, Resource);
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
}
void FOpenGLDynamicRHI::RHIAliasTextureResources(FTextureRHIRef& DestRHITexture, FTextureRHIRef& SrcRHITexture)
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
{
VERIFY_GL_SCOPE();
FOpenGLTexture* DestTexture = GetOpenGLTextureFromRHITexture(DestRHITexture);
FOpenGLTexture* SrcTexture = GetOpenGLTextureFromRHITexture(SrcRHITexture);
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
if (DestTexture && SrcTexture)
{
DestTexture->AliasResources(*SrcTexture);
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3636795) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 2932765 by Nick.Whiting Merging updated license files for Oculus libraries Change 3480552 by Dustin.Holmes Added map and gamemode for calibration #jira UEVR-808 Change 3502253 by Nick.Whiting Trying to fix up p4's botch of the merge Change 3513736 by Keli.Hlodversson Move duplicated late update code into a common FLateUpdateManager #jira UEVR-893 Change 3514798 by Mike.Beach #4.17 Exposing a way for Blueprint users to remap the SteamVR controller's d-pad buttons (clashes with the Oculus mappings). #jira UE-42634 Change 3516042 by Dustin.Holmes Runtime handedness changes in Vive controllers are now reflected when a new device is connected. Device mappings are also reset when a device disconnects, so that if it connects again it fully reregisters instead of just assuming the role it previously had. Change 3517781 by Keli.Hlodversson Remove unused local variable bUseCustomPresentTexture Change 3517951 by Mike.Beach #4.17 Guarding against dereferencing a null pointer. Defaulting to the identity when we don't (yet) have a valid head pose to use. #jira UE-43685 Change 3518142 by Mike.Beach #4.17 Resolving fallout from bad merge (CL 3514868) - checking for teminating null in array (which was added to keep ARRAY_COUNT from acting on an empty array). Change 3523183 by Ryan.Vance #jira UE-46493, UEVR-661 Fixes GearVR only displaying a black screen on startup Fixes GearVR rendering incorrectly with mobile multi-view w/o direct mode enabled Adding mobile multi-view direct support to Daydream Change 3523718 by Nick.Whiting Adding core controller recentering delegate, and moving Google over to that system. Change 3527263 by Dan.Oconnor Mirror 3526925 for Nick Donaldson Change 3533596 by Dustin.Holmes Add garbage matte map, gamemode, and blueprints. Change 3533598 by Dustin.Holmes Expose the Set Tint Color and Opacity function for Widget Components as a Blueprint node. Change 3538139 by Mike.Beach Moving Oculus debug shader directly into Oculus plugin. #jira UE-47134 Change 3543185 by Nick.Atamas Address UEVR-891 : Merge in changes to Google Tango plugin. #jira UEVR-891 Change 3543285 by Nick.Atamas Merging using //UE4/Release-4.17/... -> //UE4/Dev-VR/... : Fixed UEVR-852: Adjusted Google Tango Plugins copyright to Copyright Google 2017. Removed Apache 2.0 license. Change 3545505 by Nick.Atamas Fix UEVR-851 : some fix-ups to MeshReconHUD and overlay material now has a material parameter for tinting the reconstructed mesh to help debug visualization. Change 3547549 by Jeff.Fisher Fixing DefaultSpectatorScreenController comment. Change 3551339 by Ryan.Vance #jira UE-44947 Editor primitives we not being handled correctly with ISR. Change 3554169 by Dustin.Holmes Reconcile missed Mixed Reality blueprint Change 3566825 by Mike.Beach Fixing some bad merges from Main (fallout from CL 3566309) Change 3567143 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3567572 by Mike.Beach [WIP] Adding some MR plugin dependencies to keep CIS quiet (SteamVR is just temporary, and will be removed). Change 3569116 by Jeff.Fisher Mixed reality build breaks for PS4 -Module is dependent on steamvr, so don't build it for PS4. -Removed unused class that doesn't compile with clang. Change 3569362 by Mike.Beach Organizing MR plugin content, to make way for new calibration modes. Change 3572802 by Jeff.Fisher UEVR-832 Add save/load system for calibrated camera settings -Moved MixedRealityConfigurationSaveGame to c++. #review-3571779 #jira UEVR-832 Change 3573864 by Mike.Beach [WIP] Initial work on MR cam alignment controller - records point/frustum data from user input. Change 3575900 by Jeff.Fisher Vive spectator flat rect expanded to match other platforms. -The vive 'full flat eye' rect was narrower than other platforms. Expanded it to be closer to the other platforms. Change 3578684 by Mike.Beach Static analysis fixes for CIS. #jira UE-48204, UE-48203, UE-48206 Change 3579460 by Mike.Beach [WIP] New calibration mode for camera alignment. #jira UEVR-785 Change 3581232 by Mike.Beach [WIP] Saving off alignment calibration data, and loading it on initialization. We skip alignment calibration if it has been configured. #jira UEVR-832 Change 3588411 by Mike.Beach [WIP] Adding calibration for compositing (chroma color, etc.). #jira UEVR-785 Change 3588541 by Mike.Beach [WIP] Cleaning up some display issues with the MR calibration. #jira UEVR-785 Change 3588680 by Mike.Beach Re-organizing the MR content, now that the alignment controller calibrates more than just alignment (renaming, etc.). Change 3588694 by Mike.Beach Renaming the MR calibration pawn (since it doesn't do any calibrating itself). Change 3591518 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3591671 by Ryan.Vance Debug stereo layer support This adds an option to render the debug canvas to a stereo layer which greatly improves console and stat readability in an hmd. Change 3591812 by Ryan.Vance Don't snap motion controllers to the origin when tracking is lost. Change 3594681 by Mike.Beach [WIP] Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3596679 by Mike.Beach CIS fix (likely fallout from CL 3591671) - changing the order of initialization to better match the order of declaration. Change 3598191 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Created MixedRealityGarbageMatteCaptureComponent. An instance of this is spawned by and attached to MixedRealityCaptureComponent. Saved config data is loaded into it. It spawns a garbage matte actor. It then captures the garbage matte actor into a render target (which is set on MixedRealityCaptureComponent). #jira UEVR-807 #review-3598179 Change 3598276 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3598332 by Mike.Beach Guarding against a blind cast in the SteamVRChaperone component, which can be used cross platform (can't assume SteamVR). Change 3605271 by Mike.Beach Copying //Tasks/UE4/Dev-MixedReality to Dev-VR-Minimal (//UE4/Dev-VR-Minimal) Change 3608490 by Jeff.Fisher UEVR-987 Social Screen PS4 need to go to 'mirroring' for hmd setup dialog because system dialogs are not visible in separate mode. UEVR-988 SpectatorScreen Flickering UE-47234 Spectator screen: need frame delay before assigning dynamically created rendertarget to spectator texture UE-47310 Spectator Screen: crash if you release a render target which is assigned as the spectator texture -Test level content for all of these bugs. Change 3608883 by Jeff.Fisher UEVR-807 Setup M_MRVidProcessing to use 3D garbage matte data. -Set material to use the garbage matte render target. Change 3613292 by Mike.Beach Moving header fcn decl up, under the proper interface section (for organization's sake). Change 3616943 by Nick.Whiting Updating SteamVR libraries to 1.0.9, so we can bring back macOS support Change 3616970 by Nick.Whiting Adding in steamvr visible area mesh support. Can be toggled with vr.SteamVR.UseVisibleAreaMesh Change 3617866 by Mike.Beach Updating the VR template to reflect Oculus HMD device naming that we've keyed off of in these Blueprints (when determining which VR system we're running on). Change 3620108 by Mike.Beach [WIP] Adding an intermediate calibration step to tweak the MR virtual cam's alignment. Change 3620982 by Mike.Beach Tying off some loose ends with the MR calibration map: * Saving after each calibration phase * Fixing blocked input from garbage matte creation * Blocking input handling while exiting/previewing * Adding minimum radius for random screen pt Change 3621551 by Mike.Beach [MR] Leveraging camera support in the new media framework - working for limited cameras in calibration. Change 3621552 by Mike.Beach [MR calibration] - fixing it so when you first switch into compoisiting calibration it updates the property readout. Change 3621660 by Mike.Beach [MR calibration] Cleaning up how we display text (adding a struct to wrap the coresponding properties). Change 3623323 by Dustin.Holmes Fix buffer overflow when using 5+ Vive generic trackers and add more Special hand designations to cover the maximum 11 trackers Vive supports Change 3625900 by Keli.Hlodversson Remove fixed 16:9 aspect ratio for SteamVR and Oculus splash screens. Oculus was already fixed in CL#3413801, but regressed with plugin renaming and unificiation with GearVR in CL#3502152. #jira UE-40220 StereoLayer splash layers are hardcoded to 8 by 4.5 meters (16:9 aspect ratio) Change 3628409 by Mike.Beach Speculative CIS fix. #jira UE-49339 Change 3628440 by Nick.Whiting Fix for SteamVR OSX build issues Change 3628489 by Nick.Whiting Fix for win32 build break Change 3629045 by Mike.Beach Shadowed variable name fix (CIS). Change 3629202 by Arciel.Rekman Copying //UE4/Partner-Valve@3629179 to Dev-VR (//UE4/Dev-VR) Change 3629340 by Nick.Atamas Unshelved and resolved changes from Oculus. Change 3629772 by Ryan.Vance Fixing Oculus Vulkan related compile issues. This will break Oculus Vulkan support, but the code needs to be refactored anyway. Change 3629833 by Mike.Beach Fixing up CIS warning introduced by Oculus 1.17 changes - "unsafe conversion" warning #jira UE-49376 Change 3630696 by Jeff.Fisher UE-49415 //UE4/Dev-VR: Incremental UE4Editor Win64 completed with errors - 5 Errors Switching an include to a forward declaration -Not sure why the previous version didn't compile on the build machine, but fewer dependencies is good. Change 3630783 by Mike.Beach Fixing CIS compiler failures for our vehicle templates. #jira UE-49417 Change 3630802 by Mike.Beach Better fix than 3630783 - updating the vehicle template's stereoscopic check (fixing the VehicleHud.cpp logic as well) #jira UE-49417 Change 3630870 by Mike.Beach Pragma'ing out a function pointer cast warning. Good warning, but I figure we know what we're doing here and there's no other way around it. #jira UE-49376 Change 3630993 by Ryan.Vance Check to ensure we have a valid third camera before trying to use it. We could check >= 3 or if the left and right cameras are left/right stereo etc. decided to go with the simple test for now. Change 3631322 by Jeff.Fisher UEVR-909 PIP in Garbage Matte -Added ExternalGarbageMatteActor to MixedRealityGarbageMatteCaptureComponent and exposed it to blueprint though MixedRealityCaptureComponent. This lets us switch from using the normal mixed reality component save/load garbage matte data and instead use an external actor, in this case the actor we use to setup the garbage matte. Then the mask is able to capture that actor live as it is edited. -Also implemented GetViewOwner() so that we can use SetOwnerOnlySee to prevent other cameras and captures from seeing the garbage matte actor. -Calibration level now uses the external garbage matte actor to let the garbate matte mask live update. It also does a picture-in-picture preview of the mixed reality scene. 'P' can show/hide the garbage matte actor on that PIP preview. -Added SetUnmaskedPixelHighlightColor to MixedRealityCaptureComponent and the material. With this one can make unmasked video pixels more obvious in the output. The calibration level has this mapped to shift-P and makes pixels bright yellow to white. -Added blueprint to calibration level to make the garbage matte actor visible in the mixed reality capture. That is bound to ctrl-g. -GarbageMatteActors spawned by the mixed reality capture component are now attached to the vr origin. The calibration level now saves garbage matte mesh transforms relative to the vr origin. -The garbage matte mesh is now plugin content, and is referenced in the mixedrealitycomponent default object, so it is cooked in any project that includes the plugin. -Fog and AtmosphericFog no longer affect the garbage matte mask capture... there may be other things we need to turn off there. #review-3618345 #jira UEVR-909 Change 3631362 by Keli.Hlodversson #jira UE-49418 Exiting Google Instant Preview displays half of the editor viewport as black. Note convoluted fix: passing bIsStereoScopic3D to IsActiveThisFrame. ISceneViewExtension code cannot rely on StereoRenderingDevice->IsStereoEnabled to know whether to render in stereo, as the current viewport widget may disable it. This was not a problem before the refactoring, as HMD-related viewextensions were only added to the active list after establishing that stereo indeed was enabled and allowed by the current view port widget. Change 3631887 by Jeff.Fisher Fixing IsActiveThisFrame build break. Change 3632206 by Nick.Atamas Fix for UE-49413. Registering FOculusHMD as an extensions the same way as others: now creates an XRCamera that passes all the calls back to the HMD. Change 3632264 by Nick.Whiting Fix for Vive rendering getting cropped off due to invalid subrect values being submitted to the compositor. Change 3632340 by Nick.Atamas Merged in change from Loren; opted for our solution to ViewExtensions instead of the one in the changelist. Original description below. Change 3632214 by Loren.McQuade@Loren.McQuade_Dev-VR on 2017/09/07 19:51:29 *pending* [Dev-VR] Added OculusHMD_SceneViewExtension, PlayerPosition/PlayerOrientation values, FOculusHMD::GetRelativeEyePose cross-eyed madness (CL 3631541, 3631687) Change 3632353 by Ryan.Vance #jira UE-49468 Don't apply xr camera rotation on the player controller when not using xr tracking. Change 3632735 by Keli.Hlodversson Better fix for #jira UE-49413. Revert oculus xr camera code and use that one can have more than one view extension registered instead. Use GetPriority to have the OculusHMD view extension code execute after the default xr camera. The xr camera subclass did not forward the calls to ISceneViewExtension to the parent, breaking various functionality such as late update. Fixes a crash when entering VR pie twice, back to back. Change 3632752 by Keli.Hlodversson Applying change 3632592 by Loren.McQuade@Loren.McQuade_Dev-VR_Branch on 2017/09/08 02:08:22 [Dev-VR] Push //UE4/Partner-Oculus@3632591 #rb merge //UE4/Partner-Oculus to //UE4/Dev-VR/... Reverted OculusHMD_XRCamera changes, as that clas has been removed in the interim. Change 3633211 by Mike.Beach Backing out Oculus MotionController hiding that accidently got submitted - we decided not to adopt this change originally. Change 3633315 by Jeff.Fisher merge from main with dev-platform problem children -expecting SDRBackBuffer stuff to be wrong. Change 3634006 by Mike.Beach Resurecting Oculus clip plane settings which got dropped in the IXR refactor. #jira UE-49520 Change 3634639 by Keli.Hlodversson Avoid include cycle https://ec-01.epicgames.net/commander/link/jobStepDetails/jobSteps/68863219?stepName=UE4Editor%20Static%20Analysis%20Win64%20%28IncludeTool%29&jobId=7995809&jobName=UE4%20Dev-VR%20-%20CL%203632752%20-%20Nightly%20Build&tabGroup=diagnosticHeader&firstPage=1 Change 3634641 by Jeff.Fisher UE-49535 Lighting is blown out when playing in VR Preview on Vive -Need pixel format to be PF_B8G8R8A8 for vr, now the plugins all build their render target and use that format. #review-3634623 Change 3634682 by Jeff.Fisher IHeadMountedDisplay forward declarations needed. Change 3634690 by Ryan.Vance We can't override the screen percentage when rendering for stereo #jira UE-49287 Change 3635970 by Keli.Hlodversson #jira UE-49563 Crash while opening QA-Game Referencing SharedPointer.h Verify that StereoRendering is valid before calling IsStereoEnabled() Change 3635979 by Mike.Beach CIS static analysis fix - checking a ptr for null before we use it. #jira UE-49531 Change 3636059 by Mike.Beach Fixing XR system name aliasing for the -hmd command. [CL 3638830 by Ryan Vance in Main branch]
2017-09-12 11:27:30 -04:00
}
}
FTextureRHIRef FOpenGLDynamicRHI::RHICreateAliasedTexture(FTextureRHIRef& SourceTexture)
{
const FString Name = SourceTexture->GetName().ToString() + TEXT("Alias");
return new FOpenGLTexture(*GetOpenGLTextureFromRHITexture(SourceTexture), *Name, FOpenGLTexture::AliasResource);
}
void* FOpenGLDynamicRHI::LockTexture2D_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture2D* Texture, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail, bool bNeedsDefaultRHIFlush)
{
check(IsInRenderingThread());
static auto* CVarRHICmdBufferWriteLocks = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RHICmdBufferWriteLocks"));
bool bBuffer = CVarRHICmdBufferWriteLocks->GetValueOnRenderThread() > 0;
void* Result;
uint32 MipBytes = 0;
if (!bBuffer || LockMode != RLM_WriteOnly || RHICmdList.Bypass() || !IsRunningRHIInSeparateThread())
{
RHITHREAD_GLCOMMAND_PROLOGUE();
return this->RHILockTexture2D(Texture, MipIndex, LockMode, DestStride, bLockWithinMiptail);
RHITHREAD_GLCOMMAND_EPILOGUE_GET_RETURN(void *);
Result = ReturnValue;
MipBytes = GetOpenGLTextureFromRHITexture(Texture)->GetLockSize(MipIndex, 0, LockMode, DestStride);
}
else
{
MipBytes = GetOpenGLTextureFromRHITexture(Texture)->GetLockSize(MipIndex, 0, LockMode, DestStride);
Result = FMemory::Malloc(MipBytes, 16);
}
check(Result);
GLLockTracker.Lock(Texture, Result, 0, MipIndex, DestStride, MipBytes, LockMode);
return Result;
}
void FOpenGLDynamicRHI::UnlockTexture2D_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture2D* Texture, uint32 MipIndex, bool bLockWithinMiptail, bool bNeedsDefaultRHIFlush)
{
check(IsInRenderingThread());
static auto* CVarRHICmdBufferWriteLocks = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RHICmdBufferWriteLocks"));
bool bBuffer = CVarRHICmdBufferWriteLocks->GetValueOnRenderThread() > 0;
FTextureLockTracker::FLockParams Params = GLLockTracker.Unlock(Texture, 0, MipIndex);
if (!bBuffer || Params.LockMode != RLM_WriteOnly || RHICmdList.Bypass() || !IsRunningRHIInSeparateThread())
{
GLLockTracker.TotalMemoryOutstanding = 0;
RHITHREAD_GLCOMMAND_PROLOGUE();
this->RHIUnlockTexture2D(Texture, MipIndex, bLockWithinMiptail);
RHITHREAD_GLCOMMAND_EPILOGUE();
}
else
{
auto GLCommand = [=]()
{
uint32 DestStride;
uint8* TexMem = (uint8*)this->RHILockTexture2D(Texture, MipIndex, Params.LockMode, DestStride, bLockWithinMiptail);
uint8* BuffMem = (uint8*)Params.Buffer;
check(DestStride == Params.Stride);
FMemory::Memcpy(TexMem, BuffMem, Params.BufferSize);
FMemory::Free(Params.Buffer);
this->RHIUnlockTexture2D(Texture, MipIndex, bLockWithinMiptail);
};
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)(MoveTemp(GLCommand));
}
}
void* FOpenGLDynamicRHI::RHILockTextureCubeFace_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITextureCube* Texture, uint32 FaceIndex, uint32 ArrayIndex, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail)
{
check(IsInRenderingThread());
static auto* CVarRHICmdBufferWriteLocks = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RHICmdBufferWriteLocks"));
bool bBuffer = CVarRHICmdBufferWriteLocks->GetValueOnRenderThread() > 0;
void* Result;
uint32 MipBytes = 0;
if (!bBuffer || LockMode != RLM_WriteOnly || RHICmdList.Bypass() || !IsRunningRHIInSeparateThread())
{
RHITHREAD_GLCOMMAND_PROLOGUE();
return this->RHILockTextureCubeFace(Texture, FaceIndex, ArrayIndex, MipIndex, LockMode, DestStride, bLockWithinMiptail);
RHITHREAD_GLCOMMAND_EPILOGUE_GET_RETURN(void *);
Result = ReturnValue;
MipBytes = GetOpenGLTextureFromRHITexture(Texture)->GetLockSize(MipIndex, 0, LockMode, DestStride);
}
else
{
MipBytes = GetOpenGLTextureFromRHITexture(Texture)->GetLockSize(MipIndex, 0, LockMode, DestStride);
Result = FMemory::Malloc(MipBytes, 16);
}
check(Result);
GLLockTracker.Lock(Texture, Result, ArrayIndex, MipIndex, DestStride, MipBytes, LockMode);
return Result;
}
void FOpenGLDynamicRHI::RHIUnlockTextureCubeFace_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITextureCube* Texture, uint32 FaceIndex, uint32 ArrayIndex, uint32 MipIndex, bool bLockWithinMiptail)
{
check(IsInRenderingThread());
static auto* CVarRHICmdBufferWriteLocks = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RHICmdBufferWriteLocks"));
bool bBuffer = CVarRHICmdBufferWriteLocks->GetValueOnRenderThread() > 0;
FTextureLockTracker::FLockParams Params = GLLockTracker.Unlock(Texture, ArrayIndex, MipIndex);
if (!bBuffer || Params.LockMode != RLM_WriteOnly || RHICmdList.Bypass() || !IsRunningRHIInSeparateThread())
{
GLLockTracker.TotalMemoryOutstanding = 0;
RHITHREAD_GLCOMMAND_PROLOGUE();
this->RHIUnlockTextureCubeFace(Texture, FaceIndex, ArrayIndex, MipIndex, bLockWithinMiptail);
RHITHREAD_GLCOMMAND_EPILOGUE();
}
else
{
auto GLCommand = [=]()
{
uint32 DestStride;
uint8* TexMem = (uint8*)this->RHILockTextureCubeFace(Texture, FaceIndex, ArrayIndex, MipIndex, RLM_WriteOnly, DestStride, bLockWithinMiptail);
uint8* BuffMem = (uint8*)Params.Buffer;
check(DestStride == Params.Stride);
FMemory::Memcpy(TexMem, BuffMem, Params.BufferSize);
FMemory::Free(Params.Buffer);
this->RHIUnlockTextureCubeFace(Texture, FaceIndex, ArrayIndex, MipIndex, bLockWithinMiptail);
};
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)(MoveTemp(GLCommand));
}
}
void* FOpenGLDynamicRHI::LockTexture2DArray_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture2DArray* Texture, uint32 ArrayIndex, uint32 MipIndex, EResourceLockMode LockMode, uint32& DestStride, bool bLockWithinMiptail)
{
check(IsInRenderingThread());
static auto* CVarRHICmdBufferWriteLocks = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RHICmdBufferWriteLocks"));
bool bBuffer = CVarRHICmdBufferWriteLocks->GetValueOnRenderThread() > 0;
void* Result;
uint32 MipBytes = 0;
if (!bBuffer || LockMode != RLM_WriteOnly || RHICmdList.Bypass() || !IsRunningRHIInSeparateThread())
{
RHITHREAD_GLCOMMAND_PROLOGUE();
return this->RHILockTexture2DArray(Texture, ArrayIndex, MipIndex, LockMode, DestStride, bLockWithinMiptail);
RHITHREAD_GLCOMMAND_EPILOGUE_GET_RETURN(void*);
Result = ReturnValue;
MipBytes = GetOpenGLTextureFromRHITexture(Texture)->GetLockSize(MipIndex, ArrayIndex, LockMode, DestStride);
}
else
{
MipBytes = GetOpenGLTextureFromRHITexture(Texture)->GetLockSize(MipIndex, ArrayIndex, LockMode, DestStride);
Result = FMemory::Malloc(MipBytes, 16);
}
check(Result);
GLLockTracker.Lock(Texture, Result, ArrayIndex, MipIndex, DestStride, MipBytes, LockMode);
return Result;
}
void FOpenGLDynamicRHI::UnlockTexture2DArray_RenderThread(class FRHICommandListImmediate& RHICmdList, FRHITexture2DArray* Texture, uint32 ArrayIndex, uint32 MipIndex, bool bLockWithinMiptail)
{
check(IsInRenderingThread());
static auto* CVarRHICmdBufferWriteLocks = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RHICmdBufferWriteLocks"));
bool bBuffer = CVarRHICmdBufferWriteLocks->GetValueOnRenderThread() > 0;
FTextureLockTracker::FLockParams Params = GLLockTracker.Unlock(Texture, ArrayIndex, MipIndex);
if (!bBuffer || Params.LockMode != RLM_WriteOnly || RHICmdList.Bypass() || !IsRunningRHIInSeparateThread())
{
GLLockTracker.TotalMemoryOutstanding = 0;
RHITHREAD_GLCOMMAND_PROLOGUE();
this->RHIUnlockTexture2DArray(Texture, ArrayIndex, MipIndex, bLockWithinMiptail);
RHITHREAD_GLCOMMAND_EPILOGUE();
}
else
{
auto GLCommand = [=]()
{
uint32 DestStride;
uint8* TexMem = (uint8*)this->RHILockTexture2DArray(Texture, ArrayIndex, MipIndex, Params.LockMode, DestStride, bLockWithinMiptail);
uint8* BuffMem = (uint8*)Params.Buffer;
check(DestStride == Params.Stride);
FMemory::Memcpy(TexMem, BuffMem, Params.BufferSize);
FMemory::Free(Params.Buffer);
this->RHIUnlockTexture2DArray(Texture, ArrayIndex, MipIndex, bLockWithinMiptail);
};
ALLOC_COMMAND_CL(RHICmdList, FRHICommandGLCommand)(MoveTemp(GLCommand));
}
}
void LogTextureEvictionDebugInfo()
{
static int counter = 0;
if (GOGLTextureEvictLogging && ++counter == 100)
{
UE_LOG(LogRHI, Warning, TEXT("txdbg: Texture mipmem %d. GTotalTexStorageSkipped %d, GTotalCompressedTexStorageSkipped %d, Total noncompressed = %d"), GTotalEvictedMipMemStored, GTotalTexStorageSkipped, GTotalCompressedTexStorageSkipped, GTotalTexStorageSkipped - GTotalCompressedTexStorageSkipped);
UE_LOG(LogRHI, Warning, TEXT("txdbg: Texture GTotalEvictedMipMemDuplicated %d"), GTotalEvictedMipMemDuplicated);
UE_LOG(LogRHI, Warning, TEXT("txdbg: Texture GTotalMipRestores %d, GTotalMipStoredCount %d"), GTotalMipRestores, GTotalMipStoredCount);
UE_LOG(LogRHI, Warning, TEXT("txdbg: Texture GAvgRestoreTime %f (%d), GMaxRestoreTime %f, TotalRestoreTime %f"), GAvgRestoreCount ? (float)(GAvgRestoreTime / GAvgRestoreCount) : 0.f, GAvgRestoreCount, (float)GMaxRestoreTime, (float)GAvgRestoreTime);
UE_LOG(LogRHI, Warning, TEXT("txdbg: Texture LRU %d"), FTextureEvictionLRU::Get().Num());
GAvgRestoreCount = 0;
GMaxRestoreTime = 0;
GAvgRestoreTime = 0;
counter = 0;
}
}
void FTextureEvictionLRU::TickEviction()
{
#if (UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT)
LogTextureEvictionDebugInfo();
#endif
FScopeLock Lock(&TextureLRULock);
FOpenGLTextureLRUContainer& TextureLRU = GetLRUContainer();
for (int32 EvictCount = 0;
TextureLRU.Num() && (TextureLRU.GetLeastRecent()->EvictionParamsPtr->FrameLastRendered + GOGLTextureEvictFramesToLive) < GFrameNumberRenderThread && EvictCount < GOGLTexturesToEvictPerFrame
;EvictCount++)
{
FOpenGLTexture* RemovedFromLRU = TextureLRU.RemoveLeastRecent();
RemovedFromLRU->EvictionParamsPtr->LRUNode = FSetElementId();
RemovedFromLRU->TryEvictGLResource();
}
}
void FTextureEvictionLRU::Remove(FOpenGLTexture* TextureBase)
{
if( TextureBase->EvictionParamsPtr.IsValid() )
{
FScopeLock Lock(&TextureLRULock);
check(!TextureBase->EvictionParamsPtr->LRUNode.IsValidId() || GetLRUContainer().Contains(TextureBase));
check(TextureBase->EvictionParamsPtr->LRUNode.IsValidId() || !GetLRUContainer().Contains(TextureBase));
if( TextureBase->EvictionParamsPtr->LRUNode.IsValidId())
{
GetLRUContainer().Remove(TextureBase);
TextureBase->EvictionParamsPtr->LRUNode = FSetElementId();
}
}
}
bool FTextureEvictionLRU::Add(FOpenGLTexture* TextureBase)
{
FScopeLock Lock(&TextureLRULock);
check(TextureBase->EvictionParamsPtr);
check(!TextureBase->EvictionParamsPtr->LRUNode.IsValidId())
FOpenGLTextureLRUContainer& TextureLRU = GetLRUContainer();
check(!TextureLRU.Contains(TextureBase));
if(ensure(TextureLRU.Num() != TextureLRU.Max()))
{
TextureBase->EvictionParamsPtr->LRUNode = TextureLRU.Add(TextureBase, TextureBase);
TextureBase->EvictionParamsPtr->FrameLastRendered = GFrameNumberRenderThread;
return true;
}
return false;
}
void FTextureEvictionLRU::Touch(FOpenGLTexture* TextureBase)
{
FScopeLock Lock(&TextureLRULock);
check(TextureBase->EvictionParamsPtr);
check(TextureBase->EvictionParamsPtr->LRUNode.IsValidId())
check(GetLRUContainer().Contains(TextureBase));
GetLRUContainer().MarkAsRecent(TextureBase->EvictionParamsPtr->LRUNode);
TextureBase->EvictionParamsPtr->FrameLastRendered = GFrameNumberRenderThread;
}
FOpenGLTexture* FTextureEvictionLRU::GetLeastRecent()
{
return GetLRUContainer().GetLeastRecent();
}
FTextureEvictionParams::FTextureEvictionParams(uint32 NumMips) : bHasRestored(0), FrameLastRendered(0)
{
MipImageData.Reserve(NumMips);
MipImageData.SetNum(NumMips);
}
FTextureEvictionParams::~FTextureEvictionParams()
{
VERIFY_GL_SCOPE();
if (bHasRestored)
{
GTotalEvictedMipMemDuplicated -= GetTotalAllocated();
}
for (int i = MipImageData.Num() - 1; i >= 0; i--)
{
GTotalEvictedMipMemStored -= MipImageData[i].Num();
}
GTotalMipStoredCount -= MipImageData.Num();
}
void FTextureEvictionParams::SetMipData(uint32 MipIndex, const void* Data, uint32 Bytes)
{
checkf(Bytes, TEXT("FTextureEvictionParams::SetMipData: MipIndex %d, Data %p, Bytes %d)"), MipIndex, Data, Bytes);
VERIFY_GL_SCOPE();
if (MipImageData[MipIndex].Num())
{
// already have data??
checkNoEntry();
}
else
{
GTotalMipStoredCount++;
}
MipImageData[MipIndex].Reserve(Bytes);
MipImageData[MipIndex].SetNumUninitialized(Bytes);
if (Data)
{
FMemory::Memcpy(MipImageData[MipIndex].GetData(), Data, Bytes);
}
GTotalEvictedMipMemStored += Bytes;
}
void FTextureEvictionParams::CloneMipData(const FTextureEvictionParams& Src, uint32 InNumMips, int32 SrcOffset, int DstOffset)
{
VERIFY_GL_SCOPE();
int32 MaxMip = FMath::Min((int32)InNumMips, (int32)Src.MipImageData.Num() - SrcOffset);
for (int32 MipIndex = 0; MipIndex < MaxMip; ++MipIndex)
{
if (MipImageData[MipIndex + DstOffset].Num())
{
checkNoEntry();
}
else
{
GTotalMipStoredCount++;
}
MipImageData[MipIndex + DstOffset] = Src.MipImageData[MipIndex + SrcOffset];
GTotalEvictedMipMemStored += MipImageData[MipIndex + DstOffset].Num();
}
}
void FTextureEvictionParams::ReleaseMipData(uint32 RetainMips)
{
VERIFY_GL_SCOPE();
for (int i = MipImageData.Num() - 1 - RetainMips; i >= 0; i--)
{
GTotalEvictedMipMemStored -= MipImageData[i].Num();
GTotalMipStoredCount -= MipImageData[i].Num() ? 1 : 0;
MipImageData[i].Empty();
}
// if we're retaining mips then keep entire MipImageData array to ensure there's no MipIndex confusion.
if (RetainMips == 0)
{
MipImageData.Empty();
}
}