2016-12-08 08:52:44 -05:00
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
/*=============================================================================
OpenGLShaders . cpp : OpenGL shader RHI implementation .
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
2014-06-01 19:09:33 -04:00
2016-02-19 13:49:13 -05:00
# include "OpenGLShaders.h"
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 "HAL/PlatformFilemanager.h"
# include "HAL/FileManager.h"
# include "Misc/Paths.h"
# include "Serialization/MemoryWriter.h"
# include "Serialization/MemoryReader.h"
# include "OpenGLDrvPrivate.h"
2014-03-14 14:13:41 -04:00
# include "Shader.h"
# include "GlobalShader.h"
# define CHECK_FOR_GL_SHADERS_TO_REPLACE 0
2014-10-30 19:44:12 -04:00
# if PLATFORM_WINDOWS
2014-03-14 14:13:41 -04:00
# include <mmintrin.h>
# elif PLATFORM_MAC
# include <xmmintrin.h>
# endif
Copying //UE4/Release-Staging-4.15 to //UE4/Dev-Main (Source: //UE4/Release-4.15 @ 3278667)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3278667 on 2017/01/31 by Chris.Wood
Added extra context to crash analytics and crash reports in the Editor.
[UE-41306] - Add context to crash analytics and crash reports (with Editor user activity)
When a Slate tab becomes active or foregrounded, we take its LayoutIdentity, Label and Content Widget Type and generate a string from all three. This gives context for what the user was doing. The string is set as the UserActivity and passed to MTBF analytics, crash analytics and crash reporter.
Also added filter to the UserActivity tracking system that defaults to Game mode to preserve previous behavior. Editor now switches it to Editor mode and starts setting the activity in this mode.
#jira UE-41306
Change 3278637 on 2017/01/30 by Dmitriy.Dyomin
Fixed: iOS Device displays textures darker than in Editor
#jira UE-41298
Change 3278566 on 2017/01/30 by Jack.Porter
Fix #WITH_EDITOR in InstancedStaticMesh.cpp
#jira UE-41292
Change 3278195 on 2017/01/30 by Alexis.Matte
Fix the re-import skeletal mesh regression, where all material disapear.
#jira UE-41294
Change 3278173 on 2017/01/30 by Frank.Fella
PlatformMediaSource - Don't allow the user to nest platform media sources, and also fail validation on nested platform media sources just in case they are set outside of the cusomization UI.
#Jira UE-40779
Change 3278156 on 2017/01/30 by Josh.Adams
- Adding the missed #include line for IsWindowsServer()
#jira UE-41304
Change 3278088 on 2017/01/30 by Mike.Beach
Mirroring CL 3249423 from Dev-BP.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3278036 on 2017/01/30 by Mike.Beach
Mirroring CL 3277671 from Dev-BP.
Refactoring FBlueprintCompilerCppBackend::SortNodesInUberGraphExecutionGroup() a bit. Catching cases that weren't acounted for - detecting cyclical logic now when we've pulled a node/statement out of order, and other nodes need to fall through to that logic (not relying on a goto).
#jira UE-41188, UE-41189, UE-41186, UE-41037
Change 3277974 on 2017/01/30 by Josh.Adams
- Hopeful workaround for COM crash in HandleGameExplorerIntegration function
#jira UE-41080
Change 3277951 on 2017/01/30 by Ori.Cohen
Fix access violation in physx.
#JIRA ODIN-5199
Change 3277773 on 2017/01/30 by Jamie.Dale
Fixing crash that could occur with null meta-data
#jira UE-41271
Change 3277549 on 2017/01/30 by Max.Chen
Sequencer: Back out changelist 3276452 because it breaks other uses of the time snapping interval in the settings.
#jira UE-41009
Change 3277510 on 2017/01/30 by Jamie.Dale
Fixed localization sometimes having incorrect keys in cooked builds
Merged CL# 3276233 and CL# 3277273.
#jira UE-41271
Change 3277500 on 2017/01/30 by Michael.Trepka
Added -Wno-undefined-var-template on Mac to work around an issue with compiling UHT in Xcode 8.3
#jira UE-41225
Change 3277421 on 2017/01/30 by Arciel.Rekman
TestPAL: delete unused test (UE-36984)
#jira UE-36984
(Edigrating CL 3267568 from Dev-Platform to Release-4.15)
Change 3277410 on 2017/01/30 by Jeff.Fisher
UE-41152 more non-unity include fixes.
-Matthew Griffin showed me how to run this locally, so I was able to locally reproduce the errors and this fixed them (the previous fixes were insufficient rather than incorrect).
#jira UE-41152
Change 3277230 on 2017/01/30 by Jack.Porter
Fixed issue with static lighting for Foliage and Instanced Static Meshes where shadows on instances in LOD levels other than LOD 0 was incorrect.
#jira UE-39884
Change 3277178 on 2017/01/30 by Allan.Bentham
enable FORCE_FLOATS with iOS metal shaders when full precision material setting is set.
#jira UE-41253
Change 3277134 on 2017/01/30 by Matthew.Griffin
Fixed NonUnity compile issues
Change 3276503 on 2017/01/28 by Jeff.Fisher
UE-41152 more non-unity include fixes.
#jira UE-41152
Change 3276452 on 2017/01/28 by Max.Chen
Sequencer: Changed the time snapping interval in the toolbar ui so that it no longer additionally updates the sequencer setting. The value used in the sequencer settings is only used to initialize a new level sequence.
#jira UE-41009
Change 3276130 on 2017/01/27 by Phillip.Kavan
[UE-40894] Fix data loss issues with non-native Blueprint classes that override inherited component default values from a nativized parent Blueprint class hierarchy.
- Mirrored from //UE4/Dev-Blueprints (CL# 3276109).
#jira UE-40894
Change 3276013 on 2017/01/27 by Lina.Halper
- fix issue with additive pose preview applying twice
#jira: UE-41216
#code review:Thomas.Sarkanen
Change 3275990 on 2017/01/27 by Mitchell.Wilson
Disabling 'Used with skeletal mesh' on some materials to resolve errors and warnings.
#jira UE-40736
Change 3275885 on 2017/01/27 by Matt.Kuhlenschmidt
Fixed missing slate style assets log warning
#jira UE-41148
Change 3275805 on 2017/01/27 by Ori.Cohen
Fix incorrect warning about moving simulated bodies during tick group. The existing code would warn if you had a kinematic that was SimulationDisabled (i.e. meaning it's not in the sim scene).
#JIRA UE-37270
Change 3275797 on 2017/01/27 by Shaun.Kime
In some cases, it was possible to create a SRetainerWidget that does not have a valid scene. This would cause the recorded scene index to be mismatched with the actual rendering index when played back in the future.
#jira OR-34919
Change 3275681 on 2017/01/27 by Lina.Halper
Dupe change of CL 3273803, 3274129, 3274700
#jira: UE-41163
#code review:Daniel.Wright, Martin.Wilson
Change 3275624 on 2017/01/27 by Benn.Gallagher
Fixed crash when creating destructible meshes from static meshes with null material interface entries
#jira UE-38998
Change 3275601 on 2017/01/27 by Matt.Kuhlenschmidt
Fix crash when a kdop collision generation fails and there are existing collision meshes selected. We no longer clear out unrelated collision primitives when kdop generation fails.
#jira UE-41220
Change 3275545 on 2017/01/27 by Chris.Bunner
Added flag for retreiving debug materials from GetUsedMaterials calls on rendering components.
#jira UE-40482
Change 3275522 on 2017/01/27 by Max.Chen
Sequencer: Call modify before setting row indices
#jira UE-40682
Change 3275518 on 2017/01/27 by Max.Chen
Sequencer: Switch to static pointer to fix crash when tearing down curve editor.
#jira UE-41105
Change 3275475 on 2017/01/27 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
-Fixing non-unity missing includes.
#jira UE-41152
Change 3275387 on 2017/01/27 by Steve.Robb
Prevent engine reinstancing on hot reload.
Copied from CL# 3265490.
#jira UE-40765
Change 3275279 on 2017/01/27 by Josh.Adams
- Redoing change 3274305 in 4.15
#jira UE-40451
Change 3275233 on 2017/01/27 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix share play initialization logic.
#jira UE-41209
Change 3275227 on 2017/01/27 by Alex.Delesky
Duplicating the fix for UE-40791 from Dev-Editor CL 3265714 - The ForceFeedback thumbnail's Play and Stop icons will now render correctly, and will only be visible while an effect is playing or when the cursor hovers over the icon.
#jira UE-40791
Change 3275057 on 2017/01/27 by Peter.Sauerbrei
fix for crash after changing the metal shader version
#jira ue-41183
Change 3275031 on 2017/01/27 by Matthew.Griffin
Added architecture hash to path for Linux generated includes, didn't realize that this was part of the path.
Change 3275005 on 2017/01/27 by Matthew.Griffin
Re-enabled Cache of cooked platform data during DerivedDataCache commandlet
Moved caching DDC of non-host platform data behind an option so it's not done for Installed Build by default
Removed other platforms from Launcher Samples and changed 'CookPlatforms' to 'DDCPlatforms' so that its purpose is more clear
Change 3274828 on 2017/01/27 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
-Fixing non-unity missing include.
#jira UE-41152
Change 3274799 on 2017/01/27 by Arciel.Rekman
Fix for installed Linux cross-toolchain (UE-40392).
- Pull request #3111 contributed by rubu.
#jira UE-40392
Change 3274756 on 2017/01/27 by Max.Chen
Sequencer: Update the parent guid with the new possessable guid. This fixes a bug where the parent guid isn't set properly and so folders aren't retained when assign actors and running fix up actor references.
#jira UE-41010
Change 3274755 on 2017/01/27 by Max.Chen
Sequencer: Call notify movie scene data changed when creating a camera instead of marking the instances as needing a refresh.
#jira UE-41019
Change 3274597 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
-Fixing monolithic include warning.
#jira UE-41152
Change 3274564 on 2017/01/26 by Mike.Beach
Following the example of other nodes with external dependencies (like UK2Node_SwitchEnum), and making sure the struct is preloaded before we use it (the struct needs to have a valid size).
#jira UE-41073
Change 3274535 on 2017/01/26 by Mike.Beach
Removed ensure that was blocking a wrapper function call to a non-nativized function lib from being generated (while not optimal, the generated code works).
#jira UE-41190
Change 3274512 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3255506 Copyright update for google
-note most of the changes went in with the previous 3 androidvr-devvr change integrations, these two were not otherwise changed.
-just incrementing the year
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273588
Change 3274511 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3243495 Adding GoogleVRTransition2D plugin to handle VR->2D->VR transition for daydream app.
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273586
Change 3274510 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3243494 Update GoogleVR plugin to v1.2.
-Upgrade GVR NDK to 1.10.0
-Add easy to use GoogleVR input component, including controller component for daydream and a gaze based reticle component for cardboard.
-Make the GoogleVRSplash rendered with depth.
-Add built in arm model support in GoogleVR controller plugin.
-Add "Use ExternalFilesDir for UE4Game files" option in AndroidRuntimeSetting to support saving game progress without requesting EXTERNAL_STORAGE permission in Andoird 23+
-Remove the "Package for Daydream" option in AndroidRuntimeSetting.
-Fix the crash on iOS9 when GoogleVR plugin is enabled.(udn/325432)
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273585
Change 3274509 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3243493 Adding AndroidPermission plugin to handle runtime permission request and check for android api 23 and above.
-The plugin works for both daydream and normal Android application.
-For Daydream app, it need to work with GoogleVRTransition2D plugin.
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273583
Change 3274485 on 2017/01/26 by Chris.Babcock
Fix handling of numbers in textedit (allow decimals)
#jira UE-41198
#ue4
#android
Change 3274457 on 2017/01/26 by Mike.Beach
Fix to CIS warning (fallout from CL 3274362)
#jira UE-41072, UE-41071, UE-41070
Change 3274445 on 2017/01/26 by Arciel.Rekman
Proper fix for deploying to Linux (UE-40023).
- The logic is: if the base path (local to PC, one we are replacing) *ends* with a separator, add the separator to the dest path (one we're mapping to). Previous fix had a last minute change that inverted it.
#jira UE-40023
Change 3274428 on 2017/01/26 by Brian.Karis
Fixed bloom flickering on high contrast HDR edges when r.TemporalAACatmullRom was enabled.
#jira UE-41138
Change 3274362 on 2017/01/26 by Mike.Beach
Restructuring how we apply individual (exclusive) Blueprint nativization flags...
1. Explicitly flagging Blueprints as dependencies for nativization (and communicating that to the user)
2. Now applying nativization flag to authoritative config for all dependencies on save
3. Flagging new dependencies (parent or interface) as needing nativization (when required)
4. Ignore bDontNativizeDataOnlyBP setting when nativization mode is set to explicit
#jira UE-41072, UE-41071, UE-41070
Change 3274349 on 2017/01/26 by Yannick.Lange
VREditor: Fix Laser not hidden on MotionControllers with docked Menu/UI Panels
#jira UE-40070
Change 3274301 on 2017/01/26 by Chris.Bunner
Added missing material expression tooltips/keywords for new nodes based on 4.15 preview feeback.
#jira UE-41193
Change 3274254 on 2017/01/26 by Ryan.Gerleve
Fix for IsInGameThread() checks that could fail in debug builds while recording a replay with tick.DoAsyncEndOfFrameTasks and demo.ClientRecordAsyncEndOfFrame enabled.
#jira UE-39911
Change 3274121 on 2017/01/26 by Josh.Adams
- Fixed build error with landscape gizmo
#jira UE-41177
Change 3274114 on 2017/01/26 by Dan.Oconnor
Updating all references before calling post edit - prevents objects from being destroyed or created while updating references
#jira UE-40121
Change 3273971 on 2017/01/26 by Chris.Bunner
Update material instance permutations when we have already set param/switch overrides, then only change the base properties.
#jira UE-39754
Change 3273842 on 2017/01/26 by Daniel.Wright
Attempt to remove instructions from code features only present in the forward renderer, so we are showing users their graph cost. Allows shader complexity in forward to sortof match deferred.
#jira UE-41167
Change 3273750 on 2017/01/26 by Jeff.Fisher
UE-41137 //UE4/Main: Step 'Compile Ocean (Win32/Win64)' - 2 Errors - SteamVRController.cpp
-Fixing build break for Ocean. Maybe they are using an older compiler?
#jira UE-31137
Change 3273602 on 2017/01/26 by Michael.Trepka
Fix for UE-41146
#jira UE-41146
Change 3273506 on 2017/01/26 by Maciej.Mroz
#jira ODIN-4991, UE-41035
merged cl3273497 from Dev-Blueprints branch
Nativization:
EX_AddMulticastDelegate - generated code calls TMulticastScriptDelegate::AddUniqe instead of TMulticastScriptDelegate::Add.
Change 3273464 on 2017/01/26 by Mitchell.Wilson
Resaving asset to resolve warning.
#jira UE-41008
Change 3273413 on 2017/01/26 by Marc.Audy
Fix crash when audio device fails to initialize
#author Andrew.Grant
#jira UE-41143
Change 3273391 on 2017/01/26 by Jack.Porter
Fixed ensure encountered when using the Copy/Paste sub-tool in sculpt mode
#jira UE-40480
Change 3273343 on 2017/01/26 by Matt.Kuhlenschmidt
Resetting the preview on a material now properly clears the thumbnail which could have a stale references that was impossible to fix.
Fixed on asset exibiting this problem
#jira UE-40300
Change 3273243 on 2017/01/26 by Jamie.Dale
Speculative fix for an issue where User Defined Enum display names were being lost on upgrade to 4.15
#jira UE-41130
Change 3273235 on 2017/01/26 by Graeme.Thornton
Fix for some memory being left hanging around when loading bulk data asyncronously under certain circumstances
#jira UE-37815
Change 3273225 on 2017/01/26 by Ben.Cosh
This fixes an issue with actor details component selection causing actor selection to get out of sync across undo operations
#Jira UE-40753 - [CrashReport] UE4Editor_LevelEditor!FLevelEditorActionCallbacks::Paste_CanExecute() [leveleditoractions.cpp:1602]
#Proj Engine
Change 3273224 on 2017/01/26 by Josh.Stoddard
Increment FDerivedDataPhysXCooker to force recook of PhysX data
#jira UE-39791#rb none #lockdown james.golding
Change 3273201 on 2017/01/26 by Jack.Porter
Fixed problem where UpdateInstanceTransform blueprint function was not updating bounds correctly
#jira UE-41126
Change 3273122 on 2017/01/26 by Graeme.Thornton
Added some extra log output for situations where a compressed block in an archive doesn't have a valid header
#jira UE-38767
Change 3273116 on 2017/01/26 by Benn.Gallagher
Fix for crash generating clothing skinning data due to coplanar check triggering a check() on small triangles
#jira UE-41112
Change 3273077 on 2017/01/26 by Thomas.Sarkanen
Allowed LODs other than LOD0 to have screen sizes greater than 1
#jira UE-41125 - Static mesh LODs other than LOD0 cannot be set to screen sizes greater than 1
Change 3273061 on 2017/01/26 by Matthew.Griffin
Disabled code caching data for all platforms until we can figure out why it's filling up DDC cache
Change 3272938 on 2017/01/25 by Arciel.Rekman
Fix launch on a remote Linux machine (UE-38691).
- Device id is now used to get target platform, so should match it exactly.
#jira UE-38691
Change 3272816 on 2017/01/25 by Ben.Marsh
Fix VS2017 being displayed as 'Visual Studio 15' in the Windows target settings panel.
Change 3272590 on 2017/01/25 by Daniel.Wright
Workaround for "error X3067: 'GetObjectWorldPosition': ambiguous function call" which happens when FMaterialPixelParameters and FMaterialVertexParameters have the same number of floats with the HLSL compiler. Function overload resolution appears to identify types based on how many floats / ints / etc they contain.
#jira UE-41099
Change 3272419 on 2017/01/25 by Arciel.Rekman
Linux: fix remote deploying of a packaged build (UE-40023).
#jira UE-40023
Change 3272355 on 2017/01/25 by Daniel.Wright
Prevent a large shadow depth bias due to low resolution from causing near plane clipping
#jira UE-40873
Change 3272196 on 2017/01/25 by tim.gautier
Updating TM-UMG content for UI visibility
#jira UE-29618
Change 3272114 on 2017/01/25 by Michael.Dupuis
#jira UE-29817 : backout of CL from Dev-Editor fixing this jira
Change 3271953 on 2017/01/25 by Michael.Trepka
Attempt to fix UE-40956 - Rare crash occurs in CoreAudio in Vehicle Game on Mac when quitting.
#jira UE-40956
Change 3271945 on 2017/01/25 by Olaf.Piesche
Replicating CL 3271564
#jira UE-40980
#udn 325525
Fix uniform buffers for mesh particles; these should really be on the mesh collector, so allocating them as a one frame resource is safe.
Change 3271883 on 2017/01/25 by Daniel.Wright
UWorld::AreAlwaysLoadedLevelsLoaded takes into account bShouldBeVisible. Fixes reflection captures not getting uploaded when there's an invisible always loaded level, which is supposed to be invisible.
#jira UE-40724
Change 3271686 on 2017/01/25 by Marc.Audy
Properly fix line endings in all cases when installing a c++ feature pack
#jira UE-40939
Change 3271631 on 2017/01/25 by Ryan.Gerleve
In UEngine::CommitMapChange, rename the new ULevelStreaming objects so that the main world is their outer. This is more correct in general, and will cause those levels to be added to the correct level collection during FlushLevelStreaming.
Also use MoveTemp to add the streaming level list to the main world, so that the fake world will no longer reference them.
#jira UE-40524
Change 3271611 on 2017/01/25 by Allan.Bentham
Ensure texture's buildsettings are not marked as streamable if the target platform does not support streaming.
#jira UE-40927
Change 3271504 on 2017/01/25 by tim.gautier
Updated default values of UMG_Behavior
#jira UE-29618
Change 3271491 on 2017/01/25 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix bug in AT9 audio cooking.
- Maximum mono bitrate is 144kbps, but 100% quality mono tracks were selecting 168kbps, causing the AT9 tool to fail.
- Also bumped AT9 engine format to recook potentially broken audio data.
#jira UE-40761
Change 3271428 on 2017/01/25 by Chris.Bunner
Bug in previous CL.
#jira UE-39953
Change 3271413 on 2017/01/25 by Lina.Halper
#DUPEFIX of CL 3270776
#jira: UE-41082
Change 3271403 on 2017/01/25 by tim.gautier
Adjusted UMG_Blur intensity settings.
#jira UE-29618
# rb cristina.riveron
Change 3271300 on 2017/01/25 by Luke.Thatcher
[PLATFORM] [PS4] [^] Merge (as edit) fix for NpToolkit2 initialization in 6CPU mode, from //UE4/Dev-Platform to //UE4/Release-4.15 (Original CL 3271215)
- Default thread affinity in the InitParams structure is 7 CPUs.
- Using this affinity in games with 6CPU mode set in param.sfo causes init() to fail.
- We now select 6 or 7 CPU affinity based on what sceKernelGetCpumode reports at runtime.
#jira UE-41079
Change 3271197 on 2017/01/25 by Andrew.Rodham
Sequencer: Ensure initial evaluation range correctly sets exclusive lower boundary for subsequent evaluations
- This prevents us from erroneously evaluating the initial time twice as part of swept evaluations)
#jira UE-40758
Change 3270386 on 2017/01/24 by tim.gautier
Updated UMG_Blur to include second Low-Quality asset
#jira UE-29618
Change 3270267 on 2017/01/24 by Arciel.Rekman
Linux: fix not being able to run a packaged build (UE-37016, UE-39648).
- Fixed expansion of paths with spaces in the bootstrap script.
- Also increased the timeout since large projects can sometimes get killed on start.
- Also killed spammy console output.
#jira UE-37016
Change 3270203 on 2017/01/24 by Chris.Babcock
Fixed issue with Mac and Linux install and uninstall scripts if ANDROID_HOME not set (contributed by nathansizemore)
#jira UE-41042
#PR #3160
#ue4
#android
Change 3270037 on 2017/01/24 by tim.gautier
Checking in UMG_Blur for UMG test coverage
#jira UE-29618
Change 3269829 on 2017/01/24 by matt.barnes
Adding content for Material Attribute testing
#jira UE-29618
Change 3269700 on 2017/01/24 by Josh.Stoddard
force relink of PhysX libs
#jira UE-39791 #rb ori.cohen #lockdown james.golding
Change 3269621 on 2017/01/24 by Allan.Bentham
Make sure 'intrinsic_GetHDR32bppEncodeModeES2()' reports no encoding mode when mobileHDR == false
#jira UE-41023
Change 3269503 on 2017/01/24 by Josh.Stoddard
Integrate PhysX change 3268008 from //UE4/Dev-Physics-Upgrade
#jira UE-39791 #lockdown james.golding #rb josh.stoddard
Change 3269359 on 2017/01/24 by Jack.Porter
Fix for Web browser widget crash on Android when packaged for Distribution
#jira UE-39451
Change 3269316 on 2017/01/24 by Thomas.Sarkanen
Fixed non-unity issues with last change for UE-40945
#jira UE-40945 - Crash trying to import facial animations
Change 3269047 on 2017/01/23 by Yannick.Lange
VREditor: Fix VREditor Laser not hidden on MotionControllers with docked Menu/UI Panels
#jira UE-40070
Change 3268824 on 2017/01/23 by Rolando.Caloca
UE4.15 - Fix for right eye showing black on VR
#jira UE-40900
Change 3268752 on 2017/01/23 by Nick.Whiting
Fix for assertion for binding an MSAA'd scene color with a non-MSAA'd texture.
#jira UE-39304
Change 3268722 on 2017/01/23 by Olaf.Piesche
Replicating 3256329
#jira UE-38615
Removing unnecessary assert that fires when exporting emitters.
Change 3268220 on 2017/01/23 by Nick.Whiting
Adding in a new CVar (vr.SteamVR.UsePostPresentHandoff), which defaults to 0. When set to 0, we do NOT use the SteamVR PostPresentHandoff, which costs some performance GPU time. When 1, we use the call, and get some extra GPU performance. However, this call is NOT safe for scenes that have frame-behind GPU work, like SceneCapture components and Widget Components
#jira UE-40570
Change 3268180 on 2017/01/23 by Marc.Audy
PendingKill Actors will no longer register their components when the level is being loaded
#jira UE-40505
Change 3268076 on 2017/01/23 by Matthew.Griffin
Changed Mac SunTemple cook jobs to use Sample Editor to avoid errors about mismatched files
#jira UE-40806
Change 3267997 on 2017/01/23 by Mitchell.Wilson
Increased lightmap size on spheres in volumes example to resolve issue with lighting.
Corrected misspelling in multiple examples and one UMG asset.
#jira UE-40890 UE-40926 UE-40882 UE-40928 UE-40825 UE-40819
Change 3267892 on 2017/01/23 by Mitchell.Wilson
Removed preview mesh on M_Bird_Inst that was referencing a static mesh that was removed or renamed to resolve warnings in CIS.
#jira UE-40300
Change 3267866 on 2017/01/23 by Thomas.Sarkanen
Prevented crash when using Facial Animation importer
Also hid the feature behind an experiemental setting flag, as it is not ready for users yet.
#jira UE-40945 - Crash trying to import facial animations
Change 3267834 on 2017/01/23 by Nick.Darnell
An addition to 3255247, this also adds input processing incrementing for double click, and preview mouse down.
#jira UE-40313
Change 3267785 on 2017/01/23 by Marc.Audy
Put proper line endings when modifying template files when installing feature pack
#jira UE-40939
Change 3267761 on 2017/01/23 by Mitchell.Wilson
Moved left landscape mesh slightly to hide a seam that can be seen when using VR and looking over the railing.
#jira UE-40916
Change 3267632 on 2017/01/23 by Jurre.deBaare
Marker syncs not working correctly in Blend Spaces
#fix Ensure that SampleIndexWithMarkers is serialized
#JIRA UE-40975
[CL 3287682 by Matthew Griffin in Main branch]
2017-02-06 10:41:38 -05:00
# include "SceneUtils.h"
2014-03-14 14:13:41 -04:00
const uint32 SizeOfFloat4 = 16 ;
const uint32 NumFloatsInFloat4 = 4 ;
2014-10-07 10:38:58 -04:00
FORCEINLINE void FOpenGLShaderParameterCache : : FRange : : MarkDirtyRange ( uint32 NewStartVector , uint32 NewNumVectors )
{
if ( NumVectors > 0 )
{
uint32 High = StartVector + NumVectors ;
uint32 NewHigh = NewStartVector + NewNumVectors ;
uint32 MaxVector = FMath : : Max ( High , NewHigh ) ;
uint32 MinVector = FMath : : Min ( StartVector , NewStartVector ) ;
StartVector = MinVector ;
NumVectors = ( MaxVector - MinVector ) + 1 ;
}
else
{
StartVector = NewStartVector ;
NumVectors = NewNumVectors ;
}
}
2014-03-14 14:13:41 -04:00
/**
* Verify that an OpenGL program has linked successfully .
*/
static bool VerifyLinkedProgram ( GLuint Program )
{
SCOPE_CYCLE_COUNTER ( STAT_OpenGLShaderLinkVerifyTime ) ;
2015-07-15 06:39:44 -04:00
# if UE_BUILD_DEBUG || DEBUG_GL_SHADERS
2014-03-14 14:13:41 -04:00
GLint LinkStatus = 0 ;
glGetProgramiv ( Program , GL_LINK_STATUS , & LinkStatus ) ;
if ( LinkStatus ! = GL_TRUE )
{
GLint LogLength ;
ANSICHAR DefaultLog [ ] = " No log " ;
ANSICHAR * CompileLog = DefaultLog ;
glGetProgramiv ( Program , GL_INFO_LOG_LENGTH , & LogLength ) ;
if ( LogLength > 1 )
{
CompileLog = ( ANSICHAR * ) FMemory : : Malloc ( LogLength ) ;
glGetProgramInfoLog ( Program , LogLength , NULL , CompileLog ) ;
}
UE_LOG ( LogRHI , Error , TEXT ( " Failed to link program. Compile log: \n %s " ) ,
ANSI_TO_TCHAR ( CompileLog ) ) ;
if ( LogLength > 1 )
{
FMemory : : Free ( CompileLog ) ;
}
return false ;
}
2015-01-29 12:34:05 -05:00
# endif
2014-03-14 14:13:41 -04:00
return true ;
}
2015-02-06 11:35:30 -05:00
/**
* Verify that an OpenGL shader has compiled successfully .
*/
static bool VerifyCompiledShader ( GLuint Shader , const ANSICHAR * GlslCode )
{
SCOPE_CYCLE_COUNTER ( STAT_OpenGLShaderCompileVerifyTime ) ;
2015-02-11 12:43:33 -05:00
# if UE_BUILD_DEBUG || DEBUG_GL_SHADERS
2015-02-06 11:35:30 -05:00
if ( FOpenGL : : SupportsSeparateShaderObjects ( ) & & glIsProgram ( Shader ) )
{
bool const bCompiledOK = VerifyLinkedProgram ( Shader ) ;
# if DEBUG_GL_SHADERS
if ( ! bCompiledOK & & GlslCode )
{
UE_LOG ( LogRHI , Error , TEXT ( " Shader: \n %s " ) , ANSI_TO_TCHAR ( GlslCode ) ) ;
#if 0
const ANSICHAR * Temp = GlslCode ;
for ( int i = 0 ; i < 30 & & ( * Temp ! = ' \0 ' ) ; + + i )
{
FString Converted = ANSI_TO_TCHAR ( Temp ) ;
Converted . LeftChop ( 256 ) ;
UE_LOG ( LogRHI , Display , TEXT ( " %s " ) , * Converted ) ;
Temp + = Converted . Len ( ) ;
}
# endif
}
# endif
return bCompiledOK ;
}
else
{
GLint CompileStatus ;
glGetShaderiv ( Shader , GL_COMPILE_STATUS , & CompileStatus ) ;
if ( CompileStatus ! = GL_TRUE )
{
GLint LogLength ;
ANSICHAR DefaultLog [ ] = " No log " ;
ANSICHAR * CompileLog = DefaultLog ;
glGetShaderiv ( Shader , GL_INFO_LOG_LENGTH , & LogLength ) ;
# if PLATFORM_ANDROID
if ( LogLength = = 0 )
{
// make it big anyway
// there was a bug in android 2.2 where glGetShaderiv would return 0 even though there was a error message
// https://code.google.com/p/android/issues/detail?id=9953
LogLength = 4096 ;
}
# endif
if ( LogLength > 1 )
{
CompileLog = ( ANSICHAR * ) FMemory : : Malloc ( LogLength ) ;
glGetShaderInfoLog ( Shader , LogLength , NULL , CompileLog ) ;
}
# if DEBUG_GL_SHADERS
if ( GlslCode )
{
UE_LOG ( LogRHI , Error , TEXT ( " Shader: \n %s " ) , ANSI_TO_TCHAR ( GlslCode ) ) ;
#if 0
const ANSICHAR * Temp = GlslCode ;
for ( int i = 0 ; i < 30 & & ( * Temp ! = ' \0 ' ) ; + + i )
{
FString Converted = ANSI_TO_TCHAR ( Temp ) ;
Converted . LeftChop ( 256 ) ;
UE_LOG ( LogRHI , Display , TEXT ( " %s " ) , * Converted ) ;
Temp + = Converted . Len ( ) ;
}
# endif
}
# endif
UE_LOG ( LogRHI , Fatal , TEXT ( " Failed to compile shader. Compile log: \n %s " ) , ANSI_TO_TCHAR ( CompileLog ) ) ;
if ( LogLength > 1 )
{
FMemory : : Free ( CompileLog ) ;
}
return false ;
}
}
# endif
return true ;
}
static bool VerifyProgramPipeline ( GLuint Program )
{
bool bOK = true ;
2015-02-25 08:13:48 -05:00
// Don't try and validate SSOs here - the draw state matters to SSOs and it definitely can't be guaranteed to be valid at this stage
if ( FOpenGL : : SupportsSeparateShaderObjects ( ) )
2015-02-06 11:35:30 -05:00
{
# if DEBUG_GL_SHADERS
2015-02-25 08:13:48 -05:00
bOK = FOpenGL : : IsProgramPipeline ( Program ) ;
2015-02-06 11:35:30 -05:00
# endif
}
else
{
bOK = VerifyLinkedProgram ( Program ) ;
}
return bOK ;
}
2014-03-14 14:13:41 -04:00
// ============================================================================================================================
class FOpenGLCompiledShaderKey
{
public :
FOpenGLCompiledShaderKey (
GLenum InTypeEnum ,
uint32 InCodeSize ,
uint32 InCodeCRC
)
: TypeEnum ( InTypeEnum )
, CodeSize ( InCodeSize )
, CodeCRC ( InCodeCRC )
{ }
friend bool operator = = ( const FOpenGLCompiledShaderKey & A , const FOpenGLCompiledShaderKey & B )
{
return A . TypeEnum = = B . TypeEnum & & A . CodeSize = = B . CodeSize & & A . CodeCRC = = B . CodeCRC ;
}
friend uint32 GetTypeHash ( const FOpenGLCompiledShaderKey & Key )
{
return GetTypeHash ( Key . TypeEnum ) ^ GetTypeHash ( Key . CodeSize ) ^ GetTypeHash ( Key . CodeCRC ) ;
}
private :
GLenum TypeEnum ;
uint32 CodeSize ;
uint32 CodeCRC ;
} ;
typedef TMap < FOpenGLCompiledShaderKey , GLuint > FOpenGLCompiledShaderCache ;
static FOpenGLCompiledShaderCache & GetOpenGLCompiledShaderCache ( )
{
static FOpenGLCompiledShaderCache CompiledShaderCache ;
return CompiledShaderCache ;
}
// ============================================================================================================================
static const TCHAR * ShaderNameFromShaderType ( GLenum ShaderType )
{
switch ( ShaderType )
{
case GL_VERTEX_SHADER : return TEXT ( " vertex " ) ;
case GL_FRAGMENT_SHADER : return TEXT ( " fragment " ) ;
case GL_GEOMETRY_SHADER : return TEXT ( " geometry " ) ;
case GL_TESS_CONTROL_SHADER : return TEXT ( " hull " ) ;
case GL_TESS_EVALUATION_SHADER : return TEXT ( " domain " ) ;
case GL_COMPUTE_SHADER : return TEXT ( " compute " ) ;
default : return NULL ;
}
}
// ============================================================================================================================
2014-12-03 14:34:37 -05:00
namespace
2014-04-25 04:23:04 -04:00
{
2014-12-03 14:34:37 -05:00
inline void AppendCString ( TArray < ANSICHAR > & Dest , const ANSICHAR * Source )
2014-04-25 04:23:04 -04:00
{
2014-12-03 14:34:37 -05:00
if ( Dest . Num ( ) > 0 )
2014-04-25 04:23:04 -04:00
{
2014-12-03 14:34:37 -05:00
Dest . Insert ( Source , FCStringAnsi : : Strlen ( Source ) , Dest . Num ( ) - 1 ) ; ;
2014-04-25 04:23:04 -04:00
}
else
{
2014-12-03 14:34:37 -05:00
Dest . Append ( Source , FCStringAnsi : : Strlen ( Source ) + 1 ) ;
2014-04-25 04:23:04 -04:00
}
}
2014-12-03 14:34:37 -05:00
inline void ReplaceCString ( TArray < ANSICHAR > & Dest , const ANSICHAR * Source , const ANSICHAR * Replacement )
2014-04-25 04:23:04 -04:00
{
2014-12-03 14:34:37 -05:00
int32 SourceLen = FCStringAnsi : : Strlen ( Source ) ;
int32 ReplacementLen = FCStringAnsi : : Strlen ( Replacement ) ;
int32 FoundIndex = 0 ;
for ( const ANSICHAR * FoundPointer = FCStringAnsi : : Strstr ( Dest . GetData ( ) , Source ) ;
nullptr ! = FoundPointer ;
FoundPointer = FCStringAnsi : : Strstr ( Dest . GetData ( ) + FoundIndex , Source ) )
2014-03-14 14:13:41 -04:00
{
2014-12-03 14:34:37 -05:00
FoundIndex = FoundPointer - Dest . GetData ( ) ;
Dest . RemoveAt ( FoundIndex , SourceLen ) ;
Dest . Insert ( Replacement , ReplacementLen , FoundIndex ) ;
2014-03-14 14:13:41 -04:00
}
}
2014-12-18 11:03:37 -05:00
inline const ANSICHAR * CStringEndOfLine ( const ANSICHAR * Text )
{
const ANSICHAR * LineEnd = FCStringAnsi : : Strchr ( Text , ' \n ' ) ;
if ( nullptr = = LineEnd )
{
LineEnd = Text + FCStringAnsi : : Strlen ( Text ) ;
}
return LineEnd ;
}
2015-01-06 17:57:40 -05:00
inline bool CStringIsBlankLine ( const ANSICHAR * Text )
{
while ( ! FCharAnsi : : IsLinebreak ( * Text ) )
{
if ( ! FCharAnsi : : IsWhitespace ( * Text ) )
{
return false ;
}
+ + Text ;
}
return true ;
}
2015-02-11 12:43:33 -05:00
inline int CStringCountOccurances ( TArray < ANSICHAR > & Source , const ANSICHAR * TargetString )
{
int32 TargetLen = FCStringAnsi : : Strlen ( TargetString ) ;
int Count = 0 ;
int32 FoundIndex = 0 ;
for ( const ANSICHAR * FoundPointer = FCStringAnsi : : Strstr ( Source . GetData ( ) , TargetString ) ;
nullptr ! = FoundPointer ;
FoundPointer = FCStringAnsi : : Strstr ( Source . GetData ( ) + FoundIndex , TargetString ) )
{
FoundIndex = FoundPointer - Source . GetData ( ) ;
FoundIndex + = TargetLen ;
Count + + ;
}
return Count ;
}
2014-12-18 11:03:37 -05:00
inline bool MoveHashLines ( TArray < ANSICHAR > & Dest , TArray < ANSICHAR > & Source )
{
// Walk through the lines to find the first non-# line...
const ANSICHAR * LineStart = Source . GetData ( ) ;
for ( bool FoundNonHashLine = false ; ! FoundNonHashLine ; )
{
const ANSICHAR * LineEnd = CStringEndOfLine ( LineStart ) ;
2015-01-06 17:57:40 -05:00
if ( LineStart [ 0 ] ! = ' # ' & & ! CStringIsBlankLine ( LineStart ) )
2014-12-18 11:03:37 -05:00
{
FoundNonHashLine = true ;
}
else if ( LineEnd [ 0 ] = = ' \n ' )
{
LineStart = LineEnd + 1 ;
}
else
{
LineStart = LineEnd ;
}
}
// Copy the hash lines over, if we found any. And delete from
// the source.
if ( LineStart > Source . GetData ( ) )
{
int32 LineLength = LineStart - Source . GetData ( ) ;
if ( Dest . Num ( ) > 0 )
{
Dest . Insert ( Source . GetData ( ) , LineLength , Dest . Num ( ) - 1 ) ;
}
else
{
Dest . Append ( Source . GetData ( ) , LineLength ) ;
2015-01-06 17:57:40 -05:00
Dest . Append ( " " , 1 ) ;
2014-12-18 11:03:37 -05:00
}
2015-01-06 17:57:40 -05:00
if ( Dest . Last ( 1 ) ! = ' \n ' )
2014-12-18 11:03:37 -05:00
{
2015-01-06 17:57:40 -05:00
Dest . Insert ( " \n " , 1 , Dest . Num ( ) - 1 ) ;
2014-12-18 11:03:37 -05:00
}
Source . RemoveAt ( 0 , LineStart - Source . GetData ( ) ) ;
return true ;
}
return false ;
}
2014-03-14 14:13:41 -04:00
}
2015-02-25 08:13:48 -05:00
inline uint32 GetTypeHash ( FAnsiCharArray const & CharArray )
{
return FCrc : : MemCrc32 ( CharArray . GetData ( ) , CharArray . Num ( ) * sizeof ( ANSICHAR ) ) ;
}
2015-02-25 10:25:20 -05:00
static void BindShaderLocations ( GLenum TypeEnum , GLuint Resource , uint16 InOutMask , const uint8 * RemapTable = nullptr )
2015-02-06 11:35:30 -05:00
{
if ( OpenGLShaderPlatformNeedsBindLocation ( GMaxRHIShaderPlatform ) )
{
ANSICHAR Buf [ 32 ] = { 0 } ;
switch ( TypeEnum )
{
case GL_VERTEX_SHADER :
{
uint32 Mask = InOutMask ;
uint32 Index = 0 ;
FCStringAnsi : : Strcpy ( Buf , " in_ATTRIBUTE " ) ;
while ( Mask )
{
if ( Mask & 0x1 )
{
if ( Index < 10 )
{
Buf [ 12 ] = ' 0 ' + Index ;
Buf [ 13 ] = 0 ;
}
else
{
Buf [ 12 ] = ' 1 ' ;
Buf [ 13 ] = ' 0 ' + ( Index % 10 ) ;
Buf [ 14 ] = 0 ;
}
2015-02-25 10:25:20 -05:00
if ( FOpenGL : : NeedsVertexAttribRemapTable ( ) )
{
check ( RemapTable ! = nullptr ) ;
uint32 MappedAttributeIndex = RemapTable [ Index ] ;
check ( MappedAttributeIndex < NUM_OPENGL_VERTEX_STREAMS ) ;
glBindAttribLocation ( Resource , MappedAttributeIndex , Buf ) ;
}
else
{
glBindAttribLocation ( Resource , Index , Buf ) ;
}
2015-02-06 11:35:30 -05:00
}
Index + + ;
Mask > > = 1 ;
}
break ;
}
case GL_FRAGMENT_SHADER :
{
uint32 Mask = ( InOutMask ) & 0x7fff ; // mask out the depth bit
uint32 Index = 0 ;
FCStringAnsi : : Strcpy ( Buf , " out_Target " ) ;
while ( Mask )
{
if ( Mask & 0x1 )
{
if ( Index < 10 )
{
Buf [ 10 ] = ' 0 ' + Index ;
Buf [ 11 ] = 0 ;
}
else
{
Buf [ 10 ] = ' 1 ' ;
Buf [ 11 ] = ' 0 ' + ( Index % 10 ) ;
Buf [ 12 ] = 0 ;
}
FOpenGL : : BindFragDataLocation ( Resource , Index , Buf ) ;
}
Index + + ;
Mask > > = 1 ;
}
break ;
}
case GL_GEOMETRY_SHADER :
case GL_COMPUTE_SHADER :
case GL_TESS_CONTROL_SHADER :
case GL_TESS_EVALUATION_SHADER :
break ;
default :
check ( 0 ) ;
break ;
}
}
}
2016-06-13 12:20:22 -04:00
// Helper to compile a shader and return success, logging errors if necessary.
GLint CompileCurrentShader ( const GLuint Resource , const FAnsiCharArray & GlslCode )
{
const ANSICHAR * GlslCodeString = GlslCode . GetData ( ) ;
int32 GlslCodeLength = GlslCode . Num ( ) - 1 ;
glShaderSource ( Resource , 1 , ( const GLchar * * ) & GlslCodeString , & GlslCodeLength ) ;
glCompileShader ( Resource ) ;
GLint CompileStatus = GL_TRUE ;
# if PLATFORM_ANDROID
// On Android the same shader is compiled with different hacks to find the right one(s) to apply so don't cache unless successful if currently testing them
if ( FOpenGL : : IsCheckingShaderCompilerHacks ( ) )
{
glGetShaderiv ( Resource , GL_COMPILE_STATUS , & CompileStatus ) ;
}
# endif
2016-12-08 22:53:00 -05:00
# if (PLATFORM_HTML5 || PLATFORM_ANDROID || PLATFORM_IOS) && !UE_BUILD_SHIPPING
2016-06-13 12:20:22 -04:00
if ( ! FOpenGL : : IsCheckingShaderCompilerHacks ( ) )
{
glGetShaderiv ( Resource , GL_COMPILE_STATUS , & CompileStatus ) ;
if ( CompileStatus = = GL_FALSE )
{
char Msg [ 2048 ] ;
glGetShaderInfoLog ( Resource , 2048 , nullptr , Msg ) ;
UE_LOG ( LogRHI , Error , TEXT ( " Shader compile failed: %s \n Original Source is (len %d) %s " ) , ANSI_TO_TCHAR ( Msg ) , GlslCodeLength , ANSI_TO_TCHAR ( GlslCodeString ) ) ;
}
}
# endif
# if PLATFORM_IOS // fix for running out of memory in the driver when compiling/linking a lot of shaders on the first frame
if ( FOpenGL : : IsLimitingShaderCompileCount ( ) )
{
static int CompileCount = 0 ;
CompileCount + + ;
if ( CompileCount = = 2500 )
{
glFlush ( ) ;
CompileCount = 0 ;
}
}
# endif
return CompileStatus ;
}
2014-03-14 14:13:41 -04:00
/**
* Compiles an OpenGL shader using the given GLSL microcode .
* @ returns the compiled shader upon success .
*/
template < typename ShaderType >
2015-09-25 17:34:00 -04:00
ShaderType * CompileOpenGLShader ( const TArray < uint8 > & InShaderCode )
2014-03-14 14:13:41 -04:00
{
SCOPE_CYCLE_COUNTER ( STAT_OpenGLShaderCompileTime ) ;
VERIFY_GL_SCOPE ( ) ;
2015-09-25 17:34:00 -04:00
FShaderCodeReader ShaderCode ( InShaderCode ) ;
2014-12-03 14:34:37 -05:00
ShaderType * Shader = nullptr ;
2014-03-14 14:13:41 -04:00
const GLenum TypeEnum = ShaderType : : TypeEnum ;
2015-09-25 17:34:00 -04:00
FMemoryReader Ar ( InShaderCode , true ) ;
Ar . SetLimitSize ( ShaderCode . GetActualShaderCodeSize ( ) ) ;
2014-03-14 14:13:41 -04:00
FOpenGLCodeHeader Header = { 0 } ;
Ar < < Header ;
// Suppress static code analysis warning about a potential comparison of two constants
CA_SUPPRESS ( 6326 ) ;
if ( Header . GlslMarker ! = 0x474c534c
| | ( TypeEnum = = GL_VERTEX_SHADER & & Header . FrequencyMarker ! = 0x5653 )
| | ( TypeEnum = = GL_FRAGMENT_SHADER & & Header . FrequencyMarker ! = 0x5053 )
| | ( TypeEnum = = GL_GEOMETRY_SHADER & & Header . FrequencyMarker ! = 0x4753 )
| | ( TypeEnum = = GL_COMPUTE_SHADER & & Header . FrequencyMarker ! = 0x4353 & & FOpenGL : : SupportsComputeShaders ( ) )
2014-04-30 23:51:07 -04:00
| | ( TypeEnum = = GL_TESS_CONTROL_SHADER & & Header . FrequencyMarker ! = 0x4853 & & FOpenGL : : SupportsTessellation ( ) ) /* hull shader*/
| | ( TypeEnum = = GL_TESS_EVALUATION_SHADER & & Header . FrequencyMarker ! = 0x4453 & & FOpenGL : : SupportsTessellation ( ) ) /* domain shader*/
2014-03-14 14:13:41 -04:00
)
{
UE_LOG ( LogRHI , Fatal ,
TEXT ( " Corrupt shader bytecode. GlslMarker=0x%08x FrequencyMarker=0x%04x " ) ,
Header . GlslMarker ,
Header . FrequencyMarker
) ;
2014-12-03 14:34:37 -05:00
return nullptr ;
2014-03-14 14:13:41 -04:00
}
int32 CodeOffset = Ar . Tell ( ) ;
2014-12-03 14:34:37 -05:00
// The code as given to us.
FAnsiCharArray GlslCodeOriginal ;
2015-09-25 17:34:00 -04:00
AppendCString ( GlslCodeOriginal , ( ANSICHAR * ) InShaderCode . GetData ( ) + CodeOffset ) ;
2015-01-29 12:34:05 -05:00
uint32 GlslCodeOriginalCRC = FCrc : : MemCrc_DEPRECATED ( GlslCodeOriginal . GetData ( ) , GlslCodeOriginal . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
2014-12-03 14:34:37 -05:00
// The amended code we actually compile.
FAnsiCharArray GlslCode ;
2014-03-14 14:13:41 -04:00
// Find the existing compiled shader in the cache.
2014-12-03 14:34:37 -05:00
FOpenGLCompiledShaderKey Key ( TypeEnum , GlslCodeOriginal . Num ( ) , GlslCodeOriginalCRC ) ;
2014-03-14 14:13:41 -04:00
GLuint Resource = GetOpenGLCompiledShaderCache ( ) . FindRef ( Key ) ;
if ( ! Resource )
{
# if CHECK_FOR_GL_SHADERS_TO_REPLACE
{
// 1. Check for specific file
2014-12-03 14:34:37 -05:00
FString PotentialShaderFileName = FString : : Printf ( TEXT ( " %s-%d-0x%x.txt " ) , ShaderNameFromShaderType ( TypeEnum ) , GlslCodeOriginal . Num ( ) , GlslCodeOriginalCRC ) ;
2014-03-14 14:13:41 -04:00
FString PotentialShaderFile = FPaths : : ProfilingDir ( ) ;
PotentialShaderFile * = PotentialShaderFileName ;
UE_LOG ( LogRHI , Log , TEXT ( " Looking for shader file '%s' for potential replacement. " ) , * PotentialShaderFileName ) ;
int64 FileSize = IFileManager : : Get ( ) . FileSize ( * PotentialShaderFile ) ;
if ( FileSize > 0 )
{
FArchive * Ar = IFileManager : : Get ( ) . CreateFileReader ( * PotentialShaderFile ) ;
if ( Ar ! = NULL )
{
2014-12-03 14:34:37 -05:00
UE_LOG ( LogRHI , Log , TEXT ( " Replacing %s shader with length %d and CRC 0x%x with the one from a file. " ) , ( TypeEnum = = GL_VERTEX_SHADER ) ? TEXT ( " vertex " ) : ( ( TypeEnum = = GL_FRAGMENT_SHADER ) ? TEXT ( " fragment " ) : TEXT ( " geometry " ) ) , GlslCodeOriginal . Num ( ) , GlslCodeOriginalCRC ) ;
2014-03-14 14:13:41 -04:00
2014-12-03 14:34:37 -05:00
// read in the file
GlslCodeOriginal . Empty ( ) ;
GlslCodeOriginal . AddUninitialized ( FileSize + 1 ) ;
Ar - > Serialize ( GlslCodeOriginal . GetData ( ) , FileSize ) ;
delete Ar ;
GlslCodeOriginal [ FileSize ] = 0 ;
2014-03-14 14:13:41 -04:00
}
}
}
# endif
2015-01-29 12:34:05 -05:00
Resource = FOpenGL : : CreateShader ( TypeEnum ) ;
2014-09-18 17:49:40 -04:00
2016-02-19 13:49:13 -05:00
// get a modified version of the shader based on device capabilities to compile (destructive to GlslCodeOriginal copy)
FOpenGLShaderDeviceCapabilities Capabilities ;
GetCurrentOpenGLShaderDeviceCapabilities ( Capabilities ) ;
GLSLToDeviceCompatibleGLSL ( GlslCodeOriginal , Header . ShaderName , TypeEnum , Capabilities , GlslCode ) ;
2014-12-03 14:34:37 -05:00
2015-02-06 11:35:30 -05:00
GLint CompileStatus = GL_TRUE ;
2016-06-13 12:20:22 -04:00
// Save the code and defer compilation if our device supports program binaries and we're not checking for shader compatibility.
if ( ! FOpenGLProgramBinaryCache : : DeferShaderCompilation ( Resource , GlslCode ) )
2015-07-29 15:34:49 -04:00
{
2016-06-13 12:20:22 -04:00
CompileStatus = CompileCurrentShader ( Resource , GlslCode ) ;
2015-07-29 15:34:49 -04:00
}
2015-02-20 04:41:01 -05:00
2015-02-06 11:35:30 -05:00
if ( CompileStatus = = GL_TRUE )
2015-01-21 19:39:24 -05:00
{
2016-02-19 13:49:13 -05:00
if ( Capabilities . bSupportsSeparateShaderObjects )
2015-02-06 11:35:30 -05:00
{
ANSICHAR Buf [ 32 ] = { 0 } ;
// Create separate shader program
GLuint SeparateResource = FOpenGL : : CreateProgram ( ) ;
FOpenGL : : ProgramParameter ( SeparateResource , GL_PROGRAM_SEPARABLE , GL_TRUE ) ;
glAttachShader ( SeparateResource , Resource ) ;
glLinkProgram ( SeparateResource ) ;
bool const bLinkedOK = VerifyLinkedProgram ( SeparateResource ) ;
2015-07-03 06:26:29 -04:00
if ( ! bLinkedOK )
2015-02-06 11:35:30 -05:00
{
2016-06-13 12:20:22 -04:00
const ANSICHAR * GlslCodeString = GlslCode . GetData ( ) ;
2015-02-06 11:35:30 -05:00
check ( VerifyCompiledShader ( Resource , GlslCodeString ) ) ;
}
# if ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION
void VerifyUniformBufferLayouts ( GLuint Program ) ;
VerifyUniformBufferLayouts ( SeparateResource ) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION
Resource = SeparateResource ;
}
// Cache it; compile status will be checked later on link (always caching will prevent multiple attempts to compile a failed shader)
2015-01-21 19:39:24 -05:00
GetOpenGLCompiledShaderCache ( ) . Add ( Key , Resource ) ;
}
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
}
Shader = new ShaderType ( ) ;
2014-03-14 14:13:41 -04:00
Shader - > Resource = Resource ;
Shader - > Bindings = Header . Bindings ;
Shader - > UniformBuffersCopyInfo = Header . UniformBuffersCopyInfo ;
2015-02-09 13:32:07 -05:00
// If there is no shader cache then we must assign the hash here
if ( FOpenGL : : SupportsSeparateShaderObjects ( ) & & ! FShaderCache : : GetShaderCache ( ) )
{
// Just use the CRC - if it isn't being cached & logged we'll be dependent on the CRC alone anyway
FSHAHash Hash ;
FMemory : : Memcpy ( Hash . Hash , & GlslCodeOriginalCRC , sizeof ( uint32 ) ) ;
Shader - > SetHash ( Hash ) ;
}
2014-03-14 14:13:41 -04:00
# if DEBUG_GL_SHADERS
2014-12-03 14:34:37 -05:00
Shader - > GlslCode = GlslCode ;
2014-09-29 07:04:08 -04:00
Shader - > GlslCodeString = ( ANSICHAR * ) Shader - > GlslCode . GetData ( ) ;
2014-03-14 14:13:41 -04:00
# endif
return Shader ;
}
2016-02-19 13:49:13 -05:00
void OPENGLDRV_API GetCurrentOpenGLShaderDeviceCapabilities ( FOpenGLShaderDeviceCapabilities & Capabilities )
{
FMemory : : Memzero ( Capabilities ) ;
# if PLATFORM_DESKTOP
Capabilities . TargetPlatform = EOpenGLShaderTargetPlatform : : OGLSTP_Desktop ;
# elif PLATFORM_ANDROID
Capabilities . TargetPlatform = EOpenGLShaderTargetPlatform : : OGLSTP_Android ;
Capabilities . bUseES30ShadingLanguage = FOpenGL : : UseES30ShadingLanguage ( ) ;
Capabilities . bSupportsStandardDerivativesExtension = FOpenGL : : SupportsStandardDerivativesExtension ( ) ;
Capabilities . bSupportsRenderTargetFormat_PF_FloatRGBA = GSupportsRenderTargetFormat_PF_FloatRGBA ;
Capabilities . bSupportsShaderFramebufferFetch = FOpenGL : : SupportsShaderFramebufferFetch ( ) ;
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
Capabilities . bRequiresARMShaderFramebufferFetchDepthStencilUndef = FOpenGL : : RequiresARMShaderFramebufferFetchDepthStencilUndef ( ) ;
2016-02-19 13:49:13 -05:00
Capabilities . bRequiresDontEmitPrecisionForTextureSamplers = FOpenGL : : RequiresDontEmitPrecisionForTextureSamplers ( ) ;
Capabilities . bSupportsShaderTextureLod = FOpenGL : : SupportsShaderTextureLod ( ) ;
Capabilities . bSupportsShaderTextureCubeLod = FOpenGL : : SupportsShaderTextureCubeLod ( ) ;
Capabilities . bRequiresTextureCubeLodEXTToTextureCubeLodDefine = FOpenGL : : RequiresTextureCubeLodEXTToTextureCubeLodDefine ( ) ;
Capabilities . bRequiresGLFragCoordVaryingLimitHack = FOpenGL : : RequiresGLFragCoordVaryingLimitHack ( ) ;
Capabilities . MaxVaryingVectors = FOpenGL : : GetMaxVaryingVectors ( ) ;
Capabilities . bRequiresTexture2DPrecisionHack = FOpenGL : : RequiresTexture2DPrecisionHack ( ) ;
# elif PLATFORM_HTML5
Capabilities . TargetPlatform = EOpenGLShaderTargetPlatform : : OGLSTP_HTML5 ;
Capabilities . bUseES30ShadingLanguage = FOpenGL : : UseES30ShadingLanguage ( ) ;
Capabilities . bSupportsShaderTextureLod = FOpenGL : : SupportsShaderTextureLod ( ) ;
# elif PLATFORM_IOS
Capabilities . TargetPlatform = EOpenGLShaderTargetPlatform : : OGLSTP_iOS ;
# else
Capabilities . TargetPlatform = EOpenGLShaderTargetPlatform : : OGLSTP_Unknown ;
# endif
Capabilities . MaxRHIShaderPlatform = GMaxRHIShaderPlatform ;
Capabilities . bSupportsSeparateShaderObjects = FOpenGL : : SupportsSeparateShaderObjects ( ) ;
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 3383462)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3292174 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- Linux toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292193 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- ThirdParty libs compiled with new toolchain with wasm support
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292215 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and wbegl2 support
- emscripten toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292222 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm support
- ENGINE changes (c# & cpp files)
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292223 on 2017/02/08 by Nick.Shin
HTML5 merge ThirdParty lib build scripts from Dev-Platform to Dev-Mobile
Change 3292228 on 2017/02/08 by Nick.Shin
HTML5 emscripten: webgl support
- webgl patches
- and a lot of UE4 patches to package HTML5 on LINUX
- mostly from mozilla's jukka -- thx jukka!
#jira UEPLAT-828 (4.16) Support ES3 / WebGL2 in HTML5
Change 3292285 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- Windows toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3293994 on 2017/02/09 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- OSX toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3294391 on 2017/02/09 by Nick.Shin
HTML5 "black box issues" revisited
- jukka rewrote the window resize handler -- much cleaner and more straightforward
#jira UE-36341 HTML5 - View is incorrectly drawn
#jira UE-32311 Templates on Firefox/Chrome on HTML5 are not full screen during Launch On
Change 3296421 on 2017/02/10 by Jack.Porter
Fix landscape spline segment splitting placing when using streaming levels
Change 3296587 on 2017/02/10 by Jack.Porter
Additional fix for landscape spline segment splitting when using streaming levels
Change 3301241 on 2017/02/14 by Mi.Wang
Fixed DeviceProfileEditor bug for incorrect clamp the Texture Mip LOD size. #jira UE-36237 #rb jack.porter
Change 3301387 on 2017/02/14 by Nick.Shin
HTML5 emscripten: webgl support
- webgl patches from mozilla's jukka
+ hardware instancing
+ glBlitFramebuffer
+ GL AlaphaBlendOperation
#jira UEPLAT-828 (4.16) Support ES3 / WebGL2 in HTML5
Change 3301405 on 2017/02/14 by Nick.Shin
HTML5 plugin fix when blueprint projects are promoted to code projects automatically.
#jira UE-41710 HTML5 - Package Failure - Failed to Produce item ProjectName-OnlineSubsystemNull.bc
Change 3302278 on 2017/02/14 by Omar.Rodriguez
UE-36651: Mac Vulkan Android Projects crash on launch.
* Glslang library has been built for Mac but flag was not updated
* Set GlslangAvailable to true for Mac when building an Android project with vulkan
#jira UE-36651
Change 3302773 on 2017/02/14 by Chris.Babcock
Add a dropdown with some common console commands on Android (contributed by rafortis)
#jira UE-40834
#PR #3143
#ue4
#android
Change 3305604 on 2017/02/16 by Nick.Shin
HTML5 webgl2 shader- turn on: instance static mesh vertex factory
#jira UEPLAT-828 (4.16) Support ES3 / WebGL2 in HTML5
Change 3308154 on 2017/02/16 by Nick.Shin
HTML5 GitHub PR
#jira UE-42019 GitHub 3258 : Added suport for emscripten --pre-js and --post-js option when building for HTML5
Change 3308510 on 2017/02/16 by Nick.Shin
HTML5 webgl2 shader fixes
#jria UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3308971 on 2017/02/17 by Jack.Porter
Fix for landscape painting when height<0 in the Ortho viewports
Change 3309075 on 2017/02/17 by Allan.Bentham
Include static subject meshes when masking out modulated shadow casters.
#jira UE-41581
Change 3309531 on 2017/02/17 by Chris.Babcock
Handle large OBB files in APK
#jira UE-41443
#ue4
#android
Change 3311320 on 2017/02/19 by Dmitriy.Dyomin
Fixed: Particle Cutout Crashes On Mobile Devices That Don't Support Hardware Instancing (Mali-400 GPU)
#jira UE-41970
Change 3311347 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Engine Crashes When Previewing ES3_1 With Material Using World Position Offset (Need Custom Stencil)
#jira UE-41976
Change 3311398 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Landscapes do not render on PowerVR device
#jira UE-35530
Change 3311428 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Exposure Is More Extreme In High-End Mobile Preview Modes
#jira UE-42036
Change 3311448 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Packaged game Crashes on android after entering "Help" command twice
#jira UE-41956
Change 3311587 on 2017/02/20 by Allan.Bentham
ES2 GLSL - Silently swap all uint to ints
#jira UE-41548
Change 3313930 on 2017/02/21 by Allan.Bentham
Print literal uints as ints when generating ES2 code.
#jira UE-41548
Change 3317924 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- Linux toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3317929 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- ThirdParty libs compiled with new toolchain with wasm and webgl2 support
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3317951 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- emscripten toolchain
WARNING: emscripten/incoming/source/include/libc/bit (the file) might need to be deleted first
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318004 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- windows toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318669 on 2017/02/23 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- OSX toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318672 on 2017/02/23 by Nick.Shin
HTML5 webgl2 shader fixes
#jria UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318819 on 2017/02/23 by Dmitriy.Dyomin
Fixed: Rendering artifacts with bloom on iPhone7 Metal
#jira UE-40978
Change 3319702 on 2017/02/23 by Chris.Babcock
Disable eglSwapInterval since it can cause issues with some drivers
#ue4
#android
Change 3320880 on 2017/02/24 by Dmitriy.Dyomin
Added r.Mobile.TonemapperFilm cvar which can be used to enable/disable filmic tonemapper on mobile, independently from desktop (disabled by default)
#jira UEMOB-195
Change 3321042 on 2017/02/24 by Jack.Porter
Fixed incorrect sizeof in Vulkan pipleine cache
pointed out here: http://coconutlizard.co.uk/blog/ue4/ue4-its-a-size-jim/
#code_review: rolando.caloca
Change 3322383 on 2017/02/24 by Chris.Babcock
Fix issue with ad banner on Android 7.0 devices
#jira UE-42390
#ue4
#android
Change 3322479 on 2017/02/24 by Omar.Rodriguez
UEMOB-199 - WEX: Improved virtual keyboard for Android
* Calculating the area covered by the virtual keyboard
* Calling OnVirtualKeyboardShown and OnVirtualKeyboardHidden events
* Passing the Rect of the area covered by the virtual keyboard OnVirtualKeyboardShown event
#jira UEMOB-199
Change 3323353 on 2017/02/27 by Allan.Bentham
Fix broken mobile scene captures when !mobileHDR and RHINeedsToSwitchVerticalAxis
#jira UE-42191
Change 3323431 on 2017/02/27 by Allan.Bentham
CIS fix
Change 3323687 on 2017/02/27 by Allan.Bentham
Disable GRHINeedsUnatlasedCSMDepthsWorkaround for mobile devices.
#jira UE-42131
Change 3324652 on 2017/02/28 by Dmitriy.Dyomin
Fixed: Canvas elements appear darker on iOS Metal
Change 3324885 on 2017/02/28 by Jack.Porter
Fixed "Minimum iOS Version" setting display name
#jira UE-42270
Change 3324899 on 2017/02/28 by Jack.Porter
GitHub 3063 : removed duplicate gc.MaxObjectsInGame setting in IOSEngine.ini
#jira UE-40018
#3063
Change 3324932 on 2017/02/28 by Jack.Porter
GitHub 3257 : iPhonePackager errors in output log when opening project settings on Windows
#jira UE-41984
#3257
#codereview: Peter.Sauerbrei
Change 3324956 on 2017/02/28 by Jack.Porter
FOpenGLFrontend::GetMaxSamplers incorrect for IOS
#jira UE-42038
#3264
Change 3325478 on 2017/02/28 by Allan.Bentham
PR # 3188 : Fix far distance bug with cascaded shadows on mobile (Metal) and PC mobile preview (Contributed by ufna)
#jira UE-41442
Change 3327300 on 2017/03/01 by Allan.Bentham
PR #3175 : Fixes high quality reflection blending seams (Contributed by kallehamalainen)
#jira UE-41257
Change 3328917 on 2017/03/02 by Nick.Shin
HTML5 project settings
expose ini settings to edtior HTML5 project settings panel
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
#jira UE-41584 Editor locks up when adding an element for HTML5 devices on Mac
#jira UE-41701 Editor freezes when setting browser filepath for inserted element in project settings
Change 3329169 on 2017/03/02 by Allan.Bentham
increase render thread timeout to 1 minute for suntemple / android.
Prevents low end devices timing out during load.
#jira UE-40696
Change 3330849 on 2017/03/02 by Nick.Shin
HTML5 project settings
expose ini settings to edtior HTML5 project settings panel
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
Change 3331078 on 2017/03/03 by Dmitriy.Dyomin
Fixed: Device output log partial lines
integrated from WEX (3250488)
Change 3331112 on 2017/03/03 by Dmitriy.Dyomin
Reduced state setup for slate draw calls (saves about 4ms RT time on mobile)
integrated from WEX (3256584)
Change 3331117 on 2017/03/03 by Dmitriy.Dyomin
Fixed redundant blend state changes in opengl
integrated from WEX (3256586)
Change 3331173 on 2017/03/03 by Dmitriy.Dyomin
Slate pixel shaders will use half precision where possible on mobile
integrated from WEX (3256656)
Change 3332865 on 2017/03/06 by Dmitriy.Dyomin
Better MobileContentScaleFactor defaults for iOS devices
#jira UEMOB-330
Change 3333129 on 2017/03/06 by Peter.Sauerbrei
move to Library/Caches instead of documents for saved files
re-enable iterative deploy on TVOS
#jira UEMOB-284
Change 3334692 on 2017/03/06 by Jack.Porter
Allow r.MobileContentScaleFactor to be changed at runtime on Android
#jira UEMOB-173
Change 3336255 on 2017/03/07 by Nick.Shin
HTML5 project settings
marking SIMD and multithreading as experimental - these do not play nice with WASM builds currently...
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
Change 3337094 on 2017/03/08 by Nick.Shin
HTML5 project settings
marking SIMD and multithreading as experimental - these do not play nice with WASM builds currently...
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
Change 3338800 on 2017/03/08 by Chris.Babcock
Update AAR handling to deal with versioning, subproject dependencies for resources, and scope
#jira UE-42677
#ue4
#android
Change 3338813 on 2017/03/08 by Chris.Babcock
Pass build configuration to UPL for access during packaging as $S(Configuration)
#jira UE-42678
#ue4
#android
#ios
Change 3339401 on 2017/03/09 by Alicia.Cano
Android runtime permissions
- Fix for WRITE_EXTERNAL_STORAGE if it is not granted at time of onCreate for non-shipping builds
- Fix for Location Services
- Fix for if target sdk is not set to 23+
#jira UE-38512
#android
#rb: chris.babcock
Change 3340736 on 2017/03/09 by Chris.Babcock
Implement support for new controllers (Xbox Wireless, SteelSeries Stratus XL, PS4) (contributed by TRS-justing)
#jira UE-41965
#PR #3254
#ue4
#android
Change 3340744 on 2017/03/09 by Jack.Porter
Expose Custom Depth to Foliage
#jira UE-6061
Change 3340849 on 2017/03/09 by Dmitriy.Dyomin
Fixed: iOS movie become laggy and crashes when played in iPhone 6/6s.
#jira UE-42351
Change 3341268 on 2017/03/10 by Alicia.Cano
PR #2894: Initial VoiceModuleAndroid support. (Contributed by devbm)
#jira UE-37945
#android
#rb: chris.babcock, jack.porter
Change 3341303 on 2017/03/10 by Allan.Bentham
Remove optimisation that prevents full specular occulsion on mobile.
PR #3186 : Specular can't be blocked on high-end mobile.
#jira UE-41393
Change 3342304 on 2017/03/10 by Alicia.Cano
build fix
#rb: chris.babcock
Change 3343344 on 2017/03/13 by Alicia.Cano
build fix
#rb: chris.babcock
Change 3343591 on 2017/03/13 by Brent.Pease
iOS multiplayer fix part 1. Correct byte ordering.
#jira UE-34875
Change 3343669 on 2017/03/13 by Chris.Babcock
Update carefullyredist script version
#jira UE-42832
Change 3344212 on 2017/03/13 by Will.Fissler
Various compile fixes for Xcode 8.3.
These fixes must also be added to //UE4/Release-4.15.
#jira UE-41313
Change 3344396 on 2017/03/13 by Chris.Babcock
Fix Java 1.5 obsolete warnings
#jira UE-42851
#ue4
#android
Change 3345132 on 2017/03/14 by Will.Fissler
Added ifdef wrapper to check clang version for presentDrawable.
Change 3345336 on 2017/03/14 by Will.Fissler
Moved #if (__clang_major__ > 8) || (__clang_major__ == 8 && __clang_minor__ >= 1) check inside of the presentDrawable method.
Change 3345460 on 2017/03/14 by Will.Fissler
ifdef changes for presentDrawable. The last submission duped the changes, instead of merging. #rb none
Change 3346046 on 2017/03/14 by Will.Fissler
Fixed MetalCommandBuffer.cpp [again] after last submission duped changes instead of merging.
Change 3346367 on 2017/03/14 by Chris.Babcock
Fix issue with GoogleVR ARMv7 libraries included for other architectures in link
#ue4
#android
Change 3347682 on 2017/03/15 by Allan.Bentham
Enable HW sRGB correction with retainer widget's render target.
Use slate's gamma correction for mobile (where no such support exists)
Render retainer box RT content with gamma correction.
#jira UE-40967
Change 3348712 on 2017/03/15 by Nick.Shin
HTML5 - upload to S3
updated to AWS "signature version 4" authentication
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3349254 on 2017/03/16 by Jack.Porter
Fix for crash using the mobile previewer when the LQ lightmap shader permutation is disabled.
#jira UE-42971
Change 3349739 on 2017/03/16 by Nick.Shin
HTML5 - upload to S3
better error message feedback on upload failures
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3349765 on 2017/03/16 by Alicia.Cano
Disable mouseover events in Mobile Previewer
#jira UE-19903
#mobile
#rb: Jack.Porter
Change 3350049 on 2017/03/16 by Nick.Shin
HTML5 - upload to S3
folder in bucket is optional
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3350153 on 2017/03/16 by Nick.Shin
HTML5 - upload to S3
updated S3 public link generator
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3351582 on 2017/03/17 by Will.Fissler
Reverting the attempted fix for Xcode 8.3: Result += " -mcpu=cortex-a9";
Currently we cannot build arm64 for iOS with this change.
Change 3352085 on 2017/03/17 by Alicia.Cano
iOS doesn't honor request to close the virtual keyboard leading to a crash
#jira UE-36447
#ios
#rb:Peter.Sauerbrei
Change 3353313 on 2017/03/19 by Ben.Marsh
Always allow large *.js files in Github.
Change 3354444 on 2017/03/20 by Nick.Shin
HTML5 - upload to S3
to help make it obvious that "upload to S3" checkbox is set/or not -- disable S3 details if checkbox for "uploading to S3" is not set
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3355618 on 2017/03/20 by Nick.Shin
HTML5 Save Game System
- ripped out HTML5 code [from Engine's SaveGameSystem.h] and placed it in HTML5Platform.cpp
- cleaned up HTML5PlatformFile.cpp (make it match as clost to linux's version)
- created HTML5's own PlatformFeature & SaveGameSystem files -- and updated HTML5PlatformMisc to make use of the the new HTML5 SaveGame code
#jira UE-42081 Remove heinous HTML5 code from engine
Change 3355621 on 2017/03/20 by Nick.Shin
remove temp debugging code
#jira UE-42081 Remove heinous HTML5 code from engine
Change 3356937 on 2017/03/21 by Chris.Babcock
Add "stat vulkanrhi" to new console dropdown
#jira UE-43149
#ue4
#android
Change 3357652 on 2017/03/21 by Nick.Shin
HTML5 performance speed ups
added "use fixed timestep" setting option for HTML5 builds (this has been separated from Engine - General Settings - Framerate)
- this is slightly different to smooth framerate and fixed framerate - thus, the timestep option was put in the HTML5 specific panel
this option is based on the suggestions by jukka's post:
- https://answers.unrealengine.com/questions/409629/smooth-frame-rate-and-use-fixed-frame-rate-should.html
however, using this option will make the player "run faster" on (for example) thirdperson blueprint template -- but, it has no effect on other (for example) zen garden...
#jira UE-30214 - Implement a warning message for fps settings
Change 3360415 on 2017/03/23 by Allan.Bentham
Fix crash that occurs when ES3.1 preview is used with r.MobileHDR32bppMode modes.
Change 3360418 on 2017/03/23 by Allan.Bentham
Disable filmic tonemapper if r.MobileHDR32bppMode is in use.
#jira UE-40913
Change 3360557 on 2017/03/23 by Allan.Bentham
Better fix for mobile CSM shadow flickering (UE-42131), now works for PC OpenGL based mobile preview.
#jira UE-42131
Change 3362258 on 2017/03/23 by Dmitriy.Dyomin
Fixed: Canvas texture element gamma issues on iOS Metal
Change 3362321 on 2017/03/24 by Dmitriy.Dyomin
GitHub 3173 : MaterialAO support for mobile rendering path (contributed by kallehamalainen)
#3173
Change 3363550 on 2017/03/24 by Alicia.Cano
build fix for devices < Android 5.0
#jira UE-43299
#android
#rb: chris.babcock
Change 3363687 on 2017/03/24 by Chris.Babcock
Fix Android password hiding in input dialog
#jira WEX-5159
#ue4
#android
Change 3365280 on 2017/03/27 by Dmitriy.Dyomin
Fix for GL_EXT_shader_framebuffer_fetch on Zenfone5. Use UE_EXT_shader_framebuffer_fetch define on all devices to enable extension
Change 3365291 on 2017/03/27 by Dmitriy.Dyomin
Copied form WEX CL# 3308653
Fixed: Enabling shader cache causes crash on NVIDIA Shield
#jira UE-41639
Change 3365293 on 2017/03/27 by Dmitriy.Dyomin
GitHub 3411 : Fix crash in patching utils mount method (contributed by nverenik)
#jira UE-43247
#3411
Change 3365340 on 2017/03/27 by Dmitriy.Dyomin
Fixed: Moving sublevel in world composition browser does not appear in Undo History
#jira UE-35535
Change 3365564 on 2017/03/27 by Allan.Bentham
SkyLightComponent now serializes IrradianceMap SH values.
clicking Recapture sky button in mobile preview switches back to SM4/5 to update captures.
Skylights that are dirty from load will trigger reflection capture update once shaders are rebuilt.
#jira UE-42436
Change 3366282 on 2017/03/27 by Nick.Shin
remove dead links
these files to not exist anywhere in the make-3.81 subfolders
#UDN-354501
#jira none
Change 3366306 on 2017/03/27 by Nick.Shin
HTML5 - disable multi-threading for wasm
#jira UE-43219 - HTML5 disable multi-threading for wasm
Change 3366307 on 2017/03/27 by Nick.Shin
HTML5 packaging Shipping builds
big cleanup / additions to *gz file support for amazon s3
* both, uploading to s3
* and allowing s3 to host the games there
#jira UE-43002 HTML5 in Shipping fails downloading symbols files
#jria UE-43001 HTML5 Shipping Projects fail looking for compressed files when "Compress files during shipping packaging" is not selected.
Change 3367385 on 2017/03/28 by Allan.Bentham
Display skylight serialization warning only when cooking for mobile platforms.
#jira UE-42436
Change 3368583 on 2017/03/28 by Chris.Babcock
Expose JAVA_HOME setting in Android SDK project settings on Mac
#jira UE-43418
#ue4
#android
Change 3368803 on 2017/03/28 by Chris.Babcock
Fix features requested in manifest for "Daydream and Cardboard" mode
#jira UE-43314
#ue4
#android
Change 3369087 on 2017/03/28 by Jack.Porter
Changed tooltip and added supported devices in paretheses for Android Mobile Deferred / ES31+AEP
#jira UE-42438
Change 3369372 on 2017/03/29 by Allan.Bentham
Fix disappearing meshes when r.mobile.allowdistancefieldshadows is disabled.
#jira UE-43366
Change 3369381 on 2017/03/29 by Jack.Porter
Show warnings when mobile shader permutations required for rendering are disbaled
Made FReadOnlyCVARCache a singleton and added mobile CVars, used for MobileBasePassRendering.
#jira UE-43050
Change 3369430 on 2017/03/29 by Allan.Bentham
fix CIS build
Change 3369740 on 2017/03/29 by Allan.Bentham
Added Android option to enable builds with hidden symbol visbility by default. (bBuildWithHiddenSymbolVisibility)
Android links with -gc-sections to remove unused code/data
Add JNI_METHOD for java accessible native functions, fixed up existing JNI functions to use macro.
Add support for map file generation with android.
Add 'bBuildWithHiddenSymbolVisibility' to AndroidPlatform.HasDefaultBuildConfig()
bBuildWithHiddenSymbolVisibility defaults to false in BaseEngine.ini
#jira UEMOB-168
Change 3369975 on 2017/03/29 by Nick.Shin
HTML5 - AWS S3 shareable link for shipping builds corrected
#jira UE-43379 Amazon S3 Shareable link does not generate correct filepath.
Change 3369998 on 2017/03/29 by Nick.Shin
HTML5 python build scripts
PR:
https://github.com/Mozilla-Games/UnrealEngine/commit/1cb836d43c3015c6ca0fdd039072bb6c5c273db3
#jira none
Change 3370214 on 2017/03/29 by Nick.Shin
HTML5 - default bUseFixedTimeStep to false...
#jira UE-43380 - Default HTML5 gamespeed is faster than equivalent platforms
Change 3370762 on 2017/03/29 by Chris.Babcock
Fixes to new keyboard for Android
- Ensure the local scope ScreenRect passed into OnVirtualKeyboardShown in AndroidJNI is captured by value instead of by reference.
- Moved ShowVirtualKeyboardInput's bKeyboardShowing early-out checks into the UI thread task. This allows the keyboard to continue showing when changing focus between multiple EditableTextBox widgets.
#ue4
#android
Change 3371344 on 2017/03/30 by Jack.Porter
Fixed issue where Vulkan screenshot R/B channels were reversed on Android
#jira UE-43479
Change 3372926 on 2017/03/30 by Peter.Sauerbrei
start the process of sunsetting 32-bit and GLES2 on iOS
#jira UE-42266
Change 3372970 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- windows toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3372989 on 2017/03/30 by Peter.Sauerbrei
fix for Xcode 8.3 build with 32-bit
Change 3373007 on 2017/03/30 by Peter.Sauerbrei
fix for crash when online subsystem is disabled on IOS
Change 3373108 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- emscripten toolchain
WARNING: emscripten/incoming/source/include/libc/bit (the file) might need to be deleted first
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3373163 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- OSX toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3373169 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
license file updated
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rnx
Change 3373287 on 2017/03/30 by Nick.Shin
HTML5 - 1.36.11 emscripten - remove old SDK
#jira none
#rnx
Change 3373289 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- Linux toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3373595 on 2017/03/30 by Chris.Babcock
Reenable GooglePlay for ARM64 now that it doesn't crash
#jira UE-36198
#ue4
#android
Change 3373606 on 2017/03/30 by Chris.Babcock
Submitting Allan's shelved EXT_shader_framebuffer_fetch fix
#ue4
#android
Change 3375456 on 2017/03/31 by Chris.Babcock
Add missing keycodes for Android keyboard (@ and #)
#jira WEX-5777
#ue4
#android
Change 3376309 on 2017/04/03 by Allan.Bentham
Fix overflow issues with mobile DoF.
Change 3377041 on 2017/04/03 by Will.Fissler
Adding Testbed content for PlatformShowcase.
Change 3377582 on 2017/04/03 by Alicia.Cano
adding back in GET_ACCOUNTS permission as it is required for Reset Achievements
#jira: UE-43265
#android
#rb: Chris.Babcock
Change 3377643 on 2017/04/03 by Peter.Sauerbrei
fix for memory leak in MallocBinned
#jira UE-43008
Change 3378033 on 2017/04/04 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- ThirdParty libs compiled with new toolchain with wasm and webgl2 support
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3378034 on 2017/04/04 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- ThirdParty build scripts
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3378035 on 2017/04/04 by Nick.Shin
HTML5 - Update GameX template to make it work with trunk Emscripten
PR
https://github.com/Mozilla-Games/UnrealEngine/commit/dc2b26f452948f8ee07178bc3e8742af80d8919a#commitcomment-21454978
#jira none
#rn
Change 3378044 on 2017/04/04 by Nick.Shin
HTML5 harfbuzz - double checking recompiled with NO multithreading
wasm currently does not support pthreads
*** THIS IS STILL WIP ***
checking in to match 3rd party libs compiled configuration
#jira UE-28588 - Build HarfBuzz for HTML5
#rnx
Change 3378264 on 2017/04/04 by Allan.Bentham
Fix crash when using consolas font on android sdk 24
#jira UE-43464
Change 3379097 on 2017/04/04 by Nick.Shin
CIS HTML5 build warning fix
#jria none
#rnx
Change 3379333 on 2017/04/04 by Chris.Babcock
Prevent inserting extra permissions into manifest multiple times
#jira UE-43583
#ue4
#android
Change 3380870 on 2017/04/05 by Chris.Babcock
Fix merge issue
Change 3380898 on 2017/04/05 by Chris.Babcock
Fixed again
Change 3381443 on 2017/04/05 by Chris.Babcock
Fix for GearVR non-unity build
#ue4
#android
Change 3381941 on 2017/04/05 by Chris.Babcock
Fix HTTPChunkInstaller texture format checks and missing #define warning
#jira UE-43706
#ue4
#android
Change 3382056 on 2017/04/05 by Chris.Babcock
Updates to Android AARs needed for Facebook plugin
Change 3382097 on 2017/04/05 by Chris.Babcock
Disable java console cmd receiver only in shipping builds
#jira UE-43710
#ue4
#android
Change 3382497 on 2017/04/06 by Allan.Bentham
Fix Fortnite Cooked Server crashes when joining game from lobby.
#jira UE-43695
Change 3383227 on 2017/04/06 by Will.Fissler
Reverted case sensitive change, from yesterday, and implemented a pragma instead.
#jira UE-41313
[CL 3383473 by Jack Porter in Main branch]
2017-04-06 16:13:17 -04:00
# if OPENGL_ES2 || OPENGL_ESDEFERRED
Capabilities . bRequiresUEShaderFramebufferFetchDef = FOpenGL : : RequiresUEShaderFramebufferFetchDef ( ) ;
# endif
2016-02-19 13:49:13 -05:00
}
void OPENGLDRV_API GLSLToDeviceCompatibleGLSL ( FAnsiCharArray & GlslCodeOriginal , const FString & ShaderName , GLenum TypeEnum , const FOpenGLShaderDeviceCapabilities & Capabilities , FAnsiCharArray & GlslCode )
{
2016-03-16 21:16:51 -04:00
// Whether shader was compiled for ES 3.1
const bool bES31 = ( FCStringAnsi : : Strstr ( GlslCodeOriginal . GetData ( ) , " #version 310 es " ) ! = nullptr ) ;
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3145687)
#lockdown Nick.Penwarden
#rb Merge
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3094167 on 2016/08/18 by Jeff.Fisher
UEVR-97 Morpheus HMD tracking needs to wait until HMD is fully tracked.
-Morpheus CALIBRATING/NOT_TRACKED tracking state hmd orientation update disabled and delegates added to present instructions to the user. This behavior is controlled by morpheus ini setting bDisableHMDOrientationUntilHMDHasBeenTracked, but defaulted to true to avoid subtly bad user experiences.
#review-3094106 @chad.taylor
#jira UEVR-97
Change 3104799 on 2016/08/29 by Jeff.Fisher
UEVR-178 Morpheus HMD Black crescents
-Switched reprojection frame time for 60/120 mode from 120hz to 60hz so we much better predict where the hmd will be pointing when the frame we are about to render is actually displayed, and are run off the edge of it less often and less severely. This makes the black crescent artifacts only just visible during very fast head turning. The kWrapModeMirror change, which will be submitted separately, makes the left and right crescents invisible to me.
-Renamed the functions for setting the prediction info in the PS4Tracker.
-Added render frame parameters to sony reprojection functions, these can help with debugging reprojection.
-Added commented out sce call to get the reprojection debug data. Not allowed to submit an executable that calls it, but its nice to at least know where one can put it. May improve this later.
-Wrapped PS4Tracker->Synchronize call in a check that the tracker handle is valid, because I managed to get it called when it wasn't (probably during hmd power off testing, but I don't remember now). It should be fine to not do it if the tracker is not functioning.
#review-3104780 chad.taylor
#jira UEVR-178
Change 3108423 on 2016/08/31 by Jeff.Fisher
Morpheus Config Improvements.
-UEVR-138 Morpheus HMD reprojection wrap mode config setting
-Can now switch between wrap mode Mirror and ClampToBorder. Mirror is the default.
-Made bDisableHMDOrientationUntilHMDHasBeenTracked editable in UE4Editor project settings.
-Using generic project setting for bStartInVR, removed the morpheus specific one.
#jira UEVR-138
#review-3106999 @nick.whiting
Change 3111231 on 2016/09/01 by Jeff.Fisher
Fixed bStartInVR ini setting.
-Initial implementation worked via a generic EnableStereo call, which worked, but happened after the hmd setup dialog, which is not what I wanted.
-Also fixed a tracking frame mismatch assert that hit when I powered the hmd off once, causing it to lose tracking. Its ok that it doesn't update in that circumstance.
#review-3111211 @ryan.vance
Change 3115196 on 2016/09/06 by Keli.Hlodversson
#jira UEVR-128
Map move controller Select button to Invalid, as it is always handled by the system
Change 3116425 on 2016/09/07 by Chad.Taylor
PSVR: stereo layers implementation
Change 3116593 on 2016/09/07 by Jeff.Fisher
UEVR-126 Morpheus HMD connect dialog cancel reactions
-VR only apps can't allow the player to cancel out of the hmd setup dialog, so lets just pop the dialog up again (sony were ok with a licencee doing this) if an ini setting says to do that.
-VR/2D apps might want to switch to 2d if the player cancels out of the hmd setup dialog, so there is an ini setting for that.
-A delegate only implementation is also provided for apps that want to do something else. This leaves the game rendering in VR mode, and fires the delegate.
-Refactored to better separate successful HMD acquisition from stereo rendering. This was necessary to support the delegate only option on startup. If you start in vr mode with your hmd off and cancel the dialog stereo rendering now starts with default values for the hmd hardware stats (as read from my pvt) instead of crashing trying to use uninitialized data. When an hmd is connected its values will be read.
-Refactored to ensure reprojection starts immediately when we call StartReprojection.
#jira UEVR-126
#review-3116221
Change 3116754 on 2016/09/07 by Keli.Hlodversson
bPixelDensityAdaptive is a bool and not a float property
Change 3117692 on 2016/09/08 by Jeff.Fisher
UEVR-135 Morpheus HMD recent feature error reporting
UEVR-173 2DVR flexibility (UTexture)
-Error log for sceHmdReprojectionSetOutputMinColor failure.
-Made the parameter for 2dVR a UTexture* instead of a UTexture2D*, so it can be a rendertarget, etc.
-Added error logs for missing texture, invalid texture, wrong texture format to 2DVR.
#jira UEVR-135
#jira UEVR-173
#review-3116955 @keli.hloedversson
Change 3117990 on 2016/09/08 by Jeff.Fisher
UEVR-127 Morpheus HMD removal reaction
-Added VRHeadsetPutOnHead and VRHeadsetRemovedFromHead delegates, and implemented them for Morpheus.
#jira UEVR-127
#review-3117968 @keli.hlodversson
Change 3120198 on 2016/09/09 by Jeff.Fisher
MorpheusReprojector frame complete wait error log
-Now log a warning if the sceKernalWaitEqueue returns an error. It not a problem if this happens rarely, but something is very broken if it starts happening continuously.
Change 3121754 on 2016/09/12 by Keli.Hlodversson
#jira UE-21878 - Also emit VR initialization analytics events in the editor.
Change 3122311 on 2016/09/12 by Nick.Whiting
Merging fix for Adreno devices rendering black from 4.13.1
Change 3123057 on 2016/09/13 by Keli.Hlodversson
#jira UE-30097 Use the current value of r.ScreenPercentage on Occulus Rift if it's explicitly set.
* If the SetBy part of the flags for the console var is SetBy_Constructor, then ignore the value.
* If it's SetBy_Scalability, then ignore it if it equals 100
* Else, call SetScreenPercentage using the current value
The obsolete HMD SCREENPERCENTAGE console command is still available and will override the setting until r.ScreenPercentage is modified the next time.
Change 3123200 on 2016/09/13 by Chad.Taylor
PS4 Stereo Layer double buffering. Since the overlays are reprojected at 120hz but rendered at 60hz we need to render to a separate buffer than the one being used by reprojection.
Change 3125845 on 2016/09/14 by Keli.Hlodversson
#jira UE-33996 Add hmd=<name> command line option to allow overriding which HMD module is used.
Renamed GetModulePriorityKeyName to simply GetModuleKeyName, as this name is now also used to match against the command line options.
Change 3127293 on 2016/09/15 by Jeff.Fisher
UEVR-225 Morpheus HMD top and bottom black crescents
-The hidden and visible area meshes for morpheus were too restrictive. Nudged them out a bit, no black crescents at the top and bottom of the screen. We are rendering a few more pixels now though.
#review-3127145 @ryan.vance
#jira UEVR-225
Change 3130635 on 2016/09/19 by Jeff.Fisher
UEVR-226 Morpheus HMD mirrored fill wrong on outer edges
-The setting was never being used, leaving the wrap mode at 0 aka kWrapModeWrap.
-Refactored how the setting is applied so it works, and is less convoluted.
#jira UEVR-226
#review-3129403
Change 3131615 on 2016/09/19 by Keli.Hlodversson
#jira UE-29341. Update Chaperone bounds when SteamVR tells us they have changed
Change 3136527 on 2016/09/22 by Keli.Hlodversson
Don't depend on the current state of the VR subsystem when exiting PIE mode to decide whether the main window should be restored. Instead always restore it if it was minimized at the start.
Change 3136652 on 2016/09/22 by Keli.Hlodversson
Allow shutting down Steam VR subsystem without shutting down the Steam VR plugin completely in response to quitting from the SteamVR overlay. Enabling stereo rendering again will reinitialize SteamVR. This is useful when using PIE in VR mode as it allows entereing it again without restarting the editor. Also fixes crashes by first disabinge stereo rendering a short while before shutting down the VR subsystem.
#jira UE-35940
Change 3138901 on 2016/09/23 by Ryan.Vance
Merging 3138521 using OdinToDevVR to bring over temporary forward lighting ISR changes for 4.14
Change 3141614 on 2016/09/27 by Keli.Hlodversson
Implement GetNumOfTrackingSensors and GetTrackingSensorProperties on SteamVR.
#jira UE-32994
Change 3141948 on 2016/09/27 by Jeff.Fisher
UEVR-242 Is AddControllerYawInput not allowed when morpheus is enabled?
-Indeed it did not work. Looks like morpheus would not accumulate the yaw, so it would be reset every frame. I made the implementation of ApplyHmdRotation very similar to the one used for occulus (also similar to other platforms) to fix this.
#jira UEVR-242
#review-3141933 keli.hlodversson
Change 3143484 on 2016/09/28 by Nick.Whiting
Integrating Oculus 1.8 SDK support, includes support for cylinder and cubemap stereo layers
Change 3143517 on 2016/09/28 by Chad.Taylor
Merging PS4Tracker fixes from Release-4.13 into Dev-VR
Change 3143805 on 2016/09/28 by Keli.Hlodversson
#jira UE-36478 Workaround to make world to meters scale apply correctly to Occulus controllers while running in PIE
Change 3143943 on 2016/09/28 by Nick.Whiting
Merging latest drop from OSVR
Change 3144221 on 2016/09/28 by Keli.Hlodversson
Implement GetTrackingSensorProperties on PS4
#jira UE-32994
Change 3144352 on 2016/09/28 by Ryan.Vance
Initial implementation of mobile multi-view.
This is non-functioning and requires a lot more work, but enough of the framework exists to make the 4.14 branch for an experimental release.
Change 3144585 on 2016/09/29 by Jeff.Fisher
UEVR-14 PSVR Support for 90Hz to 90Hz, and 120Hz to 120Hz
-Enum setting added for the three frame sequences.
-90Hz mode is trying to run camera updates at 90hz, but they can only run at 60 so every third one fails. This works, but its dubious.
-Feature marked as experimental for now because of that 90hz tracking issue, and the lack of testing.
-Defaulting to 60/120.
#jira UEVR-14
#review-3143486 chad.taylor nick.whiting
Change 3145263 on 2016/09/29 by Nick.Whiting
Fix for constructor initialization order in StereoLayerComponent, which threw a warning on Clang
Change 3145536 on 2016/09/29 by Nick.Whiting
Fixes for project files to prevent mystery pop up from CAPI
Change 3145663 on 2016/09/29 by Keli.Hlodversson
PSVR: Make sure the camera orientation returned from GetTrackingSensorProperties points in the right direction.
Change 3145670 on 2016/09/29 by Keli.Hlodversson
For some reason the orientation of the Oculus tracking sensor is reported as pointing backwards. This flips it around to face front
Change 3145687 on 2016/09/29 by Chad.Taylor
VR splash screen support
[CL 3146243 by Nick Whiting in Main branch]
2016-09-30 01:16:13 -04:00
// Whether we need to emit mobile multi-view code or not.
Copying //UE4/Release-Staging-4.14 to //UE4/Dev-Main (Source: //UE4/Release-4.14 @ 3182951)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3182951 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix "play together" invitations handling in PS4 OSS.
- Wrong condition in GetUserWebApiContext. Web API contexts can be created for local users (i.e. FUniqueNetIdPS4 instances with a valid SceUserServiceUserId).
#jira UE-38017
Change 3182892 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix incorrect identity API implementation in PS4 OSS.
- System events directly drive the login state of a user. This also removes the blocking call to sceNpGetState().
- GetAuthToken is only called if the engine calls IOnlineIdentity::Login().
#jira UE-38017
Change 3182767 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix PS4 session invitations.
- Was calling old Web API with SceNpOnlineId where SceNpAccountId is needed.
- Replaced with NpToolkit2's session invitation API.
#jira UE-38020
Change 3182766 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix assert in FUniqueNetIdPS4::FindOrCreate. We were assuming an online-only ID could never become a local ID. This isn't the case in the following scenario:
- Two users join a session on two separate PS4s.
- One user signs into the other user's PS4 with the same account, with a second controller. PSN logs him out of the first PS4.
- That user's Net ID has now migrated from being online-only, to local-with-online. This is a case that was not handled.
#jira UE-38017 UE-38020
Change 3182765 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [~] Additional logging for PS4 OSS "Play Together".
#jira UE-38017 UE-38020
Change 3182633 on 2016/11/01 by Jack.Porter
Fix crash sculpting a landscape with grass that uses the landscape's lightmap, when lighting has not been built
#jira UE-38042
Change 3182332 on 2016/11/01 by Mieszko.Zielinski
Added a sanity check to UNavigationSystem::AddElementToNavOctree to guard agains DirtyElement.NavInterface being null #UE4
#jira UE-37588
Change 3182321 on 2016/11/01 by Dmitry.Rekman
Updated READMEs for 4.14 (UE-38059).
#jira UE-38059
Change 3182231 on 2016/11/01 by Mitchell.Wilson
Adding Is Valid node in Retargeting_WorldInteractionBP to resolve warning.
#jira UE-38079
Change 3182164 on 2016/11/01 by Matt.Kuhlenschmidt
Fix alll collision being disabled if you dont auto-generate a simple hull when importing an FBX
#jira UE-38091
Change 3182017 on 2016/11/01 by Chris.Babcock
Disable glVertexAttribIPointer on PowerVR Rogue
#jira UE-38074
#ue4
#android
Change 3181942 on 2016/11/01 by Mitchell.Wilson
Resolving multiple warnings in CIS for Elemental Demo.
#jira UE-38075
Change 3181941 on 2016/11/01 by Nick.Shin
PhysX Bulid Automation script update
#jira UE-37329 'Compile UE4Game HTML5' - 300 Warnings
Change 3181939 on 2016/11/01 by Ryan.Vance
#jira UE-38072
We need to add a hook that can be called after native present has finished for SteamVR.
PostPresentHandoff should be called when using the interleaved compositor immediately after we've submitted our eye buffers and called present for the mirror window. This unblocks the compositor process so it can do it's re-projection work. Otherwise it will block until we call WaitGetPoses which is a ways into the next frame.
Change 3181849 on 2016/11/01 by Nick.Shin
jukka's (Mozilla) fixes to SSE2 and GL issues for HTML5
jukka's (Mozilla) python scripts to build ThirdParty HTML5 libs
the python scripts will need tweaking - they were moved from their original locations from:
https://github.com/Mozilla-Games/UnrealEngine/commit/fd48bc0e4a5f0278a1c036d2b81036ab1270ad68
the CMakeLists.txt (and one configure.ac) files are defiinitely used from the (bash) shell build script (to build thirdparty libs for HTML5)...
update existing (bash shell script and UE4 c#) build files to use the new "incoming" emsdk
#jira UE-37329 -'Compile UE4Game HTML5' - 300 Warnings
Change 3181848 on 2016/11/01 by Nick.Shin
update compiled ThirdParty HTML5 libs using new emscripten tool chain (CL:#3180924)
#jira UE-37329 - //UE4/Main: Step 'Compile UE4Game HTML5' - 300 Warnings
Change 3181838 on 2016/11/01 by Nick.Shin
new emscripten tool chain configured by jukka from Mozilla
see Engine/Extras/ThirdPartyNotUE/emsdk/emscripten/incoming/EPIC_VERSION for details on where did this version come from
#jira UE-37329 - //UE4/Main: Step 'Compile UE4Game HTML5' - 300 Warnings
Change 3181611 on 2016/11/01 by Allan.Bentham
Recreate vulkan swapchain after a pause/resume on android.
#jira UE-36454
Change 3181451 on 2016/11/01 by Chris.Wood
CrashReportClient no longer attempts to restart Launcher-run Editors via IPC with the Launcher. They are now restarted directly.
[UE-37794] - Send and Restart from Crash Reporter Opens Project Browser
Launcher can't accept command line args when restarting an application so it can't restart the editor with the right project.
Also fixes broken SlateReflector in CRC (switched off in checked in version)
#jira UE-37794
Change 3181117 on 2016/11/01 by Dmitriy.Dyomin
Fixed: Text Actors not Rendering on Mobile
PowerVR based devices were rendring opaque objects twice
#jira UE-37949
Change 3181102 on 2016/11/01 by Jack.Porter
Fix for editor crash during Landscape sculpting on pressing Ctrl+z (Subdivision enabled in material)
#jira UE-36050
Change 3180851 on 2016/10/31 by Daniel.Wright
Ray Traced Distance Field shadows must be projected last, since they overlap the depth range as Far CSM. Fixes Kite demo medium-distance shadowing.
#jira UE-37793
Change 3180844 on 2016/10/31 by Michael.Trepka
Disabled high-DPI in Mac CrashReportClient
#jira UE-37697
Change 3180803 on 2016/10/31 by Michael.Trepka
Setup Mac Metal layer on the main thread to solve issues with empty game window when showing a separate log window.
#jira UE-37998
Change 3180764 on 2016/10/31 by zachary.wilson
Checkking in content for Lighting scenarios test, currently incomplete but needed for bug repro
#jira UE-29618
Change 3180666 on 2016/10/31 by Dmitry.Rekman
Fix Linux client & server hang when decoding voice chat (UE-36108).
- break out of voice channel while loop if unable to serialize the voice packet data.
- fixed by JoshM
#jira UE-36108
Change 3180428 on 2016/10/31 by Mitchell.Wilson
Rebuilt lighting in all Content Examples levels and saved to resolve warnings.
#jira UE-37880
Change 3180399 on 2016/10/31 by Dmitry.Rekman
Linux: revert to old commandline switch -binnedmalloc (UE-38001).
#jira UE-38001
Change 3180298 on 2016/10/31 by Steve.Robb
Extra information about which class has failed to have its CppStructOps initialized.
#jira UE-37921
Change 3180289 on 2016/10/31 by John.Pollard
Fix crash in FCurlHttpRequest::DebugCallback
+ Specify the string length to FString's constructor as the result from StringCast is not null terminated if the string's length is specified (instead of assuming null termination).
#jira UE-36658
Change 3180200 on 2016/10/31 by Benjamin.Hyder
Updating QA-Materials to include BuiltData
#jira UE-29618
Change 3180173 on 2016/10/31 by Nick.Whiting
Fixing up static analysis warning about array size in GoogleVRHMD code
#jira UE-38007
Change 3180123 on 2016/10/31 by ryan.brucks
#jira UE-35977
hooked up missing transform node inside of newly added function so that it works with variable rotations.
Change 3180108 on 2016/10/31 by Benjamin.Hyder
Updating QA-Effects map to include BuiltData
#jira UE-29618
Change 3180104 on 2016/10/31 by Marc.Audy
Don't recreate the render state if the component got unregistered in the interim.
#jira UE-37968
Change 3180084 on 2016/10/31 by Allan.Bentham
Use glVertexAttribIPointer for ES3.
Enable SupportsTextureMaxLevel for ES3.
ensure GL_HALF_FLOAT is used for vertex half float format on ES3 (instead of GL_HALF_FLOAT_OES)
Fix assert when previewing ES3.1 with PC OpenGL.
#jira UE-37472
Change 3180082 on 2016/10/31 by Luke.Thatcher
[RELEASE] [PS4] [-] Back out PS4 OSS warnings filter in UBT output (original CL 3150360).
- We weren't relying on this anyway, since the build machines are filtering based on a perl script (See CL 3151027)
#jira UEPLAT-1424
Change 3180044 on 2016/10/31 by Michael.Trepka
Don't create additional autorelease pool for Metal context on the game thread.
#jira UE-37894
Change 3180023 on 2016/10/31 by Luke.Thatcher
[RELEASE] [PS4] [^] Merge (as edit) PlayStation 4 Online Subsystem refactor for Sony SDK 4.008.061 (CL 3178249) from //UE4/Dev-Platform to OrionGame in //UE4/Release-4.14
Original CL description:
[~] Upgrade PlayStation 4 Online Subsystem to be compliant with Sony's new APIs in SDK 4.008.061.
- Replaced deprecated APIs with new ones.
- Replaced NpToolkit with NpToolkit2.
- Refactor of FUniqueNetIdPS4 and related code. FUniqueNetIdPS4 is now immutable and immovable.
- Added online ID cache system, which calls out to Sony's new ID Mapper Web API.
Contains a breaking change in FUniqueNetId
- FUniqueNetId::ToString() now returns the SceNpAccountId string of a user, rather than the SceNpOnlineId string.
- Custom backends which rely on this string to identify users will need to support SceNpAccountIds, and map them to existing accounts.
#jira UEPLAT-1424
Change 3179973 on 2016/10/31 by Sam.Deiter
#Jira UEDOC - 3957
#UE4 Docs: Fixing typos in the landscape tutorials for bug UEDOC - 3957
#Code_Review lauren.ridge, jeff.wilson, ian.shadden, wes.bunn, chase.mcallister, robert.gervais
Change 3179930 on 2016/10/31 by Luke.Thatcher
[RELEASE] [PS4] [^] Merge (as edit) PlayStation 4 Online Subsystem refactor for Sony SDK 4.008.061 (CL 3178249) from //UE4/Dev-Platform to //UE4/Release-4.14
Original CL description:
[~] Upgrade PlayStation 4 Online Subsystem to be compliant with Sony's new APIs in SDK 4.008.061.
- Replaced deprecated APIs with new ones.
- Replaced NpToolkit with NpToolkit2.
- Refactor of FUniqueNetIdPS4 and related code. FUniqueNetIdPS4 is now immutable and immovable.
- Added online ID cache system, which calls out to Sony's new ID Mapper Web API.
Contains a breaking change in FUniqueNetId
- FUniqueNetId::ToString() now returns the SceNpAccountId string of a user, rather than the SceNpOnlineId string.
- Custom backends which rely on this string to identify users will need to support SceNpAccountIds, and map them to existing accounts.
#jira UEPLAT-1424
Change 3179539 on 2016/10/31 by Jack.Porter
Fix crash when Toggling Landscape Mode with Hidden Sub-Level containing a Landscape
#jira UE-37954
Change 3179309 on 2016/10/29 by Benjamin.Hyder
Re-Saving Foliage asset in Tm-DistanceFields
#jira UE-29618
Change 3179308 on 2016/10/29 by Benjamin.Hyder
updating AutoLOD settings for foliage example in TM-Shadermodels
#jira UE-29618
Change 3179135 on 2016/10/28 by Chris.Babcock
Only use alternative event flow for Daydream packaged applications
#jira UE-37847
#ue4
#android
Change 3178995 on 2016/10/28 by JohnHenry.Carawon
Adding test content for the World Origin Rebasing feature
#jira UE-29618
Change 3178994 on 2016/10/28 by Chris.Babcock
Disable ARM64 Google Play Games - need new library to fix crash
#jira UE-37972
#ue4
#android
Change 3178955 on 2016/10/28 by Marc.Audy
Don't worry about clearing from world's end of frame update frame if being GC'd
#jira UE-37928
Change 3178921 on 2016/10/28 by Daniel.Wright
[Copy] Scene captures and planar reflections force a scene color alpha channel to be used when they are capturing (does not affect the scene color format for the main views). Fixes planar reflections with r.SceneColorFormat=3.
Setup scissor for scene depth resolves, helps with passes using screenpercentage to reduce resolution. Planar reflection depth resolves .8ms -> .2ms on 970
#jira UE-37970
Change 3178919 on 2016/10/28 by Daniel.Wright
[Copy] Fixed planar reflections in forward shading. The change to disable checkerboard SSS caused scene color alpha to be non-zero for opaque / masked pixels in forward, but there's no SSS pass run later to correct it, since this is the forward rendering path.
#jira UE-37970
Change 3178905 on 2016/10/28 by Max.Chen
Sequencer: Fix fade track instance compile
#jira UE-37939
Change 3178808 on 2016/10/28 by Dmitry.Rekman
Linux: fix crash on exit (UE-37536).
- Base virtual function (PostRun()) was called due to thread being stopped at the moment when the subclass destructor has already run.
#jira UE-37536
(Edigrating 3175651 from Dev-Platform to Release-4.14)
Change 3178707 on 2016/10/28 by Marc.Audy
Fix inverted null check that caused load game from slot to fail if using a BP generated class
#jira UE-37774
Change 3178664 on 2016/10/28 by Alexis.Matte
Fix the fbx automation tests
#jira UE-37960
Change 3178617 on 2016/10/28 by Bart.Hawthorne
Fix issue where changing the world origin in a single player game would try to access the FNetworkPredictionData_Client_Character on character movement components
#jira UE-37692
#tests ran QA game and tested that assert no longer fired in debug
Change 3178615 on 2016/10/28 by Max.Chen
Matinee to Level Sequence: Added interface to extend the matinee to level sequence converter
Copy from Dev-Sequencer
#jira UE-37328
#2864
Change 3178553 on 2016/10/28 by Michael.Trepka
Don't wait for the main thread in FMacWindow::Show()
#jira UE-37915
Change 3178526 on 2016/10/28 by Alexis.Matte
Clean unused material when importing a skeletal mesh. Its possible to have a material reference in a fbx node and not have any face referencing this material.
#jira UE-37923
Change 3178451 on 2016/10/28 by Mitchell.Wilson
Limit the max angle the cannon tower can be rotated when manually aiming.
When max rotation is reached, debug line turns red to be consistent with the arrow tower.
#jira UE-36512
Change 3178420 on 2016/10/28 by Lina.Halper
Fix build issue
#jira: UE-37911
Change 3178390 on 2016/10/28 by mason.seay
Enabling follow on certain notifies to help catch issues
#jira UE-29618
Change 3178325 on 2016/10/28 by Zak.Middleton
#ue4 - (4.14) - Fix crash when player is destroyed and server PlayerController checks to see if it needs to force a network update. Also fix crash when calling ACharacter::SetReplicateMovement when not on the server.
Mirror CL 3178247 and CL 3178256 in Dev-Framework.
#jira UE-37902
Change 3178312 on 2016/10/28 by Max.Chen
Sequencer: Fade only oin the current player context, not on all worlds.
#jira UE-37939
Change 3178267 on 2016/10/28 by Lina.Halper
Fix issue with anim editor sound play notify doesn't work with follow option
#jira: UE-37946
Change 3178146 on 2016/10/28 by Lina.Halper
#fix crash with thumbnail update when there is no animation, and so on.
#code review: Benn.Gallagher
#jira: UE-37911
Change 3178145 on 2016/10/28 by Matthew.Griffin
Fixed Clean process during a Hot Reload
Prevent engine build products, intermediates and exe/dlls from being deleted during Hot Reload and make sure Hot Reload state is preserved
#jira UE-37616
Change 3178143 on 2016/10/28 by Mitchell.Wilson
Updating BP_Spinning_Logo to stop spinning when disabled instead of finishing the rotation.
#jira UE-36269
Change 3178110 on 2016/10/28 by Mitchell.Wilson
Rebuilt lighting and saved levels.
#jira UE-36913
Change 3178070 on 2016/10/28 by Mitchell.Wilson
Adjusted trigger ragdoll time in shooter character so the character does not appear to float while in death animation.
#jira UE-37124
Change 3178034 on 2016/10/28 by Jon.Nabozny
Add missing Super::Tick call to ATP_TopDownCharacter::Tick.
#jira UE-37914
Change 3178021 on 2016/10/28 by Max.Chen
Sequence Recorder: Disable auto possess player for recorded pawns. This fixes a bug where if you record a third person template character, when you open the sequence, the recorded character will possess the viewport.
Copy from Dev-Sequencer
#jira UE-35342
Change 3177992 on 2016/10/28 by Matt.Kuhlenschmidt
Fix outlined text accumulating error due to measuring the outlines for each text run rather than the entire string
#jira UE-37935
Change 3177981 on 2016/10/28 by Nick.Darnell
UMG - Fixing how the virtual window calculates desired size. It was including scale again, which is fine for SWindow, but isn't what we want on the SVirtualWindow, should probably consider making a new SWindowBase class they can both share in the future.
#jira UE-36861
Change 3177888 on 2016/10/28 by Matthew.Griffin
Back out revision 4 from //UE4/Release-4.14/Engine/Source/Runtime/Engine/Private/InheritableComponentHandler.cpp
Change 3177881 on 2016/10/28 by Matthew.Griffin
Added guards to WITH_EDITOR only static initialisation
Change 3177871 on 2016/10/28 by Matt.Kuhlenschmidt
Fix crash import fbx scenes if objects contain procedural textures (not supported)
#jira UE-37917
Change 3177856 on 2016/10/28 by Matthew.Griffin
Adding THIRD_PARTY_INCLUDES macros around Google VR includes to fix static analysis warnings
Change 3177815 on 2016/10/28 by Graeme.Thornton
Non-editor build fix
#jira UE-37929
Change 3177812 on 2016/10/28 by Graeme.Thornton
Fix for COTF crash with EDL. Manually copied from CL 3174743 in Dev-Core
#jira UE-37810
Change 3177737 on 2016/10/28 by Guillaume.Abadie
Brings over 3141695 and 3173310 from //Odin/Main: Fixes particle collision in the forward renderer.
#jira UE-37927
Change 3177703 on 2016/10/28 by Phillip.Kavan
[UE-37852] Ensure that we create a unique template object in a child class's ICH when overriding an inherited SCS default scene root node.
change summary:
- added UInheritableComponentHandler::SCSDefaultSceneRootOverrideNamePrefix
- modified UInheritableComponentHandler::CreateOverridenComponentTemplate() to special-case SCS default scene root node overrides when determining the new template name
- modified UInheritableComponentHandler::PostLoad() to special-case SCS default scene root node overrides during template name fixup
- modified SSCSEditor::RemoveComponentNode() to skip renaming the component template away from the variable name for the default scene root node, since we don't actually recreate it when it gets re-added
#jira UE-37852
Change 3177600 on 2016/10/27 by Chris.Babcock
Pass through the intent action from splash screen
#jira UE-37925
#ue4
#android
Change 3177436 on 2016/10/27 by Mike.Beach
Guarding against a top crash that could occur when pasting a select node (unknown how) - now using an unchecked accessor to get a specific pin, and guarding again a null (instead of asserting).
#jira UE-37910
Change 3177365 on 2016/10/27 by Daniel.Wright
Fixed access of FPrecomputedLightVolumeData after it has been deleted (causes crash on exit with USE_MALLOC_STOMP enabled)
#jira UE-37903
Change 3177236 on 2016/10/27 by Mitchell.Wilson
Updated UVs on M_FloorTiles1 to resolve precision issues with the material's normal on mobile devices.
Fixed reflection captures in the level and rebuilt lighting.
#jira UE-36624
Change 3177235 on 2016/10/27 by mason.seay
Vehicle Assets
#jira UE-29618
Change 3177036 on 2016/10/27 by Mitchell.Wilson
Inverted throttle control for controller Right Joystick Up, Down, Y-Axis to be consistent with the info from our template wiki
#jira UE-37881
Change 3176996 on 2016/10/27 by mason.seay
Missed node link
#jira UE-29618
Change 3176993 on 2016/10/27 by mason.seay
Test AnimBP for crash
#jira UE-29618
Change 3176992 on 2016/10/27 by Mitchell.Wilson
Adding [EditoronlyBP] to DefaultEditor.ini of projects that were missing it.
#jira UE-37846
Change 3176946 on 2016/10/27 by Alexis.Matte
We recompile the material only if there is a material expression node that ask for a shader recompile when the texture is change with no specified property.
#jira UE-37705
Change 3176939 on 2016/10/27 by Alexis.Matte
Check the pointer before using it
#jira UE-37853
Change 3176927 on 2016/10/27 by mason.seay
Rebuilt Lighting
#jira UE-29618
Change 3176883 on 2016/10/27 by Steve.Robb
Fix for crash when an array property changes while instancing subobjects.
Fix for StrStr running off the end of a non-null-terminated string and a tidy up with TUniquePtr.
Fix for accessing a deleted StaticClass() in FInputBindingEditorModule::ShutdownModule.
#fyi matt.kuhlenschmidt, alex.fennell
#jira UE-37752
Change 3176811 on 2016/10/27 by Chris.Bunner
Rework of previous commit to avoid potential confusion moving forward.
#jira UE-37424
Change 3176783 on 2016/10/27 by Chris.Bunner
Default scalability settings to Epic, not Cinematic.
Duplicated default render resolution scale fix (CL 3170020).
#jira UE-37424
Change 3176692 on 2016/10/27 by Mike.Beach
Fixing up a mistake where we weren't reading all [EditoronlyBP] settings (which are now deprecated). Was causing certain settings to default to off, and caused an inaccurate deprecation warning.
#jira UE-37848
Change 3176635 on 2016/10/27 by mason.seay
Setting up skeleton for retargeting testing
#jira UE-29618
Change 3176586 on 2016/10/27 by Marcus.Wassmer
Fix crash on D3D12 editor when selecting objects
#jira UE-37861
Change 3176479 on 2016/10/27 by Robert.Manuszewski
Fix for a rare crash when loading into Orion match. Made sure the Skeleton asset is loaded before PostLoad is called on it.
#jira UE-37297
#jira UE-37711
Change 3176107 on 2016/10/27 by Phillip.Kavan
[UE-37690] AddComponent node template names now use a counter to avoid a potential component data cache mismatch with an existing instance of an old AddComponent node template.
change summary:
- added UBlueprint::ComponentTemplateNameIndex as a way to to map component class names to an incremental counter (saved).
- UK2Node_AddComponent::MakeNewComponentTemplateName() is now public, non-static, and uses an internal index map to generate unique component template names.
#jira UE-37690
Change 3176105 on 2016/10/27 by Phillip.Kavan
[UE-37686] Fix naming for archetype objects associated with new AddComponent nodes.
change summary:
- switched UK2Node_AddComponent::MakeNewComponentTemplateName() to be a public API.
- modified UBlueprintComponentNodeSpawner::Invoke() to call UK2Node_AddComponent::MakeNewComponentTemplateName() in place of MakeUniqueObjectName().
- modified UBlueprintGeneratedClass::FindArchetype() to better handle old AddComponent node template names. These were based on the UClass display name, and thus it was possible for the non-index form of that FName to collide with SCS variable names after the initial switch to use the non-indexed (base) FName for archetype matching in all cases. As a result I've reverted back to using the given ArchetypeName value for the SCS variable case.
#jira UE-37686
Change 3176009 on 2016/10/26 by Dmitriy.Dyomin
Fixed: Editor crash on changing sub-level visbility under certain conditions
#jira UE-34740
Change 3175807 on 2016/10/26 by Daniel.Wright
Fixed the editor thinking a lighting build is still active after you discard the results from one
#jira UE-37834
Change 3175777 on 2016/10/26 by Jon.Nabozny
#jira UT-6263
Fix crash when running ServerTravel on a client
Dupe of CL #3175731 on UT, checked in on behalf of ben.zeigler
Change 3175695 on 2016/10/26 by Ryan.Gerleve
Don't clear level collections in UWorld::CleanupWorld unless bCleanupResources is true.
#jira UE-37336
Change 3175628 on 2016/10/26 by Chad.Garyet
Added -Build vstream from 4-14 to allow checkins from physx
altered build script and json to reflect new changes
#JIRA UE-37085
Change 3175612 on 2016/10/26 by Martin.Wilson
Fix crash when running an in-editor cook on the fly server with unsaved virtual bone changes
#jira UE-37785
Change 3175552 on 2016/10/26 by Brian.Karis
Twinblast bust changes
#jira UE-0
Change 3175543 on 2016/10/26 by Marc.Audy
Allow audio thread on PS4 to use 7th core as opposed to being pinned to it
#jira OR-30447
Change 3175538 on 2016/10/26 by Matt.Kuhlenschmidt
Fixed a crash when clicking Apply when using the Brush Clip tool
#jira UE-37838
Change 3175502 on 2016/10/26 by Mitchell.Wilson
Enabled modulated shadows on lights in rolling template levels.
#jira UE-37047
Change 3175485 on 2016/10/26 by mason.seay
Test Map for virtual bones
#jira UE-29618
Change 3175469 on 2016/10/26 by mason.seay
Test assets for Virtual Bones testing
#jira UE-29618
Change 3175428 on 2016/10/26 by Marc.Audy
Possibly fix crash in Autosave due to dereferencing a world pointer which is freed memory
#jira UE-37590
Change 3175414 on 2016/10/26 by Michael.Trepka
Fixed mouse position calculations for secondary monitors on Mac
#jira UE-37822
Change 3175382 on 2016/10/26 by Yannick.Lange
VR Editor: - Fix: Landscape UI Elements are not visible #jira UE-36843
- Fix: First-time switch to Landscape tab in VREditor causes UI Errors #jira UE-37410
- Fix: Enabling Foilage Mode in VR Editor breaks the pointer #jira UE-37214
- Fix: Landscape sculpting when attempting to move menu panels in VREditor #jira UE-37581
#jira UE-36843 #jira UE-37410 #jira UE-37214 #jira UE-37581
Change 3175349 on 2016/10/26 by Chad.Garyet
Changing physx build agents to compile workspaces instead of full ones
#JIRA UE-37085
Change 3175267 on 2016/10/26 by Martin.Wilson
Fix retarget crash
#jira UE-37781
Change 3175205 on 2016/10/26 by Rolando.Caloca
UE4.14 - Remove erroneus assert
#jira UE-37584
Change 3175188 on 2016/10/26 by Chris.Babcock
Fix out of spec GLSL operations (contributed by JeffRous)
#jira UE-37800
#PR #2886
#ue4
#android
Change 3175156 on 2016/10/26 by Mitchell.Wilson
Adding missing iOS app icons to SunTemple project
#jira UE-36991
Change 3175095 on 2016/10/26 by Daniel.Wright
Fixed stationary skylight reflections using an inverted mask on materials without high quality reflections with Forward Shading
#jira UE-37783
Change 3175075 on 2016/10/26 by Daniel.Wright
[Copy] Support directional light dynamic shadows in any channel with forward shading, which can happen with multiple shadow casting stationary directional lights (even though only the lighting of one will appear)
#jira UE-36497
Change 3175050 on 2016/10/26 by Jamie.Dale
FTextRenderComponentMIDCache now marks MIDs as stale when the font parameters available in the parent material changes
#jira UE-37819
Change 3175039 on 2016/10/26 by Daniel.Wright
Fixed Duplication mode
#jira UE-37231
Change 3174996 on 2016/10/26 by Mitchell.Wilson
Removing [EditoronlyBP] changes made to DefaultEditor.ini. EDL is now disabled by default in ShooterGame.
#jira UE-37648
Change 3174987 on 2016/10/26 by Jon.Nabozny
Fix crash when moving InstancedStaticMeshComponent in editor when it had no mesh set, but had instances.
#jira UE-37594
Change 3174803 on 2016/10/26 by Ori.Cohen
Fix world origin shifting causing a crash inside physx.
#JIRA UE-37745
Change 3174776 on 2016/10/26 by Allan.Bentham
Work around broken depth reads on Galaxy S4.
#jira UE-35481
Change 3174723 on 2016/10/26 by Robert.Manuszewski
Changing the criteria for UBL to ignore the event driven loader flag to IsEngineInstalled() just like at runtime.
#jira UE-37617
Change 3174650 on 2016/10/26 by Matthew.Griffin
Ensured that Online Subsystem Oculus plugin is precompiled successfully for Android
Change 3174644 on 2016/10/26 by Matthew.Griffin
Fixing GoogleVR compile issues
Change 3174352 on 2016/10/25 by Daniel.Wright
Rename map build data along with the world - fixes lighting lost on map rename / save as.
Duplicate map build data along with the world - fixes lighting lost on map duplicate in the content browser, or save as when the source already exists.
Save map build data packages in SaveWorld - fixes lighting being lost on save as.
#jira UE-37231
Change 3174335 on 2016/10/25 by Chris.Babcock
Corrected Proguard issue with Codeworks for Android 1R5 installers
#jira UE-37680
#ue4
#android
Change 3174318 on 2016/10/25 by Marcus.Wassmer
Duplicate 3174187
#jira UE-37020
Change 3174263 on 2016/10/25 by patrickr.donovan
Test content updates and additions. Lighting Channel map added to TM-VRLoader.
#jira UE-29618
Change 3174120 on 2016/10/25 by Daniel.Wright
UObject::PostDuplicate with DuplicateMode
* Allows differentiating between being duplicated as part of a world duplication vs duplication within a level
* This is needed when generating a guid that needs to be unique within a level, but constant across instances of that level, like a light component
#jira UE-37231
Change 3174113 on 2016/10/25 by Daniel.Wright
Fixed log spam
#jira UE-37522
Change 3174010 on 2016/10/25 by Jamie.Dale
Fixed several crashes in the Session Frontend when viewing profiles
- SFiltersAndPresets wasn't being cleared when the profile data was changed back to a live instance.
- SFiltersAndPresets could crash if it was updated when no profile was selected.
- SDataGraph could cause a crash if you clicked on it when there was no data (passed a range of -1, 0).
- A session update message would clobber any loaded profile data, resetting to the current instance.
#jira UE-37597
Change 3173982 on 2016/10/25 by mason.seay
Deleting unneeded asset
#jira UE-29618
Change 3173912 on 2016/10/25 by Ori.Cohen
Fix divide by 0 crash when torque curve is 0
#JIRA UE-37737
Change 3173866 on 2016/10/25 by Ben.Marsh
Remove setting forcing UnrealCEFSubProcess to compile using Visual Studio 2013.
#jira UE-37678
Change 3173824 on 2016/10/25 by Ben.Marsh
Fix trying to recompile UBT in Rocket builds when cleaning a build target.
#jira UE-37616
Change 3173812 on 2016/10/25 by Nick.Darnell
XBoxOne - The Vertex and Index buffers are now allocated with the right nextwriteoffset to prevent stomping old data on future writes.
#jira UE-37757
Change 3173808 on 2016/10/25 by Ben.Marsh
Fix batch files detecting MSBuild install locations for Visual Studio "15" preview 5.
#jira UE-37627
Change 3173711 on 2016/10/25 by Ori.Cohen
Fix linux compiler issues for physx
#JIRA UE-37085, UE-37114, UE-37116
Change 3173704 on 2016/10/25 by James.Cobbett
Import test assets for Alembic Conversion test
#jira UE-29618
Change 3173694 on 2016/10/25 by Matt.Kuhlenschmidt
Fixed Zip project not working in binary builds
#jira UE-37655
Change 3173692 on 2016/10/25 by James.Cobbett
Test content for Alembic Conversion options
#jira UE-29618
Change 3173666 on 2016/10/25 by Matt.Kuhlenschmidt
Fixed array refreshing in the details panel not functioning properly for sub-object properties
#jira UE-37652
Change 3173619 on 2016/10/25 by Robert.Manuszewski
Making the cooker ignore EDL ini setting in binary engine build.
#jira UE-37617
Change 3173616 on 2016/10/25 by Nick.Whiting
Merging update to Google VR 1.01 SDK, which fixes multiple initialization errors
#jira UE-37440, UE-37236
Change 3173606 on 2016/10/25 by Jamie.Dale
Removed invalid assert
We're already passed the collection to modify, so the assert isn't needed.
#jira UE-37761
Change 3173604 on 2016/10/25 by Keli.Hlodversson
Work around an issue where the SteamVR plugin will fail to initialize if SteamVR was not already running before launching.
#jira UE-37623
Change 3173502 on 2016/10/25 by Matt.Kuhlenschmidt
Fixed more cases of undoing causing selections to become out of sync
#jira UE-37300
Change 3173475 on 2016/10/25 by Ori.Cohen
Critical 4.14 physx fixes
#JIRA UE-37085, UE-37114, UE-37116
Change 3173445 on 2016/10/25 by Robert.Manuszewski
Disabling the Event Driven Loader in ShooterGame. Making sure the EDL can't be enabled in binary engine distributions.
#jira UE-37394
Change 3173401 on 2016/10/25 by Matt.Kuhlenschmidt
Guard against crashes when textures or materials are explicitly marked as pending kill and then passed to slate for rendering
#jira UE-36261
Change 3173245 on 2016/10/25 by Allan.Bentham
Remove incorrect assert.
#jira UE-37699, UE-37707
Change 3173232 on 2016/10/25 by Jurre.deBaare
Post Processing Settings do not update in Persona when the values are changed in Preview Scene Settings
#fix make sure we also pick up vector4 fields
#jira UE-37656
Change 3173183 on 2016/10/25 by Matthew.Griffin
Added Shipping configs to BootstrapPackagedGame (Duplicating CL#3150210 from Main)
Change 3173065 on 2016/10/25 by Dmitriy.Dyomin
Fixed: Disabling 'Use Landscape Lightmap' option Skewing Procedural Foliage Instances
#jira UE-37736
Change 3172929 on 2016/10/24 by Ryan.Vance
#jira UE-37742
Adding SceneViewExtension hooks that are called right after init views completes. It might be advantageous to do the work we're currently doing in PreRenderViewFamily_RenderThread and PreRenderView_RenderThread after init views is called with the way SteamVR's running start is implemented.
Change 3172915 on 2016/10/24 by Rolando.Caloca
UE4.14 - Fix compile issues on CCT
#jira UE-37722
Change 3172762 on 2016/10/24 by Brian.Karis
#jira UE-37369
Change 3172742 on 2016/10/24 by Daniel.Lamb
Fixed issue with file-> cook error when you haven't built the exe which you are trying to cook for.
#jira UE-36796
#test Cook shootergame
Change 3172690 on 2016/10/24 by Maciej.Mroz
DynamicClass gives now, as componet-archetype, objects with non-exact name.
Manually merged cl#3171563
#jira UE-37480
Change 3172663 on 2016/10/24 by Daniel.Lamb
Stopped cooker from handling modification requests when they are PIE requests.
#test PIE shootergame
#jira UE-21572
Change 3172629 on 2016/10/24 by Mitchell.Wilson
Reconnected some material functions to resolve warnings which caused characters to render with default materials, and resolving 'Top Material' warnings.
Reimported SM_GodRay_Plane to resolve PhysX warning
Rebuilt lighting for the level.
#jira UE-37728
Change 3172523 on 2016/10/24 by Nick.Shin
update physx cmakefiles and automation build scripts for release-414 stream (as per request)
#jira UEFW-106 Add HTML5 support to PhysX CMake & automation scripts
Change 3172515 on 2016/10/24 by Nick.Shin
remove old emsdk (1.35.0)
#jira UEPLAT-1324 Update HTML5 PhysX to CMake
Change 3172511 on 2016/10/24 by Mark.Satterthwaite
Don't set Metal resource option fields on texture descriptors when running on an OS that doesn't support them.
#jira UE-37481
Change 3172461 on 2016/10/24 by Cody.Albert
Added check for pointer validity to prevent crash in ShooterGame
#jira UE-37433
Change 3172329 on 2016/10/24 by Peter.Sauerbrei
fix for remote notification method misspelling
#jira ue-37720
Change 3172322 on 2016/10/24 by Marc.Audy
Fix unreferenced variable the brute force to unblock QA
#jira UE-37718
Change 3172191 on 2016/10/24 by Mitchell.Wilson
Clearing preivew meshes on some materials to resolve warnings.
#jira UE-37713
Change 3172186 on 2016/10/24 by Matt.Kuhlenschmidt
Fix non-editor compile error
#jira UE-37695
Change 3172159 on 2016/10/24 by Dmitry.Rekman
Update GitDependencies.exe (UE-37530).
- Binary needs to be updated to support LINUX_MULTIARCH_ROOT variable.
#jira UE-37530
Change 3172132 on 2016/10/24 by Keith.Judge
Xbox One - Fix corrupted screenshots. Needed a GPU/CPU sync point, which legacy D3D11.x used to do for us, but now we have to do manually. Copied from Dev-Platform CL 3156872
#jira UE-37038
Change 3172131 on 2016/10/24 by Keith.Judge
Xbox One - Disable engine analytics on XB1 shipping games, as per XRs. Verified http requests from devkit with Fiddler. Copied from CL 3153176 in Dev-Platform.
#jira UE-36364
Change 3172106 on 2016/10/24 by Mitchell.Wilson
Updated reference to a material in VehicleMenu.umap to resolve warning
#jira UE-29748
Change 3172036 on 2016/10/24 by Steve.Robb
TEnumAsByte can be switchably deprecated for enum classes, and is currently not deprecated (reverting a change in behavior).
#jira UE-37706
Change 3172020 on 2016/10/24 by Marc.Audy
Child Actor should be created at registration, not creation. Otherwise attachment hierarchies can not be set up and thus, world positions incorrect
#jira UE-37615
Change 3171966 on 2016/10/24 by Dmitry.Rekman
Linux: fix Setup.sh on Ubuntu 16.10 (UE-37621)
#jira UE-37621
(Edigrating 3171266 from Dev-Platform to Release-4.14)
Change 3171964 on 2016/10/24 by Dmitry.Rekman
Linux: fix always rebuilding FixDeps (UE-37625).
#jira UE-37625
(Edigrating 3153471 from Dev-Platform to Release-4.14)
Change 3171957 on 2016/10/24 by Matt.Kuhlenschmidt
Guard against property editor crash happening when focused is lost on an object which has been GC'd due to PIE running
#jira UE-37636
Change 3171943 on 2016/10/24 by Matt.Kuhlenschmidt
Added mesh simplifcation plugin picker to the project settings under Editor - Mesh Simplification
The menu to pick simplification plugins also contains a link to find other plugins in the launcher marketplace. The launcher navigates to "/ue/marketplace/content-cat/assets/codeplugins" for now
#jira UE-37695
Change 3171928 on 2016/10/24 by Max.Chen
Sequencer: Revert CL#3162724. Fix time dilation in level sequence player because it's causing a regression. Will revisit the fix for UE-37277.
#jira UE-37589
Change 3171924 on 2016/10/24 by James.Cobbett
Test content 'preroll.abc'. Has empty frames at the start of animation. For alembic importer testing.
#jira UE-29618
Change 3171867 on 2016/10/24 by Lina.Halper
- Back out revision 2 from //UE4/Release-4.14/Engine/Source/Runtime/Engine/Private/Components/SkeletalMeshComponent.cpp
- Empties override materials before setting preview mesh in animation editor
#jira: UE-37610
#code review: Thomas.Sarkanen
Change 3171789 on 2016/10/24 by Allan.Bentham
Resolve depth on appropriate mobile devices when the view contains materials that read from the depth.
#jira UE-35023
Change 3171776 on 2016/10/24 by Robert.Manuszewski
Increasing the initial memory allocation size for FLargeMemoryWriter to reduce the number of allocations when saving or cooking
#jira UE-37599
Change 3171728 on 2016/10/24 by Dmitriy.Dyomin
Fix origin rebasing to work with precomputed lighting data stored in separate package
#jira UE-37693
Change 3171634 on 2016/10/24 by Dmitriy.Dyomin
Added commenets to 3171621
#jira UE-36449
Change 3171621 on 2016/10/23 by Dmitriy.Dyomin
Fixed: Editor crash when compiling the character blueprint after a PIE session with World Composition enabled
Actually disabled use of world composition with multiplayer PIE using separate processes
#jira UE-36449
Change 3171424 on 2016/10/22 by Jack.Porter
Remove unused exec command causing logspam
#jira UE-37661
Change 3171259 on 2016/10/21 by Ryan.Vance
Mobile multi-view update
#jira UE-37603
Removed dependence on shader name for determining if we need to enable multi-view, now relies on the presence of gl_ViewID_OVR
Worked around unsigned/signed integer driver issues. Some shader compilers were choking on the unsigned postfix
Attempted to clean up some of the code duplication in MobileBasePassRendering.cpp
Made a few design concessions which allows the feature to run on Mali devices in the wild right now:
Allow the feature to be enabled with ES2 rather than just ES3.1. Mali drivers have a bug preventing shader io blocks and multi-view from working together
Passing the view id from the vertex shader. Mali devices don't allow referencing gl_ViewID_OVR in a pixel shader
Change 3171165 on 2016/10/21 by Peter.Sauerbrei
revert out the memory changes for platform file cache for mobile
#jira UE-36835
Change 3171112 on 2016/10/21 by Matt.Barnes
Updating TM-Material_BP_Nodes to facilitate test UEQATC-2969.
#jira UEQATC-2969
Change 3171111 on 2016/10/21 by Mike.Beach
Mirroring CL 3171084 form Dev-BP
Guarding against a unrepro'able top-10 crash in SGraphPin. Making sure we're not operating on a null/pending-kill/transient pin.
#jira UE-37642
Change 3170980 on 2016/10/21 by patrickr.donovan
Motion controller test content update - further updates to combat thumbstick noise.
#jira UE-29618
Change 3170965 on 2016/10/21 by Mitchell.Wilson
Moved panner in M_Frame3_BG material to Custom UV0 to resolve issue with material rendering white on tvOS
#jira UE-37105
Change 3170905 on 2016/10/21 by Marc.Audy
Fix AActor::Serialize crash if a null in the owned components array
#jira UE-37641
Change 3170838 on 2016/10/21 by Ben.Woodhouse
Integrate crash fix from main CL3162008
Fix for crash in GPU profiler. This was caused by the RHIThread getting too far behind the renderthread. This change adds a fence wait on the renderthread in RHIEndDrawingViewport to ensure that the renderthread is never more than a frame ahead.
#jira UE-37216
Change 3170815 on 2016/10/21 by Jamie.Dale
Fixed a potential race-condition in FTextRenderComponentMIDCache, and updated it to detect "stale" MIDs
FMIDData was shared between the game and render threads, but used non-thread-safe shared pointers.
This also marks MIDs as "stale" if the number of MIDs no longer matches the number of pages in the font (which may happen if the font is edited). These "stale" MIDs are kept as a weak pointer in a separate array so that we can still keep the MID object alive as long as something is still using it (as it may still be used by a FTextRenderSceneProxy for a short while). This array of weak pointers is purged of unreferenced instances during the normal cache purge cycle.
#jira UE-37519
Change 3170784 on 2016/10/21 by Mitchell.Wilson
Changing a material in TM-Reflections level
#jira UE-29618
Change 3170668 on 2016/10/21 by Mitchell.Wilson
Updated defaulteditor.ini to resolve cook failure for UBlueprint.
#jira UE-37648
Change 3170595 on 2016/10/21 by Chris.Wood
Added "Vanilla" Editor detection and reporting it to analytics, MTBF and Crash Reporter.
[UE-37132] - Detect "Vanilla" Editor and report it to MTBF analytics and Crash Reporter
#jira UE-37132
Change 3170395 on 2016/10/21 by Robert.Manuszewski
UBT will now respect -remoteini command line param when looking for ini files for build settings. Fixes a crash when launching BP-only project from the Editor with EDL enabled.
#jira UE-37617
Change 3170367 on 2016/10/21 by Allan.Bentham
Prevent overflow of bright pixels during DoF calc.
#jira UE-31755
Change 3170363 on 2016/10/21 by Robert.Manuszewski
Fixing crashes when cancelling async loading
#jira UE-37634
Change 3170362 on 2016/10/21 by Robert.Manuszewski
Fixing MallocBinned2 crashes on 32-bit platforms.
#jira UE-37326
Change 3170280 on 2016/10/21 by Jack.Porter
Fix for landscape not rendering in Player Collision view mode after toggling G.
#jira UE-37576
Change 3170202 on 2016/10/21 by Dmitriy.Dyomin
Fixed: CustomDepth is incorrect when used in Custom PostProcess after Tonemapping
#jira UE-37628
Change 3170160 on 2016/10/20 by Aaron.McLeran
#jira UE-37596 Making detail customizations and experimental setting for sound base showing audiomixer-only features
Implementing CL 3169422 in 4.14
Change 3170029 on 2016/10/20 by Aaron.McLeran
#jira UE-37004
#jira UE-37005
Fixing stat soundwaves
Implementing 3154264 from Dev-Framework
Change 3170024 on 2016/10/20 by Aaron.McLeran
#jira UE-37024 Set Sound Mix Class Override still Playing Sounds in Certain Conditions
Implementing the CL from Dev-Framework
Change 3169869 on 2016/10/20 by Arne.Schober
duplicated:
CL 3169845
#jira UE-35937
Change 3169810 on 2016/10/20 by Steve.Cano
Moving change from CL 3169642 to 4.14 - fix a library issue that was causing Kindle Fire 1st edition to crash when trying to run QA game, may be causing issues on other devices as well
#ue4
#android
#jira UE-22440
Change 3169635 on 2016/10/20 by Mike.Beach
Mirroring CL 3169443 from Dev-BP
Deprecating the [EditoronlyBP] config settings (which are super old, and support legacy functionality, allowing users to export editor-only UBlueprint objects on cook). This is in support of the new event-driven loader (EDL), which is incompatible with these exports. We will be removing support for these settings promptly in 4.15 (hence the choice to deprecate them for 4.14).
#jira UE-37605
Change 3169618 on 2016/10/20 by Mitchell.Wilson
rebuilt lighting for all levels in Content Examples
#jira UE-37570
Change 3169447 on 2016/10/20 by Peter.Sauerbrei
fix for double quotes causing arguments to not be sent correctly to rsync
#jira UE-37018
Change 3169362 on 2016/10/20 by tim.gautier
Updated TM-UMG Level Blueprint - mouse-clicks outside of UMG assets no longer take focus from the set Display Widget
#jira abc-123
Change 3169244 on 2016/10/20 by Chris.Babcock
Update to new CodeWorks for Android 1R5
#jira UE-37554
#ue4
#android
Change 3169240 on 2016/10/20 by Jon.Nabozny
#rn Fixup GameModeClassAliases in Engine.ini files. These must be prefixed with either /Game/ or /Script/ otherwise the asset may fail to resolve and an empty name will be used instead (and cause weird behavior).
#jira UE-37488
Change 3169155 on 2016/10/20 by Peter.Sauerbrei
fix for incorrect characters in bundle id when project has underscores in the name
#jira UE-36436
Change 3169127 on 2016/10/20 by Allan.Bentham
Fix android vulkan compile error with dev builds
#jira abc-123
Change 3169058 on 2016/10/20 by Allan.Bentham
Flush command buffer during init to fix vulkan crash when rendering thread is enabled.
Fix FDeferredDeletionQueue's resource handle storage on 32 bit platforms.
#jira UE-36452
Change 3169049 on 2016/10/20 by Peter.Sauerbrei
fix for minimum ios version in base ini file
#jira UE-37034
Change 3168910 on 2016/10/20 by Jack.Porter
Fix occasional race condition crash in FTcpMessageTransportConnection on editor shutdown
#jira UE-36944
Change 3168906 on 2016/10/20 by Dmitriy.Dyomin
Fixed: Black rendering on Galaxy S4 PowerVR
#jira UE-37567
Change 3168858 on 2016/10/20 by Richard.TalbotWatkin
Made BSP rendering more robust so that out-of-range array accesses trigger an 'ensure' rather than a crash (with a view to identifying the cause of this issue). Also fixed non-editor builds.
#jira UE-37267 - [CrashReport] UE4Editor_Engine!FModelSceneProxy::GetDynamicMeshElements() [modelrender.cpp:322]
Change 3168826 on 2016/10/20 by Richard.TalbotWatkin
Duplicated from //UE4/Dev-Editor, CL 3156473
Attempt to make geometry render / rebuild more robust in the hope of catching UE-36265.
#jira UE-36265 - [CrashReport] UE4Editor_Engine!FModelSceneProxy::HasSelectedSurfaces() [modelrender.cpp:538]
Change 3168335 on 2016/10/19 by Michael.Trepka
Restored previous version of FMacWindow::IsPointInWindow function to solve issues with window dragging.
#jira UE-37418
Change 3168307 on 2016/10/19 by Rolando.Caloca
UE4.14 - Integrate changes from 3051720 and 3057522
[RENDERING] [!]
Revert fix in GPU skin cache (original CL 2722034)
- Waiting on shader compilation with the GPU skin update will destroy/recreate render state, causing a crash in the GPU skin cache.
#jira UE-37545
Change 3168201 on 2016/10/19 by Peter.Sauerbrei
fix for urls with queries not working correctly
#jira UE-35090
Change 3168200 on 2016/10/19 by Mitchell.Wilson
Re-saved multiple cloth assets to resolve building adjacency information warnings.
Replaced deprecated SetText and GrabComponent blueprint nodes with new SetText and GrabComponentAtLocation.
Re-saved multiple assets to resolve empty engine version warnings.
#jira UE-37537
Change 3168174 on 2016/10/19 by Alan.Noon
#jira UE-37534
deleted unnecessary files from Photorealistic Character project
Change 3168160 on 2016/10/19 by Arne.Schober
duplicated:
fixes for velocity render pass
CL 3166370
CL 3166799
#jira UE-37362
Change 3168136 on 2016/10/19 by Alan.Noon
#jira UE-37534
Initial add of Photorealistic Character Sample project
Change 3168127 on 2016/10/19 by Peter.Sauerbrei
fix for IOS_7 not being found
#jira UE-37034
Change 3167886 on 2016/10/19 by patrickr.donovan
#jira UE-37242
TLDR; Test content updates.
Bug entered due to finicky hardware returning noise values that weren't accounted for in test contet. Fortified test content against this edge case, no code change necessary.
Change 3167882 on 2016/10/19 by samuel.proctor
Updating asset for Profiler Heatmap testing
#jira UE-29618
Change 3167868 on 2016/10/19 by Dmitry.Rekman
Linux: disable XGE on Windows (UE-37446).
- XGE does not seem to handle new clang 3.9.0 toolchain well, with very reproducible crashes.
Also fix build breakage with clang 3.8.1.
- always_inline was still applied to debug builds and as such was ignored.
#jira UE-37446
(Edigrating CL 3166330, 3166456 from Dev-Platform to Release-4.14)
Change 3167832 on 2016/10/19 by Mitchell.Wilson
Reconnected 'TopMaterial' in multiple materials to resolve warnings.
Rebuilt lighting and saved levels.
#jira UE-37529 UE-37535
Change 3167688 on 2016/10/19 by Mitchell.Wilson
Removing preview mesh from multiple materials to resolve warnings.
Rebuilt lighting and saved all levels.
#jira UE-29678 UE-37526
Change 3167616 on 2016/10/19 by Marc.Audy
Fix reversed logic checking for an Actor after a cast was supposed to have failed, broken in CL 2695656.
#jira UE-37517
Change 3167585 on 2016/10/19 by Jamie.Dale
Re-enabled all-cultures upload to OneSky so we prime translations correctly
#jira UE-37518
Change 3167579 on 2016/10/19 by Jamie.Dale
Fixed text render component regression with custom MIDs
#jira UE-37305
Change 3167501 on 2016/10/19 by Matt.Kuhlenschmidt
Fixed realtime rendering in editor viewport being disabled when simulating in editor
#jira UE-37466
Change 3167498 on 2016/10/19 by Mitchell.Wilson
Re-saving multiple blueprints with nodeguid warnings.
Cleared preview mesh for materials with string asset reference warnings.
Rebuilt lighting and added _BuildData to resolve lighting rebuild warnings.
#jira UE-30840
Change 3167492 on 2016/10/19 by Matt.Kuhlenschmidt
Fix for disappearing menus in lastest windows 10 build
#jira UE-36752
Change 3167311 on 2016/10/19 by Mieszko.Zielinski
Fixed EQS template cache issues with multiple query run modes #UE4
#jira UE-37496
Change 3167206 on 2016/10/19 by Matthew.Griffin
Moved Github promotion earlier in build script and added 'After' dependencies so that we can guarantee the order of the nightly build/prevent unimportant jobs from running before binary build is completed
Change 3167205 on 2016/10/19 by Matthew.Griffin
Changed CommandUtils.UnzipFiles to use system unzip tool when running on mono, as there has been issues with Ionic not being able to decompress those created by the zip tool
Change 3167010 on 2016/10/19 by Dmitriy.Dyomin
Fix for LevelStreaming getting stuck, and World->PersistentLevel null assert
Contributed by Funcom: https://udn.unrealengine.com/questions/312900/fix-for-levelstreaming-getting-stuck-and-world-per.html
#jira UE-36397
[CL 3189774 by Matthew Griffin in Main branch]
2016-11-08 02:45:19 -05:00
const bool bEmitMobileMultiView = ( FCStringAnsi : : Strstr ( GlslCodeOriginal . GetData ( ) , " gl_ViewID_OVR " ) ! = nullptr ) ;
2016-02-19 13:49:13 -05:00
if ( Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_Android | | Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_HTML5 )
{
2016-03-16 21:16:51 -04:00
if ( IsES2Platform ( Capabilities . MaxRHIShaderPlatform ) & & ! bES31 )
2016-02-19 13:49:13 -05:00
{
// #version NNN has to be the first line in the file, so it has to be added before anything else.
if ( Capabilities . bUseES30ShadingLanguage )
{
AppendCString ( GlslCode , " #version 300 es \n " ) ;
}
2016-03-16 21:16:51 -04:00
else
2016-02-19 13:49:13 -05:00
{
AppendCString ( GlslCode , " #version 100 \n " ) ;
}
ReplaceCString ( GlslCodeOriginal , " #version 100 " , " " ) ;
}
}
Copying //UE4/Fortnite-Staging to //UE4/Dev-Main (Source: //UE4/Fortnite-Staging @ 3026859)
#rb none
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3016173 on 2016/06/16 by Lukasz.Furman
fixed path updates in nested move tasks
#jira FORT-25742
Change 3015722 on 2016/06/15 by Bob.Tellez
#UE4 Avoiding a crash in FOnlinePartySystemMcp::PublishPartyInfoToPresence
#JIRA OR-14102
Change 3015626 on 2016/06/15 by Bob.Tellez
#UE4 Experimental fix for hitches involving spinlocks in windows.
#JIRA FORT-25253
Change 3015473 on 2016/06/15 by Bob.Tellez
#UE4 Compiling CrashReportClient in VS2013 instead of 2015 until we can figure out the appropriate way to install the redist on end-user machines.
#JIRA FORT-25748
Change 3014721 on 2016/06/15 by Bob.Tellez
#UE4 Returning false in cases where we want to skip replication of GameplayAbilities structures in NetDeltaSerialize. This fixes a bug where actors trying to become net dormant were not allowed because they were continuously reporting that they had data to replicate.
#JIRA FORT-25689
Change 3014323 on 2016/06/15 by Rob.Cannaday
When kicked from lobby beacon, restore the persistent party after leaving the previous persistent party
#jira FORT-25407
#tests front end parties, being kicked from outpost lobby
Change 3013712 on 2016/06/14 by Bob.Tellez
#UE4 Fix DrawNetDriverDebug crash during map transitions
Change 3013418 on 2016/06/14 by Mark.Satterthwaite
Don't release Metal buffers directly into the buffer pool, instead defer this until the command-buffer is known to have finished. This prevents the CPU from trying to modify the buffer while the GPU is still reading it if the GPU has fallen so far behind the CPU and therefore eliminates one possible cause of invalid access on the GPU.
#jira FORT-24510
Change 3013394 on 2016/06/14 by Mark.Satterthwaite
Report Metal command-buffer failures in MetalQuery in the same way as MetalCommandList and make them fatal as well. This ensures that the game doesn't try to continue if the commands failed as that is unsafe.
#jira FORT-24808
Change 3012977 on 2016/06/14 by Fred.Kimberley
Add a blueprint exposed function to evaluate an attribute from a given base value.
Change 3012755 on 2016/06/14 by Bob.Tellez
#UE4 ExclusiveInternalFlags is now respected when passing in a null ObjectPackage in StaticFindObjectFastInternalThreadSafe
#JIRA FORT-113
Change 3011948 on 2016/06/13 by Mark.Satterthwaite
Workaround a Fortnite crash on launch for Mac OpenGL - one or more shaders are using the bit-cast operators (asuint(), asfloat()) that aren't available with GLSL version 150. In order to use them the GLSL version must be 330 which means switching the version tag at runtime. There will be Mac GPUs on 10.10.5 which don't correctly implement these instructions so this really isn't a fix - that would be to change shaders to not use SM5-level instructions.
Change 3011659 on 2016/06/13 by Bob.Tellez
#UE4 Better handling of checked state in SGameplayTagWidget::IsTagChecked. Checking direct child tags was not sufficient and also not needed since HasTag allows you to follow parent tags when checking for an explicit tag.
Change 3011647 on 2016/06/13 by Rob.Cannaday
Fix for multiple account login not kicking previous logins
Client was not parsing response from backend. Client was expecting content-type to be "application/json" (using FString::Equals). Backend was returning "application/json;charset=UTF-8". Changed usage from FString::Equals to FString::StartsWith
#jira FORT-25452
#tests multiple account login, frontend only
Change 3011436 on 2016/06/13 by Nick.Cooper
#UE4 - Added bRelativeToInitialFOV option to UCameraAnim, defaulting to true. If turned off, camera anims will use the camera's current FOV as the initial FOV for the animation
#jira FORT-23606
Change 3010411 on 2016/06/12 by Bob.Tellez
#UE4 Fix for a possible case where a reference to an async loading package that would contain a level gets replicated before the level it contains is fully serialized, causing network loading code client side to attempt to load the package even though it is not allowed to load maps.
#jira FORT-113, FORT-22222
Change 3009885 on 2016/06/10 by Billy.Bramer
#jira FORT-25361
[FORT-25361] Health and shield values are incorrect when slotting survivors with bonuses
- Fix some resultant bugs from swapping attributes to be struct-based:
- Fix issue wherein the initial creation of the client-side aggregator could be initialized with the computed final value from the server, resulting in incorrect client-side math
- Fix issue where subsequent changes to the aggregator's base value on the client would be lost
Change 3009514 on 2016/06/10 by Bob.Tellez
#UE4 Remove final usage of the task graph in WmfMediaPlayer to dodge shutdown crashes.
Change 3009197 on 2016/06/10 by Michael.Trepka
Disabled reverb on Mac again. It's too expensive and doesn't fix FORT-22090 anyway
Change 3008392 on 2016/06/09 by Ben.Zeigler
#jira FORT-25244
Change it so application error codes like 400/404 do not cause the mcp to think it is disconnected from the backend. Only 408, 501, 502, and 504 now result in ServiceUnavailable.
Change 3008106 on 2016/06/09 by Lukasz.Furman
fixed cutting corners near navmesh obstacles in detour crowd's string pulling
#jira FORT-24981
Change 3008039 on 2016/06/09 by Bob.Tellez
#UE4 Fixed conversion of TAssetPtr to UObject* properties for the case where the referenced object is not already loaded.
Change 3007864 on 2016/06/09 by Fred.Kimberley
Updates to supporting attributes as structs. Adding functionality that makes them easier to use and override in projects.
Change 3007682 on 2016/06/09 by Michael.Trepka
Re-enabled reverb on Mac
Change 3006971 on 2016/06/08 by Saul.Abreu
#fortnite
#jira FORT-25169
Added node costs types, cost amounts, and remaining balance for each cost type to the NodePurchase analytics event.
Change 3006933 on 2016/06/08 by Chris.Gagnon
Fixed up all the Power levle widget use cases.
#Jira FORT-23472, FORT-24132, FORT-24144, FORT-24952, FORT-24924
Change 3006633 on 2016/06/08 by Dmitry.Rekman
Linux: propagate ensure message to the CR (FORT-23030).
- Without this, ensure() has a generic "SIGTRAP" error message, which is misleading for QA.
#tests Tried "debug ensure" a few times, observed crash report (on the website) with the proper message
#jira FORT-23030
Change 3006036 on 2016/06/08 by Rob.Cannaday
Remove warning about missing "recentplayers" field. The absence of the field is gracefully handled in the client and is only absent if the list is absent on the server.
#jira FORT-18687
Change 3005216 on 2016/06/07 by Bob.Tellez
#UE4 Avoiding layout invalidation if you use SetEnabled to set an identical enabled state. This is the same as how SetVisibility works.
Change 3004857 on 2016/06/07 by Rob.Cannaday
Fix for incorrect reason displayed for inability to join party
#jira FORT-13517
Change 3004811 on 2016/06/07 by Michael.Trepka
Increased the number of input buses for CoreAudio 3D Mixer to support 64 audio channels. Also, added a warning to FAudioDevice::StartSources so it doesn't silently ignore sound source initialization failures.
Change 3004553 on 2016/06/07 by Lukasz.Furman
fixed AnySpawners activating before navmesh unlock & rebuild
#jira FORT-25067
Change 3004083 on 2016/06/07 by Bob.Tellez
#UE4 Fixing GenerateApplicationPath for monolithic games.
Change 3003457 on 2016/06/06 by Bob.Tellez
#UE4 Add a little info to a warning about failing to load a file for streaming.
Change 3003256 on 2016/06/06 by Bob.Tellez
#UE4 Fixed a bug where not having a crash report would cause CrashReportClient not not properly exit on Mac
Change 3003146 on 2016/06/06 by jonathan.lindquist
switching from a ceil and lerp technique to an if statement to provide better transform results.
Change 3002048 on 2016/06/06 by Daniel.Broder
Support for setting Scalar and Vector Materials by Index rather than by name on MIDs.
This feature allows much better performance in cases where large numbers of parameters are being set per frame and where the indices can be cached by the calling code in an initialization step.
#RB Stephan.Delmer
#CodeReview Bob.Tellez
#UE4 #ReleaseNote
Change 3001315 on 2016/06/05 by Daniel.Broder
Fixed crash that could occur when the FPhysScene* was null (the world has no PhysicsScene) in USkeletalMeshComponent::TermArticulated(). That could happen when loading a world without fully instantiating it, such as when right-clicking a world in the context browser rather than opening the world directly.
#RB Stephan.Delmer
Ori, I wasn't sure if the whole line (and the line below it using PScene) should be moved within the if (PhysScene) block or not, but this change seems to fix it. If they can safely be moved, that would be presumably more efficeint though (since we'd only compare vs. nullptr once).
#CodeReview Ori.Cohen
#UE4 #Fortnite #BugFix
Change 3001001 on 2016/06/04 by Fred.Kimberley
Added meta data about attributes and a post serialize function so we can recover attributes that have changed their type.
Adding Fortnite specific attribute type specialization. This type enforces minimum and maximum values for attributes.
Change 3000613 on 2016/06/03 by Sam.Spiro
#fort online 24747
Take change from SamZ to get connection change delegates firing correctly
Add a delegate to the frontend player controller to logout if the connection goes bad (when all retries have failed)
#RB Ben.Zeigler
Change 3000482 on 2016/06/03 by Rob.Cannaday
Fix problem where newly added friends don't recognize party invitations
#jira FORT-19415
From CL 2953432:
Ignore presence updates for local user with different resources
#jira OR-19929
#tests front end party invites
Change 2998044 on 2016/06/02 by Lukasz.Furman
fixed path box intersection test used to verify if hotspot is still required for updated path
#jira FORT-24422
Change 2997948 on 2016/06/02 by Eric.Newman
Moved ProdCom to bottom of file w/ deprecation comment, and clarified deprecation criteria. Will probably need to be removed in //UE4 first and check for any fallout from EC jobs failing
Change 2997660 on 2016/06/02 by Chris.Wood
Changed Linux server crash handler to force CRC log paths to match main engine log.
[UE-30259] - Some server crashes are missing from crashreporter database
Should allow us to have CRC logs uploaded to S3 along with main logs easily.
Change 2996702 on 2016/06/01 by Bob.Tellez
#UE4 You can now use Edit Asset on Level assets in the reference viewer.
Change 2996683 on 2016/06/01 by Tim.Tillotson
#fortnite
Fix analytics comments, changed a few NULL to nullptr, and removed stale code.
#JIRA FORT-23833
Change 2996548 on 2016/06/01 by Bob.Tellez
#Fortnite Fixing up or deleting remaining references to homebase buildings. HBOnboarding_BuildHeroBuilding is the last reference now and it will be removed soon.
Change 2996322 on 2016/06/01 by Bob.Tellez
#UE4 Fix for specifying more than one ini override on the command line
Change 2996306 on 2016/06/01 by Bob.Tellez
#UE4 Delete unneeded and broken script to unlock files in xcode. Does not work since XCode 6.3.
Change 2995634 on 2016/06/01 by Jonathan.Lindquist
imrpoving the wind magnitude and noise texture
Change 2995249 on 2016/05/31 by Bob.Tellez
#UE4 Importing "INVALID" in FUniqueNetIdRepl no longer triggers the warning about using ImportText during cook.
Change 2992135 on 2016/05/26 by Bob.Tellez
#UE4 extern for GuardedMain in LaunchLinux to fix nonunity
Change 2991912 on 2016/05/26 by jonathan.lindquist
moved a texture sample into a new grouping
Change 2991738 on 2016/05/26 by Bob.Tellez
#UE4 Level SaveAs now duplicates the world before saving it. This fixes a problem where level assets had the same guids for objects saved in them, which causes LazyObjectPtr issues when they are both in memory at the same time since they can not be uniquely identified.
Change 2991449 on 2016/05/26 by Lukasz.Furman
AI Ftests will now delay spawning until navmesh is ready
#fortnite
Change 2990705 on 2016/05/25 by Chris.Gagnon
New stats panel, upon stat changes there is a delta pop up.
New Squads Tab.
Navigation from nodes to squad slots working.
Added GetAnimationCurrentTime() to UMG Animation API.
#RB Fred.Kimberley, Saul.Abreu
Change 2990286 on 2016/05/25 by Bob.Tellez
#UE4 Fix logging error regarding max tag container replication size
Change 2990285 on 2016/05/25 by Bob.Tellez
#UE4 Fix for crash when using "ShowDebug Game" client side
Change 2989977 on 2016/05/25 by Lukasz.Furman
auto generating navigation bounds from building grid data, UnitNavMeshBounds volume is no longer required
#fortnite
Change 2989174 on 2016/05/24 by Bob.Tellez
#UE4 Added GC reason to the log message declaring that we are doing a GC during the cook commandlet.
Change 2988571 on 2016/05/24 by Jonathan.Lindquist
submitting a fix for grass-like hierarchy layouts
Change 2985428 on 2016/05/20 by Bob.Tellez
Experimenting with making UGS CIS not rebuild UBT when incremental building.
Change 2985319 on 2016/05/20 by Bob.Tellez
#UE4 Removing NumActorChannelsReadyDormant stat as it is somewhat expensive to calculate.
Change 2985258 on 2016/05/20 by Billy.Bramer
- Add GetFloatAttributeBase and GetFloatAttributeBaseFromAbilitySystemComponent to AbilitySystemBlueprintLibrary, allows querying for a base value of an attribute
Change 2985157 on 2016/05/20 by Bob.Tellez
Experimenting with non-unity CIS
Change 2984664 on 2016/05/19 by Bob.Tellez
#UE4 Pasting multiple cells into the property matrix no longer depends on your selected tiles, only your target cell. This is to match the behavior in Excel. Pasting a single cell into multiple cells remains unchanged.
Change 2984663 on 2016/05/19 by Bob.Tellez
#UE4 Fixed a crash in the property matrix involving going into edit mode on rows that include widgets that are not editable.
Change 2984613 on 2016/05/19 by Bob.Tellez
#UE4 You can now text import gameplay tags by directly using the tag string (i.e. Evolution.Hero.Soldier). This allows pasting these strings directly into the property matrix or other property-based editors.
Change 2984508 on 2016/05/19 by Billy.Bramer
- Add constructors for the new struct based attribute
Change 2983883 on 2016/05/19 by Lukasz.Furman
disabled movement mode in EQS testing pawn to prevent it from falling at PIE start
#ue4
Change 2983770 on 2016/05/19 by Bob.Tellez
#UE4 Fixed a bug where "OutputToScreen" BP messages would get stuck disabled after a screenshot (using a number of different codepaths). All screenshots now preserve the state of the "suppress messages" bool.
#JIRA FORT-24303
Change 2982306 on 2016/05/18 by Bob.Tellez
Also experimenting with not updating version files in UGS CIS.
Change 2982154 on 2016/05/18 by Lukasz.Furman
changed navwalking geometry conforming to use building prop special case
#jira FORT-24215
Change 2982019 on 2016/05/18 by Bob.Tellez
Trying out incremental CIS builds
Change 2981192 on 2016/05/17 by Bob.Tellez
#UE4 No longer staging movie files for dedicated server builds.
Change 2981023 on 2016/05/17 by Lukasz.Furman
added new mode for NavWalking geometry conforming: prefer height closer to current one
this should allow standing on top of props or walking off them in lower LOD, instead of moving at ground level - needed for survivors on low cars
Change 2980578 on 2016/05/17 by Lukasz.Furman
added option for disabling path replan in crowd manager, turned it off in fortnite
this must be handled through path update events and corridor assignment or else hotspot detection will break
#jira FORT-24116
Change 2980364 on 2016/05/17 by Lukasz.Furman
unified bounds tests for applying navmesh modifiers, always expanding bounds one cell height on Z axis to cover for voxelization roundings
#jira FORT-24045
Change 2980360 on 2016/05/17 by Lukasz.Furman
more detailed logs for using custom navlinks
#jira FORT-23990
Change 2979880 on 2016/05/16 by Bob.Tellez
#UE4 Raising scalability threshold for high end machines to adjust for modern hardware.
Change 2979522 on 2016/05/16 by Saul.Abreu
#fortnite
Added IsValid BP-exposed method for FGameplayAttribute (which is already a BP-exposed struct type), as there is no existing method of validating a gameplay attribute from blueprints. Useful for UI that represents an attribute.
Change 2977690 on 2016/05/13 by Daniel.Broder
Made most FBox functions FORCEINLINE to improve DebugGame performance.
#Fortnite: This change (just on IsInsideOrOn()) improved DebugGame performance for one part of Wind performance in Fortnite by ~18%.
#CodeReview Bob.Tellez
#UE4 #ReleaseNotes
Change 2977517 on 2016/05/13 by Daniel.Broder
Added ForceInline to TIndexedContainerIterator<...>::operator!=(...). This change improved DebugGame performance of a for loop using ranged-based syntax by ~27%!
#CodeReview Bob.Tellez
#Fortnite Wind perf improvement in DebugGame builds.
#UE4 #ReleaseNote
Change 2974910 on 2016/05/11 by Bob.Tellez
#UE4 More graceful handling of export class names in string asset references.
Change 2974095 on 2016/05/11 by Bob.Tellez
#UE4 Fixed a bug where the RenderTargetOutputFormat for velocity rendering when using r.BasePassOutputsVelocity=True was using the wrong output index.
Change 2973663 on 2016/05/11 by John.Abercrombie
[implemented by Ben.Marsh]
UBT: Add a config setting to allow overriding the output directory for PCH files. To use, edit Engine\Saved\UnrealBuildTool\BuildConfiguration.xml and add:
<BuildConfiguration>
<PCHOutputDirectory>D:\TestOutputDir</PCHOutputDirectory>
</BuildConfiguration>
Change 2972603 on 2016/05/10 by Saad.Nader
#Fort Added the catalyst to the requirements of an evolvable item. It will only disable the evolution button if there is a catalyst.
Change 2971741 on 2016/05/09 by Bob.Tellez
#UE4 Adding more context to an error message about serializing FUniqueNetIdRepl during cook.
Change 2969838 on 2016/05/06 by Bob.Tellez
#Fortnite Added FN PS4 to build scripts
Change 2969542 on 2016/05/06 by Bob.Tellez
#UE4 Fixed a crash that involved renaming SCS nodes during compile on load.
#JIRA FORT-23754
Change 2969520 on 2016/05/06 by Billy.Bramer
- Fix missing virtual destructor now that the initter struct has virtual members
Change 2969467 on 2016/05/06 by Billy.Bramer
- Change FAttributeSetInitter to only contain pure virtual functions in preparation for making it easier to provide a custom implementation per game
- Change the existing example FAttributeSetInitter to be called FAttributeSetInitterDiscreteLevels, make it derive from FAttributeSetInitter (DiscreteLevels is now allocated by default for now)
- Add support for the new struct-based attribute type to FAttributeSetInitterDiscreteLevels
- Fix typos in the initter
- Convert usages of FString in AbilitySystemGlobals to FStringAssetReference, where appropriate
- Allow attribute init data to come from several curve tables instead of just one
- Remove reimport bindings from attribute metadata and global curve table, as neither was in use
Change 2969279 on 2016/05/06 by John.Abercrombie
Behavior tree auxilary nodes, parallel tasks, active tasks, and aborting tasks shouldn't be ticked while the behavior tree is paused
Change 2966311 on 2016/05/04 by Rob.Cannaday
Fix PS4 Orion players being able to whisper chat with non-Orion players
#jira OR-20626
#tests chat with launcher, fortnite
(From //Orion/Dev-General CL 2963555)
Change 2966255 on 2016/05/04 by Bob.Tellez
#UE4 Added an ensure to track down the cause of FORT-23604 and to gracefully recover from what would have been a crash.
#JIRA FORT-23604
Change 2966083 on 2016/05/04 by Bob.Tellez
#UE4 Adjusted material quality level for "Medium" settings to medium quality. High quality is still used in High and Epic scalability levels.
Change 2965669 on 2016/05/04 by Nicholas.Davies
Change the restricted platform ID to PSN to prevent Fortnite > PS4 paragon whisper chat
#OPP-5268 Integrate PS4 Chat block Social and OSS code to Fortnite, UT, and Launcher
#RB Antony.Carter
Change 2965316 on 2016/05/03 by Ben.Zeigler
#jira FORT-23600 Fix issue where stalled mcp queries never finished. This causes the query to properly fail
Manual merge of CL #2907874:
When MCP cancels a request due to its required auth failing, the http retry system would never kick off the complete delegates.
This was due to the system only adding a request to its list once ProcessRequest was called, which does not happen in the above case.
The fix is to add the request to the list when it is cancelled if we did not find it.
Change 2965164 on 2016/05/03 by Bob.Tellez
#UE4 Fix for Crash in WmfMedia for when the player is destroyed while loading media. Thanks MaxP!
Change 2963754 on 2016/05/02 by Billy.Bramer
- Switch ability system from binding to OnPostWorldCreation to PreLoadMap for its cleanup functions, as OnPostWorldCreation is called repeatedly with sublevels and can cause data loss
- This is a bit of a stopgap, as where and when this happens should probably be configured per game (example: a long session game like an MMO would want to trigger these on something other than a map transition possibly)
Change 2962922 on 2016/05/02 by Lukasz.Furman
fixed gameplay debugger in "simulate in editor" mode
Change 2959860 on 2016/04/28 by David.Nikdel
#OGF #McpProfile
- Add Profile Write Lock support to client API
NOTE: Still need to finish backend support so haven't been able to test yet but this is enough for API hookup
NOTE2: You may see a log message about "write lock unexpectedly released" when you do your first command after locking. This is expected because the backend isn't sending down the write lock timeout yet.
#CodeReview: Ben.Zeigler
Change 2959810 on 2016/04/28 by Jonathan.Lindquist
A few more saftey measures to warn the user of incorrect settings and faulty meshes. (In response a licensee's question)
Change 2959336 on 2016/04/28 by Bob.Tellez
#UE4 Some improvements to asset save time: Added an early-out in PackageBackup to avoid inspecting files in cases where we don't care about the resutls. Also now using GetObjectsWithOuter when passing in a package list to GetObjectsInPackages (which probably should be renamed to GetAssetsInPackage)
Change 2958942 on 2016/04/28 by Jonathan.Lindquist
Wrote a new portion of pivot painter 2 that unifies edge normals across multiple static meshes
Change 2958644 on 2016/04/27 by Jonathan.Lindquist
lowering default recursive steps
Change 2956612 on 2016/04/26 by Jonathan.Lindquist
A few new saftey measures
Change 2956197 on 2016/04/26 by Fred.Kimberley
Fix a bug where a delegate won't be fired if the base value of an attribute has been changed and the attribute is the new type and doesn't have an aggregator.
Fix a bug in gameplay effect tag matching where the deprecated tag is being checked but not the current one.
Change 2955386 on 2016/04/25 by Jonathan.Lindquist
Fixed a ui bug related to the first time path geo generator is run
Pivot painter 2 has a new feature. It duplicates each model in a hierarchy, combines them and then welds their verts.
Change 2955230 on 2016/04/25 by Billy.Bramer
- Add a debug gameplay tag to string blueprint function, should only be used for debugging purposes
Change 2954899 on 2016/04/25 by Fred.Kimberley
Added a new backing data type for gameplay attributes. The new type holds both the current and base values. Currently, this new type can coexist with numeric types for gameplay attributes.
Change 2953511 on 2016/04/22 by Bob.Tellez
#UE4 Bumping up texture streaming pool allowance for min spec and redistributing mid an high to match. Also reduced mip bias at min spec.
Change 2953496 on 2016/04/22 by Chris.Gagnon
When the console closes it now properly restores the viewports input state (both focus and capture).
Change 2952930 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
#jira FORT-23041
Change 2951765 on 2016/04/21 by John.Abercrombie
Removed unused code when initializing attribute sets
Change 2951617 on 2016/04/21 by Jonathan.Lindquist
new elements to the grass shader to include wind influence
also adding a test model
and the latest version of canopy creator
Change 2950861 on 2016/04/21 by Jonathan.Lindquist
Submitting a new material for grass so that it may react to the wind
New wind test maps
Functions to support global wind
a new "fuzzy" mat functions
Adding wind to the rift portals
Change 2950725 on 2016/04/20 by Bob.Tellez
Fixups for non NewEC in GetLastSucceededCL
Change 2950695 on 2016/04/20 by Bob.Tellez
Adding a small helper function to get the last succeeded CL of a given node.
Change 2950616 on 2016/04/20 by Maury.Mountain
hook up the pivot (+ (0,-1,0)) section of material function that was causing offset motion from pivots
Change 2950207 on 2016/04/20 by Bob.Tellez
#UE4 NoTimeouts is now respected even in the initial connection timeout. This fixes a bug where a large stall when starting pie causes you to transition to the entry map.
Change 2950162 on 2016/04/20 by Lukasz.Furman
fixed processing of repath requests, added infinite loop protection
#jira FORT-23090
Change 2949974 on 2016/04/20 by Lukasz.Furman
another batch of fixes for hotspot tasks getting out of sync:
abort move is now ignored if instigated by new task at goal, clearing hotspot data on dying while gameplay tasks are still accessible, ignoring move resume when controller is being destroyed
Change 2949923 on 2016/04/20 by Rob.Cannaday
FOnlineIdentityMcp: Cancel ClientAuthRequests and ExternalAuthRequests on shutdown
#tests PIE start game / shutdown
Change 2949210 on 2016/04/19 by Bob.Tellez
#UE4 Removing all local players from the game instance when it is shut down. This ensures that local players are properly torn down and events related to the lifespan of the player or controller are fired when exiting the game normally.
#JIRA FORT-23024
Change 2947381 on 2016/04/18 by Rob.Cannaday
Change XMPP presence, pubsub, messages, multi user chat, and chat's ref counting to be thread safe
#jira FORT-22861
#tests front end partying
Change 2945301 on 2016/04/15 by Michael.Trepka
Reset SyncStatus in FAvfMediaVideoTrack::SeekToTime to fix issues with video not updating after rewind
Change 2944422 on 2016/04/14 by Michael.Trepka
Fixed Mono compile errors in UAT
Change 2944375 on 2016/04/14 by Fred.Kimberley
Changed how we handle missing gameplay tags so we now ensure once per missing tag instead of only ensuring on the first missing gameplay tag.
Change 2944040 on 2016/04/14 by Michael.Trepka
Fixed a problem with CoreAudio AudioUnitGraph update caused by adding and deleting the same node in a single tick
Change 2943864 on 2016/04/14 by Lukasz.Furman
fixed initialization order of gameplay debugger replicators on client
#jira FORT-22885
Change 2943228 on 2016/04/13 by Bob.Tellez
#UE4 Moved the addition of the IsDataOnly tag out of the if (ParentClass) block. Tags should not be dynamically added like this or else they can not be discovered by the editor which relies on asking the CDO for the tags relevant to an asset type.
Change 2942303 on 2016/04/13 by Daniel.Broder
Added support to be able to set a CanvasRenderTarget2D NOT to clear to green whenever it's updated (so you can just draw pixels that have changed instead of always having to redraw everything.
#RB Bob.Tellez
#UE4
Change 2941919 on 2016/04/13 by Jonathan.Lindquist
Adding a new maxscript that allows artists to procedurally generate trees.
Change 2941816 on 2016/04/13 by Saul.Abreu
Demoted errors regarding widget-bound properties when first compling a new created widget blueprint - otherwise an ensure occurs.
Change 2941752 on 2016/04/12 by jonathan.lindquist
adding a new function to optimize trees and fix a few issues
Change 2941519 on 2016/04/12 by Jonathan.Lindquist
submitting a new warning regarding file unit types
Change 2940980 on 2016/04/12 by John.Abercrombie
Turned Graphs off by default in the Visual Logger
Change 2940134 on 2016/04/11 by Billy.Bramer
- Add support for new overrideable function OnPostDataImport to FTableRowBase; Can be override to perform custom parsing, fix-up, etc. per struct type whenever a data table is imported or reimported
- Change row struct combo box on the data table importer to be sorted alphabetically
Change 2938828 on 2016/04/08 by David.Hunt
#FN || Economy Rebuild
Updating several code references to items and item paths that no longer exist, with Bob's help.
This fixes FORT-22784 (hopefully for real) and several other build and item errors. It also indicates that the various redirector issues I have been experiencing were likely red herrings - they were C++ defaults that were showing up on items that had nothing set, as opposed to redirects that failed.
#CodeReview Bob.Tellez, Ben.Zeigler, William.Ewen, Carlos.Cuello
Change 2938675 on 2016/04/08 by Lukasz.Furman
fixed gameplay debugger displaying paths of killed pawns
#fortnite
Change 2938426 on 2016/04/08 by Rob.Cannaday
Implement new command line party invitation format into Fortnite
#jira FORT-22685
#tests launch with command line party invite
Integrate CLs 2908339 and 2917498 from Orion
Change 2938367 on 2016/04/08 by Billy.Bramer
- Mark the reimport data table factory with UNREALED_API for external use
- Change CSVImportFactory to respect the class of existing data being reimported upon
Change 2937319 on 2016/04/07 by Lukasz.Furman
improved gameplay task info in gameplay debugger tool
Change 2937178 on 2016/04/07 by Lukasz.Furman
fixed aborting undermine tasks when player becomes reachable
#jira FORT-22240, FORT-22077
Change 2937166 on 2016/04/07 by Saul.Abreu
Fixed redundant typename in TPair that was causing clang compilation errors.
Change 2937093 on 2016/04/07 by Saul.Abreu
#fortnite
Made ElementSetType protected again in the Map family.
Change 2937044 on 2016/04/07 by Saul.Abreu
Tweaked Set/Map family of data structures to expose the typedefs for their key, value, and pair types.
Change 2936940 on 2016/04/07 by Bob.Tellez
#UE4 Fixed a bug that prevented the log summary from being printed after a blueprint compile.
Change 2936696 on 2016/04/07 by Bob.Tellez
#UE4 Blueprint names are once again part of Blueprint compile log messages.
Change 2936572 on 2016/04/07 by Lukasz.Furman
added more debug logs for tracking rare NaN error in player movement
#jira FORT-19426
Change 2934892 on 2016/04/06 by Lukasz.Furman
fixed updating hotspot information after all tasks instigated by it are finished
#jira FORT-22515
Change 2933664 on 2016/04/05 by Michael.Trepka
Fixed a rare crash in USoundNodeLooping::NotifyWaveInstanceFinished
Change 2933554 on 2016/04/05 by Lukasz.Furman
fixed taker's portal move (priorities of gameplay tasks spawned by path following)
#jira FORT-22482
Change 2933343 on 2016/04/05 by John.Abercrombie
Changed FGameplayAbilityActorInfo's AnimInstance property to a SkeletalMeshComponent in case AnimInstances are ever changed on a SkeletalMeshComponent
- AnimInstance can be used through an accessor
Change 2933300 on 2016/04/05 by Lukasz.Furman
fixed number of spawned AI in FTests using PreSpawnDelay
#fortnite
Change 2933171 on 2016/04/05 by Lukasz.Furman
added PreSpawnDelay param to function test spawn sets
#fortnite
Change 2931072 on 2016/04/01 by Lukasz.Furman
changed pawn actions to gameplay tasks
#jira FORT-21314
Change 2930987 on 2016/04/01 by Billy.Bramer
- Add method to data table to get all rows as a type
- Add metadata tag for data table rows to report columns as DataTableImportOptional, at which point they will not be warned against if missing during import (this allows games to do custom post-import fix-up or synthesis of data w/o expecting it to be imported)
- Use new method for getting all tags to fix FORT-20563 "Gameplay tag table import checks by numerical row name for no reason"
Change 2929651 on 2016/03/31 by Nick.Cooper
#Fortnite - Fixed Actor AttachmentReplication not being cleared on detachment, which would cause issues with the actor's location for clients joining in progress
#jira FORT-21330
#RB ben.zeigler
Change 2929360 on 2016/03/31 by Daniel.Broder
Fixed bug where CanvasRenderTarget2D assets would crash on load in editor due to trying to update the asset during post-load.
Thanks to Bob for what I needed to check to early-out and avoid the crash.
#RB Bob.Tellez
#UE4
Change 2928845 on 2016/03/31 by Nicholas.Davies
Add fix for chat text not clearing
#jira FORT-22049 Textbox does not clear when text is sent through chat
Change 2928574 on 2016/03/30 by Ben.Zeigler
Fix issue with redirectors not working properly for blueprint function libraries. When a blueprint got regenerated it patched the old export, but failed to clear the "load failed" flag, so it would fail to find it when later pointed to by a redirect
Change 2928572 on 2016/03/30 by Ben.Zeigler
#Jira FORT-20763
Fix issue with "Server re-loading object" warning going off for deleted actors. It now only logs, and only for things that are going to successfully load
Change 2928436 on 2016/03/30 by Bob.Tellez
#UE4 Added Canvas Render Target factory and asset type actions so you can create them in the content browser and search for them after they are created.
Change 2928372 on 2016/03/30 by Bob.Tellez
#UE4 Added verbose message about animation assets that need to be resaved due to resetting the skeleton.
Change 2926805 on 2016/03/29 by Bob.Tellez
#UE4 Made SetOverallScalabilityLevel virtual so game-specific features can be updated based on a single-value level.
Change 2926752 on 2016/03/29 by Bob.Tellez
#UE4 Using DesiredScreenHeight is now optional. Often games use ResolutionQuality as purely a way to run better on slower machines so it should be controlled entirely by scalability.
Change 2926189 on 2016/03/29 by Rob.Cannaday
Change storing HTTP requests as raw pointers to weak pointers with validity being checked via Pinning it
#jira FORT-18947
#jira OR-17695
#tests golden path
Change 2924921 on 2016/03/28 by Lukasz.Furman
removed log message showing as navmesh generation error when it skips over degenerated poly
#fortnite
Change 2924843 on 2016/03/28 by Lukasz.Furman
added more debug logs for navmesh's failed triangulate()
#jira FORT-22186
Change 2924719 on 2016/03/28 by Lukasz.Furman
fixed offmesh link connection issue causing path portal edges to have duplicated data and breaking hotspot detection traces
#jira FORT-22132
Change 2921698 on 2016/03/24 by Lukasz.Furman
fixed EQS instancing queries by debug name instead of using unique one, fixed debug name on asset duplication
#fortnite
Change 2920395 on 2016/03/23 by Bob.Tellez
#UE4 Added a call to FBaseServiceMcp::Shutdown() in FOnlineServiceAvailabilityMcp::Shutdown. The parent class doesnt do anything today, but this may fix a bug in the future.
Change 2920343 on 2016/03/23 by Ben.Zeigler
In ConvertScalarUPropertyToJsonValue, move the execution of the custom callback up above the specific property types. This is needed to allow us to override the TextProperty export, and allows overriding in general. It can have a performance implication if the custom callback is very slow
#RB josh.markiewicz
Change 2920310 on 2016/03/23 by Bob.Tellez
#UE4 FOnlineServiceAvailabilityMcp::Init was not invoking the Superclass' Init
Change 2920254 on 2016/03/23 by Aaron.McLeran
FORT-22090 Re-disabling reverb.
Will add an ini-based disabling ability but this CL quickly re-disables to resolve volume issue on FN and (hopefully) bypass crash mentioned in FORT-22037
Change 2920249 on 2016/03/23 by Rob.Cannaday
Fix for crash in FOnlinePartySystemMcp::InternalCleanUpPartyMember
Don't trigger "member left" type events if we are leaving the party
#jira FORT-20422
#jira FORT-21726
Change 2920178 on 2016/03/23 by Bob.Tellez
#UE4 Calling the platform-specific implementation of StackWalkAndDump when invoking StackWalkAndDumpEx. This fixes a bug in Windows where the first ensure does not produce a callstack.
Change 2919858 on 2016/03/23 by Bob.Tellez
#UE4 Fix for ensure about accessing a CVar in UParticleModuleLight on a non-game thread using GetValueOnGameThread. I changed this to GetValueOnAnyThread.
Change 2919775 on 2016/03/23 by Bob.Tellez
#UE4 Restoring enforced uniqueness in FUObjectAnnotationSparseSearchable and put all manipulations of InverseAnnotationMap in critical sections. This will make RemoveAnnotation fast again.
Change 2919233 on 2016/03/22 by Bob.Tellez
#UE4 Removing a warning that is pretty chatty in our cooked logs.
Change 2919125 on 2016/03/22 by Bob.Tellez
#UE4 Added ParticleLightQuality scalability setting since lower-end machines have trouble with particle lights. They are disabled on low and medium spec machines. HQ lights are only allowed on high-end machines.
Change 2918831 on 2016/03/22 by Bob.Tellez
#UE4 Fixed a bug where WinInet response headers were not properly being trimmed.
#JIRA FORT-22054
Change 2917722 on 2016/03/21 by Ben.Zeigler
Remove FortniteServer module and move those classes to FortniteGame. The engine doesn't support classes that only exist on servers but not clients, so this fixes a lot of error spam bugs, and should improve compile times
Resave assets that directly referenced FortniteServer
Change 2917588 on 2016/03/21 by Bob.Tellez
#UE4 Fixed shadow variable that I introduced
Change 2914169 on 2016/03/17 by Ben.Zeigler
Disable extra logging that was added to track down Auth issues, they look to be resolved
Change 2912626 on 2016/03/16 by Bob.Tellez
#UE4 Success messages should not be warnings.
Change 2911171 on 2016/03/15 by Bob.Tellez
#UE4 Minor fix to correctly display GetBulkDataSize in the warning in FUntypedBulkData::WaitForAsyncLoading
Change 2911170 on 2016/03/15 by Billy.Bramer
#jira [FORT-6139]
Trap models persist after destroying supporting structure in Outpost
- Root issue was caused by error within network dormancy and queued bunches: If a dormant actor's open bunch ended up queued and a close bunch came in before the bunch was processed, the actor would never be properly destroyed client side as a result of not re-establishing the channel's actor pointer
- Fix issue by changing close bunches to not be fully processed until their appropriate place in the queue. While this could cause superfluous execution (i.e. actor recreated just to be immediately destroyed), it should respect gameplay programming intent in regards to RPCs
Change 2911009 on 2016/03/15 by Bob.Tellez
#UE4 Fixed a bug in UHierarchicalInstancedStaticMeshComponent where RemoveInstances would not rebuild the ClusterTree, causing SortedInstances to contain incorect indices in GetInstancesOverlappingBox. This is the behavior of the singular RemoveInstance so this is what should also be done in the plural RemoveInstances.
#JIRA FORT-21605
Change 2910295 on 2016/03/15 by Bob.Tellez
#UE4 World thumbnails no longer cull primitives. This is because the camera is very far away and if terrain pieces are culled, the level is not visible.
Change 2909324 on 2016/03/14 by Bob.Tellez
#UE4 Since empty headers values cause GenerateHeaderBuffer to emit ERROR_HTTP_HEADER_NOT_FOUND, they are now omitted from the header buffer in WinInet.
Change 2905920 on 2016/03/11 by Lukasz.Furman
fixed crowd simulation getting stuck with invalid velocity (moonwalking husks)
#fortnite
Change 2905612 on 2016/03/11 by Bob.Tellez
#UE4 Made the minimum quadtree size configurable in ProceduralFoliageSpawner. You need to reduce the minimum size a little if you are spawning very many small foliage meshes.
[CL 3027184 by Bob Tellez in Main branch]
2016-06-24 16:58:12 -04:00
else if ( Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_Desktop & & PLATFORM_MAC )
{
AppendCString ( GlslCode , " #version 330 \n " ) ;
ReplaceCString ( GlslCodeOriginal , " #version 150 " , " " ) ;
}
2016-12-08 22:53:00 -05:00
else if ( Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_iOS )
{
AppendCString ( GlslCode , " #version 100 \n " ) ;
ReplaceCString ( GlslCodeOriginal , " #version 100 " , " " ) ;
}
2016-02-19 13:49:13 -05:00
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3145687)
#lockdown Nick.Penwarden
#rb Merge
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3094167 on 2016/08/18 by Jeff.Fisher
UEVR-97 Morpheus HMD tracking needs to wait until HMD is fully tracked.
-Morpheus CALIBRATING/NOT_TRACKED tracking state hmd orientation update disabled and delegates added to present instructions to the user. This behavior is controlled by morpheus ini setting bDisableHMDOrientationUntilHMDHasBeenTracked, but defaulted to true to avoid subtly bad user experiences.
#review-3094106 @chad.taylor
#jira UEVR-97
Change 3104799 on 2016/08/29 by Jeff.Fisher
UEVR-178 Morpheus HMD Black crescents
-Switched reprojection frame time for 60/120 mode from 120hz to 60hz so we much better predict where the hmd will be pointing when the frame we are about to render is actually displayed, and are run off the edge of it less often and less severely. This makes the black crescent artifacts only just visible during very fast head turning. The kWrapModeMirror change, which will be submitted separately, makes the left and right crescents invisible to me.
-Renamed the functions for setting the prediction info in the PS4Tracker.
-Added render frame parameters to sony reprojection functions, these can help with debugging reprojection.
-Added commented out sce call to get the reprojection debug data. Not allowed to submit an executable that calls it, but its nice to at least know where one can put it. May improve this later.
-Wrapped PS4Tracker->Synchronize call in a check that the tracker handle is valid, because I managed to get it called when it wasn't (probably during hmd power off testing, but I don't remember now). It should be fine to not do it if the tracker is not functioning.
#review-3104780 chad.taylor
#jira UEVR-178
Change 3108423 on 2016/08/31 by Jeff.Fisher
Morpheus Config Improvements.
-UEVR-138 Morpheus HMD reprojection wrap mode config setting
-Can now switch between wrap mode Mirror and ClampToBorder. Mirror is the default.
-Made bDisableHMDOrientationUntilHMDHasBeenTracked editable in UE4Editor project settings.
-Using generic project setting for bStartInVR, removed the morpheus specific one.
#jira UEVR-138
#review-3106999 @nick.whiting
Change 3111231 on 2016/09/01 by Jeff.Fisher
Fixed bStartInVR ini setting.
-Initial implementation worked via a generic EnableStereo call, which worked, but happened after the hmd setup dialog, which is not what I wanted.
-Also fixed a tracking frame mismatch assert that hit when I powered the hmd off once, causing it to lose tracking. Its ok that it doesn't update in that circumstance.
#review-3111211 @ryan.vance
Change 3115196 on 2016/09/06 by Keli.Hlodversson
#jira UEVR-128
Map move controller Select button to Invalid, as it is always handled by the system
Change 3116425 on 2016/09/07 by Chad.Taylor
PSVR: stereo layers implementation
Change 3116593 on 2016/09/07 by Jeff.Fisher
UEVR-126 Morpheus HMD connect dialog cancel reactions
-VR only apps can't allow the player to cancel out of the hmd setup dialog, so lets just pop the dialog up again (sony were ok with a licencee doing this) if an ini setting says to do that.
-VR/2D apps might want to switch to 2d if the player cancels out of the hmd setup dialog, so there is an ini setting for that.
-A delegate only implementation is also provided for apps that want to do something else. This leaves the game rendering in VR mode, and fires the delegate.
-Refactored to better separate successful HMD acquisition from stereo rendering. This was necessary to support the delegate only option on startup. If you start in vr mode with your hmd off and cancel the dialog stereo rendering now starts with default values for the hmd hardware stats (as read from my pvt) instead of crashing trying to use uninitialized data. When an hmd is connected its values will be read.
-Refactored to ensure reprojection starts immediately when we call StartReprojection.
#jira UEVR-126
#review-3116221
Change 3116754 on 2016/09/07 by Keli.Hlodversson
bPixelDensityAdaptive is a bool and not a float property
Change 3117692 on 2016/09/08 by Jeff.Fisher
UEVR-135 Morpheus HMD recent feature error reporting
UEVR-173 2DVR flexibility (UTexture)
-Error log for sceHmdReprojectionSetOutputMinColor failure.
-Made the parameter for 2dVR a UTexture* instead of a UTexture2D*, so it can be a rendertarget, etc.
-Added error logs for missing texture, invalid texture, wrong texture format to 2DVR.
#jira UEVR-135
#jira UEVR-173
#review-3116955 @keli.hloedversson
Change 3117990 on 2016/09/08 by Jeff.Fisher
UEVR-127 Morpheus HMD removal reaction
-Added VRHeadsetPutOnHead and VRHeadsetRemovedFromHead delegates, and implemented them for Morpheus.
#jira UEVR-127
#review-3117968 @keli.hlodversson
Change 3120198 on 2016/09/09 by Jeff.Fisher
MorpheusReprojector frame complete wait error log
-Now log a warning if the sceKernalWaitEqueue returns an error. It not a problem if this happens rarely, but something is very broken if it starts happening continuously.
Change 3121754 on 2016/09/12 by Keli.Hlodversson
#jira UE-21878 - Also emit VR initialization analytics events in the editor.
Change 3122311 on 2016/09/12 by Nick.Whiting
Merging fix for Adreno devices rendering black from 4.13.1
Change 3123057 on 2016/09/13 by Keli.Hlodversson
#jira UE-30097 Use the current value of r.ScreenPercentage on Occulus Rift if it's explicitly set.
* If the SetBy part of the flags for the console var is SetBy_Constructor, then ignore the value.
* If it's SetBy_Scalability, then ignore it if it equals 100
* Else, call SetScreenPercentage using the current value
The obsolete HMD SCREENPERCENTAGE console command is still available and will override the setting until r.ScreenPercentage is modified the next time.
Change 3123200 on 2016/09/13 by Chad.Taylor
PS4 Stereo Layer double buffering. Since the overlays are reprojected at 120hz but rendered at 60hz we need to render to a separate buffer than the one being used by reprojection.
Change 3125845 on 2016/09/14 by Keli.Hlodversson
#jira UE-33996 Add hmd=<name> command line option to allow overriding which HMD module is used.
Renamed GetModulePriorityKeyName to simply GetModuleKeyName, as this name is now also used to match against the command line options.
Change 3127293 on 2016/09/15 by Jeff.Fisher
UEVR-225 Morpheus HMD top and bottom black crescents
-The hidden and visible area meshes for morpheus were too restrictive. Nudged them out a bit, no black crescents at the top and bottom of the screen. We are rendering a few more pixels now though.
#review-3127145 @ryan.vance
#jira UEVR-225
Change 3130635 on 2016/09/19 by Jeff.Fisher
UEVR-226 Morpheus HMD mirrored fill wrong on outer edges
-The setting was never being used, leaving the wrap mode at 0 aka kWrapModeWrap.
-Refactored how the setting is applied so it works, and is less convoluted.
#jira UEVR-226
#review-3129403
Change 3131615 on 2016/09/19 by Keli.Hlodversson
#jira UE-29341. Update Chaperone bounds when SteamVR tells us they have changed
Change 3136527 on 2016/09/22 by Keli.Hlodversson
Don't depend on the current state of the VR subsystem when exiting PIE mode to decide whether the main window should be restored. Instead always restore it if it was minimized at the start.
Change 3136652 on 2016/09/22 by Keli.Hlodversson
Allow shutting down Steam VR subsystem without shutting down the Steam VR plugin completely in response to quitting from the SteamVR overlay. Enabling stereo rendering again will reinitialize SteamVR. This is useful when using PIE in VR mode as it allows entereing it again without restarting the editor. Also fixes crashes by first disabinge stereo rendering a short while before shutting down the VR subsystem.
#jira UE-35940
Change 3138901 on 2016/09/23 by Ryan.Vance
Merging 3138521 using OdinToDevVR to bring over temporary forward lighting ISR changes for 4.14
Change 3141614 on 2016/09/27 by Keli.Hlodversson
Implement GetNumOfTrackingSensors and GetTrackingSensorProperties on SteamVR.
#jira UE-32994
Change 3141948 on 2016/09/27 by Jeff.Fisher
UEVR-242 Is AddControllerYawInput not allowed when morpheus is enabled?
-Indeed it did not work. Looks like morpheus would not accumulate the yaw, so it would be reset every frame. I made the implementation of ApplyHmdRotation very similar to the one used for occulus (also similar to other platforms) to fix this.
#jira UEVR-242
#review-3141933 keli.hlodversson
Change 3143484 on 2016/09/28 by Nick.Whiting
Integrating Oculus 1.8 SDK support, includes support for cylinder and cubemap stereo layers
Change 3143517 on 2016/09/28 by Chad.Taylor
Merging PS4Tracker fixes from Release-4.13 into Dev-VR
Change 3143805 on 2016/09/28 by Keli.Hlodversson
#jira UE-36478 Workaround to make world to meters scale apply correctly to Occulus controllers while running in PIE
Change 3143943 on 2016/09/28 by Nick.Whiting
Merging latest drop from OSVR
Change 3144221 on 2016/09/28 by Keli.Hlodversson
Implement GetTrackingSensorProperties on PS4
#jira UE-32994
Change 3144352 on 2016/09/28 by Ryan.Vance
Initial implementation of mobile multi-view.
This is non-functioning and requires a lot more work, but enough of the framework exists to make the 4.14 branch for an experimental release.
Change 3144585 on 2016/09/29 by Jeff.Fisher
UEVR-14 PSVR Support for 90Hz to 90Hz, and 120Hz to 120Hz
-Enum setting added for the three frame sequences.
-90Hz mode is trying to run camera updates at 90hz, but they can only run at 60 so every third one fails. This works, but its dubious.
-Feature marked as experimental for now because of that 90hz tracking issue, and the lack of testing.
-Defaulting to 60/120.
#jira UEVR-14
#review-3143486 chad.taylor nick.whiting
Change 3145263 on 2016/09/29 by Nick.Whiting
Fix for constructor initialization order in StereoLayerComponent, which threw a warning on Clang
Change 3145536 on 2016/09/29 by Nick.Whiting
Fixes for project files to prevent mystery pop up from CAPI
Change 3145663 on 2016/09/29 by Keli.Hlodversson
PSVR: Make sure the camera orientation returned from GetTrackingSensorProperties points in the right direction.
Change 3145670 on 2016/09/29 by Keli.Hlodversson
For some reason the orientation of the Oculus tracking sensor is reported as pointing backwards. This flips it around to face front
Change 3145687 on 2016/09/29 by Chad.Taylor
VR splash screen support
[CL 3146243 by Nick Whiting in Main branch]
2016-09-30 01:16:13 -04:00
if ( bEmitMobileMultiView )
{
MoveHashLines ( GlslCode , GlslCodeOriginal ) ;
if ( GSupportsMobileMultiView )
{
AppendCString ( GlslCode , " \n \n " ) ;
AppendCString ( GlslCode , " #extension GL_OVR_multiview2 : enable \n " ) ;
AppendCString ( GlslCode , " \n \n " ) ;
}
else
{
// Strip out multi-view for devices that don't support it.
Copying //UE4/Release-Staging-4.14 to //UE4/Dev-Main (Source: //UE4/Release-4.14 @ 3182951)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3182951 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix "play together" invitations handling in PS4 OSS.
- Wrong condition in GetUserWebApiContext. Web API contexts can be created for local users (i.e. FUniqueNetIdPS4 instances with a valid SceUserServiceUserId).
#jira UE-38017
Change 3182892 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix incorrect identity API implementation in PS4 OSS.
- System events directly drive the login state of a user. This also removes the blocking call to sceNpGetState().
- GetAuthToken is only called if the engine calls IOnlineIdentity::Login().
#jira UE-38017
Change 3182767 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix PS4 session invitations.
- Was calling old Web API with SceNpOnlineId where SceNpAccountId is needed.
- Replaced with NpToolkit2's session invitation API.
#jira UE-38020
Change 3182766 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [!] Fix assert in FUniqueNetIdPS4::FindOrCreate. We were assuming an online-only ID could never become a local ID. This isn't the case in the following scenario:
- Two users join a session on two separate PS4s.
- One user signs into the other user's PS4 with the same account, with a second controller. PSN logs him out of the first PS4.
- That user's Net ID has now migrated from being online-only, to local-with-online. This is a case that was not handled.
#jira UE-38017 UE-38020
Change 3182765 on 2016/11/02 by Luke.Thatcher
[RELEASE] [PS4] [~] Additional logging for PS4 OSS "Play Together".
#jira UE-38017 UE-38020
Change 3182633 on 2016/11/01 by Jack.Porter
Fix crash sculpting a landscape with grass that uses the landscape's lightmap, when lighting has not been built
#jira UE-38042
Change 3182332 on 2016/11/01 by Mieszko.Zielinski
Added a sanity check to UNavigationSystem::AddElementToNavOctree to guard agains DirtyElement.NavInterface being null #UE4
#jira UE-37588
Change 3182321 on 2016/11/01 by Dmitry.Rekman
Updated READMEs for 4.14 (UE-38059).
#jira UE-38059
Change 3182231 on 2016/11/01 by Mitchell.Wilson
Adding Is Valid node in Retargeting_WorldInteractionBP to resolve warning.
#jira UE-38079
Change 3182164 on 2016/11/01 by Matt.Kuhlenschmidt
Fix alll collision being disabled if you dont auto-generate a simple hull when importing an FBX
#jira UE-38091
Change 3182017 on 2016/11/01 by Chris.Babcock
Disable glVertexAttribIPointer on PowerVR Rogue
#jira UE-38074
#ue4
#android
Change 3181942 on 2016/11/01 by Mitchell.Wilson
Resolving multiple warnings in CIS for Elemental Demo.
#jira UE-38075
Change 3181941 on 2016/11/01 by Nick.Shin
PhysX Bulid Automation script update
#jira UE-37329 'Compile UE4Game HTML5' - 300 Warnings
Change 3181939 on 2016/11/01 by Ryan.Vance
#jira UE-38072
We need to add a hook that can be called after native present has finished for SteamVR.
PostPresentHandoff should be called when using the interleaved compositor immediately after we've submitted our eye buffers and called present for the mirror window. This unblocks the compositor process so it can do it's re-projection work. Otherwise it will block until we call WaitGetPoses which is a ways into the next frame.
Change 3181849 on 2016/11/01 by Nick.Shin
jukka's (Mozilla) fixes to SSE2 and GL issues for HTML5
jukka's (Mozilla) python scripts to build ThirdParty HTML5 libs
the python scripts will need tweaking - they were moved from their original locations from:
https://github.com/Mozilla-Games/UnrealEngine/commit/fd48bc0e4a5f0278a1c036d2b81036ab1270ad68
the CMakeLists.txt (and one configure.ac) files are defiinitely used from the (bash) shell build script (to build thirdparty libs for HTML5)...
update existing (bash shell script and UE4 c#) build files to use the new "incoming" emsdk
#jira UE-37329 -'Compile UE4Game HTML5' - 300 Warnings
Change 3181848 on 2016/11/01 by Nick.Shin
update compiled ThirdParty HTML5 libs using new emscripten tool chain (CL:#3180924)
#jira UE-37329 - //UE4/Main: Step 'Compile UE4Game HTML5' - 300 Warnings
Change 3181838 on 2016/11/01 by Nick.Shin
new emscripten tool chain configured by jukka from Mozilla
see Engine/Extras/ThirdPartyNotUE/emsdk/emscripten/incoming/EPIC_VERSION for details on where did this version come from
#jira UE-37329 - //UE4/Main: Step 'Compile UE4Game HTML5' - 300 Warnings
Change 3181611 on 2016/11/01 by Allan.Bentham
Recreate vulkan swapchain after a pause/resume on android.
#jira UE-36454
Change 3181451 on 2016/11/01 by Chris.Wood
CrashReportClient no longer attempts to restart Launcher-run Editors via IPC with the Launcher. They are now restarted directly.
[UE-37794] - Send and Restart from Crash Reporter Opens Project Browser
Launcher can't accept command line args when restarting an application so it can't restart the editor with the right project.
Also fixes broken SlateReflector in CRC (switched off in checked in version)
#jira UE-37794
Change 3181117 on 2016/11/01 by Dmitriy.Dyomin
Fixed: Text Actors not Rendering on Mobile
PowerVR based devices were rendring opaque objects twice
#jira UE-37949
Change 3181102 on 2016/11/01 by Jack.Porter
Fix for editor crash during Landscape sculpting on pressing Ctrl+z (Subdivision enabled in material)
#jira UE-36050
Change 3180851 on 2016/10/31 by Daniel.Wright
Ray Traced Distance Field shadows must be projected last, since they overlap the depth range as Far CSM. Fixes Kite demo medium-distance shadowing.
#jira UE-37793
Change 3180844 on 2016/10/31 by Michael.Trepka
Disabled high-DPI in Mac CrashReportClient
#jira UE-37697
Change 3180803 on 2016/10/31 by Michael.Trepka
Setup Mac Metal layer on the main thread to solve issues with empty game window when showing a separate log window.
#jira UE-37998
Change 3180764 on 2016/10/31 by zachary.wilson
Checkking in content for Lighting scenarios test, currently incomplete but needed for bug repro
#jira UE-29618
Change 3180666 on 2016/10/31 by Dmitry.Rekman
Fix Linux client & server hang when decoding voice chat (UE-36108).
- break out of voice channel while loop if unable to serialize the voice packet data.
- fixed by JoshM
#jira UE-36108
Change 3180428 on 2016/10/31 by Mitchell.Wilson
Rebuilt lighting in all Content Examples levels and saved to resolve warnings.
#jira UE-37880
Change 3180399 on 2016/10/31 by Dmitry.Rekman
Linux: revert to old commandline switch -binnedmalloc (UE-38001).
#jira UE-38001
Change 3180298 on 2016/10/31 by Steve.Robb
Extra information about which class has failed to have its CppStructOps initialized.
#jira UE-37921
Change 3180289 on 2016/10/31 by John.Pollard
Fix crash in FCurlHttpRequest::DebugCallback
+ Specify the string length to FString's constructor as the result from StringCast is not null terminated if the string's length is specified (instead of assuming null termination).
#jira UE-36658
Change 3180200 on 2016/10/31 by Benjamin.Hyder
Updating QA-Materials to include BuiltData
#jira UE-29618
Change 3180173 on 2016/10/31 by Nick.Whiting
Fixing up static analysis warning about array size in GoogleVRHMD code
#jira UE-38007
Change 3180123 on 2016/10/31 by ryan.brucks
#jira UE-35977
hooked up missing transform node inside of newly added function so that it works with variable rotations.
Change 3180108 on 2016/10/31 by Benjamin.Hyder
Updating QA-Effects map to include BuiltData
#jira UE-29618
Change 3180104 on 2016/10/31 by Marc.Audy
Don't recreate the render state if the component got unregistered in the interim.
#jira UE-37968
Change 3180084 on 2016/10/31 by Allan.Bentham
Use glVertexAttribIPointer for ES3.
Enable SupportsTextureMaxLevel for ES3.
ensure GL_HALF_FLOAT is used for vertex half float format on ES3 (instead of GL_HALF_FLOAT_OES)
Fix assert when previewing ES3.1 with PC OpenGL.
#jira UE-37472
Change 3180082 on 2016/10/31 by Luke.Thatcher
[RELEASE] [PS4] [-] Back out PS4 OSS warnings filter in UBT output (original CL 3150360).
- We weren't relying on this anyway, since the build machines are filtering based on a perl script (See CL 3151027)
#jira UEPLAT-1424
Change 3180044 on 2016/10/31 by Michael.Trepka
Don't create additional autorelease pool for Metal context on the game thread.
#jira UE-37894
Change 3180023 on 2016/10/31 by Luke.Thatcher
[RELEASE] [PS4] [^] Merge (as edit) PlayStation 4 Online Subsystem refactor for Sony SDK 4.008.061 (CL 3178249) from //UE4/Dev-Platform to OrionGame in //UE4/Release-4.14
Original CL description:
[~] Upgrade PlayStation 4 Online Subsystem to be compliant with Sony's new APIs in SDK 4.008.061.
- Replaced deprecated APIs with new ones.
- Replaced NpToolkit with NpToolkit2.
- Refactor of FUniqueNetIdPS4 and related code. FUniqueNetIdPS4 is now immutable and immovable.
- Added online ID cache system, which calls out to Sony's new ID Mapper Web API.
Contains a breaking change in FUniqueNetId
- FUniqueNetId::ToString() now returns the SceNpAccountId string of a user, rather than the SceNpOnlineId string.
- Custom backends which rely on this string to identify users will need to support SceNpAccountIds, and map them to existing accounts.
#jira UEPLAT-1424
Change 3179973 on 2016/10/31 by Sam.Deiter
#Jira UEDOC - 3957
#UE4 Docs: Fixing typos in the landscape tutorials for bug UEDOC - 3957
#Code_Review lauren.ridge, jeff.wilson, ian.shadden, wes.bunn, chase.mcallister, robert.gervais
Change 3179930 on 2016/10/31 by Luke.Thatcher
[RELEASE] [PS4] [^] Merge (as edit) PlayStation 4 Online Subsystem refactor for Sony SDK 4.008.061 (CL 3178249) from //UE4/Dev-Platform to //UE4/Release-4.14
Original CL description:
[~] Upgrade PlayStation 4 Online Subsystem to be compliant with Sony's new APIs in SDK 4.008.061.
- Replaced deprecated APIs with new ones.
- Replaced NpToolkit with NpToolkit2.
- Refactor of FUniqueNetIdPS4 and related code. FUniqueNetIdPS4 is now immutable and immovable.
- Added online ID cache system, which calls out to Sony's new ID Mapper Web API.
Contains a breaking change in FUniqueNetId
- FUniqueNetId::ToString() now returns the SceNpAccountId string of a user, rather than the SceNpOnlineId string.
- Custom backends which rely on this string to identify users will need to support SceNpAccountIds, and map them to existing accounts.
#jira UEPLAT-1424
Change 3179539 on 2016/10/31 by Jack.Porter
Fix crash when Toggling Landscape Mode with Hidden Sub-Level containing a Landscape
#jira UE-37954
Change 3179309 on 2016/10/29 by Benjamin.Hyder
Re-Saving Foliage asset in Tm-DistanceFields
#jira UE-29618
Change 3179308 on 2016/10/29 by Benjamin.Hyder
updating AutoLOD settings for foliage example in TM-Shadermodels
#jira UE-29618
Change 3179135 on 2016/10/28 by Chris.Babcock
Only use alternative event flow for Daydream packaged applications
#jira UE-37847
#ue4
#android
Change 3178995 on 2016/10/28 by JohnHenry.Carawon
Adding test content for the World Origin Rebasing feature
#jira UE-29618
Change 3178994 on 2016/10/28 by Chris.Babcock
Disable ARM64 Google Play Games - need new library to fix crash
#jira UE-37972
#ue4
#android
Change 3178955 on 2016/10/28 by Marc.Audy
Don't worry about clearing from world's end of frame update frame if being GC'd
#jira UE-37928
Change 3178921 on 2016/10/28 by Daniel.Wright
[Copy] Scene captures and planar reflections force a scene color alpha channel to be used when they are capturing (does not affect the scene color format for the main views). Fixes planar reflections with r.SceneColorFormat=3.
Setup scissor for scene depth resolves, helps with passes using screenpercentage to reduce resolution. Planar reflection depth resolves .8ms -> .2ms on 970
#jira UE-37970
Change 3178919 on 2016/10/28 by Daniel.Wright
[Copy] Fixed planar reflections in forward shading. The change to disable checkerboard SSS caused scene color alpha to be non-zero for opaque / masked pixels in forward, but there's no SSS pass run later to correct it, since this is the forward rendering path.
#jira UE-37970
Change 3178905 on 2016/10/28 by Max.Chen
Sequencer: Fix fade track instance compile
#jira UE-37939
Change 3178808 on 2016/10/28 by Dmitry.Rekman
Linux: fix crash on exit (UE-37536).
- Base virtual function (PostRun()) was called due to thread being stopped at the moment when the subclass destructor has already run.
#jira UE-37536
(Edigrating 3175651 from Dev-Platform to Release-4.14)
Change 3178707 on 2016/10/28 by Marc.Audy
Fix inverted null check that caused load game from slot to fail if using a BP generated class
#jira UE-37774
Change 3178664 on 2016/10/28 by Alexis.Matte
Fix the fbx automation tests
#jira UE-37960
Change 3178617 on 2016/10/28 by Bart.Hawthorne
Fix issue where changing the world origin in a single player game would try to access the FNetworkPredictionData_Client_Character on character movement components
#jira UE-37692
#tests ran QA game and tested that assert no longer fired in debug
Change 3178615 on 2016/10/28 by Max.Chen
Matinee to Level Sequence: Added interface to extend the matinee to level sequence converter
Copy from Dev-Sequencer
#jira UE-37328
#2864
Change 3178553 on 2016/10/28 by Michael.Trepka
Don't wait for the main thread in FMacWindow::Show()
#jira UE-37915
Change 3178526 on 2016/10/28 by Alexis.Matte
Clean unused material when importing a skeletal mesh. Its possible to have a material reference in a fbx node and not have any face referencing this material.
#jira UE-37923
Change 3178451 on 2016/10/28 by Mitchell.Wilson
Limit the max angle the cannon tower can be rotated when manually aiming.
When max rotation is reached, debug line turns red to be consistent with the arrow tower.
#jira UE-36512
Change 3178420 on 2016/10/28 by Lina.Halper
Fix build issue
#jira: UE-37911
Change 3178390 on 2016/10/28 by mason.seay
Enabling follow on certain notifies to help catch issues
#jira UE-29618
Change 3178325 on 2016/10/28 by Zak.Middleton
#ue4 - (4.14) - Fix crash when player is destroyed and server PlayerController checks to see if it needs to force a network update. Also fix crash when calling ACharacter::SetReplicateMovement when not on the server.
Mirror CL 3178247 and CL 3178256 in Dev-Framework.
#jira UE-37902
Change 3178312 on 2016/10/28 by Max.Chen
Sequencer: Fade only oin the current player context, not on all worlds.
#jira UE-37939
Change 3178267 on 2016/10/28 by Lina.Halper
Fix issue with anim editor sound play notify doesn't work with follow option
#jira: UE-37946
Change 3178146 on 2016/10/28 by Lina.Halper
#fix crash with thumbnail update when there is no animation, and so on.
#code review: Benn.Gallagher
#jira: UE-37911
Change 3178145 on 2016/10/28 by Matthew.Griffin
Fixed Clean process during a Hot Reload
Prevent engine build products, intermediates and exe/dlls from being deleted during Hot Reload and make sure Hot Reload state is preserved
#jira UE-37616
Change 3178143 on 2016/10/28 by Mitchell.Wilson
Updating BP_Spinning_Logo to stop spinning when disabled instead of finishing the rotation.
#jira UE-36269
Change 3178110 on 2016/10/28 by Mitchell.Wilson
Rebuilt lighting and saved levels.
#jira UE-36913
Change 3178070 on 2016/10/28 by Mitchell.Wilson
Adjusted trigger ragdoll time in shooter character so the character does not appear to float while in death animation.
#jira UE-37124
Change 3178034 on 2016/10/28 by Jon.Nabozny
Add missing Super::Tick call to ATP_TopDownCharacter::Tick.
#jira UE-37914
Change 3178021 on 2016/10/28 by Max.Chen
Sequence Recorder: Disable auto possess player for recorded pawns. This fixes a bug where if you record a third person template character, when you open the sequence, the recorded character will possess the viewport.
Copy from Dev-Sequencer
#jira UE-35342
Change 3177992 on 2016/10/28 by Matt.Kuhlenschmidt
Fix outlined text accumulating error due to measuring the outlines for each text run rather than the entire string
#jira UE-37935
Change 3177981 on 2016/10/28 by Nick.Darnell
UMG - Fixing how the virtual window calculates desired size. It was including scale again, which is fine for SWindow, but isn't what we want on the SVirtualWindow, should probably consider making a new SWindowBase class they can both share in the future.
#jira UE-36861
Change 3177888 on 2016/10/28 by Matthew.Griffin
Back out revision 4 from //UE4/Release-4.14/Engine/Source/Runtime/Engine/Private/InheritableComponentHandler.cpp
Change 3177881 on 2016/10/28 by Matthew.Griffin
Added guards to WITH_EDITOR only static initialisation
Change 3177871 on 2016/10/28 by Matt.Kuhlenschmidt
Fix crash import fbx scenes if objects contain procedural textures (not supported)
#jira UE-37917
Change 3177856 on 2016/10/28 by Matthew.Griffin
Adding THIRD_PARTY_INCLUDES macros around Google VR includes to fix static analysis warnings
Change 3177815 on 2016/10/28 by Graeme.Thornton
Non-editor build fix
#jira UE-37929
Change 3177812 on 2016/10/28 by Graeme.Thornton
Fix for COTF crash with EDL. Manually copied from CL 3174743 in Dev-Core
#jira UE-37810
Change 3177737 on 2016/10/28 by Guillaume.Abadie
Brings over 3141695 and 3173310 from //Odin/Main: Fixes particle collision in the forward renderer.
#jira UE-37927
Change 3177703 on 2016/10/28 by Phillip.Kavan
[UE-37852] Ensure that we create a unique template object in a child class's ICH when overriding an inherited SCS default scene root node.
change summary:
- added UInheritableComponentHandler::SCSDefaultSceneRootOverrideNamePrefix
- modified UInheritableComponentHandler::CreateOverridenComponentTemplate() to special-case SCS default scene root node overrides when determining the new template name
- modified UInheritableComponentHandler::PostLoad() to special-case SCS default scene root node overrides during template name fixup
- modified SSCSEditor::RemoveComponentNode() to skip renaming the component template away from the variable name for the default scene root node, since we don't actually recreate it when it gets re-added
#jira UE-37852
Change 3177600 on 2016/10/27 by Chris.Babcock
Pass through the intent action from splash screen
#jira UE-37925
#ue4
#android
Change 3177436 on 2016/10/27 by Mike.Beach
Guarding against a top crash that could occur when pasting a select node (unknown how) - now using an unchecked accessor to get a specific pin, and guarding again a null (instead of asserting).
#jira UE-37910
Change 3177365 on 2016/10/27 by Daniel.Wright
Fixed access of FPrecomputedLightVolumeData after it has been deleted (causes crash on exit with USE_MALLOC_STOMP enabled)
#jira UE-37903
Change 3177236 on 2016/10/27 by Mitchell.Wilson
Updated UVs on M_FloorTiles1 to resolve precision issues with the material's normal on mobile devices.
Fixed reflection captures in the level and rebuilt lighting.
#jira UE-36624
Change 3177235 on 2016/10/27 by mason.seay
Vehicle Assets
#jira UE-29618
Change 3177036 on 2016/10/27 by Mitchell.Wilson
Inverted throttle control for controller Right Joystick Up, Down, Y-Axis to be consistent with the info from our template wiki
#jira UE-37881
Change 3176996 on 2016/10/27 by mason.seay
Missed node link
#jira UE-29618
Change 3176993 on 2016/10/27 by mason.seay
Test AnimBP for crash
#jira UE-29618
Change 3176992 on 2016/10/27 by Mitchell.Wilson
Adding [EditoronlyBP] to DefaultEditor.ini of projects that were missing it.
#jira UE-37846
Change 3176946 on 2016/10/27 by Alexis.Matte
We recompile the material only if there is a material expression node that ask for a shader recompile when the texture is change with no specified property.
#jira UE-37705
Change 3176939 on 2016/10/27 by Alexis.Matte
Check the pointer before using it
#jira UE-37853
Change 3176927 on 2016/10/27 by mason.seay
Rebuilt Lighting
#jira UE-29618
Change 3176883 on 2016/10/27 by Steve.Robb
Fix for crash when an array property changes while instancing subobjects.
Fix for StrStr running off the end of a non-null-terminated string and a tidy up with TUniquePtr.
Fix for accessing a deleted StaticClass() in FInputBindingEditorModule::ShutdownModule.
#fyi matt.kuhlenschmidt, alex.fennell
#jira UE-37752
Change 3176811 on 2016/10/27 by Chris.Bunner
Rework of previous commit to avoid potential confusion moving forward.
#jira UE-37424
Change 3176783 on 2016/10/27 by Chris.Bunner
Default scalability settings to Epic, not Cinematic.
Duplicated default render resolution scale fix (CL 3170020).
#jira UE-37424
Change 3176692 on 2016/10/27 by Mike.Beach
Fixing up a mistake where we weren't reading all [EditoronlyBP] settings (which are now deprecated). Was causing certain settings to default to off, and caused an inaccurate deprecation warning.
#jira UE-37848
Change 3176635 on 2016/10/27 by mason.seay
Setting up skeleton for retargeting testing
#jira UE-29618
Change 3176586 on 2016/10/27 by Marcus.Wassmer
Fix crash on D3D12 editor when selecting objects
#jira UE-37861
Change 3176479 on 2016/10/27 by Robert.Manuszewski
Fix for a rare crash when loading into Orion match. Made sure the Skeleton asset is loaded before PostLoad is called on it.
#jira UE-37297
#jira UE-37711
Change 3176107 on 2016/10/27 by Phillip.Kavan
[UE-37690] AddComponent node template names now use a counter to avoid a potential component data cache mismatch with an existing instance of an old AddComponent node template.
change summary:
- added UBlueprint::ComponentTemplateNameIndex as a way to to map component class names to an incremental counter (saved).
- UK2Node_AddComponent::MakeNewComponentTemplateName() is now public, non-static, and uses an internal index map to generate unique component template names.
#jira UE-37690
Change 3176105 on 2016/10/27 by Phillip.Kavan
[UE-37686] Fix naming for archetype objects associated with new AddComponent nodes.
change summary:
- switched UK2Node_AddComponent::MakeNewComponentTemplateName() to be a public API.
- modified UBlueprintComponentNodeSpawner::Invoke() to call UK2Node_AddComponent::MakeNewComponentTemplateName() in place of MakeUniqueObjectName().
- modified UBlueprintGeneratedClass::FindArchetype() to better handle old AddComponent node template names. These were based on the UClass display name, and thus it was possible for the non-index form of that FName to collide with SCS variable names after the initial switch to use the non-indexed (base) FName for archetype matching in all cases. As a result I've reverted back to using the given ArchetypeName value for the SCS variable case.
#jira UE-37686
Change 3176009 on 2016/10/26 by Dmitriy.Dyomin
Fixed: Editor crash on changing sub-level visbility under certain conditions
#jira UE-34740
Change 3175807 on 2016/10/26 by Daniel.Wright
Fixed the editor thinking a lighting build is still active after you discard the results from one
#jira UE-37834
Change 3175777 on 2016/10/26 by Jon.Nabozny
#jira UT-6263
Fix crash when running ServerTravel on a client
Dupe of CL #3175731 on UT, checked in on behalf of ben.zeigler
Change 3175695 on 2016/10/26 by Ryan.Gerleve
Don't clear level collections in UWorld::CleanupWorld unless bCleanupResources is true.
#jira UE-37336
Change 3175628 on 2016/10/26 by Chad.Garyet
Added -Build vstream from 4-14 to allow checkins from physx
altered build script and json to reflect new changes
#JIRA UE-37085
Change 3175612 on 2016/10/26 by Martin.Wilson
Fix crash when running an in-editor cook on the fly server with unsaved virtual bone changes
#jira UE-37785
Change 3175552 on 2016/10/26 by Brian.Karis
Twinblast bust changes
#jira UE-0
Change 3175543 on 2016/10/26 by Marc.Audy
Allow audio thread on PS4 to use 7th core as opposed to being pinned to it
#jira OR-30447
Change 3175538 on 2016/10/26 by Matt.Kuhlenschmidt
Fixed a crash when clicking Apply when using the Brush Clip tool
#jira UE-37838
Change 3175502 on 2016/10/26 by Mitchell.Wilson
Enabled modulated shadows on lights in rolling template levels.
#jira UE-37047
Change 3175485 on 2016/10/26 by mason.seay
Test Map for virtual bones
#jira UE-29618
Change 3175469 on 2016/10/26 by mason.seay
Test assets for Virtual Bones testing
#jira UE-29618
Change 3175428 on 2016/10/26 by Marc.Audy
Possibly fix crash in Autosave due to dereferencing a world pointer which is freed memory
#jira UE-37590
Change 3175414 on 2016/10/26 by Michael.Trepka
Fixed mouse position calculations for secondary monitors on Mac
#jira UE-37822
Change 3175382 on 2016/10/26 by Yannick.Lange
VR Editor: - Fix: Landscape UI Elements are not visible #jira UE-36843
- Fix: First-time switch to Landscape tab in VREditor causes UI Errors #jira UE-37410
- Fix: Enabling Foilage Mode in VR Editor breaks the pointer #jira UE-37214
- Fix: Landscape sculpting when attempting to move menu panels in VREditor #jira UE-37581
#jira UE-36843 #jira UE-37410 #jira UE-37214 #jira UE-37581
Change 3175349 on 2016/10/26 by Chad.Garyet
Changing physx build agents to compile workspaces instead of full ones
#JIRA UE-37085
Change 3175267 on 2016/10/26 by Martin.Wilson
Fix retarget crash
#jira UE-37781
Change 3175205 on 2016/10/26 by Rolando.Caloca
UE4.14 - Remove erroneus assert
#jira UE-37584
Change 3175188 on 2016/10/26 by Chris.Babcock
Fix out of spec GLSL operations (contributed by JeffRous)
#jira UE-37800
#PR #2886
#ue4
#android
Change 3175156 on 2016/10/26 by Mitchell.Wilson
Adding missing iOS app icons to SunTemple project
#jira UE-36991
Change 3175095 on 2016/10/26 by Daniel.Wright
Fixed stationary skylight reflections using an inverted mask on materials without high quality reflections with Forward Shading
#jira UE-37783
Change 3175075 on 2016/10/26 by Daniel.Wright
[Copy] Support directional light dynamic shadows in any channel with forward shading, which can happen with multiple shadow casting stationary directional lights (even though only the lighting of one will appear)
#jira UE-36497
Change 3175050 on 2016/10/26 by Jamie.Dale
FTextRenderComponentMIDCache now marks MIDs as stale when the font parameters available in the parent material changes
#jira UE-37819
Change 3175039 on 2016/10/26 by Daniel.Wright
Fixed Duplication mode
#jira UE-37231
Change 3174996 on 2016/10/26 by Mitchell.Wilson
Removing [EditoronlyBP] changes made to DefaultEditor.ini. EDL is now disabled by default in ShooterGame.
#jira UE-37648
Change 3174987 on 2016/10/26 by Jon.Nabozny
Fix crash when moving InstancedStaticMeshComponent in editor when it had no mesh set, but had instances.
#jira UE-37594
Change 3174803 on 2016/10/26 by Ori.Cohen
Fix world origin shifting causing a crash inside physx.
#JIRA UE-37745
Change 3174776 on 2016/10/26 by Allan.Bentham
Work around broken depth reads on Galaxy S4.
#jira UE-35481
Change 3174723 on 2016/10/26 by Robert.Manuszewski
Changing the criteria for UBL to ignore the event driven loader flag to IsEngineInstalled() just like at runtime.
#jira UE-37617
Change 3174650 on 2016/10/26 by Matthew.Griffin
Ensured that Online Subsystem Oculus plugin is precompiled successfully for Android
Change 3174644 on 2016/10/26 by Matthew.Griffin
Fixing GoogleVR compile issues
Change 3174352 on 2016/10/25 by Daniel.Wright
Rename map build data along with the world - fixes lighting lost on map rename / save as.
Duplicate map build data along with the world - fixes lighting lost on map duplicate in the content browser, or save as when the source already exists.
Save map build data packages in SaveWorld - fixes lighting being lost on save as.
#jira UE-37231
Change 3174335 on 2016/10/25 by Chris.Babcock
Corrected Proguard issue with Codeworks for Android 1R5 installers
#jira UE-37680
#ue4
#android
Change 3174318 on 2016/10/25 by Marcus.Wassmer
Duplicate 3174187
#jira UE-37020
Change 3174263 on 2016/10/25 by patrickr.donovan
Test content updates and additions. Lighting Channel map added to TM-VRLoader.
#jira UE-29618
Change 3174120 on 2016/10/25 by Daniel.Wright
UObject::PostDuplicate with DuplicateMode
* Allows differentiating between being duplicated as part of a world duplication vs duplication within a level
* This is needed when generating a guid that needs to be unique within a level, but constant across instances of that level, like a light component
#jira UE-37231
Change 3174113 on 2016/10/25 by Daniel.Wright
Fixed log spam
#jira UE-37522
Change 3174010 on 2016/10/25 by Jamie.Dale
Fixed several crashes in the Session Frontend when viewing profiles
- SFiltersAndPresets wasn't being cleared when the profile data was changed back to a live instance.
- SFiltersAndPresets could crash if it was updated when no profile was selected.
- SDataGraph could cause a crash if you clicked on it when there was no data (passed a range of -1, 0).
- A session update message would clobber any loaded profile data, resetting to the current instance.
#jira UE-37597
Change 3173982 on 2016/10/25 by mason.seay
Deleting unneeded asset
#jira UE-29618
Change 3173912 on 2016/10/25 by Ori.Cohen
Fix divide by 0 crash when torque curve is 0
#JIRA UE-37737
Change 3173866 on 2016/10/25 by Ben.Marsh
Remove setting forcing UnrealCEFSubProcess to compile using Visual Studio 2013.
#jira UE-37678
Change 3173824 on 2016/10/25 by Ben.Marsh
Fix trying to recompile UBT in Rocket builds when cleaning a build target.
#jira UE-37616
Change 3173812 on 2016/10/25 by Nick.Darnell
XBoxOne - The Vertex and Index buffers are now allocated with the right nextwriteoffset to prevent stomping old data on future writes.
#jira UE-37757
Change 3173808 on 2016/10/25 by Ben.Marsh
Fix batch files detecting MSBuild install locations for Visual Studio "15" preview 5.
#jira UE-37627
Change 3173711 on 2016/10/25 by Ori.Cohen
Fix linux compiler issues for physx
#JIRA UE-37085, UE-37114, UE-37116
Change 3173704 on 2016/10/25 by James.Cobbett
Import test assets for Alembic Conversion test
#jira UE-29618
Change 3173694 on 2016/10/25 by Matt.Kuhlenschmidt
Fixed Zip project not working in binary builds
#jira UE-37655
Change 3173692 on 2016/10/25 by James.Cobbett
Test content for Alembic Conversion options
#jira UE-29618
Change 3173666 on 2016/10/25 by Matt.Kuhlenschmidt
Fixed array refreshing in the details panel not functioning properly for sub-object properties
#jira UE-37652
Change 3173619 on 2016/10/25 by Robert.Manuszewski
Making the cooker ignore EDL ini setting in binary engine build.
#jira UE-37617
Change 3173616 on 2016/10/25 by Nick.Whiting
Merging update to Google VR 1.01 SDK, which fixes multiple initialization errors
#jira UE-37440, UE-37236
Change 3173606 on 2016/10/25 by Jamie.Dale
Removed invalid assert
We're already passed the collection to modify, so the assert isn't needed.
#jira UE-37761
Change 3173604 on 2016/10/25 by Keli.Hlodversson
Work around an issue where the SteamVR plugin will fail to initialize if SteamVR was not already running before launching.
#jira UE-37623
Change 3173502 on 2016/10/25 by Matt.Kuhlenschmidt
Fixed more cases of undoing causing selections to become out of sync
#jira UE-37300
Change 3173475 on 2016/10/25 by Ori.Cohen
Critical 4.14 physx fixes
#JIRA UE-37085, UE-37114, UE-37116
Change 3173445 on 2016/10/25 by Robert.Manuszewski
Disabling the Event Driven Loader in ShooterGame. Making sure the EDL can't be enabled in binary engine distributions.
#jira UE-37394
Change 3173401 on 2016/10/25 by Matt.Kuhlenschmidt
Guard against crashes when textures or materials are explicitly marked as pending kill and then passed to slate for rendering
#jira UE-36261
Change 3173245 on 2016/10/25 by Allan.Bentham
Remove incorrect assert.
#jira UE-37699, UE-37707
Change 3173232 on 2016/10/25 by Jurre.deBaare
Post Processing Settings do not update in Persona when the values are changed in Preview Scene Settings
#fix make sure we also pick up vector4 fields
#jira UE-37656
Change 3173183 on 2016/10/25 by Matthew.Griffin
Added Shipping configs to BootstrapPackagedGame (Duplicating CL#3150210 from Main)
Change 3173065 on 2016/10/25 by Dmitriy.Dyomin
Fixed: Disabling 'Use Landscape Lightmap' option Skewing Procedural Foliage Instances
#jira UE-37736
Change 3172929 on 2016/10/24 by Ryan.Vance
#jira UE-37742
Adding SceneViewExtension hooks that are called right after init views completes. It might be advantageous to do the work we're currently doing in PreRenderViewFamily_RenderThread and PreRenderView_RenderThread after init views is called with the way SteamVR's running start is implemented.
Change 3172915 on 2016/10/24 by Rolando.Caloca
UE4.14 - Fix compile issues on CCT
#jira UE-37722
Change 3172762 on 2016/10/24 by Brian.Karis
#jira UE-37369
Change 3172742 on 2016/10/24 by Daniel.Lamb
Fixed issue with file-> cook error when you haven't built the exe which you are trying to cook for.
#jira UE-36796
#test Cook shootergame
Change 3172690 on 2016/10/24 by Maciej.Mroz
DynamicClass gives now, as componet-archetype, objects with non-exact name.
Manually merged cl#3171563
#jira UE-37480
Change 3172663 on 2016/10/24 by Daniel.Lamb
Stopped cooker from handling modification requests when they are PIE requests.
#test PIE shootergame
#jira UE-21572
Change 3172629 on 2016/10/24 by Mitchell.Wilson
Reconnected some material functions to resolve warnings which caused characters to render with default materials, and resolving 'Top Material' warnings.
Reimported SM_GodRay_Plane to resolve PhysX warning
Rebuilt lighting for the level.
#jira UE-37728
Change 3172523 on 2016/10/24 by Nick.Shin
update physx cmakefiles and automation build scripts for release-414 stream (as per request)
#jira UEFW-106 Add HTML5 support to PhysX CMake & automation scripts
Change 3172515 on 2016/10/24 by Nick.Shin
remove old emsdk (1.35.0)
#jira UEPLAT-1324 Update HTML5 PhysX to CMake
Change 3172511 on 2016/10/24 by Mark.Satterthwaite
Don't set Metal resource option fields on texture descriptors when running on an OS that doesn't support them.
#jira UE-37481
Change 3172461 on 2016/10/24 by Cody.Albert
Added check for pointer validity to prevent crash in ShooterGame
#jira UE-37433
Change 3172329 on 2016/10/24 by Peter.Sauerbrei
fix for remote notification method misspelling
#jira ue-37720
Change 3172322 on 2016/10/24 by Marc.Audy
Fix unreferenced variable the brute force to unblock QA
#jira UE-37718
Change 3172191 on 2016/10/24 by Mitchell.Wilson
Clearing preivew meshes on some materials to resolve warnings.
#jira UE-37713
Change 3172186 on 2016/10/24 by Matt.Kuhlenschmidt
Fix non-editor compile error
#jira UE-37695
Change 3172159 on 2016/10/24 by Dmitry.Rekman
Update GitDependencies.exe (UE-37530).
- Binary needs to be updated to support LINUX_MULTIARCH_ROOT variable.
#jira UE-37530
Change 3172132 on 2016/10/24 by Keith.Judge
Xbox One - Fix corrupted screenshots. Needed a GPU/CPU sync point, which legacy D3D11.x used to do for us, but now we have to do manually. Copied from Dev-Platform CL 3156872
#jira UE-37038
Change 3172131 on 2016/10/24 by Keith.Judge
Xbox One - Disable engine analytics on XB1 shipping games, as per XRs. Verified http requests from devkit with Fiddler. Copied from CL 3153176 in Dev-Platform.
#jira UE-36364
Change 3172106 on 2016/10/24 by Mitchell.Wilson
Updated reference to a material in VehicleMenu.umap to resolve warning
#jira UE-29748
Change 3172036 on 2016/10/24 by Steve.Robb
TEnumAsByte can be switchably deprecated for enum classes, and is currently not deprecated (reverting a change in behavior).
#jira UE-37706
Change 3172020 on 2016/10/24 by Marc.Audy
Child Actor should be created at registration, not creation. Otherwise attachment hierarchies can not be set up and thus, world positions incorrect
#jira UE-37615
Change 3171966 on 2016/10/24 by Dmitry.Rekman
Linux: fix Setup.sh on Ubuntu 16.10 (UE-37621)
#jira UE-37621
(Edigrating 3171266 from Dev-Platform to Release-4.14)
Change 3171964 on 2016/10/24 by Dmitry.Rekman
Linux: fix always rebuilding FixDeps (UE-37625).
#jira UE-37625
(Edigrating 3153471 from Dev-Platform to Release-4.14)
Change 3171957 on 2016/10/24 by Matt.Kuhlenschmidt
Guard against property editor crash happening when focused is lost on an object which has been GC'd due to PIE running
#jira UE-37636
Change 3171943 on 2016/10/24 by Matt.Kuhlenschmidt
Added mesh simplifcation plugin picker to the project settings under Editor - Mesh Simplification
The menu to pick simplification plugins also contains a link to find other plugins in the launcher marketplace. The launcher navigates to "/ue/marketplace/content-cat/assets/codeplugins" for now
#jira UE-37695
Change 3171928 on 2016/10/24 by Max.Chen
Sequencer: Revert CL#3162724. Fix time dilation in level sequence player because it's causing a regression. Will revisit the fix for UE-37277.
#jira UE-37589
Change 3171924 on 2016/10/24 by James.Cobbett
Test content 'preroll.abc'. Has empty frames at the start of animation. For alembic importer testing.
#jira UE-29618
Change 3171867 on 2016/10/24 by Lina.Halper
- Back out revision 2 from //UE4/Release-4.14/Engine/Source/Runtime/Engine/Private/Components/SkeletalMeshComponent.cpp
- Empties override materials before setting preview mesh in animation editor
#jira: UE-37610
#code review: Thomas.Sarkanen
Change 3171789 on 2016/10/24 by Allan.Bentham
Resolve depth on appropriate mobile devices when the view contains materials that read from the depth.
#jira UE-35023
Change 3171776 on 2016/10/24 by Robert.Manuszewski
Increasing the initial memory allocation size for FLargeMemoryWriter to reduce the number of allocations when saving or cooking
#jira UE-37599
Change 3171728 on 2016/10/24 by Dmitriy.Dyomin
Fix origin rebasing to work with precomputed lighting data stored in separate package
#jira UE-37693
Change 3171634 on 2016/10/24 by Dmitriy.Dyomin
Added commenets to 3171621
#jira UE-36449
Change 3171621 on 2016/10/23 by Dmitriy.Dyomin
Fixed: Editor crash when compiling the character blueprint after a PIE session with World Composition enabled
Actually disabled use of world composition with multiplayer PIE using separate processes
#jira UE-36449
Change 3171424 on 2016/10/22 by Jack.Porter
Remove unused exec command causing logspam
#jira UE-37661
Change 3171259 on 2016/10/21 by Ryan.Vance
Mobile multi-view update
#jira UE-37603
Removed dependence on shader name for determining if we need to enable multi-view, now relies on the presence of gl_ViewID_OVR
Worked around unsigned/signed integer driver issues. Some shader compilers were choking on the unsigned postfix
Attempted to clean up some of the code duplication in MobileBasePassRendering.cpp
Made a few design concessions which allows the feature to run on Mali devices in the wild right now:
Allow the feature to be enabled with ES2 rather than just ES3.1. Mali drivers have a bug preventing shader io blocks and multi-view from working together
Passing the view id from the vertex shader. Mali devices don't allow referencing gl_ViewID_OVR in a pixel shader
Change 3171165 on 2016/10/21 by Peter.Sauerbrei
revert out the memory changes for platform file cache for mobile
#jira UE-36835
Change 3171112 on 2016/10/21 by Matt.Barnes
Updating TM-Material_BP_Nodes to facilitate test UEQATC-2969.
#jira UEQATC-2969
Change 3171111 on 2016/10/21 by Mike.Beach
Mirroring CL 3171084 form Dev-BP
Guarding against a unrepro'able top-10 crash in SGraphPin. Making sure we're not operating on a null/pending-kill/transient pin.
#jira UE-37642
Change 3170980 on 2016/10/21 by patrickr.donovan
Motion controller test content update - further updates to combat thumbstick noise.
#jira UE-29618
Change 3170965 on 2016/10/21 by Mitchell.Wilson
Moved panner in M_Frame3_BG material to Custom UV0 to resolve issue with material rendering white on tvOS
#jira UE-37105
Change 3170905 on 2016/10/21 by Marc.Audy
Fix AActor::Serialize crash if a null in the owned components array
#jira UE-37641
Change 3170838 on 2016/10/21 by Ben.Woodhouse
Integrate crash fix from main CL3162008
Fix for crash in GPU profiler. This was caused by the RHIThread getting too far behind the renderthread. This change adds a fence wait on the renderthread in RHIEndDrawingViewport to ensure that the renderthread is never more than a frame ahead.
#jira UE-37216
Change 3170815 on 2016/10/21 by Jamie.Dale
Fixed a potential race-condition in FTextRenderComponentMIDCache, and updated it to detect "stale" MIDs
FMIDData was shared between the game and render threads, but used non-thread-safe shared pointers.
This also marks MIDs as "stale" if the number of MIDs no longer matches the number of pages in the font (which may happen if the font is edited). These "stale" MIDs are kept as a weak pointer in a separate array so that we can still keep the MID object alive as long as something is still using it (as it may still be used by a FTextRenderSceneProxy for a short while). This array of weak pointers is purged of unreferenced instances during the normal cache purge cycle.
#jira UE-37519
Change 3170784 on 2016/10/21 by Mitchell.Wilson
Changing a material in TM-Reflections level
#jira UE-29618
Change 3170668 on 2016/10/21 by Mitchell.Wilson
Updated defaulteditor.ini to resolve cook failure for UBlueprint.
#jira UE-37648
Change 3170595 on 2016/10/21 by Chris.Wood
Added "Vanilla" Editor detection and reporting it to analytics, MTBF and Crash Reporter.
[UE-37132] - Detect "Vanilla" Editor and report it to MTBF analytics and Crash Reporter
#jira UE-37132
Change 3170395 on 2016/10/21 by Robert.Manuszewski
UBT will now respect -remoteini command line param when looking for ini files for build settings. Fixes a crash when launching BP-only project from the Editor with EDL enabled.
#jira UE-37617
Change 3170367 on 2016/10/21 by Allan.Bentham
Prevent overflow of bright pixels during DoF calc.
#jira UE-31755
Change 3170363 on 2016/10/21 by Robert.Manuszewski
Fixing crashes when cancelling async loading
#jira UE-37634
Change 3170362 on 2016/10/21 by Robert.Manuszewski
Fixing MallocBinned2 crashes on 32-bit platforms.
#jira UE-37326
Change 3170280 on 2016/10/21 by Jack.Porter
Fix for landscape not rendering in Player Collision view mode after toggling G.
#jira UE-37576
Change 3170202 on 2016/10/21 by Dmitriy.Dyomin
Fixed: CustomDepth is incorrect when used in Custom PostProcess after Tonemapping
#jira UE-37628
Change 3170160 on 2016/10/20 by Aaron.McLeran
#jira UE-37596 Making detail customizations and experimental setting for sound base showing audiomixer-only features
Implementing CL 3169422 in 4.14
Change 3170029 on 2016/10/20 by Aaron.McLeran
#jira UE-37004
#jira UE-37005
Fixing stat soundwaves
Implementing 3154264 from Dev-Framework
Change 3170024 on 2016/10/20 by Aaron.McLeran
#jira UE-37024 Set Sound Mix Class Override still Playing Sounds in Certain Conditions
Implementing the CL from Dev-Framework
Change 3169869 on 2016/10/20 by Arne.Schober
duplicated:
CL 3169845
#jira UE-35937
Change 3169810 on 2016/10/20 by Steve.Cano
Moving change from CL 3169642 to 4.14 - fix a library issue that was causing Kindle Fire 1st edition to crash when trying to run QA game, may be causing issues on other devices as well
#ue4
#android
#jira UE-22440
Change 3169635 on 2016/10/20 by Mike.Beach
Mirroring CL 3169443 from Dev-BP
Deprecating the [EditoronlyBP] config settings (which are super old, and support legacy functionality, allowing users to export editor-only UBlueprint objects on cook). This is in support of the new event-driven loader (EDL), which is incompatible with these exports. We will be removing support for these settings promptly in 4.15 (hence the choice to deprecate them for 4.14).
#jira UE-37605
Change 3169618 on 2016/10/20 by Mitchell.Wilson
rebuilt lighting for all levels in Content Examples
#jira UE-37570
Change 3169447 on 2016/10/20 by Peter.Sauerbrei
fix for double quotes causing arguments to not be sent correctly to rsync
#jira UE-37018
Change 3169362 on 2016/10/20 by tim.gautier
Updated TM-UMG Level Blueprint - mouse-clicks outside of UMG assets no longer take focus from the set Display Widget
#jira abc-123
Change 3169244 on 2016/10/20 by Chris.Babcock
Update to new CodeWorks for Android 1R5
#jira UE-37554
#ue4
#android
Change 3169240 on 2016/10/20 by Jon.Nabozny
#rn Fixup GameModeClassAliases in Engine.ini files. These must be prefixed with either /Game/ or /Script/ otherwise the asset may fail to resolve and an empty name will be used instead (and cause weird behavior).
#jira UE-37488
Change 3169155 on 2016/10/20 by Peter.Sauerbrei
fix for incorrect characters in bundle id when project has underscores in the name
#jira UE-36436
Change 3169127 on 2016/10/20 by Allan.Bentham
Fix android vulkan compile error with dev builds
#jira abc-123
Change 3169058 on 2016/10/20 by Allan.Bentham
Flush command buffer during init to fix vulkan crash when rendering thread is enabled.
Fix FDeferredDeletionQueue's resource handle storage on 32 bit platforms.
#jira UE-36452
Change 3169049 on 2016/10/20 by Peter.Sauerbrei
fix for minimum ios version in base ini file
#jira UE-37034
Change 3168910 on 2016/10/20 by Jack.Porter
Fix occasional race condition crash in FTcpMessageTransportConnection on editor shutdown
#jira UE-36944
Change 3168906 on 2016/10/20 by Dmitriy.Dyomin
Fixed: Black rendering on Galaxy S4 PowerVR
#jira UE-37567
Change 3168858 on 2016/10/20 by Richard.TalbotWatkin
Made BSP rendering more robust so that out-of-range array accesses trigger an 'ensure' rather than a crash (with a view to identifying the cause of this issue). Also fixed non-editor builds.
#jira UE-37267 - [CrashReport] UE4Editor_Engine!FModelSceneProxy::GetDynamicMeshElements() [modelrender.cpp:322]
Change 3168826 on 2016/10/20 by Richard.TalbotWatkin
Duplicated from //UE4/Dev-Editor, CL 3156473
Attempt to make geometry render / rebuild more robust in the hope of catching UE-36265.
#jira UE-36265 - [CrashReport] UE4Editor_Engine!FModelSceneProxy::HasSelectedSurfaces() [modelrender.cpp:538]
Change 3168335 on 2016/10/19 by Michael.Trepka
Restored previous version of FMacWindow::IsPointInWindow function to solve issues with window dragging.
#jira UE-37418
Change 3168307 on 2016/10/19 by Rolando.Caloca
UE4.14 - Integrate changes from 3051720 and 3057522
[RENDERING] [!]
Revert fix in GPU skin cache (original CL 2722034)
- Waiting on shader compilation with the GPU skin update will destroy/recreate render state, causing a crash in the GPU skin cache.
#jira UE-37545
Change 3168201 on 2016/10/19 by Peter.Sauerbrei
fix for urls with queries not working correctly
#jira UE-35090
Change 3168200 on 2016/10/19 by Mitchell.Wilson
Re-saved multiple cloth assets to resolve building adjacency information warnings.
Replaced deprecated SetText and GrabComponent blueprint nodes with new SetText and GrabComponentAtLocation.
Re-saved multiple assets to resolve empty engine version warnings.
#jira UE-37537
Change 3168174 on 2016/10/19 by Alan.Noon
#jira UE-37534
deleted unnecessary files from Photorealistic Character project
Change 3168160 on 2016/10/19 by Arne.Schober
duplicated:
fixes for velocity render pass
CL 3166370
CL 3166799
#jira UE-37362
Change 3168136 on 2016/10/19 by Alan.Noon
#jira UE-37534
Initial add of Photorealistic Character Sample project
Change 3168127 on 2016/10/19 by Peter.Sauerbrei
fix for IOS_7 not being found
#jira UE-37034
Change 3167886 on 2016/10/19 by patrickr.donovan
#jira UE-37242
TLDR; Test content updates.
Bug entered due to finicky hardware returning noise values that weren't accounted for in test contet. Fortified test content against this edge case, no code change necessary.
Change 3167882 on 2016/10/19 by samuel.proctor
Updating asset for Profiler Heatmap testing
#jira UE-29618
Change 3167868 on 2016/10/19 by Dmitry.Rekman
Linux: disable XGE on Windows (UE-37446).
- XGE does not seem to handle new clang 3.9.0 toolchain well, with very reproducible crashes.
Also fix build breakage with clang 3.8.1.
- always_inline was still applied to debug builds and as such was ignored.
#jira UE-37446
(Edigrating CL 3166330, 3166456 from Dev-Platform to Release-4.14)
Change 3167832 on 2016/10/19 by Mitchell.Wilson
Reconnected 'TopMaterial' in multiple materials to resolve warnings.
Rebuilt lighting and saved levels.
#jira UE-37529 UE-37535
Change 3167688 on 2016/10/19 by Mitchell.Wilson
Removing preview mesh from multiple materials to resolve warnings.
Rebuilt lighting and saved all levels.
#jira UE-29678 UE-37526
Change 3167616 on 2016/10/19 by Marc.Audy
Fix reversed logic checking for an Actor after a cast was supposed to have failed, broken in CL 2695656.
#jira UE-37517
Change 3167585 on 2016/10/19 by Jamie.Dale
Re-enabled all-cultures upload to OneSky so we prime translations correctly
#jira UE-37518
Change 3167579 on 2016/10/19 by Jamie.Dale
Fixed text render component regression with custom MIDs
#jira UE-37305
Change 3167501 on 2016/10/19 by Matt.Kuhlenschmidt
Fixed realtime rendering in editor viewport being disabled when simulating in editor
#jira UE-37466
Change 3167498 on 2016/10/19 by Mitchell.Wilson
Re-saving multiple blueprints with nodeguid warnings.
Cleared preview mesh for materials with string asset reference warnings.
Rebuilt lighting and added _BuildData to resolve lighting rebuild warnings.
#jira UE-30840
Change 3167492 on 2016/10/19 by Matt.Kuhlenschmidt
Fix for disappearing menus in lastest windows 10 build
#jira UE-36752
Change 3167311 on 2016/10/19 by Mieszko.Zielinski
Fixed EQS template cache issues with multiple query run modes #UE4
#jira UE-37496
Change 3167206 on 2016/10/19 by Matthew.Griffin
Moved Github promotion earlier in build script and added 'After' dependencies so that we can guarantee the order of the nightly build/prevent unimportant jobs from running before binary build is completed
Change 3167205 on 2016/10/19 by Matthew.Griffin
Changed CommandUtils.UnzipFiles to use system unzip tool when running on mono, as there has been issues with Ionic not being able to decompress those created by the zip tool
Change 3167010 on 2016/10/19 by Dmitriy.Dyomin
Fix for LevelStreaming getting stuck, and World->PersistentLevel null assert
Contributed by Funcom: https://udn.unrealengine.com/questions/312900/fix-for-levelstreaming-getting-stuck-and-world-per.html
#jira UE-36397
[CL 3189774 by Matthew Griffin in Main branch]
2016-11-08 02:45:19 -05:00
AppendCString ( GlslCode , " #define gl_ViewID_OVR 0 \n " ) ;
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3145687)
#lockdown Nick.Penwarden
#rb Merge
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3094167 on 2016/08/18 by Jeff.Fisher
UEVR-97 Morpheus HMD tracking needs to wait until HMD is fully tracked.
-Morpheus CALIBRATING/NOT_TRACKED tracking state hmd orientation update disabled and delegates added to present instructions to the user. This behavior is controlled by morpheus ini setting bDisableHMDOrientationUntilHMDHasBeenTracked, but defaulted to true to avoid subtly bad user experiences.
#review-3094106 @chad.taylor
#jira UEVR-97
Change 3104799 on 2016/08/29 by Jeff.Fisher
UEVR-178 Morpheus HMD Black crescents
-Switched reprojection frame time for 60/120 mode from 120hz to 60hz so we much better predict where the hmd will be pointing when the frame we are about to render is actually displayed, and are run off the edge of it less often and less severely. This makes the black crescent artifacts only just visible during very fast head turning. The kWrapModeMirror change, which will be submitted separately, makes the left and right crescents invisible to me.
-Renamed the functions for setting the prediction info in the PS4Tracker.
-Added render frame parameters to sony reprojection functions, these can help with debugging reprojection.
-Added commented out sce call to get the reprojection debug data. Not allowed to submit an executable that calls it, but its nice to at least know where one can put it. May improve this later.
-Wrapped PS4Tracker->Synchronize call in a check that the tracker handle is valid, because I managed to get it called when it wasn't (probably during hmd power off testing, but I don't remember now). It should be fine to not do it if the tracker is not functioning.
#review-3104780 chad.taylor
#jira UEVR-178
Change 3108423 on 2016/08/31 by Jeff.Fisher
Morpheus Config Improvements.
-UEVR-138 Morpheus HMD reprojection wrap mode config setting
-Can now switch between wrap mode Mirror and ClampToBorder. Mirror is the default.
-Made bDisableHMDOrientationUntilHMDHasBeenTracked editable in UE4Editor project settings.
-Using generic project setting for bStartInVR, removed the morpheus specific one.
#jira UEVR-138
#review-3106999 @nick.whiting
Change 3111231 on 2016/09/01 by Jeff.Fisher
Fixed bStartInVR ini setting.
-Initial implementation worked via a generic EnableStereo call, which worked, but happened after the hmd setup dialog, which is not what I wanted.
-Also fixed a tracking frame mismatch assert that hit when I powered the hmd off once, causing it to lose tracking. Its ok that it doesn't update in that circumstance.
#review-3111211 @ryan.vance
Change 3115196 on 2016/09/06 by Keli.Hlodversson
#jira UEVR-128
Map move controller Select button to Invalid, as it is always handled by the system
Change 3116425 on 2016/09/07 by Chad.Taylor
PSVR: stereo layers implementation
Change 3116593 on 2016/09/07 by Jeff.Fisher
UEVR-126 Morpheus HMD connect dialog cancel reactions
-VR only apps can't allow the player to cancel out of the hmd setup dialog, so lets just pop the dialog up again (sony were ok with a licencee doing this) if an ini setting says to do that.
-VR/2D apps might want to switch to 2d if the player cancels out of the hmd setup dialog, so there is an ini setting for that.
-A delegate only implementation is also provided for apps that want to do something else. This leaves the game rendering in VR mode, and fires the delegate.
-Refactored to better separate successful HMD acquisition from stereo rendering. This was necessary to support the delegate only option on startup. If you start in vr mode with your hmd off and cancel the dialog stereo rendering now starts with default values for the hmd hardware stats (as read from my pvt) instead of crashing trying to use uninitialized data. When an hmd is connected its values will be read.
-Refactored to ensure reprojection starts immediately when we call StartReprojection.
#jira UEVR-126
#review-3116221
Change 3116754 on 2016/09/07 by Keli.Hlodversson
bPixelDensityAdaptive is a bool and not a float property
Change 3117692 on 2016/09/08 by Jeff.Fisher
UEVR-135 Morpheus HMD recent feature error reporting
UEVR-173 2DVR flexibility (UTexture)
-Error log for sceHmdReprojectionSetOutputMinColor failure.
-Made the parameter for 2dVR a UTexture* instead of a UTexture2D*, so it can be a rendertarget, etc.
-Added error logs for missing texture, invalid texture, wrong texture format to 2DVR.
#jira UEVR-135
#jira UEVR-173
#review-3116955 @keli.hloedversson
Change 3117990 on 2016/09/08 by Jeff.Fisher
UEVR-127 Morpheus HMD removal reaction
-Added VRHeadsetPutOnHead and VRHeadsetRemovedFromHead delegates, and implemented them for Morpheus.
#jira UEVR-127
#review-3117968 @keli.hlodversson
Change 3120198 on 2016/09/09 by Jeff.Fisher
MorpheusReprojector frame complete wait error log
-Now log a warning if the sceKernalWaitEqueue returns an error. It not a problem if this happens rarely, but something is very broken if it starts happening continuously.
Change 3121754 on 2016/09/12 by Keli.Hlodversson
#jira UE-21878 - Also emit VR initialization analytics events in the editor.
Change 3122311 on 2016/09/12 by Nick.Whiting
Merging fix for Adreno devices rendering black from 4.13.1
Change 3123057 on 2016/09/13 by Keli.Hlodversson
#jira UE-30097 Use the current value of r.ScreenPercentage on Occulus Rift if it's explicitly set.
* If the SetBy part of the flags for the console var is SetBy_Constructor, then ignore the value.
* If it's SetBy_Scalability, then ignore it if it equals 100
* Else, call SetScreenPercentage using the current value
The obsolete HMD SCREENPERCENTAGE console command is still available and will override the setting until r.ScreenPercentage is modified the next time.
Change 3123200 on 2016/09/13 by Chad.Taylor
PS4 Stereo Layer double buffering. Since the overlays are reprojected at 120hz but rendered at 60hz we need to render to a separate buffer than the one being used by reprojection.
Change 3125845 on 2016/09/14 by Keli.Hlodversson
#jira UE-33996 Add hmd=<name> command line option to allow overriding which HMD module is used.
Renamed GetModulePriorityKeyName to simply GetModuleKeyName, as this name is now also used to match against the command line options.
Change 3127293 on 2016/09/15 by Jeff.Fisher
UEVR-225 Morpheus HMD top and bottom black crescents
-The hidden and visible area meshes for morpheus were too restrictive. Nudged them out a bit, no black crescents at the top and bottom of the screen. We are rendering a few more pixels now though.
#review-3127145 @ryan.vance
#jira UEVR-225
Change 3130635 on 2016/09/19 by Jeff.Fisher
UEVR-226 Morpheus HMD mirrored fill wrong on outer edges
-The setting was never being used, leaving the wrap mode at 0 aka kWrapModeWrap.
-Refactored how the setting is applied so it works, and is less convoluted.
#jira UEVR-226
#review-3129403
Change 3131615 on 2016/09/19 by Keli.Hlodversson
#jira UE-29341. Update Chaperone bounds when SteamVR tells us they have changed
Change 3136527 on 2016/09/22 by Keli.Hlodversson
Don't depend on the current state of the VR subsystem when exiting PIE mode to decide whether the main window should be restored. Instead always restore it if it was minimized at the start.
Change 3136652 on 2016/09/22 by Keli.Hlodversson
Allow shutting down Steam VR subsystem without shutting down the Steam VR plugin completely in response to quitting from the SteamVR overlay. Enabling stereo rendering again will reinitialize SteamVR. This is useful when using PIE in VR mode as it allows entereing it again without restarting the editor. Also fixes crashes by first disabinge stereo rendering a short while before shutting down the VR subsystem.
#jira UE-35940
Change 3138901 on 2016/09/23 by Ryan.Vance
Merging 3138521 using OdinToDevVR to bring over temporary forward lighting ISR changes for 4.14
Change 3141614 on 2016/09/27 by Keli.Hlodversson
Implement GetNumOfTrackingSensors and GetTrackingSensorProperties on SteamVR.
#jira UE-32994
Change 3141948 on 2016/09/27 by Jeff.Fisher
UEVR-242 Is AddControllerYawInput not allowed when morpheus is enabled?
-Indeed it did not work. Looks like morpheus would not accumulate the yaw, so it would be reset every frame. I made the implementation of ApplyHmdRotation very similar to the one used for occulus (also similar to other platforms) to fix this.
#jira UEVR-242
#review-3141933 keli.hlodversson
Change 3143484 on 2016/09/28 by Nick.Whiting
Integrating Oculus 1.8 SDK support, includes support for cylinder and cubemap stereo layers
Change 3143517 on 2016/09/28 by Chad.Taylor
Merging PS4Tracker fixes from Release-4.13 into Dev-VR
Change 3143805 on 2016/09/28 by Keli.Hlodversson
#jira UE-36478 Workaround to make world to meters scale apply correctly to Occulus controllers while running in PIE
Change 3143943 on 2016/09/28 by Nick.Whiting
Merging latest drop from OSVR
Change 3144221 on 2016/09/28 by Keli.Hlodversson
Implement GetTrackingSensorProperties on PS4
#jira UE-32994
Change 3144352 on 2016/09/28 by Ryan.Vance
Initial implementation of mobile multi-view.
This is non-functioning and requires a lot more work, but enough of the framework exists to make the 4.14 branch for an experimental release.
Change 3144585 on 2016/09/29 by Jeff.Fisher
UEVR-14 PSVR Support for 90Hz to 90Hz, and 120Hz to 120Hz
-Enum setting added for the three frame sequences.
-90Hz mode is trying to run camera updates at 90hz, but they can only run at 60 so every third one fails. This works, but its dubious.
-Feature marked as experimental for now because of that 90hz tracking issue, and the lack of testing.
-Defaulting to 60/120.
#jira UEVR-14
#review-3143486 chad.taylor nick.whiting
Change 3145263 on 2016/09/29 by Nick.Whiting
Fix for constructor initialization order in StereoLayerComponent, which threw a warning on Clang
Change 3145536 on 2016/09/29 by Nick.Whiting
Fixes for project files to prevent mystery pop up from CAPI
Change 3145663 on 2016/09/29 by Keli.Hlodversson
PSVR: Make sure the camera orientation returned from GetTrackingSensorProperties points in the right direction.
Change 3145670 on 2016/09/29 by Keli.Hlodversson
For some reason the orientation of the Oculus tracking sensor is reported as pointing backwards. This flips it around to face front
Change 3145687 on 2016/09/29 by Chad.Taylor
VR splash screen support
[CL 3146243 by Nick Whiting in Main branch]
2016-09-30 01:16:13 -04:00
}
}
// Only desktop with separable shader platform can use GL_ARB_separate_shader_objects for reduced shader compile/link hitches
// however ES3.1 relies on layout(location=) support
2016-03-16 21:16:51 -04:00
bool const bNeedsBindLocation = OpenGLShaderPlatformNeedsBindLocation ( Capabilities . MaxRHIShaderPlatform ) & & ! bES31 ;
2016-02-19 13:49:13 -05:00
if ( OpenGLShaderPlatformSeparable ( Capabilities . MaxRHIShaderPlatform ) | | ! bNeedsBindLocation )
{
// Move version tag & extensions before beginning all other operations
MoveHashLines ( GlslCode , GlslCodeOriginal ) ;
2016-03-16 21:16:51 -04:00
2016-02-19 13:49:13 -05:00
// OpenGL SM5 shader platforms require location declarations for the layout, but don't necessarily use SSOs
if ( Capabilities . bSupportsSeparateShaderObjects | | ! bNeedsBindLocation )
{
if ( Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_Desktop )
{
AppendCString ( GlslCode , " #extension GL_ARB_separate_shader_objects : enable \n " ) ;
AppendCString ( GlslCode , " #define INTERFACE_LOCATION(Pos) layout(location=Pos) \n " ) ;
AppendCString ( GlslCode , " #define INTERFACE_BLOCK(Pos, Interp, Modifiers, Semantic, PreType, PostType) layout(location=Pos) Interp Modifiers struct { PreType PostType; } \n " ) ;
}
else
{
AppendCString ( GlslCode , " #define INTERFACE_LOCATION(Pos) layout(location=Pos) \n " ) ;
AppendCString ( GlslCode , " #define INTERFACE_BLOCK(Pos, Interp, Modifiers, Semantic, PreType, PostType) layout(location=Pos) Modifiers Semantic { PreType PostType; } \n " ) ;
}
}
else
{
AppendCString ( GlslCode , " #define INTERFACE_LOCATION(Pos) \n " ) ;
AppendCString ( GlslCode , " #define INTERFACE_BLOCK(Pos, Interp, Modifiers, Semantic, PreType, PostType) Modifiers Semantic { Interp PreType PostType; } \n " ) ;
}
}
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3145687)
#lockdown Nick.Penwarden
#rb Merge
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3094167 on 2016/08/18 by Jeff.Fisher
UEVR-97 Morpheus HMD tracking needs to wait until HMD is fully tracked.
-Morpheus CALIBRATING/NOT_TRACKED tracking state hmd orientation update disabled and delegates added to present instructions to the user. This behavior is controlled by morpheus ini setting bDisableHMDOrientationUntilHMDHasBeenTracked, but defaulted to true to avoid subtly bad user experiences.
#review-3094106 @chad.taylor
#jira UEVR-97
Change 3104799 on 2016/08/29 by Jeff.Fisher
UEVR-178 Morpheus HMD Black crescents
-Switched reprojection frame time for 60/120 mode from 120hz to 60hz so we much better predict where the hmd will be pointing when the frame we are about to render is actually displayed, and are run off the edge of it less often and less severely. This makes the black crescent artifacts only just visible during very fast head turning. The kWrapModeMirror change, which will be submitted separately, makes the left and right crescents invisible to me.
-Renamed the functions for setting the prediction info in the PS4Tracker.
-Added render frame parameters to sony reprojection functions, these can help with debugging reprojection.
-Added commented out sce call to get the reprojection debug data. Not allowed to submit an executable that calls it, but its nice to at least know where one can put it. May improve this later.
-Wrapped PS4Tracker->Synchronize call in a check that the tracker handle is valid, because I managed to get it called when it wasn't (probably during hmd power off testing, but I don't remember now). It should be fine to not do it if the tracker is not functioning.
#review-3104780 chad.taylor
#jira UEVR-178
Change 3108423 on 2016/08/31 by Jeff.Fisher
Morpheus Config Improvements.
-UEVR-138 Morpheus HMD reprojection wrap mode config setting
-Can now switch between wrap mode Mirror and ClampToBorder. Mirror is the default.
-Made bDisableHMDOrientationUntilHMDHasBeenTracked editable in UE4Editor project settings.
-Using generic project setting for bStartInVR, removed the morpheus specific one.
#jira UEVR-138
#review-3106999 @nick.whiting
Change 3111231 on 2016/09/01 by Jeff.Fisher
Fixed bStartInVR ini setting.
-Initial implementation worked via a generic EnableStereo call, which worked, but happened after the hmd setup dialog, which is not what I wanted.
-Also fixed a tracking frame mismatch assert that hit when I powered the hmd off once, causing it to lose tracking. Its ok that it doesn't update in that circumstance.
#review-3111211 @ryan.vance
Change 3115196 on 2016/09/06 by Keli.Hlodversson
#jira UEVR-128
Map move controller Select button to Invalid, as it is always handled by the system
Change 3116425 on 2016/09/07 by Chad.Taylor
PSVR: stereo layers implementation
Change 3116593 on 2016/09/07 by Jeff.Fisher
UEVR-126 Morpheus HMD connect dialog cancel reactions
-VR only apps can't allow the player to cancel out of the hmd setup dialog, so lets just pop the dialog up again (sony were ok with a licencee doing this) if an ini setting says to do that.
-VR/2D apps might want to switch to 2d if the player cancels out of the hmd setup dialog, so there is an ini setting for that.
-A delegate only implementation is also provided for apps that want to do something else. This leaves the game rendering in VR mode, and fires the delegate.
-Refactored to better separate successful HMD acquisition from stereo rendering. This was necessary to support the delegate only option on startup. If you start in vr mode with your hmd off and cancel the dialog stereo rendering now starts with default values for the hmd hardware stats (as read from my pvt) instead of crashing trying to use uninitialized data. When an hmd is connected its values will be read.
-Refactored to ensure reprojection starts immediately when we call StartReprojection.
#jira UEVR-126
#review-3116221
Change 3116754 on 2016/09/07 by Keli.Hlodversson
bPixelDensityAdaptive is a bool and not a float property
Change 3117692 on 2016/09/08 by Jeff.Fisher
UEVR-135 Morpheus HMD recent feature error reporting
UEVR-173 2DVR flexibility (UTexture)
-Error log for sceHmdReprojectionSetOutputMinColor failure.
-Made the parameter for 2dVR a UTexture* instead of a UTexture2D*, so it can be a rendertarget, etc.
-Added error logs for missing texture, invalid texture, wrong texture format to 2DVR.
#jira UEVR-135
#jira UEVR-173
#review-3116955 @keli.hloedversson
Change 3117990 on 2016/09/08 by Jeff.Fisher
UEVR-127 Morpheus HMD removal reaction
-Added VRHeadsetPutOnHead and VRHeadsetRemovedFromHead delegates, and implemented them for Morpheus.
#jira UEVR-127
#review-3117968 @keli.hlodversson
Change 3120198 on 2016/09/09 by Jeff.Fisher
MorpheusReprojector frame complete wait error log
-Now log a warning if the sceKernalWaitEqueue returns an error. It not a problem if this happens rarely, but something is very broken if it starts happening continuously.
Change 3121754 on 2016/09/12 by Keli.Hlodversson
#jira UE-21878 - Also emit VR initialization analytics events in the editor.
Change 3122311 on 2016/09/12 by Nick.Whiting
Merging fix for Adreno devices rendering black from 4.13.1
Change 3123057 on 2016/09/13 by Keli.Hlodversson
#jira UE-30097 Use the current value of r.ScreenPercentage on Occulus Rift if it's explicitly set.
* If the SetBy part of the flags for the console var is SetBy_Constructor, then ignore the value.
* If it's SetBy_Scalability, then ignore it if it equals 100
* Else, call SetScreenPercentage using the current value
The obsolete HMD SCREENPERCENTAGE console command is still available and will override the setting until r.ScreenPercentage is modified the next time.
Change 3123200 on 2016/09/13 by Chad.Taylor
PS4 Stereo Layer double buffering. Since the overlays are reprojected at 120hz but rendered at 60hz we need to render to a separate buffer than the one being used by reprojection.
Change 3125845 on 2016/09/14 by Keli.Hlodversson
#jira UE-33996 Add hmd=<name> command line option to allow overriding which HMD module is used.
Renamed GetModulePriorityKeyName to simply GetModuleKeyName, as this name is now also used to match against the command line options.
Change 3127293 on 2016/09/15 by Jeff.Fisher
UEVR-225 Morpheus HMD top and bottom black crescents
-The hidden and visible area meshes for morpheus were too restrictive. Nudged them out a bit, no black crescents at the top and bottom of the screen. We are rendering a few more pixels now though.
#review-3127145 @ryan.vance
#jira UEVR-225
Change 3130635 on 2016/09/19 by Jeff.Fisher
UEVR-226 Morpheus HMD mirrored fill wrong on outer edges
-The setting was never being used, leaving the wrap mode at 0 aka kWrapModeWrap.
-Refactored how the setting is applied so it works, and is less convoluted.
#jira UEVR-226
#review-3129403
Change 3131615 on 2016/09/19 by Keli.Hlodversson
#jira UE-29341. Update Chaperone bounds when SteamVR tells us they have changed
Change 3136527 on 2016/09/22 by Keli.Hlodversson
Don't depend on the current state of the VR subsystem when exiting PIE mode to decide whether the main window should be restored. Instead always restore it if it was minimized at the start.
Change 3136652 on 2016/09/22 by Keli.Hlodversson
Allow shutting down Steam VR subsystem without shutting down the Steam VR plugin completely in response to quitting from the SteamVR overlay. Enabling stereo rendering again will reinitialize SteamVR. This is useful when using PIE in VR mode as it allows entereing it again without restarting the editor. Also fixes crashes by first disabinge stereo rendering a short while before shutting down the VR subsystem.
#jira UE-35940
Change 3138901 on 2016/09/23 by Ryan.Vance
Merging 3138521 using OdinToDevVR to bring over temporary forward lighting ISR changes for 4.14
Change 3141614 on 2016/09/27 by Keli.Hlodversson
Implement GetNumOfTrackingSensors and GetTrackingSensorProperties on SteamVR.
#jira UE-32994
Change 3141948 on 2016/09/27 by Jeff.Fisher
UEVR-242 Is AddControllerYawInput not allowed when morpheus is enabled?
-Indeed it did not work. Looks like morpheus would not accumulate the yaw, so it would be reset every frame. I made the implementation of ApplyHmdRotation very similar to the one used for occulus (also similar to other platforms) to fix this.
#jira UEVR-242
#review-3141933 keli.hlodversson
Change 3143484 on 2016/09/28 by Nick.Whiting
Integrating Oculus 1.8 SDK support, includes support for cylinder and cubemap stereo layers
Change 3143517 on 2016/09/28 by Chad.Taylor
Merging PS4Tracker fixes from Release-4.13 into Dev-VR
Change 3143805 on 2016/09/28 by Keli.Hlodversson
#jira UE-36478 Workaround to make world to meters scale apply correctly to Occulus controllers while running in PIE
Change 3143943 on 2016/09/28 by Nick.Whiting
Merging latest drop from OSVR
Change 3144221 on 2016/09/28 by Keli.Hlodversson
Implement GetTrackingSensorProperties on PS4
#jira UE-32994
Change 3144352 on 2016/09/28 by Ryan.Vance
Initial implementation of mobile multi-view.
This is non-functioning and requires a lot more work, but enough of the framework exists to make the 4.14 branch for an experimental release.
Change 3144585 on 2016/09/29 by Jeff.Fisher
UEVR-14 PSVR Support for 90Hz to 90Hz, and 120Hz to 120Hz
-Enum setting added for the three frame sequences.
-90Hz mode is trying to run camera updates at 90hz, but they can only run at 60 so every third one fails. This works, but its dubious.
-Feature marked as experimental for now because of that 90hz tracking issue, and the lack of testing.
-Defaulting to 60/120.
#jira UEVR-14
#review-3143486 chad.taylor nick.whiting
Change 3145263 on 2016/09/29 by Nick.Whiting
Fix for constructor initialization order in StereoLayerComponent, which threw a warning on Clang
Change 3145536 on 2016/09/29 by Nick.Whiting
Fixes for project files to prevent mystery pop up from CAPI
Change 3145663 on 2016/09/29 by Keli.Hlodversson
PSVR: Make sure the camera orientation returned from GetTrackingSensorProperties points in the right direction.
Change 3145670 on 2016/09/29 by Keli.Hlodversson
For some reason the orientation of the Oculus tracking sensor is reported as pointing backwards. This flips it around to face front
Change 3145687 on 2016/09/29 by Chad.Taylor
VR splash screen support
[CL 3146243 by Nick Whiting in Main branch]
2016-09-30 01:16:13 -04:00
2016-02-19 13:49:13 -05:00
if ( ShaderName . IsEmpty ( ) = = false )
{
AppendCString ( GlslCode , " // " ) ;
AppendCString ( GlslCode , TCHAR_TO_ANSI ( ShaderName . GetCharArray ( ) . GetData ( ) ) ) ;
AppendCString ( GlslCode , " \n " ) ;
}
Copying //UE4/Dev-VR to //UE4/Dev-Main (Source: //UE4/Dev-VR @ 3145687)
#lockdown Nick.Penwarden
#rb Merge
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3094167 on 2016/08/18 by Jeff.Fisher
UEVR-97 Morpheus HMD tracking needs to wait until HMD is fully tracked.
-Morpheus CALIBRATING/NOT_TRACKED tracking state hmd orientation update disabled and delegates added to present instructions to the user. This behavior is controlled by morpheus ini setting bDisableHMDOrientationUntilHMDHasBeenTracked, but defaulted to true to avoid subtly bad user experiences.
#review-3094106 @chad.taylor
#jira UEVR-97
Change 3104799 on 2016/08/29 by Jeff.Fisher
UEVR-178 Morpheus HMD Black crescents
-Switched reprojection frame time for 60/120 mode from 120hz to 60hz so we much better predict where the hmd will be pointing when the frame we are about to render is actually displayed, and are run off the edge of it less often and less severely. This makes the black crescent artifacts only just visible during very fast head turning. The kWrapModeMirror change, which will be submitted separately, makes the left and right crescents invisible to me.
-Renamed the functions for setting the prediction info in the PS4Tracker.
-Added render frame parameters to sony reprojection functions, these can help with debugging reprojection.
-Added commented out sce call to get the reprojection debug data. Not allowed to submit an executable that calls it, but its nice to at least know where one can put it. May improve this later.
-Wrapped PS4Tracker->Synchronize call in a check that the tracker handle is valid, because I managed to get it called when it wasn't (probably during hmd power off testing, but I don't remember now). It should be fine to not do it if the tracker is not functioning.
#review-3104780 chad.taylor
#jira UEVR-178
Change 3108423 on 2016/08/31 by Jeff.Fisher
Morpheus Config Improvements.
-UEVR-138 Morpheus HMD reprojection wrap mode config setting
-Can now switch between wrap mode Mirror and ClampToBorder. Mirror is the default.
-Made bDisableHMDOrientationUntilHMDHasBeenTracked editable in UE4Editor project settings.
-Using generic project setting for bStartInVR, removed the morpheus specific one.
#jira UEVR-138
#review-3106999 @nick.whiting
Change 3111231 on 2016/09/01 by Jeff.Fisher
Fixed bStartInVR ini setting.
-Initial implementation worked via a generic EnableStereo call, which worked, but happened after the hmd setup dialog, which is not what I wanted.
-Also fixed a tracking frame mismatch assert that hit when I powered the hmd off once, causing it to lose tracking. Its ok that it doesn't update in that circumstance.
#review-3111211 @ryan.vance
Change 3115196 on 2016/09/06 by Keli.Hlodversson
#jira UEVR-128
Map move controller Select button to Invalid, as it is always handled by the system
Change 3116425 on 2016/09/07 by Chad.Taylor
PSVR: stereo layers implementation
Change 3116593 on 2016/09/07 by Jeff.Fisher
UEVR-126 Morpheus HMD connect dialog cancel reactions
-VR only apps can't allow the player to cancel out of the hmd setup dialog, so lets just pop the dialog up again (sony were ok with a licencee doing this) if an ini setting says to do that.
-VR/2D apps might want to switch to 2d if the player cancels out of the hmd setup dialog, so there is an ini setting for that.
-A delegate only implementation is also provided for apps that want to do something else. This leaves the game rendering in VR mode, and fires the delegate.
-Refactored to better separate successful HMD acquisition from stereo rendering. This was necessary to support the delegate only option on startup. If you start in vr mode with your hmd off and cancel the dialog stereo rendering now starts with default values for the hmd hardware stats (as read from my pvt) instead of crashing trying to use uninitialized data. When an hmd is connected its values will be read.
-Refactored to ensure reprojection starts immediately when we call StartReprojection.
#jira UEVR-126
#review-3116221
Change 3116754 on 2016/09/07 by Keli.Hlodversson
bPixelDensityAdaptive is a bool and not a float property
Change 3117692 on 2016/09/08 by Jeff.Fisher
UEVR-135 Morpheus HMD recent feature error reporting
UEVR-173 2DVR flexibility (UTexture)
-Error log for sceHmdReprojectionSetOutputMinColor failure.
-Made the parameter for 2dVR a UTexture* instead of a UTexture2D*, so it can be a rendertarget, etc.
-Added error logs for missing texture, invalid texture, wrong texture format to 2DVR.
#jira UEVR-135
#jira UEVR-173
#review-3116955 @keli.hloedversson
Change 3117990 on 2016/09/08 by Jeff.Fisher
UEVR-127 Morpheus HMD removal reaction
-Added VRHeadsetPutOnHead and VRHeadsetRemovedFromHead delegates, and implemented them for Morpheus.
#jira UEVR-127
#review-3117968 @keli.hlodversson
Change 3120198 on 2016/09/09 by Jeff.Fisher
MorpheusReprojector frame complete wait error log
-Now log a warning if the sceKernalWaitEqueue returns an error. It not a problem if this happens rarely, but something is very broken if it starts happening continuously.
Change 3121754 on 2016/09/12 by Keli.Hlodversson
#jira UE-21878 - Also emit VR initialization analytics events in the editor.
Change 3122311 on 2016/09/12 by Nick.Whiting
Merging fix for Adreno devices rendering black from 4.13.1
Change 3123057 on 2016/09/13 by Keli.Hlodversson
#jira UE-30097 Use the current value of r.ScreenPercentage on Occulus Rift if it's explicitly set.
* If the SetBy part of the flags for the console var is SetBy_Constructor, then ignore the value.
* If it's SetBy_Scalability, then ignore it if it equals 100
* Else, call SetScreenPercentage using the current value
The obsolete HMD SCREENPERCENTAGE console command is still available and will override the setting until r.ScreenPercentage is modified the next time.
Change 3123200 on 2016/09/13 by Chad.Taylor
PS4 Stereo Layer double buffering. Since the overlays are reprojected at 120hz but rendered at 60hz we need to render to a separate buffer than the one being used by reprojection.
Change 3125845 on 2016/09/14 by Keli.Hlodversson
#jira UE-33996 Add hmd=<name> command line option to allow overriding which HMD module is used.
Renamed GetModulePriorityKeyName to simply GetModuleKeyName, as this name is now also used to match against the command line options.
Change 3127293 on 2016/09/15 by Jeff.Fisher
UEVR-225 Morpheus HMD top and bottom black crescents
-The hidden and visible area meshes for morpheus were too restrictive. Nudged them out a bit, no black crescents at the top and bottom of the screen. We are rendering a few more pixels now though.
#review-3127145 @ryan.vance
#jira UEVR-225
Change 3130635 on 2016/09/19 by Jeff.Fisher
UEVR-226 Morpheus HMD mirrored fill wrong on outer edges
-The setting was never being used, leaving the wrap mode at 0 aka kWrapModeWrap.
-Refactored how the setting is applied so it works, and is less convoluted.
#jira UEVR-226
#review-3129403
Change 3131615 on 2016/09/19 by Keli.Hlodversson
#jira UE-29341. Update Chaperone bounds when SteamVR tells us they have changed
Change 3136527 on 2016/09/22 by Keli.Hlodversson
Don't depend on the current state of the VR subsystem when exiting PIE mode to decide whether the main window should be restored. Instead always restore it if it was minimized at the start.
Change 3136652 on 2016/09/22 by Keli.Hlodversson
Allow shutting down Steam VR subsystem without shutting down the Steam VR plugin completely in response to quitting from the SteamVR overlay. Enabling stereo rendering again will reinitialize SteamVR. This is useful when using PIE in VR mode as it allows entereing it again without restarting the editor. Also fixes crashes by first disabinge stereo rendering a short while before shutting down the VR subsystem.
#jira UE-35940
Change 3138901 on 2016/09/23 by Ryan.Vance
Merging 3138521 using OdinToDevVR to bring over temporary forward lighting ISR changes for 4.14
Change 3141614 on 2016/09/27 by Keli.Hlodversson
Implement GetNumOfTrackingSensors and GetTrackingSensorProperties on SteamVR.
#jira UE-32994
Change 3141948 on 2016/09/27 by Jeff.Fisher
UEVR-242 Is AddControllerYawInput not allowed when morpheus is enabled?
-Indeed it did not work. Looks like morpheus would not accumulate the yaw, so it would be reset every frame. I made the implementation of ApplyHmdRotation very similar to the one used for occulus (also similar to other platforms) to fix this.
#jira UEVR-242
#review-3141933 keli.hlodversson
Change 3143484 on 2016/09/28 by Nick.Whiting
Integrating Oculus 1.8 SDK support, includes support for cylinder and cubemap stereo layers
Change 3143517 on 2016/09/28 by Chad.Taylor
Merging PS4Tracker fixes from Release-4.13 into Dev-VR
Change 3143805 on 2016/09/28 by Keli.Hlodversson
#jira UE-36478 Workaround to make world to meters scale apply correctly to Occulus controllers while running in PIE
Change 3143943 on 2016/09/28 by Nick.Whiting
Merging latest drop from OSVR
Change 3144221 on 2016/09/28 by Keli.Hlodversson
Implement GetTrackingSensorProperties on PS4
#jira UE-32994
Change 3144352 on 2016/09/28 by Ryan.Vance
Initial implementation of mobile multi-view.
This is non-functioning and requires a lot more work, but enough of the framework exists to make the 4.14 branch for an experimental release.
Change 3144585 on 2016/09/29 by Jeff.Fisher
UEVR-14 PSVR Support for 90Hz to 90Hz, and 120Hz to 120Hz
-Enum setting added for the three frame sequences.
-90Hz mode is trying to run camera updates at 90hz, but they can only run at 60 so every third one fails. This works, but its dubious.
-Feature marked as experimental for now because of that 90hz tracking issue, and the lack of testing.
-Defaulting to 60/120.
#jira UEVR-14
#review-3143486 chad.taylor nick.whiting
Change 3145263 on 2016/09/29 by Nick.Whiting
Fix for constructor initialization order in StereoLayerComponent, which threw a warning on Clang
Change 3145536 on 2016/09/29 by Nick.Whiting
Fixes for project files to prevent mystery pop up from CAPI
Change 3145663 on 2016/09/29 by Keli.Hlodversson
PSVR: Make sure the camera orientation returned from GetTrackingSensorProperties points in the right direction.
Change 3145670 on 2016/09/29 by Keli.Hlodversson
For some reason the orientation of the Oculus tracking sensor is reported as pointing backwards. This flips it around to face front
Change 3145687 on 2016/09/29 by Chad.Taylor
VR splash screen support
[CL 3146243 by Nick Whiting in Main branch]
2016-09-30 01:16:13 -04:00
if ( bEmitMobileMultiView & & GSupportsMobileMultiView & & TypeEnum = = GL_VERTEX_SHADER )
{
AppendCString ( GlslCode , " \n \n " ) ;
AppendCString ( GlslCode , " layout(num_views = 2) in; \n " ) ;
AppendCString ( GlslCode , " \n \n " ) ;
}
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 3383462)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3292174 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- Linux toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292193 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- ThirdParty libs compiled with new toolchain with wasm support
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292215 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and wbegl2 support
- emscripten toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292222 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm support
- ENGINE changes (c# & cpp files)
#jira UEPLAT-1437 Switch [to] web assembly
Change 3292223 on 2017/02/08 by Nick.Shin
HTML5 merge ThirdParty lib build scripts from Dev-Platform to Dev-Mobile
Change 3292228 on 2017/02/08 by Nick.Shin
HTML5 emscripten: webgl support
- webgl patches
- and a lot of UE4 patches to package HTML5 on LINUX
- mostly from mozilla's jukka -- thx jukka!
#jira UEPLAT-828 (4.16) Support ES3 / WebGL2 in HTML5
Change 3292285 on 2017/02/08 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- Windows toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3293994 on 2017/02/09 by Nick.Shin
HTML5 emscripten: wasm and webgl2 support
- OSX toolchain
#jira UEPLAT-1437 Switch [to] web assembly
Change 3294391 on 2017/02/09 by Nick.Shin
HTML5 "black box issues" revisited
- jukka rewrote the window resize handler -- much cleaner and more straightforward
#jira UE-36341 HTML5 - View is incorrectly drawn
#jira UE-32311 Templates on Firefox/Chrome on HTML5 are not full screen during Launch On
Change 3296421 on 2017/02/10 by Jack.Porter
Fix landscape spline segment splitting placing when using streaming levels
Change 3296587 on 2017/02/10 by Jack.Porter
Additional fix for landscape spline segment splitting when using streaming levels
Change 3301241 on 2017/02/14 by Mi.Wang
Fixed DeviceProfileEditor bug for incorrect clamp the Texture Mip LOD size. #jira UE-36237 #rb jack.porter
Change 3301387 on 2017/02/14 by Nick.Shin
HTML5 emscripten: webgl support
- webgl patches from mozilla's jukka
+ hardware instancing
+ glBlitFramebuffer
+ GL AlaphaBlendOperation
#jira UEPLAT-828 (4.16) Support ES3 / WebGL2 in HTML5
Change 3301405 on 2017/02/14 by Nick.Shin
HTML5 plugin fix when blueprint projects are promoted to code projects automatically.
#jira UE-41710 HTML5 - Package Failure - Failed to Produce item ProjectName-OnlineSubsystemNull.bc
Change 3302278 on 2017/02/14 by Omar.Rodriguez
UE-36651: Mac Vulkan Android Projects crash on launch.
* Glslang library has been built for Mac but flag was not updated
* Set GlslangAvailable to true for Mac when building an Android project with vulkan
#jira UE-36651
Change 3302773 on 2017/02/14 by Chris.Babcock
Add a dropdown with some common console commands on Android (contributed by rafortis)
#jira UE-40834
#PR #3143
#ue4
#android
Change 3305604 on 2017/02/16 by Nick.Shin
HTML5 webgl2 shader- turn on: instance static mesh vertex factory
#jira UEPLAT-828 (4.16) Support ES3 / WebGL2 in HTML5
Change 3308154 on 2017/02/16 by Nick.Shin
HTML5 GitHub PR
#jira UE-42019 GitHub 3258 : Added suport for emscripten --pre-js and --post-js option when building for HTML5
Change 3308510 on 2017/02/16 by Nick.Shin
HTML5 webgl2 shader fixes
#jria UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3308971 on 2017/02/17 by Jack.Porter
Fix for landscape painting when height<0 in the Ortho viewports
Change 3309075 on 2017/02/17 by Allan.Bentham
Include static subject meshes when masking out modulated shadow casters.
#jira UE-41581
Change 3309531 on 2017/02/17 by Chris.Babcock
Handle large OBB files in APK
#jira UE-41443
#ue4
#android
Change 3311320 on 2017/02/19 by Dmitriy.Dyomin
Fixed: Particle Cutout Crashes On Mobile Devices That Don't Support Hardware Instancing (Mali-400 GPU)
#jira UE-41970
Change 3311347 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Engine Crashes When Previewing ES3_1 With Material Using World Position Offset (Need Custom Stencil)
#jira UE-41976
Change 3311398 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Landscapes do not render on PowerVR device
#jira UE-35530
Change 3311428 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Exposure Is More Extreme In High-End Mobile Preview Modes
#jira UE-42036
Change 3311448 on 2017/02/20 by Dmitriy.Dyomin
Fixed: Packaged game Crashes on android after entering "Help" command twice
#jira UE-41956
Change 3311587 on 2017/02/20 by Allan.Bentham
ES2 GLSL - Silently swap all uint to ints
#jira UE-41548
Change 3313930 on 2017/02/21 by Allan.Bentham
Print literal uints as ints when generating ES2 code.
#jira UE-41548
Change 3317924 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- Linux toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3317929 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- ThirdParty libs compiled with new toolchain with wasm and webgl2 support
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3317951 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- emscripten toolchain
WARNING: emscripten/incoming/source/include/libc/bit (the file) might need to be deleted first
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318004 on 2017/02/22 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- windows toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318669 on 2017/02/23 by Nick.Shin
HTML5 emscripten: wasm & webgl2 support - RC1
- OSX toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318672 on 2017/02/23 by Nick.Shin
HTML5 webgl2 shader fixes
#jria UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3318819 on 2017/02/23 by Dmitriy.Dyomin
Fixed: Rendering artifacts with bloom on iPhone7 Metal
#jira UE-40978
Change 3319702 on 2017/02/23 by Chris.Babcock
Disable eglSwapInterval since it can cause issues with some drivers
#ue4
#android
Change 3320880 on 2017/02/24 by Dmitriy.Dyomin
Added r.Mobile.TonemapperFilm cvar which can be used to enable/disable filmic tonemapper on mobile, independently from desktop (disabled by default)
#jira UEMOB-195
Change 3321042 on 2017/02/24 by Jack.Porter
Fixed incorrect sizeof in Vulkan pipleine cache
pointed out here: http://coconutlizard.co.uk/blog/ue4/ue4-its-a-size-jim/
#code_review: rolando.caloca
Change 3322383 on 2017/02/24 by Chris.Babcock
Fix issue with ad banner on Android 7.0 devices
#jira UE-42390
#ue4
#android
Change 3322479 on 2017/02/24 by Omar.Rodriguez
UEMOB-199 - WEX: Improved virtual keyboard for Android
* Calculating the area covered by the virtual keyboard
* Calling OnVirtualKeyboardShown and OnVirtualKeyboardHidden events
* Passing the Rect of the area covered by the virtual keyboard OnVirtualKeyboardShown event
#jira UEMOB-199
Change 3323353 on 2017/02/27 by Allan.Bentham
Fix broken mobile scene captures when !mobileHDR and RHINeedsToSwitchVerticalAxis
#jira UE-42191
Change 3323431 on 2017/02/27 by Allan.Bentham
CIS fix
Change 3323687 on 2017/02/27 by Allan.Bentham
Disable GRHINeedsUnatlasedCSMDepthsWorkaround for mobile devices.
#jira UE-42131
Change 3324652 on 2017/02/28 by Dmitriy.Dyomin
Fixed: Canvas elements appear darker on iOS Metal
Change 3324885 on 2017/02/28 by Jack.Porter
Fixed "Minimum iOS Version" setting display name
#jira UE-42270
Change 3324899 on 2017/02/28 by Jack.Porter
GitHub 3063 : removed duplicate gc.MaxObjectsInGame setting in IOSEngine.ini
#jira UE-40018
#3063
Change 3324932 on 2017/02/28 by Jack.Porter
GitHub 3257 : iPhonePackager errors in output log when opening project settings on Windows
#jira UE-41984
#3257
#codereview: Peter.Sauerbrei
Change 3324956 on 2017/02/28 by Jack.Porter
FOpenGLFrontend::GetMaxSamplers incorrect for IOS
#jira UE-42038
#3264
Change 3325478 on 2017/02/28 by Allan.Bentham
PR # 3188 : Fix far distance bug with cascaded shadows on mobile (Metal) and PC mobile preview (Contributed by ufna)
#jira UE-41442
Change 3327300 on 2017/03/01 by Allan.Bentham
PR #3175 : Fixes high quality reflection blending seams (Contributed by kallehamalainen)
#jira UE-41257
Change 3328917 on 2017/03/02 by Nick.Shin
HTML5 project settings
expose ini settings to edtior HTML5 project settings panel
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
#jira UE-41584 Editor locks up when adding an element for HTML5 devices on Mac
#jira UE-41701 Editor freezes when setting browser filepath for inserted element in project settings
Change 3329169 on 2017/03/02 by Allan.Bentham
increase render thread timeout to 1 minute for suntemple / android.
Prevents low end devices timing out during load.
#jira UE-40696
Change 3330849 on 2017/03/02 by Nick.Shin
HTML5 project settings
expose ini settings to edtior HTML5 project settings panel
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
Change 3331078 on 2017/03/03 by Dmitriy.Dyomin
Fixed: Device output log partial lines
integrated from WEX (3250488)
Change 3331112 on 2017/03/03 by Dmitriy.Dyomin
Reduced state setup for slate draw calls (saves about 4ms RT time on mobile)
integrated from WEX (3256584)
Change 3331117 on 2017/03/03 by Dmitriy.Dyomin
Fixed redundant blend state changes in opengl
integrated from WEX (3256586)
Change 3331173 on 2017/03/03 by Dmitriy.Dyomin
Slate pixel shaders will use half precision where possible on mobile
integrated from WEX (3256656)
Change 3332865 on 2017/03/06 by Dmitriy.Dyomin
Better MobileContentScaleFactor defaults for iOS devices
#jira UEMOB-330
Change 3333129 on 2017/03/06 by Peter.Sauerbrei
move to Library/Caches instead of documents for saved files
re-enable iterative deploy on TVOS
#jira UEMOB-284
Change 3334692 on 2017/03/06 by Jack.Porter
Allow r.MobileContentScaleFactor to be changed at runtime on Android
#jira UEMOB-173
Change 3336255 on 2017/03/07 by Nick.Shin
HTML5 project settings
marking SIMD and multithreading as experimental - these do not play nice with WASM builds currently...
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
Change 3337094 on 2017/03/08 by Nick.Shin
HTML5 project settings
marking SIMD and multithreading as experimental - these do not play nice with WASM builds currently...
#jira UE-42331 Project Settings - HTML5 SDK - HTML Device population should be moved to an .ini
Change 3338800 on 2017/03/08 by Chris.Babcock
Update AAR handling to deal with versioning, subproject dependencies for resources, and scope
#jira UE-42677
#ue4
#android
Change 3338813 on 2017/03/08 by Chris.Babcock
Pass build configuration to UPL for access during packaging as $S(Configuration)
#jira UE-42678
#ue4
#android
#ios
Change 3339401 on 2017/03/09 by Alicia.Cano
Android runtime permissions
- Fix for WRITE_EXTERNAL_STORAGE if it is not granted at time of onCreate for non-shipping builds
- Fix for Location Services
- Fix for if target sdk is not set to 23+
#jira UE-38512
#android
#rb: chris.babcock
Change 3340736 on 2017/03/09 by Chris.Babcock
Implement support for new controllers (Xbox Wireless, SteelSeries Stratus XL, PS4) (contributed by TRS-justing)
#jira UE-41965
#PR #3254
#ue4
#android
Change 3340744 on 2017/03/09 by Jack.Porter
Expose Custom Depth to Foliage
#jira UE-6061
Change 3340849 on 2017/03/09 by Dmitriy.Dyomin
Fixed: iOS movie become laggy and crashes when played in iPhone 6/6s.
#jira UE-42351
Change 3341268 on 2017/03/10 by Alicia.Cano
PR #2894: Initial VoiceModuleAndroid support. (Contributed by devbm)
#jira UE-37945
#android
#rb: chris.babcock, jack.porter
Change 3341303 on 2017/03/10 by Allan.Bentham
Remove optimisation that prevents full specular occulsion on mobile.
PR #3186 : Specular can't be blocked on high-end mobile.
#jira UE-41393
Change 3342304 on 2017/03/10 by Alicia.Cano
build fix
#rb: chris.babcock
Change 3343344 on 2017/03/13 by Alicia.Cano
build fix
#rb: chris.babcock
Change 3343591 on 2017/03/13 by Brent.Pease
iOS multiplayer fix part 1. Correct byte ordering.
#jira UE-34875
Change 3343669 on 2017/03/13 by Chris.Babcock
Update carefullyredist script version
#jira UE-42832
Change 3344212 on 2017/03/13 by Will.Fissler
Various compile fixes for Xcode 8.3.
These fixes must also be added to //UE4/Release-4.15.
#jira UE-41313
Change 3344396 on 2017/03/13 by Chris.Babcock
Fix Java 1.5 obsolete warnings
#jira UE-42851
#ue4
#android
Change 3345132 on 2017/03/14 by Will.Fissler
Added ifdef wrapper to check clang version for presentDrawable.
Change 3345336 on 2017/03/14 by Will.Fissler
Moved #if (__clang_major__ > 8) || (__clang_major__ == 8 && __clang_minor__ >= 1) check inside of the presentDrawable method.
Change 3345460 on 2017/03/14 by Will.Fissler
ifdef changes for presentDrawable. The last submission duped the changes, instead of merging. #rb none
Change 3346046 on 2017/03/14 by Will.Fissler
Fixed MetalCommandBuffer.cpp [again] after last submission duped changes instead of merging.
Change 3346367 on 2017/03/14 by Chris.Babcock
Fix issue with GoogleVR ARMv7 libraries included for other architectures in link
#ue4
#android
Change 3347682 on 2017/03/15 by Allan.Bentham
Enable HW sRGB correction with retainer widget's render target.
Use slate's gamma correction for mobile (where no such support exists)
Render retainer box RT content with gamma correction.
#jira UE-40967
Change 3348712 on 2017/03/15 by Nick.Shin
HTML5 - upload to S3
updated to AWS "signature version 4" authentication
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3349254 on 2017/03/16 by Jack.Porter
Fix for crash using the mobile previewer when the LQ lightmap shader permutation is disabled.
#jira UE-42971
Change 3349739 on 2017/03/16 by Nick.Shin
HTML5 - upload to S3
better error message feedback on upload failures
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3349765 on 2017/03/16 by Alicia.Cano
Disable mouseover events in Mobile Previewer
#jira UE-19903
#mobile
#rb: Jack.Porter
Change 3350049 on 2017/03/16 by Nick.Shin
HTML5 - upload to S3
folder in bucket is optional
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3350153 on 2017/03/16 by Nick.Shin
HTML5 - upload to S3
updated S3 public link generator
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3351582 on 2017/03/17 by Will.Fissler
Reverting the attempted fix for Xcode 8.3: Result += " -mcpu=cortex-a9";
Currently we cannot build arm64 for iOS with this change.
Change 3352085 on 2017/03/17 by Alicia.Cano
iOS doesn't honor request to close the virtual keyboard leading to a crash
#jira UE-36447
#ios
#rb:Peter.Sauerbrei
Change 3353313 on 2017/03/19 by Ben.Marsh
Always allow large *.js files in Github.
Change 3354444 on 2017/03/20 by Nick.Shin
HTML5 - upload to S3
to help make it obvious that "upload to S3" checkbox is set/or not -- disable S3 details if checkbox for "uploading to S3" is not set
#jira UE-42525 HTML5 Upload to Amazon S3 fails with Incorrect Configuration error
Change 3355618 on 2017/03/20 by Nick.Shin
HTML5 Save Game System
- ripped out HTML5 code [from Engine's SaveGameSystem.h] and placed it in HTML5Platform.cpp
- cleaned up HTML5PlatformFile.cpp (make it match as clost to linux's version)
- created HTML5's own PlatformFeature & SaveGameSystem files -- and updated HTML5PlatformMisc to make use of the the new HTML5 SaveGame code
#jira UE-42081 Remove heinous HTML5 code from engine
Change 3355621 on 2017/03/20 by Nick.Shin
remove temp debugging code
#jira UE-42081 Remove heinous HTML5 code from engine
Change 3356937 on 2017/03/21 by Chris.Babcock
Add "stat vulkanrhi" to new console dropdown
#jira UE-43149
#ue4
#android
Change 3357652 on 2017/03/21 by Nick.Shin
HTML5 performance speed ups
added "use fixed timestep" setting option for HTML5 builds (this has been separated from Engine - General Settings - Framerate)
- this is slightly different to smooth framerate and fixed framerate - thus, the timestep option was put in the HTML5 specific panel
this option is based on the suggestions by jukka's post:
- https://answers.unrealengine.com/questions/409629/smooth-frame-rate-and-use-fixed-frame-rate-should.html
however, using this option will make the player "run faster" on (for example) thirdperson blueprint template -- but, it has no effect on other (for example) zen garden...
#jira UE-30214 - Implement a warning message for fps settings
Change 3360415 on 2017/03/23 by Allan.Bentham
Fix crash that occurs when ES3.1 preview is used with r.MobileHDR32bppMode modes.
Change 3360418 on 2017/03/23 by Allan.Bentham
Disable filmic tonemapper if r.MobileHDR32bppMode is in use.
#jira UE-40913
Change 3360557 on 2017/03/23 by Allan.Bentham
Better fix for mobile CSM shadow flickering (UE-42131), now works for PC OpenGL based mobile preview.
#jira UE-42131
Change 3362258 on 2017/03/23 by Dmitriy.Dyomin
Fixed: Canvas texture element gamma issues on iOS Metal
Change 3362321 on 2017/03/24 by Dmitriy.Dyomin
GitHub 3173 : MaterialAO support for mobile rendering path (contributed by kallehamalainen)
#3173
Change 3363550 on 2017/03/24 by Alicia.Cano
build fix for devices < Android 5.0
#jira UE-43299
#android
#rb: chris.babcock
Change 3363687 on 2017/03/24 by Chris.Babcock
Fix Android password hiding in input dialog
#jira WEX-5159
#ue4
#android
Change 3365280 on 2017/03/27 by Dmitriy.Dyomin
Fix for GL_EXT_shader_framebuffer_fetch on Zenfone5. Use UE_EXT_shader_framebuffer_fetch define on all devices to enable extension
Change 3365291 on 2017/03/27 by Dmitriy.Dyomin
Copied form WEX CL# 3308653
Fixed: Enabling shader cache causes crash on NVIDIA Shield
#jira UE-41639
Change 3365293 on 2017/03/27 by Dmitriy.Dyomin
GitHub 3411 : Fix crash in patching utils mount method (contributed by nverenik)
#jira UE-43247
#3411
Change 3365340 on 2017/03/27 by Dmitriy.Dyomin
Fixed: Moving sublevel in world composition browser does not appear in Undo History
#jira UE-35535
Change 3365564 on 2017/03/27 by Allan.Bentham
SkyLightComponent now serializes IrradianceMap SH values.
clicking Recapture sky button in mobile preview switches back to SM4/5 to update captures.
Skylights that are dirty from load will trigger reflection capture update once shaders are rebuilt.
#jira UE-42436
Change 3366282 on 2017/03/27 by Nick.Shin
remove dead links
these files to not exist anywhere in the make-3.81 subfolders
#UDN-354501
#jira none
Change 3366306 on 2017/03/27 by Nick.Shin
HTML5 - disable multi-threading for wasm
#jira UE-43219 - HTML5 disable multi-threading for wasm
Change 3366307 on 2017/03/27 by Nick.Shin
HTML5 packaging Shipping builds
big cleanup / additions to *gz file support for amazon s3
* both, uploading to s3
* and allowing s3 to host the games there
#jira UE-43002 HTML5 in Shipping fails downloading symbols files
#jria UE-43001 HTML5 Shipping Projects fail looking for compressed files when "Compress files during shipping packaging" is not selected.
Change 3367385 on 2017/03/28 by Allan.Bentham
Display skylight serialization warning only when cooking for mobile platforms.
#jira UE-42436
Change 3368583 on 2017/03/28 by Chris.Babcock
Expose JAVA_HOME setting in Android SDK project settings on Mac
#jira UE-43418
#ue4
#android
Change 3368803 on 2017/03/28 by Chris.Babcock
Fix features requested in manifest for "Daydream and Cardboard" mode
#jira UE-43314
#ue4
#android
Change 3369087 on 2017/03/28 by Jack.Porter
Changed tooltip and added supported devices in paretheses for Android Mobile Deferred / ES31+AEP
#jira UE-42438
Change 3369372 on 2017/03/29 by Allan.Bentham
Fix disappearing meshes when r.mobile.allowdistancefieldshadows is disabled.
#jira UE-43366
Change 3369381 on 2017/03/29 by Jack.Porter
Show warnings when mobile shader permutations required for rendering are disbaled
Made FReadOnlyCVARCache a singleton and added mobile CVars, used for MobileBasePassRendering.
#jira UE-43050
Change 3369430 on 2017/03/29 by Allan.Bentham
fix CIS build
Change 3369740 on 2017/03/29 by Allan.Bentham
Added Android option to enable builds with hidden symbol visbility by default. (bBuildWithHiddenSymbolVisibility)
Android links with -gc-sections to remove unused code/data
Add JNI_METHOD for java accessible native functions, fixed up existing JNI functions to use macro.
Add support for map file generation with android.
Add 'bBuildWithHiddenSymbolVisibility' to AndroidPlatform.HasDefaultBuildConfig()
bBuildWithHiddenSymbolVisibility defaults to false in BaseEngine.ini
#jira UEMOB-168
Change 3369975 on 2017/03/29 by Nick.Shin
HTML5 - AWS S3 shareable link for shipping builds corrected
#jira UE-43379 Amazon S3 Shareable link does not generate correct filepath.
Change 3369998 on 2017/03/29 by Nick.Shin
HTML5 python build scripts
PR:
https://github.com/Mozilla-Games/UnrealEngine/commit/1cb836d43c3015c6ca0fdd039072bb6c5c273db3
#jira none
Change 3370214 on 2017/03/29 by Nick.Shin
HTML5 - default bUseFixedTimeStep to false...
#jira UE-43380 - Default HTML5 gamespeed is faster than equivalent platforms
Change 3370762 on 2017/03/29 by Chris.Babcock
Fixes to new keyboard for Android
- Ensure the local scope ScreenRect passed into OnVirtualKeyboardShown in AndroidJNI is captured by value instead of by reference.
- Moved ShowVirtualKeyboardInput's bKeyboardShowing early-out checks into the UI thread task. This allows the keyboard to continue showing when changing focus between multiple EditableTextBox widgets.
#ue4
#android
Change 3371344 on 2017/03/30 by Jack.Porter
Fixed issue where Vulkan screenshot R/B channels were reversed on Android
#jira UE-43479
Change 3372926 on 2017/03/30 by Peter.Sauerbrei
start the process of sunsetting 32-bit and GLES2 on iOS
#jira UE-42266
Change 3372970 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- windows toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3372989 on 2017/03/30 by Peter.Sauerbrei
fix for Xcode 8.3 build with 32-bit
Change 3373007 on 2017/03/30 by Peter.Sauerbrei
fix for crash when online subsystem is disabled on IOS
Change 3373108 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- emscripten toolchain
WARNING: emscripten/incoming/source/include/libc/bit (the file) might need to be deleted first
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3373163 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- OSX toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3373169 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
license file updated
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rnx
Change 3373287 on 2017/03/30 by Nick.Shin
HTML5 - 1.36.11 emscripten - remove old SDK
#jira none
#rnx
Change 3373289 on 2017/03/30 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- Linux toolchain
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3373595 on 2017/03/30 by Chris.Babcock
Reenable GooglePlay for ARM64 now that it doesn't crash
#jira UE-36198
#ue4
#android
Change 3373606 on 2017/03/30 by Chris.Babcock
Submitting Allan's shelved EXT_shader_framebuffer_fetch fix
#ue4
#android
Change 3375456 on 2017/03/31 by Chris.Babcock
Add missing keycodes for Android keyboard (@ and #)
#jira WEX-5777
#ue4
#android
Change 3376309 on 2017/04/03 by Allan.Bentham
Fix overflow issues with mobile DoF.
Change 3377041 on 2017/04/03 by Will.Fissler
Adding Testbed content for PlatformShowcase.
Change 3377582 on 2017/04/03 by Alicia.Cano
adding back in GET_ACCOUNTS permission as it is required for Reset Achievements
#jira: UE-43265
#android
#rb: Chris.Babcock
Change 3377643 on 2017/04/03 by Peter.Sauerbrei
fix for memory leak in MallocBinned
#jira UE-43008
Change 3378033 on 2017/04/04 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- ThirdParty libs compiled with new toolchain with wasm and webgl2 support
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
#rn
Change 3378034 on 2017/04/04 by Nick.Shin
HTML5 - 1.37.9 emscripten: wasm & webgl2 support
- ThirdParty build scripts
#jira UEMOB-263 Switch [to] web assembly
#jira UEMOB-201 Support ES3 / WebGL2 in HTML5
Change 3378035 on 2017/04/04 by Nick.Shin
HTML5 - Update GameX template to make it work with trunk Emscripten
PR
https://github.com/Mozilla-Games/UnrealEngine/commit/dc2b26f452948f8ee07178bc3e8742af80d8919a#commitcomment-21454978
#jira none
#rn
Change 3378044 on 2017/04/04 by Nick.Shin
HTML5 harfbuzz - double checking recompiled with NO multithreading
wasm currently does not support pthreads
*** THIS IS STILL WIP ***
checking in to match 3rd party libs compiled configuration
#jira UE-28588 - Build HarfBuzz for HTML5
#rnx
Change 3378264 on 2017/04/04 by Allan.Bentham
Fix crash when using consolas font on android sdk 24
#jira UE-43464
Change 3379097 on 2017/04/04 by Nick.Shin
CIS HTML5 build warning fix
#jria none
#rnx
Change 3379333 on 2017/04/04 by Chris.Babcock
Prevent inserting extra permissions into manifest multiple times
#jira UE-43583
#ue4
#android
Change 3380870 on 2017/04/05 by Chris.Babcock
Fix merge issue
Change 3380898 on 2017/04/05 by Chris.Babcock
Fixed again
Change 3381443 on 2017/04/05 by Chris.Babcock
Fix for GearVR non-unity build
#ue4
#android
Change 3381941 on 2017/04/05 by Chris.Babcock
Fix HTTPChunkInstaller texture format checks and missing #define warning
#jira UE-43706
#ue4
#android
Change 3382056 on 2017/04/05 by Chris.Babcock
Updates to Android AARs needed for Facebook plugin
Change 3382097 on 2017/04/05 by Chris.Babcock
Disable java console cmd receiver only in shipping builds
#jira UE-43710
#ue4
#android
Change 3382497 on 2017/04/06 by Allan.Bentham
Fix Fortnite Cooked Server crashes when joining game from lobby.
#jira UE-43695
Change 3383227 on 2017/04/06 by Will.Fissler
Reverted case sensitive change, from yesterday, and implemented a pragma instead.
#jira UE-41313
[CL 3383473 by Jack Porter in Main branch]
2017-04-06 16:13:17 -04:00
if ( Capabilities . bRequiresUEShaderFramebufferFetchDef & & TypeEnum = = GL_FRAGMENT_SHADER )
{
// Some devices (Zenfone5) support GL_EXT_shader_framebuffer_fetch but do not define GL_EXT_shader_framebuffer_fetch in GLSL compiler
// We can't define anything with GL_, so we use UE_EXT_shader_framebuffer_fetch to enable frame buffer fetch
AppendCString ( GlslCode , " #define UE_EXT_shader_framebuffer_fetch 1 \n " ) ;
}
2016-02-19 13:49:13 -05:00
if ( Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_Android )
{
// Temporary patch to remove #extension GL_OES_standard_derivaties if not supported
if ( Capabilities . bSupportsStandardDerivativesExtension )
{
const ANSICHAR * FoundPointer = FCStringAnsi : : Strstr ( GlslCodeOriginal . GetData ( ) , " #extension GL_OES_standard_derivatives " ) ;
if ( FoundPointer ! = nullptr )
{
// Replace the extension enable with dFdx, dFdy, and fwidth definitions so shader will compile.
// Currently SimpleElementPixelShader.usf is the most likely place this will come from for mobile
// as it is used for distance field text rendering (GammaDistanceFieldMain) so use a constant
// for the texture step rate of 1/512. This will not work for other use cases.
ReplaceCString ( GlslCodeOriginal , " #extension GL_OES_standard_derivatives : enable " ,
" #define dFdx(a) (0.001953125) \n "
" #define dFdy(a) (0.001953125) \n "
" #define fwidth(a) (0.00390625) \n " ) ;
}
}
2016-03-16 21:16:51 -04:00
if ( IsES2Platform ( Capabilities . MaxRHIShaderPlatform ) & & ! bES31 )
2016-02-19 13:49:13 -05:00
{
Copying //UE4/Release-Staging-4.15 to //UE4/Dev-Main (Source: //UE4/Release-4.15 @ 3278667)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3278667 on 2017/01/31 by Chris.Wood
Added extra context to crash analytics and crash reports in the Editor.
[UE-41306] - Add context to crash analytics and crash reports (with Editor user activity)
When a Slate tab becomes active or foregrounded, we take its LayoutIdentity, Label and Content Widget Type and generate a string from all three. This gives context for what the user was doing. The string is set as the UserActivity and passed to MTBF analytics, crash analytics and crash reporter.
Also added filter to the UserActivity tracking system that defaults to Game mode to preserve previous behavior. Editor now switches it to Editor mode and starts setting the activity in this mode.
#jira UE-41306
Change 3278637 on 2017/01/30 by Dmitriy.Dyomin
Fixed: iOS Device displays textures darker than in Editor
#jira UE-41298
Change 3278566 on 2017/01/30 by Jack.Porter
Fix #WITH_EDITOR in InstancedStaticMesh.cpp
#jira UE-41292
Change 3278195 on 2017/01/30 by Alexis.Matte
Fix the re-import skeletal mesh regression, where all material disapear.
#jira UE-41294
Change 3278173 on 2017/01/30 by Frank.Fella
PlatformMediaSource - Don't allow the user to nest platform media sources, and also fail validation on nested platform media sources just in case they are set outside of the cusomization UI.
#Jira UE-40779
Change 3278156 on 2017/01/30 by Josh.Adams
- Adding the missed #include line for IsWindowsServer()
#jira UE-41304
Change 3278088 on 2017/01/30 by Mike.Beach
Mirroring CL 3249423 from Dev-BP.
Fix to keep placeholder classes from being needlessly created (when the object they represent already exists) - instead, attempt to lookup and find the existing import objects (which used to be set, but could be cleared during async loading by FLinkerManager::DissociateImportsAndForcedExports()).
#jira OR-34038
Change 3278036 on 2017/01/30 by Mike.Beach
Mirroring CL 3277671 from Dev-BP.
Refactoring FBlueprintCompilerCppBackend::SortNodesInUberGraphExecutionGroup() a bit. Catching cases that weren't acounted for - detecting cyclical logic now when we've pulled a node/statement out of order, and other nodes need to fall through to that logic (not relying on a goto).
#jira UE-41188, UE-41189, UE-41186, UE-41037
Change 3277974 on 2017/01/30 by Josh.Adams
- Hopeful workaround for COM crash in HandleGameExplorerIntegration function
#jira UE-41080
Change 3277951 on 2017/01/30 by Ori.Cohen
Fix access violation in physx.
#JIRA ODIN-5199
Change 3277773 on 2017/01/30 by Jamie.Dale
Fixing crash that could occur with null meta-data
#jira UE-41271
Change 3277549 on 2017/01/30 by Max.Chen
Sequencer: Back out changelist 3276452 because it breaks other uses of the time snapping interval in the settings.
#jira UE-41009
Change 3277510 on 2017/01/30 by Jamie.Dale
Fixed localization sometimes having incorrect keys in cooked builds
Merged CL# 3276233 and CL# 3277273.
#jira UE-41271
Change 3277500 on 2017/01/30 by Michael.Trepka
Added -Wno-undefined-var-template on Mac to work around an issue with compiling UHT in Xcode 8.3
#jira UE-41225
Change 3277421 on 2017/01/30 by Arciel.Rekman
TestPAL: delete unused test (UE-36984)
#jira UE-36984
(Edigrating CL 3267568 from Dev-Platform to Release-4.15)
Change 3277410 on 2017/01/30 by Jeff.Fisher
UE-41152 more non-unity include fixes.
-Matthew Griffin showed me how to run this locally, so I was able to locally reproduce the errors and this fixed them (the previous fixes were insufficient rather than incorrect).
#jira UE-41152
Change 3277230 on 2017/01/30 by Jack.Porter
Fixed issue with static lighting for Foliage and Instanced Static Meshes where shadows on instances in LOD levels other than LOD 0 was incorrect.
#jira UE-39884
Change 3277178 on 2017/01/30 by Allan.Bentham
enable FORCE_FLOATS with iOS metal shaders when full precision material setting is set.
#jira UE-41253
Change 3277134 on 2017/01/30 by Matthew.Griffin
Fixed NonUnity compile issues
Change 3276503 on 2017/01/28 by Jeff.Fisher
UE-41152 more non-unity include fixes.
#jira UE-41152
Change 3276452 on 2017/01/28 by Max.Chen
Sequencer: Changed the time snapping interval in the toolbar ui so that it no longer additionally updates the sequencer setting. The value used in the sequencer settings is only used to initialize a new level sequence.
#jira UE-41009
Change 3276130 on 2017/01/27 by Phillip.Kavan
[UE-40894] Fix data loss issues with non-native Blueprint classes that override inherited component default values from a nativized parent Blueprint class hierarchy.
- Mirrored from //UE4/Dev-Blueprints (CL# 3276109).
#jira UE-40894
Change 3276013 on 2017/01/27 by Lina.Halper
- fix issue with additive pose preview applying twice
#jira: UE-41216
#code review:Thomas.Sarkanen
Change 3275990 on 2017/01/27 by Mitchell.Wilson
Disabling 'Used with skeletal mesh' on some materials to resolve errors and warnings.
#jira UE-40736
Change 3275885 on 2017/01/27 by Matt.Kuhlenschmidt
Fixed missing slate style assets log warning
#jira UE-41148
Change 3275805 on 2017/01/27 by Ori.Cohen
Fix incorrect warning about moving simulated bodies during tick group. The existing code would warn if you had a kinematic that was SimulationDisabled (i.e. meaning it's not in the sim scene).
#JIRA UE-37270
Change 3275797 on 2017/01/27 by Shaun.Kime
In some cases, it was possible to create a SRetainerWidget that does not have a valid scene. This would cause the recorded scene index to be mismatched with the actual rendering index when played back in the future.
#jira OR-34919
Change 3275681 on 2017/01/27 by Lina.Halper
Dupe change of CL 3273803, 3274129, 3274700
#jira: UE-41163
#code review:Daniel.Wright, Martin.Wilson
Change 3275624 on 2017/01/27 by Benn.Gallagher
Fixed crash when creating destructible meshes from static meshes with null material interface entries
#jira UE-38998
Change 3275601 on 2017/01/27 by Matt.Kuhlenschmidt
Fix crash when a kdop collision generation fails and there are existing collision meshes selected. We no longer clear out unrelated collision primitives when kdop generation fails.
#jira UE-41220
Change 3275545 on 2017/01/27 by Chris.Bunner
Added flag for retreiving debug materials from GetUsedMaterials calls on rendering components.
#jira UE-40482
Change 3275522 on 2017/01/27 by Max.Chen
Sequencer: Call modify before setting row indices
#jira UE-40682
Change 3275518 on 2017/01/27 by Max.Chen
Sequencer: Switch to static pointer to fix crash when tearing down curve editor.
#jira UE-41105
Change 3275475 on 2017/01/27 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
-Fixing non-unity missing includes.
#jira UE-41152
Change 3275387 on 2017/01/27 by Steve.Robb
Prevent engine reinstancing on hot reload.
Copied from CL# 3265490.
#jira UE-40765
Change 3275279 on 2017/01/27 by Josh.Adams
- Redoing change 3274305 in 4.15
#jira UE-40451
Change 3275233 on 2017/01/27 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix share play initialization logic.
#jira UE-41209
Change 3275227 on 2017/01/27 by Alex.Delesky
Duplicating the fix for UE-40791 from Dev-Editor CL 3265714 - The ForceFeedback thumbnail's Play and Stop icons will now render correctly, and will only be visible while an effect is playing or when the cursor hovers over the icon.
#jira UE-40791
Change 3275057 on 2017/01/27 by Peter.Sauerbrei
fix for crash after changing the metal shader version
#jira ue-41183
Change 3275031 on 2017/01/27 by Matthew.Griffin
Added architecture hash to path for Linux generated includes, didn't realize that this was part of the path.
Change 3275005 on 2017/01/27 by Matthew.Griffin
Re-enabled Cache of cooked platform data during DerivedDataCache commandlet
Moved caching DDC of non-host platform data behind an option so it's not done for Installed Build by default
Removed other platforms from Launcher Samples and changed 'CookPlatforms' to 'DDCPlatforms' so that its purpose is more clear
Change 3274828 on 2017/01/27 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
-Fixing non-unity missing include.
#jira UE-41152
Change 3274799 on 2017/01/27 by Arciel.Rekman
Fix for installed Linux cross-toolchain (UE-40392).
- Pull request #3111 contributed by rubu.
#jira UE-40392
Change 3274756 on 2017/01/27 by Max.Chen
Sequencer: Update the parent guid with the new possessable guid. This fixes a bug where the parent guid isn't set properly and so folders aren't retained when assign actors and running fix up actor references.
#jira UE-41010
Change 3274755 on 2017/01/27 by Max.Chen
Sequencer: Call notify movie scene data changed when creating a camera instead of marking the instances as needing a refresh.
#jira UE-41019
Change 3274597 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
-Fixing monolithic include warning.
#jira UE-41152
Change 3274564 on 2017/01/26 by Mike.Beach
Following the example of other nodes with external dependencies (like UK2Node_SwitchEnum), and making sure the struct is preloaded before we use it (the struct needs to have a valid size).
#jira UE-41073
Change 3274535 on 2017/01/26 by Mike.Beach
Removed ensure that was blocking a wrapper function call to a non-nativized function lib from being generated (while not optimal, the generated code works).
#jira UE-41190
Change 3274512 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3255506 Copyright update for google
-note most of the changes went in with the previous 3 androidvr-devvr change integrations, these two were not otherwise changed.
-just incrementing the year
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273588
Change 3274511 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3243495 Adding GoogleVRTransition2D plugin to handle VR->2D->VR transition for daydream app.
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273586
Change 3274510 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3243494 Update GoogleVR plugin to v1.2.
-Upgrade GVR NDK to 1.10.0
-Add easy to use GoogleVR input component, including controller component for daydream and a gaze based reticle component for cardboard.
-Make the GoogleVRSplash rendered with depth.
-Add built in arm model support in GoogleVR controller plugin.
-Add "Use ExternalFilesDir for UE4Game files" option in AndroidRuntimeSetting to support saving game progress without requesting EXTERNAL_STORAGE permission in Andoird 23+
-Remove the "Package for Daydream" option in AndroidRuntimeSetting.
-Fix the crash on iOS9 when GoogleVR plugin is enabled.(udn/325432)
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273585
Change 3274509 on 2017/01/26 by Jeff.Fisher
UE-41152 Merge Improved Daydream Support from Google
Merging cl 3243493 Adding AndroidPermission plugin to handle runtime permission request and check for android api 23 and above.
-The plugin works for both daydream and normal Android application.
-For Daydream app, it need to work with GoogleVRTransition2D plugin.
//depot/Partners/Google/AndroidVR-DevVR/Engine/...
to //UE4/Release-4.15/Engine/...
#jira UE-41152
#review-3273583
Change 3274485 on 2017/01/26 by Chris.Babcock
Fix handling of numbers in textedit (allow decimals)
#jira UE-41198
#ue4
#android
Change 3274457 on 2017/01/26 by Mike.Beach
Fix to CIS warning (fallout from CL 3274362)
#jira UE-41072, UE-41071, UE-41070
Change 3274445 on 2017/01/26 by Arciel.Rekman
Proper fix for deploying to Linux (UE-40023).
- The logic is: if the base path (local to PC, one we are replacing) *ends* with a separator, add the separator to the dest path (one we're mapping to). Previous fix had a last minute change that inverted it.
#jira UE-40023
Change 3274428 on 2017/01/26 by Brian.Karis
Fixed bloom flickering on high contrast HDR edges when r.TemporalAACatmullRom was enabled.
#jira UE-41138
Change 3274362 on 2017/01/26 by Mike.Beach
Restructuring how we apply individual (exclusive) Blueprint nativization flags...
1. Explicitly flagging Blueprints as dependencies for nativization (and communicating that to the user)
2. Now applying nativization flag to authoritative config for all dependencies on save
3. Flagging new dependencies (parent or interface) as needing nativization (when required)
4. Ignore bDontNativizeDataOnlyBP setting when nativization mode is set to explicit
#jira UE-41072, UE-41071, UE-41070
Change 3274349 on 2017/01/26 by Yannick.Lange
VREditor: Fix Laser not hidden on MotionControllers with docked Menu/UI Panels
#jira UE-40070
Change 3274301 on 2017/01/26 by Chris.Bunner
Added missing material expression tooltips/keywords for new nodes based on 4.15 preview feeback.
#jira UE-41193
Change 3274254 on 2017/01/26 by Ryan.Gerleve
Fix for IsInGameThread() checks that could fail in debug builds while recording a replay with tick.DoAsyncEndOfFrameTasks and demo.ClientRecordAsyncEndOfFrame enabled.
#jira UE-39911
Change 3274121 on 2017/01/26 by Josh.Adams
- Fixed build error with landscape gizmo
#jira UE-41177
Change 3274114 on 2017/01/26 by Dan.Oconnor
Updating all references before calling post edit - prevents objects from being destroyed or created while updating references
#jira UE-40121
Change 3273971 on 2017/01/26 by Chris.Bunner
Update material instance permutations when we have already set param/switch overrides, then only change the base properties.
#jira UE-39754
Change 3273842 on 2017/01/26 by Daniel.Wright
Attempt to remove instructions from code features only present in the forward renderer, so we are showing users their graph cost. Allows shader complexity in forward to sortof match deferred.
#jira UE-41167
Change 3273750 on 2017/01/26 by Jeff.Fisher
UE-41137 //UE4/Main: Step 'Compile Ocean (Win32/Win64)' - 2 Errors - SteamVRController.cpp
-Fixing build break for Ocean. Maybe they are using an older compiler?
#jira UE-31137
Change 3273602 on 2017/01/26 by Michael.Trepka
Fix for UE-41146
#jira UE-41146
Change 3273506 on 2017/01/26 by Maciej.Mroz
#jira ODIN-4991, UE-41035
merged cl3273497 from Dev-Blueprints branch
Nativization:
EX_AddMulticastDelegate - generated code calls TMulticastScriptDelegate::AddUniqe instead of TMulticastScriptDelegate::Add.
Change 3273464 on 2017/01/26 by Mitchell.Wilson
Resaving asset to resolve warning.
#jira UE-41008
Change 3273413 on 2017/01/26 by Marc.Audy
Fix crash when audio device fails to initialize
#author Andrew.Grant
#jira UE-41143
Change 3273391 on 2017/01/26 by Jack.Porter
Fixed ensure encountered when using the Copy/Paste sub-tool in sculpt mode
#jira UE-40480
Change 3273343 on 2017/01/26 by Matt.Kuhlenschmidt
Resetting the preview on a material now properly clears the thumbnail which could have a stale references that was impossible to fix.
Fixed on asset exibiting this problem
#jira UE-40300
Change 3273243 on 2017/01/26 by Jamie.Dale
Speculative fix for an issue where User Defined Enum display names were being lost on upgrade to 4.15
#jira UE-41130
Change 3273235 on 2017/01/26 by Graeme.Thornton
Fix for some memory being left hanging around when loading bulk data asyncronously under certain circumstances
#jira UE-37815
Change 3273225 on 2017/01/26 by Ben.Cosh
This fixes an issue with actor details component selection causing actor selection to get out of sync across undo operations
#Jira UE-40753 - [CrashReport] UE4Editor_LevelEditor!FLevelEditorActionCallbacks::Paste_CanExecute() [leveleditoractions.cpp:1602]
#Proj Engine
Change 3273224 on 2017/01/26 by Josh.Stoddard
Increment FDerivedDataPhysXCooker to force recook of PhysX data
#jira UE-39791#rb none #lockdown james.golding
Change 3273201 on 2017/01/26 by Jack.Porter
Fixed problem where UpdateInstanceTransform blueprint function was not updating bounds correctly
#jira UE-41126
Change 3273122 on 2017/01/26 by Graeme.Thornton
Added some extra log output for situations where a compressed block in an archive doesn't have a valid header
#jira UE-38767
Change 3273116 on 2017/01/26 by Benn.Gallagher
Fix for crash generating clothing skinning data due to coplanar check triggering a check() on small triangles
#jira UE-41112
Change 3273077 on 2017/01/26 by Thomas.Sarkanen
Allowed LODs other than LOD0 to have screen sizes greater than 1
#jira UE-41125 - Static mesh LODs other than LOD0 cannot be set to screen sizes greater than 1
Change 3273061 on 2017/01/26 by Matthew.Griffin
Disabled code caching data for all platforms until we can figure out why it's filling up DDC cache
Change 3272938 on 2017/01/25 by Arciel.Rekman
Fix launch on a remote Linux machine (UE-38691).
- Device id is now used to get target platform, so should match it exactly.
#jira UE-38691
Change 3272816 on 2017/01/25 by Ben.Marsh
Fix VS2017 being displayed as 'Visual Studio 15' in the Windows target settings panel.
Change 3272590 on 2017/01/25 by Daniel.Wright
Workaround for "error X3067: 'GetObjectWorldPosition': ambiguous function call" which happens when FMaterialPixelParameters and FMaterialVertexParameters have the same number of floats with the HLSL compiler. Function overload resolution appears to identify types based on how many floats / ints / etc they contain.
#jira UE-41099
Change 3272419 on 2017/01/25 by Arciel.Rekman
Linux: fix remote deploying of a packaged build (UE-40023).
#jira UE-40023
Change 3272355 on 2017/01/25 by Daniel.Wright
Prevent a large shadow depth bias due to low resolution from causing near plane clipping
#jira UE-40873
Change 3272196 on 2017/01/25 by tim.gautier
Updating TM-UMG content for UI visibility
#jira UE-29618
Change 3272114 on 2017/01/25 by Michael.Dupuis
#jira UE-29817 : backout of CL from Dev-Editor fixing this jira
Change 3271953 on 2017/01/25 by Michael.Trepka
Attempt to fix UE-40956 - Rare crash occurs in CoreAudio in Vehicle Game on Mac when quitting.
#jira UE-40956
Change 3271945 on 2017/01/25 by Olaf.Piesche
Replicating CL 3271564
#jira UE-40980
#udn 325525
Fix uniform buffers for mesh particles; these should really be on the mesh collector, so allocating them as a one frame resource is safe.
Change 3271883 on 2017/01/25 by Daniel.Wright
UWorld::AreAlwaysLoadedLevelsLoaded takes into account bShouldBeVisible. Fixes reflection captures not getting uploaded when there's an invisible always loaded level, which is supposed to be invisible.
#jira UE-40724
Change 3271686 on 2017/01/25 by Marc.Audy
Properly fix line endings in all cases when installing a c++ feature pack
#jira UE-40939
Change 3271631 on 2017/01/25 by Ryan.Gerleve
In UEngine::CommitMapChange, rename the new ULevelStreaming objects so that the main world is their outer. This is more correct in general, and will cause those levels to be added to the correct level collection during FlushLevelStreaming.
Also use MoveTemp to add the streaming level list to the main world, so that the fake world will no longer reference them.
#jira UE-40524
Change 3271611 on 2017/01/25 by Allan.Bentham
Ensure texture's buildsettings are not marked as streamable if the target platform does not support streaming.
#jira UE-40927
Change 3271504 on 2017/01/25 by tim.gautier
Updated default values of UMG_Behavior
#jira UE-29618
Change 3271491 on 2017/01/25 by Luke.Thatcher
[PLATFORM] [PS4] [!] Fix bug in AT9 audio cooking.
- Maximum mono bitrate is 144kbps, but 100% quality mono tracks were selecting 168kbps, causing the AT9 tool to fail.
- Also bumped AT9 engine format to recook potentially broken audio data.
#jira UE-40761
Change 3271428 on 2017/01/25 by Chris.Bunner
Bug in previous CL.
#jira UE-39953
Change 3271413 on 2017/01/25 by Lina.Halper
#DUPEFIX of CL 3270776
#jira: UE-41082
Change 3271403 on 2017/01/25 by tim.gautier
Adjusted UMG_Blur intensity settings.
#jira UE-29618
# rb cristina.riveron
Change 3271300 on 2017/01/25 by Luke.Thatcher
[PLATFORM] [PS4] [^] Merge (as edit) fix for NpToolkit2 initialization in 6CPU mode, from //UE4/Dev-Platform to //UE4/Release-4.15 (Original CL 3271215)
- Default thread affinity in the InitParams structure is 7 CPUs.
- Using this affinity in games with 6CPU mode set in param.sfo causes init() to fail.
- We now select 6 or 7 CPU affinity based on what sceKernelGetCpumode reports at runtime.
#jira UE-41079
Change 3271197 on 2017/01/25 by Andrew.Rodham
Sequencer: Ensure initial evaluation range correctly sets exclusive lower boundary for subsequent evaluations
- This prevents us from erroneously evaluating the initial time twice as part of swept evaluations)
#jira UE-40758
Change 3270386 on 2017/01/24 by tim.gautier
Updated UMG_Blur to include second Low-Quality asset
#jira UE-29618
Change 3270267 on 2017/01/24 by Arciel.Rekman
Linux: fix not being able to run a packaged build (UE-37016, UE-39648).
- Fixed expansion of paths with spaces in the bootstrap script.
- Also increased the timeout since large projects can sometimes get killed on start.
- Also killed spammy console output.
#jira UE-37016
Change 3270203 on 2017/01/24 by Chris.Babcock
Fixed issue with Mac and Linux install and uninstall scripts if ANDROID_HOME not set (contributed by nathansizemore)
#jira UE-41042
#PR #3160
#ue4
#android
Change 3270037 on 2017/01/24 by tim.gautier
Checking in UMG_Blur for UMG test coverage
#jira UE-29618
Change 3269829 on 2017/01/24 by matt.barnes
Adding content for Material Attribute testing
#jira UE-29618
Change 3269700 on 2017/01/24 by Josh.Stoddard
force relink of PhysX libs
#jira UE-39791 #rb ori.cohen #lockdown james.golding
Change 3269621 on 2017/01/24 by Allan.Bentham
Make sure 'intrinsic_GetHDR32bppEncodeModeES2()' reports no encoding mode when mobileHDR == false
#jira UE-41023
Change 3269503 on 2017/01/24 by Josh.Stoddard
Integrate PhysX change 3268008 from //UE4/Dev-Physics-Upgrade
#jira UE-39791 #lockdown james.golding #rb josh.stoddard
Change 3269359 on 2017/01/24 by Jack.Porter
Fix for Web browser widget crash on Android when packaged for Distribution
#jira UE-39451
Change 3269316 on 2017/01/24 by Thomas.Sarkanen
Fixed non-unity issues with last change for UE-40945
#jira UE-40945 - Crash trying to import facial animations
Change 3269047 on 2017/01/23 by Yannick.Lange
VREditor: Fix VREditor Laser not hidden on MotionControllers with docked Menu/UI Panels
#jira UE-40070
Change 3268824 on 2017/01/23 by Rolando.Caloca
UE4.15 - Fix for right eye showing black on VR
#jira UE-40900
Change 3268752 on 2017/01/23 by Nick.Whiting
Fix for assertion for binding an MSAA'd scene color with a non-MSAA'd texture.
#jira UE-39304
Change 3268722 on 2017/01/23 by Olaf.Piesche
Replicating 3256329
#jira UE-38615
Removing unnecessary assert that fires when exporting emitters.
Change 3268220 on 2017/01/23 by Nick.Whiting
Adding in a new CVar (vr.SteamVR.UsePostPresentHandoff), which defaults to 0. When set to 0, we do NOT use the SteamVR PostPresentHandoff, which costs some performance GPU time. When 1, we use the call, and get some extra GPU performance. However, this call is NOT safe for scenes that have frame-behind GPU work, like SceneCapture components and Widget Components
#jira UE-40570
Change 3268180 on 2017/01/23 by Marc.Audy
PendingKill Actors will no longer register their components when the level is being loaded
#jira UE-40505
Change 3268076 on 2017/01/23 by Matthew.Griffin
Changed Mac SunTemple cook jobs to use Sample Editor to avoid errors about mismatched files
#jira UE-40806
Change 3267997 on 2017/01/23 by Mitchell.Wilson
Increased lightmap size on spheres in volumes example to resolve issue with lighting.
Corrected misspelling in multiple examples and one UMG asset.
#jira UE-40890 UE-40926 UE-40882 UE-40928 UE-40825 UE-40819
Change 3267892 on 2017/01/23 by Mitchell.Wilson
Removed preview mesh on M_Bird_Inst that was referencing a static mesh that was removed or renamed to resolve warnings in CIS.
#jira UE-40300
Change 3267866 on 2017/01/23 by Thomas.Sarkanen
Prevented crash when using Facial Animation importer
Also hid the feature behind an experiemental setting flag, as it is not ready for users yet.
#jira UE-40945 - Crash trying to import facial animations
Change 3267834 on 2017/01/23 by Nick.Darnell
An addition to 3255247, this also adds input processing incrementing for double click, and preview mouse down.
#jira UE-40313
Change 3267785 on 2017/01/23 by Marc.Audy
Put proper line endings when modifying template files when installing feature pack
#jira UE-40939
Change 3267761 on 2017/01/23 by Mitchell.Wilson
Moved left landscape mesh slightly to hide a seam that can be seen when using VR and looking over the railing.
#jira UE-40916
Change 3267632 on 2017/01/23 by Jurre.deBaare
Marker syncs not working correctly in Blend Spaces
#fix Ensure that SampleIndexWithMarkers is serialized
#JIRA UE-40975
[CL 3287682 by Matthew Griffin in Main branch]
2017-02-06 10:41:38 -05:00
if ( Capabilities . bSupportsRenderTargetFormat_PF_FloatRGBA | | ! IsMobileHDR ( ) )
2016-02-19 13:49:13 -05:00
{
AppendCString ( GlslCode , " #define HDR_32BPP_ENCODE_MODE 0.0 \n " ) ;
}
else
{
if ( ! Capabilities . bSupportsShaderFramebufferFetch )
{
// mosaic
AppendCString ( GlslCode , " #define HDR_32BPP_ENCODE_MODE 1.0 \n " ) ;
}
else
{
AppendCString ( GlslCode , " #define HDR_32BPP_ENCODE_MODE 2.0 \n " ) ;
}
}
Copying //UE4/Release-Staging-4.11 to //UE4/Main (Source: //UE4/Release-Staging-4.11 @ 2941426, //UE4/Release-4.11 @ 2927265)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2910079 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28293 Reworded some Sentences
Change 2910157 on 2016/03/15 by Taizyd.Korambayil
#jira UE-28240 Rebuilt Lighting for Sanctuary
Change 2910317 on 2016/03/15 by Ben.Marsh
Fix crash trying to print out a message explaining that you need to install the Visual Studio 2015 toolchain, if the Visual Studio 2015 toolchain is not installed!
Change 2910425 on 2016/03/15 by Ori.Cohen
Fix crash and incorrect behavior when setting physical material on a welded body.
#JIRA UE-28399
#rb Marc.Audy
Change 2910525 on 2016/03/15 by Ori.Cohen
Fix player capsule not spawning at the right place due to float precision issues.
#JIRA UE-28438
#rb Zak.Middleton
Change 2910595 on 2016/03/15 by Chris.Babcock
Fixed issue with missing event location paired with IE_Pressed if IE_DoubleClick generated
#jira UE-28051
#ue4
#codereview Marc.Audy
Change 2911442 on 2016/03/16 by Andrew.Rodham
Sequencer: Fixed frame grabbers where hardware mapped surfaces to memory of a different stride
#jira UE-28434
Change 2911596 on 2016/03/16 by andrew.porter
Test content for blueprint vertex painting
#jira UE-24473
Change 2911860 on 2016/03/16 by Jamie.Dale
Allowed SViewport to (once again) be able to use non-pre-multiplied alpha blending
SViewport now has an PreMultipliedAlpha argument (default true), which can control whether to use pre-multiplied alpha when blending is enabled (blending is disabled by default). Note: This is a change in behavior from 4.10, as non-pre-multiplied alpha blending used to be the default, but pre-multiplied alpha blending better supports the pipeline used through Slate.
This change also cleans up the use of bool parameters in the FSlateDrawElement::MakeX functions to control the render behavior, instead favoring use of advanced ESlateDrawEffect flags.
API Breaking Changes
- FSlateDrawElement::MakeGradient no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInGammaCorrect bool, instead pass ESlateDrawEffect::NoGamma as part of InDrawEffects to disable gamma correction.
- FSlateDrawElement::MakeViewport no longer takes a bInAllowBlending bool, instead pass ESlateDrawEffect::NoBlending as part of InDrawEffects to disable blending.
#jira UE-26797
Change 2912345 on 2016/03/16 by Olaf.Piesche
Removing the check that causes UE-28441, duplicating beam type data module from highest LOD in Cascade causes crash. The beam data module is the only one that explicitly checks to make sure it's always shared across LOD levels; there's no obvious reasons why duplicating beam data modules shouldn't be possible.
#codereview simon.tovey
#jira UE-28441
Change 2912526 on 2016/03/16 by Steve.Robb
Fix uninitialized variables.
#codereview robert.manuszewski
#jira UE-28391
Change 2913114 on 2016/03/17 by Steve.Robb
Fixed some private properties which caused UHT errors.
#codereview robert.manuszewski
#jira UE-28059
Change 2913295 on 2016/03/17 by Richard.TalbotWatkin
Replicated from Dev-Editor CL 2913224
Disallow assets from being deleted if PIE is active. This prevents various troubles which can occur when PIE is referencing asset objects.
#jira UE-12387 - [CrashReport] Crash when deleting assets needed for template
#RB Nick.Darnell, Frank.Fella
Change 2913310 on 2016/03/17 by Nick.Shin
merging from //UE4/Dev-Platform to //UE4/Release-4.11
--- original commit CL: #2913300 message ---
corrected VS 2015 websocket lib to look at the right offset
it is currently a high risk change to just update the libwebsocket wholesale for release-4.11.
this change is the most minimum invasive change with a lot of deep analysis (details will be put in jira: # UEPLAT-1221).
this fix will also be pushed up to release-4.11
#jira UE-22166 - HTML5 Cook on the fly will launch and then close browser
#jira UE-22513 - HTTP Network File System crashes randomly.
#jira UE-28003 - Fail to QuickLaunch HTML5 through UnrealFrontEnd
Change 2913593 on 2016/03/17 by Mark.Satterthwaite
For non-debug builds silence the warning about no deth/stencil when shader writes to depth in MetalRHI - the RHI implementation will create a temporary D/S buffer to cope but really this needs to be properly addressed elsewhere.
#jira UE-28491
Change 2913655 on 2016/03/17 by Taizyd.Korambayil
#jira UE-28492 Rebuilt Lighting For the Samples Listed
Change 2914025 on 2016/03/17 by Olaf.Piesche
Make sure ST primitives are added to NST draw list if in shader complexity mode
#codereview simon.tovey
#jira UE-28471
Change 2914027 on 2016/03/17 by Nick.Shin
[CL 2941462 by Ben Marsh in Main branch]
2016-04-12 17:04:39 -04:00
if ( Capabilities . bRequiresARMShaderFramebufferFetchDepthStencilUndef & & TypeEnum = = GL_FRAGMENT_SHADER )
{
// This is to avoid a bug in Adreno drivers that define GL_ARM_shader_framebuffer_fetch_depth_stencil even when device does not support this extension
// OpenGL ES 3.1 V@127.0 (GIT@I1af360237c)
AppendCString ( GlslCode , " #undef GL_ARM_shader_framebuffer_fetch_depth_stencil \n " ) ;
}
2016-02-19 13:49:13 -05:00
// This #define fixes compiler errors on Android (which doesn't seem to support textureCubeLodEXT)
if ( Capabilities . bUseES30ShadingLanguage )
{
if ( TypeEnum = = GL_VERTEX_SHADER )
{
AppendCString ( GlslCode ,
" #define texture2D texture \n "
" #define texture2DProj textureProj \n "
" #define texture2DLod textureLod \n "
2016-03-16 21:16:51 -04:00
" #define texture2DLodEXT textureLod \n "
2016-02-19 13:49:13 -05:00
" #define texture2DProjLod textureProjLod \n "
" #define textureCube texture \n "
" #define textureCubeLod textureLod \n "
2016-03-16 21:16:51 -04:00
" #define textureCubeLodEXT textureLod \n "
" #define texture3D texture \n "
" #define texture3DProj textureProj \n "
" #define texture3DLod textureLod \n " ) ;
2016-02-19 13:49:13 -05:00
ReplaceCString ( GlslCodeOriginal , " attribute " , " in " ) ;
ReplaceCString ( GlslCodeOriginal , " varying " , " out " ) ;
2016-03-16 21:16:51 -04:00
}
2016-02-19 13:49:13 -05:00
else if ( TypeEnum = = GL_FRAGMENT_SHADER )
{
// #extension directives have to come before any non-# directives. Because
// we add non-# stuff below and the #extension directives
// get added to the incoming shader source we move any # directives
// to be right after the #version to ensure they are always correct.
MoveHashLines ( GlslCode , GlslCodeOriginal ) ;
AppendCString ( GlslCode ,
" #define texture2D texture \n "
" #define texture2DProj textureProj \n "
" #define texture2DLod textureLod \n "
" #define texture2DLodEXT textureLod \n "
" #define texture2DProjLod textureProjLod \n "
" #define textureCube texture \n "
" #define textureCubeLod textureLod \n "
" #define textureCubeLodEXT textureLod \n "
2016-03-16 21:16:51 -04:00
" #define texture3D texture \n "
" #define texture3DProj textureProj \n "
" #define texture3DLod textureLod \n "
" #define texture3DProjLod textureProjLod \n "
2016-02-19 13:49:13 -05:00
" \n "
" #define gl_FragColor out_FragColor \n "
" #ifdef EXT_shader_framebuffer_fetch_enabled \n "
" inout mediump vec4 out_FragColor; \n "
" #else \n "
" out mediump vec4 out_FragColor; \n "
" #endif \n " ) ;
ReplaceCString ( GlslCodeOriginal , " varying " , " in " ) ;
}
}
2016-03-16 21:16:51 -04:00
else
2016-02-19 13:49:13 -05:00
{
if ( TypeEnum = = GL_FRAGMENT_SHADER )
{
// Apply #defines to deal with incompatible sections of code
if ( Capabilities . bRequiresDontEmitPrecisionForTextureSamplers )
{
AppendCString ( GlslCode ,
" #define DONTEMITSAMPLERDEFAULTPRECISION \n " ) ;
}
if ( ! Capabilities . bSupportsShaderTextureLod | | ! Capabilities . bSupportsShaderTextureCubeLod )
{
AppendCString ( GlslCode ,
" #define DONTEMITEXTENSIONSHADERTEXTURELODENABLE \n "
" #define texture2DLodEXT(a, b, c) texture2D(a, b) \n "
" #define textureCubeLodEXT(a, b, c) textureCube(a, b) \n " ) ;
}
else if ( Capabilities . bRequiresTextureCubeLodEXTToTextureCubeLodDefine )
{
AppendCString ( GlslCode ,
" #define textureCubeLodEXT textureCubeLod \n " ) ;
}
// Deal with gl_FragCoord using one of the varying vectors and shader possibly exceeding the limit
if ( Capabilities . bRequiresGLFragCoordVaryingLimitHack )
{
if ( CStringCountOccurances ( GlslCodeOriginal , " vec4 var_TEXCOORD " ) > = Capabilities . MaxVaryingVectors )
{
// It is likely gl_FragCoord is used for mosaic color output so use an appropriate constant
ReplaceCString ( GlslCodeOriginal , " gl_FragCoord.xy " , " vec2(400.5,240.5) " ) ;
}
}
if ( Capabilities . bRequiresTexture2DPrecisionHack )
{
2016-03-16 21:16:51 -04:00
AppendCString ( GlslCode , " #define TEXCOORDPRECISIONWORKAROUND \n " ) ;
2016-02-19 13:49:13 -05:00
}
}
}
}
}
else if ( Capabilities . TargetPlatform = = EOpenGLShaderTargetPlatform : : OGLSTP_HTML5 )
{
// HTML5 use case is much simpler, use a separate chunk of code from android.
if ( ! Capabilities . bSupportsShaderTextureLod )
{
AppendCString ( GlslCode ,
" #define DONTEMITEXTENSIONSHADERTEXTURELODENABLE \n "
" #define texture2DLodEXT(a, b, c) texture2D(a, b) \n "
" #define textureCubeLodEXT(a, b, c) textureCube(a, b) \n " ) ;
}
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3169859)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3134663 on 2016/09/21 by Chris.Bunner
Merging Dev-MaterialLayers to Dev-Rendering, CL 3134208. Initial material attribute extensibility changes.
#jira UE-34347
Change 3142292 on 2016/09/27 by Rolando.Caloca
DR - hlslcc - Fix for warning X3206: implicit truncation of vector type causing error
#jira UE-31438
Change 3143557 on 2016/09/28 by Rolando.Caloca
DR - Back out changelist 3142292
Change 3145354 on 2016/09/29 by Benjamin.Hyder
Updating Tm-ContactShadows
Change 3154832 on 2016/10/07 by Rolando.Caloca
DR - vk - Fix crash on framebuffers with missing textures
Change 3154838 on 2016/10/07 by Rolando.Caloca
DR - vk - Enable clip distance
Change 3154840 on 2016/10/07 by Rolando.Caloca
DR - Remove branch per codereview
Change 3155118 on 2016/10/07 by Rolando.Caloca
DR - vk - Compute pipeline fixes
Change 3155129 on 2016/10/07 by Rolando.Caloca
DR - Added draw events for reflection captures
Change 3155167 on 2016/10/07 by Rolando.Caloca
DR - Use shader clear for platforms that can't use viewport or scissor
Change 3155168 on 2016/10/07 by Rolando.Caloca
DR - vk - Added submit gpu
- Some fixes for Geometry and Compute
Change 3155595 on 2016/10/07 by Rolando.Caloca
DR - vk - Use new render pass system
Change 3155720 on 2016/10/07 by Rolando.Caloca
DR - vk - static analysis fix
Change 3155732 on 2016/10/07 by Rolando.Caloca
DR - Fix clears for platforms that can't use viewports, excluderects or scissor on clear
Change 3156787 on 2016/10/10 by Rolando.Caloca
DR - Fix mem leaks
Change 3156805 on 2016/10/10 by Rolando.Caloca
DR - Improve check msg per licensee
Change 3156815 on 2016/10/10 by Rolando.Caloca
DR - Fix infinite recursion
Change 3157041 on 2016/10/10 by Rolando.Caloca
DR - vk - Fix key access from multiple threads
Change 3158253 on 2016/10/11 by Rolando.Caloca
DR - Fix comment
#jira UE-37128
PR #2852
Change 3158606 on 2016/10/11 by Rolando.Caloca
DR - vk - Accessors
Change 3160418 on 2016/10/12 by Daniel.Wright
Lightmap textures are now outered to UMapBuildDataRegistry so that the UMapBuildDataRegistry can be moved in the content browser
Change 3160644 on 2016/10/12 by Arne.Schober
DR - [UE-32613] - OpenGL used to have custom code in the compiler to modify the source so that the same data and matricies can be used as DirectX, unfortunately that causes precission problem. Fortunately there is an extension available (glClipControl) which enables DirectX behaviour in OpenGL and it is widely supported. We only tested Linux and Windows and therfore only default enable on those platforms.
Change 3161219 on 2016/10/13 by Luke.Thatcher
[RENDERING] [!] Fix incorrect shader used in GPU Benchmark causing crash in OpenGL.
Change 3161838 on 2016/10/13 by Daniel.Wright
Fixed level getting added to the dirty list twice when legacy lightmaps are present
Change 3161884 on 2016/10/13 by Arne.Schober
DR - Fix Mac and DCC build
Change 3162206 on 2016/10/13 by Chris.Bunner
Merging Dev-MaterialLayers to Dev-Rendering, CL 3161593:
Material expressions; Trig, fast-trig, saturate, round, truncate, pre-skinned normal.
Added CustomEyeTangent to material attributes.
Resolved some hard-coded attribute typing and other minor fixes.
Change 3162491 on 2016/10/13 by Chris.Bunner
Merging Dev-MaterialLayers to Dev-Rendering, CL 3162397:
More fixed type-casting on material attributes.
Swapped compiler::forcecast booleans to flags (and fixed a regression).
Change 3163266 on 2016/10/14 by Daniel.Wright
Fixed sublevels with legacy lighting data being added to the dirty packages list redundantly
Change 3163524 on 2016/10/14 by Mark.Satterthwaite
Bring over specific changes from Unicorn branch that increases the size of shader optional data so that it is considerably more useful.
Change 3163529 on 2016/10/14 by Mark.Satterthwaite
Move the Metal shader source code and compilation path into the newly enlarged shader optional data.
Change 3163553 on 2016/10/14 by Mark.Satterthwaite
Speculative fix for FORT-31590 also seen by a licensee - the Metal command buffer handler will be called from a dispatch queue thread that won't be registered with the stats system.
#jira FORT-31590
Change 3163562 on 2016/10/14 by Mark.Satterthwaite
Tidy up and extend the Metal debugging options:
- Added rhi.Metal.BufferScribble which when enabled will fill freed buffer regions with 0xCD to help identify any areas where we are writing to a buffer while it is still being processed on the GPU.
- Added rhi.Metal.BufferZeroFill which will zero-fill newly allocated buffer regions before any other data is read/written. Useful for catching cases where we might be reading uninitialised memory.
- Added rhi.Metal.ResourcePurgeOnDelete which will purge the backing store of resources prior to releasing them back to the system or the respective pool. This will make any use-after-free conditions much more likely.
- Added rhi.Metal.ResourceDeferDeleteNumFrames to defer releasing resources to the system or the resource pool by the specified number of frames (in addition to the current policy of waiting for the current end of frame & command-buffer completion). Useful for tracking down resource lifetime errors.
- Fixed a number of bugs related to the modifications to vertex stream handling and addition of the SetShaderBytes API.
- Track the start & end of FRingBuffer ranges - it appeared that the ring-buffer usage was invalid but it was in fact only my assumptions about the range that needed to be scribbled for rhi.Metal.BufferScribble. There is still the possibility that command-buffers that are implicitly parallelised by the driver may cause the ring-buffer range tracking to go awry - but with our data dependencies and the separation of the async. compute context I don't believe this is likely.
- Fix up the "nometalv2" flag so that we can disable the features only available on iOS/tvOS-10/macOS-10.12 on newer devices to save having to reboot all the time.
- Fixed the flickering geometry when enabling rhi.Metal.RuntimeDebugLevel=4 which breaks render passes into separate command-buffers - the occlusion query was waiting on the wrong command buffer in this case.
Change 3163752 on 2016/10/14 by Mark.Satterthwaite
Add missing parenthesis to fix compile error on iOS.
Change 3164151 on 2016/10/16 by Benjamin.Hyder
Submitting TM-AutoLOD level to QAGame
#jira UE-29618
Change 3164190 on 2016/10/16 by Uriel.Doyon
Materials now hold texture streaming data in the form of (UV scale X UV channel) for each texture.
This data can be disabled through "r.Streaming.UseMaterialData"
Defined a common framework in MeshComponent for texture streaming, used by both StaticMeshes and SkeletalMeshes.
Simplified component interface for using the texture streaming build framework.
Removed intermediate texture streaming build data from the static mesh components.
Fixed shader compilation errors with the decals (from merge with main).
Change 3164636 on 2016/10/17 by Rolando.Caloca
DR - vk - Fix validation spam
Change 3164679 on 2016/10/17 by Arne.Schober
DR - [OR-28457] Part1, Scene View Refactoring - Removed Previous VewMatrices from SceneInfo and pass in Previous and Current ViewMatrices into Uniform Buffer creation to uniform UseCase for Shadows and CustomDepth, Fixed a Bug in Shadows with help of Daniel where the SceneView was copied unnecessary copied again. Also simplified the code in that area.
Change 3164705 on 2016/10/17 by Daniel.Wright
When new levels are loaded, only the Indirect Lighting Cache Allocations intersecting the level's light probes are updated to minimize hitches. This optimization requires a lighting build to compute PrecomputedLightVolume bounds.
Change 3164834 on 2016/10/17 by Daniel.Wright
Support directional light dynamic shadows in any channel with forward shading, which can happen with multiple shadow casting stationary directional lights (even though only the lighting of one will appear)
Change 3164870 on 2016/10/17 by Arne.Schober
DR - [OR-28457] Part2, Custom Depth Jitter - Allowed to overwite the viewconstant buffer in the custom depth pass. There ia also a new Project Setting available. The default constructor of the ContextDataType has been explicitly deleted to enforce compile errors when the templated code like the StaticMeshDrawList accidently tries to create a context without ViewUniformBuffer.
Change 3164949 on 2016/10/17 by Rolando.Caloca
DR - vk - First version of pooled occlusion queries
Change 3165100 on 2016/10/17 by Rolando.Caloca
DR - vk - Added driver version for Nvidia. AMD doesn't have one yet.
Change 3165160 on 2016/10/17 by Rolando.Caloca
DR - vk - Fix for queries not ready
Change 3165230 on 2016/10/17 by Rolando.Caloca
DR - vk - More fixes for occlusion queries
Change 3165839 on 2016/10/18 by Rolando.Caloca
DR - hlslcc - Fix default parameters getting wrong values
Change 3166029 on 2016/10/18 by Rolando.Caloca
DR - Switch some clears to DrawClearQuad()
Change 3166066 on 2016/10/18 by Mark.Satterthwaite
Update ShaderVersion due to CL #3163524
Change 3166067 on 2016/10/18 by Mark.Satterthwaite
Update Mac hlslcc for RCO's 3165839.
Change 3166370 on 2016/10/18 by Brian.Karis
Improved hair AA
Change 3166389 on 2016/10/18 by Uriel.Doyon
Fixed lightmap having bigger resolutions than the engine can handle
#jira UE-34737
#review-3166193 @daniel.wright
Change 3166495 on 2016/10/18 by Rolando.Caloca
DR - vk - Fix occlusion queries
Change 3166516 on 2016/10/18 by Arne.Schober
DR - Fix shaderbuild issue
Change 3166650 on 2016/10/18 by Rolando.Caloca
DR - vk - Enable GRHISupportsFirstInstance
Change 3166799 on 2016/10/18 by Arne.Schober
DR - [OR-28508] - The velocity Rendering pass was missing the adjustment for the PDO
Change 3167855 on 2016/10/19 by Rolando.Caloca
DR - vk - Implemented texture streaming
Change 3168365 on 2016/10/19 by Rolando.Caloca
DR - Fix static analysis
Change 3168405 on 2016/10/19 by Mark.Satterthwaite
Fix the optional shader data changes from Unicorn to prevent FindOptionalData from erronesouly testing against the trailing optional data size, which can match the tag for optional data entries if you are unlucky.
#jira UE-37489
Change 3169467 on 2016/10/20 by Arne.Schober
DR - UE-28039 - Fixed flickering cached shadows on dynamic objects: Adding preshadows whose depths are cached so that GatherDynamicMeshElements will still happen, which is necessary for preshadow receiver stenciling.
Change 3169478 on 2016/10/20 by Arne.Schober
DR - UE-28039 - missing comment
Change 3169845 on 2016/10/20 by Arne.Schober
DR - UE-35937 - readd Merged out check
Change 3169859 on 2016/10/20 by Rolando.Caloca
DR - vk - Stop popping up dialog on every run as the device name in the API doesn't match our driver database
[CL 3170066 by Marcus Wassmer in Main branch]
2016-10-20 20:09:22 -04:00
if ( FOpenGL : : SupportsClipControl ( ) )
{
AppendCString ( GlslCode , " #define HLSLCC_DX11ClipSpace 0 \n " ) ;
}
else
{
AppendCString ( GlslCode , " #define HLSLCC_DX11ClipSpace 1 \n " ) ;
}
// Append the possibly edited shader to the one we will compile.
// This is to make it easier to debug as we can see the whole
// shader source.
AppendCString ( GlslCode , " \n \n " ) ;
AppendCString ( GlslCode , GlslCodeOriginal . GetData ( ) ) ;
2016-02-19 13:49:13 -05:00
}
2014-03-14 14:13:41 -04:00
/**
* Helper for constructing strings of the form XXXXX # # .
* @ param Str - The string to build .
* @ param Offset - Offset into the string at which to set the number .
* @ param Index - Number to set . Must be in the range [ 0 , 100 ) .
*/
static ANSICHAR * SetIndex ( ANSICHAR * Str , int32 Offset , int32 Index )
{
check ( Index > = 0 & & Index < 100 ) ;
Str + = Offset ;
if ( Index > = 10 )
{
* Str + + = ' 0 ' + ( ANSICHAR ) ( Index / 10 ) ;
}
* Str + + = ' 0 ' + ( ANSICHAR ) ( Index % 10 ) ;
* Str = ' \0 ' ;
return Str ;
}
FVertexShaderRHIRef FOpenGLDynamicRHI : : RHICreateVertexShader ( const TArray < uint8 > & Code )
{
return CompileOpenGLShader < FOpenGLVertexShader > ( Code ) ;
}
FPixelShaderRHIRef FOpenGLDynamicRHI : : RHICreatePixelShader ( const TArray < uint8 > & Code )
{
return CompileOpenGLShader < FOpenGLPixelShader > ( Code ) ;
}
FGeometryShaderRHIRef FOpenGLDynamicRHI : : RHICreateGeometryShader ( const TArray < uint8 > & Code )
{
return CompileOpenGLShader < FOpenGLGeometryShader > ( Code ) ;
}
FHullShaderRHIRef FOpenGLDynamicRHI : : RHICreateHullShader ( const TArray < uint8 > & Code )
{
2014-07-24 05:23:50 -04:00
check ( GMaxRHIFeatureLevel > = ERHIFeatureLevel : : SM5 ) ;
2014-03-14 14:13:41 -04:00
return CompileOpenGLShader < FOpenGLHullShader > ( Code ) ;
}
FDomainShaderRHIRef FOpenGLDynamicRHI : : RHICreateDomainShader ( const TArray < uint8 > & Code )
{
2014-07-24 05:23:50 -04:00
check ( GMaxRHIFeatureLevel > = ERHIFeatureLevel : : SM5 ) ;
2014-03-14 14:13:41 -04:00
return CompileOpenGLShader < FOpenGLDomainShader > ( Code ) ;
}
FGeometryShaderRHIRef FOpenGLDynamicRHI : : RHICreateGeometryShaderWithStreamOutput ( const TArray < uint8 > & Code , const FStreamOutElementList & ElementList , uint32 NumStrides , const uint32 * Strides , int32 RasterizedStream )
{
UE_LOG ( LogRHI , Fatal , TEXT ( " OpenGL Render path does not support stream output! " ) ) ;
return NULL ;
}
static void MarkShaderParameterCachesDirty ( FOpenGLShaderParameterCache * ShaderParameters , bool UpdateCompute )
{
2014-07-15 13:25:14 -04:00
const int32 StageStart = UpdateCompute ? CrossCompiler : : SHADER_STAGE_COMPUTE : CrossCompiler : : SHADER_STAGE_VERTEX ;
const int32 StageEnd = UpdateCompute ? CrossCompiler : : NUM_SHADER_STAGES : CrossCompiler : : NUM_NON_COMPUTE_SHADER_STAGES ;
2014-03-14 14:13:41 -04:00
for ( int32 Stage = StageStart ; Stage < StageEnd ; + + Stage )
{
ShaderParameters [ Stage ] . MarkAllDirty ( ) ;
}
}
2014-06-05 16:38:54 -04:00
void FOpenGLDynamicRHI : : BindUniformBufferBase ( FOpenGLContextState & ContextState , int32 NumUniformBuffers , FUniformBufferRHIRef * BoundUniformBuffers , uint32 FirstUniformBuffer , bool ForceUpdate )
2014-03-14 14:13:41 -04:00
{
2014-09-18 17:49:40 -04:00
SCOPE_CYCLE_COUNTER_DETAILED ( STAT_OpenGLUniformBindTime ) ;
checkSlow ( IsInRenderingThread ( ) ) ;
2014-03-14 14:13:41 -04:00
for ( int32 BufferIndex = 0 ; BufferIndex < NumUniformBuffers ; + + BufferIndex )
{
2014-06-05 16:38:54 -04:00
GLuint Buffer = 0 ;
2014-04-30 23:51:07 -04:00
uint32 Offset = 0 ;
uint32 Size = ZERO_FILLED_DUMMY_UNIFORM_BUFFER_SIZE ;
2014-03-14 14:13:41 -04:00
int32 BindIndex = FirstUniformBuffer + BufferIndex ;
2014-06-05 16:38:54 -04:00
if ( IsValidRef ( BoundUniformBuffers [ BufferIndex ] ) )
2014-03-14 14:13:41 -04:00
{
2014-06-05 16:38:54 -04:00
FRHIUniformBuffer * UB = BoundUniformBuffers [ BufferIndex ] . GetReference ( ) ;
2014-03-14 14:13:41 -04:00
Buffer = ( ( FOpenGLUniformBuffer * ) UB ) - > Resource ;
2014-04-30 23:51:07 -04:00
Size = ( ( FOpenGLUniformBuffer * ) UB ) - > GetSize ( ) ;
# if SUBALLOCATED_CONSTANT_BUFFER
Offset = ( ( FOpenGLUniformBuffer * ) UB ) - > Offset ;
# endif
2014-03-14 14:13:41 -04:00
}
else
{
if ( PendingState . ZeroFilledDummyUniformBuffer = = 0 )
{
void * ZeroBuffer = FMemory : : Malloc ( ZERO_FILLED_DUMMY_UNIFORM_BUFFER_SIZE ) ;
FMemory : : Memzero ( ZeroBuffer , ZERO_FILLED_DUMMY_UNIFORM_BUFFER_SIZE ) ;
FOpenGL : : GenBuffers ( 1 , & PendingState . ZeroFilledDummyUniformBuffer ) ;
check ( PendingState . ZeroFilledDummyUniformBuffer ! = 0 ) ;
CachedBindUniformBuffer ( ContextState , PendingState . ZeroFilledDummyUniformBuffer ) ;
glBufferData ( GL_UNIFORM_BUFFER , ZERO_FILLED_DUMMY_UNIFORM_BUFFER_SIZE , ZeroBuffer , GL_STATIC_DRAW ) ;
FMemory : : Free ( ZeroBuffer ) ;
IncrementBufferMemory ( GL_UNIFORM_BUFFER , false , ZERO_FILLED_DUMMY_UNIFORM_BUFFER_SIZE ) ;
}
Buffer = PendingState . ZeroFilledDummyUniformBuffer ;
}
2014-06-05 16:38:54 -04:00
if ( ForceUpdate | | ( Buffer ! = 0 & & ContextState . UniformBuffers [ BindIndex ] ! = Buffer ) | | ContextState . UniformBufferOffsets [ BindIndex ] ! = Offset )
2014-03-14 14:13:41 -04:00
{
2014-04-30 23:51:07 -04:00
FOpenGL : : BindBufferRange ( GL_UNIFORM_BUFFER , BindIndex , Buffer , Offset , Size ) ;
2014-03-14 14:13:41 -04:00
ContextState . UniformBuffers [ BindIndex ] = Buffer ;
2014-04-30 23:51:07 -04:00
ContextState . UniformBufferOffsets [ BindIndex ] = Offset ;
ContextState . UniformBufferBound = Buffer ; // yes, calling glBindBufferRange also changes uniform buffer binding.
2014-03-14 14:13:41 -04:00
}
}
}
// ============================================================================================================================
2015-03-27 06:50:17 -04:00
struct FOpenGLUniformName
2015-02-06 11:35:30 -05:00
{
2015-03-27 06:50:17 -04:00
FOpenGLUniformName ( )
{
FMemory : : Memzero ( Buffer ) ;
}
ANSICHAR Buffer [ 10 ] ;
friend bool operator = = ( const FOpenGLUniformName & A , const FOpenGLUniformName & B )
{
return FMemory : : Memcmp ( A . Buffer , B . Buffer , sizeof ( A . Buffer ) ) = = 0 ;
}
friend uint32 GetTypeHash ( const FOpenGLUniformName & Key )
{
return FCrc : : MemCrc32 ( Key . Buffer , sizeof ( Key . Buffer ) ) ;
}
} ;
static TMap < GLuint , TMap < FOpenGLUniformName , int64 > > & GetOpenGLUniformBlockLocations ( )
{
static TMap < GLuint , TMap < FOpenGLUniformName , int64 > > UniformBlockLocations ;
2015-02-06 11:35:30 -05:00
return UniformBlockLocations ;
}
2015-02-09 10:42:57 -05:00
static TMap < GLuint , TMap < int64 , int64 > > & GetOpenGLUniformBlockBindings ( )
2015-02-06 11:35:30 -05:00
{
2015-02-09 10:42:57 -05:00
static TMap < GLuint , TMap < int64 , int64 > > UniformBlockBindings ;
2015-02-06 11:35:30 -05:00
return UniformBlockBindings ;
}
2015-03-27 06:50:17 -04:00
static GLuint GetOpenGLProgramUniformBlockIndex ( GLuint Program , const FOpenGLUniformName & UniformBlockName )
2015-02-06 11:35:30 -05:00
{
2015-03-27 06:50:17 -04:00
TMap < FOpenGLUniformName , int64 > & Locations = GetOpenGLUniformBlockLocations ( ) . FindOrAdd ( Program ) ;
int64 * Location = Locations . Find ( UniformBlockName ) ;
2015-02-06 11:35:30 -05:00
if ( Location )
{
return * Location ;
}
else
{
2015-03-27 06:50:17 -04:00
int64 & Loc = Locations . Emplace ( UniformBlockName ) ;
Loc = ( int64 ) FOpenGL : : GetUniformBlockIndex ( Program , UniformBlockName . Buffer ) ;
2015-02-06 11:35:30 -05:00
return Loc ;
}
}
static void GetOpenGLProgramUniformBlockBinding ( GLuint Program , GLuint UniformBlockIndex , GLuint UniformBlockBinding )
{
2015-02-09 10:42:57 -05:00
TMap < int64 , int64 > & Bindings = GetOpenGLUniformBlockBindings ( ) . FindOrAdd ( Program ) ;
int64 * Bind = static_cast < int64 * > ( Bindings . Find ( UniformBlockIndex ) ) ;
2015-02-06 11:35:30 -05:00
if ( ! Bind )
{
Bind = & ( Bindings . Emplace ( UniformBlockIndex ) ) ;
check ( Bind ) ;
* Bind = - 1 ;
}
check ( Bind ) ;
2015-02-06 19:39:28 -05:00
if ( * Bind ! = static_cast < int64 > ( UniformBlockBinding ) )
2015-02-06 11:35:30 -05:00
{
2015-02-06 19:39:28 -05:00
* Bind = static_cast < int64 > ( UniformBlockBinding ) ;
2015-02-06 11:35:30 -05:00
FOpenGL : : UniformBlockBinding ( Program , UniformBlockIndex , UniformBlockBinding ) ;
}
}
// ============================================================================================================================
2014-03-14 14:13:41 -04:00
class FOpenGLLinkedProgram
{
public :
FOpenGLLinkedProgramConfiguration Config ;
struct FPackedUniformInfo
{
GLint Location ;
uint8 ArrayType ; // OGL_PACKED_ARRAYINDEX_TYPE
uint8 Index ; // OGL_PACKED_INDEX_TYPE
} ;
// Holds information needed per stage regarding packed uniform globals and uniform buffers
struct FStagePackedUniformInfo
{
// Packed Uniform Arrays (regular globals); array elements per precision/type
TArray < FPackedUniformInfo > PackedUniformInfos ;
// Packed Uniform Buffers; outer array is per Uniform Buffer; inner array is per precision/type
TArray < TArray < FPackedUniformInfo > > PackedUniformBufferInfos ;
// Holds the unique ID of the last uniform buffer uploaded to the program; since we don't reuse uniform buffers
// (can't modify existing ones), we use this as a check for dirty/need to mem copy on Mobile
TArray < uint32 > LastEmulatedUniformBufferSet ;
} ;
2014-07-15 13:25:14 -04:00
FStagePackedUniformInfo StagePackedUniformInfo [ CrossCompiler : : NUM_SHADER_STAGES ] ;
2014-03-14 14:13:41 -04:00
GLuint Program ;
2014-04-30 23:51:07 -04:00
bool bUsingTessellation ;
2015-02-06 11:35:30 -05:00
bool bDrawn ;
2014-04-30 23:51:07 -04:00
2014-03-14 14:13:41 -04:00
TBitArray < > TextureStageNeeds ;
TBitArray < > UAVStageNeeds ;
int32 MaxTextureStage ;
2014-09-18 17:49:40 -04:00
TArray < FOpenGLBindlessSamplerInfo > Samplers ;
2014-03-14 14:13:41 -04:00
FOpenGLLinkedProgram ( )
2015-02-06 11:35:30 -05:00
: Program ( 0 ) , bUsingTessellation ( false ) , bDrawn ( false ) , MaxTextureStage ( - 1 )
2014-03-14 14:13:41 -04:00
{
TextureStageNeeds . Init ( false , FOpenGL : : GetMaxCombinedTextureImageUnits ( ) ) ;
UAVStageNeeds . Init ( false , OGL_MAX_COMPUTE_STAGE_UAV_UNITS ) ;
}
~ FOpenGLLinkedProgram ( )
{
check ( Program ) ;
2015-02-06 11:35:30 -05:00
FOpenGL : : DeleteProgramPipelines ( 1 , & Program ) ;
if ( ! FOpenGL : : SupportsSeparateShaderObjects ( ) )
{
GetOpenGLUniformBlockLocations ( ) . Remove ( Program ) ;
GetOpenGLUniformBlockBindings ( ) . Remove ( Program ) ;
}
2014-03-14 14:13:41 -04:00
}
2015-02-06 11:35:30 -05:00
// Rebind the uniform blocks when changing the separable shader pipeline as different stages will have different uniform block arrangements. Does nothing for non-separable GLs.
void VerifyUniformBlockBindings ( int Stage , uint32 FirstUniformBuffer ) ;
2014-03-14 14:13:41 -04:00
void ConfigureShaderStage ( int Stage , uint32 FirstUniformBuffer ) ;
// Make sure GlobalArrays (created from shader reflection) matches our info (from the cross compiler)
2014-07-15 13:25:14 -04:00
static inline void SortPackedUniformInfos ( const TArray < FPackedUniformInfo > & ReflectedUniformInfos , const TArray < CrossCompiler : : FPackedArrayInfo > & PackedGlobalArrays , TArray < FPackedUniformInfo > & OutPackedUniformInfos )
2014-03-14 14:13:41 -04:00
{
check ( OutPackedUniformInfos . Num ( ) = = 0 ) ;
2015-03-17 13:05:49 -04:00
OutPackedUniformInfos . Empty ( PackedGlobalArrays . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
for ( int32 Index = 0 ; Index < PackedGlobalArrays . Num ( ) ; + + Index )
{
auto & PackedArray = PackedGlobalArrays [ Index ] ;
2016-03-11 09:55:03 -05:00
FPackedUniformInfo OutInfo = { - 1 , PackedArray . TypeName , CrossCompiler : : PACKED_TYPEINDEX_MAX } ;
2014-03-14 14:13:41 -04:00
// Find this Global Array in the reflection list
for ( int32 FindIndex = 0 ; FindIndex < ReflectedUniformInfos . Num ( ) ; + + FindIndex )
{
auto & ReflectedInfo = ReflectedUniformInfos [ FindIndex ] ;
if ( ReflectedInfo . ArrayType = = PackedArray . TypeName )
{
2016-03-11 09:55:03 -05:00
OutInfo = ReflectedInfo ;
2014-03-14 14:13:41 -04:00
break ;
}
}
2016-03-11 09:55:03 -05:00
OutPackedUniformInfos . Add ( OutInfo ) ;
2014-03-14 14:13:41 -04:00
}
}
} ;
typedef TMap < FOpenGLLinkedProgramConfiguration , FOpenGLLinkedProgram * > FOpenGLProgramsForReuse ;
static FOpenGLProgramsForReuse & GetOpenGLProgramsCache ( )
{
static FOpenGLProgramsForReuse ProgramsCache ;
return ProgramsCache ;
}
// This short queue preceding released programs cache is here because usually the programs are requested again
// very shortly after they're released, so looking through recently released programs first provides tangible
// performance improvement.
# define LAST_RELEASED_PROGRAMS_CACHE_COUNT 10
static FOpenGLLinkedProgram * StaticLastReleasedPrograms [ LAST_RELEASED_PROGRAMS_CACHE_COUNT ] = { 0 } ;
static int32 StaticLastReleasedProgramsIndex = 0 ;
// ============================================================================================================================
static int32 CountSetBits ( const TBitArray < > & Array )
{
int32 Result = 0 ;
for ( TBitArray < > : : FConstIterator BitIt ( Array ) ; BitIt ; + + BitIt )
{
Result + = BitIt . GetValue ( ) ;
}
return Result ;
}
2015-02-06 11:35:30 -05:00
void FOpenGLLinkedProgram : : VerifyUniformBlockBindings ( int Stage , uint32 FirstUniformBuffer )
{
if ( FOpenGL : : SupportsSeparateShaderObjects ( ) & & FOpenGL : : SupportsUniformBuffers ( ) )
{
2015-03-27 06:50:17 -04:00
FOpenGLUniformName Name ;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3054480)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3045482 on 2016/07/11 by Zabir.Hoque
DX12 Quries need to individually track their syncpoints. Only when resolving a query on the same frame should be stall.
Change 3045929 on 2016/07/12 by Simon.Tovey
Removing some deprecated node types from Niagara
Change 3045951 on 2016/07/12 by Ben.Woodhouse
D3D11 Log detailed live device info on shutdown if the debug layer is enabled (including resource types)
Change 3046019 on 2016/07/12 by Chris.Bunner
Fixed typo in material input name.
#jira UE-5575
Change 3046053 on 2016/07/12 by Rolando.Caloca
DR - Fix GL4 shutdown
#jira UE-32799
Change 3046055 on 2016/07/12 by Rolando.Caloca
DR - vk - Fix NumInstances=0
Change 3046063 on 2016/07/12 by Rolando.Caloca
DR - vk - Added flat to uint layouts per glslang
- Fix bad extension on dumped shaders
Change 3046067 on 2016/07/12 by Rolando.Caloca
DR - vk - Fix check when not using color RT
- Added queue submit & present counters
Change 3046088 on 2016/07/12 by Ben.Woodhouse
Live GPU stats
A non-hierarchical realtime high level GPU profiler with support for cumulative stat recording.
Stats are added with SCOPED_GPU_STAT macros, e.g. SCOPED_GPU_STAT(RHICmdList, Stat_GPU_Distortion)
The bulk of the files in this change are simply instrumentation for the renderer. The core changes are in SceneUtils.cpp/h and D3D11Query.cpp (this is the XB1/DX11X implementation of timestamp RHI queries, which was missing)
Note: this is currently disabled by default. Enable with the cvar r.gpustatsenabled
Tested on PC, XB1, PS4
Change 3046128 on 2016/07/12 by Olaf.Piesche
Max draw distance and fade range for lights, requested by JonL
Change 3046183 on 2016/07/12 by Ben.Woodhouse
PR #2532: Fix SSAO being applied in unlit viewmode (Contributed by nick-penwarden)
Change 3046223 on 2016/07/12 by Luke.Thatcher
Fix Scene Cube Captures. SceneCaptureSource flag on the ViewFamily was not set for cube components.
#jira UE-32345
Change 3046228 on 2016/07/12 by Marc.Olano
Add Voronoi noise to Noise material node.
Four versions with differing speed/quality levels accessed through the Quality value in the material node. Tooltips give estimates of the cost of each.
Also includes spiffy new Rand3DPCG16 and Rand3DPCG32 int3 to int3 hash functions, and a 20% improvement on the computed gradient noise.
Change 3046269 on 2016/07/12 by Rolando.Caloca
DR - Skip flush on RHIDiscardRenderTargets and only use it on platforms that need it (ie OpenGL)
Change 3046294 on 2016/07/12 by Rolando.Caloca
DR - Fix static analyisis
warning C6326: Potential comparison of a constant with another constant.
Change 3046295 on 2016/07/12 by Rolando.Caloca
DR - Fix the previous fix
Change 3046731 on 2016/07/12 by Marc.Olano
Fix typo in shader random number constant: repeated extra digit made it too big.
Change 3046796 on 2016/07/12 by Uriel.Doyon
The texture streaming manager now keeps a set of all valid textures.
This is used to prevent from indirecting deleted memory upon SetTexturesRemovedTimestamp.
#jira UE-33048
Change 3046800 on 2016/07/12 by Rolando.Caloca
DR - vk - Added create image & renderpass dump
Change 3046845 on 2016/07/12 by John.Billon
Forgot to apply MaxGPUSkinBones Cvar access changes in a few locations.
Change 3047023 on 2016/07/12 by Olaf.Piesche
Niagara:
-a bit of cleanup
-now store and double buffer attributes individually, eliminating unnecessary copy of unused attributes
-removed FNiagaraConstantMap, replaced with an instance of FNiagaraConstants
-some code simplification
-removed some deprecated structs and code used only by old content
Change 3047052 on 2016/07/12 by Zabir.Hoque
Unshelved from pending changelist '3044062':
PR #2588: Adding blend mode BLEND_AlphaComposite (4.12) (Contributed by moritz-wundke)
Change 3047727 on 2016/07/13 by Luke.Thatcher
Fix Scene Capture Components only updating every other frame.
#jira UE-32581
Change 3047919 on 2016/07/13 by Olaf.Piesche
CMask decode, use in deferred decals, for PS4
Change 3047921 on 2016/07/13 by Uriel.Doyon
"Build Texture Streaming" will now remove duplicate error msg when computing texcoord scales.
Also, several texture messages are packed on the same line if they relate to the same material.
Change 3047952 on 2016/07/13 by Rolando.Caloca
DR - vk - Initial prep pass for separating combined images & samplers
Change 3048648 on 2016/07/13 by Marcus.Wassmer
Fix rare GPU hang when asynctexture reallocs would overlap with EndFrame
Change 3049058 on 2016/07/13 by Rolando.Caloca
DR - vk - timestamps
Change 3049725 on 2016/07/14 by Marcus.Wassmer
Fix autosdk bug where not having a platform directory sync'd at all would break manual SDK detection
Change 3049742 on 2016/07/14 by Rolando.Caloca
DR - Fix warning
Change 3049902 on 2016/07/14 by Rolando.Caloca
DR - Fix typo
Change 3050345 on 2016/07/14 by Olaf.Piesche
UE-23925
Clamping noise tessellation for beams at a high but sensible value; also making sure during beam index buffer building that we never get over 2^16 indices; this is a bit hokey, but there are so many variables that can influence triangle/index count, that this is the only way to be sure (short of nuking the entire site from orbit).
Change 3050409 on 2016/07/14 by Olaf.Piesche
Replicating 3049049; missing break and check for active particles when resolving a source point to avoid a potential crash
Change 3050809 on 2016/07/14 by Rolando.Caloca
DR - vk - Remove redundant validation layers
Change 3051319 on 2016/07/15 by Ben.Woodhouse
Fix for world space camera position not being exposed in decal pixel shaders; also fixes decal lighting missing spec and reflection
The fix was to calculate ResolvedView at the top of the shader. Previously this was not initialized
#jira UE-31976
Change 3051692 on 2016/07/15 by Rolando.Caloca
DR - vk - Enable RHI thread by default
Change 3052103 on 2016/07/15 by Uriel.Doyon
Disabled depth offset in depth only pixel shaders when using debug view shaders (to prevent Z fighting).
#jira UE-32765
Change 3052140 on 2016/07/15 by Rolando.Caloca
DR - vk - Fix shader snafu
Change 3052495 on 2016/07/15 by Rolando.Caloca
DR - Fix for Win32 compile
#jira UE-33349
Change 3052536 on 2016/07/15 by Uriel.Doyon
Fixed texture streaming overbudget warning when using per texture bias.
[CL 3054554 by Gil Gribb in Main branch]
2016-07-18 17:17:08 -04:00
Name . Buffer [ 0 ] = CrossCompiler : : ShaderStageIndexToTypeName ( Stage ) ;
2015-03-27 06:50:17 -04:00
Name . Buffer [ 1 ] = ' b ' ;
2015-02-06 11:35:30 -05:00
2015-02-09 13:32:07 -05:00
GLuint StageProgram = Config . Shaders [ Stage ] . Resource ;
2015-02-06 11:35:30 -05:00
for ( int32 BufferIndex = 0 ; BufferIndex < Config . Shaders [ Stage ] . Bindings . NumUniformBuffers ; + + BufferIndex )
{
2015-03-27 06:50:17 -04:00
SetIndex ( Name . Buffer , 2 , BufferIndex ) ;
GLint Location = GetOpenGLProgramUniformBlockIndex ( StageProgram , Name ) ;
2015-02-06 11:35:30 -05:00
if ( Location > = 0 )
{
GetOpenGLProgramUniformBlockBinding ( StageProgram , Location , FirstUniformBuffer + BufferIndex ) ;
}
}
}
}
2014-03-14 14:13:41 -04:00
void FOpenGLLinkedProgram : : ConfigureShaderStage ( int Stage , uint32 FirstUniformBuffer )
{
2014-07-15 13:25:14 -04:00
static const GLint FirstTextureUnit [ CrossCompiler : : NUM_SHADER_STAGES ] =
2014-03-14 14:13:41 -04:00
{
FOpenGL : : GetFirstVertexTextureUnit ( ) ,
FOpenGL : : GetFirstPixelTextureUnit ( ) ,
FOpenGL : : GetFirstGeometryTextureUnit ( ) ,
FOpenGL : : GetFirstHullTextureUnit ( ) ,
FOpenGL : : GetFirstDomainTextureUnit ( ) ,
FOpenGL : : GetFirstComputeTextureUnit ( )
} ;
2014-07-15 13:25:14 -04:00
static const GLint FirstUAVUnit [ CrossCompiler : : NUM_SHADER_STAGES ] =
2014-03-14 14:13:41 -04:00
{
OGL_UAV_NOT_SUPPORTED_FOR_GRAPHICS_UNIT ,
OGL_UAV_NOT_SUPPORTED_FOR_GRAPHICS_UNIT ,
OGL_UAV_NOT_SUPPORTED_FOR_GRAPHICS_UNIT ,
OGL_UAV_NOT_SUPPORTED_FOR_GRAPHICS_UNIT ,
OGL_UAV_NOT_SUPPORTED_FOR_GRAPHICS_UNIT ,
FOpenGL : : GetFirstComputeUAVUnit ( )
} ;
2015-03-27 06:50:17 -04:00
2014-03-14 14:13:41 -04:00
// verify that only CS uses UAVs
2014-07-15 13:25:14 -04:00
check ( ( Stage ! = CrossCompiler : : SHADER_STAGE_COMPUTE ) ? ( CountSetBits ( UAVStageNeeds ) = = 0 ) : true ) ;
2014-03-14 14:13:41 -04:00
SCOPE_CYCLE_COUNTER ( STAT_OpenGLShaderBindParameterTime ) ;
VERIFY_GL_SCOPE ( ) ;
2015-03-27 06:50:17 -04:00
FOpenGLUniformName Name ;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3054480)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3045482 on 2016/07/11 by Zabir.Hoque
DX12 Quries need to individually track their syncpoints. Only when resolving a query on the same frame should be stall.
Change 3045929 on 2016/07/12 by Simon.Tovey
Removing some deprecated node types from Niagara
Change 3045951 on 2016/07/12 by Ben.Woodhouse
D3D11 Log detailed live device info on shutdown if the debug layer is enabled (including resource types)
Change 3046019 on 2016/07/12 by Chris.Bunner
Fixed typo in material input name.
#jira UE-5575
Change 3046053 on 2016/07/12 by Rolando.Caloca
DR - Fix GL4 shutdown
#jira UE-32799
Change 3046055 on 2016/07/12 by Rolando.Caloca
DR - vk - Fix NumInstances=0
Change 3046063 on 2016/07/12 by Rolando.Caloca
DR - vk - Added flat to uint layouts per glslang
- Fix bad extension on dumped shaders
Change 3046067 on 2016/07/12 by Rolando.Caloca
DR - vk - Fix check when not using color RT
- Added queue submit & present counters
Change 3046088 on 2016/07/12 by Ben.Woodhouse
Live GPU stats
A non-hierarchical realtime high level GPU profiler with support for cumulative stat recording.
Stats are added with SCOPED_GPU_STAT macros, e.g. SCOPED_GPU_STAT(RHICmdList, Stat_GPU_Distortion)
The bulk of the files in this change are simply instrumentation for the renderer. The core changes are in SceneUtils.cpp/h and D3D11Query.cpp (this is the XB1/DX11X implementation of timestamp RHI queries, which was missing)
Note: this is currently disabled by default. Enable with the cvar r.gpustatsenabled
Tested on PC, XB1, PS4
Change 3046128 on 2016/07/12 by Olaf.Piesche
Max draw distance and fade range for lights, requested by JonL
Change 3046183 on 2016/07/12 by Ben.Woodhouse
PR #2532: Fix SSAO being applied in unlit viewmode (Contributed by nick-penwarden)
Change 3046223 on 2016/07/12 by Luke.Thatcher
Fix Scene Cube Captures. SceneCaptureSource flag on the ViewFamily was not set for cube components.
#jira UE-32345
Change 3046228 on 2016/07/12 by Marc.Olano
Add Voronoi noise to Noise material node.
Four versions with differing speed/quality levels accessed through the Quality value in the material node. Tooltips give estimates of the cost of each.
Also includes spiffy new Rand3DPCG16 and Rand3DPCG32 int3 to int3 hash functions, and a 20% improvement on the computed gradient noise.
Change 3046269 on 2016/07/12 by Rolando.Caloca
DR - Skip flush on RHIDiscardRenderTargets and only use it on platforms that need it (ie OpenGL)
Change 3046294 on 2016/07/12 by Rolando.Caloca
DR - Fix static analyisis
warning C6326: Potential comparison of a constant with another constant.
Change 3046295 on 2016/07/12 by Rolando.Caloca
DR - Fix the previous fix
Change 3046731 on 2016/07/12 by Marc.Olano
Fix typo in shader random number constant: repeated extra digit made it too big.
Change 3046796 on 2016/07/12 by Uriel.Doyon
The texture streaming manager now keeps a set of all valid textures.
This is used to prevent from indirecting deleted memory upon SetTexturesRemovedTimestamp.
#jira UE-33048
Change 3046800 on 2016/07/12 by Rolando.Caloca
DR - vk - Added create image & renderpass dump
Change 3046845 on 2016/07/12 by John.Billon
Forgot to apply MaxGPUSkinBones Cvar access changes in a few locations.
Change 3047023 on 2016/07/12 by Olaf.Piesche
Niagara:
-a bit of cleanup
-now store and double buffer attributes individually, eliminating unnecessary copy of unused attributes
-removed FNiagaraConstantMap, replaced with an instance of FNiagaraConstants
-some code simplification
-removed some deprecated structs and code used only by old content
Change 3047052 on 2016/07/12 by Zabir.Hoque
Unshelved from pending changelist '3044062':
PR #2588: Adding blend mode BLEND_AlphaComposite (4.12) (Contributed by moritz-wundke)
Change 3047727 on 2016/07/13 by Luke.Thatcher
Fix Scene Capture Components only updating every other frame.
#jira UE-32581
Change 3047919 on 2016/07/13 by Olaf.Piesche
CMask decode, use in deferred decals, for PS4
Change 3047921 on 2016/07/13 by Uriel.Doyon
"Build Texture Streaming" will now remove duplicate error msg when computing texcoord scales.
Also, several texture messages are packed on the same line if they relate to the same material.
Change 3047952 on 2016/07/13 by Rolando.Caloca
DR - vk - Initial prep pass for separating combined images & samplers
Change 3048648 on 2016/07/13 by Marcus.Wassmer
Fix rare GPU hang when asynctexture reallocs would overlap with EndFrame
Change 3049058 on 2016/07/13 by Rolando.Caloca
DR - vk - timestamps
Change 3049725 on 2016/07/14 by Marcus.Wassmer
Fix autosdk bug where not having a platform directory sync'd at all would break manual SDK detection
Change 3049742 on 2016/07/14 by Rolando.Caloca
DR - Fix warning
Change 3049902 on 2016/07/14 by Rolando.Caloca
DR - Fix typo
Change 3050345 on 2016/07/14 by Olaf.Piesche
UE-23925
Clamping noise tessellation for beams at a high but sensible value; also making sure during beam index buffer building that we never get over 2^16 indices; this is a bit hokey, but there are so many variables that can influence triangle/index count, that this is the only way to be sure (short of nuking the entire site from orbit).
Change 3050409 on 2016/07/14 by Olaf.Piesche
Replicating 3049049; missing break and check for active particles when resolving a source point to avoid a potential crash
Change 3050809 on 2016/07/14 by Rolando.Caloca
DR - vk - Remove redundant validation layers
Change 3051319 on 2016/07/15 by Ben.Woodhouse
Fix for world space camera position not being exposed in decal pixel shaders; also fixes decal lighting missing spec and reflection
The fix was to calculate ResolvedView at the top of the shader. Previously this was not initialized
#jira UE-31976
Change 3051692 on 2016/07/15 by Rolando.Caloca
DR - vk - Enable RHI thread by default
Change 3052103 on 2016/07/15 by Uriel.Doyon
Disabled depth offset in depth only pixel shaders when using debug view shaders (to prevent Z fighting).
#jira UE-32765
Change 3052140 on 2016/07/15 by Rolando.Caloca
DR - vk - Fix shader snafu
Change 3052495 on 2016/07/15 by Rolando.Caloca
DR - Fix for Win32 compile
#jira UE-33349
Change 3052536 on 2016/07/15 by Uriel.Doyon
Fixed texture streaming overbudget warning when using per texture bias.
[CL 3054554 by Gil Gribb in Main branch]
2016-07-18 17:17:08 -04:00
Name . Buffer [ 0 ] = CrossCompiler : : ShaderStageIndexToTypeName ( Stage ) ;
2014-03-14 14:13:41 -04:00
2015-02-06 11:35:30 -05:00
GLuint StageProgram = FOpenGL : : SupportsSeparateShaderObjects ( ) ? Config . Shaders [ Stage ] . Resource : Program ;
2014-03-14 14:13:41 -04:00
// Bind Global uniform arrays (vu_h, pu_i, etc)
{
2015-03-27 06:50:17 -04:00
Name . Buffer [ 1 ] = ' u ' ;
Name . Buffer [ 2 ] = ' _ ' ;
Name . Buffer [ 3 ] = 0 ;
Name . Buffer [ 4 ] = 0 ;
2014-03-14 14:13:41 -04:00
TArray < FPackedUniformInfo > PackedUniformInfos ;
2014-07-15 13:25:14 -04:00
for ( uint8 Index = 0 ; Index < CrossCompiler : : PACKED_TYPEINDEX_MAX ; + + Index )
2014-03-14 14:13:41 -04:00
{
2014-07-15 13:25:14 -04:00
uint8 ArrayIndexType = CrossCompiler : : PackedTypeIndexToTypeName ( Index ) ;
2015-03-27 06:50:17 -04:00
Name . Buffer [ 3 ] = ArrayIndexType ;
GLint Location = glGetUniformLocation ( StageProgram , Name . Buffer ) ;
2014-03-14 14:13:41 -04:00
if ( ( int32 ) Location ! = - 1 )
{
FPackedUniformInfo Info = { Location , ArrayIndexType , Index } ;
PackedUniformInfos . Add ( Info ) ;
}
}
SortPackedUniformInfos ( PackedUniformInfos , Config . Shaders [ Stage ] . Bindings . PackedGlobalArrays , StagePackedUniformInfo [ Stage ] . PackedUniformInfos ) ;
}
// Bind uniform buffer packed arrays (vc0_h, pc2_i, etc)
{
2015-03-27 06:50:17 -04:00
Name . Buffer [ 1 ] = ' c ' ;
Name . Buffer [ 2 ] = 0 ;
Name . Buffer [ 3 ] = 0 ;
Name . Buffer [ 4 ] = 0 ;
Name . Buffer [ 5 ] = 0 ;
Name . Buffer [ 6 ] = 0 ;
2014-03-14 14:13:41 -04:00
for ( uint8 UB = 0 ; UB < Config . Shaders [ Stage ] . Bindings . NumUniformBuffers ; + + UB )
{
TArray < FPackedUniformInfo > PackedBuffers ;
2015-03-27 06:50:17 -04:00
ANSICHAR * Str = SetIndex ( Name . Buffer , 2 , UB ) ;
2014-03-14 14:13:41 -04:00
* Str + + = ' _ ' ;
Str [ 1 ] = 0 ;
2014-07-15 13:25:14 -04:00
for ( uint8 Index = 0 ; Index < CrossCompiler : : PACKED_TYPEINDEX_MAX ; + + Index )
2014-03-14 14:13:41 -04:00
{
2014-07-15 13:25:14 -04:00
uint8 ArrayIndexType = CrossCompiler : : PackedTypeIndexToTypeName ( Index ) ;
2014-03-14 14:13:41 -04:00
Str [ 0 ] = ArrayIndexType ;
2015-03-27 06:50:17 -04:00
GLint Location = glGetUniformLocation ( StageProgram , Name . Buffer ) ;
2014-03-14 14:13:41 -04:00
if ( ( int32 ) Location ! = - 1 )
{
FPackedUniformInfo Info = { Location , ArrayIndexType , Index } ;
PackedBuffers . Add ( Info ) ;
}
}
StagePackedUniformInfo [ Stage ] . PackedUniformBufferInfos . Add ( PackedBuffers ) ;
}
}
// Reserve and setup Space for Emulated Uniform Buffers
StagePackedUniformInfo [ Stage ] . LastEmulatedUniformBufferSet . Empty ( Config . Shaders [ Stage ] . Bindings . NumUniformBuffers ) ;
StagePackedUniformInfo [ Stage ] . LastEmulatedUniformBufferSet . AddZeroed ( Config . Shaders [ Stage ] . Bindings . NumUniformBuffers ) ;
// Bind samplers.
2015-03-27 06:50:17 -04:00
Name . Buffer [ 1 ] = ' s ' ;
Name . Buffer [ 2 ] = 0 ;
Name . Buffer [ 3 ] = 0 ;
Name . Buffer [ 4 ] = 0 ;
2014-03-14 14:13:41 -04:00
int32 LastFoundIndex = - 1 ;
for ( int32 SamplerIndex = 0 ; SamplerIndex < Config . Shaders [ Stage ] . Bindings . NumSamplers ; + + SamplerIndex )
{
2015-03-27 06:50:17 -04:00
SetIndex ( Name . Buffer , 2 , SamplerIndex ) ;
GLint Location = glGetUniformLocation ( StageProgram , Name . Buffer ) ;
2014-03-14 14:13:41 -04:00
if ( Location = = - 1 )
{
if ( LastFoundIndex ! = - 1 )
{
// It may be an array of samplers. Get the initial element location, if available, and count from it.
2015-03-27 06:50:17 -04:00
SetIndex ( Name . Buffer , 2 , LastFoundIndex ) ;
2014-03-14 14:13:41 -04:00
int32 OffsetOfArraySpecifier = ( LastFoundIndex > 9 ) ? 4 : 3 ;
int32 ArrayIndex = SamplerIndex - LastFoundIndex ;
2015-03-27 06:50:17 -04:00
Name . Buffer [ OffsetOfArraySpecifier ] = ' [ ' ;
ANSICHAR * EndBracket = SetIndex ( Name . Buffer , OffsetOfArraySpecifier + 1 , ArrayIndex ) ;
2014-03-14 14:13:41 -04:00
* EndBracket + + = ' ] ' ;
* EndBracket = 0 ;
2015-03-27 06:50:17 -04:00
Location = glGetUniformLocation ( StageProgram , Name . Buffer ) ;
2014-03-14 14:13:41 -04:00
}
}
else
{
LastFoundIndex = SamplerIndex ;
}
if ( Location ! = - 1 )
{
2014-09-18 17:49:40 -04:00
if ( OpenGLConsoleVariables : : bBindlessTexture = = 0 | | ! FOpenGL : : SupportsBindlessTexture ( ) )
{
// Non-bindless, setup the unit info
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform1i ( StageProgram , Location , FirstTextureUnit [ Stage ] + SamplerIndex ) ;
TextureStageNeeds [ FirstTextureUnit [ Stage ] + SamplerIndex ] = true ;
MaxTextureStage = FMath : : Max ( MaxTextureStage , FirstTextureUnit [ Stage ] + SamplerIndex ) ;
}
2014-09-18 17:49:40 -04:00
else
{
//Bindless, save off the slot information
FOpenGLBindlessSamplerInfo Info ;
Info . Handle = Location ;
Info . Slot = FirstTextureUnit [ Stage ] + SamplerIndex ;
Samplers . Add ( Info ) ;
}
}
2014-03-14 14:13:41 -04:00
}
// Bind UAVs/images.
2015-03-27 06:50:17 -04:00
Name . Buffer [ 1 ] = ' i ' ;
Name . Buffer [ 2 ] = 0 ;
Name . Buffer [ 3 ] = 0 ;
Name . Buffer [ 4 ] = 0 ;
2014-03-14 14:13:41 -04:00
int32 LastFoundUAVIndex = - 1 ;
for ( int32 UAVIndex = 0 ; UAVIndex < Config . Shaders [ Stage ] . Bindings . NumUAVs ; + + UAVIndex )
{
2015-03-27 06:50:17 -04:00
SetIndex ( Name . Buffer , 2 , UAVIndex ) ;
GLint Location = glGetUniformLocation ( StageProgram , Name . Buffer ) ;
2014-03-14 14:13:41 -04:00
if ( Location = = - 1 )
{
if ( LastFoundUAVIndex ! = - 1 )
{
// It may be an array of UAVs. Get the initial element location, if available, and count from it.
2015-03-27 06:50:17 -04:00
SetIndex ( Name . Buffer , 2 , LastFoundUAVIndex ) ;
2014-03-14 14:13:41 -04:00
int32 OffsetOfArraySpecifier = ( LastFoundUAVIndex > 9 ) ? 4 : 3 ;
int32 ArrayIndex = UAVIndex - LastFoundUAVIndex ;
2015-03-27 06:50:17 -04:00
Name . Buffer [ OffsetOfArraySpecifier ] = ' [ ' ;
ANSICHAR * EndBracket = SetIndex ( Name . Buffer , OffsetOfArraySpecifier + 1 , ArrayIndex ) ;
2014-03-14 14:13:41 -04:00
* EndBracket + + = ' ] ' ;
* EndBracket = ' \0 ' ;
2015-03-27 06:50:17 -04:00
Location = glGetUniformLocation ( StageProgram , Name . Buffer ) ;
2014-03-14 14:13:41 -04:00
}
}
else
{
LastFoundUAVIndex = UAVIndex ;
}
if ( Location ! = - 1 )
{
2014-09-18 17:49:40 -04:00
// compute shaders have layout(binding) for images
// glUniform1i(Location, FirstUAVUnit[Stage] + UAVIndex);
2014-03-14 14:13:41 -04:00
UAVStageNeeds [ FirstUAVUnit [ Stage ] + UAVIndex ] = true ;
}
}
// Bind uniform buffers.
if ( FOpenGL : : SupportsUniformBuffers ( ) )
{
2015-03-27 06:50:17 -04:00
Name . Buffer [ 1 ] = ' b ' ;
Name . Buffer [ 2 ] = 0 ;
Name . Buffer [ 3 ] = 0 ;
Name . Buffer [ 4 ] = 0 ;
2014-03-14 14:13:41 -04:00
for ( int32 BufferIndex = 0 ; BufferIndex < Config . Shaders [ Stage ] . Bindings . NumUniformBuffers ; + + BufferIndex )
{
2015-03-27 06:50:17 -04:00
SetIndex ( Name . Buffer , 2 , BufferIndex ) ;
GLint Location = GetOpenGLProgramUniformBlockIndex ( StageProgram , Name ) ;
2014-03-14 14:13:41 -04:00
if ( Location > = 0 )
{
2015-02-06 11:35:30 -05:00
GetOpenGLProgramUniformBlockBinding ( StageProgram , Location , FirstUniformBuffer + BufferIndex ) ;
2014-03-14 14:13:41 -04:00
}
}
}
}
# if ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION
# define ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097 1
/*
As of CL 1862097 uniform buffer names are mangled to avoid collisions between variables referenced
in different shaders of the same program
layout ( std140 ) uniform _vb0
{
# define View View_vb0
anon_struct_0000 View ;
} ;
layout ( std140 ) uniform _vb1
{
# define Primitive Primitive_vb1
anon_struct_0001 Primitive ;
} ;
*/
struct UniformData
{
UniformData ( uint32 InOffset , uint32 InArrayElements )
: Offset ( InOffset )
, ArrayElements ( InArrayElements )
{
}
uint32 Offset ;
uint32 ArrayElements ;
bool operator = = ( const UniformData & RHS ) const
{
return Offset = = RHS . Offset & & ArrayElements = = RHS . ArrayElements ;
}
bool operator ! = ( const UniformData & RHS ) const
{
return ! ( * this = = RHS ) ;
}
} ;
# if ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097
static void VerifyUniformLayout ( const FString & BlockName , const TCHAR * UniformName , const UniformData & GLSLUniform )
# else
static void VerifyUniformLayout ( const TCHAR * UniformName , const UniformData & GLSLUniform )
# endif //#if ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097
{
static TMap < FString , UniformData > Uniforms ;
if ( ! Uniforms . Num ( ) )
{
for ( TLinkedList < FUniformBufferStruct * > : : TIterator StructIt ( FUniformBufferStruct : : GetStructList ( ) ) ; StructIt ; StructIt . Next ( ) )
{
# if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
UE_LOG ( LogRHI , Log , TEXT ( " UniformBufferStruct %s %s %d " ) ,
StructIt - > GetStructTypeName ( ) ,
StructIt - > GetShaderVariableName ( ) ,
StructIt - > GetSize ( )
) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
const TArray < FUniformBufferStruct : : FMember > & StructMembers = StructIt - > GetMembers ( ) ;
for ( int32 MemberIndex = 0 ; MemberIndex < StructMembers . Num ( ) ; + + MemberIndex )
{
const FUniformBufferStruct : : FMember & Member = StructMembers [ MemberIndex ] ;
FString BaseTypeName ;
switch ( Member . GetBaseType ( ) )
{
2014-06-05 16:38:54 -04:00
case UBMT_STRUCT : BaseTypeName = TEXT ( " struct " ) ; break ;
2014-03-14 14:13:41 -04:00
case UBMT_BOOL : BaseTypeName = TEXT ( " bool " ) ; break ;
case UBMT_INT32 : BaseTypeName = TEXT ( " int " ) ; break ;
case UBMT_UINT32 : BaseTypeName = TEXT ( " uint " ) ; break ;
case UBMT_FLOAT32 : BaseTypeName = TEXT ( " float " ) ; break ;
2014-06-05 16:38:54 -04:00
case UBMT_TEXTURE : BaseTypeName = TEXT ( " texture " ) ; break ;
case UBMT_SAMPLER : BaseTypeName = TEXT ( " sampler " ) ; break ;
2014-03-14 14:13:41 -04:00
default : UE_LOG ( LogShaders , Fatal , TEXT ( " Unrecognized uniform buffer struct member base type. " ) ) ;
} ;
# if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
UE_LOG ( LogRHI , Log , TEXT ( " +%d %s%dx%d %s[%d] " ) ,
Member . GetOffset ( ) ,
* BaseTypeName ,
Member . GetNumRows ( ) ,
Member . GetNumColumns ( ) ,
Member . GetName ( ) ,
Member . GetNumElements ( )
) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
2014-06-05 16:38:54 -04:00
FString CompositeName = FString ( StructIt - > GetShaderVariableName ( ) ) + TEXT ( " _ " ) + Member . GetName ( ) ;
2014-03-14 14:13:41 -04:00
// GLSL returns array members with a "[0]" suffix
if ( Member . GetNumElements ( ) )
{
CompositeName + = TEXT ( " [0] " ) ;
}
check ( ! Uniforms . Contains ( CompositeName ) ) ;
Uniforms . Add ( CompositeName , UniformData ( Member . GetOffset ( ) , Member . GetNumElements ( ) ) ) ;
}
}
}
# if ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097
/* unmangle the uniform name by stripping the block name from it
layout ( std140 ) uniform _vb0
{
# define View View_vb0
anon_struct_0000 View ;
} ;
*/
2015-02-06 11:35:30 -05:00
FString RequestedUniformName ( UniformName ) ;
RequestedUniformName = RequestedUniformName . Replace ( * BlockName , TEXT ( " " ) ) ;
2014-03-14 14:13:41 -04:00
if ( RequestedUniformName . StartsWith ( TEXT ( " . " ) ) )
{
RequestedUniformName = RequestedUniformName . RightChop ( 1 ) ;
}
# else
FString RequestedUniformName = UniformName ;
# endif
const UniformData * FoundUniform = Uniforms . Find ( RequestedUniformName ) ;
// MaterialTemplate uniform buffer does not have an entry in the FUniformBufferStructs list, so skipping it here
2014-06-05 16:38:54 -04:00
if ( ! ( RequestedUniformName . StartsWith ( " Material_ " ) | | RequestedUniformName . StartsWith ( " MaterialCollection " ) ) )
2014-03-14 14:13:41 -04:00
{
if ( ! FoundUniform | | ( * FoundUniform ! = GLSLUniform ) )
{
UE_LOG ( LogRHI , Fatal , TEXT ( " uniform buffer member %s in the GLSL source doesn't match it's declaration in it's FUniformBufferStruct " ) , * RequestedUniformName ) ;
}
}
}
static void VerifyUniformBufferLayouts ( GLuint Program )
{
GLint NumBlocks = 0 ;
glGetProgramiv ( Program , GL_ACTIVE_UNIFORM_BLOCKS , & NumBlocks ) ;
# if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
UE_LOG ( LogRHI , Log , TEXT ( " program %d has %d uniform blocks " ) , Program , NumBlocks ) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
for ( GLint BlockIndex = 0 ; BlockIndex < NumBlocks ; + + BlockIndex )
{
const GLsizei BufferSize = 256 ;
char Buffer [ BufferSize ] = { 0 } ;
GLsizei Length = 0 ;
GLint ActiveUniforms = 0 ;
GLint BlockBytes = 0 ;
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS , & ActiveUniforms ) ;
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_DATA_SIZE , & BlockBytes ) ;
glGetActiveUniformBlockName ( Program , BlockIndex , BufferSize , & Length , Buffer ) ;
# if ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097
FString BlockName ( Buffer ) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097
FString ReferencedBy ;
{
GLint ReferencedByVS = 0 ;
GLint ReferencedByPS = 0 ;
GLint ReferencedByGS = 0 ;
GLint ReferencedByHS = 0 ;
GLint ReferencedByDS = 0 ;
GLint ReferencedByCS = 0 ;
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER , & ReferencedByVS ) ;
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER , & ReferencedByPS ) ;
2014-09-18 17:49:40 -04:00
# ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
2014-03-14 14:13:41 -04:00
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER , & ReferencedByGS ) ;
2014-09-18 17:49:40 -04:00
# endif
2014-07-24 05:23:50 -04:00
if ( GMaxRHIFeatureLevel > = ERHIFeatureLevel : : SM5 )
2014-03-14 14:13:41 -04:00
{
2014-09-18 17:49:40 -04:00
# ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER
2014-03-14 14:13:41 -04:00
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER , & ReferencedByHS ) ;
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER , & ReferencedByDS ) ;
2014-09-18 17:49:40 -04:00
# endif
# ifdef GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER
2014-03-14 14:13:41 -04:00
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER , & ReferencedByCS ) ;
2014-09-18 17:49:40 -04:00
# endif
2014-03-14 14:13:41 -04:00
}
if ( ReferencedByVS ) { ReferencedBy + = TEXT ( " V " ) ; }
if ( ReferencedByHS ) { ReferencedBy + = TEXT ( " H " ) ; }
if ( ReferencedByDS ) { ReferencedBy + = TEXT ( " D " ) ; }
if ( ReferencedByGS ) { ReferencedBy + = TEXT ( " G " ) ; }
if ( ReferencedByPS ) { ReferencedBy + = TEXT ( " P " ) ; }
if ( ReferencedByCS ) { ReferencedBy + = TEXT ( " C " ) ; }
}
# if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
UE_LOG ( LogRHI , Log , TEXT ( " [%d] uniform block (%s) = %s, %d active uniforms, %d bytes { " ) ,
BlockIndex ,
* ReferencedBy ,
ANSI_TO_TCHAR ( Buffer ) ,
ActiveUniforms ,
BlockBytes
) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
if ( ActiveUniforms )
{
// the other TArrays copy construct this to get the proper array size
TArray < GLint > ActiveUniformIndices ;
ActiveUniformIndices . Init ( ActiveUniforms ) ;
2014-09-29 04:23:44 -04:00
glGetActiveUniformBlockiv ( Program , BlockIndex , GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES , ActiveUniformIndices . GetData ( ) ) ;
2014-03-14 14:13:41 -04:00
TArray < GLint > ActiveUniformOffsets ( ActiveUniformIndices ) ;
glGetActiveUniformsiv ( Program , ActiveUniforms , reinterpret_cast < const GLuint * > ( ActiveUniformIndices . GetData ( ) ) , GL_UNIFORM_OFFSET , ActiveUniformOffsets . GetData ( ) ) ;
TArray < GLint > ActiveUniformSizes ( ActiveUniformIndices ) ;
glGetActiveUniformsiv ( Program , ActiveUniforms , reinterpret_cast < const GLuint * > ( ActiveUniformIndices . GetData ( ) ) , GL_UNIFORM_SIZE , ActiveUniformSizes . GetData ( ) ) ;
TArray < GLint > ActiveUniformTypes ( ActiveUniformIndices ) ;
glGetActiveUniformsiv ( Program , ActiveUniforms , reinterpret_cast < const GLuint * > ( ActiveUniformIndices . GetData ( ) ) , GL_UNIFORM_TYPE , ActiveUniformTypes . GetData ( ) ) ;
TArray < GLint > ActiveUniformArrayStrides ( ActiveUniformIndices ) ;
glGetActiveUniformsiv ( Program , ActiveUniforms , reinterpret_cast < const GLuint * > ( ActiveUniformIndices . GetData ( ) ) , GL_UNIFORM_ARRAY_STRIDE , ActiveUniformArrayStrides . GetData ( ) ) ;
extern const TCHAR * GetGLUniformTypeString ( GLint UniformType ) ;
for ( GLint i = 0 ; i < ActiveUniformIndices . Num ( ) ; + + i )
{
const GLint UniformIndex = ActiveUniformIndices [ i ] ;
GLsizei Size = 0 ;
GLenum Type = 0 ;
glGetActiveUniform ( Program , UniformIndex , BufferSize , & Length , & Size , & Type , Buffer ) ;
# if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
UE_LOG ( LogRHI , Log , TEXT ( " [%d] +%d %s %s %d elements %d array stride " ) ,
UniformIndex ,
ActiveUniformOffsets [ i ] ,
GetGLUniformTypeString ( ActiveUniformTypes [ i ] ) ,
ANSI_TO_TCHAR ( Buffer ) ,
ActiveUniformSizes [ i ] ,
ActiveUniformArrayStrides [ i ]
) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_DUMP
const UniformData GLSLUniform
(
ActiveUniformOffsets [ i ] ,
ActiveUniformArrayStrides [ i ] > 0 ? ActiveUniformSizes [ i ] : 0 // GLSL has 1 as array size for non-array uniforms, but FUniformBufferStruct assumes 0
) ;
# if ENABLE_UNIFORM_BUFFER_LAYOUT_NAME_MANGLING_CL1862097
VerifyUniformLayout ( BlockName , ANSI_TO_TCHAR ( Buffer ) , GLSLUniform ) ;
# else
VerifyUniformLayout ( ANSI_TO_TCHAR ( Buffer ) , GLSLUniform ) ;
# endif
}
}
}
}
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION
/**
* Link vertex and pixel shaders in to an OpenGL program .
*/
static FOpenGLLinkedProgram * LinkProgram ( const FOpenGLLinkedProgramConfiguration & Config )
{
ANSICHAR Buf [ 32 ] = { 0 } ;
SCOPE_CYCLE_COUNTER ( STAT_OpenGLShaderLinkTime ) ;
VERIFY_GL_SCOPE ( ) ;
// ensure that compute shaders are always alone
2014-07-15 13:25:14 -04:00
check ( ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Resource = = 0 ) ! = ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Resource = = 0 ) ) ;
check ( ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Resource = = 0 ) ! = ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Resource = = 0 ) ) ;
2014-03-14 14:13:41 -04:00
2015-02-06 11:35:30 -05:00
GLuint Program = 0 ;
FOpenGL : : GenProgramPipelines ( 1 , & Program ) ;
2016-06-13 12:20:22 -04:00
bool bShouldLinkProgram = true ;
if ( FOpenGLProgramBinaryCache : : IsEnabled ( ) )
{
// Try to create program from a saved binary
bShouldLinkProgram = ! FOpenGLProgramBinaryCache : : UseCachedProgram ( Program , Config ) ;
if ( bShouldLinkProgram )
{
// In case there is no saved binary in the cache, compile required shaders we have deferred before
FOpenGLProgramBinaryCache : : CompilePendingShaders ( Config ) ;
}
}
if ( bShouldLinkProgram )
{
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Resource )
{
FOpenGL : : UseProgramStages ( Program , GL_VERTEX_SHADER_BIT , Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Resource ) ;
}
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Resource )
{
FOpenGL : : UseProgramStages ( Program , GL_FRAGMENT_SHADER_BIT , Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Resource ) ;
}
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . Resource )
{
FOpenGL : : UseProgramStages ( Program , GL_GEOMETRY_SHADER_BIT , Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . Resource ) ;
}
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] . Resource )
{
FOpenGL : : UseProgramStages ( Program , GL_TESS_CONTROL_SHADER_BIT , Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] . Resource ) ;
}
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] . Resource )
{
FOpenGL : : UseProgramStages ( Program , GL_TESS_EVALUATION_SHADER_BIT , Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] . Resource ) ;
}
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Resource )
{
FOpenGL : : UseProgramStages ( Program , GL_COMPUTE_SHADER_BIT , Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Resource ) ;
}
if ( ! FOpenGL : : SupportsSeparateShaderObjects ( ) )
{
// E.g. GLSL_430 uses layout(location=xx) instead of having to call glBindAttribLocation and glBindFragDataLocation
if ( OpenGLShaderPlatformNeedsBindLocation ( GMaxRHIShaderPlatform ) )
2015-02-06 11:35:30 -05:00
{
2016-06-13 12:20:22 -04:00
// Bind attribute indices.
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Resource )
{
auto & VertexBindings = Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings ;
BindShaderLocations ( GL_VERTEX_SHADER , Program , VertexBindings . InOutMask , VertexBindings . VertexAttributeRemap ) ;
}
// Bind frag data locations.
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Resource )
{
BindShaderLocations ( GL_FRAGMENT_SHADER , Program , Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Bindings . InOutMask ) ;
}
}
// Link.
glLinkProgram ( Program ) ;
if ( FOpenGLProgramBinaryCache : : IsEnabled ( ) )
{
FOpenGLProgramBinaryCache : : CacheProgram ( Program , Config ) ;
2014-03-14 14:13:41 -04:00
}
}
}
2015-02-06 11:35:30 -05:00
if ( ! VerifyProgramPipeline ( Program ) )
2014-03-14 14:13:41 -04:00
{
2015-02-06 11:35:30 -05:00
return nullptr ;
2014-03-14 14:13:41 -04:00
}
2015-02-06 11:35:30 -05:00
FOpenGL : : BindProgramPipeline ( Program ) ;
2014-03-14 14:13:41 -04:00
FOpenGLLinkedProgram * LinkedProgram = new FOpenGLLinkedProgram ;
LinkedProgram - > Config = Config ;
LinkedProgram - > Program = Program ;
2014-07-15 13:25:14 -04:00
LinkedProgram - > bUsingTessellation = Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] . Resource & & Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] . Resource ;
2014-03-14 14:13:41 -04:00
2014-07-15 13:25:14 -04:00
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Resource )
2014-03-14 14:13:41 -04:00
{
LinkedProgram - > ConfigureShaderStage (
2014-07-15 13:25:14 -04:00
CrossCompiler : : SHADER_STAGE_VERTEX ,
2014-03-14 14:13:41 -04:00
OGL_FIRST_UNIFORM_BUFFER
) ;
2014-07-15 13:25:14 -04:00
check ( LinkedProgram - > StagePackedUniformInfo [ CrossCompiler : : SHADER_STAGE_VERTEX ] . PackedUniformInfos . Num ( ) < = Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings . PackedGlobalArrays . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
}
2014-07-15 13:25:14 -04:00
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Resource )
2014-03-14 14:13:41 -04:00
{
LinkedProgram - > ConfigureShaderStage (
2014-07-15 13:25:14 -04:00
CrossCompiler : : SHADER_STAGE_PIXEL ,
2014-03-14 14:13:41 -04:00
OGL_FIRST_UNIFORM_BUFFER +
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings . NumUniformBuffers
2014-03-14 14:13:41 -04:00
) ;
2014-07-15 13:25:14 -04:00
check ( LinkedProgram - > StagePackedUniformInfo [ CrossCompiler : : SHADER_STAGE_PIXEL ] . PackedUniformInfos . Num ( ) < = Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Bindings . PackedGlobalArrays . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
}
2014-07-15 13:25:14 -04:00
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . Resource )
2014-03-14 14:13:41 -04:00
{
LinkedProgram - > ConfigureShaderStage (
2014-07-15 13:25:14 -04:00
CrossCompiler : : SHADER_STAGE_GEOMETRY ,
2014-03-14 14:13:41 -04:00
OGL_FIRST_UNIFORM_BUFFER +
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings . NumUniformBuffers +
Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Bindings . NumUniformBuffers
2014-03-14 14:13:41 -04:00
) ;
2014-07-15 13:25:14 -04:00
check ( LinkedProgram - > StagePackedUniformInfo [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . PackedUniformInfos . Num ( ) < = Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . Bindings . PackedGlobalArrays . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
}
2014-07-15 13:25:14 -04:00
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] . Resource )
2014-03-14 14:13:41 -04:00
{
LinkedProgram - > ConfigureShaderStage (
2014-07-15 13:25:14 -04:00
CrossCompiler : : SHADER_STAGE_HULL ,
2014-03-14 14:13:41 -04:00
OGL_FIRST_UNIFORM_BUFFER +
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings . NumUniformBuffers +
Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Bindings . NumUniformBuffers +
Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . Bindings . NumUniformBuffers
2014-03-14 14:13:41 -04:00
) ;
}
2014-07-15 13:25:14 -04:00
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] . Resource )
2014-03-14 14:13:41 -04:00
{
LinkedProgram - > ConfigureShaderStage (
2014-07-15 13:25:14 -04:00
CrossCompiler : : SHADER_STAGE_DOMAIN ,
2014-03-14 14:13:41 -04:00
OGL_FIRST_UNIFORM_BUFFER +
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings . NumUniformBuffers +
Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] . Bindings . NumUniformBuffers +
Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] . Bindings . NumUniformBuffers +
Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] . Bindings . NumUniformBuffers
2014-03-14 14:13:41 -04:00
) ;
}
2014-07-15 13:25:14 -04:00
if ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Resource )
2014-03-14 14:13:41 -04:00
{
LinkedProgram - > ConfigureShaderStage (
2014-07-15 13:25:14 -04:00
CrossCompiler : : SHADER_STAGE_COMPUTE ,
2014-03-14 14:13:41 -04:00
OGL_FIRST_UNIFORM_BUFFER
) ;
2014-07-15 13:25:14 -04:00
check ( LinkedProgram - > StagePackedUniformInfo [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . PackedUniformInfos . Num ( ) < = Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Bindings . PackedGlobalArrays . Num ( ) ) ;
2014-03-14 14:13:41 -04:00
}
# if ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION
VerifyUniformBufferLayouts ( Program ) ;
# endif // #if ENABLE_UNIFORM_BUFFER_LAYOUT_VERIFICATION
return LinkedProgram ;
}
FComputeShaderRHIRef FOpenGLDynamicRHI : : RHICreateComputeShader ( const TArray < uint8 > & Code )
{
2014-07-24 05:23:50 -04:00
check ( GMaxRHIFeatureLevel > = ERHIFeatureLevel : : SM5 ) ;
2014-03-14 14:13:41 -04:00
FOpenGLComputeShader * ComputeShader = CompileOpenGLShader < FOpenGLComputeShader > ( Code ) ;
2014-07-08 18:23:32 -04:00
const ANSICHAR * GlslCode = NULL ;
if ( ! ComputeShader - > bSuccessfullyCompiled )
{
# if DEBUG_GL_SHADERS
GlslCode = ComputeShader - > GlslCodeString ;
# endif
ComputeShader - > bSuccessfullyCompiled = VerifyCompiledShader ( ComputeShader - > Resource , GlslCode ) ;
}
2014-03-14 14:13:41 -04:00
check ( ComputeShader ! = 0 ) ;
2015-02-25 08:13:48 -05:00
// @todo WARNING: We have to hash here because of the way we immediately link and don't afford the cache a chance to set the OutputHash from ShaderCore.
if ( FShaderCache : : GetShaderCache ( ) )
{
FSHAHash Hash ;
FSHA1 : : HashBuffer ( Code . GetData ( ) , Code . Num ( ) , Hash . Hash ) ;
ComputeShader - > SetHash ( Hash ) ;
}
2014-03-14 14:13:41 -04:00
FOpenGLLinkedProgramConfiguration Config ;
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Resource = ComputeShader - > Resource ;
2015-02-06 11:35:30 -05:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Hash = ComputeShader - > GetHash ( ) ;
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_COMPUTE ] . Bindings = ComputeShader - > Bindings ;
2014-03-14 14:13:41 -04:00
2015-02-06 11:35:30 -05:00
ComputeShader - > LinkedProgram = LinkProgram ( Config ) ;
2014-03-14 14:13:41 -04:00
2014-07-08 18:23:32 -04:00
if ( ComputeShader - > LinkedProgram = = NULL )
{
# if DEBUG_GL_SHADERS
if ( ComputeShader - > bSuccessfullyCompiled )
{
2014-09-29 04:23:44 -04:00
UE_LOG ( LogRHI , Error , TEXT ( " Compute Shader: \n %s " ) , ANSI_TO_TCHAR ( ComputeShader - > GlslCode . GetData ( ) ) ) ;
2014-07-08 18:23:32 -04:00
}
# endif //DEBUG_GL_SHADERS
checkf ( ComputeShader - > LinkedProgram , TEXT ( " Compute shader failed to compile & link. " ) ) ;
}
2014-03-14 14:13:41 -04:00
return ComputeShader ;
}
2015-02-06 11:35:30 -05:00
template < class TOpenGLStage >
static FString GetShaderStageSource ( TOpenGLStage * Shader )
{
FString Source ;
# if DEBUG_GL_SHADERS
Source = Shader - > GlslCodeString ;
# else
GLsizei NumShaders = 0 ;
glGetProgramiv ( Shader - > Resource , GL_ATTACHED_SHADERS , ( GLint * ) & NumShaders ) ;
if ( NumShaders > 0 )
{
GLuint * Shaders = ( GLuint * ) alloca ( sizeof ( GLuint ) * NumShaders ) ;
glGetAttachedShaders ( Shader - > Resource , NumShaders , & NumShaders , Shaders ) ;
for ( int32 i = 0 ; i < NumShaders ; i + + )
{
GLint Len = 0 ;
glGetShaderiv ( Shaders [ i ] , GL_SHADER_SOURCE_LENGTH , & Len ) ;
if ( Len > 0 )
{
ANSICHAR * Code = new ANSICHAR [ Len + 1 ] ;
glGetShaderSource ( Shaders [ i ] , Len + 1 , & Len , Code ) ;
Source + = Code ;
2015-03-17 14:14:30 -04:00
delete [ ] Code ;
2015-02-06 11:35:30 -05:00
}
}
}
# endif
return Source ;
}
// ============================================================================================================================
struct FOpenGLShaderVaryingMapping
{
2015-02-25 08:13:48 -05:00
FAnsiCharArray Name ;
2015-02-06 11:35:30 -05:00
int32 WriteLoc ;
int32 ReadLoc ;
} ;
typedef TMap < FOpenGLLinkedProgramConfiguration , FOpenGLLinkedProgramConfiguration : : ShaderInfo > FOpenGLSeparateShaderObjectCache ;
static FOpenGLSeparateShaderObjectCache & GetOpenGLSeparateShaderObjectCache ( )
{
static FOpenGLSeparateShaderObjectCache SeparateShaderObjectCache ;
return SeparateShaderObjectCache ;
}
template < class TOpenGLStage0 , class TOpenGLStage1 >
static void BindShaderStage ( FOpenGLLinkedProgramConfiguration : : ShaderInfo & ShaderInfo , TOpenGLStage0 * NextStage , FOpenGLLinkedProgramConfiguration : : ShaderInfo & PrevInfo , TOpenGLStage1 * PrevStage )
{
check ( NextStage & & PrevStage ) ;
GLuint NextStageResource = NextStage - > Resource ;
FOpenGLShaderBindings NextStageBindings = NextStage - > Bindings ;
if ( FOpenGL : : SupportsSeparateShaderObjects ( ) )
{
FOpenGLLinkedProgramConfiguration Config ;
Config . Shaders [ 0 ] = PrevInfo ;
Config . Shaders [ 1 ] = ShaderInfo ;
FOpenGLLinkedProgramConfiguration : : ShaderInfo * PrevResource = GetOpenGLSeparateShaderObjectCache ( ) . Find ( Config ) ;
if ( PrevResource )
{
PrevInfo . Bindings = PrevResource - > Bindings ;
PrevInfo . Resource = PrevResource - > Resource ;
}
else
{
FOpenGLShaderBindings & PrevStageBindings = PrevStage - > Bindings ;
2015-02-25 08:13:48 -05:00
TMap < FAnsiCharArray , int32 > PrevStageVaryings ;
2015-02-06 11:35:30 -05:00
for ( int32 i = 0 ; i < PrevStageBindings . OutputVaryings . Num ( ) ; i + + )
{
2015-02-25 08:13:48 -05:00
FAnsiCharArray Name = PrevStageBindings . OutputVaryings [ i ] . Varying ;
if ( Name . Num ( ) > = 4 & & ( FCStringAnsi : : Strncmp ( Name . GetData ( ) , " out_ " , 4 ) = = 0 | | FCStringAnsi : : Strncmp ( Name . GetData ( ) , " var_ " , 4 ) = = 0 ) )
{
Name . RemoveAt ( 0 , 4 ) ;
}
2015-02-06 11:35:30 -05:00
PrevStageVaryings . Add ( Name , PrevStageBindings . OutputVaryings [ i ] . Location ) ;
}
bool bInterpolatorMatches = true ;
2015-02-25 08:13:48 -05:00
TMap < FAnsiCharArray , int32 > NextStageVaryings ;
2015-02-06 11:35:30 -05:00
TArray < FString > InputErrors ;
TArray < FOpenGLShaderVaryingMapping > VaryingMapping ;
for ( int32 i = 0 ; i < NextStageBindings . InputVaryings . Num ( ) ; i + + )
{
2015-02-25 08:13:48 -05:00
FAnsiCharArray Name = NextStageBindings . InputVaryings [ i ] . Varying ;
if ( Name . Num ( ) > = 3 & & FCStringAnsi : : Strncmp ( Name . GetData ( ) , " in_ " , 3 ) = = 0 )
{
Name . RemoveAt ( 0 , 3 ) ;
}
if ( Name . Num ( ) > = 4 & & FCStringAnsi : : Strncmp ( Name . GetData ( ) , " var_ " , 4 ) = = 0 )
{
Name . RemoveAt ( 0 , 4 ) ;
}
2015-02-06 11:35:30 -05:00
NextStageVaryings . Add ( Name , NextStageBindings . InputVaryings [ i ] . Location ) ;
if ( PrevStageVaryings . Contains ( Name ) )
{
int32 & PrevLocation = PrevStageVaryings . FindChecked ( Name ) ;
if ( PrevLocation ! = NextStageBindings . InputVaryings [ i ] . Location )
{
if ( PrevLocation > = 0 & & NextStageBindings . InputVaryings [ i ] . Location > = 0 )
{
FOpenGLShaderVaryingMapping Pair ;
Pair . Name = Name ;
Pair . WriteLoc = PrevLocation ;
Pair . ReadLoc = NextStageBindings . InputVaryings [ i ] . Location ;
VaryingMapping . Add ( Pair ) ;
2015-02-25 08:13:48 -05:00
UE_LOG ( LogRHI , Warning , TEXT ( " Separate Shader Object Binding Warning: Input %s @ %d of stage 0x%x written by stage 0x%x at wrong location %d " ) , ANSI_TO_TCHAR ( NextStageBindings . InputVaryings [ i ] . Varying . GetData ( ) ) , NextStageBindings . InputVaryings [ i ] . Location , TOpenGLStage0 : : TypeEnum , TOpenGLStage1 : : TypeEnum , PrevLocation ) ;
2015-02-06 11:35:30 -05:00
}
else if ( NextStageBindings . InputVaryings [ i ] . Location = = - 1 )
{
2015-02-25 08:13:48 -05:00
InputErrors . Add ( FString : : Printf ( TEXT ( " Separate Shader Object Binding Error: Input %s of stage 0x%x written by stage 0x%x at location %d, can't be rewritten. " ) , ANSI_TO_TCHAR ( NextStageBindings . InputVaryings [ i ] . Varying . GetData ( ) ) , TOpenGLStage0 : : TypeEnum , TOpenGLStage1 : : TypeEnum , PrevLocation ) ) ;
2015-02-06 11:35:30 -05:00
}
else
{
2015-02-25 08:13:48 -05:00
InputErrors . Add ( FString : : Printf ( TEXT ( " Separate Shader Object Binding Error: Input %s @ %d of stage 0x%x written by stage 0x%x without location, can't be rewritten. " ) , ANSI_TO_TCHAR ( NextStageBindings . InputVaryings [ i ] . Varying . GetData ( ) ) , NextStageBindings . InputVaryings [ i ] . Location , TOpenGLStage0 : : TypeEnum , TOpenGLStage1 : : TypeEnum ) ) ;
2015-02-06 11:35:30 -05:00
}
bInterpolatorMatches = false ;
}
}
else
{
2015-02-25 08:13:48 -05:00
InputErrors . Add ( FString : : Printf ( TEXT ( " Separate Shader Object Binding Error: Input %s @ %d of stage 0x%x not written by stage 0x%x " ) , ANSI_TO_TCHAR ( NextStageBindings . InputVaryings [ i ] . Varying . GetData ( ) ) , NextStageBindings . InputVaryings [ i ] . Location , TOpenGLStage0 : : TypeEnum , TOpenGLStage1 : : TypeEnum ) ) ;
2015-02-06 11:35:30 -05:00
bInterpolatorMatches = false ;
}
}
TArray < FOpenGLShaderVarying > OutputElimination ;
for ( int32 i = 0 ; i < PrevStageBindings . OutputVaryings . Num ( ) ; i + + )
{
if ( PrevStageBindings . OutputVaryings [ i ] . Location = = - 1 )
{
2015-02-25 08:13:48 -05:00
FAnsiCharArray Name = PrevStageBindings . OutputVaryings [ i ] . Varying ;
if ( Name . Num ( ) > = 4 & & ( FCStringAnsi : : Strncmp ( Name . GetData ( ) , " out_ " , 4 ) = = 0 | | FCStringAnsi : : Strncmp ( Name . GetData ( ) , " var_ " , 4 ) = = 0 ) )
{
Name . RemoveAt ( 0 , 4 ) ;
}
2015-02-06 11:35:30 -05:00
if ( ! NextStageVaryings . Contains ( Name ) )
{
OutputElimination . Add ( PrevStageBindings . OutputVaryings [ i ] ) ;
2015-02-25 08:13:48 -05:00
UE_LOG ( LogRHI , Warning , TEXT ( " Separate Shader Object Binding Warning: Named output %s of stage 0x%x not read by stage 0x%x " ) , ANSI_TO_TCHAR ( PrevStageBindings . OutputVaryings [ i ] . Varying . GetData ( ) ) , TOpenGLStage1 : : TypeEnum , TOpenGLStage0 : : TypeEnum ) ;
2015-02-06 11:35:30 -05:00
bInterpolatorMatches = false ;
}
}
}
if ( ! bInterpolatorMatches )
{
if ( InputErrors . Num ( ) = = 0 )
{
FOpenGLCodeHeader Header ;
Header . GlslMarker = 0x474c534c ;
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 2996057)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2975196 on 2016/05/12 by Robert.Manuszewski
Garbage Collector will no longer be responsible for generating class token stream, instead the token stream will be generated on startup or when a class has finished loading.
- This way we can avoid very long GC times after new blueprints have been loaded.
- Temporarily enabled CLASS_TokenStreamAssembled check in development builds (for testing purposes)
Change 2993960 on 2016/05/30 by Robert.Manuszewski
Fixing leaked linkers created by blocking load requests during async loading.
Change 2959398 on 2016/04/28 by Steve.Robb
TMap references are strong and cannot be nulled by pending kill. This makes references in values strong too, even though we only really care about keys, which will corrupt the map when nulled.
#jira UE-20828
Change 2960723 on 2016/04/29 by Graeme.Thornton
Fix for texture asset import data being ignored when async loaded
Change 2960938 on 2016/04/29 by Robert.Manuszewski
Nulling out sql db handle after closing it.
Change 2967127 on 2016/05/05 by Steve.Robb
Move constructors explicitly disabled in generated code.
Change 2967143 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2967164 on 2016/05/05 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer
Change 2968650 on 2016/05/06 by Steve.Robb
Fix for HotReload copying module manager.
Change 2968915 on 2016/05/06 by Robert.Manuszewski
Fixing spelling of SetImageIntegrityStatus function name.
Change 2970406 on 2016/05/09 by Steve.Robb
Static analysis fixes:
Function uses '...' bytes of stack: exceeds /analyze:stacksize '81940'. Consider moving some data to heap.
Change 2970419 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
warning C6011: Dereferencing NULL pointer '...'.
warning C6385: Reading invalid data from '...': the readable size is '...' bytes, but '...' bytes may be read.
warning C6386: Buffer overrun while writing to '...': the writable size is '...' bytes, but '...' bytes might be written.
Change 2970431 on 2016/05/09 by Steve.Robb
Static analysis fixes:
warning C6299: Explicitly comparing a bit field to a Boolean type will yield unexpected results.
Change 2972032 on 2016/05/10 by Steven.Hutton
Workflow fixes to bugg / crashgroup filtering. Filters should now correctly persist across queries.
Change 2972085 on 2016/05/10 by Steve.Robb
Const-correctness fix for FLogCategoryBase::IsSuppressed.
Change 2972087 on 2016/05/10 by Steve.Robb
ELogVerbosity moved into its own header.
Change 2972090 on 2016/05/10 by Steve.Robb
Redundant ensure removed.
Change 2972103 on 2016/05/10 by Steve.Robb
Removal of redundant use of USING_CODE_ANALYSIS.
Change 2972139 on 2016/05/10 by Steve.Robb
Fix for ensure macros throwing C6326 warnings during static analysis.
Change 2972147 on 2016/05/10 by Steve.Robb
Fix for UE_LOG_ACTIVE macro throwing C6326 warnings during static analysis.
Change 2972162 on 2016/05/10 by Steve.Robb
SCOPE_CYCLE_COUNTER_GUARD removed.
Change 2972168 on 2016/05/10 by Steve.Robb
Compile error fix for logOrEnsureNanError in static analysis builds.
Change 2973084 on 2016/05/10 by Chris.Wood
Crash Report Server performance tweak
Change 2974030 on 2016/05/11 by Steve.Robb
Fix for IPropertyHandle::SetValue - used to take a non-const reference to a const UObject*, now it takes const references to both non-const and const UObject*.
Change 2974053 on 2016/05/11 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2974191 on 2016/05/11 by Steve.Robb
Fix for template instantiation error in VS2013.
Change 2975298 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2975318 on 2016/05/12 by Steve.Robb
Fix for hot reload info being reported as warnings.
#jira UE-30586
Change 2975447 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Did you intend to use the bitwise-and operator?
warning C6285: (<non-zero constant> || <non-zero constant>) is always a non-zero constant. Did you intend to use the bitwise-and operator?
warning C6286: (<non-zero constant> || <expression>) is always a non-zero constant. <expression> is never evaluated and might have side effects.
warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead?
warning C6316: Incorrect operator: tested expression is constant and non-zero. Use bitwise-and to determine whether bits are set.
Change 2975478 on 2016/05/12 by Steve.Robb
Static analysis fixes for lots of redundant <zero constant> and <non-zero constant> warnings.
Change 2975538 on 2016/05/12 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'StaticResource'
Change 2976640 on 2016/05/13 by Robert.Manuszewski
Fixing crashes caused by token stream generation changes. Making sure the token stream gets re-generated when a class gets re-linked.
#jira UE-30675
Change 2978320 on 2016/05/16 by Steve.Robb
Fix for static analysis warnings in XNA headers.
Change 2978329 on 2016/05/16 by Steve.Robb
Static analysis fixes:
warning C6334: sizeof operator applied to an expression with an operator might yield unexpected results: Parentheses can be used to disambiguate certain usages.
Change 2980222 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2980458 on 2016/05/17 by Chris.Wood
Attempt to fix crash report submission problems from CRP to CR website
[UE-30257] - Crashreports are sometimes missing file attachments
Passing crash GUID so that website can easily check for duplicates in future
Increased request timeout for AddCrash to be longer than website database timeout
Logging retries for future visibility
CRP v.1.1.6
Change 2980639 on 2016/05/17 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'X'.
warning C28182: Dereferencing NULL pointer. 'X' contains the same NULL value as 'Y' did.
Change 2981750 on 2016/05/18 by Steve.Robb
check()s in ContainerAllocationPolicies.h changed to checkSlow()s, as they only exist to check that the container has been written correctly.
Change 2982106 on 2016/05/18 by John.Mahoney
Fixed a crash caused by loading two stat capture files simultaneously in the profiler.
If the user tries to load a capture file while another load is in progress, the previous load is now cancelled and cleaned up before proceeding with the new load.
Made the delegates in FNewStatsReader explicitly specify which profiler instance they are loading data for, instead of relying on the current value of LoadConnection->InstanceId.
This also fixes a crash that occurs when selecting a different capture file in the "Stats dump browser" pane of the profiler (after using Load Folder) while another file is still loading.
Cleaned up some weak pointer usage in the profiler window.
#jira UE-30741
Change 2983366 on 2016/05/19 by Steven.Hutton
Changes for passing crash type directly from CRP to CRW.
Change 2983394 on 2016/05/19 by Steven.Hutton
Minor changes to add crash with more error reporting
Change 2984685 on 2016/05/20 by Robert.Manuszewski
Merging //UE4/Dev-Main @ 2984626 to Dev-Core (//UE4/Dev-Core)
Change 2985143 on 2016/05/20 by Steve.Robb
Missing semi-colons.
Change 2986463 on 2016/05/23 by Steve.Robb
CopyTemp added to make it clear that you want to make a copy (rather than a move, or an accidental copy) at the call site of a function taking rvalue refs.
Change 2986475 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986476 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6313: Incorrect operator: zero-valued flag cannot be tested with bitwise-and.
Change 2986480 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant
Change 2986515 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6340: Mismatch on sign: 'X' passed as _Param_(N) when some unsigned type is required in call to 'Func'
Change 2986680 on 2016/05/23 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'Ptr': the writable size is 'X' bytes, but 'Y' bytes might be written.
warning C6387: 'Ptr' could be '0': this does not adhere to the specification for the function 'Func'
warning C6031: Return value ignored: 'snprintf'.
warning C6340: Mismatch on sign: 'const unsigned int' passed as _Param_(4) when some signed type is required in call to 'snprintf'.
Change 2986865 on 2016/05/23 by Robert.Manuszewski
Removing redundand AddReferencedObjects functions
Change 2987968 on 2016/05/24 by Robert.Manuszewski
Removing redundant UPROPERTY macros from intrinsic classes.
Change 2987979 on 2016/05/24 by Steve.Robb
Optimization of some FString and FPaths operations to produce fewer temporaries.
Change 2988297 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2988430 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6385: Reading invalid data from 'var': the readable size is 'X' bytes, but 'Y' bytes may be read.
Change 2988461 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6235: (<non-zero constant> || <expression>) is always a non-zero constant.
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
Change 2988464 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6262: Function uses 'X' bytes of stack: exceeds /analyze:stacksize 'Y'. Consider moving some data to heap.
Change 2988494 on 2016/05/24 by Steve.Robb
Static analysis fixes:
warning C6237: (<zero> && <expression>) is always zero. <expression> is never evaluated and might have side effects.
Change 2989411 on 2016/05/25 by Robert.Manuszewski
Splitting GC cluster index and intenral object flags to allow more UObjects in editor builds.
Change 2989429 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6387: '_Param_(X)' could be '0': this does not adhere to the specification for the function 'Func'.
Change 2989982 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6001: Using uninitialized memory 'LODPlanesMin'.
Change 2990018 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6386: Buffer overrun while writing to 'X'
Change 2990077 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>.
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2990114 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent.
Change 2990125 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6239: (<non-zero constant> && <expression>) always evaluates to the result of <expression>.
Change 2990162 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C6294: Ill-defined for-loop: initial condition does not satisfy test. Loop body not executed.
Change 2990193 on 2016/05/25 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'type' contains the same NULL value as 'type->base_type' did.
warning C6011: Dereferencing NULL pointer 'Semantic'.
Change 2991006 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28113: Accessing a local variable dummy via an Interlocked function: This is an unusual usage which could be reconsidered.
Change 2991012 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6031: Return value ignored: 'InitializeCriticalSectionAndSpinCount'.
Change 2991013 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6287: Redundant code: the left and right sub-expressions are identical.
Change 2991016 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6236: (<expression> || <non-zero constant>) is always a non-zero constant.
Change 2991017 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6326: Potential comparison of a constant with another constant.
Change 2991019 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6292: Ill-defined for-loop: counts up from maximum.
Change 2991023 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6322: Empty _except block.
warning C28251: Inconsistent annotation for 'WinMain': this instance has no annotations.
Change 2991070 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C28182: Dereferencing NULL pointer. 'Ptr1' contains the same NULL value as 'Ptr2' did.
Change 2991416 on 2016/05/26 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992738 on 2016/05/27 by Steve.Robb
Revert changes to FString::MatchesWildcard.
Change 2992916 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2992960 on 2016/05/27 by Chris.Wood
Optimized P4 access in Crash Report Process and MinidumpDiagostics.
Change 2992964 on 2016/05/27 by Steve.Robb
Static analysis fixes:
warning C6011: Dereferencing NULL pointer 'Ptr'.
Change 2993956 on 2016/05/30 by Robert.Manuszewski
Fixing a crash after adding a new C++ class in the editor - made sure new classes have the token stream assembled after hot-reload.
#jira UE-31309
Change 2993977 on 2016/05/30 by Robert.Manuszewski
Don't wait for all packages to finish loading before PostLoading those which already have.
Change 2994206 on 2016/05/31 by Robert.Manuszewski
PR #2429: Three bug fixes required for script support to work properly (Contributed by pluranium)
#lockdown Nick.Penwarden
[CL 2996251 by Robert Manuszewski in Main branch]
2016-06-01 12:08:56 -04:00
CA_SUPPRESS ( 6326 ) ;
2015-02-06 11:35:30 -05:00
switch ( ( int32 ) TOpenGLStage1 : : StaticFrequency )
{
case SF_Vertex :
Header . FrequencyMarker = 0x5653 ;
break ;
case SF_Pixel :
Header . FrequencyMarker = 0x5053 ;
break ;
case SF_Geometry :
Header . FrequencyMarker = 0x4753 ;
break ;
case SF_Hull :
Header . FrequencyMarker = 0x4853 ;
break ;
case SF_Domain :
Header . FrequencyMarker = 0x4453 ;
break ;
case SF_Compute :
Header . FrequencyMarker = 0x4353 ;
break ;
default :
UE_LOG ( LogRHI , Fatal , TEXT ( " Invalid shader frequency: %d " ) , ( int32 ) TOpenGLStage1 : : StaticFrequency ) ;
}
Header . Bindings = PrevStage - > Bindings ;
Header . UniformBuffersCopyInfo = PrevStage - > UniformBuffersCopyInfo ;
TArray < FString > PrevLines ;
FString PrevSource = GetShaderStageSource < TOpenGLStage1 > ( PrevStage ) ;
2015-03-02 15:51:37 -05:00
PrevSource . ParseIntoArrayLines ( PrevLines ) ;
2015-02-06 11:35:30 -05:00
bool const bOutputElimination = OutputElimination . Num ( ) > 0 ;
for ( FOpenGLShaderVarying Output : OutputElimination )
{
for ( int32 i = 0 ; i < PrevLines . Num ( ) ; i + + )
{
2015-02-25 08:13:48 -05:00
if ( PrevLines [ i ] . Contains ( Output . Varying . GetData ( ) ) )
2015-02-06 11:35:30 -05:00
{
PrevLines [ i ] . Empty ( ) ;
}
}
for ( int32 i = 0 ; i < Header . Bindings . OutputVaryings . Num ( ) ; i + + )
{
if ( Output = = Header . Bindings . OutputVaryings [ i ] )
{
Header . Bindings . OutputVaryings . RemoveAt ( i ) ;
break ;
}
}
}
OutputElimination . Empty ( ) ;
bool const bVaryingRemapping = VaryingMapping . Num ( ) > 0 ;
if ( OutputElimination . Num ( ) = = 0 & & VaryingMapping . Num ( ) = = 0 & & ( bOutputElimination | | bVaryingRemapping ) )
{
FString NewPrevSource ;
for ( FString Line : PrevLines )
{
if ( ! Line . IsEmpty ( ) )
{
NewPrevSource + = Line + TEXT ( " \n " ) ;
}
}
TArray < uint8 > Bytes ;
FMemoryWriter Ar ( Bytes ) ;
Ar < < Header ;
TArray < ANSICHAR > Chars ;
int32 Len = FCStringAnsi : : Strlen ( TCHAR_TO_ANSI ( * NewPrevSource ) ) + 1 ;
Chars . Append ( TCHAR_TO_ANSI ( * NewPrevSource ) , Len ) ;
Ar . Serialize ( Chars . GetData ( ) , Chars . Num ( ) ) ;
TRefCountPtr < TOpenGLStage1 > NewPrev ( CompileOpenGLShader < TOpenGLStage1 > ( Bytes ) ) ;
PrevInfo . Bindings = Header . Bindings ;
PrevInfo . Resource = NewPrev - > Resource ;
}
bInterpolatorMatches = ( OutputElimination . Num ( ) = = 0 & & VaryingMapping . Num ( ) = = 0 ) ;
}
else
{
for ( int32 i = 0 ; i < InputErrors . Num ( ) ; i + + )
{
UE_LOG ( LogRHI , Error , TEXT ( " %s " ) , * InputErrors [ i ] ) ;
}
}
if ( ! bInterpolatorMatches )
{
2015-03-31 20:12:31 -04:00
FString PrevShaderStageSource = GetShaderStageSource < TOpenGLStage1 > ( PrevStage ) ;
FString NextShaderStageSource = GetShaderStageSource < TOpenGLStage0 > ( NextStage ) ;
UE_LOG ( LogRHI , Error , TEXT ( " Separate Shader Object Stage 0x%x: \n %s " ) , TOpenGLStage1 : : TypeEnum , * PrevShaderStageSource ) ;
UE_LOG ( LogRHI , Error , TEXT ( " Separate Shader Object Stage 0x%x: \n %s " ) , TOpenGLStage0 : : TypeEnum , * NextShaderStageSource ) ;
2015-02-06 11:35:30 -05:00
}
}
GetOpenGLSeparateShaderObjectCache ( ) . Add ( Config , PrevInfo ) ;
}
}
ShaderInfo . Bindings = NextStageBindings ;
ShaderInfo . Resource = NextStageResource ;
ShaderInfo . Hash = NextStage - > GetHash ( ) ;
}
2014-03-14 14:13:41 -04:00
// ============================================================================================================================
FBoundShaderStateRHIRef FOpenGLDynamicRHI : : RHICreateBoundShaderState (
FVertexDeclarationRHIParamRef VertexDeclarationRHI ,
FVertexShaderRHIParamRef VertexShaderRHI ,
FHullShaderRHIParamRef HullShaderRHI ,
FDomainShaderRHIParamRef DomainShaderRHI ,
FPixelShaderRHIParamRef PixelShaderRHI ,
FGeometryShaderRHIParamRef GeometryShaderRHI
)
{
2015-03-24 08:49:41 -04:00
check ( IsInRenderingThread ( ) ) ;
2014-03-14 14:13:41 -04:00
VERIFY_GL_SCOPE ( ) ;
SCOPE_CYCLE_COUNTER ( STAT_OpenGLCreateBoundShaderStateTime ) ;
if ( ! PixelShaderRHI )
{
// use special null pixel shader when PixelShader was set to NULL
2014-08-28 06:22:54 -04:00
PixelShaderRHI = TShaderMapRef < FNULLPS > ( GetGlobalShaderMap ( GMaxRHIFeatureLevel ) ) - > GetPixelShader ( ) ;
2014-03-14 14:13:41 -04:00
}
// Check for an existing bound shader state which matches the parameters
FCachedBoundShaderStateLink * CachedBoundShaderStateLink = GetCachedBoundShaderState (
VertexDeclarationRHI ,
VertexShaderRHI ,
PixelShaderRHI ,
HullShaderRHI ,
DomainShaderRHI ,
GeometryShaderRHI
) ;
if ( CachedBoundShaderStateLink )
{
// If we've already created a bound shader state with these parameters, reuse it.
return CachedBoundShaderStateLink - > BoundShaderState ;
}
else
{
2015-04-20 13:30:27 -04:00
FOpenGLVertexShader * VertexShader = ResourceCast ( VertexShaderRHI ) ;
FOpenGLPixelShader * PixelShader = ResourceCast ( PixelShaderRHI ) ;
FOpenGLHullShader * HullShader = ResourceCast ( HullShaderRHI ) ;
FOpenGLDomainShader * DomainShader = ResourceCast ( DomainShaderRHI ) ;
FOpenGLGeometryShader * GeometryShader = ResourceCast ( GeometryShaderRHI ) ;
2014-03-14 14:13:41 -04:00
FOpenGLLinkedProgramConfiguration Config ;
2014-10-03 06:02:18 -04:00
check ( VertexShader ) ;
check ( PixelShader ) ;
2014-03-14 14:13:41 -04:00
// Fill-in the configuration
2014-07-15 13:25:14 -04:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Bindings = VertexShader - > Bindings ;
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Resource = VertexShader - > Resource ;
2015-02-06 11:35:30 -05:00
Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] . Hash = VertexShader - > GetHash ( ) ;
2014-04-30 23:51:07 -04:00
if ( FOpenGL : : SupportsTessellation ( ) )
2014-03-14 14:13:41 -04:00
{
if ( HullShader )
{
2015-02-06 11:35:30 -05:00
check ( VertexShader ) ;
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] , HullShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] , VertexShader ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-30 23:51:07 -04:00
if ( DomainShader )
2015-02-06 11:35:30 -05:00
{
check ( HullShader ) ;
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] , DomainShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_HULL ] , HullShader ) ;
2014-03-14 14:13:41 -04:00
}
}
2015-02-06 11:35:30 -05:00
if ( GeometryShader )
{
check ( DomainShader | | VertexShader ) ;
if ( DomainShader )
{
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] , GeometryShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] , DomainShader ) ;
}
else
{
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] , GeometryShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] , VertexShader ) ;
}
}
check ( DomainShader | | GeometryShader | | VertexShader ) ;
if ( DomainShader )
{
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] , PixelShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_DOMAIN ] , DomainShader ) ;
}
else if ( GeometryShader )
{
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] , PixelShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_GEOMETRY ] , GeometryShader ) ;
}
else
{
BindShaderStage ( Config . Shaders [ CrossCompiler : : SHADER_STAGE_PIXEL ] , PixelShader , Config . Shaders [ CrossCompiler : : SHADER_STAGE_VERTEX ] , VertexShader ) ;
}
2014-03-14 14:13:41 -04:00
// Check if we already have such a program in released programs cache. Use it, if we do.
FOpenGLLinkedProgram * LinkedProgram = 0 ;
int32 Index = StaticLastReleasedProgramsIndex ;
for ( int CacheIndex = 0 ; CacheIndex < LAST_RELEASED_PROGRAMS_CACHE_COUNT ; + + CacheIndex )
{
FOpenGLLinkedProgram * Prog = StaticLastReleasedPrograms [ Index ] ;
if ( Prog & & Prog - > Config = = Config )
{
StaticLastReleasedPrograms [ Index ] = 0 ;
LinkedProgram = Prog ;
break ;
}
Index = ( Index = = LAST_RELEASED_PROGRAMS_CACHE_COUNT - 1 ) ? 0 : Index + 1 ;
}
if ( ! LinkedProgram )
{
FOpenGLLinkedProgram * * CachedProgram = GetOpenGLProgramsCache ( ) . Find ( Config ) ;
if ( CachedProgram )
{
LinkedProgram = * CachedProgram ;
}
else
{
2016-06-13 12:20:22 -04:00
// In case ProgramBinaryCache is enabled we defer shader compilation, look LinkProgram
if ( ! FOpenGLProgramBinaryCache : : IsEnabled ( ) )
2014-03-14 14:13:41 -04:00
{
2016-06-13 12:20:22 -04:00
const ANSICHAR * GlslCode = NULL ;
if ( ! VertexShader - > bSuccessfullyCompiled )
2014-03-14 14:13:41 -04:00
{
# if DEBUG_GL_SHADERS
2016-06-13 12:20:22 -04:00
GlslCode = VertexShader - > GlslCodeString ;
2014-03-14 14:13:41 -04:00
# endif
2016-06-13 12:20:22 -04:00
VertexShader - > bSuccessfullyCompiled = VerifyCompiledShader ( VertexShader - > Resource , GlslCode ) ;
2014-03-14 14:13:41 -04:00
}
2016-06-13 12:20:22 -04:00
if ( ! PixelShader - > bSuccessfullyCompiled )
2014-03-14 14:13:41 -04:00
{
# if DEBUG_GL_SHADERS
2016-06-13 12:20:22 -04:00
GlslCode = PixelShader - > GlslCodeString ;
2014-03-14 14:13:41 -04:00
# endif
2016-06-13 12:20:22 -04:00
PixelShader - > bSuccessfullyCompiled = VerifyCompiledShader ( PixelShader - > Resource , GlslCode ) ;
}
if ( GeometryShader & & ! GeometryShader - > bSuccessfullyCompiled )
{
# if DEBUG_GL_SHADERS
GlslCode = GeometryShader - > GlslCodeString ;
# endif
GeometryShader - > bSuccessfullyCompiled = VerifyCompiledShader ( GeometryShader - > Resource , GlslCode ) ;
}
if ( FOpenGL : : SupportsTessellation ( ) )
{
if ( HullShader & & ! HullShader - > bSuccessfullyCompiled )
{
# if DEBUG_GL_SHADERS
GlslCode = HullShader - > GlslCodeString ;
# endif
HullShader - > bSuccessfullyCompiled = VerifyCompiledShader ( HullShader - > Resource , GlslCode ) ;
}
if ( DomainShader & & ! DomainShader - > bSuccessfullyCompiled )
{
# if DEBUG_GL_SHADERS
GlslCode = DomainShader - > GlslCodeString ;
# endif
DomainShader - > bSuccessfullyCompiled = VerifyCompiledShader ( DomainShader - > Resource , GlslCode ) ;
}
2014-03-14 14:13:41 -04:00
}
}
2016-06-13 12:20:22 -04:00
2014-03-14 14:13:41 -04:00
// Make sure we have OpenGL context set up, and invalidate the parameters cache and current program (as we'll link a new one soon)
GetContextStateForCurrentContext ( ) . Program = - 1 ;
MarkShaderParameterCachesDirty ( PendingState . ShaderParameters , false ) ;
// Link program, using the data provided in config
LinkedProgram = LinkProgram ( Config ) ;
// Add this program to the cache
GetOpenGLProgramsCache ( ) . Add ( Config , LinkedProgram ) ;
if ( LinkedProgram = = NULL )
{
# if DEBUG_GL_SHADERS
if ( VertexShader - > bSuccessfullyCompiled )
{
2014-09-29 04:23:44 -04:00
UE_LOG ( LogRHI , Error , TEXT ( " Vertex Shader: \n %s " ) , ANSI_TO_TCHAR ( VertexShader - > GlslCode . GetData ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
if ( PixelShader - > bSuccessfullyCompiled )
{
2014-09-29 04:23:44 -04:00
UE_LOG ( LogRHI , Error , TEXT ( " Pixel Shader: \n %s " ) , ANSI_TO_TCHAR ( PixelShader - > GlslCode . GetData ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
if ( GeometryShader & & GeometryShader - > bSuccessfullyCompiled )
{
2014-09-29 04:23:44 -04:00
UE_LOG ( LogRHI , Error , TEXT ( " Geometry Shader: \n %s " ) , ANSI_TO_TCHAR ( GeometryShader - > GlslCode . GetData ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-30 23:51:07 -04:00
if ( FOpenGL : : SupportsTessellation ( ) )
2014-03-14 14:13:41 -04:00
{
if ( HullShader & & HullShader - > bSuccessfullyCompiled )
{
2014-09-29 04:23:44 -04:00
UE_LOG ( LogRHI , Error , TEXT ( " Hull Shader: \n %s " ) , ANSI_TO_TCHAR ( HullShader - > GlslCode . GetData ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
if ( DomainShader & & DomainShader - > bSuccessfullyCompiled )
{
2014-09-29 04:23:44 -04:00
UE_LOG ( LogRHI , Error , TEXT ( " Domain Shader: \n %s " ) , ANSI_TO_TCHAR ( DomainShader - > GlslCode . GetData ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
}
# endif //DEBUG_GL_SHADERS
check ( LinkedProgram ) ;
}
}
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#lockdown Nick.Penwarden
#rb None
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3358140 on 2017/03/22 by Rolando.Caloca
DR - Fix copy to cube face
- Compile fix when using dump layer
- Add new error enum
Change 3358301 on 2017/03/22 by Mitchell.Wilson
Initial check in of LODs in InfiltratorForward. First pass on optimization in level. Adding a visibility track for SceneCapture2D in tunnel section.
Change 3358477 on 2017/03/22 by Mitchell.Wilson
Updating Skeletal Mesh DPW_Robot_Export to resolve screen size being too low for LOD1. Cleaned up LOD1 which was showing some visible popping when transitioning.
Change 3358529 on 2017/03/22 by Mark.Satterthwaite
Globally disable clang's "constant-logical-operand" warning when running under Distcc - it is much easier and less invasive than constantly fixing the code.
Change 3358745 on 2017/03/22 by Mark.Satterthwaite
Disable another warning (parentheses-equality) under Distcc because again the separation of preprocessing from compilation means it turns up where it isn't expected.
Change 3358837 on 2017/03/22 by Joe.Graf
Merge of pull request #3214 for the RenderDocPlugin
#CodeReview: matt.kuhlenschmidt, marcus.wassmer
#rb: marcus.wassmer
Change 3359112 on 2017/03/22 by Ben.Salem
Update perf monitor to include frame time by default. Also, use only game/PIE world timers when in editor, instead of all worlds combined.
#tests Ran several Showdown test runs with plugin!
Change 3359363 on 2017/03/22 by Joe.Graf
First pass at non-unity & no pch compilation
Change 3359449 on 2017/03/22 by Joe.Graf
Added missing null check when exporting a EXR on Linux (UE-40268)
#CodeReview: dmitry.rekman
#rb: n/a
Change 3360349 on 2017/03/23 by Guillaume.Abadie
Fixes TAA's AA_FORCE_ALPHA_CLAMP causing DOF layouts.
#jira UE-42920
Change 3360405 on 2017/03/23 by Marcus.Wassmer
Better method for detecting Kepler
Change 3360718 on 2017/03/23 by Daniel.Wright
Planar reflections handle views smaller than the render target in a general way
* Fixes planar reflections with adaptive pixel density (ViewFamily size larger than actual views combined)
* Planar reflections are now supported in splitscreen
Change 3360758 on 2017/03/23 by Daniel.Wright
[Copy] Added new light property bCastVolumetricShadow, which defaults to true for directional and sky lights, but false for point / spot lights as supporting volumetric fog shadowing has significant GPU overhead
Change 3360762 on 2017/03/23 by Daniel.Wright
[Copy] Texture flags are now properly routed to RHICreateTexture3D from the render target pool
Change 3360768 on 2017/03/23 by Daniel.Wright
[Copy] Disabled GPUProfiler histogram by default, controlled by r.ProfileGPU.ShowEventHistogram
Change 3360770 on 2017/03/23 by Daniel.Wright
[Copy] Disabled fast clears on CustomDepth, saves .2ms on xbox
Change 3360771 on 2017/03/23 by Daniel.Wright
[Copy] Particle lights no longer force tiled deferred lighting. Tiled deferred lighting is only used if enough unshadowed lights + particle lights are on screen. Saves 1.5ms Xbox with one particle light.
Change 3360774 on 2017/03/23 by Daniel.Wright
[Copy] Distance field cvar comments
Change 3360782 on 2017/03/23 by Daniel.Wright
[Copy] Disabled selection color on Volume materials
Change 3360795 on 2017/03/23 by Daniel.Wright
[Copy] Volume materials now specify Albedo and Extinction, which is more intuitive than Scattering and Absorption. Albedo is [0-1] reflectance, while Extinction is a world space density.
Change 3360799 on 2017/03/23 by Daniel.Wright
[Copy] Cinematic scalability levels get 2x volumetric fog resolution in x and y
Change 3360806 on 2017/03/23 by Daniel.Wright
[Copy] Fixed volumetric fog being offset when viewport min is not 0
Change 3360809 on 2017/03/23 by Daniel.Wright
[Copy] Volumetric fog now adds a bias to the inverse squared light falloff denominator, prevents extreme aliasing from the hotspot. Can be controlled with r.VolumetricFog.InverseSquaredLightDistanceBiasScale.
Change 3361651 on 2017/03/23 by Brian.Karis
Higher quality sharp SSR at quality 4
Change 3361678 on 2017/03/23 by Brian.Karis
Fresnel darkens diffuse for clearcoat.
Change 3361683 on 2017/03/23 by Brian.Karis
Fixed SSR artifact
Change 3361691 on 2017/03/23 by Brian.Karis
Chagned min roughness limit
Change 3361707 on 2017/03/23 by Brian.Karis
Added inverse film tone map
Change 3361726 on 2017/03/23 by Brian.Karis
Better precision inverse
Change 3361758 on 2017/03/23 by Brian.Karis
Material flag normal curvature to roughness is no longer forward only.
Change 3361765 on 2017/03/23 by Brian.Karis
Update ACES
Change 3361774 on 2017/03/23 by Brian.Karis
Cleaned up alpha support and disabled screen edge clipping.
Change 3362478 on 2017/03/24 by Guillaume.Abadie
Cherry pick 3316084's PostProcessing.cpp: Fixes a bug in Circle DOF where the apply pass was no longer using the downres DOF's TAA output.
#author Brian.Karis
#jira UE-42920
Change 3362738 on 2017/03/24 by Rolando.Caloca
DR - Hide scene capture on IF
Change 3362890 on 2017/03/24 by Guillaume.Abadie
Renames r.SceneAlpha to r.PostProcessing.PropagateAlpha
Change 3363665 on 2017/03/24 by Mark.Satterthwaite
PR #3414: Add command line option "-noheartbeatthread" to disable heart beat thread (Contributed by JeffRous)
Change 3363866 on 2017/03/24 by Arne.Schober
DR - Updated NVAPI
#RB Marcus.Wassmer
Change 3364300 on 2017/03/24 by Brian.Karis
SSR use dynamic velocity
Change 3364372 on 2017/03/24 by Brian.Karis
Fix changing off axis projection velocities.
Change 3364373 on 2017/03/24 by Brian.Karis
Enabled velocity drawing in scene captures
Change 3365531 on 2017/03/27 by Guillaume.Abadie
Computes the material's screen position material expression directly from the pixel shader SvPosition
Change 3365764 on 2017/03/27 by Chris.Bunner
Lowering severity of crash for missing values in scalability.ini.
#jira UE-41331
Change 3365916 on 2017/03/27 by Guillaume.Abadie
Exposes the viewport offset within the view property material expression
Change 3365979 on 2017/03/27 by Brian.Karis
Fixed skylight intensity from double applying
Change 3365987 on 2017/03/27 by Brian.Karis
Stopped post process indirect lighting intensity from scaling skylight reflections
Change 3365991 on 2017/03/27 by Brian.Karis
Fix for static analysis
Change 3366028 on 2017/03/27 by Daniel.Wright
Volumetric fog supports static shadowing from Stationary lights
* Using bilinear on static shadowmap depths + 1 PCF to smooth out results
Change 3366029 on 2017/03/27 by Daniel.Wright
Static shadow depth maps for Stationary point and spot lights are 2x higher res by default (4x more texels), which is more appropriate for volumetric fog
Change 3366055 on 2017/03/27 by Guillaume.Abadie
Cherry picks 3251469: Implements scene capture component's CaptureSortPriority to control GPU execution order in order to manage inter dependencies.
Change 3366447 on 2017/03/27 by Simon.Tourangeau
Fix IES light profile importer.
- Bug in the LM-63-1986 format importer.
Change 3366836 on 2017/03/27 by Brian.Karis
ClearUAV now supports int types
Change 3367435 on 2017/03/28 by Benjamin.Hyder
Submitting Decal Automation map for initial approval
Change 3367572 on 2017/03/28 by Chris.Bunner
Changed ClampedPow {max(abs(x),0.00001)} to PositiveClampedPow {max(x,0)} to give more expected results to Power node in material graphs.
#jira UE-42989
Change 3367756 on 2017/03/28 by Olaf.Piesche
Niagara material usage flags
Change 3367835 on 2017/03/28 by Marcus.Wassmer
Fix crash when TileRenderer runs before anything else. Make explicit behavior when rendering at a time when there is no valid scene.
Change 3367837 on 2017/03/28 by Marcus.Wassmer
Missed a file.
Change 3367838 on 2017/03/28 by Richard.Wallis
Updated items from original shelved version by Mark Satt:
- Added MetalBackend.cpp to change main function string to have an initial crc + code length zero's
**Description below taken from Mark Satt's original verison of this in CL3343280**
Updated for Dev-Rendering's PSOs & integrates Richard's work on RHI shader libraries.
Replace the FShaderCache's cook-time binary shader cache with Dmitriy Dyomin's standalone FShaderCodeLibrary that saves all shader byte-code arrays to files named by the FSHAHash. This de-duplicates shaders so we only ever store the byte code once. Includes optional support for generating a platform specific library file - which Metal implements to provide a single Metal library. The platform-native implementation can perform more de-duplication and in the case of Metal has lower file overheads and will compress more efficiently.
- All of the support code for the FShaderCache's cook caching is gone, which affects all platforms. The FShaderCodeLibrary is currently supported by Cook-By-The-Book but can be used with iterate or child cookers - only DLC cooking requires further work.
- With further modifications it should be possible to support Cook-on-the-Fly as well (output directories would be needed in FShaderCodeLibrary::InitForCooking) and the file-access pattern should be changed to use async. IO so that Material loading is not considered complete until all required byte-code arrays are loaded into the FShaderCodeLibrary.
- For Metal archiving shaders this way will compile with debug information and the FShaderCodeLibrary, with some help from extensions to IShaderFormat, will save the debug information out into separate files during cooking - these can then be used to debug the game without having to locally recompile, recook & repackage but the shipped byte-code is stripped. Global shader caches are also subject to de-duplication in the library in order to support Metal's shader stripping.
- File Move operations need to respect the 'Replace' flag - for FShaderCodeLibrary to work we need Move to be atomic.
- This bumps the object version and will cause all content to recook.
- Native library support is optional - only Metal currently implements one, but so could Vulkan and D3D12. For Metal the big advantages are further de-duplication where different materials generate the same MetalSL text but a different FSHAHash, that the single Metal library has lower overhead and that as a single file it all compresses far better (esp. with LZMA - 5x smaller).
Change 3367854 on 2017/03/28 by Mark.Satterthwaite
Don't track or record draw call resources for non-OpenGL shader platforms in the shader-cache as it is unnecessary and makes it slower on the CPU than it needs to be.
Change 3367877 on 2017/03/28 by Brian.Karis
Fixed linux build hopefully
Change 3368001 on 2017/03/28 by Mark.Satterthwaite
Compile fixes from Richard's checkin caused by not having visibility to all platforms from my original shelves.
Change 3368019 on 2017/03/28 by Mark.Satterthwaite
And another fix for Windows compilation of MetalShaderFormat.
Change 3368042 on 2017/03/28 by Mark.Satterthwaite
And a couple of simpler MSVC errors.
Change 3368271 on 2017/03/28 by Mark.Satterthwaite
Make SceneRenderTargets compile again.
Change 3368691 on 2017/03/28 by Daniel.Wright
[Copy from BenW] Renamed r.Shadow.MaxCSMShadowResolution to r.Shadow.MaxCSMResolution to match scalability inis
Change 3369689 on 2017/03/29 by Marcus.Wassmer
Fix non editor compile for now
Change 3369862 on 2017/03/29 by Marcus.Wassmer
Get the rest of the things compiling again.
Change 3369896 on 2017/03/29 by Chris.Bunner
Enabling AMD HDR support by default.
#jira UE-42113
Change 3370535 on 2017/03/29 by Marcus.Wassmer
DR - Fix template explicit instantiation for ClearUAV permutations
#RB Brian.Karis, Arne.Schober
Change 3370704 on 2017/03/29 by Rolando.Caloca
DR - Rewrote GPU Skin Cache
- Per section buffers
- Limited memory per non-editor worlds (control with r.SkinCache.SceneMemoryLimitInMB)
Copied from 3370529
Change 3371389 on 2017/03/30 by Richard.Wallis
Remove temp working directories after archive packages built.
Change 3371641 on 2017/03/30 by Rolando.Caloca
DR - Copy 3371640 (fix mem leak)
Change 3372436 on 2017/03/30 by Uriel.Doyon
Added flags in UPrimitiveComponent to keep track of its state in the streaming manager.
This allows to avoid unnecessary callback and processing in begin destroy reattach and being destroy logic.
Removed the limitation of only processing UMeshComponent when handling spawed primitive.
This releases the level manager from having to manage dynamic primitives.
This improves performance by not having to manage dynamic references in the level manager.
Primitives managed as dynamic now have a callback when ever their proxy is udpated, handling
many cases automatically where previously a manual callback to notify would have been required.
Fixed an issue where primitives with no reference to streaming textures would loose they dynamic state
because of lack of references in the streamer.
Change 3372740 on 2017/03/30 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 3372765 on 2017/03/30 by Uriel.Doyon
Disabled concurrent call to NotifyPrimitiveUpdated while we don't have a safe concurrent update
Change 3372979 on 2017/03/30 by Richard.Hinckley
#jira UE-43501
The stencil buffer can now use single-channel bitmasks that ignore depth. This makes it possible to detect overlaps between stencil objects.
Change 3373053 on 2017/03/30 by Simon.Tourangeau
LPV Fade support
- mostly integrated from CL 2959511
Change 3373272 on 2017/03/30 by Uriel.Doyon
Added support for the concurrent update of dynamic primitives by the streaming manager.
Change 3373450 on 2017/03/30 by Rolando.Caloca
DR - FNT - Fix bad data for odd texcoord channels used on skin cache passthrough factory
Copy 3373364
#jira UE-43492
Change 3373470 on 2017/03/30 by Marcus.Wassmer
Nvidia Aftermath support
Change 3374187 on 2017/03/31 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 3374233 on 2017/03/31 by Chris.Bunner
Removed several redundant post process compute fences and resource transitions.
Added testing CVar to force compute post processes to async (r.PostProcess.ForceAsyncDispatch).
Change 3374412 on 2017/03/31 by Rolando.Caloca
DR - Fix static analysis
Change 3374544 on 2017/03/31 by Richard.Wallis
FShaderCache Parallel-Context-Aware Merged with FShaderCache Single Library.
Future Work
- This was done before Engine PSO were in so this now needs a refector in the recording and playback on pipeline states instead an emulate PSO in OpenGL Driver.
- Remove FShaderCacheState and replace the logic with FGraphicsPipelineStateInitializer which should be able to record from the RHI current pipeline state
- This would reduce the Locking required as it's naturally per thread/context and only the final record would need a lock
Change 3374588 on 2017/03/31 by Richard.Wallis
Windows Compile Fixes
Change 3374810 on 2017/03/31 by Benjamin.Hyder
updating recommended GPU drivers
Change 3375207 on 2017/03/31 by Rolando.Caloca
DR - vk - Fixed swapchain format selection for some Linux platforms
Change 3375248 on 2017/03/31 by Rolando.Caloca
DR - vk - Prefer D32S8
Change 3375495 on 2017/03/31 by Rolando.Caloca
DR - vk - Update to sdk 1.0.42.2
Change 3375496 on 2017/03/31 by Rolando.Caloca
DR - Force compiling with updated Vulkan SDK
Change 3375636 on 2017/03/31 by Mark.Satterthwaite
Copying Metal improvements from task stream, with some modifications:
- Off-by-default implementations for MTLFence & MTLHeap, including some small changes to the RHI interface for parallel contexts.
- Support for Apple's Instruments "Points of Interest" tool.
- Consolidation of some Mac & iOS compiler, memory and thread handling code.
- Fixes for Metal not having implicit buffer SRV typecasting for DistanceField effects.
- Improvements to the internal FMetalDebug layer, still off by default.
- Limited support for Xcode automatic code-signing for iOS/tvOS.
- Minimisation of render-target changes in some rendering code, esp. SceneOcclusion, DBufferDecals.
- Added RHISetResourceAliasability_RenderThread to FDynamicRHI for RHIs to implement simple render-target aliasing.
- Added FApplePlatformObject, a custom block allocator for Objective-C types (with NSZombie support) which is now used in MetalRHI to decrease allocation costs of Objective-C types.
- Smattering of lesser fixes.
Change 3375654 on 2017/03/31 by Mark.Satterthwaite
Incremental Windows build fix.
Change 3375656 on 2017/04/01 by Mark.Satterthwaite
Correct extern declaration, including the module export macro which Mac unhelpfully doesn't enforce (for now...).
Change 3375797 on 2017/04/01 by Mark.Satterthwaite
Nullability qualifiers to fix Mac build-farm compilation: perversely this is not a problem for local builds...
Change 3375798 on 2017/04/01 by Mark.Satterthwaite
Fix the first mis-merge in ParticleGpuSimulation - these changes clearly weren't properly resolved in the task-stream.
Change 3375835 on 2017/04/01 by Mark.Satterthwaite
Try again with nullability and fix the occlusion changes as the PSO work wasn't merged correctly.
Change 3376143 on 2017/04/02 by Mark.Satterthwaite
Switch back to flat dSYMs for Dev-Rendering - they don't work with Instruments etc. but they are required by our build system.
Change 3376324 on 2017/04/03 by Chris.Bunner
Fixed cvar re-registration log spam and flagged a testing-only cvar as such.
Change 3376726 on 2017/04/03 by Benjamin.Hyder
Submitting initial HDR test map (WIP)
Change 3376756 on 2017/04/03 by Guillaume.Abadie
Fixes scene captures ordering's backward compatibility.
Before, 2d scene captures were rendered before cube scene captures. The CaptureSortPriority broke backward compatibility by settings this new member to 0 in the USceneCaptureComponent's constructor. Since it is a higher come first policy, this CL set the default of this value to 1 in USceneCaptureComponent2D's constructor.
Change 3377378 on 2017/04/03 by Arne.Schober
DR - Fix ShaderRecompiling over and over again
#RB Chris.Bunner
Change 3377512 on 2017/04/03 by Daniel.Wright
[Copy] Fixed profilegpu in d3d12 - initialize FLongGPUTaskPS when it is safe to do so, and fixed FSlateRHIRenderer's incorrect usage of draw events
Change 3377518 on 2017/04/03 by Daniel.Wright
[Copy] Distance field atlas coalesces updates to reduce RHIUpdateTexture3D memory overhead on d3d12
Change 3377526 on 2017/04/03 by Daniel.Wright
[Copy] "Ran out of GPU queries!" log only happens once
Change 3377535 on 2017/04/03 by Daniel.Wright
[Copy] Fixed unreferenced local variable
Change 3377539 on 2017/04/03 by Daniel.Wright
[Copy] Xbox One RHIGetResourceInfo takes ESRAM into account - fixes render target pool 'VRamInKB request failed' messages
Change 3377546 on 2017/04/03 by Daniel.Wright
[Copy] Added r.LightMaxDrawDistanceScale for local light scalability
Change 3377553 on 2017/04/03 by Daniel.Wright
[Copy] Removed NEW_ESRAM_ALLOCATOR define and old unused path
Change 3377560 on 2017/04/03 by Daniel.Wright
[Copy] Fixed two d3d12 refcounting bugs causing -norhithread crashes
Change 3377565 on 2017/04/03 by Daniel.Wright
[Copy] Fixed Xbox One deleting GPU resources before the GPU is done reading from them (GRHINeedsExtraDeletionLatency was false)
Change 3377572 on 2017/04/03 by Daniel.Wright
[Copy] Disabled point / spot lights with MaxDrawDistance on LowPC
Change 3377586 on 2017/04/03 by Daniel.Wright
Fixed compile error
Change 3377699 on 2017/04/03 by David.Hill
FFT Code. Moved over from raven and refactored
#review-3374589 @guillaume.abadie
Change 3377910 on 2017/04/03 by David.Hill
GPU FFT: Fix Linux Build
adding a missing template<> to an IMPLEMENT_SHADER_TYPE
Change 3378751 on 2017/04/04 by Marcus.Wassmer
HQ particle lights now spawn attached to the same socket as their parent module.
Change 3378819 on 2017/04/04 by Richard.Wallis
Should be no need to protect shader cache against RHI thread now.
Change 3378823 on 2017/04/04 by Richard.Wallis
FRHIShaderLibrary Opaque Type
- Base FRHIShaderLibrary has no Create*Shader functions and is passed to Overloaded RHICreate*Shader functions instead of creation directly through the library.
- Assumed that only Native libraries will end up in the RHICreate*Shader functions.
- ShaderCache and ShaderCode Libraries now inherit from a common factory interface.
Change 3378883 on 2017/04/04 by Arne.Schober
DR - Fix DCC build
Change 3378885 on 2017/04/04 by Richard.Wallis
Metal resource cast compile fix post merge.
Change 3378946 on 2017/04/04 by Chris.Bunner
SM4 assert fix.
Change 3378953 on 2017/04/04 by Chris.Bunner
Fixed type-correctness on legacy BreakMA material nodes and set more flexible formats to global attributes which should result in much more forgiving graphs for users.
Allowed material nodes to opt out of mask-based pin coloration.
#tests Compiled most Paragon materials + QAGame test maps.
#jira UE-39885
Change 3379189 on 2017/04/04 by Arne.Schober
DR - Fix aftermath staging
Change 3379229 on 2017/04/04 by Arne.Schober
DR - Fix missing include
Change 3379374 on 2017/04/04 by Mark.Satterthwaite
Revert an accidentally merged change in MacPlatformProcess that relies on further changes from the Metal task stream.
Change 3379505 on 2017/04/04 by Rolando.Caloca
DR - Fix mismatched interpolators
Change 3379539 on 2017/04/04 by Mark.Satterthwaite
No FFT for any hlslcc platform - the IR for one or more RWTexture2D isn't quite right...
#jira UE-43626
Change 3379561 on 2017/04/04 by Rolando.Caloca
DR - Fix root signature issues on D3D12 PC
Change 3379590 on 2017/04/04 by Mark.Satterthwaite
Back out changelist 3379539 & change the shader slightly instead, the HLSLCC library generates bogus IR when you have an inout RWTexture.
#jira UE-43626
Change 3379917 on 2017/04/04 by Uriel.Doyon
Fix to input mismatch
Change 3380578 on 2017/04/05 by Chris.Bunner
Shader type fixes.
#jira UE-43652
Change 3380639 on 2017/04/05 by Rolando.Caloca
DR - Expose GetOrCreate PSO and document
Change 3380821 on 2017/04/05 by Guillaume.Abadie
Fixes a crash in USceneCaptureComponent::UpdateDeferredCaptures()
#jira UE-43642
Change 3381092 on 2017/04/05 by Guillaume.Abadie
Cherry pick 3362517: Implements TAA's scene color unpremultiplication from alpha channel to reduce DOF alpha channel temporal ghosting.
This CL take the oportunity to transform AA_ALPHA to an compile time enumeration, and add a basic TAA compile time configuration validation to improve readability of the different TAA passes' configurations.
Change 3381300 on 2017/04/05 by Mark.Satterthwaite
Quick fix for changes to MetalRHI's render-thread safe texture creation not correctly handling AVFoundation video player handing us an IOSurface.
#jira UE-43597
Change 3381359 on 2017/04/05 by Guillaume.Abadie
Back out changelist 3381092
Change 3381421 on 2017/04/05 by Mark.Satterthwaite
Amended CL #3380995 from Richard Wallis to address crash in the Material Editor under the validation layer - when there are no textures bound the default pass descriptor assigns store actions, which means we can't override them with our deferred store actions.
#jira UE-43689
Change 3381422 on 2017/04/05 by Mark.Satterthwaite
Absolute time queries can't be batched in Metal but I also can't rely on them being started with a call to BeginQuery - only EndQuery.
#jira UE-43691
Change 3381503 on 2017/04/05 by Daniel.Wright
More intuitive controls for Volumetric Fog
* Removed ScatteringScale / AbsorptionScale on Exponential Height Fog and added Albedo / Extinction
* InscatteringColorCubemap is now supported by Volumetric Fog
* Particle lights have a default VolumetricScatteringIntensity of 0 to avoid trailing
* Tweaked GVolumetricFogDepthDistributionScale better for nearby details
* Volume Materials have twice the interpolators available
Change 3381527 on 2017/04/05 by Mark.Satterthwaite
Disable Private GPU storage for PVRTC texture formats on iOS Metal - these require more changes to the blit-encoder usage as PVRTC has strange requirements.
Change 3381671 on 2017/04/05 by Mark.Satterthwaite
Better error message for failure to compile shaders remotely from PC for Metal.
Change 3381769 on 2017/04/05 by Rolando.Caloca
DR - Added lock texture array 2d on Vulkan
Change 3382003 on 2017/04/05 by Mark.Satterthwaite
Remove the automatic Metal aliasing/re-use when releasing some resource types as it doesn't work as intended.
Change 3382030 on 2017/04/05 by Zachary.Wilson
Fix compiling Metal text shaders from PC broken in merge from task stream.
#submitter mark.satterthwaite
#jira UE-43652
Change 3382880 on 2017/04/06 by Mark.Satterthwaite
Michael Trepka's CL #3379927:
VolumetricFogVoxelization implementation for Mac
Change 3383315 on 2017/04/06 by Mark.Satterthwaite
Partially revert CL #3382003 - the emulated Metal heaps require invoking makeAliasable in order to reclaim memory.
#jira UE-43739
Change 3384639 on 2017/04/07 by Marcus.Wassmer
Move ShaderResource version bump to RenderingObjectVersion
Change 3384704 on 2017/04/07 by Mark.Satterthwaite
Compile fix for merge.
Change 3384933 on 2017/04/07 by Rolando.Caloca
DR - Fix skin cache crash with BP (copy 3384714)
Change 3385104 on 2017/04/07 by Mark.Satterthwaite
Fix MetalRHI's abs(int2) handling - it can't be translated to fabs(int2) as that won't compile. Also rebuild hlslcc for my sanity.
#jira UE-43783
Change 3385105 on 2017/04/07 by Mark.Satterthwaite
Force a shader rebuild to ensure that everybody picks up the fix for #jira UE-43783
#jira UE-43783
Change 3385118 on 2017/04/07 by Arne.Schober
DR - [OR-37359] - Fix disapearing Decals when StencilLod Fade is enabled
#RB none
Change 3385149 on 2017/04/07 by Marcus.Wassmer
Fix skincache motion blur
Change 3385189 on 2017/04/07 by Rolando.Caloca
DR - Fix swapchain format for editor on Vulkan
Change 3385287 on 2017/04/07 by Mark.Satterthwaite
Enable SM5 on Intel as of 10.12.4 and later.
Change 3385347 on 2017/04/07 by Rolando.Caloca
DR - Temp fix for GL4 corruption on editor
#jira UE-43785
Change 3385363 on 2017/04/07 by Rolando.Caloca
DR - Actually fix all win platforms for GL bug
#jira UE-43785
Change 3385557 on 2017/04/07 by Arne.Schober
DR - [UE-43205] - Fix mesh paint
#RB none
Change 3385608 on 2017/04/07 by Daniel.Wright
Fixed SampleCmp being used on a non-depth texture, causing a d3d error
Change 3385980 on 2017/04/10 by Rolando.Caloca
DR - Remove transition functions RHIClearColor* RHIClearDepthStencilTexture
Change 3386042 on 2017/04/10 by Rolando.Caloca
DR - Fix metal merge issue
Change 3386157 on 2017/04/10 by Rolando.Caloca
DR - Remove VS2013 libs generation off hlslcc & glslang (to match main)
Change 3386356 on 2017/04/10 by Chris.Bunner
Resolving merge errors.
Change 3386414 on 2017/04/10 by Chris.Bunner
Resolved merge issue in RendererScene.cpp.
Change 3386700 on 2017/04/10 by Mark.Satterthwaite
Silence documentation warnings.
Change 3387178 on 2017/04/10 by Chris.Bunner
Removed invalid mask correction on MakeMA material nodes.
Change 3388177 on 2017/04/11 by Marcus.Wassmer
Disable ensure that is no longer relevant now that we bind clear colors on texture creation
Change 3388261 on 2017/04/11 by Chris.Bunner
Static analysis fix.
[CL 3388266 by Chris Bunner in Main branch]
2017-04-11 10:32:07 -04:00
if ( FShaderCache : : IsPrebindCall ( FShaderCache : : GetDefaultCacheState ( ) ) & & ! VertexDeclarationRHI )
2015-12-10 16:56:55 -05:00
{
return nullptr ;
}
else
{
check ( VertexDeclarationRHI ) ;
FOpenGLVertexDeclaration * VertexDeclaration = ResourceCast ( VertexDeclarationRHI ) ;
FOpenGLBoundShaderState * BoundShaderState = new FOpenGLBoundShaderState (
LinkedProgram ,
VertexDeclarationRHI ,
VertexShaderRHI ,
PixelShaderRHI ,
GeometryShaderRHI ,
HullShaderRHI ,
DomainShaderRHI
) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#lockdown Nick.Penwarden
#rb None
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3358140 on 2017/03/22 by Rolando.Caloca
DR - Fix copy to cube face
- Compile fix when using dump layer
- Add new error enum
Change 3358301 on 2017/03/22 by Mitchell.Wilson
Initial check in of LODs in InfiltratorForward. First pass on optimization in level. Adding a visibility track for SceneCapture2D in tunnel section.
Change 3358477 on 2017/03/22 by Mitchell.Wilson
Updating Skeletal Mesh DPW_Robot_Export to resolve screen size being too low for LOD1. Cleaned up LOD1 which was showing some visible popping when transitioning.
Change 3358529 on 2017/03/22 by Mark.Satterthwaite
Globally disable clang's "constant-logical-operand" warning when running under Distcc - it is much easier and less invasive than constantly fixing the code.
Change 3358745 on 2017/03/22 by Mark.Satterthwaite
Disable another warning (parentheses-equality) under Distcc because again the separation of preprocessing from compilation means it turns up where it isn't expected.
Change 3358837 on 2017/03/22 by Joe.Graf
Merge of pull request #3214 for the RenderDocPlugin
#CodeReview: matt.kuhlenschmidt, marcus.wassmer
#rb: marcus.wassmer
Change 3359112 on 2017/03/22 by Ben.Salem
Update perf monitor to include frame time by default. Also, use only game/PIE world timers when in editor, instead of all worlds combined.
#tests Ran several Showdown test runs with plugin!
Change 3359363 on 2017/03/22 by Joe.Graf
First pass at non-unity & no pch compilation
Change 3359449 on 2017/03/22 by Joe.Graf
Added missing null check when exporting a EXR on Linux (UE-40268)
#CodeReview: dmitry.rekman
#rb: n/a
Change 3360349 on 2017/03/23 by Guillaume.Abadie
Fixes TAA's AA_FORCE_ALPHA_CLAMP causing DOF layouts.
#jira UE-42920
Change 3360405 on 2017/03/23 by Marcus.Wassmer
Better method for detecting Kepler
Change 3360718 on 2017/03/23 by Daniel.Wright
Planar reflections handle views smaller than the render target in a general way
* Fixes planar reflections with adaptive pixel density (ViewFamily size larger than actual views combined)
* Planar reflections are now supported in splitscreen
Change 3360758 on 2017/03/23 by Daniel.Wright
[Copy] Added new light property bCastVolumetricShadow, which defaults to true for directional and sky lights, but false for point / spot lights as supporting volumetric fog shadowing has significant GPU overhead
Change 3360762 on 2017/03/23 by Daniel.Wright
[Copy] Texture flags are now properly routed to RHICreateTexture3D from the render target pool
Change 3360768 on 2017/03/23 by Daniel.Wright
[Copy] Disabled GPUProfiler histogram by default, controlled by r.ProfileGPU.ShowEventHistogram
Change 3360770 on 2017/03/23 by Daniel.Wright
[Copy] Disabled fast clears on CustomDepth, saves .2ms on xbox
Change 3360771 on 2017/03/23 by Daniel.Wright
[Copy] Particle lights no longer force tiled deferred lighting. Tiled deferred lighting is only used if enough unshadowed lights + particle lights are on screen. Saves 1.5ms Xbox with one particle light.
Change 3360774 on 2017/03/23 by Daniel.Wright
[Copy] Distance field cvar comments
Change 3360782 on 2017/03/23 by Daniel.Wright
[Copy] Disabled selection color on Volume materials
Change 3360795 on 2017/03/23 by Daniel.Wright
[Copy] Volume materials now specify Albedo and Extinction, which is more intuitive than Scattering and Absorption. Albedo is [0-1] reflectance, while Extinction is a world space density.
Change 3360799 on 2017/03/23 by Daniel.Wright
[Copy] Cinematic scalability levels get 2x volumetric fog resolution in x and y
Change 3360806 on 2017/03/23 by Daniel.Wright
[Copy] Fixed volumetric fog being offset when viewport min is not 0
Change 3360809 on 2017/03/23 by Daniel.Wright
[Copy] Volumetric fog now adds a bias to the inverse squared light falloff denominator, prevents extreme aliasing from the hotspot. Can be controlled with r.VolumetricFog.InverseSquaredLightDistanceBiasScale.
Change 3361651 on 2017/03/23 by Brian.Karis
Higher quality sharp SSR at quality 4
Change 3361678 on 2017/03/23 by Brian.Karis
Fresnel darkens diffuse for clearcoat.
Change 3361683 on 2017/03/23 by Brian.Karis
Fixed SSR artifact
Change 3361691 on 2017/03/23 by Brian.Karis
Chagned min roughness limit
Change 3361707 on 2017/03/23 by Brian.Karis
Added inverse film tone map
Change 3361726 on 2017/03/23 by Brian.Karis
Better precision inverse
Change 3361758 on 2017/03/23 by Brian.Karis
Material flag normal curvature to roughness is no longer forward only.
Change 3361765 on 2017/03/23 by Brian.Karis
Update ACES
Change 3361774 on 2017/03/23 by Brian.Karis
Cleaned up alpha support and disabled screen edge clipping.
Change 3362478 on 2017/03/24 by Guillaume.Abadie
Cherry pick 3316084's PostProcessing.cpp: Fixes a bug in Circle DOF where the apply pass was no longer using the downres DOF's TAA output.
#author Brian.Karis
#jira UE-42920
Change 3362738 on 2017/03/24 by Rolando.Caloca
DR - Hide scene capture on IF
Change 3362890 on 2017/03/24 by Guillaume.Abadie
Renames r.SceneAlpha to r.PostProcessing.PropagateAlpha
Change 3363665 on 2017/03/24 by Mark.Satterthwaite
PR #3414: Add command line option "-noheartbeatthread" to disable heart beat thread (Contributed by JeffRous)
Change 3363866 on 2017/03/24 by Arne.Schober
DR - Updated NVAPI
#RB Marcus.Wassmer
Change 3364300 on 2017/03/24 by Brian.Karis
SSR use dynamic velocity
Change 3364372 on 2017/03/24 by Brian.Karis
Fix changing off axis projection velocities.
Change 3364373 on 2017/03/24 by Brian.Karis
Enabled velocity drawing in scene captures
Change 3365531 on 2017/03/27 by Guillaume.Abadie
Computes the material's screen position material expression directly from the pixel shader SvPosition
Change 3365764 on 2017/03/27 by Chris.Bunner
Lowering severity of crash for missing values in scalability.ini.
#jira UE-41331
Change 3365916 on 2017/03/27 by Guillaume.Abadie
Exposes the viewport offset within the view property material expression
Change 3365979 on 2017/03/27 by Brian.Karis
Fixed skylight intensity from double applying
Change 3365987 on 2017/03/27 by Brian.Karis
Stopped post process indirect lighting intensity from scaling skylight reflections
Change 3365991 on 2017/03/27 by Brian.Karis
Fix for static analysis
Change 3366028 on 2017/03/27 by Daniel.Wright
Volumetric fog supports static shadowing from Stationary lights
* Using bilinear on static shadowmap depths + 1 PCF to smooth out results
Change 3366029 on 2017/03/27 by Daniel.Wright
Static shadow depth maps for Stationary point and spot lights are 2x higher res by default (4x more texels), which is more appropriate for volumetric fog
Change 3366055 on 2017/03/27 by Guillaume.Abadie
Cherry picks 3251469: Implements scene capture component's CaptureSortPriority to control GPU execution order in order to manage inter dependencies.
Change 3366447 on 2017/03/27 by Simon.Tourangeau
Fix IES light profile importer.
- Bug in the LM-63-1986 format importer.
Change 3366836 on 2017/03/27 by Brian.Karis
ClearUAV now supports int types
Change 3367435 on 2017/03/28 by Benjamin.Hyder
Submitting Decal Automation map for initial approval
Change 3367572 on 2017/03/28 by Chris.Bunner
Changed ClampedPow {max(abs(x),0.00001)} to PositiveClampedPow {max(x,0)} to give more expected results to Power node in material graphs.
#jira UE-42989
Change 3367756 on 2017/03/28 by Olaf.Piesche
Niagara material usage flags
Change 3367835 on 2017/03/28 by Marcus.Wassmer
Fix crash when TileRenderer runs before anything else. Make explicit behavior when rendering at a time when there is no valid scene.
Change 3367837 on 2017/03/28 by Marcus.Wassmer
Missed a file.
Change 3367838 on 2017/03/28 by Richard.Wallis
Updated items from original shelved version by Mark Satt:
- Added MetalBackend.cpp to change main function string to have an initial crc + code length zero's
**Description below taken from Mark Satt's original verison of this in CL3343280**
Updated for Dev-Rendering's PSOs & integrates Richard's work on RHI shader libraries.
Replace the FShaderCache's cook-time binary shader cache with Dmitriy Dyomin's standalone FShaderCodeLibrary that saves all shader byte-code arrays to files named by the FSHAHash. This de-duplicates shaders so we only ever store the byte code once. Includes optional support for generating a platform specific library file - which Metal implements to provide a single Metal library. The platform-native implementation can perform more de-duplication and in the case of Metal has lower file overheads and will compress more efficiently.
- All of the support code for the FShaderCache's cook caching is gone, which affects all platforms. The FShaderCodeLibrary is currently supported by Cook-By-The-Book but can be used with iterate or child cookers - only DLC cooking requires further work.
- With further modifications it should be possible to support Cook-on-the-Fly as well (output directories would be needed in FShaderCodeLibrary::InitForCooking) and the file-access pattern should be changed to use async. IO so that Material loading is not considered complete until all required byte-code arrays are loaded into the FShaderCodeLibrary.
- For Metal archiving shaders this way will compile with debug information and the FShaderCodeLibrary, with some help from extensions to IShaderFormat, will save the debug information out into separate files during cooking - these can then be used to debug the game without having to locally recompile, recook & repackage but the shipped byte-code is stripped. Global shader caches are also subject to de-duplication in the library in order to support Metal's shader stripping.
- File Move operations need to respect the 'Replace' flag - for FShaderCodeLibrary to work we need Move to be atomic.
- This bumps the object version and will cause all content to recook.
- Native library support is optional - only Metal currently implements one, but so could Vulkan and D3D12. For Metal the big advantages are further de-duplication where different materials generate the same MetalSL text but a different FSHAHash, that the single Metal library has lower overhead and that as a single file it all compresses far better (esp. with LZMA - 5x smaller).
Change 3367854 on 2017/03/28 by Mark.Satterthwaite
Don't track or record draw call resources for non-OpenGL shader platforms in the shader-cache as it is unnecessary and makes it slower on the CPU than it needs to be.
Change 3367877 on 2017/03/28 by Brian.Karis
Fixed linux build hopefully
Change 3368001 on 2017/03/28 by Mark.Satterthwaite
Compile fixes from Richard's checkin caused by not having visibility to all platforms from my original shelves.
Change 3368019 on 2017/03/28 by Mark.Satterthwaite
And another fix for Windows compilation of MetalShaderFormat.
Change 3368042 on 2017/03/28 by Mark.Satterthwaite
And a couple of simpler MSVC errors.
Change 3368271 on 2017/03/28 by Mark.Satterthwaite
Make SceneRenderTargets compile again.
Change 3368691 on 2017/03/28 by Daniel.Wright
[Copy from BenW] Renamed r.Shadow.MaxCSMShadowResolution to r.Shadow.MaxCSMResolution to match scalability inis
Change 3369689 on 2017/03/29 by Marcus.Wassmer
Fix non editor compile for now
Change 3369862 on 2017/03/29 by Marcus.Wassmer
Get the rest of the things compiling again.
Change 3369896 on 2017/03/29 by Chris.Bunner
Enabling AMD HDR support by default.
#jira UE-42113
Change 3370535 on 2017/03/29 by Marcus.Wassmer
DR - Fix template explicit instantiation for ClearUAV permutations
#RB Brian.Karis, Arne.Schober
Change 3370704 on 2017/03/29 by Rolando.Caloca
DR - Rewrote GPU Skin Cache
- Per section buffers
- Limited memory per non-editor worlds (control with r.SkinCache.SceneMemoryLimitInMB)
Copied from 3370529
Change 3371389 on 2017/03/30 by Richard.Wallis
Remove temp working directories after archive packages built.
Change 3371641 on 2017/03/30 by Rolando.Caloca
DR - Copy 3371640 (fix mem leak)
Change 3372436 on 2017/03/30 by Uriel.Doyon
Added flags in UPrimitiveComponent to keep track of its state in the streaming manager.
This allows to avoid unnecessary callback and processing in begin destroy reattach and being destroy logic.
Removed the limitation of only processing UMeshComponent when handling spawed primitive.
This releases the level manager from having to manage dynamic primitives.
This improves performance by not having to manage dynamic references in the level manager.
Primitives managed as dynamic now have a callback when ever their proxy is udpated, handling
many cases automatically where previously a manual callback to notify would have been required.
Fixed an issue where primitives with no reference to streaming textures would loose they dynamic state
because of lack of references in the streamer.
Change 3372740 on 2017/03/30 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 3372765 on 2017/03/30 by Uriel.Doyon
Disabled concurrent call to NotifyPrimitiveUpdated while we don't have a safe concurrent update
Change 3372979 on 2017/03/30 by Richard.Hinckley
#jira UE-43501
The stencil buffer can now use single-channel bitmasks that ignore depth. This makes it possible to detect overlaps between stencil objects.
Change 3373053 on 2017/03/30 by Simon.Tourangeau
LPV Fade support
- mostly integrated from CL 2959511
Change 3373272 on 2017/03/30 by Uriel.Doyon
Added support for the concurrent update of dynamic primitives by the streaming manager.
Change 3373450 on 2017/03/30 by Rolando.Caloca
DR - FNT - Fix bad data for odd texcoord channels used on skin cache passthrough factory
Copy 3373364
#jira UE-43492
Change 3373470 on 2017/03/30 by Marcus.Wassmer
Nvidia Aftermath support
Change 3374187 on 2017/03/31 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 3374233 on 2017/03/31 by Chris.Bunner
Removed several redundant post process compute fences and resource transitions.
Added testing CVar to force compute post processes to async (r.PostProcess.ForceAsyncDispatch).
Change 3374412 on 2017/03/31 by Rolando.Caloca
DR - Fix static analysis
Change 3374544 on 2017/03/31 by Richard.Wallis
FShaderCache Parallel-Context-Aware Merged with FShaderCache Single Library.
Future Work
- This was done before Engine PSO were in so this now needs a refector in the recording and playback on pipeline states instead an emulate PSO in OpenGL Driver.
- Remove FShaderCacheState and replace the logic with FGraphicsPipelineStateInitializer which should be able to record from the RHI current pipeline state
- This would reduce the Locking required as it's naturally per thread/context and only the final record would need a lock
Change 3374588 on 2017/03/31 by Richard.Wallis
Windows Compile Fixes
Change 3374810 on 2017/03/31 by Benjamin.Hyder
updating recommended GPU drivers
Change 3375207 on 2017/03/31 by Rolando.Caloca
DR - vk - Fixed swapchain format selection for some Linux platforms
Change 3375248 on 2017/03/31 by Rolando.Caloca
DR - vk - Prefer D32S8
Change 3375495 on 2017/03/31 by Rolando.Caloca
DR - vk - Update to sdk 1.0.42.2
Change 3375496 on 2017/03/31 by Rolando.Caloca
DR - Force compiling with updated Vulkan SDK
Change 3375636 on 2017/03/31 by Mark.Satterthwaite
Copying Metal improvements from task stream, with some modifications:
- Off-by-default implementations for MTLFence & MTLHeap, including some small changes to the RHI interface for parallel contexts.
- Support for Apple's Instruments "Points of Interest" tool.
- Consolidation of some Mac & iOS compiler, memory and thread handling code.
- Fixes for Metal not having implicit buffer SRV typecasting for DistanceField effects.
- Improvements to the internal FMetalDebug layer, still off by default.
- Limited support for Xcode automatic code-signing for iOS/tvOS.
- Minimisation of render-target changes in some rendering code, esp. SceneOcclusion, DBufferDecals.
- Added RHISetResourceAliasability_RenderThread to FDynamicRHI for RHIs to implement simple render-target aliasing.
- Added FApplePlatformObject, a custom block allocator for Objective-C types (with NSZombie support) which is now used in MetalRHI to decrease allocation costs of Objective-C types.
- Smattering of lesser fixes.
Change 3375654 on 2017/03/31 by Mark.Satterthwaite
Incremental Windows build fix.
Change 3375656 on 2017/04/01 by Mark.Satterthwaite
Correct extern declaration, including the module export macro which Mac unhelpfully doesn't enforce (for now...).
Change 3375797 on 2017/04/01 by Mark.Satterthwaite
Nullability qualifiers to fix Mac build-farm compilation: perversely this is not a problem for local builds...
Change 3375798 on 2017/04/01 by Mark.Satterthwaite
Fix the first mis-merge in ParticleGpuSimulation - these changes clearly weren't properly resolved in the task-stream.
Change 3375835 on 2017/04/01 by Mark.Satterthwaite
Try again with nullability and fix the occlusion changes as the PSO work wasn't merged correctly.
Change 3376143 on 2017/04/02 by Mark.Satterthwaite
Switch back to flat dSYMs for Dev-Rendering - they don't work with Instruments etc. but they are required by our build system.
Change 3376324 on 2017/04/03 by Chris.Bunner
Fixed cvar re-registration log spam and flagged a testing-only cvar as such.
Change 3376726 on 2017/04/03 by Benjamin.Hyder
Submitting initial HDR test map (WIP)
Change 3376756 on 2017/04/03 by Guillaume.Abadie
Fixes scene captures ordering's backward compatibility.
Before, 2d scene captures were rendered before cube scene captures. The CaptureSortPriority broke backward compatibility by settings this new member to 0 in the USceneCaptureComponent's constructor. Since it is a higher come first policy, this CL set the default of this value to 1 in USceneCaptureComponent2D's constructor.
Change 3377378 on 2017/04/03 by Arne.Schober
DR - Fix ShaderRecompiling over and over again
#RB Chris.Bunner
Change 3377512 on 2017/04/03 by Daniel.Wright
[Copy] Fixed profilegpu in d3d12 - initialize FLongGPUTaskPS when it is safe to do so, and fixed FSlateRHIRenderer's incorrect usage of draw events
Change 3377518 on 2017/04/03 by Daniel.Wright
[Copy] Distance field atlas coalesces updates to reduce RHIUpdateTexture3D memory overhead on d3d12
Change 3377526 on 2017/04/03 by Daniel.Wright
[Copy] "Ran out of GPU queries!" log only happens once
Change 3377535 on 2017/04/03 by Daniel.Wright
[Copy] Fixed unreferenced local variable
Change 3377539 on 2017/04/03 by Daniel.Wright
[Copy] Xbox One RHIGetResourceInfo takes ESRAM into account - fixes render target pool 'VRamInKB request failed' messages
Change 3377546 on 2017/04/03 by Daniel.Wright
[Copy] Added r.LightMaxDrawDistanceScale for local light scalability
Change 3377553 on 2017/04/03 by Daniel.Wright
[Copy] Removed NEW_ESRAM_ALLOCATOR define and old unused path
Change 3377560 on 2017/04/03 by Daniel.Wright
[Copy] Fixed two d3d12 refcounting bugs causing -norhithread crashes
Change 3377565 on 2017/04/03 by Daniel.Wright
[Copy] Fixed Xbox One deleting GPU resources before the GPU is done reading from them (GRHINeedsExtraDeletionLatency was false)
Change 3377572 on 2017/04/03 by Daniel.Wright
[Copy] Disabled point / spot lights with MaxDrawDistance on LowPC
Change 3377586 on 2017/04/03 by Daniel.Wright
Fixed compile error
Change 3377699 on 2017/04/03 by David.Hill
FFT Code. Moved over from raven and refactored
#review-3374589 @guillaume.abadie
Change 3377910 on 2017/04/03 by David.Hill
GPU FFT: Fix Linux Build
adding a missing template<> to an IMPLEMENT_SHADER_TYPE
Change 3378751 on 2017/04/04 by Marcus.Wassmer
HQ particle lights now spawn attached to the same socket as their parent module.
Change 3378819 on 2017/04/04 by Richard.Wallis
Should be no need to protect shader cache against RHI thread now.
Change 3378823 on 2017/04/04 by Richard.Wallis
FRHIShaderLibrary Opaque Type
- Base FRHIShaderLibrary has no Create*Shader functions and is passed to Overloaded RHICreate*Shader functions instead of creation directly through the library.
- Assumed that only Native libraries will end up in the RHICreate*Shader functions.
- ShaderCache and ShaderCode Libraries now inherit from a common factory interface.
Change 3378883 on 2017/04/04 by Arne.Schober
DR - Fix DCC build
Change 3378885 on 2017/04/04 by Richard.Wallis
Metal resource cast compile fix post merge.
Change 3378946 on 2017/04/04 by Chris.Bunner
SM4 assert fix.
Change 3378953 on 2017/04/04 by Chris.Bunner
Fixed type-correctness on legacy BreakMA material nodes and set more flexible formats to global attributes which should result in much more forgiving graphs for users.
Allowed material nodes to opt out of mask-based pin coloration.
#tests Compiled most Paragon materials + QAGame test maps.
#jira UE-39885
Change 3379189 on 2017/04/04 by Arne.Schober
DR - Fix aftermath staging
Change 3379229 on 2017/04/04 by Arne.Schober
DR - Fix missing include
Change 3379374 on 2017/04/04 by Mark.Satterthwaite
Revert an accidentally merged change in MacPlatformProcess that relies on further changes from the Metal task stream.
Change 3379505 on 2017/04/04 by Rolando.Caloca
DR - Fix mismatched interpolators
Change 3379539 on 2017/04/04 by Mark.Satterthwaite
No FFT for any hlslcc platform - the IR for one or more RWTexture2D isn't quite right...
#jira UE-43626
Change 3379561 on 2017/04/04 by Rolando.Caloca
DR - Fix root signature issues on D3D12 PC
Change 3379590 on 2017/04/04 by Mark.Satterthwaite
Back out changelist 3379539 & change the shader slightly instead, the HLSLCC library generates bogus IR when you have an inout RWTexture.
#jira UE-43626
Change 3379917 on 2017/04/04 by Uriel.Doyon
Fix to input mismatch
Change 3380578 on 2017/04/05 by Chris.Bunner
Shader type fixes.
#jira UE-43652
Change 3380639 on 2017/04/05 by Rolando.Caloca
DR - Expose GetOrCreate PSO and document
Change 3380821 on 2017/04/05 by Guillaume.Abadie
Fixes a crash in USceneCaptureComponent::UpdateDeferredCaptures()
#jira UE-43642
Change 3381092 on 2017/04/05 by Guillaume.Abadie
Cherry pick 3362517: Implements TAA's scene color unpremultiplication from alpha channel to reduce DOF alpha channel temporal ghosting.
This CL take the oportunity to transform AA_ALPHA to an compile time enumeration, and add a basic TAA compile time configuration validation to improve readability of the different TAA passes' configurations.
Change 3381300 on 2017/04/05 by Mark.Satterthwaite
Quick fix for changes to MetalRHI's render-thread safe texture creation not correctly handling AVFoundation video player handing us an IOSurface.
#jira UE-43597
Change 3381359 on 2017/04/05 by Guillaume.Abadie
Back out changelist 3381092
Change 3381421 on 2017/04/05 by Mark.Satterthwaite
Amended CL #3380995 from Richard Wallis to address crash in the Material Editor under the validation layer - when there are no textures bound the default pass descriptor assigns store actions, which means we can't override them with our deferred store actions.
#jira UE-43689
Change 3381422 on 2017/04/05 by Mark.Satterthwaite
Absolute time queries can't be batched in Metal but I also can't rely on them being started with a call to BeginQuery - only EndQuery.
#jira UE-43691
Change 3381503 on 2017/04/05 by Daniel.Wright
More intuitive controls for Volumetric Fog
* Removed ScatteringScale / AbsorptionScale on Exponential Height Fog and added Albedo / Extinction
* InscatteringColorCubemap is now supported by Volumetric Fog
* Particle lights have a default VolumetricScatteringIntensity of 0 to avoid trailing
* Tweaked GVolumetricFogDepthDistributionScale better for nearby details
* Volume Materials have twice the interpolators available
Change 3381527 on 2017/04/05 by Mark.Satterthwaite
Disable Private GPU storage for PVRTC texture formats on iOS Metal - these require more changes to the blit-encoder usage as PVRTC has strange requirements.
Change 3381671 on 2017/04/05 by Mark.Satterthwaite
Better error message for failure to compile shaders remotely from PC for Metal.
Change 3381769 on 2017/04/05 by Rolando.Caloca
DR - Added lock texture array 2d on Vulkan
Change 3382003 on 2017/04/05 by Mark.Satterthwaite
Remove the automatic Metal aliasing/re-use when releasing some resource types as it doesn't work as intended.
Change 3382030 on 2017/04/05 by Zachary.Wilson
Fix compiling Metal text shaders from PC broken in merge from task stream.
#submitter mark.satterthwaite
#jira UE-43652
Change 3382880 on 2017/04/06 by Mark.Satterthwaite
Michael Trepka's CL #3379927:
VolumetricFogVoxelization implementation for Mac
Change 3383315 on 2017/04/06 by Mark.Satterthwaite
Partially revert CL #3382003 - the emulated Metal heaps require invoking makeAliasable in order to reclaim memory.
#jira UE-43739
Change 3384639 on 2017/04/07 by Marcus.Wassmer
Move ShaderResource version bump to RenderingObjectVersion
Change 3384704 on 2017/04/07 by Mark.Satterthwaite
Compile fix for merge.
Change 3384933 on 2017/04/07 by Rolando.Caloca
DR - Fix skin cache crash with BP (copy 3384714)
Change 3385104 on 2017/04/07 by Mark.Satterthwaite
Fix MetalRHI's abs(int2) handling - it can't be translated to fabs(int2) as that won't compile. Also rebuild hlslcc for my sanity.
#jira UE-43783
Change 3385105 on 2017/04/07 by Mark.Satterthwaite
Force a shader rebuild to ensure that everybody picks up the fix for #jira UE-43783
#jira UE-43783
Change 3385118 on 2017/04/07 by Arne.Schober
DR - [OR-37359] - Fix disapearing Decals when StencilLod Fade is enabled
#RB none
Change 3385149 on 2017/04/07 by Marcus.Wassmer
Fix skincache motion blur
Change 3385189 on 2017/04/07 by Rolando.Caloca
DR - Fix swapchain format for editor on Vulkan
Change 3385287 on 2017/04/07 by Mark.Satterthwaite
Enable SM5 on Intel as of 10.12.4 and later.
Change 3385347 on 2017/04/07 by Rolando.Caloca
DR - Temp fix for GL4 corruption on editor
#jira UE-43785
Change 3385363 on 2017/04/07 by Rolando.Caloca
DR - Actually fix all win platforms for GL bug
#jira UE-43785
Change 3385557 on 2017/04/07 by Arne.Schober
DR - [UE-43205] - Fix mesh paint
#RB none
Change 3385608 on 2017/04/07 by Daniel.Wright
Fixed SampleCmp being used on a non-depth texture, causing a d3d error
Change 3385980 on 2017/04/10 by Rolando.Caloca
DR - Remove transition functions RHIClearColor* RHIClearDepthStencilTexture
Change 3386042 on 2017/04/10 by Rolando.Caloca
DR - Fix metal merge issue
Change 3386157 on 2017/04/10 by Rolando.Caloca
DR - Remove VS2013 libs generation off hlslcc & glslang (to match main)
Change 3386356 on 2017/04/10 by Chris.Bunner
Resolving merge errors.
Change 3386414 on 2017/04/10 by Chris.Bunner
Resolved merge issue in RendererScene.cpp.
Change 3386700 on 2017/04/10 by Mark.Satterthwaite
Silence documentation warnings.
Change 3387178 on 2017/04/10 by Chris.Bunner
Removed invalid mask correction on MakeMA material nodes.
Change 3388177 on 2017/04/11 by Marcus.Wassmer
Disable ensure that is no longer relevant now that we bind clear colors on texture creation
Change 3388261 on 2017/04/11 by Chris.Bunner
Static analysis fix.
[CL 3388266 by Chris Bunner in Main branch]
2017-04-11 10:32:07 -04:00
FShaderCache : : LogBoundShaderState ( FShaderCache : : GetDefaultCacheState ( ) , FOpenGL : : GetShaderPlatform ( ) , VertexDeclarationRHI , VertexShaderRHI , PixelShaderRHI , HullShaderRHI , DomainShaderRHI , GeometryShaderRHI , BoundShaderState ) ;
2015-02-06 11:35:30 -05:00
2015-12-10 16:56:55 -05:00
return BoundShaderState ;
}
2014-03-14 14:13:41 -04:00
}
}
void DestroyShadersAndPrograms ( )
{
2015-02-06 11:35:30 -05:00
GetOpenGLUniformBlockLocations ( ) . Empty ( ) ;
GetOpenGLUniformBlockBindings ( ) . Empty ( ) ;
2014-03-14 14:13:41 -04:00
FOpenGLProgramsForReuse & ProgramCache = GetOpenGLProgramsCache ( ) ;
for ( TMap < FOpenGLLinkedProgramConfiguration , FOpenGLLinkedProgram * > : : TIterator It ( ProgramCache ) ; It ; + + It )
{
delete It . Value ( ) ;
}
ProgramCache . Empty ( ) ;
StaticLastReleasedProgramsIndex = 0 ;
FOpenGLCompiledShaderCache & ShaderCache = GetOpenGLCompiledShaderCache ( ) ;
for ( TMap < FOpenGLCompiledShaderKey , GLuint > : : TIterator It ( ShaderCache ) ; It ; + + It )
{
2015-02-06 11:35:30 -05:00
FOpenGL : : DeleteShader ( It . Value ( ) ) ;
2014-03-14 14:13:41 -04:00
}
ShaderCache . Empty ( ) ;
}
2014-09-18 17:49:40 -04:00
struct FSamplerPair
{
GLuint Texture ;
GLuint Sampler ;
friend bool operator = = ( const FSamplerPair & A , const FSamplerPair & B )
{
return A . Texture = = B . Texture & & A . Sampler = = B . Sampler ;
}
friend uint32 GetTypeHash ( const FSamplerPair & Key )
{
return Key . Texture ^ ( Key . Sampler < < 18 ) ;
}
} ;
static TMap < FSamplerPair , GLuint64 > BindlessSamplerMap ;
void FOpenGLDynamicRHI : : SetupBindlessTextures ( FOpenGLContextState & ContextState , const TArray < FOpenGLBindlessSamplerInfo > & Samplers )
{
if ( OpenGLConsoleVariables : : bBindlessTexture = = 0 | | ! FOpenGL : : SupportsBindlessTexture ( ) )
{
return ;
}
// Bind all textures via Bindless
for ( int32 Texture = 0 ; Texture < Samplers . Num ( ) ; Texture + + )
{
const FOpenGLBindlessSamplerInfo & Sampler = Samplers [ Texture ] ;
GLuint64 BindlessSampler = 0xffffffff ;
FSamplerPair Pair ;
Pair . Texture = PendingState . Textures [ Sampler . Slot ] . Resource ;
Pair . Sampler = ( PendingState . SamplerStates [ Sampler . Slot ] ! = NULL ) ? PendingState . SamplerStates [ Sampler . Slot ] - > Resource : 0 ;
if ( Pair . Texture )
{
// Find Sampler pair
if ( BindlessSamplerMap . Contains ( Pair ) )
{
BindlessSampler = BindlessSamplerMap [ Pair ] ;
}
else
{
// if !found, create
if ( Pair . Sampler )
{
BindlessSampler = FOpenGL : : GetTextureSamplerHandle ( Pair . Texture , Pair . Sampler ) ;
}
else
{
BindlessSampler = FOpenGL : : GetTextureHandle ( Pair . Texture ) ;
}
FOpenGL : : MakeTextureHandleResident ( BindlessSampler ) ;
BindlessSamplerMap . Add ( Pair , BindlessSampler ) ;
}
FOpenGL : : UniformHandleui64 ( Sampler . Handle , BindlessSampler ) ;
}
}
}
2014-03-14 14:13:41 -04:00
void FOpenGLDynamicRHI : : BindPendingShaderState ( FOpenGLContextState & ContextState )
{
2014-09-18 17:49:40 -04:00
SCOPE_CYCLE_COUNTER_DETAILED ( STAT_OpenGLShaderBindTime ) ;
2014-03-14 14:13:41 -04:00
VERIFY_GL_SCOPE ( ) ;
bool ForceUniformBindingUpdate = false ;
GLuint PendingProgram = PendingState . BoundShaderState - > LinkedProgram - > Program ;
if ( ContextState . Program ! = PendingProgram )
{
2015-02-06 11:35:30 -05:00
FOpenGL : : BindProgramPipeline ( PendingProgram ) ;
2014-03-14 14:13:41 -04:00
ContextState . Program = PendingProgram ;
2014-04-30 23:51:07 -04:00
ContextState . bUsingTessellation = PendingState . BoundShaderState - > LinkedProgram - > bUsingTessellation ;
2014-03-14 14:13:41 -04:00
MarkShaderParameterCachesDirty ( PendingState . ShaderParameters , false ) ;
2015-02-06 11:35:30 -05:00
//Disable the forced rebinding to reduce driver overhead - required by SSOs
ForceUniformBindingUpdate = FOpenGL : : SupportsSeparateShaderObjects ( ) ;
2014-03-14 14:13:41 -04:00
}
2014-08-20 08:27:17 -04:00
if ( ! GUseEmulatedUniformBuffers )
2014-03-14 14:13:41 -04:00
{
2014-06-05 16:38:54 -04:00
int32 NextUniformBufferIndex = OGL_FIRST_UNIFORM_BUFFER ;
2014-04-30 23:51:07 -04:00
2014-06-05 16:38:54 -04:00
int32 NumVertexUniformBuffers = PendingState . BoundShaderState - > VertexShader - > Bindings . NumUniformBuffers ;
2015-02-06 11:35:30 -05:00
PendingState . BoundShaderState - > LinkedProgram - > VerifyUniformBlockBindings ( CrossCompiler : : SHADER_STAGE_VERTEX , NextUniformBufferIndex ) ;
2014-06-05 16:38:54 -04:00
BindUniformBufferBase (
ContextState ,
NumVertexUniformBuffers ,
PendingState . BoundUniformBuffers [ SF_Vertex ] ,
NextUniformBufferIndex ,
2014-03-14 14:13:41 -04:00
ForceUniformBindingUpdate ) ;
2014-06-05 16:38:54 -04:00
NextUniformBufferIndex + = NumVertexUniformBuffers ;
int32 NumPixelUniformBuffers = PendingState . BoundShaderState - > PixelShader - > Bindings . NumUniformBuffers ;
2015-02-06 11:35:30 -05:00
PendingState . BoundShaderState - > LinkedProgram - > VerifyUniformBlockBindings ( CrossCompiler : : SHADER_STAGE_PIXEL , NextUniformBufferIndex ) ;
2014-06-05 16:38:54 -04:00
BindUniformBufferBase (
ContextState ,
NumPixelUniformBuffers ,
PendingState . BoundUniformBuffers [ SF_Pixel ] ,
NextUniformBufferIndex ,
ForceUniformBindingUpdate ) ;
NextUniformBufferIndex + = NumPixelUniformBuffers ;
2014-03-14 14:13:41 -04:00
if ( PendingState . BoundShaderState - > GeometryShader )
{
2014-06-05 16:38:54 -04:00
int32 NumGeometryUniformBuffers = PendingState . BoundShaderState - > GeometryShader - > Bindings . NumUniformBuffers ;
2015-02-06 11:35:30 -05:00
PendingState . BoundShaderState - > LinkedProgram - > VerifyUniformBlockBindings ( CrossCompiler : : SHADER_STAGE_GEOMETRY , NextUniformBufferIndex ) ;
2014-06-05 16:38:54 -04:00
BindUniformBufferBase (
ContextState ,
NumGeometryUniformBuffers ,
PendingState . BoundUniformBuffers [ SF_Geometry ] ,
NextUniformBufferIndex ,
2014-03-14 14:13:41 -04:00
ForceUniformBindingUpdate ) ;
2014-06-05 16:38:54 -04:00
NextUniformBufferIndex + = NumGeometryUniformBuffers ;
2014-03-14 14:13:41 -04:00
}
if ( PendingState . BoundShaderState - > HullShader )
{
2014-06-05 16:38:54 -04:00
int32 NumHullUniformBuffers = PendingState . BoundShaderState - > HullShader - > Bindings . NumUniformBuffers ;
2015-02-06 11:35:30 -05:00
PendingState . BoundShaderState - > LinkedProgram - > VerifyUniformBlockBindings ( CrossCompiler : : SHADER_STAGE_HULL , NextUniformBufferIndex ) ;
2014-03-14 14:13:41 -04:00
BindUniformBufferBase ( ContextState ,
2014-06-05 16:38:54 -04:00
NumHullUniformBuffers ,
PendingState . BoundUniformBuffers [ SF_Hull ] ,
NextUniformBufferIndex ,
2014-03-14 14:13:41 -04:00
ForceUniformBindingUpdate ) ;
2014-06-05 16:38:54 -04:00
NextUniformBufferIndex + = NumHullUniformBuffers ;
2014-03-14 14:13:41 -04:00
}
if ( PendingState . BoundShaderState - > DomainShader )
{
2014-06-05 16:38:54 -04:00
int32 NumDomainUniformBuffers = PendingState . BoundShaderState - > DomainShader - > Bindings . NumUniformBuffers ;
2015-02-06 11:35:30 -05:00
PendingState . BoundShaderState - > LinkedProgram - > VerifyUniformBlockBindings ( CrossCompiler : : SHADER_STAGE_DOMAIN , NextUniformBufferIndex ) ;
2014-03-14 14:13:41 -04:00
BindUniformBufferBase ( ContextState ,
2014-06-05 16:38:54 -04:00
NumDomainUniformBuffers ,
PendingState . BoundUniformBuffers [ SF_Domain ] ,
NextUniformBufferIndex ,
2014-03-14 14:13:41 -04:00
ForceUniformBindingUpdate ) ;
2014-06-05 16:38:54 -04:00
NextUniformBufferIndex + = NumDomainUniformBuffers ;
2014-03-14 14:13:41 -04:00
}
2014-09-18 17:49:40 -04:00
SetupBindlessTextures ( ContextState , PendingState . BoundShaderState - > LinkedProgram - > Samplers ) ;
2014-03-14 14:13:41 -04:00
}
}
FOpenGLBoundShaderState : : FOpenGLBoundShaderState (
FOpenGLLinkedProgram * InLinkedProgram ,
FVertexDeclarationRHIParamRef InVertexDeclarationRHI ,
FVertexShaderRHIParamRef InVertexShaderRHI ,
FPixelShaderRHIParamRef InPixelShaderRHI ,
FGeometryShaderRHIParamRef InGeometryShaderRHI ,
FHullShaderRHIParamRef InHullShaderRHI ,
FDomainShaderRHIParamRef InDomainShaderRHI
)
: CacheLink ( InVertexDeclarationRHI , InVertexShaderRHI , InPixelShaderRHI ,
InHullShaderRHI , InDomainShaderRHI , InGeometryShaderRHI , this )
{
2015-04-20 13:30:27 -04:00
FOpenGLVertexDeclaration * InVertexDeclaration = FOpenGLDynamicRHI : : ResourceCast ( InVertexDeclarationRHI ) ;
FOpenGLVertexShader * InVertexShader = FOpenGLDynamicRHI : : ResourceCast ( InVertexShaderRHI ) ;
FOpenGLPixelShader * InPixelShader = FOpenGLDynamicRHI : : ResourceCast ( InPixelShaderRHI ) ;
FOpenGLHullShader * InHullShader = FOpenGLDynamicRHI : : ResourceCast ( InHullShaderRHI ) ;
FOpenGLDomainShader * InDomainShader = FOpenGLDynamicRHI : : ResourceCast ( InDomainShaderRHI ) ;
FOpenGLGeometryShader * InGeometryShader = FOpenGLDynamicRHI : : ResourceCast ( InGeometryShaderRHI ) ;
2014-03-14 14:13:41 -04:00
VertexDeclaration = InVertexDeclaration ;
VertexShader = InVertexShader ;
PixelShader = InPixelShader ;
GeometryShader = InGeometryShader ;
HullShader = InHullShader ;
DomainShader = InDomainShader ;
LinkedProgram = InLinkedProgram ;
}
FOpenGLBoundShaderState : : ~ FOpenGLBoundShaderState ( )
{
check ( LinkedProgram ) ;
FOpenGLLinkedProgram * Prog = StaticLastReleasedPrograms [ StaticLastReleasedProgramsIndex ] ;
StaticLastReleasedPrograms [ StaticLastReleasedProgramsIndex + + ] = LinkedProgram ;
if ( StaticLastReleasedProgramsIndex = = LAST_RELEASED_PROGRAMS_CACHE_COUNT )
{
StaticLastReleasedProgramsIndex = 0 ;
}
OnProgramDeletion ( LinkedProgram - > Program ) ;
}
bool FOpenGLBoundShaderState : : NeedsTextureStage ( int32 TextureStageIndex )
{
return LinkedProgram - > TextureStageNeeds [ TextureStageIndex ] ;
}
int32 FOpenGLBoundShaderState : : MaxTextureStageUsed ( )
{
return LinkedProgram - > MaxTextureStage ;
}
2015-02-06 11:35:30 -05:00
bool FOpenGLBoundShaderState : : RequiresDriverInstantiation ( )
{
check ( LinkedProgram ) ;
bool const bDrawn = LinkedProgram - > bDrawn ;
LinkedProgram - > bDrawn = true ;
return ! bDrawn ;
}
2014-03-14 14:13:41 -04:00
bool FOpenGLComputeShader : : NeedsTextureStage ( int32 TextureStageIndex )
{
return LinkedProgram - > TextureStageNeeds [ TextureStageIndex ] ;
}
int32 FOpenGLComputeShader : : MaxTextureStageUsed ( )
{
return LinkedProgram - > MaxTextureStage ;
}
bool FOpenGLComputeShader : : NeedsUAVStage ( int32 UAVStageIndex )
{
return LinkedProgram - > UAVStageNeeds [ UAVStageIndex ] ;
}
void FOpenGLDynamicRHI : : BindPendingComputeShaderState ( FOpenGLContextState & ContextState , FComputeShaderRHIParamRef ComputeShaderRHI )
{
VERIFY_GL_SCOPE ( ) ;
2015-04-20 13:30:27 -04:00
FOpenGLComputeShader * ComputeShader = ResourceCast ( ComputeShaderRHI ) ;
2014-03-14 14:13:41 -04:00
bool ForceUniformBindingUpdate = false ;
GLuint PendingProgram = ComputeShader - > LinkedProgram - > Program ;
if ( ContextState . Program ! = PendingProgram )
{
2015-02-06 11:35:30 -05:00
FOpenGL : : BindProgramPipeline ( PendingProgram ) ;
2014-03-14 14:13:41 -04:00
ContextState . Program = PendingProgram ;
MarkShaderParameterCachesDirty ( PendingState . ShaderParameters , true ) ;
ForceUniformBindingUpdate = true ;
}
2014-08-20 08:27:17 -04:00
if ( ! GUseEmulatedUniformBuffers )
2014-03-14 14:13:41 -04:00
{
2015-02-06 11:35:30 -05:00
ComputeShader - > LinkedProgram - > VerifyUniformBlockBindings ( CrossCompiler : : SHADER_STAGE_COMPUTE , OGL_FIRST_UNIFORM_BUFFER ) ;
2014-06-05 16:38:54 -04:00
BindUniformBufferBase (
ContextState ,
2014-03-14 14:13:41 -04:00
ComputeShader - > Bindings . NumUniformBuffers ,
2014-06-05 16:38:54 -04:00
PendingState . BoundUniformBuffers [ SF_Compute ] ,
OGL_FIRST_UNIFORM_BUFFER ,
ForceUniformBindingUpdate ) ;
2014-09-18 17:49:40 -04:00
SetupBindlessTextures ( ContextState , ComputeShader - > LinkedProgram - > Samplers ) ;
2014-03-14 14:13:41 -04:00
}
}
/** Constructor. */
FOpenGLShaderParameterCache : : FOpenGLShaderParameterCache ( ) :
GlobalUniformArraySize ( - 1 )
{
2014-07-15 13:25:14 -04:00
for ( int32 ArrayIndex = 0 ; ArrayIndex < CrossCompiler : : PACKED_TYPEINDEX_MAX ; + + ArrayIndex )
2014-03-14 14:13:41 -04:00
{
2014-10-07 10:38:58 -04:00
PackedGlobalUniformDirty [ ArrayIndex ] . StartVector = 0 ;
PackedGlobalUniformDirty [ ArrayIndex ] . NumVectors = 0 ;
2014-03-14 14:13:41 -04:00
}
}
void FOpenGLShaderParameterCache : : InitializeResources ( int32 UniformArraySize )
{
check ( GlobalUniformArraySize = = - 1 ) ;
2014-06-01 19:09:33 -04:00
// Uniform arrays have to be multiples of float4s.
UniformArraySize = Align ( UniformArraySize , SizeOfFloat4 ) ;
2014-07-15 13:25:14 -04:00
PackedGlobalUniforms [ 0 ] = ( uint8 * ) FMemory : : Malloc ( UniformArraySize * CrossCompiler : : PACKED_TYPEINDEX_MAX ) ;
PackedUniformsScratch [ 0 ] = ( uint8 * ) FMemory : : Malloc ( UniformArraySize * CrossCompiler : : PACKED_TYPEINDEX_MAX ) ;
2014-03-14 14:13:41 -04:00
2014-07-15 13:25:14 -04:00
FMemory : : Memzero ( PackedGlobalUniforms [ 0 ] , UniformArraySize * CrossCompiler : : PACKED_TYPEINDEX_MAX ) ;
FMemory : : Memzero ( PackedUniformsScratch [ 0 ] , UniformArraySize * CrossCompiler : : PACKED_TYPEINDEX_MAX ) ;
for ( int32 ArrayIndex = 1 ; ArrayIndex < CrossCompiler : : PACKED_TYPEINDEX_MAX ; + + ArrayIndex )
2014-03-14 14:13:41 -04:00
{
PackedGlobalUniforms [ ArrayIndex ] = PackedGlobalUniforms [ ArrayIndex - 1 ] + UniformArraySize ;
PackedUniformsScratch [ ArrayIndex ] = PackedUniformsScratch [ ArrayIndex - 1 ] + UniformArraySize ;
}
GlobalUniformArraySize = UniformArraySize ;
2014-07-15 13:25:14 -04:00
for ( int32 ArrayIndex = 0 ; ArrayIndex < CrossCompiler : : PACKED_TYPEINDEX_MAX ; + + ArrayIndex )
2014-03-14 14:13:41 -04:00
{
2014-10-07 10:38:58 -04:00
PackedGlobalUniformDirty [ ArrayIndex ] . StartVector = 0 ;
PackedGlobalUniformDirty [ ArrayIndex ] . NumVectors = UniformArraySize / SizeOfFloat4 ;
2014-03-14 14:13:41 -04:00
}
}
/** Destructor. */
FOpenGLShaderParameterCache : : ~ FOpenGLShaderParameterCache ( )
{
if ( GlobalUniformArraySize > 0 )
{
FMemory : : Free ( PackedUniformsScratch [ 0 ] ) ;
FMemory : : Free ( PackedGlobalUniforms [ 0 ] ) ;
}
2015-01-14 04:21:10 -05:00
FMemory : : Memzero ( PackedUniformsScratch ) ;
FMemory : : Memzero ( PackedGlobalUniforms ) ;
2014-03-14 14:13:41 -04:00
GlobalUniformArraySize = - 1 ;
}
/**
* Marks all uniform arrays as dirty .
*/
void FOpenGLShaderParameterCache : : MarkAllDirty ( )
{
2014-07-15 13:25:14 -04:00
for ( int32 ArrayIndex = 0 ; ArrayIndex < CrossCompiler : : PACKED_TYPEINDEX_MAX ; + + ArrayIndex )
2014-03-14 14:13:41 -04:00
{
2014-10-07 10:38:58 -04:00
PackedGlobalUniformDirty [ ArrayIndex ] . StartVector = 0 ;
PackedGlobalUniformDirty [ ArrayIndex ] . NumVectors = GlobalUniformArraySize / SizeOfFloat4 ;
2014-03-14 14:13:41 -04:00
}
}
/**
* Set parameter values .
*/
void FOpenGLShaderParameterCache : : Set ( uint32 BufferIndexName , uint32 ByteOffset , uint32 NumBytes , const void * NewValues )
{
2014-07-15 13:25:14 -04:00
uint32 BufferIndex = CrossCompiler : : PackedTypeNameToTypeIndex ( BufferIndexName ) ;
2014-03-14 14:13:41 -04:00
check ( GlobalUniformArraySize ! = - 1 ) ;
2014-07-15 13:25:14 -04:00
check ( BufferIndex < CrossCompiler : : PACKED_TYPEINDEX_MAX ) ;
2014-03-14 14:13:41 -04:00
check ( ByteOffset + NumBytes < = ( uint32 ) GlobalUniformArraySize ) ;
2014-10-07 10:38:58 -04:00
PackedGlobalUniformDirty [ BufferIndex ] . MarkDirtyRange ( ByteOffset / SizeOfFloat4 , ( NumBytes + SizeOfFloat4 - 1 ) / SizeOfFloat4 ) ;
2014-03-14 14:13:41 -04:00
FMemory : : Memcpy ( PackedGlobalUniforms [ BufferIndex ] + ByteOffset , NewValues , NumBytes ) ;
}
/**
* Commit shader parameters to the currently bound program .
* @ param ParameterTable - Information on the bound uniform arrays for the program .
*/
void FOpenGLShaderParameterCache : : CommitPackedGlobals ( const FOpenGLLinkedProgram * LinkedProgram , int32 Stage )
{
SCOPE_CYCLE_COUNTER ( STAT_OpenGLUniformCommitTime ) ;
VERIFY_GL_SCOPE ( ) ;
const uint32 BytesPerRegister = 16 ;
/**
* Note that this always uploads the entire uniform array when it is dirty .
* The arrays are marked dirty either when the bound shader state changes or
* a value in the array is modified . OpenGL actually caches uniforms per -
* program . If we shadowed those per - program uniforms we could avoid calling
* glUniform4 ? v for values that have not changed since the last invocation
* of the program .
*
* It ' s unclear whether the driver does the same thing and whether there is
* a performance benefit . Even if there is , this type of caching makes any
* multithreading vastly more difficult , so for now uniforms are not cached
* per - program .
*/
const TArray < FOpenGLLinkedProgram : : FPackedUniformInfo > & PackedUniforms = LinkedProgram - > StagePackedUniformInfo [ Stage ] . PackedUniformInfos ;
2014-07-15 13:25:14 -04:00
const TArray < CrossCompiler : : FPackedArrayInfo > & PackedArrays = LinkedProgram - > Config . Shaders [ Stage ] . Bindings . PackedGlobalArrays ;
2014-03-14 14:13:41 -04:00
for ( int32 PackedUniform = 0 ; PackedUniform < PackedUniforms . Num ( ) ; + + PackedUniform )
{
const FOpenGLLinkedProgram : : FPackedUniformInfo & UniformInfo = PackedUniforms [ PackedUniform ] ;
2016-03-11 09:55:03 -05:00
if ( UniformInfo . Location < 0 )
{
// Probably this uniform array was optimized away in a linked program
continue ;
}
2015-03-17 13:05:49 -04:00
const uint32 ArrayIndex = UniformInfo . Index ;
check ( ArrayIndex < CrossCompiler : : PACKED_TYPEINDEX_MAX ) ;
2014-03-14 14:13:41 -04:00
const int32 NumVectors = PackedArrays [ PackedUniform ] . Size / BytesPerRegister ;
GLint Location = UniformInfo . Location ;
const void * UniformData = PackedGlobalUniforms [ ArrayIndex ] ;
2014-06-01 19:09:33 -04:00
// This has to be >=. If LowVector == HighVector it means that particular vector was written to.
2014-10-07 10:38:58 -04:00
if ( PackedGlobalUniformDirty [ ArrayIndex ] . NumVectors > 0 )
2014-03-14 14:13:41 -04:00
{
2014-10-07 10:38:58 -04:00
const int32 StartVector = PackedGlobalUniformDirty [ ArrayIndex ] . StartVector ;
int32 NumDirtyVectors = FMath : : Min ( ( int32 ) PackedGlobalUniformDirty [ ArrayIndex ] . NumVectors , NumVectors - StartVector ) ;
check ( NumDirtyVectors ) ;
UniformData = ( uint8 * ) UniformData + StartVector * SizeOfFloat4 ;
2014-03-14 14:13:41 -04:00
Location + = StartVector ;
switch ( UniformInfo . Index )
{
2014-07-15 13:25:14 -04:00
case CrossCompiler : : PACKED_TYPEINDEX_HIGHP :
case CrossCompiler : : PACKED_TYPEINDEX_MEDIUMP :
case CrossCompiler : : PACKED_TYPEINDEX_LOWP :
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform4fv ( LinkedProgram - > Config . Shaders [ Stage ] . Resource , Location , NumDirtyVectors , ( GLfloat * ) UniformData ) ;
2014-03-14 14:13:41 -04:00
break ;
2014-07-15 13:25:14 -04:00
case CrossCompiler : : PACKED_TYPEINDEX_INT :
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform4iv ( LinkedProgram - > Config . Shaders [ Stage ] . Resource , Location , NumDirtyVectors , ( GLint * ) UniformData ) ;
2014-03-14 14:13:41 -04:00
break ;
2014-07-15 13:25:14 -04:00
case CrossCompiler : : PACKED_TYPEINDEX_UINT :
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform4uiv ( LinkedProgram - > Config . Shaders [ Stage ] . Resource , Location , NumDirtyVectors , ( GLuint * ) UniformData ) ;
2014-03-14 14:13:41 -04:00
break ;
}
2014-10-07 10:38:58 -04:00
PackedGlobalUniformDirty [ ArrayIndex ] . StartVector = 0 ;
PackedGlobalUniformDirty [ ArrayIndex ] . NumVectors = 0 ;
2014-03-14 14:13:41 -04:00
}
}
}
2015-07-02 11:52:03 -04:00
void FOpenGLShaderParameterCache : : CommitPackedUniformBuffers ( FOpenGLLinkedProgram * LinkedProgram , int32 Stage , FUniformBufferRHIRef * RHIUniformBuffers , const TArray < CrossCompiler : : FUniformBufferCopyInfo > & UniformBuffersCopyInfo )
2014-03-14 14:13:41 -04:00
{
SCOPE_CYCLE_COUNTER ( STAT_OpenGLConstantBufferUpdateTime ) ;
VERIFY_GL_SCOPE ( ) ;
// Uniform Buffers are split into precision/type; the list of RHI UBs is traversed and if a new one was set, its
// contents are copied per precision/type into corresponding scratch buffers which are then uploaded to the program
const FOpenGLShaderBindings & Bindings = LinkedProgram - > Config . Shaders [ Stage ] . Bindings ;
2014-06-05 16:38:54 -04:00
check ( Bindings . NumUniformBuffers < = FOpenGLRHIState : : MAX_UNIFORM_BUFFERS_PER_SHADER_STAGE ) ;
2014-03-14 14:13:41 -04:00
if ( Bindings . bFlattenUB )
{
int32 LastInfoIndex = 0 ;
2014-06-05 16:38:54 -04:00
for ( int32 BufferIndex = 0 ; BufferIndex < Bindings . NumUniformBuffers ; + + BufferIndex )
2014-03-14 14:13:41 -04:00
{
2014-06-05 16:38:54 -04:00
const FOpenGLUniformBuffer * UniformBuffer = ( FOpenGLUniformBuffer * ) RHIUniformBuffers [ BufferIndex ] . GetReference ( ) ;
check ( UniformBuffer ) ;
2014-09-29 04:23:44 -04:00
const uint32 * RESTRICT SourceData = UniformBuffer - > EmulatedBufferData - > Data . GetData ( ) ;
2014-03-14 14:13:41 -04:00
for ( int32 InfoIndex = LastInfoIndex ; InfoIndex < UniformBuffersCopyInfo . Num ( ) ; + + InfoIndex )
{
2015-07-02 11:52:03 -04:00
const CrossCompiler : : FUniformBufferCopyInfo & Info = UniformBuffersCopyInfo [ InfoIndex ] ;
2014-03-14 14:13:41 -04:00
if ( Info . SourceUBIndex = = BufferIndex )
{
2014-07-31 15:43:33 -04:00
check ( ( Info . DestOffsetInFloats + Info . SizeInFloats ) * sizeof ( float ) < = ( uint32 ) GlobalUniformArraySize ) ;
2014-03-14 14:13:41 -04:00
float * RESTRICT ScratchMem = ( float * ) PackedGlobalUniforms [ Info . DestUBTypeIndex ] ;
ScratchMem + = Info . DestOffsetInFloats ;
FMemory : : Memcpy ( ScratchMem , SourceData + Info . SourceOffsetInFloats , Info . SizeInFloats * sizeof ( float ) ) ;
2014-10-07 10:38:58 -04:00
PackedGlobalUniformDirty [ Info . DestUBTypeIndex ] . MarkDirtyRange ( Info . DestOffsetInFloats / NumFloatsInFloat4 , ( Info . SizeInFloats + NumFloatsInFloat4 - 1 ) / NumFloatsInFloat4 ) ;
2014-03-14 14:13:41 -04:00
}
else
{
LastInfoIndex = InfoIndex ;
break ;
}
}
}
}
else
{
const auto & PackedUniformBufferInfos = LinkedProgram - > StagePackedUniformInfo [ Stage ] . PackedUniformBufferInfos ;
int32 LastCopyInfoIndex = 0 ;
auto & EmulatedUniformBufferSet = LinkedProgram - > StagePackedUniformInfo [ Stage ] . LastEmulatedUniformBufferSet ;
2014-06-05 16:38:54 -04:00
for ( int32 BufferIndex = 0 ; BufferIndex < Bindings . NumUniformBuffers ; + + BufferIndex )
2014-03-14 14:13:41 -04:00
{
2014-06-05 16:38:54 -04:00
const FOpenGLUniformBuffer * UniformBuffer = ( FOpenGLUniformBuffer * ) RHIUniformBuffers [ BufferIndex ] . GetReference ( ) ;
check ( UniformBuffer ) ;
if ( EmulatedUniformBufferSet [ BufferIndex ] ! = UniformBuffer - > UniqueID )
2014-03-14 14:13:41 -04:00
{
2014-06-05 16:38:54 -04:00
EmulatedUniformBufferSet [ BufferIndex ] = UniformBuffer - > UniqueID ;
2014-03-14 14:13:41 -04:00
// Go through the list of copy commands and perform the appropriate copy into the scratch buffer
for ( int32 InfoIndex = LastCopyInfoIndex ; InfoIndex < UniformBuffersCopyInfo . Num ( ) ; + + InfoIndex )
{
2015-07-02 11:52:03 -04:00
const CrossCompiler : : FUniformBufferCopyInfo & Info = UniformBuffersCopyInfo [ InfoIndex ] ;
2014-03-14 14:13:41 -04:00
if ( Info . SourceUBIndex = = BufferIndex )
{
2014-09-29 04:23:44 -04:00
const uint32 * RESTRICT SourceData = UniformBuffer - > EmulatedBufferData - > Data . GetData ( ) ;
2014-03-14 14:13:41 -04:00
SourceData + = Info . SourceOffsetInFloats ;
float * RESTRICT ScratchMem = ( float * ) PackedUniformsScratch [ Info . DestUBTypeIndex ] ;
ScratchMem + = Info . DestOffsetInFloats ;
FMemory : : Memcpy ( ScratchMem , SourceData , Info . SizeInFloats * sizeof ( float ) ) ;
}
else if ( Info . SourceUBIndex > BufferIndex )
{
// Done finding current copies
LastCopyInfoIndex = InfoIndex ;
break ;
}
// keep going since we could have skipped this loop when skipping cached UBs...
}
// Upload the split buffers to the program
const auto & UniformBufferUploadInfoList = PackedUniformBufferInfos [ BufferIndex ] ;
auto & UBInfo = Bindings . PackedUniformBuffers [ BufferIndex ] ;
for ( int32 InfoIndex = 0 ; InfoIndex < UniformBufferUploadInfoList . Num ( ) ; + + InfoIndex )
{
const auto & UniformInfo = UniformBufferUploadInfoList [ InfoIndex ] ;
const void * RESTRICT UniformData = PackedUniformsScratch [ UniformInfo . Index ] ;
int32 NumVectors = UBInfo [ InfoIndex ] . Size / SizeOfFloat4 ;
check ( UniformInfo . ArrayType = = UBInfo [ InfoIndex ] . TypeName ) ;
switch ( UniformInfo . Index )
{
2014-07-15 13:25:14 -04:00
case CrossCompiler : : PACKED_TYPEINDEX_HIGHP :
case CrossCompiler : : PACKED_TYPEINDEX_MEDIUMP :
case CrossCompiler : : PACKED_TYPEINDEX_LOWP :
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform4fv ( LinkedProgram - > Config . Shaders [ Stage ] . Resource , UniformInfo . Location , NumVectors , ( GLfloat * ) UniformData ) ;
2014-03-14 14:13:41 -04:00
break ;
2014-07-15 13:25:14 -04:00
case CrossCompiler : : PACKED_TYPEINDEX_INT :
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform4iv ( LinkedProgram - > Config . Shaders [ Stage ] . Resource , UniformInfo . Location , NumVectors , ( GLint * ) UniformData ) ;
2014-03-14 14:13:41 -04:00
break ;
2014-07-15 13:25:14 -04:00
case CrossCompiler : : PACKED_TYPEINDEX_UINT :
2015-02-06 11:35:30 -05:00
FOpenGL : : ProgramUniform4uiv ( LinkedProgram - > Config . Shaders [ Stage ] . Resource , UniformInfo . Location , NumVectors , ( GLuint * ) UniformData ) ;
2014-03-14 14:13:41 -04:00
break ;
}
}
}
}
}
}
2016-06-13 12:20:22 -04:00
// Currently only Android platform can use binary program cache
TAutoConsoleVariable < int32 > FOpenGLProgramBinaryCache : : CVarUseProgramBinaryCache (
TEXT ( " r.UseProgramBinaryCache " ) ,
0 ,
TEXT ( " If true, enables binary program cache " ) ,
ECVF_ReadOnly | ECVF_RenderThreadSafe
) ;
FOpenGLProgramBinaryCache * FOpenGLProgramBinaryCache : : CachePtr = nullptr ;
FOpenGLProgramBinaryCache : : FOpenGLProgramBinaryCache ( const FString & InCachePath )
: CachePath ( InCachePath )
{
}
FOpenGLProgramBinaryCache : : ~ FOpenGLProgramBinaryCache ( )
{
} ;
bool FOpenGLProgramBinaryCache : : IsEnabled ( )
{
return CachePtr ! = nullptr ;
}
void FOpenGLProgramBinaryCache : : Initialize ( )
{
check ( CachePtr = = nullptr ) ;
// Can be enabled only on Android platform right now
bool bEnableCache = PLATFORM_ANDROID ? ( CVarUseProgramBinaryCache . GetValueOnAnyThread ( ) ! = 0 ) : false ;
if ( bEnableCache & & FOpenGL : : SupportsProgramBinary ( ) )
{
FString CacheFolderPath ;
# if PLATFORM_ANDROID
extern FString GExternalFilePath ;
CacheFolderPath = GExternalFilePath / TEXT ( " ProgramBinaryCache " ) ;
# else
CacheFolderPath = FPaths : : GameSavedDir ( ) / TEXT ( " ProgramBinaryCache " ) ;
# endif
ANSICHAR * GLVersion = ( ANSICHAR * ) glGetString ( GL_VERSION ) ;
ANSICHAR * GLRenderer = ( ANSICHAR * ) glGetString ( GL_RENDERER ) ;
FString HashString ;
HashString . Append ( GLVersion ) ;
HashString . Append ( GLRenderer ) ;
FSHAHash VersionHash ;
FSHA1 : : HashBuffer ( TCHAR_TO_ANSI ( * HashString ) , HashString . Len ( ) , VersionHash . Hash ) ;
CacheFolderPath = CacheFolderPath / VersionHash . ToString ( ) ;
IPlatformFile & PlatformFile = FPlatformFileManager : : Get ( ) . GetPlatformFile ( ) ;
if ( ! PlatformFile . CreateDirectoryTree ( * CacheFolderPath ) )
{
UE_LOG ( LogRHI , Warning , TEXT ( " Failed to create directory for a program binary cache. Cache will be disabled: %s " ) , * CacheFolderPath ) ;
}
else
{
CachePtr = new FOpenGLProgramBinaryCache ( CacheFolderPath ) ;
UE_LOG ( LogRHI , Log , TEXT ( " Using program binary cache: %s " ) , * CacheFolderPath ) ;
}
}
}
void FOpenGLProgramBinaryCache : : Shutdown ( )
{
if ( CachePtr )
{
delete CachePtr ;
CachePtr = nullptr ;
}
}
bool FOpenGLProgramBinaryCache : : DeferShaderCompilation ( GLuint Shader , const TArray < ANSICHAR > & GlslCode )
{
bool bCanDeferShaderCompilation = true ;
# if PLATFORM_ANDROID
bCanDeferShaderCompilation = ! FOpenGL : : IsCheckingShaderCompilerHacks ( ) ;
# endif
if ( CachePtr & & bCanDeferShaderCompilation )
{
FPendingShaderCode PendingShaderCode ;
CompressShader ( GlslCode , PendingShaderCode ) ;
CachePtr - > ShadersPendingCompilation . Add ( Shader , MoveTemp ( PendingShaderCode ) ) ;
return true ;
}
return false ;
}
void FOpenGLProgramBinaryCache : : CacheProgram ( GLuint Program , const FOpenGLLinkedProgramConfiguration & Config )
{
if ( CachePtr )
{
GLint BinaryLength ;
glGetProgramiv ( Program , GL_PROGRAM_BINARY_LENGTH , & BinaryLength ) ;
if ( BinaryLength > 0 )
{
TArray < uint8 > ProgramBinary ;
// BinaryFormat will be stored at the start of ProgramBinary array
ProgramBinary . SetNumUninitialized ( BinaryLength + sizeof ( GLenum ) ) ;
uint8 * ProgramBinaryPtr = ProgramBinary . GetData ( ) ;
FOpenGL : : GetProgramBinary ( Program , BinaryLength , & BinaryLength , ( GLenum * ) ProgramBinaryPtr , ProgramBinaryPtr + sizeof ( GLenum ) ) ;
CachePtr - > SaveProgramBinary ( Config , ProgramBinary ) ;
}
}
}
bool FOpenGLProgramBinaryCache : : UseCachedProgram ( GLuint Program , const FOpenGLLinkedProgramConfiguration & Config )
{
if ( CachePtr )
{
TArray < uint8 > ProgramBinary ;
if ( CachePtr - > LoadProgramBinary ( Config , ProgramBinary ) )
{
int32 BinarySize = ProgramBinary . Num ( ) ;
uint8 * ProgramBinaryPtr = ProgramBinary . GetData ( ) ;
// BinaryFormat is stored at the start of ProgramBinary array
FOpenGL : : ProgramBinary ( Program , ( ( GLenum * ) ProgramBinaryPtr ) [ 0 ] , ProgramBinaryPtr + sizeof ( GLenum ) , BinarySize - sizeof ( GLenum ) ) ;
return true ;
}
}
return false ;
}
void FOpenGLProgramBinaryCache : : CompilePendingShaders ( const FOpenGLLinkedProgramConfiguration & Config )
{
if ( CachePtr )
{
for ( int32 StageIdx = 0 ; StageIdx < ARRAY_COUNT ( Config . Shaders ) ; + + StageIdx )
{
GLuint ShaderResource = Config . Shaders [ StageIdx ] . Resource ;
FPendingShaderCode * PendingShaderCodePtr = CachePtr - > ShadersPendingCompilation . Find ( ShaderResource ) ;
if ( PendingShaderCodePtr )
{
TArray < ANSICHAR > GlslCode ;
UncompressShader ( * PendingShaderCodePtr , GlslCode ) ;
CompileCurrentShader ( ShaderResource , GlslCode ) ;
CachePtr - > ShadersPendingCompilation . Remove ( ShaderResource ) ;
}
}
}
}
FString FOpenGLProgramBinaryCache : : GetProgramBinaryFilename ( const FOpenGLLinkedProgramConfiguration & Config ) const
{
FString ProgramFilename = CachePath + TEXT ( " / " ) ;
for ( int32 StageIdx = 0 ; StageIdx < ARRAY_COUNT ( Config . Shaders ) ; StageIdx + + )
{
if ( Config . Shaders [ StageIdx ] . Resource )
{
ProgramFilename . Append ( Config . Shaders [ StageIdx ] . Hash . ToString ( ) ) ;
}
}
return ProgramFilename ;
}
bool FOpenGLProgramBinaryCache : : LoadProgramBinary ( const FOpenGLLinkedProgramConfiguration & Config , TArray < uint8 > & OutBinary ) const
{
FString ProgramFilename = GetProgramBinaryFilename ( Config ) ;
IPlatformFile & PlatformFile = FPlatformFileManager : : Get ( ) . GetPlatformFile ( ) ;
TUniquePtr < IFileHandle > FileHandle ( PlatformFile . OpenRead ( * ProgramFilename ) ) ;
if ( FileHandle . IsValid ( ) )
{
int64 BinarySize = FileHandle - > Size ( ) ;
OutBinary . SetNum ( ( int32 ) BinarySize ) ;
FileHandle - > Read ( OutBinary . GetData ( ) , BinarySize ) ;
return true ;
}
return false ;
}
void FOpenGLProgramBinaryCache : : SaveProgramBinary ( const FOpenGLLinkedProgramConfiguration & Config , const TArray < uint8 > & InBinary ) const
{
FString ProgramFilename = GetProgramBinaryFilename ( Config ) ;
IPlatformFile & PlatformFile = FPlatformFileManager : : Get ( ) . GetPlatformFile ( ) ;
TUniquePtr < IFileHandle > FileHandle ( PlatformFile . OpenWrite ( * ProgramFilename ) ) ;
if ( FileHandle . IsValid ( ) )
{
FileHandle - > Write ( InBinary . GetData ( ) , InBinary . Num ( ) ) ;
}
}
void FOpenGLProgramBinaryCache : : CompressShader ( const TArray < ANSICHAR > & InGlslCode , FPendingShaderCode & OutCompressedShader )
{
check ( InGlslCode . GetTypeSize ( ) = = sizeof ( uint8 ) ) ;
check ( OutCompressedShader . GlslCode . GetTypeSize ( ) = = sizeof ( uint8 ) ) ;
int32 UncompressedSize = InGlslCode . Num ( ) ;
int32 CompressedSize = UncompressedSize * 4.f / 3.f ;
OutCompressedShader . GlslCode . Empty ( CompressedSize ) ;
OutCompressedShader . GlslCode . SetNum ( CompressedSize ) ;
OutCompressedShader . bCompressed = FCompression : : CompressMemory (
( ECompressionFlags ) ( COMPRESS_ZLIB | COMPRESS_BiasMemory ) ,
( void * ) OutCompressedShader . GlslCode . GetData ( ) ,
CompressedSize ,
( void * ) InGlslCode . GetData ( ) ,
UncompressedSize ) ;
if ( OutCompressedShader . bCompressed )
{
// shrink buffer
OutCompressedShader . GlslCode . SetNum ( CompressedSize , true ) ;
}
else
{
OutCompressedShader . GlslCode = InGlslCode ;
}
OutCompressedShader . UncompressedSize = UncompressedSize ;
}
void FOpenGLProgramBinaryCache : : UncompressShader ( const FPendingShaderCode & InCompressedShader , TArray < ANSICHAR > & OutGlslCode )
{
check ( OutGlslCode . GetTypeSize ( ) = = sizeof ( uint8 ) ) ;
check ( InCompressedShader . GlslCode . GetTypeSize ( ) = = sizeof ( uint8 ) ) ;
if ( InCompressedShader . bCompressed )
{
int32 UncompressedSize = InCompressedShader . UncompressedSize ;
OutGlslCode . Empty ( UncompressedSize ) ;
OutGlslCode . SetNum ( UncompressedSize ) ;
bool bResult = FCompression : : UncompressMemory (
( ECompressionFlags ) ( COMPRESS_ZLIB | COMPRESS_BiasMemory ) ,
( void * ) OutGlslCode . GetData ( ) ,
UncompressedSize ,
( void * ) InCompressedShader . GlslCode . GetData ( ) ,
InCompressedShader . GlslCode . Num ( ) ) ;
check ( bResult ) ;
}
else
{
OutGlslCode = InCompressedShader . GlslCode ;
}
}