Files
UnrealEngineUWP/Engine/Source/Runtime/Renderer/Private/DistortionRendering.cpp

1092 lines
46 KiB
C++
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
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 "DistortionRendering.h"
#include "RHIStaticStates.h"
#include "StaticBoundShaderState.h"
#include "SceneUtils.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 "PostProcess/SceneRenderTargets.h"
#include "MeshMaterialShader.h"
#include "DeferredShadingRenderer.h"
#include "TranslucentRendering.h"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3357411) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3244756 on 2017/01/03 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Niagara@3244743 to Dev-Rendering (//UE4/Dev-Rendering) Change 3248667 on 2017/01/05 by Olaf.Piesche Resaving default asset because of engine verison issue; maybe unnecessary, but resaving niagara engine content to be sure #jira UE-40160 Change 3249324 on 2017/01/06 by Marcus.Wassmer Resave with an actual version to stop cook warning Change 3249611 on 2017/01/06 by Marcus.Wassmer Just remove warning-causing niagara data for now. Change 3308052 on 2017/02/16 by Rolando.Caloca DR - Check for Vulkan SDK, and only use it if it's newer or the same as the headers we distribute Change 3308109 on 2017/02/16 by Rolando.Caloca DR - Upgrade glslang to 1.0.39.1 Change 3308111 on 2017/02/16 by Rolando.Caloca DR - Update Vulkan distribution to 1.0.39.1 Change 3308153 on 2017/02/16 by Rolando.Caloca DR - Updated glslang libs Change 3308842 on 2017/02/17 by Rolando.Caloca DR - Fixed copy/paste Change 3310007 on 2017/02/17 by Chris.Bunner Back out CL 3221219 - causing MIC generation issues and superseded by CL 3273971. #jira UE-37792 Change 3310154 on 2017/02/17 by Chris.Bunner Assert when attempting to add a custom material attribute already in the base attributes list. Change 3310155 on 2017/02/17 by Chris.Bunner PR #3231: Validate material index before accessing (Contributed by projectgheist) #jira UE-41774, UE-41788 Change 3310162 on 2017/02/17 by Chris.Bunner PR #3252: Added MobileMaterialInterface to UsedMaterials (Contributed by projectgheist) #jira UE-41823, UE-41950 Change 3310176 on 2017/02/17 by Chris.Bunner Merging CL 3233886: AMD HDR support (requires r.AMDSupportsHDRDisplayOutput=1 in ini). Update to AGS 5.0.5. Partial code tidy up. Change 3310187 on 2017/02/17 by Chris.Bunner Preserve constant expressions rather than always casting after translating a material attribute. Losing the notion of constant means we can't correctly detect used properties and falsely enable e.g. PDO. Happened because of the incorrect component masks in BreakMaterialNodes which then had to be downcast to the correct type which is done as an inline fragment rather than swizzle expression. #jira UE-41594 Change 3310215 on 2017/02/17 by Chris.Bunner Prevent SpeedTree node compiling for skeletal meshes (not supported as uses more UV sets than available). More descriptive error for missing Cubemap UV input on TextureSample material node . #jira UE-33098 Change 3310838 on 2017/02/18 by Joe.Graf Moved some private functions to public for a licensee #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3311876 on 2017/02/20 by Rolando.Caloca DR - Expose skin cache cvar r.SkinCache.AccumulationBufferSizeInKB #jira UE-42014 Change 3314139 on 2017/02/21 by Rolando.Caloca DR - Minor cleanup pass - Remove FVulkanPendingState - Renamed some classes for clarity - Hoist pending UAVs for flush out to pending compute state Change 3314642 on 2017/02/21 by Rolando.Caloca DR - Some more renaming Change 3315431 on 2017/02/21 by Ben.Salem Properly set default values for test time out and tick. We now will default to ticking once per second, and tracking the macro stats of GPU/Render/Game thread time. #tests Ran showdown demo several times Change 3316710 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Fix refract intrinsic Change 3316718 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Built libs to pick up change from 3316710 - refract fix Change 3316820 on 2017/02/22 by Benjamin.Hyder updating Tm-TrigNodes map Change 3317192 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317528 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317639 on 2017/02/22 by Benjamin.Hyder Updating Decal on Complex Mesh example in QA-Decals Change 3317764 on 2017/02/22 by Benjamin.Hyder Final updates to QA-Decals Change 3318319 on 2017/02/22 by Rolando.Caloca DR - minor reorg/rename Change 3318379 on 2017/02/22 by Rolando.Caloca DR - more cleanup Change 3321181 on 2017/02/24 by Rolando.Caloca DR - Fix GL bug Change 3321247 on 2017/02/24 by Rolando.Caloca DR - Fix misc bugs Change 3321898 on 2017/02/24 by Chris.Bunner Only issue clear TLV dispatch if required. #jira UERNDR-193 Change 3321904 on 2017/02/24 by Chris.Bunner Added comment for potential future optimization. Change 3322013 on 2017/02/24 by Uriel.Doyon Fixed separate translucency being affected by Gaussian DOF #jira UE-40489 Change 3322517 on 2017/02/24 by Uriel.Doyon Fixed issue with InvestigateTexture command removing budget limit. Fixed StreamingBounds show flag not working. It nows shows the streaming bound for the currently selected textures. #jira UE-40485 Change 3323470 on 2017/02/27 by Chad.Garyet Removing DDC job from dev-rendering Change 3323479 on 2017/02/27 by Chad.Garyet Removing RDU agent type Change 3323519 on 2017/02/27 by Chad.Garyet removing NCL/LHR/SEA agent types to clean up space Change 3323639 on 2017/02/27 by Benjamin.Hyder More updates to QA-Decals Change 3324207 on 2017/02/27 by Uriel.Doyon Fixed typo ScaleTexturesByGlobalMyBias -> ScaleTexturesByGlobalMipBias Removed bad merge in FStreamingTextureLevelContext::GetBuildDataIndexRef Change 3324396 on 2017/02/27 by Uriel.Doyon Fixed an issue with the Streaming Bounds show flag interferring with the static level data initialization #jira UE-40485 Change 3325227 on 2017/02/28 by Chris.Bunner Fix-up AMD AGS libs. Change 3325566 on 2017/02/28 by Uriel.Doyon Fixed possible out-of-bound access in GetUsedTexture() when passing ERHIFeatureLevel::Num Change 3326009 on 2017/02/28 by Uriel.Doyon Better fix for 3325566, as the previous fix would ignore the material instance overrides. Change 3327058 on 2017/03/01 by Benjamin.Hyder Preparing TM_Shadermodels map for automation Change 3328222 on 2017/03/01 by Chris.Bunner Prevent decals from drawing in separate translucency pass. Whilst user control and material relevance were already removed, if the flag was checked before being disabled (by swapping to decal domain) this was still being read in the render loop, now explicitly ignores decals. #jira UE-42449, UE-42446 Change 3329848 on 2017/03/02 by Uriel.Doyon Added some extra logs to help track UE-42168 Change 3329977 on 2017/03/02 by Rolando.Caloca DR - Fix bad clear value Change 3330008 on 2017/03/02 by Benjamin.Hyder More preparations for QA-Decals automation Change 3330754 on 2017/03/02 by Daniel.Wright Prominent comment explaining reflection env async compute usage and why it's not overlapped with anything Change 3331451 on 2017/03/03 by Marc.Olano Manually unroll simplex noise loop to avoid PSO bug on AMD/Metal Change 3331839 on 2017/03/03 by Rolando.Caloca DR - hlslcc - add missing file to project Change 3332247 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel PR #3305 #jira UE-42393 Change 3332259 on 2017/03/03 by Rolando.Caloca DR - Fix bad index into pixel formats PR #3237 #jira UE-41855 Change 3332305 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers PR #3271 #jira UE-32618 Change 3332313 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel (properly) PR #3305 #jira UE-42393 Change 3332317 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers (properly) PR #3271 #jira UE-32618 Change 3332368 on 2017/03/03 by Rolando.Caloca DR - Minor fixes so -sm4 and -sm5 can be used on windows with OpenGL/Vulkan Change 3333690 on 2017/03/06 by Daniel.Wright [Copy] Changing movable skylight properties no longer affects static draw lists Change 3333693 on 2017/03/06 by Daniel.Wright [Copy] Added 'r.AOListMeshDistanceFields' which dumps out mesh distance fields sorted by memory size, useful for directing content optimizations Change 3333705 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance fields are now 8 bit fixed point by default, but can be changed back to 16 bit floating piont with a project setting. * 8 bit uses half memory but introduces error for thin surfaces or large meshes. Change 3333721 on 2017/03/06 by David.Hill DecalProxy: Copy float FadeScreenSize to FDeferredDecalProxy for use in the render thread. This avoids pointer chasing to the UDecalComponent (game thread component). Change 3333772 on 2017/03/06 by Daniel.Wright [Copy] Scene motion blur data is only updated for the main renderer frames. Fixes scene captures and planar reflections breaking object motion blur. Change 3333790 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance field generation uses Embree, for a 2.5x speedup * Can switch back to old kDOP generation with 'r.DistanceFieldBuild.UseEmbree 0' for debugging Change 3333822 on 2017/03/06 by Daniel.Wright [Copy] Moved mesh distance field code into MeshDistanceFieldUtilities.cpp * Moved FMeshUtilities to its own header so the 8k line MeshUtilites.cpp file can be further split up Change 3333827 on 2017/03/06 by Daniel.Wright [Copy] Range compress 8bit distance fields - gets one extra bit of precision on average Change 3333828 on 2017/03/06 by Daniel.Wright [Copy] Raised High ShadowQuality to 2048 as 1024 for CSM is way too low Change 3333831 on 2017/03/06 by Daniel.Wright Non-editor compile fix Change 3333836 on 2017/03/06 by Daniel.Wright [Copy] Workaround for gobal distance field volume textures being bloated by 4x on PS4 due to the recommended tiling modes. They now use a 2d tiling mode which avoids the bloat, saving 96Mb. Change 3333843 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionExponent to skylight component * Useful for brightening up indoors without losing contact shadows as MinOcclusion does Change 3333845 on 2017/03/06 by Daniel.Wright [Copy] Capsule shadow BP functions Change 3333850 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionCombineMode to skylight component Change 3333854 on 2017/03/06 by Daniel.Wright [Copy] Gnm properly registers clears as GPU work so those events show up in profilegpu Change 3333857 on 2017/03/06 by Daniel.Wright [Copy] Clear light attenuation for local lights with a quad covering their screen extents * Clearing the entire light attenuation buffer costs .1ms on PS4. This optimization lowers the minimum cost of a shadow casting light from .15ms -> .03ms. * Shadowed lights in Fortnite with 25 lights 3.7ms -> 1.42ms on PS4 Change 3333860 on 2017/03/06 by Daniel.Wright [Copy] Flush deferred deletes when reallocating distance field atlas to reduce peak memory Change 3333861 on 2017/03/06 by Daniel.Wright [Copy] Disable all distance field features on Intel cards as HD 4000 hangs in the RHICreateTexture3D call to allocate the large atlas Change 3333869 on 2017/03/06 by Daniel.Wright [Copy] Volumetric Fog using a volume texture mapped to the camera frustum * Volumetric fog can be enabled on an Exponential Height Fog component with additional controls * Lights have a VolumetricScatteringIntensity * New cvars r.VolumetricFog, r.VolumetricFog.GridPixelSize, r.VolumetricFog.GridSizeZ, r.VolumetricFog.DepthDistributionScale * Lighting features supported: * Directional light with CSM and a light function * Point / spot lights without shadows / light functions / IES profiles * Skylight with occlusion from distance fields * Analytical height fog covers the view range past where the volumetric fog ends * Temporal reprojection is used on the volumetric fog scattering and extinction to achieve stability * Translucency integrates properly into volumetric fog * Height fog StartDistance is not supported by volumetric fog and should be set to 0. Change 3333894 on 2017/03/06 by Daniel.Wright [Copy] Initialize GDummyVolumetricFogGlobalDataUniformBuffer outside of parallel rendering Change 3333902 on 2017/03/06 by Daniel.Wright [Copy] Better handling of volumetric fog enabled with distance of 0 Change 3333903 on 2017/03/06 by Daniel.Wright [Copy] Fixed volumetric fog trying to render light functions for a point light Change 3333908 on 2017/03/06 by Daniel.Wright [Copy] Volumetric materials * Added new material domain Volume, which can output Scattering, Absorption and Emissive. All properties are in world space densities. * Particle systems using the Volume domain are voxelized based on their ParticlePosition and ParticleRadius * Volumetric fog integration is now energy conservative - scattering is integrated against transmission over the depth of each slice. * Added bOverrideLightColorsWithFogInscatteringColors to exponential height fog, which can be enabled to make Volumetric Fog match Height fog more closely Change 3334134 on 2017/03/06 by Daniel.Wright [Copy from Michael Trepka] Added Embree 2.14.0 and changed MeshUtilities to use it as this solves issues with Embree leaking TLS keys. UnrealLightmass is still using older Embree 2.7.0 until we can find time to properly test it with the new version. Also, invalidated distance field DDC to force it to rebuild with updated Embree. Change 3334420 on 2017/03/06 by Daniel.Wright Fixed RTDF shadows Change 3335467 on 2017/03/07 by Benjamin.Hyder Initial submission of QA-Decals map to EngineTest Change 3335556 on 2017/03/07 by Daniel.Wright Changed mesh distance field default format back to R16f Change 3338020 on 2017/03/08 by Daniel.Wright Disable volumetric fog in vertex shaders for feature levels which don't support it Change 3339394 on 2017/03/09 by Chris.Bunner Correctly handle material texture translation error edge case. #jira UE-42579, UE-42670 Change 3339992 on 2017/03/09 by Daniel.Wright Only compile volumetric fog shaders on supporting platforms Change 3341858 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) #RB Rolando.Caloca, Marcus.Wassmer, Daniel.Wright, Nick.Penwarden, Mark.Satterthwaite Change 3342004 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Fix unity build #RB Marcus.Wassmer Change 3343307 on 2017/03/13 by Marcus.Wassmer Update showflags when we are guaranteed it will happen in all possible ways to spawn the scenecapture. (drag into editor, PIE, -game, etc) Change 3343732 on 2017/03/13 by Rolando.Caloca DR - Vulkan compute pipeline & refactor Change 3344846 on 2017/03/14 by Rolando.Caloca DR - Android compile fixes Change 3344883 on 2017/03/14 by Rolando.Caloca DR - Add missing stencil load/store to PSO initializer Change 3344985 on 2017/03/14 by Rolando.Caloca DR - Made load/store actions uint8 Change 3345141 on 2017/03/14 by Rolando.Caloca DR - vk - Rework render pass hash Change 3345304 on 2017/03/14 by Benjamin.Hyder Updating TM-Distancefields map to include TemplateFloor mesh Change 3345387 on 2017/03/14 by Rolando.Caloca DR - Add _RenderThread calls for Create*Shader so RHIs can choose not to stall when creating Change 3345388 on 2017/03/14 by Rolando.Caloca DR - Do not stall when creating shaders on Vulkan Change 3345722 on 2017/03/14 by Chris.Bunner PR #3357: MinimalAPI add to many material expressions (Contributed by DeanoC) #jira UE-42752 Change 3345723 on 2017/03/14 by Chris.Bunner Reduce log verbosity causing spamming during landscape editing. #jira UE-42714 Change 3345725 on 2017/03/14 by Chris.Bunner [Duplicate 3341860] Fixed material translation error with multiple connections from custom interpolator nodes. Change 3345726 on 2017/03/14 by Chris.Bunner Typo fixes. Change 3345732 on 2017/03/14 by Rolando.Caloca DR - Decouple vertex declaration off BSS Change 3345746 on 2017/03/14 by Chris.Bunner Added sign() intrinsic material graph node and delisted material function workaround. Change 3346042 on 2017/03/14 by Chris.Bunner Implement missing size query interface for FRenderTargetResources. #jira UE-41672 Change 3346387 on 2017/03/14 by Daniel.Wright [Copy] Added VolumetricScatteringIntensity to particle lights Change 3346389 on 2017/03/14 by Daniel.Wright [Copy] Clamp Volumetric material attributes to fp16 range to avoid INFs Disable volumetric fog when the fog show flag is disabled Change 3346392 on 2017/03/14 by Daniel.Wright [Copy] Fixed skylight being much too bright on volumetric fog Change 3346406 on 2017/03/14 by Daniel.Wright [Copy] CSM resolution is now controlled by r.Shadow.MaxCSMResolution. * Changed HighPC to use 1024 MaxShadowResolution (max for all non-CSM shadows), saves 60Mb in Fortnite Change 3346412 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for translucency lighting 3d textures, saves 13Mb Change 3346414 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for volumetric fog 3d textures, saves 13Mb Change 3346415 on 2017/03/14 by Daniel.Wright [Copy] Missing file from cl 3338451 Change 3346421 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaNs in volumetric fog due to rendering when height fog is disabled * Volumetric fog converts NaNs to black now so they don't spread Change 3346422 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaN in volumetric fog with low density values Change 3346423 on 2017/03/14 by Daniel.Wright [Copy] Changed default VolumetricFogScatteringDistribution to .2 Change 3346430 on 2017/03/14 by Daniel.Wright [Copy] New translucent material option to compute fog per pixel instead of the default per vertex Change 3346432 on 2017/03/14 by Daniel.Wright [Copy] Moved Volumetric Fog parameters to view uniform buffer for translucency pass Fixed lifetimes of temporary Volumetric Fog render targets Change 3346526 on 2017/03/14 by Daniel.Wright [Copy] Volumetric Fog supports point and spot light shadows * These lights are injected separately so that per-light resources can be bound (shadow depth map, static shadow depth map) * Forward lighting of local lights can be forced with 'r.VolumetricFog.InjectShadowedLightsSeparately 0' * Shadowed lights come at a cost: 2.9ms for volumetric fog on 970 -> 4.2ms with shadowing Change 3347053 on 2017/03/15 by Rolando.Caloca DR - android compile fix Change 3347384 on 2017/03/15 by Rolando.Caloca DR - Fix merge issue Change 3347643 on 2017/03/15 by Marcus.Wassmer Fix some bugs with the 'disable stationary skylight ffor the project' feature. Fixes lighting in Persona on Paragon. Change 3347979 on 2017/03/15 by Rolando.Caloca DR - Allow to automatically apply cached rendertargets to PSO initializer Change 3348024 on 2017/03/15 by Rolando.Caloca DR - Remove NullPS on Vulkan to avoid deadlock Change 3348303 on 2017/03/15 by Rolando.Caloca DR - Fix for debugging SCW with material SRT Change 3348357 on 2017/03/15 by Marcus.Wassmer Fix stencildither and a stencilref bug that was probably breaking decals sometimes. Change 3348549 on 2017/03/15 by Marcus.Wassmer Hopefully fix static analysis for potential nullptr access. Change 3348614 on 2017/03/15 by Marcus.Wassmer Duplicate some switch changes to fix crash on launch. Change 3349369 on 2017/03/16 by Gil.Gribb Fixed botched merge Change 3349947 on 2017/03/16 by Rolando.Caloca DR - Fix for mismatched primitive type Change 3349956 on 2017/03/16 by Benjamin.Hyder initial updates to TM-DistanceFields map Change 3350151 on 2017/03/16 by Rolando.Caloca DR - Fix UT compile issue Change 3350155 on 2017/03/16 by Rolando.Caloca DR - Catch mismatched primitive type on PSOs on D3D11 Change 3350192 on 2017/03/16 by Daniel.Wright Fix for point light shadow depths rendering with wrong cull mode due to PSO refactor Change 3350736 on 2017/03/16 by Daniel.Wright Fixed formatting from merge Change 3350881 on 2017/03/16 by Rolando.Caloca DR - Fix texture arrays as UAVs on Metal Change 3350927 on 2017/03/16 by Rolando.Caloca DR - Fix warning Change 3350935 on 2017/03/16 by Daniel.Wright Fix for materials with non-Surface domains being skipped in mesh passes Change 3351583 on 2017/03/17 by Marcus.Wassmer Fix clang platforms Change 3351917 on 2017/03/17 by Marcus.Wassmer Fix linux compile Change 3351973 on 2017/03/17 by Marcus.Wassmer Fix mismatched rendertargetformat Change 3352038 on 2017/03/17 by Daniel.Wright Enabled GetAndOrCreateGraphicsPipelineState ensures in Development for testing Change 3352110 on 2017/03/17 by Marcus.Wassmer Fix missing RT PSO apply Change 3352695 on 2017/03/17 by Arne.Schober DR - Remove PSO Rendertarget check in DX12 Resolve with Shader. #RB Rolando.Caloca Change 3352960 on 2017/03/17 by Arne.Schober DR - Fix some things that slipped trough the PSO merge #RB none Change 3353150 on 2017/03/18 by Rolando.Caloca DR - compile fix Change 3353205 on 2017/03/18 by Arne.Schober DR - Fix Incremental Compile and PS4 runtime error where CMASK is not allowed for ThickTile Mode #RB none Change 3353207 on 2017/03/18 by Arne.Schober DR - Fix Confusion #RB none Change 3355183 on 2017/03/20 by Nick.Bullard Fixed up Content orginzation for Decals automation tests in EngineTest Change 3355627 on 2017/03/20 by Arne.Schober DR - [UE-43094] - removed ensure in comporiton graph as control of the clear color cannot be gurantueed. Change 3356342 on 2017/03/21 by Marcus.Wassmer Fix clang errors Change 3356591 on 2017/03/21 by Arne.Schober DR - Fix ensure message #RB none Change 3356873 on 2017/03/21 by Arne.Schober DR - Fix comparission of undefined values in RendertargetApply Check Change 3357261 on 2017/03/21 by Marcus.Wassmer Fix LinuxEditor compile Change 3357294 on 2017/03/21 by Marcus.Wassmer Add missing SSE functions Change 3357351 on 2017/03/21 by Frank.Fella Fix win32 and linux compiler errors Change 3357370 on 2017/03/21 by Arne.Schober DR - disable ensure in test builds #RB Marcus.Wassmer [CL 3357449 by Marcus Wassmer in Main branch]
2017-03-21 17:46:52 -04:00
#include "Materials/Material.h"
#include "PipelineStateCache.h"
#include "ScenePrivate.h"
#include "ScreenPass.h"
#include "MeshPassProcessor.inl"
#include "Strata/Strata.h"
#include "ScreenRendering.h"
DECLARE_GPU_DRAWCALL_STAT(Distortion);
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
Copying //UE4/Ocean-Staging to //UE4/Dev-Main (Source: //Ocean/Main @ 3140098) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3138246 on 2016/09/23 by Chad.Garyet Integrating codesign fix into //Ocean/Main Change 3129182 on 2016/09/16 by Josh.Markiewicz OGS game plugin directory integration (Ocean has own copy of OSS) Merging //Orion/Main/Engine/... to //Ocean/Main/Engine/... Change 3129181 on 2016/09/16 by Josh.Markiewicz OGS game plugin directory integration (Ocean has own copy of OSS) Merging //UE4/Main/Engine/Source/Runtime/Online/XMPP/... to //Ocean/Main/Engine/Source/Runtime/Online/XMPP/... Change 3129178 on 2016/09/16 by Josh.Markiewicz #UE4 - changes related to OGF/OSS pluginization effort OGS game plugin directory integration (Ocean has own copy of OSS) Change 3127280 on 2016/09/15 by Brian.Zaugg #ocn - Turn off audio and distortion and decrease shadow depth buffer size for iOS devices with only 1Gb of memory. Change 3118202 on 2016/09/08 by Brian.Zaugg Return UE_GAME from IsGameOnly on iOS. Change 3116888 on 2016/09/07 by Brian.Zaugg Unload bulk audio data if audio is disabled. Change 3099939 on 2016/08/24 by Josh.Andersen Back out changelist 3099720 - Was crashing the editor on load. Change 3099720 on 2016/08/24 by Brian.Zaugg Don't load bulk data for sound files when audio is disabled. Change 3099714 on 2016/08/24 by Brian.Zaugg Integrate fix for audio halt from 4.13. Change 3096950 on 2016/08/22 by Josh.Andersen Merging - Spot merged CL# 3086032 to fix an editor crash from last merge. Change 3095606 on 2016/08/19 by Chris.Phillips Perf: Updated Blueprint search indexing. Change 3094810 on 2016/08/19 by James.Brinkerhoff Merging //UE4/Ocean-Staging->//Ocean/Main Change 3091147 on 2016/08/16 by Geremy.Mustard #core - Added a simple function in FStringAssetReference and AssetPtr for GetAssetName Change 3084075 on 2016/08/10 by Brian.Zaugg Fixed a mobile shadow rendering bug that was causing a crash in the Ocean onboarding level. Change 3077991 on 2016/08/04 by Chris.Phillips Testing Orion fix for font crash. Change 3077854 on 2016/08/04 by Brian.Zaugg Turn off the platform file cached wrapper for iOS and Android. Allows Ocean to load on iPhone 6s without running out of memory. Change 3075681 on 2016/08/03 by Brian.Zaugg Change iPhonePackager to 64-bit so it doesn't run out of memory packaging Ocean. Change 3074498 on 2016/08/02 by James.Brinkerhoff Hotfix from CL 3031932 for UE-32614 - Blueprint pin value data missing from tooltip Change 3073956 on 2016/08/02 by Chris.Phillips Hotfix from CL 3073388 for UE-33821: Async Loading issue in Ocean. Change 3072524 on 2016/08/01 by Shon.Love #ocn, #mcp: Updated re-init behavior for online groups client implementation. Change 3072392 on 2016/08/01 by Shon.Love #ocn, #mcp: Changed ini to add groups api namespace configuration information. Removed setting the namespace in code. Change 3067671 on 2016/07/27 by James.Brinkerhoff Disabling oculus related plugins and reverting the temporary workaround for the ocean win64 non-editor build compile error. The error is due to the need to compile with VS 2013 until the VS 2015 redistributable bugs are sorted out. Excluding the oculus plugins is another (and less error-prone) way to workaround the issue. Change 3065390 on 2016/07/26 by James.Brinkerhoff Hotfix from CL 3065307 for #jira UE-33457: Importing a font crashes the editor, #jira UE-33720: Unable to save new source files in UMG Font asset Change 3062603 on 2016/07/23 by Ben.Marsh Merging CL 3041439 to fix Mac non-unity issues. Change 3059851 on 2016/07/21 by James.Brinkerhoff Hotfix from CL 3059493 for removing the hack forcing CrashReportClient to be built with Visual Studio 2013. Change 3057815 on 2016/07/20 by James.Brinkerhoff Hotfix from CL 3056841 for UE-33362 - Unable to move camera around in viewport after selecting eject in Ocean Change 3053947 on 2016/07/18 by James.Brinkerhoff Temporarily removing the VS 2013 hack (the engine team is currently discussing what the permanent solution should be, but for now, this was recommended in our branch) Change 3053925 on 2016/07/18 by James.Brinkerhoff Fixing an issue with UGS attempting to build CrashReportClient with VS 2013 Change 3052480 on 2016/07/15 by James.Brinkerhoff Temporary fix for build machine errors until we can figure out why this is causing issues Change 3051809 on 2016/07/15 by James.Brinkerhoff Fixing a mac build warning Change 3050835 on 2016/07/14 by James.Brinkerhoff Merging using //Ocean/Main->//UE4/Ocean-Staging Change 3050485 on 2016/07/14 by Shon.Love #ocn, #mcp: Added missing clan call - cancel pending join request. Change 3050239 on 2016/07/14 by Shon.Love #ocn, #mcp: Added support for querying 'headcount' and 'membership' configuration settings for the Groups service. Change 3046132 on 2016/07/12 by Ian.Fox #UE4, #OnlineSubSystem - Hotfix in the ExpirationDate field early so we can update the OGF plugin Change 3041256 on 2016/07/07 by Ben.Marsh Merge latest BuildGraph changes from //UE4/Ocean-Staging. [CL 3141459 by James Brinkerhoff in Main branch]
2016-09-27 11:04:27 -04:00
static TAutoConsoleVariable<int32> CVarDisableDistortion(
TEXT("r.DisableDistortion"),
0,
TEXT("Prevents distortion effects from rendering. Saves a full-screen framebuffer's worth of memory."),
ECVF_Default);
Copying //UE4/Ocean-Staging to //UE4/Dev-Main (Source: //Ocean/Main @ 3140098) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3138246 on 2016/09/23 by Chad.Garyet Integrating codesign fix into //Ocean/Main Change 3129182 on 2016/09/16 by Josh.Markiewicz OGS game plugin directory integration (Ocean has own copy of OSS) Merging //Orion/Main/Engine/... to //Ocean/Main/Engine/... Change 3129181 on 2016/09/16 by Josh.Markiewicz OGS game plugin directory integration (Ocean has own copy of OSS) Merging //UE4/Main/Engine/Source/Runtime/Online/XMPP/... to //Ocean/Main/Engine/Source/Runtime/Online/XMPP/... Change 3129178 on 2016/09/16 by Josh.Markiewicz #UE4 - changes related to OGF/OSS pluginization effort OGS game plugin directory integration (Ocean has own copy of OSS) Change 3127280 on 2016/09/15 by Brian.Zaugg #ocn - Turn off audio and distortion and decrease shadow depth buffer size for iOS devices with only 1Gb of memory. Change 3118202 on 2016/09/08 by Brian.Zaugg Return UE_GAME from IsGameOnly on iOS. Change 3116888 on 2016/09/07 by Brian.Zaugg Unload bulk audio data if audio is disabled. Change 3099939 on 2016/08/24 by Josh.Andersen Back out changelist 3099720 - Was crashing the editor on load. Change 3099720 on 2016/08/24 by Brian.Zaugg Don't load bulk data for sound files when audio is disabled. Change 3099714 on 2016/08/24 by Brian.Zaugg Integrate fix for audio halt from 4.13. Change 3096950 on 2016/08/22 by Josh.Andersen Merging - Spot merged CL# 3086032 to fix an editor crash from last merge. Change 3095606 on 2016/08/19 by Chris.Phillips Perf: Updated Blueprint search indexing. Change 3094810 on 2016/08/19 by James.Brinkerhoff Merging //UE4/Ocean-Staging->//Ocean/Main Change 3091147 on 2016/08/16 by Geremy.Mustard #core - Added a simple function in FStringAssetReference and AssetPtr for GetAssetName Change 3084075 on 2016/08/10 by Brian.Zaugg Fixed a mobile shadow rendering bug that was causing a crash in the Ocean onboarding level. Change 3077991 on 2016/08/04 by Chris.Phillips Testing Orion fix for font crash. Change 3077854 on 2016/08/04 by Brian.Zaugg Turn off the platform file cached wrapper for iOS and Android. Allows Ocean to load on iPhone 6s without running out of memory. Change 3075681 on 2016/08/03 by Brian.Zaugg Change iPhonePackager to 64-bit so it doesn't run out of memory packaging Ocean. Change 3074498 on 2016/08/02 by James.Brinkerhoff Hotfix from CL 3031932 for UE-32614 - Blueprint pin value data missing from tooltip Change 3073956 on 2016/08/02 by Chris.Phillips Hotfix from CL 3073388 for UE-33821: Async Loading issue in Ocean. Change 3072524 on 2016/08/01 by Shon.Love #ocn, #mcp: Updated re-init behavior for online groups client implementation. Change 3072392 on 2016/08/01 by Shon.Love #ocn, #mcp: Changed ini to add groups api namespace configuration information. Removed setting the namespace in code. Change 3067671 on 2016/07/27 by James.Brinkerhoff Disabling oculus related plugins and reverting the temporary workaround for the ocean win64 non-editor build compile error. The error is due to the need to compile with VS 2013 until the VS 2015 redistributable bugs are sorted out. Excluding the oculus plugins is another (and less error-prone) way to workaround the issue. Change 3065390 on 2016/07/26 by James.Brinkerhoff Hotfix from CL 3065307 for #jira UE-33457: Importing a font crashes the editor, #jira UE-33720: Unable to save new source files in UMG Font asset Change 3062603 on 2016/07/23 by Ben.Marsh Merging CL 3041439 to fix Mac non-unity issues. Change 3059851 on 2016/07/21 by James.Brinkerhoff Hotfix from CL 3059493 for removing the hack forcing CrashReportClient to be built with Visual Studio 2013. Change 3057815 on 2016/07/20 by James.Brinkerhoff Hotfix from CL 3056841 for UE-33362 - Unable to move camera around in viewport after selecting eject in Ocean Change 3053947 on 2016/07/18 by James.Brinkerhoff Temporarily removing the VS 2013 hack (the engine team is currently discussing what the permanent solution should be, but for now, this was recommended in our branch) Change 3053925 on 2016/07/18 by James.Brinkerhoff Fixing an issue with UGS attempting to build CrashReportClient with VS 2013 Change 3052480 on 2016/07/15 by James.Brinkerhoff Temporary fix for build machine errors until we can figure out why this is causing issues Change 3051809 on 2016/07/15 by James.Brinkerhoff Fixing a mac build warning Change 3050835 on 2016/07/14 by James.Brinkerhoff Merging using //Ocean/Main->//UE4/Ocean-Staging Change 3050485 on 2016/07/14 by Shon.Love #ocn, #mcp: Added missing clan call - cancel pending join request. Change 3050239 on 2016/07/14 by Shon.Love #ocn, #mcp: Added support for querying 'headcount' and 'membership' configuration settings for the Groups service. Change 3046132 on 2016/07/12 by Ian.Fox #UE4, #OnlineSubSystem - Hotfix in the ExpirationDate field early so we can update the OGF plugin Change 3041256 on 2016/07/07 by Ben.Marsh Merge latest BuildGraph changes from //UE4/Ocean-Staging. [CL 3141459 by James Brinkerhoff in Main branch]
2016-09-27 11:04:27 -04:00
static TAutoConsoleVariable<int32> CVarRefractionBlur(
TEXT("r.Refraction.Blur"),
1,
TEXT("Prevent rough refraction from happening, i.e. blurring of the background."),
ECVF_Scalability | ECVF_RenderThreadSafe);
static TAutoConsoleVariable<float> CVarRefractionBlurScale(
TEXT("r.Refraction.BlurScale"),
0.2f,
TEXT("Global scale the background blur amount after it is mapped form the surface back roughness/scattering amount."),
ECVF_RenderThreadSafe);
static TAutoConsoleVariable<float> CVarRefractionBlurCenterWeight(
TEXT("r.Refraction.BlurCenterWeight"),
0.0f,
TEXT("The weight of the center sample. Value greater than 0 means the sharp image is more and more visible."),
ECVF_RenderThreadSafe);
static TAutoConsoleVariable<int32> CVarRefractionOffsetQuality(
TEXT("r.Refraction.OffsetQuality"),
0,
TEXT("When enabled, the offset buffer is made float for higher quality. This is important to maintain the softness of the blurred scene buffer."),
ECVF_Scalability | ECVF_RenderThreadSafe);
// Using a simple scale to map roughness to mip level.
// Later we could remove that and use depth+variance to have a better lob roughness to mip match.
static TAutoConsoleVariable<float> CVarRefractionRoughnessToMipLevelFactor(
TEXT("r.Refraction.RoughnessToMipLevelFactor"),
5.0f,
TEXT("Factor to translate the roughness factor into a mip level."),
ECVF_Scalability | ECVF_RenderThreadSafe);
BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT(FDistortionPassUniformParameters, RENDERER_API)
SHADER_PARAMETER_STRUCT(FSceneTextureUniformParameters, SceneTextures)
SHADER_PARAMETER(FVector4f, DistortionParams)
END_GLOBAL_SHADER_PARAMETER_STRUCT()
IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT(FDistortionPassUniformParameters, "DistortionPass", SceneTextures);
int32 FSceneRenderer::GetRefractionQuality(const FSceneViewFamily& ViewFamily)
{
static const auto ICVar = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.RefractionQuality"));
int32 Value = 0;
if (ViewFamily.EngineShowFlags.Refraction)
{
Value = ICVar->GetValueOnRenderThread();
}
return Value;
}
void SetupDistortionParams(FVector4f& DistortionParams, const FViewInfo& View)
{
float Ratio = View.UnscaledViewRect.Width() / (float)View.UnscaledViewRect.Height();
DistortionParams.X = View.ViewMatrices.GetProjectionMatrix().M[0][0];
DistortionParams.Y = Ratio;
DistortionParams.Z = (float)View.UnscaledViewRect.Width();
DistortionParams.W = (float)View.UnscaledViewRect.Height();
// When ISR is enabled we store two FOVs in the distortion parameters and compute the aspect ratio in the shader instead.
if (View.IsInstancedStereoPass() || View.bIsMobileMultiViewEnabled)
{
const FSceneView* InstancedView = View.GetInstancedView();
if (InstancedView)
{
DistortionParams.Y = InstancedView->ViewMatrices.GetProjectionMatrix().M[0][0];
}
}
}
TRDGUniformBufferRef<FDistortionPassUniformParameters> CreateDistortionPassUniformBuffer(FRDGBuilder& GraphBuilder, const FViewInfo& View)
{
auto* Parameters = GraphBuilder.AllocParameters<FDistortionPassUniformParameters>();
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
SetupSceneTextureUniformParameters(GraphBuilder, View.GetSceneTexturesChecked(), View.FeatureLevel, ESceneTextureSetupMode::All, Parameters->SceneTextures);
SetupDistortionParams(Parameters->DistortionParams, View);
return GraphBuilder.CreateUniformBuffer(Parameters);
}
static bool GetUseRoughRefraction()
{
return Strata::IsStrataEnabled() && CVarRefractionBlur.GetValueOnRenderThread() > 0;
}
class FDistortionScreenPS : public FGlobalShader
{
public:
class FUseMSAADim : SHADER_PERMUTATION_BOOL("USE_MSAA");
class FUseRoughRefractionDim : SHADER_PERMUTATION_BOOL("USE_ROUGH_REFRACTION");
class FCompositedStandardTranslucentDim : SHADER_PERMUTATION_BOOL("COMPOSITE_STANDARD_TRANSLUCENT");
using FPermutationDomain = TShaderPermutationDomain<FUseMSAADim, FUseRoughRefractionDim, FCompositedStandardTranslucentDim>;
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
SHADER_PARAMETER_RDG_TEXTURE(Texture2DMS<float4>, RoughnessScatterMSAATexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2DMS<float4>, DistortionMSAATexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2DMS<float4>, SceneColorMSAATexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2DMS<float4>, StandardTranslucentColorAlphaMSAATexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2DMS<float4>, StandardTranslucentTransmittanceMSAATexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, RoughnessScatterTexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, DistortionTexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, SceneColorTexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, StandardTranslucentColorAlphaTexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, StandardTranslucentTransmittanceTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, RoughnessScatterSampler)
SHADER_PARAMETER_SAMPLER(SamplerState, DistortionTextureSampler)
SHADER_PARAMETER_SAMPLER(SamplerState, SceneColorTextureSampler)
SHADER_PARAMETER_SAMPLER(SamplerState, StandardTranslucentColorAlphaTextureSampler)
SHADER_PARAMETER_SAMPLER(SamplerState, StandardTranslucentTransmittanceTextureSampler)
SHADER_PARAMETER(float, RefractionRoughnessToMipLevelFactor)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3809756) #rb None #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3629223 by Rolando.Caloca DR - Rollback //UE4/Dev-Rendering/Engine/Source/Runtime/VulkanRHI to changelist 3627847 Change 3629708 by Rolando.Caloca DR - vk - Redo some changes from DevMobile 3601439 3604186 3606672 3617383 3617474 3617483 Change 3761370 by Arne.Schober DR - Added CityHash to use with conatiners and stuff. It provides good performance and high quallity across multiple platforms. Change 3761437 by Guillaume.Abadie Optimises motion blur compute shader for consoles. Change 3761483 by Guillaume.Abadie Fixes D3D11 RHI lying to dynamic resolution heuristic with t.MaxFPS. Change 3761995 by Mark.Satterthwaite Add the Metal compiler path to the local .pch filename to avoid problems when Xcode moves. Change 3761996 by Mark.Satterthwaite Emit more details when a pixel shader is found to have no outputs at all which Metal doesn't permit. More likely this is a bug in the shader compiler not configuring the in-out mask correctly... #jira UE-52292 Change 3761999 by Mark.Satterthwaite No need to avoid tessellation for FMetalRHICommandContext::RHIEndDrawIndexedPrimitiveUP anymore - that was from back when the tessellation logic was replicated in each RHI*Draw* implementation. #jira UE-51937 Change 3762181 by Joe.Graf Changed MaxShaderJobBatchSize to 25 on Mac as it reduced shader compile time by 21% Change 3762607 by Mark.Satterthwaite Remove accidentally included changes from 3761995. Change 3762612 by Mark.Satterthwaite Enable the explicit sincos intrinsic for Metal to avoid instances of UE-52477 that can cause shaders to compile incorrectly through hlslcc. #jira UE-52477 Change 3762772 by Michael.Lentine Move RHI calls to render thread. Change 3763021 by Richard.Wallis Remove shader cache tool project and implementation. #jira UE-51613 Change 3763082 by Guillaume.Abadie More SceneTexture, SceneColor and SceneDepth automated tests Change 3763111 by Richard.Wallis Clone of CL 3763033 (Release-4.18): Fix for crash upon launching packaged game on Mac with Share Material Shader Code enabled. #jira UE-52121 Change 3763657 by Michael.Lentine Invalidate ddc for skeletal mesh render data so that the duplicated vertex render structures are properly serialized. Change 3763727 by Jian.Ru Fix Player Collision view mode. It is caused by checking an uninitialized vertex buffer so the check always fail. #jira UE-52052 Change 3763738 by Guillaume.Abadie Implements SSR input post process material location. Change 3764271 by Mark.Satterthwaite Allow ControlPointPatch lists to flow through MetalRHI as it was setup to handle this transparently - the VSHS compute shader will convert them to triangles to draw. Report the same warning as in the pipeline creation stage as this hasn't been formally validated. #jira UE-52454 Change 3764316 by Daniel.Wright Added AVolumetricLightmapDensityVolume - gives local control over Volumetric Lightmap density. Dropping the top mip outside of the play area in Monolith saves 20Mb (35Mb original). Volumetric Lightmap no longer refines around static translucent geometry - saves 5Mb in Monolith Reworked brick culling by error mechanism. Now compares error to interpolated parent lighting instead of the brick average - prevents dropping constant value bricks which are near a wall and cause leaking due to parent interpolation after being culled. Change 3764318 by Daniel.Wright Missing file Change 3764321 by Daniel.Wright Shader compiling memory optimizations * Editor memory: Sharing uniform buffer includes and GeneratedInstancedStereo.ush per FShaderType (was previously duplicated per FShader job) * SCW input size: Sharing uniform buffer includes and SharedEnvironment per batch * 7.6Gb of shader job inputs in memory -> .5Gb (13x less) when doing a full shader compile of Paragon Editor * 13.8Gb written into worker input files -> 2.9Gb (4.7x less). Global shaders are never batched when sent to SCW so unoptimized by these changes. Change 3764595 by Daniel.Wright Added VolumetricLightmapDensityVolume asset icons Change 3764701 by Michael.Lentine Add duplicated vertices merging for meshmerge. Change 3766002 by Guillaume.Abadie Fixes a crash in translucency. Change 3766007 by Guillaume.Abadie Oups.... Fixes compilation failure. Change 3766697 by Guillaume.Abadie Giant refactor of global shader interface for upcoming native support of permutation. CL generated by python script. Change 3767205 by Chris.Bunner Deferring FMaterial::RenderingThreadShaderMap update to render-thread rather than assumption commands have been flushed. #jira UE-50652 Change 3767207 by Chris.Bunner Clamp fetched texture coordinates to those available on the mesh. Change 3767209 by Chris.Bunner PR #4203: Early-outs in UMaterialInstance parameter setters (Contributed by stefanzimecki) #jira UE-52193 Change 3767772 by Mark.Satterthwaite MetalShaderFormat will no longer fallback to text shaders when you ask it to compile to bytecode but the bytecode compiler is not available (either locally or remotely) - this ensures that the DDC can't be poisoned by incorrectly configured clients. The Editor is already setup such that if the remote shader compiler is not configured & Xcode is not available locally the shader-compiler will be invoked to generate text shaders. #jira UE-52554 Change 3768604 by Guillaume.Abadie Polish up with new global shader function signature. Change 3768993 by Guillaume.Abadie Fixes r.Upscale.Panini cvars Change 3769478 by Mark.Satterthwaite Move the ue4_stdlib.metal & PCH into a temporary directory that exists for the lifetime of the SCW on the remote side as well as the local one and add this path as an include directory. #jira UE-52587 Change 3769703 by Mark.Satterthwaite For all Metal platforms >= Metal v1.2 transform mul(a,b) into fma(a,b,0) to prevent the Apple compiler reordering operations differently between the base & depth passes which results in variance in the position output. For iOS disable fast-math when the vertex-shader uses World-Position-Offset because there are additional problems on the iOS shader compiler that result in position variance even with the above fix - WPO performance will suffer but I don't have any alternatives. Remove the depth-offset hack from the depth-only vertex shader again. #jira UES-5651 Change 3769763 by Mark.Satterthwaite Handle swizzle's in the hlslcc fma identification pass so that we reduce the number of instructions and the platform compiler can't break the instructions up. Change 3769849 by Mark.Satterthwaite Fix CIS error. Change 3770517 by Richard.Wallis Fix for crash when creating a new media texture (AppleIntelHD5000GraphicsMTLDriver!SamplerStage::bindSamplerToTexture()). Missing texture resource for binding. Old InitDynamicRHI() code has been refactored out into seperate functions which leaves us on Mac with a NULL resource initially after creation which Metal doesn't like. This fix puts InitDynamicRHI down the default setup/clear path which inits default resources - I don't think we should use a global dummy in this instance as this is a render target. #jira UE-51940 Change 3770688 by Uriel.Doyon Fixed texture resolution returning 0 when running blueprint construction scripts at cook time. Change 3771115 by Mark.Satterthwaite Report errors from failed attempts to compile global shaders or we can't see why things fail on non-Windows platforms. Change 3771263 by Mark.Satterthwaite Change the way ManualVertexFetch is enabled on Metal platforms so that it is enabled when targeting Metal v1.2 and higher (macOS 10.12+/iOS 10+). This brings iOS in the Desktop Forward renderer back into line with the Mac. #jira UERNDR-300 Change 3773472 by Guillaume.Abadie Fixes a crash on PIE of SimpleComposure project. Change 3773475 by Guillaume.Abadie Fixes bug in editor viewport caused by SSR input changes. Change 3774677 by Arne.Schober DR - Deprecated SetLocal from the RHICmdlist Fixed some unnecessary PSO collisions. Change 3777037 by Mark.Satterthwaite Remove incorrect change that caused a reference to "accurate::sincos" to appear in some Metal shaders rather than "precise::sincos". Change 3777122 by Mark.Satterthwaite Back out changelist 3777037 - I'm blind and wasn't seeing the real problem was a stale shader cache... Change 3777196 by Mark.Satterthwaite Fix text-shader compilation on iOS 10 - maybe iOS 9 too (untested!). We need our own make_scalar type-trait template for ue4_stdlib.metal so that we still compile with older iOS runtime compilers and we can't use as_type to directly implement the packHalf2x16/unpackHalf2x16 intrinsics for these older runtime compilers either. Change 3779098 by Rolando.Caloca DR - vk - Fix query index Change 3779275 by Mark.Satterthwaite Silence the Metal runtime compiler warning caused by use of a deprecated enum value when running text shaders compiled for Metal v1.0/1.1 on a Metal v1.2+ OS. #jira UE-52554 Change 3779427 by Rolando.Caloca DR - vk - Fix for allocator contention Change 3779608 by Uriel.Doyon Fixed invalid access in the resave package commantlet when building texture streaming material data for materials enabling tesselation. Change 3784496 by Mark.Satterthwaite Temporarily disable USE_OBJECT_COMPOSITING_TILE_CULLING for Metal shader compilation only - other platforms are unaffected - as it isn't working properly for some reason. need to work out what's up but don't want Distance Fields to be completely snookered in the interim. #jira UE-52952 Change 3784608 by Rolando.Caloca DR - Copy 3784588 - Fix for drivers returning out of date swapchains during resizes Change 3784734 by Mark.Satterthwaite Real fix for UE-52952 - MetalShaderFormat wasn't propagating the full thread-group value. #jira UE-52952 Change 3784741 by Mark.Satterthwaite More Metal debugging commandline options "-metalfastmath" & "-metalnofastmath" to force fast-math on or off for all shaders, must be using runtime-compiled shaders (i.e. -metalshaderdebug or r.Shaders.Optimise=0) to take effect. Change 3787103 by Guillaume.Abadie Kills BuiltinSamplers UB Change 3787207 by Guillaume.Abadie Sorry, compile fix that were fine with local changes... Change 3787396 by Marcus.Wassmer PR #4271: UE-52901: Set VIS_Max meta to hidden (Contributed by projectgheist) Change 3788028 by Peter.Sumanaseni Working linear HDR exr output from sequencer Change 3788536 by Mark.Satterthwaite Track whether the Metal shader uses the discard_fragment function as when this is used but without any other outputs we know we need to bind at least one render-target or a depth-stencil surface but we don't know which. This lets us correctly error when we encounter a shader with no outputs at all which Metal doesn't permit. #jira UE-52292 Change 3788538 by Mark.Satterthwaite Let's try mitigating UE-46604 on Nvidia by retaining resource references in the command-buffer. This shouldn't be necessary and isn't typically on other vendors but we haven't been able to reproduce this reliably enough to get to the bottom of it. #jira UE-46604 Change 3789083 by Guillaume.Abadie Implements global shader permutations. Example in ScreenSpaceReflections.cpp. Change 3789090 by Guillaume.Abadie Fixes linux build. Change 3789106 by Guillaume.Abadie Fixes compilation failure in niagara plugin. Change 3789274 by Guillaume.Abadie Avoid hit proxies to clobber TAA's hitsory. #jira UE-52968 Change 3789380 by Guillaume.Abadie Back out changelist 3789083: global shader permutation because compilation failure in clang. Change 3789648 by Guillaume.Abadie Relands global shader permutation, with clang support. Change 3789712 by Guillaume.Abadie Fixes TestImage show flag with TAAU on. #jira UE-53061 Change 3791593 by Guillaume.Abadie Reinvalidates shaders with shader permutations. Change 3791884 by Daniel.Wright Added BP setter for LowerHemisphereColor Change 3791886 by Daniel.Wright Added LightmapType to PrimitiveComponent * ForceVolumetric allows forcing static geometry to use Volumetric Lightmaps, which can be useful on instanced foliage where seams are prevalent. Lightmass internal caching still requires lightmap UVs and reasonable lightmap resolution. * ForceSurface replaces bLightAsIfStatic Improvements to Volumetric Lightmap quality needed for static geometry * Stationary light shadowing is now dilated inside geometry * Now doing two dilation passes since samples near geometry see inside due to ray start bias * Refinement around geometry uses an expanded cell bounds when the geometry is going to use Volumetric Lightmaps, since cross-resolution stitching causes leaking Lightmass debug primitives are now tied to a swarm task instead of global - allows debugging of Volumetric Lightmap tasks Change 3792256 by Guillaume.Abadie Fixes a bug where permutation was not actually serialised in FShader, so was ending up recompiling shader at every load. Change 3792884 by Marcus.Wassmer Copying //UE4/Partner-AMD to Dev-Rendering (//UE4/Dev-Rendering) Change 3793200 by Marcus.Wassmer Copying //UE4/Partner-IDV-SpeedTree to Dev-Rendering (//UE4/Dev-Rendering) Speedtree 8 support Change 3793206 by Brian.Karis Added color grading control BlueCorrection to correct for artifacts with "electric" blues due to the ACEScg color space. Bright blue desaturates instead of going to violet. Added color grading control ExpandGamut which expands bright saturated colors outside the sRGB gamut to fake wide gamut rendering. ACES changes. Change 3793344 by Marcus.Wassmer Fix editortest compile Change 3794285 by Guillaume.Abadie Serializes PermutationId according to archive rendering version to avoid issues with old material that were serializing a shader map into UObject. Change 3794307 by Guillaume.Abadie Resaves uassets that were modified between 3789648 and 3794285 Change 3794627 by Mark.Satterthwaite Implement two components for MTLPP, an IMP cache for Objective-C selector implementations & an interposition framework for those same selectors: - imp_SelectorCache & friends provide the IMP caching for each of the Metal protocols which constitute most of the API, so far I've not covered the Metal classes used for the various descriptor/initializer types. Each type has its own IMPTable which caches the selector's implementation pointer and provides the mechanism to hook that implementation. As Objective-C is runtime dynamic this look up must be performed on the actual Class value returned by an object at runtime - you can't do this at compile time. Even things like NSString which appear compile-time static are really not as NSString is an alias for a class-cluster (NSString, NSMutableString, __NSInlineString and more). - The interpose directory contains MTI* files which are the framework for interposing all the functions in Metal's runtime API - I deliberately omit the descriptor classes & read-only functions as there's no benefit to interposing them - which I can build off to create a trace tool or a superior validation layer. Right now this is Mac only as there'll be some problems to solve for iOS/tvOS due to difference in linking requirements - not insurmountable. - Rebuild MTLPP's implementation of the C++ wrapper classes around the IMPTable's - this means we avoid all the objc_msgSend overhead for all the classes and functions whose implementations are cached. Right now the IMPTable is going to incur a look-up for all non-copy/move constructors which is suboptimal - ideally the Metal IMPTables would be cached in the Device object as they will be consistent within a single Device. - Sort out the MTLPP availability logic - it now exports the availability warnings to the caller and internally just blithely assumes it may call the functions, the caller is responsible for ensuring that calls are made only on appropriate devices & OSes. This reduces MTLPP complexity and better fits how MetalRHI works. - Fix a number of retain/release bugs that were lying dormant in MTLPP but exposed by the switch to IMPTables. - Add tvOS support. Next up, put this into MetalRHI and start fixing all the fallout. Change 3794631 by Mark.Satterthwaite Missed updating mtlpp's build.cs for TVOS. Change 3794651 by Uriel.Doyon UPointLightComponent::GetUnitsConversionFactor() now takes the cone angle as parameter. This allows to fix spotlight unit conversion when using lumens. Change 3794720 by Guillaume.Abadie Fixes a bug in Global{Bilinear,Trilinear}ClampedSampler that was actually doing a Point sampling. Change 3794749 by Mark.Satterthwaite Fix mtlpp.build.cs paths. Change 3794856 by Mark.Satterthwaite Fix some shadowing warnings. Change 3795484 by Daniel.Wright Implemented the Spherical Harmonic windowing algorithm from 'Stupid Spherical Harmonics (SH) Tricks' New WorldSettings Lightmass property VolumetricLightmapSphericalHarmonicSmoothing controls the global amount of smoothing applied Change 3795590 by Brian.Karis Area light fixes Fixed order of operations. This helps mixing of SourceRadius, SourceLength, and SoftSourceRadius. Change 3796832 by Marcus.Wassmer Correct shouldcache condition for new resolve shader Change 3796884 by Marcus.Wassmer Doing it right this time. Change 3797196 by Mark.Satterthwaite More updates to MTLPP to make things simpler and reduce the number of spurious Objective-C warnings that are emitted because of the way we are using the runtime. Change 3797200 by Daniel.Wright Lightmass now uses the highest density VolumetricLightmapDensityVolume settings that affect any part of a cell Change 3797221 by Daniel.Wright Reduced default SphericalHarmonicSmoothing based on RoboRecall tests. Now only active with strong direct lighting from static lights by default. Change 3797411 by Brian.Karis Disable ExpandGamut for old tone mapper. Change 3797462 by Mark.Satterthwaite More build warnings silenced after changing to the lowest possible deployment target OS for each library. Change 3797585 by Mark.Satterthwaite Range-based-For support in the NSArray wrapper. Change 3797836 by Mark.Satterthwaite Even more forward-declarations to avoid system headers poking through to the including code from mtlpp. Change 3798027 by Mark.Satterthwaite Fix handling of nil objects, on which no functions may be called, command-buffer retention and IMP declaration. Change 3798154 by Mark.Satterthwaite Fix some egregious memory leaks that rewriting to use mtlpp exposed before we carry on - don't want these slipping into 4.19. Change 3800990 by Mark.Satterthwaite Typedef all the completion-handler callback types in mtlpp to make future me's life easier. Change 3801400 by Chris.Bunner Improving automated test errors on failure to generate report data. Change 3801726 by Mark.Satterthwaite Correct some function availability and the command-buffer error status in mtlpp. Change 3801808 by Chris.Bunner Added DefaultScalability.ini to EngineTest that forces all quality levels to Engine default Epic for now to improve consistency. Change 3801862 by Marcus.Wassmer Update automated tests with color gamut change Change 3802214 by Chris.Bunner When running automated tests in and editor-locked PIE viewport, skip resizing as the editor can't handle this. Added bindable delegate called when ScreenshotRequest is processed - Useful to allow screenshots to override and restore settings per capture. #jira UE-53188 Change 3802243 by Chris.Bunner Added button to automated test screenshot browser to add or replace all outstanding test reports if appropriate. DeleteAllReports button is now only enabled whilst there are reports in the list. Change 3802372 by Chris.Bunner Updating more test screenshots. Change 3803683 by Chris.Bunner Adding more logging and multiple attempts to automated test report network save. Added small wait on repeated operations that are known to fail. Change 3803826 by Rolando.Caloca DR - vk - Fix merge issue Change 3804181 by Chris.Bunner Tentative fix for CIS test failure. Change 3804236 by Chris.Bunner Additional logging for case where file write silently fails, report platform-specific error. Change 3804303 by zachary.wilson Cleaning up assets in QAGame saved with empty engine versions to resolve warnings seen when launching on Change 3804410 by Chris.Bunner Added additional logging when automated screenshot test fails due to size mismatch. Mismatched bounds are colored red in the delta. Change 3804455 by Mark.Satterthwaite Fix a small number of persistent memory leaks on the Mac build that slowly consume more and more memory as you use the Editor - interacting with menu's was particularly egregious as each NSMenu would leak after you move away. #jira NA Change 3804667 by Chris.Bunner Speculative CIS fixes. Change 3806008 by Chris.Bunner Partially reimplementing backed-out CL 3804181 to improve consistency of how automated screenshot test settings are applied/restored. #tests CIS preflight job 8174412 Change 3806909 by Mark.Satterthwaite Use the vertex-shader's in-out mask to ensure that we only validate legitmate vertex-streams in Metal's DrawIndexedPrimitive implementation. #jira UE-53046 Change 3807059 by laz.matech Checking in QAGame Rendering Map, QA-PhysicalLightingUnits, for testing Physical Light Units. Wanted to get this in before copy up. #Jira none Change 3807726 by Chris.Bunner Removed a check that we can't fix up. The check hits unbound buffers which it assumes means a failure but is actually due to m.v.fetch. We don't have the information available to know which are which removed from the input without reading from the shader. #jira UE-53046 Change 3807800 by Guillaume.Abadie Fixes some warning in shader headers. Change 3807804 by Guillaume.Abadie Back out changelist 3807800 Change 3807807 by Guillaume.Abadie Relands shader header warnings. Change 3808046 by Chris.Bunner Dropping a new automated test error back to a warning as this may lead to genuine issues being ignored in the short term. Change 3809579 by Chris.Bunner Back out changelist 3774677. #jira UE-53483 Change 3809620 by Chris.Bunner Updating animated cloth test screenshot. Change 3803629 by Chris.Bunner Rebuilt CornellBox and DistanceField test maps, updated screenshots. Change 3787045 by Guillaume.Abadie Moves some global samplers to Common.ush Change 3809756 by Chris.Bunner Updating animated cloth test screenshot. [CL 3809764 by Chris Bunner in Main branch]
2017-12-15 12:47:47 -05:00
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 4047413) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3795481 by Nick.Shin HTML5 - disable SupportsScreenPercentage() - render the full screen otherwise, this is causing HTML5 screen to only render a portion of the screen and in black... - there may be another function is that not getting fired off "to render the screen" properly - this may be due to IsMobileHDR checks that are not fully accounted for the HTML5 platform #jira UE-52640 HTML5 only renders a black rectangle in the browser when launched Change 3807007 by Nick.Shin HTML5 - remove webgl1 only precompile guards (UE4_HTML5_TARGET_WEBGL2) toolchain can "fallback" to webgl1 -- webgl2 functions in UE4 code are "if checked"/configured/setup at start up #jira UE-51267 WebGL1 fails to compile Change 3822593 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3823512 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3824639 by Nick.Shin HTML5 - OSX - RunMacHTML5LaunchHelper.command - more helpful warning messages #jira UE-49861 A copied RunMacHTML5LaunchHelper.command gives unspecific Mono error Change 3829092 by Josh.Adams - Updated UnrealRemote to 1.4.1 Change 3832708 by Chris.Babcock Allow UE4Commandline.txt in APK #jira #ue4 #android Change 3835867 by Nick.Shin HTML5 - code cleanup origial work was for: UE-27141 (Remove all #if PLATFORM_HTML5 from high level code) this exposed an issue that i totally forgot about (.../Engine/Source/Developer/... only does builds tools -- which does not make use of PLATFORM_XXX preprocessor) tested with HTML5 builds with QAGame project :: TM-ShaderModels map #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3839967 by Mi.Wang Override MaxObjectInGame on Android to save ~30M with the ObjectArray size. #Android Change 3842022 by Mi.Wang Fix an AssetRegistry size calculation bug. Change 3843552 by Sorin.Gradinaru UE-54139 Possible crash with new virtual keyboard on Android if suggestions not disabled #4.19 #Android #jira UE-54139 S8 on 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Fix: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags) Change 3844210 by Nick.Shin HTML5 - filter out "windows/super" keys - these are not used in UE4 - but, keycode are not the expected "91 or 92" values, SDL keys are "227 & 231" instead... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3844874 by Nick.Shin HTML5 - detect "SyntaxError: " and do a forced reload - an actual syntax error would be caught during compile time - this is usually error condition is usually seen when browser is running "old/partial" cached data and it's fairly safe to just reload the page #jira UE-54017 QAGame fails to launch properly on HTML5 Firefox 64 bit Change 3846695 by Nick.Shin #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3847309 by Nick.Shin HTML5 - (not to) show virtual joystick - virtual joysticks are not shown by default-- and the mouse not captured - this now behaves like the win64 client version #jira UE-33854 Virtual Joysticks In HTML5 if Mobile/Tablet Project is chosen Change 3847310 by Nick.Shin HTML5 - set controller axis and button max value in code instead of relying on emscripten_get_gamepad_status() - seems emscripten might be uninitialized by the time controlers are used... #jira UE-28513 - Using a controller in HTML5 causes error Change 3850606 by Nick.Shin HTML5 - more static warning fix ups #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3850624 by Nick.Shin HTML5 - tell user/developer to show unsupported WebGL browsers on old hardware -- will need to try another browser note: using following jira to track progress: #jira UE-47066 Packaged HTML 5 Map Prompts for Firefox Update in Chrome Change 3855610 by Sorin.Gradinaru UE-49173 Progress bar causes black screen on iOS #iOS #4.20 #jira UE-49173 The bug occurs on iOS with Metal, when the last Slate element to be draw in the scene is a ScrollBar with progress between 0 and 1. As a workaround, adding another widget (eg. button, image) in the Blueprint solves the problem. The bug can be reproduced by adding OutDrawElements.PushClip & OutDrawElements.PopClip in any SWidget::OnPaint. The solution is to disable the scissor RHICmdList.SetScissorRect(false, 0, 0, 0, 0); in FSlateRHIRenderingPolicy::DrawElements after the batch rendering Change 3855652 by Sorin.Gradinaru iOS 3D browser UE-53248 Web Browser on a Widget Component is 2D when launching on to iOS #jira UE-53248 #iOS #4.20 Uses the same WebTexture from the WebBrowser plugin as the Android version. + Code contributed by Juan.Belon from Alea S.r.l at https://udn.unrealengine.com/questions/390166/3d-world-space-widget-is-being-rendered-in-screen.html Change 3856174 by Nick.Shin HTML5 - python forking will still error while trying to terminate already terminated processes - added same "WindowsError code 5" handler found in subprocess.py #jira UE-51618 HTML5 fails to build, [Error 5] Access is denied Change 3863322 by Sorin.Gradinaru UE-54317 DXT apps fail on first launch when 'For Distribution' enabled, Unsupported Texture Format #jira UE-54317 #Android #4.19 Change 3878088 by Nick.Shin UEMOB-425 superceeds this jira #jira UE-25257 Mac HTML5 project crashes upon downloading expression HasFoundDataDirectory failed Change 3884560 by Jack.Porter Fix logspam in FAVMoviePlayer #jira UE-54760 Change 3886533 by Mi.Wang Fix a potential crash that the VirtualKeyboardWidget has been hide while trying to use in gamethread. Change 3889081 by Sorin.Gradinaru UE-54490 Android Startup Movie audio still playing when app paused, and after app resumed the movie is blackscreen until engine ticked. #Android #4.20 #jira UE-54490 Call ForceCompletion for the intial movie player on onPause. Call App Restart on Resume. Programmatically restarting an Android application basically consists in killing the current app, then using the launch intent as parameter for startActivity. This can be done only in onResume , which means that the movie player still has to be manually paused/stopped in onPause. I╞ve tried to kill the activity on onPause, tested on several devices, with various problems: the app doesn╞t restart anymore (onResume is not called) or the app is automatically sent to background (seems to be crashing when using the multitasking soft key). Change 3890320 by Chris.Babcock Fix initializer ordering #jira UE-55189 #ue4 Change 3958226 by Nick.Shin HTML5 disable memory poison tests and fix a bug during Realloc() // for Linux... and in turn for HTML5 #jria none Change 3958250 by Nick.Shin HTML5 - FText::FormatStr - skip if multi-threading not supported #jira none Change 3968328 by Nick.Shin HTML5 CORS fixes still need datarouter.ol.epicgames.com fixes to completely solve these issues. (API server own estimates no later than mid-April) note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing #jira UE-19330 Change 3971405 by Nick.Shin HTML5 suppress double printing to console.log #jira none Change 3978767 by Nick.Shin HTML5 CORS fixes note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing tested (against datarouter.ol.epicgames.com fixes) and found to be functional #jira UE-22285 Change 3981103 by Nick.Shin HTML5 - num pad keys crashes project match latest Engine/Source/Runtime/InputCore/Private/Linux/LinuxPlatformInput.cpp to HTML5PlatformInput.cpp also fix a HUD crash... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3983424 by Sorin.Gradinaru UE-57107 Attempting to load a streamed media source causes the app to become unresponsive when device is not connected to internet #jira UE-57107 #Android #4.20 The ANR is because the android.media.MediaExtractor.setDataSource(UrlPath) calls an underlying api which retries the download (10-30 times). Additional issue (all platforms): the MediaFrameworkTest/StreamSource_Infiltrator souce seems to have been removed (no longer at https://docs.unrealengine.com/latest/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4). According to the docs (https://docs.unrealengine.com/en-US/Engine/MediaFramework/HowTo/StreamMediaSource) the new location of the Sample Video is at https://dnnrz1gqa.blob.core.windows.net/portals/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4?sr=b&si=DNNFileManagerPolicy&sig=F%2BBpnYueeQTUTSW0nCRSrXEfr35LIawe7C3MQoe2%2FPI%3D Change 3985248 by Nick.Shin HTML5 game window size add project setting drop down box to select canvas scaling mode #jira UE-46555 HTML5 game window does not scale with browser size Change 3986190 by Sorin.Gradinaru UE-56076 Android Launch On "Running..." toast intermittently doesn't appear #jira UE-56076 #Android #4.10 When cancelling Launch on Device, always call CancelContinuations for the current task Change 3986412 by Nick.Shin CIS error fix #jira none Change 3987007 by Nick.Shin HTML5 fullscreen size fix - when using FIXED scale mode initially, there's some strange padding margins - but, setting UE4_fullscreenScaleMode to anything "but FIXED scale mode" will work... #jira UE-46555 HTML5 game window does not scale with browser size Change 3988408 by Nick.Shin HTML5 call EndSession() onbeforeunload() ? should PreExit() be called instead? #jira UE-57207 Session End event is not generated for HTML5 Change 3991828 by Nick.Shin HTML5 shipping build crash some FVector2D needs ContainsNaN() checks #jira UE-57401 Projects packaged for Shipping HTML5 do not launch the engine in the browser Change 3992884 by Nick.Shin HTML5 call EndSession() onbeforeunload() code cleanup #jira UE-57207 Session End event is not generated for HTML5 Change 3992887 by Nick.Shin datarouter: Session events code cleanup #jira UE-22285 - Session events are not generated for HTML5 Change 4002603 by Sorin.Gradinaru UE-56177 Unplugging a device while launching onto it from a source build will result in the "Running..." toast staying open #jira UE-56177 #Android #iOS #4.10 Using the device discovery to signal when the running device gets disconnected Change 4007162 by Dmitriy.Dyomin Merging using Dev-Mobile->FortMain Added ObjectOrientation material node for decals, returns decal projection direction ( X-axis) #jira none Change 4012196 by Sorin.Gradinaru UE-57120 Lighting needs to be rebuilt error appears on Camera test app on Nexus 9 and Note 4. #jira UE-57120 #Android #4.20 Level lightings rebuilt and QA-Media_Camera_BuiltData.uasset added. The message appeared (rarely and only on certain devices) because the engine tries to load the pre-computed lightmap data on the render thread, then to add it to the scene on the game thread (in FPrecomputedVolumetricLightmap::AddToScene). Most of the times there is a desync and the data is not yet loaded when the lightmap is validated (in FScene::AddPrecomputedVolumetricLightmap). Change 4013034 by Sorin.Gradinaru UE-55427 iOS application crashes when suspending and resuming the startup movie in rapid succession #jira UE-55427 #iOS #4.20 Caused by ToggleSuspend waiting for FDefaultGameMoviePlayer::WaitForMovieToFinish() Renamed InitialMovie to StartupMovie, including the methods related to the Android platform. Change 4015449 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Run on device: Pressing Cancel on the "Running..." message should stop the application, if running Cancel Android builds using "adb shell am force-stop <bundle_id> <device_id>" Note: Using a new AutomationTool command (re-starting the Automation tool after canceling the BuildCookRun task chain) is too slow - takes 3-10 sec depending on the PC configuration. AutomationTool is used now only to correctly retrieve the bundle id for each Android device. This is done inside the BuildCookRun command when the application is deployed on the device(s). Cannot simply use the current project's properties to retrieve the bundle id, because when using Launch-> Device Launcher, the user can choose to cook&deploy a different project/texture format, also the user can create & use a profile with multiple devices / with different texture formats. Change 4016057 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #4.20 #Android #4666 https://github.com/EpicGames/UnrealEngine/pull/4666 Implemented Clipboard function on Android. Change 4020229 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #Android #4.20 GameActivity.java: moving the methods related to clipboard above the native public declarations Change 4021188 by Sorin.Gradinaru UE-57876 Location accuracy is ignored by ULocationServicesIOSImpl #jira UE-57876 #iOS #4.30 In ULocationServicesIOSImpl::InitLocationServices(ELocationAccuracy Accuracy, float UpdateFrequency, float MinDistance) the first param must be converted to CLLocationAccuracy and used as the first param of LocationDelegateinitLocationServices, rather than using the hardcoded kCLLocationAccuracyHundredMeters. Also fixed a compilation error (!) when enabling The Location Services plugin on iOS Change 4024839 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Removed unnecessary #include "AndroidTargetDevice.h", causing circular reference => nightly build errors Change 4024962 by Cosmin.Sulea UE-56294 - Packaging step fails when packaging project for distribution #jira UE-56294 Change 4026122 by Sorin.Gradinaru UE-57149 Razer Phone: Crash after Switching Camera Format 22-26 times #jira UE-57149 #Android #4.20 jobject obj = env->GetObjectArrayElement must be followed by env->DeleteLocalRef(obj) The bug can probably be reproduced by using a MediaPlayer. Change 4038185 by Nick.Shin HTML5 - merge error fix MallocAnsi.cpp was stomped on #jira UE-58367 //UE4/Dev-Mobile - Compile UE4Game HTML5 - use of undeclared identifier 'malloc_usable_size' Change 4039521 by Dmitriy.Dyomin Export WorldBrowser API so plugin makers can use it #jira UE-57323 Change 4039523 by Dmitriy.Dyomin Exposed MobilePatchingLibrary API #jira UE-55941 Change 4039526 by Dmitriy.Dyomin Fixed: Hierarchy filtering does not work in world composition #jira UE-57900 Change 4039529 by Dmitriy.Dyomin Fixed: 'Apply Fogging' in Material does not work on Mobile (GitHub 4357) #jira UE-53618 #4357 Change 4039874 by Sorin.Gradinaru UEMOB-436 Support "All Android" Launch On and Project Launcher options The main change is in the DeviceProxy class. A new type ("All devices" proxy) was added, and the proxy now holds a list of physical device IDs for every variant (texture format), instead of a single device ID. The "All devices" proxy is updated automatically by the device discovery thread. The change was necessary because the list in the Project Launcher is using the device proxy list. #jira UEMOB-436 #Android #UE4 #4.19 Change 4041446 by John.Mauney Fix that Chris B made locally on my machine #jira UE-58420 Change 4041791 by Jack.Porter Fix CIS incremental UE4Editor Win64 #jira 0 [CL 4047603 by Jack Porter in Main branch]
2018-05-02 22:53:38 -04:00
{
const FPermutationDomain PermutationVector(Parameters.PermutationId);
return !PermutationVector.Get<FUseMSAADim>() || IsFeatureLevelSupported(Parameters.Platform, ERHIFeatureLevel::SM5);
Copying //UE4/Odin-Staging to //UE4/Dev-Main (Source: //Odin/Main @ 3226588) #lockdown Nick.Penwarden #rb None ========================== MAJOR FEATURES + CHANGES ========================== Change 3226413 on 2016/12/07 by Jeff.Farris Fixed potential crash in USkeletalMeshComponent::InitArticulated(). Change 3226257 on 2016/12/07 by Mike.Beach Mirroring CL 3219381 from Dev-Blueprints Accounting for cyclic compile issues in cast-node's validate function, making it check the authoratative class instead of the current type. Also down grading some of the warnings to notes (suggesting the users don't need the cast). #jira UE-39272 Change 3226147 on 2016/12/07 by Aaron.McLeran Implementing UE-39421 fix into odin Change 3225906 on 2016/12/07 by Jeff.Farris Merge-copied 3216144 from Dev-Framework to Odin (Fix FConstraintInstance scaling issues in FSkeletalMeshComponent::InitArticulated.) Change 3225097 on 2016/12/07 by Zak.Middleton #odin-ue4 - Fix GameEngine.cpp compile error (FMessageDialog not declared). Change 3225050 on 2016/12/07 by Jeff.Farris Added forward declaration to IOculusRiftPlugin.h to fix compile error in Test builds. Change 3224757 on 2016/12/07 by Ben.Marsh Merge CL 3224750 from //UE4/Main: Removing -forcelogflush parameter from UAT invocations of the editor to improve cook times. Change 3224451 on 2016/12/06 by Max.Chen Sequencer: Fix convert spawnable to posessable. Logic for setting the parent was mistakenly removed in runtime eval. Copy from Dev-Sequencer #jira UE-39419 Change 3223856 on 2016/12/06 by Guillaume.Abadie Fixes merge collision of Base Pass's selective outputs and MSAA alpha to coverage Change 3223673 on 2016/12/06 by Zak.Middleton #odin-ue4 - Fixed crash when opening data table assets and working with some types of nodes in the graph editor. Merged fixes from Dev-Editor: CL 3156326, 3172078, 3187276, 3210983. Change 3223381 on 2016/12/06 by Nick.Whiting Merging using UE4_MAIN_to_ODIN @ CL 3221533 Change 3223325 on 2016/12/06 by Alex.Delesky Plugin wizard definition for creating Odin game mods. Currently this just creates an empty Content Only plugin. This also enables the mod creation window to be shown on editor startup (can be toggled off) or invoked via a toolbar button. Change 3221825 on 2016/12/05 by Nick.Whiting Updating VCToolChain.cs file, which was skipped in last integration Change 3221793 on 2016/12/05 by Zak.Middleton #odin - Back out changelist 3218159. Going to move to trace by profile in the future instead. Change 3219668 on 2016/12/02 by Alex.Delesky Partially duplicating CL 3185126 into Odin: -Fixes an issue where adding a new plugin could unnecesarily added to the additional plugin directory, which can cause build failures. Change 3219558 on 2016/12/02 by Zak.Middleton #odin - Fix adapative pixel density crash (again). INI settings are dumb and locally saved INIs ignore the change to the base I pushed yesterday, so pushing a code fix instead. Wrapped in "DO NOT MERGE" since this crash is fixed in Dev-VR. Change 3218953 on 2016/12/02 by Alex.Delesky Back out changelist 3216159 - Reintroducing Plugin Wizard Definition for defining New Plugin Wizard functionality Change 3218822 on 2016/12/02 by Matthew.Griffin Remove modding from folder paths Add logging for delete task Delete more temp files from Copy and DDC process Change 3218410 on 2016/12/01 by Zak.Middleton #ue4-odin - Fix crash when unloading levels or exiting the editor when objects placed in levels had a MID set in construction scripts. CLs from Dev-Editor: 3203739, 3205814 Change 3218277 on 2016/12/01 by Zak.Middleton #ue4-odin - Fixed crash when opening data table assets. Merged small fixes from Dev-Editor: CL 3156326, 3172078, 3187276. #jira ODIN-2096 Change 3218178 on 2016/12/01 by Jeff.Farris Fix for bad merge in InheritableComponentHandler (discovered via shadow var warning) Change 3218159 on 2016/12/01 by Zak.Middleton #ue4-odin - Wrap blueprint trace functions using trace channels to a generic helper that uses any collision channel. Before we decide whether to expose object channel or general collision channel functions to blueprints, this allows games to at least build off the general functions. Change 3216502 on 2016/11/30 by Nick.Whiting Missed files from merge Change 3216490 on 2016/11/30 by Nick.Whiting Merge Main -> Odin, up to CL 3202946 Change 3216159 on 2016/11/30 by Zak.Middleton #odin - Back out changelist 3216005 Change 3216005 on 2016/11/30 by Alex.Delesky Adding the IPluginWizardDefinition interface, which is used to determine the functionality of the new plugin wizard along with what kind of plugins can actually be created. This can be used to change the behavior of the plugin wizard to create new game mods. Change 3215329 on 2016/11/30 by Jeff.Farris Re-expose collision settings on EQSTestingPawn so users can make the test pawn agent dimensions match the pawn they are trying to simulate. Change 3213875 on 2016/11/29 by Jeff.Farris Turned off collision on EQSRenderingComponent for EQSTestingPawns. Fixes issue with bogus agent dimensions. Change 3213027 on 2016/11/29 by Matthew.Griffin Added Modding Build steps to copy everything needed for an installed editor build Added BuildCommand to run GenerateDistillFileSetsCommandlet and copy the resulting file list to another location Fix for APEX .pdb paths Change 3206638 on 2016/11/21 by Dan.Oconnor Fix for compile error, digging out authorative class from trash class Change 3206175 on 2016/11/21 by Nick.Atamas #umg exposed support for explicit wrap width in WrapBox. Change 3204658 on 2016/11/18 by Alan.Villani #odin Wiring up new intro cinematic to game flow. Change 3201200 on 2016/11/16 by Alan.Villani #odin Spectator/Leaderboards: Added console var vr.bAllowSpectatorTexture to enable/disable the display of the spectator texture. Also enabling spectator panel and leaderboards with this change. Change 3201064 on 2016/11/16 by Wyeth.Johnson Support new billboards Change 3199357 on 2016/11/15 by Alan.Villani #odin OnlineSubsystemOculus: Removing logging now that problem has been fixed. Change 3199302 on 2016/11/15 by Alan.Villani #odin OnlineSubsystemOculus: Skip reinit if not a successful init in ovr_ResetInitAndContext(). Also added logging to shutdown. Change 3198947 on 2016/11/15 by Alan.Villani #odin Spectator/Leaderboards: Reinstating CL 3197812 with fix to make InitWithWindowsPlatform() return warnings instead of errors. Change 3198803 on 2016/11/15 by Jeff.Farris Copied CL 3198691 frojm Dev-Sequencer (Sequence Recorder: Optimize record transforms by setting all the keyframes at once. Also, added option to toggle removing redundant keyframes from the recorded tracks.) Change 3198525 on 2016/11/15 by Alan.Villani #odin ODIN-1758. Spectator/Leaderboards: Back out changelist 3197812. This change was causing the automated packaged build to fail. Since the root cause hasn't been found, reverting the change. Change 3197909 on 2016/11/15 by Alan.Villani #odin OnlineSubsystemOculus: Fix for linking issue with Odin Monolithics build. Change 3197812 on 2016/11/14 by Alan.Villani #odin Spectator and leaderboard code support: Support for enhanced oculus leaderboard functionality. Player's score is uploaded on FinishLevel(). Added delegate function to allow Rift render code to render an additional passed in texture - this is used to display spectator information in the mirrored window. GetMissionRowName() can now return the row name for the intro mission. This is only code support. Blueprint support to follow. Change 3196940 on 2016/11/14 by Nick.Whiting Fix for include path Change 3196897 on 2016/11/14 by Nick.Whiting Integrating IKinema plugin. Note that there are some deprecation warnings that have not been fixed up because of the refactoring. We're going to avoid fixing that up for now, because it's a large refactor, and the plugin is only needed for this week. Change 3194897 on 2016/11/11 by Zak.Middleton #ue4 - (Odin) -- Downgrade warning log spam when sweeping skeletal mesh components. Change 3194799 on 2016/11/11 by Nick.Atamas Added better normals for curved WidgetComponent. Change 3194697 on 2016/11/11 by Chris.Bunner Duplicated CL 3194665 from Dev-Rendering: Duplicated behavior for inherited velocity scaling scaling to vert/surface spawned particles. Change 3194383 on 2016/11/11 by Zak.Middleton #ue4 - (Odin) - Avoid calling ComponentOverlapComponent() when handling overlap checks if either component is a SkeletalMeshComponent. That function returns false for those, however a normal global overlap check would return a valid result. Also elevated warnings (from log) when trying to use above function with SkeletalMeshComponents. Change 3194380 on 2016/11/11 by Zak.Middleton #ue4 - (Odin) - UPrimitiveComponent::GetCollisionEnabled() checks the owner Actor enable collision setting. Handles cases where the BodyInstance doesn't have physics state. Also merge CL 3136709 to fix overlap events spam. Change 3192616 on 2016/11/09 by Zak.Middleton #odin - Jump arcs only draw in editor if Navigation is shown, or when selected in editor. Change 3192310 on 2016/11/09 by Daniel.Wright [Copy] Support for Reflection Capture intensity with simple reflections, which are the default with Forward Shading Change 3191042 on 2016/11/08 by Nick.Atamas #slate/umg Added SetIsExapanded_Animated() method to SExpandableArea. Added anim length to ExpandableArea's widget style. Change 3190411 on 2016/11/08 by Guillaume.Abadie Adds some randomness in particul collisions. Change 3186455 on 2016/11/03 by Stanley.Hayes Fixed Tangents the mesh generation of Widget Component, now works with Bump Offset! -- The Impl for non-planar widgets is wrong but works as a temp fix Change 3186335 on 2016/11/03 by Alan.Villani #odin Oculus Input: Fix for haptic feedback not processing unless both touch controllers are active. Change 3184215 on 2016/11/02 by Daniel.Wright Added r.ReflectionEnvironmentLightmapMixLargestWeight, useful for restricting lightmap mixing to darkening only Change 3182542 on 2016/11/01 by Nick.Atamas Applied feedback after code review: - Fixed bug with incorrectly assigned LocalHitLocation - PerformTrace is now const - Clarified comments. Potentially fixed jira ODIN-1590, pending verification. Change 3181845 on 2016/11/01 by Nick.Atamas Details panel filters now show a distinct visual state (yellow highlight) when a filter is active. https://jira.it.epicgames.net/browse/UE-11088 Change 3179037 on 2016/10/28 by Zak.Middleton #ue4 - (Odin) - Avoid crash in PropertyChangeListener when WeakObjectPtr goes null. Prevent passing null objects in array to delegates that don't null check the elements. Repro steps still unclear, adding ensure() to catch it for more info. Change 3177127 on 2016/10/27 by Alan.Villani #odin Menu Shell: Put in cvar to allow disabling of haptics. Change 3174582 on 2016/10/26 by Zak.Middleton #ue4 - Changed Actor::GetForwardVector, GetUpVector, and GetRightVector to just wrap to the FQuat functions. These use inline constants rather than a memory fetch to the static FVector::ForwardVector etc, so the multiplies are better optimized in-place by the compiler (ie with constant folding). Change 3174401 on 2016/10/25 by Maciej.Mroz In nativized code Nullptr is always casted to UObject type. #jira ODIN-1560 Change 3173310 on 2016/10/25 by Guillaume.Abadie Fix a bug in the forward shading particule collision hack using ddx/ddy to compute the normal and implement an accurate way of compute the normal requiering two addtional scene depth buffer fetches for neighboorhing pixels and use it as default. Change 3172997 on 2016/10/24 by Nick.Atamas Cylindrical Widget - First Pass Support. Change 3172707 on 2016/10/24 by Nick.Whiting Integrating fix for haptic effects with sound waves crashing when no sound wave is loaded. Change 3172167 on 2016/10/24 by Jeff.Farris Merged 3120587 from Dev-Sequencer to Odin (Fbx Export: Fix double transforms on an exported mesh.) Change 3170221 on 2016/10/21 by Zak.Middleton #ue4 - Fix projectiles and characters not moving at all when frame delta time is very low (time dilation is very low, framerate is very high, or a combination of both). Change 3170036 on 2016/10/20 by Zak.Middleton #ue4 - Make Ragdoll collision profile ignore Visibility channel (to match CharacterMesh collision profile). Change 3169728 on 2016/10/20 by Zak.Middleton #ue4 - Fix comment. Change 3169727 on 2016/10/20 by Zak.Middleton #ue4 - Fix spacing/indentation. Change 3169277 on 2016/10/20 by Zak.Middleton #ue4 - Lower default simulations per second in PredictProjectilePath. Now that it is more accurate (after CL 3124174), this will still maintain quality with better performance. Change 3169272 on 2016/10/20 by Zak.Middleton #ue4 - Change some array Reset() calls back to Empty(), since blueprints typically keep these arrays around forever and we don't want them to stay large. Change 3168157 on 2016/10/19 by Jeff.Farris Merging 3168079 from Dev-Framework to Odin (Fix timing issue that causes snapshotpose to t-pose.) Change 3167894 on 2016/10/19 by Chris.Bunner Updated tooltip comment. Change 3167569 on 2016/10/19 by Jeff.Farris #engine Fixed issue with cine camera component where blueprint-accessible FOV data could be incorrect in some circumstances Change 3166950 on 2016/10/18 by Zak.Middleton #ue4 - Fix reversed logic checking for an Actor after a cast was supposed to have failed, broken in CL 2695656. Change 3166807 on 2016/10/18 by Zak.Middleton #ue4 - Make all GameplayStatics functions take const WorldContextObjects, so they are more usable from C++. Change 3166540 on 2016/10/18 by Jeff.Farris Merging 3164818 from Dev-Framework to Odin (Added a pose snapshot feature that allows users to convert an existing skeletal mesh pose into a node inside the anim blueprint. This is useful for things like getup from ragdoll.) Change 3166323 on 2016/10/18 by Jeff.Farris #engine Fixed issue where Navlink smartlinks wouldn't respect the Direction property proprely. Change 3163415 on 2016/10/14 by Chris.Bunner Allow surface actor particles to inherit UV coordinates through the dynamic parameter struct. Change 3162716 on 2016/10/13 by Jeff.Farris #engine Made UPathFollowingComponent::HasReachedCurrentTarget() virtual Change 3161602 on 2016/10/13 by Jeff.Farris #engine removed a comment I left in Change 3161037 on 2016/10/12 by Alan.Villani #odin Loading Screens: Modified AsyncLoadingSplash to use platform specific max layer number. Change 3160690 on 2016/10/12 by Jeff.Farris #engine Added PathFollowingComponent::bIsDecelerating to know when AI is in its "decelerate at the end of the path" state Change 3160686 on 2016/10/12 by Jeff.Farris #engine Fixed comment on NavMovementComponent::bUseAccelerationForPaths Change 3160200 on 2016/10/12 by Zak.Middleton #odin - Added Odin versions of Sphere, Capsule, Box trace functions taking any trace channel. Change 3156847 on 2016/10/10 by Maciej.Mroz #jira ODIN-1345 In nativized code, value of output array parameter is reset before the funtion, that will fill the parameter, is called. The same mechanism is already used by bytecode comiler. Change 3155495 on 2016/10/07 by Zak.Middleton #ue4 - RootComponent fixup in AActor::PostLoadSubojects should handle constructors that also try to fix up the old root component on their own. Additionally we should attach the old root component to the new one, otherwise it has no parent. Change 3154962 on 2016/10/07 by Chris.Bunner Duplicating CL 3148934, 3148994 from Dev-Rendering - Added pre-skinned local position material graph node, vertex shader only. Change 3154255 on 2016/10/06 by Zak.Middleton #ue4 - Add AIController to the delegate for move completion for blueprint "AI Move To Location or Actor" nodes, so you can know which AI finishes the move. Change 3154217 on 2016/10/06 by Mike.Beach Backing out changelist 3146883, as it was causing properties to clear on load (in Gun_Shotgun/BP_RightHand). Change 3154199 on 2016/10/06 by Zak.Middleton #ue4 - Inline a few simple functions in UKismetSystemLibrary for performance in nativized builds. Change 3153427 on 2016/10/06 by Jeff.Farris Updated Oculus AppID to the full game ID Change 3148205 on 2016/10/02 by Zak.Middleton #ue4 - Perf: Add simple path for UPrimitiveComponent::UpdatePhysicsVolume() when there are no physics volumes placed in a level. Avoid checking overlapping components for any volumes at all. Change 3148089 on 2016/10/01 by Phillip.Kavan Merging in CLs 3148022 and 3148033 from //UE4/Dev-Blueprints/... Note: These were dependent on the following additional CLs, which have also been merged in: => 3081010,3116021,3123581,3131318,3132348,3133072,3133817,3137800,3137851 Change 3148054 on 2016/10/01 by Nick.Whiting Adding much smaller footprint entitlement check Change 3147910 on 2016/10/01 by Nick.Whiting Back out changelist 3147807 Change 3147909 on 2016/10/01 by Nick.Whiting Back out changelist 3147787 Change 3147810 on 2016/09/30 by Zak.Middleton #odin - Fix "Delay" nodes in macros not working correctly. This made simultaneous instances of our "UndilatedDelay" and "0-1 Lerp" macros incorrect. (Mirror CL 3119502 from Dev-Blueprints) Change 3147807 on 2016/09/30 by Nick.Whiting Blueprint cyclic dependency fixes, submitted on behalf of DanO. Change 3147787 on 2016/09/30 by Nick.Whiting Adding Oculus Entitlement check for Odin Change 3147732 on 2016/09/30 by Daniel.Wright From Guillaume: Skip ClearStencilFromBasePass by using a single bit of stencil as a sandbox bit. This requires all passes that use stencil to setup a proper read / write mask, as other stencil bits will be non-zero. Saves .14ms Change 3147285 on 2016/09/30 by Dan.Oconnor Back out changelist 3147258 Introduced "Detaching from existing linker" crash Change 3147258 on 2016/09/30 by Dan.Oconnor Making sure we defer objects that have unserialized archetypes Change 3146985 on 2016/09/30 by Daniel.Wright Skip Prepass ResolveSceneDepthTexture if there's no way decals or shadows will use it, since there's another resolve after the base pass. Saves .1ms in the planar reflection pass. Change 3146883 on 2016/09/30 by Dan.Oconnor Fix for component data getting lost on load. Two primary causes: 1. Loading component, then loading its template and reinitializing it from parent 2. Discarding inheritable component handler on load because it 'matched' the unloaded super (or it was unloaded and matched a loaded super, or both of them weren't yet loaded and they matched) Change 3145504 on 2016/09/29 by Daniel.Wright Capsule indirect shadows are now affected by DynamicShadows showflag Change 3145416 on 2016/09/29 by Wyeth.Johnson optimized vector to radial value to use atan2fast. Small polish to weapon available indicators, slightly smaller, radial res in, get brighter right before pickup to match the glow transition Change 3144359 on 2016/09/28 by Zak.Middleton #ue4 - Add IsPointInBox() and IsPointInBoxWithTransform() to KismetMathLibrary. Change 3144302 on 2016/09/28 by Daniel.Wright New SceneCapture functions for managing the ShowOnly list: RemoveShowOnlyComponent, RemoveShowOnlyActorComponents, ClearShowOnlyComponents Change 3144210 on 2016/09/28 by Daniel.Wright Manual copy - Shadow stencil optimisation from Ben Woodhouse with cvar (enabled by default). Saves .2ms in Odin. Change 3144208 on 2016/09/28 by Daniel.Wright Setup scissor for scene depth resolves, helps with passes using screenpercentage to reduce resolution. Planar reflection depth resolves .8ms -> .2ms on 970 Change 3143778 on 2016/09/28 by Ryan.Vance Disabling motion blur scale behavior. We want the motion blur scale to be consistent regardless of time dilation. Cleaning up the velocity bias change made yesterday for odin, need to ensure it doesn't make it back to main as it will break TAA. Change 3143728 on 2016/09/28 by Jeff.Farris Made AIController::MoveTo virtual Change 3142740 on 2016/09/27 by Nick.Whiting Fix for dynamic object velocity rendering not working. MSAA was breaking it, needed to add a bias in the VelocityShader in order to pass depth tests Change 3142665 on 2016/09/27 by Ryan.Vance Fixing incorrect uniform/buffer references for passes that aren't drawn with ISR when ISR is turned when using forward. Change 3142488 on 2016/09/27 by Zak.Middleton #ue4 - Expose Character::MovementModeChangedDelegate to blueprints. Fix category on OnReachedJumpApex event. Change 3142360 on 2016/09/27 by Frank.Fella Sequencer - Don't crash when a bool track or visibility track has a null runtime object. Change 3142204 on 2016/09/27 by Zak.Middleton #odin - Nav jump links update their nav data in realtime as the start and end points are moved. Still need to color the predicted path based on the nav data. Change 3141695 on 2016/09/27 by Guillaume.Abadie Fixes depth buffer collision on GPU particle in the forward render by computing the world normal using a cross(ddx(), ddy()) of the world position. #review-3141656 @ben.woodhouse Change 3141013 on 2016/09/27 by Zak.Middleton #ue4 - NavLinkProxy properly calls SetNavigationRelevancy() when created in the editor. Fixes the need to uncheck/recheck bSmartLinkIsRelevant. Change 3140878 on 2016/09/26 by Zak.Middleton #ue4 - Add MarkRenderStateDirty() to UNavLinkCustomComponent::SetLinkData(), so visualizers update asap after link data changes. Change 3140863 on 2016/09/26 by Nick.Whiting Adding in vr.MonoCapture, which disables the right eye for capturing in order to give a performance boost Change 3140790 on 2016/09/26 by Zak.Middleton #ue4 - Make LineBatchComponent's FLineBatcherSceneProxy::GetViewRelevance() respect show flags (such as hidden in game). Change 3140175 on 2016/09/26 by Dan.Oconnor Mirror of 3140143 #jira UE-36395 Change 3139622 on 2016/09/26 by Maciej.Mroz Fixed const local variables in Nativized code Change 3139257 on 2016/09/24 by Jeff.Farris Added GetGrabbedComponent() to UPhysicsHandleComponent. Change 3139050 on 2016/09/23 by Nick.Whiting Support for trailer capturing, as well as gamepad controls for adjustment Change 3138644 on 2016/09/23 by Zak.Middleton #ue4 - Added FPredictProjectilePathPointData::Reset(). Presize path points array in UGameplayStatics::PredictProjectilePath(). Change 3138521 on 2016/09/23 by Ryan.Vance #jira UE-36114 We need to bind the right eye's forward lighting state when ISR is enabled and branch depending on which eye instance we're drawing. Added a copy of FForwardGlobalLightData, NumCulledLightsGrid CulledLightDataGrid, and ForwardLocalLightBuffer for the right eye and set them when drawing with ISR Moved ForwardLightingResources from FViewInfo up to FSceneView for access Removed USE_CULLED_LOCAL_LIGHTS as it wasn't being used and complicated the shader refactor TODO: This can be greatly simplified by generating the FForwardGlobalLightData uniform assignment shader code similar to how I'm handling the view uniforms. To clean up the branching for the grid buffers we should write both eyes into a single buffer and just use an offset. Change 3138178 on 2016/09/23 by Zak.Middleton #ue4 - Add FVector::DistXY() and Dist2D() (as an alias). Add FVector::Distance() as an alias for Dist(), and FVector::DistSquared2D() as an alias for DistSquaredXY(). Fixed comment in FVector2D::Distance() saying it was the squared distance. - This is more in line with the Size2D(), SizeSquared2D(), GetSafeNormal2D() naming, but maintains backwards compat for a large amount of code. Change 3138162 on 2016/09/23 by Lukasz.Furman fixed navmesh crash on attempt to regenerate an empty tile layer Change 3137578 on 2016/09/23 by Maciej.Mroz #jira ODIN-1017 [Nativization] Crash while loading Hub_env level Ensured, that CreateExport (and fully construction) is called for loaded DynamicClass. Change 3136774 on 2016/09/22 by Chris.Bunner Gather object references from stereo view state in USceneCaptureComponent. This matches behavior of other classes such as ULocalPlayer. #jira ODIN-1013 Change 3136491 on 2016/09/22 by Jeff.Farris Removed an unnnecessary ensure in ApplyPhysicalAnimationProfileBelow. Change 3136412 on 2016/09/22 by Zak.Middleton #ue4 - Inlined more functions in KismetMathLibrary that used error reporting (eg divide by zero errors). Moved the actual error reporting to the cpp so the inline overhead and compilation overhead is negligible. Change 3136288 on 2016/09/22 by Zak.Middleton #ue4 - Inline KismetMathLibrary functions where appropriate. Improves performance in nativized builds where the calls were not inlined even for the most simple functions (like "Not Bool", "Add Ints"). Change 3136162 on 2016/09/22 by Ben.Marsh Merge CL 3136158 to fix issues generating project files with Visual Studio Express. Change 3135403 on 2016/09/22 by Jeff.Farris GameplayStatics::ApplyPointDamage and ApplyDamage now return the actual damage that was applied Change 3135052 on 2016/09/21 by Zak.Middleton #ue4 - Add new GameplayStatics::PredictProjectilePath functions with added functionality. - Option to trace for collision by trace channel, object type, or both. - Added versions that take input and output struct parameters. - Output now includes location, velocity, and time for each point on the path. Change 3134757 on 2016/09/21 by Guillaume.Abadie Removes all resolve operations from distortion pass and support MSAA for the forward shader. #review-3134758 @daniel.wright Change 3134635 on 2016/09/21 by Jeff.Farris Merged from Dev-Physics-Upgrade to Odin. This is the upgrade to PhysX 3.4. Change 3134101 on 2016/09/21 by David.Hill Post process CombineLUT shouldn't be per eye. Also disable weighted-average post process passes for bloom when filter size is set to zero. #review-3134102 @chris.bunner Change 3133191 on 2016/09/20 by Guillaume.Abadie Normalizes material's Opacity Mask according to Opacity Mask Clip Value. Change 3133082 on 2016/09/20 by Brian.Karis Static light source shapes in reflection captures will fade out when outside influence instead of going black. Change 3132936 on 2016/09/20 by Jeff.Farris Fixed some engine issues with setting mass overrides. Change 3132821 on 2016/09/20 by Guillaume.Abadie Adds support for MSAA on masked material using shader implemented alpha to coverage. #review-3130154 @daniel.wright Change 3132522 on 2016/09/20 by Zak.Middleton #ue4 - Cache conversion of WalkableSlopeAngle to the cosine value in FWalkableSlopeOverride struct, when used in the override modes. Avoids computing this conversion (potentially multiple times per frame) for every character movement move and floor test. Change 3130457 on 2016/09/19 by Daniel.Wright Reuse ESceneColorFormatType::HighEndWithAlpha if the format allows it - prevents two scene color textures being allocated with planar reflections with r.SceneColorFormat=4 Change 3129467 on 2016/09/16 by Zak.Middleton #ue4 - Improve Accuracy of final point in UGameplayStatics::PredictProjectilePath() to respect MaxSimTime. Previously the sim could have exceeded the max time if (MaxSimTime / SimFrequency) had a fractional part. Change 3129327 on 2016/09/16 by Daniel.Wright Added r.NormalCurvatureToRoughnessExponent for tweaking NormalCurvatureToRoughness is now applied to clearcoat roughness Change 3129324 on 2016/09/16 by Daniel.Wright Added r.TemporalAACurrentFrameWeight for debugging Change 3128812 on 2016/09/16 by Daniel.Wright 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. Change 3128811 on 2016/09/16 by Daniel.Wright 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. Change 3126195 on 2016/09/15 by Maciej.Mroz #jira UE-35262 Incompatible pins give generate warning, when error is necessary. Fixed incompatible pins validation. Manually merged cl#3124667 from Dev-Blueprints Change 3126108 on 2016/09/14 by Nick.Whiting Added GetLaunchOption blueprint node to check if command line arguments are set Added -demo path for Odin, which disables pause, and changes opening flow Change 3125819 on 2016/09/14 by Zak.Middleton #ue4 - Add option for accurate bounds for LineBatchComponent, on by default. Corrects attempts to focus on actors using them causing the view to zoom out to HALF_WORLD_MAX. Turned this off for world debug line visualizers, to avoid affecting perf for those (and they often have lines/points all over anyway). Change 3125686 on 2016/09/14 by Zabir.Hoque Slimed down when and where we resolve RT particularly for forward rendering. Change 3124174 on 2016/09/13 by Zak.Middleton #ue4 - Improved accuracy and performance of PredictProjectilePath(). Switched to semi-implicit Euler integration. Fixed not being able to pass in const WorldContextObjects (only an issue when used from code, BP didn't care). Change 3124121 on 2016/09/13 by Zak.Middleton #odin - Integrate CL 3122728 from Dev-Editor: UMG - Exposing a trace channel for the WIC, defaults to Visibility. Improving how the WIC handles the cursor moving off the widget, it now maintains the last hit location rather than 0,0 which would cause things like dragged Sliders to reset to the left. Ideally - the WIC would know the underlying widget has capture and continue to fake collision against an imaginary plane to simulate a continuous surface. Change 3124116 on 2016/09/13 by Zak.Middleton #odin - Back out revision 3 from //Odin/Main/Engine/Source/Runtime/UMG/Private/Components/WidgetInteractionComponent.cpp Change 3123485 on 2016/09/13 by Stanley.Hayes Added optional trace channels to WidgetInterationComponent Change 3123301 on 2016/09/13 by Zak.Middleton #ue4 - Added ENGINE_API to some functions in ULineBatchComponent that were not exported: DrawLines, DrawLine, DrawPoint, DrawSolidBox, DrawMesh. Change 3122632 on 2016/09/13 by Maciej.Mroz Improved ReverseForEachLoop macro in StandardMacros Change 3122351 on 2016/09/12 by Nick.Whiting Adding 90fps tracking to the FPS summary chart creation Change 3122325 on 2016/09/12 by Wyeth.Johnson Needed a 5 minute breather. Updated Editor splash screen because reasons Change 3121869 on 2016/09/12 by Zak.Middleton #ue4 - (Merge to Odin) Fix UGameplayStatics::SpawnEmitterAttached() using wrong scale when SnapToTarget (Keep World Scale) option is used. Improve comments for SpawnEmitterAttached(). #jira UE-34482 (Integrate Framework->Odin) Change 3121407 on 2016/09/12 by Wyeth.Johnson Fixed shopfront for Oz, big bot WIP Change 3121253 on 2016/09/12 by Zak.Middleton #ue4 - Fix CharacterMovement braking when using acceleration for paths. - Fixed pathfinding using friction in GetPathFollowingBrakingDistance() and using wrong formula for stopping distance. Pathfinding adjusts analog input to achieve this deceleration, so friction is never applied and should not be included here. - Added virtual "GetMaxBrakingDeceleration()" function to CharacterMovementComponent. Returns deceleration value set for current movement mode (ie BrakingDecelerationWalking, BrakingDecelerationFlying, etc). Change 3121231 on 2016/09/12 by Wyeth.Johnson Fixed procedural Stuff, now to fix aliasing :) [CL 3226598 by Nick Whiting in Main branch]
2016-12-08 03:26:33 -05:00
}
FDistortionScreenPS() = default;
FDistortionScreenPS(const FGlobalShaderType::CompiledShaderInitializerType& Initializer)
: FGlobalShader(Initializer)
{}
};
/** A pixel shader for rendering the full screen refraction pass */
class FDistortionApplyScreenPS : public FDistortionScreenPS
{
public:
DECLARE_GLOBAL_SHADER(FDistortionApplyScreenPS);
SHADER_USE_PARAMETER_STRUCT(FDistortionApplyScreenPS, FDistortionScreenPS);
};
IMPLEMENT_GLOBAL_SHADER(FDistortionApplyScreenPS, "/Engine/Private/DistortApplyScreenPS.usf", "Main", SF_Pixel);
/** A pixel shader that applies the distorted image to the scene */
class FDistortionMergeScreenPS : public FDistortionScreenPS
{
public:
DECLARE_GLOBAL_SHADER(FDistortionMergeScreenPS);
SHADER_USE_PARAMETER_STRUCT(FDistortionMergeScreenPS, FDistortionScreenPS);
};
IMPLEMENT_GLOBAL_SHADER(FDistortionMergeScreenPS, "/Engine/Private/DistortApplyScreenPS.usf", "Merge", SF_Pixel);
class FDistortionMeshVS : public FMeshMaterialShader
{
public:
DECLARE_SHADER_TYPE(FDistortionMeshVS,MeshMaterial);
FDistortionMeshVS() = default;
FDistortionMeshVS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
: FMeshMaterialShader(Initializer)
{
}
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters& Parameters)
{
return IsTranslucentBlendMode(Parameters.MaterialParameters.BlendMode) && Parameters.MaterialParameters.bIsDistorted;
}
};
class FDistortionMeshPS : public FMeshMaterialShader
{
public:
DECLARE_SHADER_TYPE(FDistortionMeshPS,MeshMaterial);
FDistortionMeshPS() = default;
FDistortionMeshPS(const ShaderMetaType::CompiledShaderInitializerType& Initializer)
: FMeshMaterialShader(Initializer)
{
}
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters& Parameters)
{
return IsTranslucentBlendMode(Parameters.MaterialParameters.BlendMode) && Parameters.MaterialParameters.bIsDistorted;
}
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FMeshMaterialShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
// Skip the material clip if depth test should not be done
OutEnvironment.SetDefine(TEXT("MATERIAL_SHOULD_DISABLE_DEPTH_TEST"), Parameters.MaterialParameters.bShouldDisableDepthTest ? 1 : 0);
}
};
IMPLEMENT_MATERIAL_SHADER_TYPE(, FDistortionMeshVS, TEXT("/Engine/Private/DistortAccumulateVS.usf"), TEXT("Main"), SF_Vertex);
IMPLEMENT_MATERIAL_SHADER_TYPE(, FDistortionMeshPS,TEXT("/Engine/Private/DistortAccumulatePS.usf"),TEXT("Main"),SF_Pixel);
bool FDeferredShadingSceneRenderer::ShouldRenderDistortion() const
{
static const auto DisableDistortionCVar = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.DisableDistortion"));
const bool bAllowDistortion = DisableDistortionCVar->GetValueOnAnyThread() != 1;
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 4047413) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3795481 by Nick.Shin HTML5 - disable SupportsScreenPercentage() - render the full screen otherwise, this is causing HTML5 screen to only render a portion of the screen and in black... - there may be another function is that not getting fired off "to render the screen" properly - this may be due to IsMobileHDR checks that are not fully accounted for the HTML5 platform #jira UE-52640 HTML5 only renders a black rectangle in the browser when launched Change 3807007 by Nick.Shin HTML5 - remove webgl1 only precompile guards (UE4_HTML5_TARGET_WEBGL2) toolchain can "fallback" to webgl1 -- webgl2 functions in UE4 code are "if checked"/configured/setup at start up #jira UE-51267 WebGL1 fails to compile Change 3822593 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3823512 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3824639 by Nick.Shin HTML5 - OSX - RunMacHTML5LaunchHelper.command - more helpful warning messages #jira UE-49861 A copied RunMacHTML5LaunchHelper.command gives unspecific Mono error Change 3829092 by Josh.Adams - Updated UnrealRemote to 1.4.1 Change 3832708 by Chris.Babcock Allow UE4Commandline.txt in APK #jira #ue4 #android Change 3835867 by Nick.Shin HTML5 - code cleanup origial work was for: UE-27141 (Remove all #if PLATFORM_HTML5 from high level code) this exposed an issue that i totally forgot about (.../Engine/Source/Developer/... only does builds tools -- which does not make use of PLATFORM_XXX preprocessor) tested with HTML5 builds with QAGame project :: TM-ShaderModels map #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3839967 by Mi.Wang Override MaxObjectInGame on Android to save ~30M with the ObjectArray size. #Android Change 3842022 by Mi.Wang Fix an AssetRegistry size calculation bug. Change 3843552 by Sorin.Gradinaru UE-54139 Possible crash with new virtual keyboard on Android if suggestions not disabled #4.19 #Android #jira UE-54139 S8 on 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Fix: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags) Change 3844210 by Nick.Shin HTML5 - filter out "windows/super" keys - these are not used in UE4 - but, keycode are not the expected "91 or 92" values, SDL keys are "227 & 231" instead... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3844874 by Nick.Shin HTML5 - detect "SyntaxError: " and do a forced reload - an actual syntax error would be caught during compile time - this is usually error condition is usually seen when browser is running "old/partial" cached data and it's fairly safe to just reload the page #jira UE-54017 QAGame fails to launch properly on HTML5 Firefox 64 bit Change 3846695 by Nick.Shin #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3847309 by Nick.Shin HTML5 - (not to) show virtual joystick - virtual joysticks are not shown by default-- and the mouse not captured - this now behaves like the win64 client version #jira UE-33854 Virtual Joysticks In HTML5 if Mobile/Tablet Project is chosen Change 3847310 by Nick.Shin HTML5 - set controller axis and button max value in code instead of relying on emscripten_get_gamepad_status() - seems emscripten might be uninitialized by the time controlers are used... #jira UE-28513 - Using a controller in HTML5 causes error Change 3850606 by Nick.Shin HTML5 - more static warning fix ups #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3850624 by Nick.Shin HTML5 - tell user/developer to show unsupported WebGL browsers on old hardware -- will need to try another browser note: using following jira to track progress: #jira UE-47066 Packaged HTML 5 Map Prompts for Firefox Update in Chrome Change 3855610 by Sorin.Gradinaru UE-49173 Progress bar causes black screen on iOS #iOS #4.20 #jira UE-49173 The bug occurs on iOS with Metal, when the last Slate element to be draw in the scene is a ScrollBar with progress between 0 and 1. As a workaround, adding another widget (eg. button, image) in the Blueprint solves the problem. The bug can be reproduced by adding OutDrawElements.PushClip & OutDrawElements.PopClip in any SWidget::OnPaint. The solution is to disable the scissor RHICmdList.SetScissorRect(false, 0, 0, 0, 0); in FSlateRHIRenderingPolicy::DrawElements after the batch rendering Change 3855652 by Sorin.Gradinaru iOS 3D browser UE-53248 Web Browser on a Widget Component is 2D when launching on to iOS #jira UE-53248 #iOS #4.20 Uses the same WebTexture from the WebBrowser plugin as the Android version. + Code contributed by Juan.Belon from Alea S.r.l at https://udn.unrealengine.com/questions/390166/3d-world-space-widget-is-being-rendered-in-screen.html Change 3856174 by Nick.Shin HTML5 - python forking will still error while trying to terminate already terminated processes - added same "WindowsError code 5" handler found in subprocess.py #jira UE-51618 HTML5 fails to build, [Error 5] Access is denied Change 3863322 by Sorin.Gradinaru UE-54317 DXT apps fail on first launch when 'For Distribution' enabled, Unsupported Texture Format #jira UE-54317 #Android #4.19 Change 3878088 by Nick.Shin UEMOB-425 superceeds this jira #jira UE-25257 Mac HTML5 project crashes upon downloading expression HasFoundDataDirectory failed Change 3884560 by Jack.Porter Fix logspam in FAVMoviePlayer #jira UE-54760 Change 3886533 by Mi.Wang Fix a potential crash that the VirtualKeyboardWidget has been hide while trying to use in gamethread. Change 3889081 by Sorin.Gradinaru UE-54490 Android Startup Movie audio still playing when app paused, and after app resumed the movie is blackscreen until engine ticked. #Android #4.20 #jira UE-54490 Call ForceCompletion for the intial movie player on onPause. Call App Restart on Resume. Programmatically restarting an Android application basically consists in killing the current app, then using the launch intent as parameter for startActivity. This can be done only in onResume , which means that the movie player still has to be manually paused/stopped in onPause. I╞ve tried to kill the activity on onPause, tested on several devices, with various problems: the app doesn╞t restart anymore (onResume is not called) or the app is automatically sent to background (seems to be crashing when using the multitasking soft key). Change 3890320 by Chris.Babcock Fix initializer ordering #jira UE-55189 #ue4 Change 3958226 by Nick.Shin HTML5 disable memory poison tests and fix a bug during Realloc() // for Linux... and in turn for HTML5 #jria none Change 3958250 by Nick.Shin HTML5 - FText::FormatStr - skip if multi-threading not supported #jira none Change 3968328 by Nick.Shin HTML5 CORS fixes still need datarouter.ol.epicgames.com fixes to completely solve these issues. (API server own estimates no later than mid-April) note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing #jira UE-19330 Change 3971405 by Nick.Shin HTML5 suppress double printing to console.log #jira none Change 3978767 by Nick.Shin HTML5 CORS fixes note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing tested (against datarouter.ol.epicgames.com fixes) and found to be functional #jira UE-22285 Change 3981103 by Nick.Shin HTML5 - num pad keys crashes project match latest Engine/Source/Runtime/InputCore/Private/Linux/LinuxPlatformInput.cpp to HTML5PlatformInput.cpp also fix a HUD crash... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3983424 by Sorin.Gradinaru UE-57107 Attempting to load a streamed media source causes the app to become unresponsive when device is not connected to internet #jira UE-57107 #Android #4.20 The ANR is because the android.media.MediaExtractor.setDataSource(UrlPath) calls an underlying api which retries the download (10-30 times). Additional issue (all platforms): the MediaFrameworkTest/StreamSource_Infiltrator souce seems to have been removed (no longer at https://docs.unrealengine.com/latest/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4). According to the docs (https://docs.unrealengine.com/en-US/Engine/MediaFramework/HowTo/StreamMediaSource) the new location of the Sample Video is at https://dnnrz1gqa.blob.core.windows.net/portals/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4?sr=b&si=DNNFileManagerPolicy&sig=F%2BBpnYueeQTUTSW0nCRSrXEfr35LIawe7C3MQoe2%2FPI%3D Change 3985248 by Nick.Shin HTML5 game window size add project setting drop down box to select canvas scaling mode #jira UE-46555 HTML5 game window does not scale with browser size Change 3986190 by Sorin.Gradinaru UE-56076 Android Launch On "Running..." toast intermittently doesn't appear #jira UE-56076 #Android #4.10 When cancelling Launch on Device, always call CancelContinuations for the current task Change 3986412 by Nick.Shin CIS error fix #jira none Change 3987007 by Nick.Shin HTML5 fullscreen size fix - when using FIXED scale mode initially, there's some strange padding margins - but, setting UE4_fullscreenScaleMode to anything "but FIXED scale mode" will work... #jira UE-46555 HTML5 game window does not scale with browser size Change 3988408 by Nick.Shin HTML5 call EndSession() onbeforeunload() ? should PreExit() be called instead? #jira UE-57207 Session End event is not generated for HTML5 Change 3991828 by Nick.Shin HTML5 shipping build crash some FVector2D needs ContainsNaN() checks #jira UE-57401 Projects packaged for Shipping HTML5 do not launch the engine in the browser Change 3992884 by Nick.Shin HTML5 call EndSession() onbeforeunload() code cleanup #jira UE-57207 Session End event is not generated for HTML5 Change 3992887 by Nick.Shin datarouter: Session events code cleanup #jira UE-22285 - Session events are not generated for HTML5 Change 4002603 by Sorin.Gradinaru UE-56177 Unplugging a device while launching onto it from a source build will result in the "Running..." toast staying open #jira UE-56177 #Android #iOS #4.10 Using the device discovery to signal when the running device gets disconnected Change 4007162 by Dmitriy.Dyomin Merging using Dev-Mobile->FortMain Added ObjectOrientation material node for decals, returns decal projection direction ( X-axis) #jira none Change 4012196 by Sorin.Gradinaru UE-57120 Lighting needs to be rebuilt error appears on Camera test app on Nexus 9 and Note 4. #jira UE-57120 #Android #4.20 Level lightings rebuilt and QA-Media_Camera_BuiltData.uasset added. The message appeared (rarely and only on certain devices) because the engine tries to load the pre-computed lightmap data on the render thread, then to add it to the scene on the game thread (in FPrecomputedVolumetricLightmap::AddToScene). Most of the times there is a desync and the data is not yet loaded when the lightmap is validated (in FScene::AddPrecomputedVolumetricLightmap). Change 4013034 by Sorin.Gradinaru UE-55427 iOS application crashes when suspending and resuming the startup movie in rapid succession #jira UE-55427 #iOS #4.20 Caused by ToggleSuspend waiting for FDefaultGameMoviePlayer::WaitForMovieToFinish() Renamed InitialMovie to StartupMovie, including the methods related to the Android platform. Change 4015449 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Run on device: Pressing Cancel on the "Running..." message should stop the application, if running Cancel Android builds using "adb shell am force-stop <bundle_id> <device_id>" Note: Using a new AutomationTool command (re-starting the Automation tool after canceling the BuildCookRun task chain) is too slow - takes 3-10 sec depending on the PC configuration. AutomationTool is used now only to correctly retrieve the bundle id for each Android device. This is done inside the BuildCookRun command when the application is deployed on the device(s). Cannot simply use the current project's properties to retrieve the bundle id, because when using Launch-> Device Launcher, the user can choose to cook&deploy a different project/texture format, also the user can create & use a profile with multiple devices / with different texture formats. Change 4016057 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #4.20 #Android #4666 https://github.com/EpicGames/UnrealEngine/pull/4666 Implemented Clipboard function on Android. Change 4020229 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #Android #4.20 GameActivity.java: moving the methods related to clipboard above the native public declarations Change 4021188 by Sorin.Gradinaru UE-57876 Location accuracy is ignored by ULocationServicesIOSImpl #jira UE-57876 #iOS #4.30 In ULocationServicesIOSImpl::InitLocationServices(ELocationAccuracy Accuracy, float UpdateFrequency, float MinDistance) the first param must be converted to CLLocationAccuracy and used as the first param of LocationDelegateinitLocationServices, rather than using the hardcoded kCLLocationAccuracyHundredMeters. Also fixed a compilation error (!) when enabling The Location Services plugin on iOS Change 4024839 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Removed unnecessary #include "AndroidTargetDevice.h", causing circular reference => nightly build errors Change 4024962 by Cosmin.Sulea UE-56294 - Packaging step fails when packaging project for distribution #jira UE-56294 Change 4026122 by Sorin.Gradinaru UE-57149 Razer Phone: Crash after Switching Camera Format 22-26 times #jira UE-57149 #Android #4.20 jobject obj = env->GetObjectArrayElement must be followed by env->DeleteLocalRef(obj) The bug can probably be reproduced by using a MediaPlayer. Change 4038185 by Nick.Shin HTML5 - merge error fix MallocAnsi.cpp was stomped on #jira UE-58367 //UE4/Dev-Mobile - Compile UE4Game HTML5 - use of undeclared identifier 'malloc_usable_size' Change 4039521 by Dmitriy.Dyomin Export WorldBrowser API so plugin makers can use it #jira UE-57323 Change 4039523 by Dmitriy.Dyomin Exposed MobilePatchingLibrary API #jira UE-55941 Change 4039526 by Dmitriy.Dyomin Fixed: Hierarchy filtering does not work in world composition #jira UE-57900 Change 4039529 by Dmitriy.Dyomin Fixed: 'Apply Fogging' in Material does not work on Mobile (GitHub 4357) #jira UE-53618 #4357 Change 4039874 by Sorin.Gradinaru UEMOB-436 Support "All Android" Launch On and Project Launcher options The main change is in the DeviceProxy class. A new type ("All devices" proxy) was added, and the proxy now holds a list of physical device IDs for every variant (texture format), instead of a single device ID. The "All devices" proxy is updated automatically by the device discovery thread. The change was necessary because the list in the Project Launcher is using the device proxy list. #jira UEMOB-436 #Android #UE4 #4.19 Change 4041446 by John.Mauney Fix that Chris B made locally on my machine #jira UE-58420 Change 4041791 by Jack.Porter Fix CIS incremental UE4Editor Win64 #jira 0 [CL 4047603 by Jack Porter in Main branch]
2018-05-02 22:53:38 -04:00
if (GetRefractionQuality(ViewFamily) <= 0 || !bAllowDistortion)
{
return false;
}
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 4047413) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3795481 by Nick.Shin HTML5 - disable SupportsScreenPercentage() - render the full screen otherwise, this is causing HTML5 screen to only render a portion of the screen and in black... - there may be another function is that not getting fired off "to render the screen" properly - this may be due to IsMobileHDR checks that are not fully accounted for the HTML5 platform #jira UE-52640 HTML5 only renders a black rectangle in the browser when launched Change 3807007 by Nick.Shin HTML5 - remove webgl1 only precompile guards (UE4_HTML5_TARGET_WEBGL2) toolchain can "fallback" to webgl1 -- webgl2 functions in UE4 code are "if checked"/configured/setup at start up #jira UE-51267 WebGL1 fails to compile Change 3822593 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3823512 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3824639 by Nick.Shin HTML5 - OSX - RunMacHTML5LaunchHelper.command - more helpful warning messages #jira UE-49861 A copied RunMacHTML5LaunchHelper.command gives unspecific Mono error Change 3829092 by Josh.Adams - Updated UnrealRemote to 1.4.1 Change 3832708 by Chris.Babcock Allow UE4Commandline.txt in APK #jira #ue4 #android Change 3835867 by Nick.Shin HTML5 - code cleanup origial work was for: UE-27141 (Remove all #if PLATFORM_HTML5 from high level code) this exposed an issue that i totally forgot about (.../Engine/Source/Developer/... only does builds tools -- which does not make use of PLATFORM_XXX preprocessor) tested with HTML5 builds with QAGame project :: TM-ShaderModels map #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3839967 by Mi.Wang Override MaxObjectInGame on Android to save ~30M with the ObjectArray size. #Android Change 3842022 by Mi.Wang Fix an AssetRegistry size calculation bug. Change 3843552 by Sorin.Gradinaru UE-54139 Possible crash with new virtual keyboard on Android if suggestions not disabled #4.19 #Android #jira UE-54139 S8 on 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Fix: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags) Change 3844210 by Nick.Shin HTML5 - filter out "windows/super" keys - these are not used in UE4 - but, keycode are not the expected "91 or 92" values, SDL keys are "227 & 231" instead... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3844874 by Nick.Shin HTML5 - detect "SyntaxError: " and do a forced reload - an actual syntax error would be caught during compile time - this is usually error condition is usually seen when browser is running "old/partial" cached data and it's fairly safe to just reload the page #jira UE-54017 QAGame fails to launch properly on HTML5 Firefox 64 bit Change 3846695 by Nick.Shin #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3847309 by Nick.Shin HTML5 - (not to) show virtual joystick - virtual joysticks are not shown by default-- and the mouse not captured - this now behaves like the win64 client version #jira UE-33854 Virtual Joysticks In HTML5 if Mobile/Tablet Project is chosen Change 3847310 by Nick.Shin HTML5 - set controller axis and button max value in code instead of relying on emscripten_get_gamepad_status() - seems emscripten might be uninitialized by the time controlers are used... #jira UE-28513 - Using a controller in HTML5 causes error Change 3850606 by Nick.Shin HTML5 - more static warning fix ups #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3850624 by Nick.Shin HTML5 - tell user/developer to show unsupported WebGL browsers on old hardware -- will need to try another browser note: using following jira to track progress: #jira UE-47066 Packaged HTML 5 Map Prompts for Firefox Update in Chrome Change 3855610 by Sorin.Gradinaru UE-49173 Progress bar causes black screen on iOS #iOS #4.20 #jira UE-49173 The bug occurs on iOS with Metal, when the last Slate element to be draw in the scene is a ScrollBar with progress between 0 and 1. As a workaround, adding another widget (eg. button, image) in the Blueprint solves the problem. The bug can be reproduced by adding OutDrawElements.PushClip & OutDrawElements.PopClip in any SWidget::OnPaint. The solution is to disable the scissor RHICmdList.SetScissorRect(false, 0, 0, 0, 0); in FSlateRHIRenderingPolicy::DrawElements after the batch rendering Change 3855652 by Sorin.Gradinaru iOS 3D browser UE-53248 Web Browser on a Widget Component is 2D when launching on to iOS #jira UE-53248 #iOS #4.20 Uses the same WebTexture from the WebBrowser plugin as the Android version. + Code contributed by Juan.Belon from Alea S.r.l at https://udn.unrealengine.com/questions/390166/3d-world-space-widget-is-being-rendered-in-screen.html Change 3856174 by Nick.Shin HTML5 - python forking will still error while trying to terminate already terminated processes - added same "WindowsError code 5" handler found in subprocess.py #jira UE-51618 HTML5 fails to build, [Error 5] Access is denied Change 3863322 by Sorin.Gradinaru UE-54317 DXT apps fail on first launch when 'For Distribution' enabled, Unsupported Texture Format #jira UE-54317 #Android #4.19 Change 3878088 by Nick.Shin UEMOB-425 superceeds this jira #jira UE-25257 Mac HTML5 project crashes upon downloading expression HasFoundDataDirectory failed Change 3884560 by Jack.Porter Fix logspam in FAVMoviePlayer #jira UE-54760 Change 3886533 by Mi.Wang Fix a potential crash that the VirtualKeyboardWidget has been hide while trying to use in gamethread. Change 3889081 by Sorin.Gradinaru UE-54490 Android Startup Movie audio still playing when app paused, and after app resumed the movie is blackscreen until engine ticked. #Android #4.20 #jira UE-54490 Call ForceCompletion for the intial movie player on onPause. Call App Restart on Resume. Programmatically restarting an Android application basically consists in killing the current app, then using the launch intent as parameter for startActivity. This can be done only in onResume , which means that the movie player still has to be manually paused/stopped in onPause. I╞ve tried to kill the activity on onPause, tested on several devices, with various problems: the app doesn╞t restart anymore (onResume is not called) or the app is automatically sent to background (seems to be crashing when using the multitasking soft key). Change 3890320 by Chris.Babcock Fix initializer ordering #jira UE-55189 #ue4 Change 3958226 by Nick.Shin HTML5 disable memory poison tests and fix a bug during Realloc() // for Linux... and in turn for HTML5 #jria none Change 3958250 by Nick.Shin HTML5 - FText::FormatStr - skip if multi-threading not supported #jira none Change 3968328 by Nick.Shin HTML5 CORS fixes still need datarouter.ol.epicgames.com fixes to completely solve these issues. (API server own estimates no later than mid-April) note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing #jira UE-19330 Change 3971405 by Nick.Shin HTML5 suppress double printing to console.log #jira none Change 3978767 by Nick.Shin HTML5 CORS fixes note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing tested (against datarouter.ol.epicgames.com fixes) and found to be functional #jira UE-22285 Change 3981103 by Nick.Shin HTML5 - num pad keys crashes project match latest Engine/Source/Runtime/InputCore/Private/Linux/LinuxPlatformInput.cpp to HTML5PlatformInput.cpp also fix a HUD crash... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3983424 by Sorin.Gradinaru UE-57107 Attempting to load a streamed media source causes the app to become unresponsive when device is not connected to internet #jira UE-57107 #Android #4.20 The ANR is because the android.media.MediaExtractor.setDataSource(UrlPath) calls an underlying api which retries the download (10-30 times). Additional issue (all platforms): the MediaFrameworkTest/StreamSource_Infiltrator souce seems to have been removed (no longer at https://docs.unrealengine.com/latest/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4). According to the docs (https://docs.unrealengine.com/en-US/Engine/MediaFramework/HowTo/StreamMediaSource) the new location of the Sample Video is at https://dnnrz1gqa.blob.core.windows.net/portals/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4?sr=b&si=DNNFileManagerPolicy&sig=F%2BBpnYueeQTUTSW0nCRSrXEfr35LIawe7C3MQoe2%2FPI%3D Change 3985248 by Nick.Shin HTML5 game window size add project setting drop down box to select canvas scaling mode #jira UE-46555 HTML5 game window does not scale with browser size Change 3986190 by Sorin.Gradinaru UE-56076 Android Launch On "Running..." toast intermittently doesn't appear #jira UE-56076 #Android #4.10 When cancelling Launch on Device, always call CancelContinuations for the current task Change 3986412 by Nick.Shin CIS error fix #jira none Change 3987007 by Nick.Shin HTML5 fullscreen size fix - when using FIXED scale mode initially, there's some strange padding margins - but, setting UE4_fullscreenScaleMode to anything "but FIXED scale mode" will work... #jira UE-46555 HTML5 game window does not scale with browser size Change 3988408 by Nick.Shin HTML5 call EndSession() onbeforeunload() ? should PreExit() be called instead? #jira UE-57207 Session End event is not generated for HTML5 Change 3991828 by Nick.Shin HTML5 shipping build crash some FVector2D needs ContainsNaN() checks #jira UE-57401 Projects packaged for Shipping HTML5 do not launch the engine in the browser Change 3992884 by Nick.Shin HTML5 call EndSession() onbeforeunload() code cleanup #jira UE-57207 Session End event is not generated for HTML5 Change 3992887 by Nick.Shin datarouter: Session events code cleanup #jira UE-22285 - Session events are not generated for HTML5 Change 4002603 by Sorin.Gradinaru UE-56177 Unplugging a device while launching onto it from a source build will result in the "Running..." toast staying open #jira UE-56177 #Android #iOS #4.10 Using the device discovery to signal when the running device gets disconnected Change 4007162 by Dmitriy.Dyomin Merging using Dev-Mobile->FortMain Added ObjectOrientation material node for decals, returns decal projection direction ( X-axis) #jira none Change 4012196 by Sorin.Gradinaru UE-57120 Lighting needs to be rebuilt error appears on Camera test app on Nexus 9 and Note 4. #jira UE-57120 #Android #4.20 Level lightings rebuilt and QA-Media_Camera_BuiltData.uasset added. The message appeared (rarely and only on certain devices) because the engine tries to load the pre-computed lightmap data on the render thread, then to add it to the scene on the game thread (in FPrecomputedVolumetricLightmap::AddToScene). Most of the times there is a desync and the data is not yet loaded when the lightmap is validated (in FScene::AddPrecomputedVolumetricLightmap). Change 4013034 by Sorin.Gradinaru UE-55427 iOS application crashes when suspending and resuming the startup movie in rapid succession #jira UE-55427 #iOS #4.20 Caused by ToggleSuspend waiting for FDefaultGameMoviePlayer::WaitForMovieToFinish() Renamed InitialMovie to StartupMovie, including the methods related to the Android platform. Change 4015449 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Run on device: Pressing Cancel on the "Running..." message should stop the application, if running Cancel Android builds using "adb shell am force-stop <bundle_id> <device_id>" Note: Using a new AutomationTool command (re-starting the Automation tool after canceling the BuildCookRun task chain) is too slow - takes 3-10 sec depending on the PC configuration. AutomationTool is used now only to correctly retrieve the bundle id for each Android device. This is done inside the BuildCookRun command when the application is deployed on the device(s). Cannot simply use the current project's properties to retrieve the bundle id, because when using Launch-> Device Launcher, the user can choose to cook&deploy a different project/texture format, also the user can create & use a profile with multiple devices / with different texture formats. Change 4016057 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #4.20 #Android #4666 https://github.com/EpicGames/UnrealEngine/pull/4666 Implemented Clipboard function on Android. Change 4020229 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #Android #4.20 GameActivity.java: moving the methods related to clipboard above the native public declarations Change 4021188 by Sorin.Gradinaru UE-57876 Location accuracy is ignored by ULocationServicesIOSImpl #jira UE-57876 #iOS #4.30 In ULocationServicesIOSImpl::InitLocationServices(ELocationAccuracy Accuracy, float UpdateFrequency, float MinDistance) the first param must be converted to CLLocationAccuracy and used as the first param of LocationDelegateinitLocationServices, rather than using the hardcoded kCLLocationAccuracyHundredMeters. Also fixed a compilation error (!) when enabling The Location Services plugin on iOS Change 4024839 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Removed unnecessary #include "AndroidTargetDevice.h", causing circular reference => nightly build errors Change 4024962 by Cosmin.Sulea UE-56294 - Packaging step fails when packaging project for distribution #jira UE-56294 Change 4026122 by Sorin.Gradinaru UE-57149 Razer Phone: Crash after Switching Camera Format 22-26 times #jira UE-57149 #Android #4.20 jobject obj = env->GetObjectArrayElement must be followed by env->DeleteLocalRef(obj) The bug can probably be reproduced by using a MediaPlayer. Change 4038185 by Nick.Shin HTML5 - merge error fix MallocAnsi.cpp was stomped on #jira UE-58367 //UE4/Dev-Mobile - Compile UE4Game HTML5 - use of undeclared identifier 'malloc_usable_size' Change 4039521 by Dmitriy.Dyomin Export WorldBrowser API so plugin makers can use it #jira UE-57323 Change 4039523 by Dmitriy.Dyomin Exposed MobilePatchingLibrary API #jira UE-55941 Change 4039526 by Dmitriy.Dyomin Fixed: Hierarchy filtering does not work in world composition #jira UE-57900 Change 4039529 by Dmitriy.Dyomin Fixed: 'Apply Fogging' in Material does not work on Mobile (GitHub 4357) #jira UE-53618 #4357 Change 4039874 by Sorin.Gradinaru UEMOB-436 Support "All Android" Launch On and Project Launcher options The main change is in the DeviceProxy class. A new type ("All devices" proxy) was added, and the proxy now holds a list of physical device IDs for every variant (texture format), instead of a single device ID. The "All devices" proxy is updated automatically by the device discovery thread. The change was necessary because the list in the Project Launcher is using the device proxy list. #jira UEMOB-436 #Android #UE4 #4.19 Change 4041446 by John.Mauney Fix that Chris B made locally on my machine #jira UE-58420 Change 4041791 by Jack.Porter Fix CIS incremental UE4Editor Win64 #jira 0 [CL 4047603 by Jack Porter in Main branch]
2018-05-02 22:53:38 -04:00
for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ++ViewIndex)
{
const FViewInfo& View = Views[ViewIndex];
if (View.bHasDistortionPrimitives && View.ShouldRenderView() && View.ParallelMeshDrawCommandPasses[EMeshPass::Distortion].HasAnyDraw())
{
return true;
}
}
return false;
}
BEGIN_SHADER_PARAMETER_STRUCT(FDistortionPassParameters, RENDERER_API)
SHADER_PARAMETER_STRUCT_INCLUDE(FViewShaderParameters, View)
SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FDistortionPassUniformParameters, Pass)
SHADER_PARAMETER_STRUCT_INCLUDE(FInstanceCullingDrawParams, InstanceCullingDrawParams)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
//////////////////////////////////////////////////////////////////////////
class FCopySceneColorTexturePS : public FGlobalShader
{
public:
DECLARE_GLOBAL_SHADER(FCopySceneColorTexturePS);
SHADER_USE_PARAMETER_STRUCT(FCopySceneColorTexturePS, FGlobalShader);
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, SceneColorTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, SceneColorSampler)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
return true;
}
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("COPYSCENECOLORTEXTUREPS"), 1);
}
};
IMPLEMENT_GLOBAL_SHADER(FCopySceneColorTexturePS, "/Engine/Private/DistortFiltering.usf", "CopySceneColorTexturePS", SF_Pixel);
static void AddCopySceneColorPass(FRDGBuilder& GraphBuilder, const FViewInfo& View, FRDGTextureRef SceneColorTexture, FRDGTextureRef SceneColorCopyTexture)
{
const FScreenPassTextureViewport Viewport(SceneColorCopyTexture, View.ViewRect);
TShaderMapRef<FScreenVS> VertexShader(View.ShaderMap);
TShaderMapRef<FCopySceneColorTexturePS> PixelShader(View.ShaderMap);
auto* PassParameters = GraphBuilder.AllocParameters<FCopySceneColorTexturePS::FParameters>();
PassParameters->View = View.ViewUniformBuffer;
PassParameters->SceneColorTexture = SceneColorTexture;
PassParameters->SceneColorSampler = TStaticSamplerState<SF_Point>::GetRHI();
PassParameters->RenderTargets[0] = FRenderTargetBinding(SceneColorCopyTexture, ERenderTargetLoadAction::ENoAction);
// The scene color is copied into from multi-view-rect layout into a single-rect layout.
FIntRect ViewRect;
ViewRect.Min = FIntPoint(0, 0);
ViewRect.Max = FIntPoint(View.ViewRect.Width(), View.ViewRect.Height());
const FScreenPassTextureViewport InputViewport(SceneColorTexture, ViewRect);
const FScreenPassTextureViewport OutputViewport(SceneColorCopyTexture);
AddDrawScreenPass(GraphBuilder, {}, View, InputViewport, OutputViewport, VertexShader, PixelShader, PassParameters);
}
//////////////////////////////////////////////////////////////////////////
class FDownsampleSceneColorCS : public FGlobalShader
{
DECLARE_GLOBAL_SHADER(FDownsampleSceneColorCS);
SHADER_USE_PARAMETER_STRUCT(FDownsampleSceneColorCS, FGlobalShader);
static const uint32 ThreadGroupSize = 8;
using FPermutationDomain = TShaderPermutationDomain<>;
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER(uint32, SrcMipIndex)
SHADER_PARAMETER(FIntPoint, SrcMipResolution)
SHADER_PARAMETER(FIntPoint, DstMipResolution)
SHADER_PARAMETER_RDG_TEXTURE_SRV(Texture2D, SourceTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, SourceSampler)
SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture2D, OutTextureMipColor)
END_SHADER_PARAMETER_STRUCT()
public:
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) { return GetMaxSupportedFeatureLevel(Parameters.Platform) >= ERHIFeatureLevel::SM5; }
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE"), ThreadGroupSize);
OutEnvironment.SetDefine(TEXT("DOWNSAMPLECOLORCS"), 1);
}
};
IMPLEMENT_GLOBAL_SHADER(FDownsampleSceneColorCS, "/Engine/Private/DistortFiltering.usf", "DownsampleColorCS", SF_Compute);
static void AddDownsampleSceneColorPass(FRDGBuilder& GraphBuilder, FDownsampleSceneColorCS::FParameters* PassParameters, const FViewInfo& View)
{
FIntVector NumGroups = FIntVector::DivideAndRoundUp(
FIntVector(PassParameters->DstMipResolution.X, PassParameters->DstMipResolution.Y, 1),
FIntVector(FDownsampleSceneColorCS::ThreadGroupSize, FDownsampleSceneColorCS::ThreadGroupSize, 1));
FDownsampleSceneColorCS::FPermutationDomain PermutationVector;
TShaderMapRef<FDownsampleSceneColorCS> ComputeShader(View.ShaderMap, PermutationVector);
// Dispatch with GenerateMips: reading from a slice through SRV and writing into lower mip through UAV.
ClearUnusedGraphResources(ComputeShader, PassParameters);
FComputeShaderUtils::AddPass(GraphBuilder, RDG_EVENT_NAME("DistoMipGen"), ComputeShader, PassParameters, NumGroups);
}
//////////////////////////////////////////////////////////////////////////
// STRATA_TODO make common with the function in PostProcessWeightedSampleSum.cpp
class FGaussianFiltering
{
public:
// Evaluates an unnormalized normal distribution PDF around 0 at given X with Variance.
static float NormalDistributionUnscaled(float X, float Sigma, float CrossCenterWeight)
{
const float DX = FMath::Abs(X);
const float ClampedOneMinusDX = FMath::Max(0.0f, 1.0f - DX);
// Tweak the gaussian shape e.g. "r.Bloom.Cross 3.5"
if (CrossCenterWeight > 1.0f)
{
return FMath::Pow(ClampedOneMinusDX, CrossCenterWeight);
}
else
{
// Constant is tweaked give a similar look to UE before we fixed the scale bug (Some content tweaking might be needed).
// The value defines how much of the Gaussian clipped by the sample window.
// r.Filter.SizeScale allows to tweak that for performance/quality.
const float LegacyCompatibilityConstant = -16.7f;
const float Gaussian = FMath::Exp(LegacyCompatibilityConstant * FMath::Square(DX / Sigma));
return FMath::Lerp(Gaussian, ClampedOneMinusDX, CrossCenterWeight);
}
}
static float GetClampedKernelRadius(uint32 SampleCountMax, float KernelRadius)
{
return FMath::Clamp<float>(KernelRadius, DELTA, SampleCountMax - 1);
}
static int GetIntegerKernelRadius(uint32 SampleCountMax, float KernelRadius)
{
// Smallest radius will be 1.
return FMath::Min<int32>(FMath::CeilToInt(GetClampedKernelRadius(SampleCountMax, KernelRadius)), SampleCountMax - 1);
}
static uint32 Compute1DGaussianFilterKernel(FVector2D* OutOffsetAndWeight, uint32 SampleCountMax, float KernelRadius, float CrossCenterWeight, float FilterSizeScale)
{
const float ClampedKernelRadius = GetClampedKernelRadius(SampleCountMax, KernelRadius);
const int32 IntegerKernelRadius = GetIntegerKernelRadius(SampleCountMax, KernelRadius * FilterSizeScale);
uint32 SampleCount = 0;
float WeightSum = 0.0f;
for (int32 SampleIndex = -IntegerKernelRadius; SampleIndex <= IntegerKernelRadius; SampleIndex += 2)
{
float Weight0 = NormalDistributionUnscaled(SampleIndex, ClampedKernelRadius, CrossCenterWeight);
float Weight1 = 0.0f;
// We use the bilinear filter optimization for gaussian blur. However, we don't want to bias the
// last sample off the edge of the filter kernel, so the very last tap just is on the pixel center.
if (SampleIndex != IntegerKernelRadius)
{
Weight1 = NormalDistributionUnscaled(SampleIndex + 1, ClampedKernelRadius, CrossCenterWeight);
}
const float TotalWeight = Weight0 + Weight1;
OutOffsetAndWeight[SampleCount].X = SampleIndex + (Weight1 / TotalWeight);
OutOffsetAndWeight[SampleCount].Y = TotalWeight;
WeightSum += TotalWeight;
SampleCount++;
}
// Normalize blur weights.
const float WeightSumInverse = 1.0f / WeightSum;
for (uint32 SampleIndex = 0; SampleIndex < SampleCount; ++SampleIndex)
{
OutOffsetAndWeight[SampleIndex].Y *= WeightSumInverse;
}
return SampleCount;
}
};
// If this is update, please update DistortFiltering.usf
#define MAX_FILTER_SAMPLE_COUNT 128
class FFilterSceneColorCS : public FGlobalShader
{
DECLARE_GLOBAL_SHADER(FFilterSceneColorCS);
SHADER_USE_PARAMETER_STRUCT(FFilterSceneColorCS, FGlobalShader);
static const uint32 ThreadGroupSize = 8;
using FPermutationDomain = TShaderPermutationDomain<>;
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER(uint32, SampleCount)
SHADER_PARAMETER(uint32, SrcMipIndex)
SHADER_PARAMETER(FIntPoint, MipResolution)
SHADER_PARAMETER(FVector4f, BlurDirection)
SHADER_PARAMETER_RDG_TEXTURE_SRV(Texture2D, SourceTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, SourceSampler)
SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture2D, OutTextureMipColor)
SHADER_PARAMETER_ARRAY(FVector4f, SampleOffsetsWeights, [MAX_FILTER_SAMPLE_COUNT])
END_SHADER_PARAMETER_STRUCT()
public:
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) { return GetMaxSupportedFeatureLevel(Parameters.Platform) >= ERHIFeatureLevel::SM5; }
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
OutEnvironment.SetDefine(TEXT("THREADGROUP_SIZE"), ThreadGroupSize);
OutEnvironment.SetDefine(TEXT("FILTERCOLORCS"), 1);
}
};
IMPLEMENT_GLOBAL_SHADER(FFilterSceneColorCS, "/Engine/Private/DistortFiltering.usf", "FilterColorCS", SF_Compute);
static void AddFilterSceneColorPass(FRDGBuilder& GraphBuilder, FFilterSceneColorCS::FParameters* PassParameters, const FViewInfo& View)
{
FIntVector NumGroups = FIntVector::DivideAndRoundUp(
FIntVector(PassParameters->MipResolution.X, PassParameters->MipResolution.Y, 1),
FIntVector(FFilterSceneColorCS::ThreadGroupSize, FFilterSceneColorCS::ThreadGroupSize, 1));
FFilterSceneColorCS::FPermutationDomain PermutationVector;
TShaderMapRef<FFilterSceneColorCS> ComputeShader(View.ShaderMap, PermutationVector);
// Dispatch with GenerateMips: reading from a slice through SRV and writing into lower mip through UAV.
ClearUnusedGraphResources(ComputeShader, PassParameters);
FComputeShaderUtils::AddPass(GraphBuilder, RDG_EVENT_NAME("FilterMipGen"), ComputeShader, PassParameters, NumGroups);
}
//////////////////////////////////////////////////////////////////////////
void FDeferredShadingSceneRenderer::RenderDistortion(
FRDGBuilder& GraphBuilder,
FRDGTextureRef SceneColorTexture,
FRDGTextureRef SceneDepthTexture,
FTranslucencyPassResourcesMap& TranslucencyResourceMap)
{
check(SceneDepthTexture);
check(SceneColorTexture);
if (!ShouldRenderDistortion())
{
return;
}
QUICK_SCOPE_CYCLE_COUNTER(STAT_FSceneRenderer_RenderDistortion);
RDG_EVENT_SCOPE(GraphBuilder, "Distortion");
RDG_GPU_STAT_SCOPE(GraphBuilder, Distortion);
const FDepthStencilBinding StencilReadBinding(SceneDepthTexture, ERenderTargetLoadAction::ELoad, ERenderTargetLoadAction::ELoad, FExclusiveDepthStencil::DepthRead_StencilRead);
FDepthStencilBinding StencilWriteBinding(SceneDepthTexture, ERenderTargetLoadAction::ELoad, ERenderTargetLoadAction::ELoad, FExclusiveDepthStencil::DepthRead_StencilWrite);
FRDGTextureRef DistortionTexture = nullptr;
FRDGTextureRef RoughnessScatterTexture = nullptr;
FRDGTextureRef TempSceneColorMipchainTexture = nullptr;
FGlobalShaderMap* ShaderMap = GetGlobalShaderMap(FeatureLevel);
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 4047413) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3795481 by Nick.Shin HTML5 - disable SupportsScreenPercentage() - render the full screen otherwise, this is causing HTML5 screen to only render a portion of the screen and in black... - there may be another function is that not getting fired off "to render the screen" properly - this may be due to IsMobileHDR checks that are not fully accounted for the HTML5 platform #jira UE-52640 HTML5 only renders a black rectangle in the browser when launched Change 3807007 by Nick.Shin HTML5 - remove webgl1 only precompile guards (UE4_HTML5_TARGET_WEBGL2) toolchain can "fallback" to webgl1 -- webgl2 functions in UE4 code are "if checked"/configured/setup at start up #jira UE-51267 WebGL1 fails to compile Change 3822593 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3823512 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3824639 by Nick.Shin HTML5 - OSX - RunMacHTML5LaunchHelper.command - more helpful warning messages #jira UE-49861 A copied RunMacHTML5LaunchHelper.command gives unspecific Mono error Change 3829092 by Josh.Adams - Updated UnrealRemote to 1.4.1 Change 3832708 by Chris.Babcock Allow UE4Commandline.txt in APK #jira #ue4 #android Change 3835867 by Nick.Shin HTML5 - code cleanup origial work was for: UE-27141 (Remove all #if PLATFORM_HTML5 from high level code) this exposed an issue that i totally forgot about (.../Engine/Source/Developer/... only does builds tools -- which does not make use of PLATFORM_XXX preprocessor) tested with HTML5 builds with QAGame project :: TM-ShaderModels map #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3839967 by Mi.Wang Override MaxObjectInGame on Android to save ~30M with the ObjectArray size. #Android Change 3842022 by Mi.Wang Fix an AssetRegistry size calculation bug. Change 3843552 by Sorin.Gradinaru UE-54139 Possible crash with new virtual keyboard on Android if suggestions not disabled #4.19 #Android #jira UE-54139 S8 on 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Fix: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags) Change 3844210 by Nick.Shin HTML5 - filter out "windows/super" keys - these are not used in UE4 - but, keycode are not the expected "91 or 92" values, SDL keys are "227 & 231" instead... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3844874 by Nick.Shin HTML5 - detect "SyntaxError: " and do a forced reload - an actual syntax error would be caught during compile time - this is usually error condition is usually seen when browser is running "old/partial" cached data and it's fairly safe to just reload the page #jira UE-54017 QAGame fails to launch properly on HTML5 Firefox 64 bit Change 3846695 by Nick.Shin #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3847309 by Nick.Shin HTML5 - (not to) show virtual joystick - virtual joysticks are not shown by default-- and the mouse not captured - this now behaves like the win64 client version #jira UE-33854 Virtual Joysticks In HTML5 if Mobile/Tablet Project is chosen Change 3847310 by Nick.Shin HTML5 - set controller axis and button max value in code instead of relying on emscripten_get_gamepad_status() - seems emscripten might be uninitialized by the time controlers are used... #jira UE-28513 - Using a controller in HTML5 causes error Change 3850606 by Nick.Shin HTML5 - more static warning fix ups #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3850624 by Nick.Shin HTML5 - tell user/developer to show unsupported WebGL browsers on old hardware -- will need to try another browser note: using following jira to track progress: #jira UE-47066 Packaged HTML 5 Map Prompts for Firefox Update in Chrome Change 3855610 by Sorin.Gradinaru UE-49173 Progress bar causes black screen on iOS #iOS #4.20 #jira UE-49173 The bug occurs on iOS with Metal, when the last Slate element to be draw in the scene is a ScrollBar with progress between 0 and 1. As a workaround, adding another widget (eg. button, image) in the Blueprint solves the problem. The bug can be reproduced by adding OutDrawElements.PushClip & OutDrawElements.PopClip in any SWidget::OnPaint. The solution is to disable the scissor RHICmdList.SetScissorRect(false, 0, 0, 0, 0); in FSlateRHIRenderingPolicy::DrawElements after the batch rendering Change 3855652 by Sorin.Gradinaru iOS 3D browser UE-53248 Web Browser on a Widget Component is 2D when launching on to iOS #jira UE-53248 #iOS #4.20 Uses the same WebTexture from the WebBrowser plugin as the Android version. + Code contributed by Juan.Belon from Alea S.r.l at https://udn.unrealengine.com/questions/390166/3d-world-space-widget-is-being-rendered-in-screen.html Change 3856174 by Nick.Shin HTML5 - python forking will still error while trying to terminate already terminated processes - added same "WindowsError code 5" handler found in subprocess.py #jira UE-51618 HTML5 fails to build, [Error 5] Access is denied Change 3863322 by Sorin.Gradinaru UE-54317 DXT apps fail on first launch when 'For Distribution' enabled, Unsupported Texture Format #jira UE-54317 #Android #4.19 Change 3878088 by Nick.Shin UEMOB-425 superceeds this jira #jira UE-25257 Mac HTML5 project crashes upon downloading expression HasFoundDataDirectory failed Change 3884560 by Jack.Porter Fix logspam in FAVMoviePlayer #jira UE-54760 Change 3886533 by Mi.Wang Fix a potential crash that the VirtualKeyboardWidget has been hide while trying to use in gamethread. Change 3889081 by Sorin.Gradinaru UE-54490 Android Startup Movie audio still playing when app paused, and after app resumed the movie is blackscreen until engine ticked. #Android #4.20 #jira UE-54490 Call ForceCompletion for the intial movie player on onPause. Call App Restart on Resume. Programmatically restarting an Android application basically consists in killing the current app, then using the launch intent as parameter for startActivity. This can be done only in onResume , which means that the movie player still has to be manually paused/stopped in onPause. I╞ve tried to kill the activity on onPause, tested on several devices, with various problems: the app doesn╞t restart anymore (onResume is not called) or the app is automatically sent to background (seems to be crashing when using the multitasking soft key). Change 3890320 by Chris.Babcock Fix initializer ordering #jira UE-55189 #ue4 Change 3958226 by Nick.Shin HTML5 disable memory poison tests and fix a bug during Realloc() // for Linux... and in turn for HTML5 #jria none Change 3958250 by Nick.Shin HTML5 - FText::FormatStr - skip if multi-threading not supported #jira none Change 3968328 by Nick.Shin HTML5 CORS fixes still need datarouter.ol.epicgames.com fixes to completely solve these issues. (API server own estimates no later than mid-April) note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing #jira UE-19330 Change 3971405 by Nick.Shin HTML5 suppress double printing to console.log #jira none Change 3978767 by Nick.Shin HTML5 CORS fixes note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing tested (against datarouter.ol.epicgames.com fixes) and found to be functional #jira UE-22285 Change 3981103 by Nick.Shin HTML5 - num pad keys crashes project match latest Engine/Source/Runtime/InputCore/Private/Linux/LinuxPlatformInput.cpp to HTML5PlatformInput.cpp also fix a HUD crash... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3983424 by Sorin.Gradinaru UE-57107 Attempting to load a streamed media source causes the app to become unresponsive when device is not connected to internet #jira UE-57107 #Android #4.20 The ANR is because the android.media.MediaExtractor.setDataSource(UrlPath) calls an underlying api which retries the download (10-30 times). Additional issue (all platforms): the MediaFrameworkTest/StreamSource_Infiltrator souce seems to have been removed (no longer at https://docs.unrealengine.com/latest/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4). According to the docs (https://docs.unrealengine.com/en-US/Engine/MediaFramework/HowTo/StreamMediaSource) the new location of the Sample Video is at https://dnnrz1gqa.blob.core.windows.net/portals/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4?sr=b&si=DNNFileManagerPolicy&sig=F%2BBpnYueeQTUTSW0nCRSrXEfr35LIawe7C3MQoe2%2FPI%3D Change 3985248 by Nick.Shin HTML5 game window size add project setting drop down box to select canvas scaling mode #jira UE-46555 HTML5 game window does not scale with browser size Change 3986190 by Sorin.Gradinaru UE-56076 Android Launch On "Running..." toast intermittently doesn't appear #jira UE-56076 #Android #4.10 When cancelling Launch on Device, always call CancelContinuations for the current task Change 3986412 by Nick.Shin CIS error fix #jira none Change 3987007 by Nick.Shin HTML5 fullscreen size fix - when using FIXED scale mode initially, there's some strange padding margins - but, setting UE4_fullscreenScaleMode to anything "but FIXED scale mode" will work... #jira UE-46555 HTML5 game window does not scale with browser size Change 3988408 by Nick.Shin HTML5 call EndSession() onbeforeunload() ? should PreExit() be called instead? #jira UE-57207 Session End event is not generated for HTML5 Change 3991828 by Nick.Shin HTML5 shipping build crash some FVector2D needs ContainsNaN() checks #jira UE-57401 Projects packaged for Shipping HTML5 do not launch the engine in the browser Change 3992884 by Nick.Shin HTML5 call EndSession() onbeforeunload() code cleanup #jira UE-57207 Session End event is not generated for HTML5 Change 3992887 by Nick.Shin datarouter: Session events code cleanup #jira UE-22285 - Session events are not generated for HTML5 Change 4002603 by Sorin.Gradinaru UE-56177 Unplugging a device while launching onto it from a source build will result in the "Running..." toast staying open #jira UE-56177 #Android #iOS #4.10 Using the device discovery to signal when the running device gets disconnected Change 4007162 by Dmitriy.Dyomin Merging using Dev-Mobile->FortMain Added ObjectOrientation material node for decals, returns decal projection direction ( X-axis) #jira none Change 4012196 by Sorin.Gradinaru UE-57120 Lighting needs to be rebuilt error appears on Camera test app on Nexus 9 and Note 4. #jira UE-57120 #Android #4.20 Level lightings rebuilt and QA-Media_Camera_BuiltData.uasset added. The message appeared (rarely and only on certain devices) because the engine tries to load the pre-computed lightmap data on the render thread, then to add it to the scene on the game thread (in FPrecomputedVolumetricLightmap::AddToScene). Most of the times there is a desync and the data is not yet loaded when the lightmap is validated (in FScene::AddPrecomputedVolumetricLightmap). Change 4013034 by Sorin.Gradinaru UE-55427 iOS application crashes when suspending and resuming the startup movie in rapid succession #jira UE-55427 #iOS #4.20 Caused by ToggleSuspend waiting for FDefaultGameMoviePlayer::WaitForMovieToFinish() Renamed InitialMovie to StartupMovie, including the methods related to the Android platform. Change 4015449 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Run on device: Pressing Cancel on the "Running..." message should stop the application, if running Cancel Android builds using "adb shell am force-stop <bundle_id> <device_id>" Note: Using a new AutomationTool command (re-starting the Automation tool after canceling the BuildCookRun task chain) is too slow - takes 3-10 sec depending on the PC configuration. AutomationTool is used now only to correctly retrieve the bundle id for each Android device. This is done inside the BuildCookRun command when the application is deployed on the device(s). Cannot simply use the current project's properties to retrieve the bundle id, because when using Launch-> Device Launcher, the user can choose to cook&deploy a different project/texture format, also the user can create & use a profile with multiple devices / with different texture formats. Change 4016057 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #4.20 #Android #4666 https://github.com/EpicGames/UnrealEngine/pull/4666 Implemented Clipboard function on Android. Change 4020229 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #Android #4.20 GameActivity.java: moving the methods related to clipboard above the native public declarations Change 4021188 by Sorin.Gradinaru UE-57876 Location accuracy is ignored by ULocationServicesIOSImpl #jira UE-57876 #iOS #4.30 In ULocationServicesIOSImpl::InitLocationServices(ELocationAccuracy Accuracy, float UpdateFrequency, float MinDistance) the first param must be converted to CLLocationAccuracy and used as the first param of LocationDelegateinitLocationServices, rather than using the hardcoded kCLLocationAccuracyHundredMeters. Also fixed a compilation error (!) when enabling The Location Services plugin on iOS Change 4024839 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Removed unnecessary #include "AndroidTargetDevice.h", causing circular reference => nightly build errors Change 4024962 by Cosmin.Sulea UE-56294 - Packaging step fails when packaging project for distribution #jira UE-56294 Change 4026122 by Sorin.Gradinaru UE-57149 Razer Phone: Crash after Switching Camera Format 22-26 times #jira UE-57149 #Android #4.20 jobject obj = env->GetObjectArrayElement must be followed by env->DeleteLocalRef(obj) The bug can probably be reproduced by using a MediaPlayer. Change 4038185 by Nick.Shin HTML5 - merge error fix MallocAnsi.cpp was stomped on #jira UE-58367 //UE4/Dev-Mobile - Compile UE4Game HTML5 - use of undeclared identifier 'malloc_usable_size' Change 4039521 by Dmitriy.Dyomin Export WorldBrowser API so plugin makers can use it #jira UE-57323 Change 4039523 by Dmitriy.Dyomin Exposed MobilePatchingLibrary API #jira UE-55941 Change 4039526 by Dmitriy.Dyomin Fixed: Hierarchy filtering does not work in world composition #jira UE-57900 Change 4039529 by Dmitriy.Dyomin Fixed: 'Apply Fogging' in Material does not work on Mobile (GitHub 4357) #jira UE-53618 #4357 Change 4039874 by Sorin.Gradinaru UEMOB-436 Support "All Android" Launch On and Project Launcher options The main change is in the DeviceProxy class. A new type ("All devices" proxy) was added, and the proxy now holds a list of physical device IDs for every variant (texture format), instead of a single device ID. The "All devices" proxy is updated automatically by the device discovery thread. The change was necessary because the list in the Project Launcher is using the device proxy list. #jira UEMOB-436 #Android #UE4 #4.19 Change 4041446 by John.Mauney Fix that Chris B made locally on my machine #jira UE-58420 Change 4041791 by Jack.Porter Fix CIS incremental UE4Editor Win64 #jira 0 [CL 4047603 by Jack Porter in Main branch]
2018-05-02 22:53:38 -04:00
// Create a texture of the scene color with MIP levels, unfiltered
// NOTE: we cannot use mips on the scene color render target it self because multiple views are continuous in there and they would leak color one onto another.
TArray<FRDGTextureRef> ViewsSceneColorMipchain;
ViewsSceneColorMipchain.SetNum(Views.Num());
const bool bUseRoughRefraction = GetUseRoughRefraction();
if(bUseRoughRefraction)
{
for (int32 ViewIndex = 0, Num = Views.Num(); ViewIndex < Num; ++ViewIndex)
{
RDG_EVENT_SCOPE(GraphBuilder, "Rough Refraction View%d", ViewIndex);
const FViewInfo& View = Views[ViewIndex];
const FIntPoint SceneColorMip0Resolution = View.ViewRect.Size();
// We do not use max and do not add 1 to the result, this to not go down to the lowest mip level as this is not required.
const int32 MipCount = FMath::Max((int32)1, (int32)FMath::CeilLogTwo(FMath::Min(SceneColorMip0Resolution.X, SceneColorMip0Resolution.Y)));
FRDGTextureDesc SceneColorMipchainDesc = FRDGTextureDesc::Create2D(SceneColorMip0Resolution, PF_FloatR11G11B10, FClearValueBinding::None,
TexCreate_TargetArraySlicesIndependently | TexCreate_ShaderResource | TexCreate_UAV | TexCreate_RenderTargetable, MipCount);
FRDGTextureRef SceneColorMipchainTexture = GraphBuilder.CreateTexture(SceneColorMipchainDesc, TEXT("SceneColorMipchain"));
ViewsSceneColorMipchain[ViewIndex] = SceneColorMipchainTexture;
if (!TempSceneColorMipchainTexture || TempSceneColorMipchainTexture->Desc.Extent != SceneColorMipchainTexture->Desc.Extent)
{
// Only allocate a new temporary if it needs to have another resolution.
TempSceneColorMipchainTexture = GraphBuilder.CreateTexture(SceneColorMipchainDesc, TEXT("TempSceneColorMipchain"));
}
// Copy scene color into the first mip level
{
RDG_EVENT_SCOPE(GraphBuilder, "CopySceneColor");
AddCopySceneColorPass(GraphBuilder, View, SceneColorTexture, SceneColorMipchainTexture);
}
// Now render the mip chain
// STRATA_TODO we could optimize that pass by doing one pass with a tile of 16x16 writing out the 8x8, 4x4, 2x2 and 1x1 down sampled output
{
RDG_EVENT_SCOPE(GraphBuilder, "SceneColorMipChain");
FIntPoint SrcMipResolution = SceneColorMip0Resolution;
FIntPoint DstMipResolution = SceneColorMip0Resolution / 2;
for (int32 DstMipIndex = 1; DstMipIndex < MipCount; DstMipIndex++)
{
FDownsampleSceneColorCS::FParameters* PassParameters = GraphBuilder.AllocParameters<FDownsampleSceneColorCS::FParameters>();
PassParameters->SrcMipIndex = DstMipIndex - 1;
PassParameters->SrcMipResolution = SrcMipResolution;
PassParameters->DstMipResolution = DstMipResolution;
PassParameters->SourceSampler = TStaticSamplerState<SF_Bilinear>::GetRHI();
PassParameters->SourceTexture = GraphBuilder.CreateSRV(FRDGTextureSRVDesc::CreateForMipLevel(SceneColorMipchainTexture, DstMipIndex - 1));
PassParameters->OutTextureMipColor = GraphBuilder.CreateUAV(FRDGTextureUAVDesc(SceneColorMipchainTexture, DstMipIndex));
AddDownsampleSceneColorPass(GraphBuilder, PassParameters, View);
SrcMipResolution = DstMipResolution;
DstMipResolution = DstMipResolution / 2;
}
}
// Now the horizontal blur
// STATA_TODO: check that compute overlap is working as all horizontal filtering steps can happen in parallel
const float KernelRadius = 16.0f; // The maximum sample count we will run. This is scaled down by FilterSizeScale.
const float FilterSizeScale = CVarRefractionBlurScale.GetValueOnRenderThread();
const float CrossCenterWeight = CVarRefractionBlurCenterWeight.GetValueOnRenderThread(); // This must be 0 for the sharp image to not affect the output, the blurring dominates.
{
RDG_EVENT_SCOPE(GraphBuilder, "SceneColorMipHBlur");
FIntPoint MipResolution = SceneColorMip0Resolution / 2;
for (int32 MipIndex = 1; MipIndex < MipCount; MipIndex++)
{
FVector2D OffsetAndWeight[MAX_FILTER_SAMPLE_COUNT];
uint32 SampleCount = FGaussianFiltering::Compute1DGaussianFilterKernel(OffsetAndWeight, MAX_FILTER_SAMPLE_COUNT, KernelRadius, CrossCenterWeight, FilterSizeScale);
const FVector2D InverseFilterTextureExtent(1.0f / static_cast<float>(MipResolution.X), 1.0f / static_cast<float>(MipResolution.Y));
FFilterSceneColorCS::FParameters* PassParameters = GraphBuilder.AllocParameters<FFilterSceneColorCS::FParameters>();
PassParameters->SrcMipIndex = MipIndex;
PassParameters->MipResolution = MipResolution;
PassParameters->SourceSampler = TStaticSamplerState<SF_Bilinear>::GetRHI();
PassParameters->SourceTexture = GraphBuilder.CreateSRV(FRDGTextureSRVDesc::CreateForMipLevel(SceneColorMipchainTexture, MipIndex));
PassParameters->OutTextureMipColor = GraphBuilder.CreateUAV(FRDGTextureUAVDesc(TempSceneColorMipchainTexture, MipIndex));
PassParameters->SampleCount = SampleCount;
PassParameters->BlurDirection = FVector4f(1.0f, 0.0f, 0.0f, 0.0f);
for (uint32 i = 0; i < SampleCount; ++i)
{
PassParameters->SampleOffsetsWeights[i] = FVector4f(InverseFilterTextureExtent.X * OffsetAndWeight[i].X, OffsetAndWeight[i].Y);
}
AddFilterSceneColorPass(GraphBuilder, PassParameters, View);
MipResolution = MipResolution / 2;
}
}
// Now the vertical blur
// STATA_TODO: check that compute overlap is working as all vertical filtering steps can happen in parallel
{
RDG_EVENT_SCOPE(GraphBuilder, "SceneColorMipVBlur");
FIntPoint MipResolution = SceneColorMip0Resolution / 2;
for (int32 MipIndex = 1; MipIndex < MipCount; MipIndex++)
{
FVector2D OffsetAndWeight[MAX_FILTER_SAMPLE_COUNT];
uint32 SampleCount = FGaussianFiltering::Compute1DGaussianFilterKernel(OffsetAndWeight, MAX_FILTER_SAMPLE_COUNT, KernelRadius, CrossCenterWeight, FilterSizeScale);
const FVector2D InverseFilterTextureExtent(1.0f / static_cast<float>(MipResolution.X), 1.0f / static_cast<float>(MipResolution.Y));
FFilterSceneColorCS::FParameters* PassParameters = GraphBuilder.AllocParameters<FFilterSceneColorCS::FParameters>();
PassParameters->SrcMipIndex = MipIndex;
PassParameters->MipResolution = MipResolution;
PassParameters->SourceSampler = TStaticSamplerState<SF_Bilinear>::GetRHI();
PassParameters->SourceTexture = GraphBuilder.CreateSRV(FRDGTextureSRVDesc::CreateForMipLevel(TempSceneColorMipchainTexture, MipIndex));
PassParameters->OutTextureMipColor = GraphBuilder.CreateUAV(FRDGTextureUAVDesc(SceneColorMipchainTexture, MipIndex));
PassParameters->SampleCount = SampleCount;
PassParameters->BlurDirection = FVector4f(0.0f, 1.0f, 0.0f, 0.0f);
for (uint32 i = 0; i < SampleCount; ++i)
{
PassParameters->SampleOffsetsWeights[i] = FVector4f(InverseFilterTextureExtent.Y * OffsetAndWeight[i].X, OffsetAndWeight[i].Y);
}
AddFilterSceneColorPass(GraphBuilder, PassParameters, View);
MipResolution = MipResolution / 2;
}
}
}
}
// Use stencil mask to optimize cases with lower screen coverage.
// Note: This adds an extra pass which is actually slower as distortion tends towards full-screen.
// It could be worth testing object screen bounds then reverting to a target flip and single pass.
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FSceneRenderer_RenderDistortion_Accumulate);
RDG_EVENT_SCOPE(GraphBuilder, "Accumulate");
// Use RGBA8 light target for accumulating distortion offsets.
// R = positive X offset
// G = positive Y offset
// B = negative X offset
// A = negative Y offset
DistortionTexture = GraphBuilder.CreateTexture(
FRDGTextureDesc::Create2D(
SceneDepthTexture->Desc.Extent,
CVarRefractionOffsetQuality.GetValueOnRenderThread() > 0 ? PF_FloatRGBA : PF_B8G8R8A8,
FClearValueBinding::Transparent,
GFastVRamConfig.Distortion | TexCreate_RenderTargetable | TexCreate_ShaderResource,
1,
SceneDepthTexture->Desc.NumSamples),
TEXT("Distortion"));
if (bUseRoughRefraction)
{
// This is the texture containing information about the surface back scattering process
RoughnessScatterTexture = GraphBuilder.CreateTexture(
FRDGTextureDesc::Create2D(
SceneDepthTexture->Desc.Extent,
PF_R16F,
FClearValueBinding::Transparent,
GFastVRamConfig.Distortion | TexCreate_RenderTargetable | TexCreate_ShaderResource,
1,
SceneDepthTexture->Desc.NumSamples),
TEXT("DistortionRoughnessScatter"));
}
ERenderTargetLoadAction LoadAction = ERenderTargetLoadAction::EClear;
for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++)
{
FViewInfo& View = Views[ViewIndex];
const ETranslucencyView TranslucencyView = GetTranslucencyView(View);
if (!View.ShouldRenderView() && !EnumHasAnyFlags(TranslucencyView, ETranslucencyView::RayTracing))
{
continue;
}
RDG_GPU_MASK_SCOPE(GraphBuilder, View.GPUMask);
RDG_EVENT_SCOPE_CONDITIONAL(GraphBuilder, Views.Num() > 1, "View%d", ViewIndex);
View.BeginRenderView();
auto* PassParameters = GraphBuilder.AllocParameters<FDistortionPassParameters>();
PassParameters->View = View.GetShaderParameters();
PassParameters->Pass = CreateDistortionPassUniformBuffer(GraphBuilder, View);
PassParameters->RenderTargets[0] = FRenderTargetBinding(DistortionTexture, LoadAction);
if (bUseRoughRefraction)
{
PassParameters->RenderTargets[1] = FRenderTargetBinding(RoughnessScatterTexture, LoadAction);
}
PassParameters->RenderTargets.DepthStencil = StencilWriteBinding;
View.ParallelMeshDrawCommandPasses[EMeshPass::Distortion].BuildRenderingCommands(GraphBuilder, Scene->GPUScene, PassParameters->InstanceCullingDrawParams);
GraphBuilder.AddPass(
{},
PassParameters,
ERDGPassFlags::Raster,
[this, &View, PassParameters](FRHICommandList& RHICmdList)
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FSceneRender_RenderDistortion_Accumulate_Meshes);
SetStereoViewport(RHICmdList, View);
View.ParallelMeshDrawCommandPasses[EMeshPass::Distortion].DispatchDraw(nullptr, RHICmdList, &PassParameters->InstanceCullingDrawParams);
});
LoadAction = ERenderTargetLoadAction::ELoad;
}
}
FRDGTextureDesc DistortedSceneColorDesc = SceneColorTexture->Desc;
//Remove fast clear flag on the DistoredSceneColor which is used in the Apply and Merge passes.
// This can save the Fast clear eliminate in the Merge pass when the RTV is transient allocated.
EnumAddFlags(DistortedSceneColorDesc.Flags, TexCreate_NoFastClear);
EnumRemoveFlags(DistortedSceneColorDesc.Flags, TexCreate_FastVRAM);
FRDGTextureRef DistortionSceneColorTexture = GraphBuilder.CreateTexture(DistortedSceneColorDesc, TEXT("DistortedSceneColor"));
FDistortionScreenPS::FParameters CommonParameters;
CommonParameters.DistortionMSAATexture = DistortionTexture;
CommonParameters.DistortionTexture = DistortionTexture;
if (bUseRoughRefraction)
{
CommonParameters.RoughnessScatterMSAATexture = RoughnessScatterTexture;
CommonParameters.RoughnessScatterTexture = RoughnessScatterTexture;
}
CommonParameters.SceneColorTextureSampler = bUseRoughRefraction ? TStaticSamplerState<SF_Trilinear>::GetRHI() : TStaticSamplerState<>::GetRHI();
CommonParameters.DistortionTextureSampler = TStaticSamplerState<>::GetRHI();
CommonParameters.RoughnessScatterSampler = TStaticSamplerState<>::GetRHI();
CommonParameters.StandardTranslucentColorAlphaTextureSampler = TStaticSamplerState<>::GetRHI();
CommonParameters.StandardTranslucentTransmittanceTextureSampler = TStaticSamplerState<>::GetRHI();
CommonParameters.RefractionRoughnessToMipLevelFactor = FMath::Max(0.0f, CVarRefractionRoughnessToMipLevelFactor.GetValueOnRenderThread());
const bool bAllowStandardTranslucencySeparated = ViewFamily.AllowStandardTranslucencySeparated();
FDistortionScreenPS::FPermutationDomain PermutationVector;
PermutationVector.Set<FDistortionScreenPS::FUseMSAADim>(SceneColorTexture->Desc.NumSamples > 1);
PermutationVector.Set<FDistortionScreenPS::FUseRoughRefractionDim>(bUseRoughRefraction);
PermutationVector.Set<FDistortionScreenPS::FCompositedStandardTranslucentDim>(bAllowStandardTranslucencySeparated);
TShaderMapRef<FScreenPassVS> VertexShader(ShaderMap);
TShaderMapRef<FDistortionApplyScreenPS> ApplyPixelShader(ShaderMap, PermutationVector);
TShaderMapRef<FDistortionMergeScreenPS> MergePixelShader(ShaderMap, PermutationVector);
FScreenPassPipelineState PipelineState(VertexShader, {});
FScreenPassTextureViewport Viewport(SceneColorTexture);
// Apply distortion and store off-screen.
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FSceneRenderer_RenderDistortion_Apply);
RDG_EVENT_SCOPE(GraphBuilder, "Apply");
CommonParameters.SceneColorMSAATexture = SceneColorTexture;
CommonParameters.SceneColorTexture = SceneColorTexture;
CommonParameters.RenderTargets.DepthStencil = StencilReadBinding;
PipelineState.PixelShader = ApplyPixelShader;
// Test against stencil mask but don't clear.
PipelineState.DepthStencilState = TStaticDepthStencilState<
false, CF_Always,
true, CF_Equal, SO_Keep, SO_Keep, SO_Keep,
false, CF_Always, SO_Keep, SO_Keep, SO_Keep,
DISTORTION_STENCIL_MASK_BIT, DISTORTION_STENCIL_MASK_BIT>::GetRHI();
PipelineState.StencilRef = DISTORTION_STENCIL_MASK_BIT;
Copying //UE4/Dev-Mobile to //UE4/Dev-Main (Source: //UE4/Dev-Mobile @ 4047413) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3795481 by Nick.Shin HTML5 - disable SupportsScreenPercentage() - render the full screen otherwise, this is causing HTML5 screen to only render a portion of the screen and in black... - there may be another function is that not getting fired off "to render the screen" properly - this may be due to IsMobileHDR checks that are not fully accounted for the HTML5 platform #jira UE-52640 HTML5 only renders a black rectangle in the browser when launched Change 3807007 by Nick.Shin HTML5 - remove webgl1 only precompile guards (UE4_HTML5_TARGET_WEBGL2) toolchain can "fallback" to webgl1 -- webgl2 functions in UE4 code are "if checked"/configured/setup at start up #jira UE-51267 WebGL1 fails to compile Change 3822593 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3823512 by Nick.Shin #jira UE-27141 Remove all #if PLATFORM_HTML5 from high level code Change 3824639 by Nick.Shin HTML5 - OSX - RunMacHTML5LaunchHelper.command - more helpful warning messages #jira UE-49861 A copied RunMacHTML5LaunchHelper.command gives unspecific Mono error Change 3829092 by Josh.Adams - Updated UnrealRemote to 1.4.1 Change 3832708 by Chris.Babcock Allow UE4Commandline.txt in APK #jira #ue4 #android Change 3835867 by Nick.Shin HTML5 - code cleanup origial work was for: UE-27141 (Remove all #if PLATFORM_HTML5 from high level code) this exposed an issue that i totally forgot about (.../Engine/Source/Developer/... only does builds tools -- which does not make use of PLATFORM_XXX preprocessor) tested with HTML5 builds with QAGame project :: TM-ShaderModels map #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3839967 by Mi.Wang Override MaxObjectInGame on Android to save ~30M with the ObjectArray size. #Android Change 3842022 by Mi.Wang Fix an AssetRegistry size calculation bug. Change 3843552 by Sorin.Gradinaru UE-54139 Possible crash with new virtual keyboard on Android if suggestions not disabled #4.19 #Android #jira UE-54139 S8 on 7.0 is not hiding suggestions and disabling predictive input. There are cases with this that can cause a crash. Fix: On text change, downgrade to simple suggestions all the easy correction spans that are not a spell check span (remove android.text.style.SuggestionSpan.FLAG_EASY_CORRECT flags) Change 3844210 by Nick.Shin HTML5 - filter out "windows/super" keys - these are not used in UE4 - but, keycode are not the expected "91 or 92" values, SDL keys are "227 & 231" instead... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3844874 by Nick.Shin HTML5 - detect "SyntaxError: " and do a forced reload - an actual syntax error would be caught during compile time - this is usually error condition is usually seen when browser is running "old/partial" cached data and it's fairly safe to just reload the page #jira UE-54017 QAGame fails to launch properly on HTML5 Firefox 64 bit Change 3846695 by Nick.Shin #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3847309 by Nick.Shin HTML5 - (not to) show virtual joystick - virtual joysticks are not shown by default-- and the mouse not captured - this now behaves like the win64 client version #jira UE-33854 Virtual Joysticks In HTML5 if Mobile/Tablet Project is chosen Change 3847310 by Nick.Shin HTML5 - set controller axis and button max value in code instead of relying on emscripten_get_gamepad_status() - seems emscripten might be uninitialized by the time controlers are used... #jira UE-28513 - Using a controller in HTML5 causes error Change 3850606 by Nick.Shin HTML5 - more static warning fix ups #jira UE-53524 UE4Editor Static Analysis Win64 (MSVC) - 1 repeat warning Change 3850624 by Nick.Shin HTML5 - tell user/developer to show unsupported WebGL browsers on old hardware -- will need to try another browser note: using following jira to track progress: #jira UE-47066 Packaged HTML 5 Map Prompts for Firefox Update in Chrome Change 3855610 by Sorin.Gradinaru UE-49173 Progress bar causes black screen on iOS #iOS #4.20 #jira UE-49173 The bug occurs on iOS with Metal, when the last Slate element to be draw in the scene is a ScrollBar with progress between 0 and 1. As a workaround, adding another widget (eg. button, image) in the Blueprint solves the problem. The bug can be reproduced by adding OutDrawElements.PushClip & OutDrawElements.PopClip in any SWidget::OnPaint. The solution is to disable the scissor RHICmdList.SetScissorRect(false, 0, 0, 0, 0); in FSlateRHIRenderingPolicy::DrawElements after the batch rendering Change 3855652 by Sorin.Gradinaru iOS 3D browser UE-53248 Web Browser on a Widget Component is 2D when launching on to iOS #jira UE-53248 #iOS #4.20 Uses the same WebTexture from the WebBrowser plugin as the Android version. + Code contributed by Juan.Belon from Alea S.r.l at https://udn.unrealengine.com/questions/390166/3d-world-space-widget-is-being-rendered-in-screen.html Change 3856174 by Nick.Shin HTML5 - python forking will still error while trying to terminate already terminated processes - added same "WindowsError code 5" handler found in subprocess.py #jira UE-51618 HTML5 fails to build, [Error 5] Access is denied Change 3863322 by Sorin.Gradinaru UE-54317 DXT apps fail on first launch when 'For Distribution' enabled, Unsupported Texture Format #jira UE-54317 #Android #4.19 Change 3878088 by Nick.Shin UEMOB-425 superceeds this jira #jira UE-25257 Mac HTML5 project crashes upon downloading expression HasFoundDataDirectory failed Change 3884560 by Jack.Porter Fix logspam in FAVMoviePlayer #jira UE-54760 Change 3886533 by Mi.Wang Fix a potential crash that the VirtualKeyboardWidget has been hide while trying to use in gamethread. Change 3889081 by Sorin.Gradinaru UE-54490 Android Startup Movie audio still playing when app paused, and after app resumed the movie is blackscreen until engine ticked. #Android #4.20 #jira UE-54490 Call ForceCompletion for the intial movie player on onPause. Call App Restart on Resume. Programmatically restarting an Android application basically consists in killing the current app, then using the launch intent as parameter for startActivity. This can be done only in onResume , which means that the movie player still has to be manually paused/stopped in onPause. I╞ve tried to kill the activity on onPause, tested on several devices, with various problems: the app doesn╞t restart anymore (onResume is not called) or the app is automatically sent to background (seems to be crashing when using the multitasking soft key). Change 3890320 by Chris.Babcock Fix initializer ordering #jira UE-55189 #ue4 Change 3958226 by Nick.Shin HTML5 disable memory poison tests and fix a bug during Realloc() // for Linux... and in turn for HTML5 #jria none Change 3958250 by Nick.Shin HTML5 - FText::FormatStr - skip if multi-threading not supported #jira none Change 3968328 by Nick.Shin HTML5 CORS fixes still need datarouter.ol.epicgames.com fixes to completely solve these issues. (API server own estimates no later than mid-April) note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing #jira UE-19330 Change 3971405 by Nick.Shin HTML5 suppress double printing to console.log #jira none Change 3978767 by Nick.Shin HTML5 CORS fixes note: the following are all related: + answerhub 756723 - HTML5 CORS / Access-Control-Allow-Headers + answerhub 756942 - HTML5 CORS Issue to my Hosts API / Hosted Server + UE-22285 - Session events are not generated for HTML5 + UE-19330 - HTML5 Analytics cross-origin request blocked header Access-Control-Allow-Origin missing tested (against datarouter.ol.epicgames.com fixes) and found to be functional #jira UE-22285 Change 3981103 by Nick.Shin HTML5 - num pad keys crashes project match latest Engine/Source/Runtime/InputCore/Private/Linux/LinuxPlatformInput.cpp to HTML5PlatformInput.cpp also fix a HUD crash... #jira UE-54056 HTML5 crashes inside browser upon pressing windows key Change 3983424 by Sorin.Gradinaru UE-57107 Attempting to load a streamed media source causes the app to become unresponsive when device is not connected to internet #jira UE-57107 #Android #4.20 The ANR is because the android.media.MediaExtractor.setDataSource(UrlPath) calls an underlying api which retries the download (10-30 times). Additional issue (all platforms): the MediaFrameworkTest/StreamSource_Infiltrator souce seems to have been removed (no longer at https://docs.unrealengine.com/latest/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4). According to the docs (https://docs.unrealengine.com/en-US/Engine/MediaFramework/HowTo/StreamMediaSource) the new location of the Sample Video is at https://dnnrz1gqa.blob.core.windows.net/portals/attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4?sr=b&si=DNNFileManagerPolicy&sig=F%2BBpnYueeQTUTSW0nCRSrXEfr35LIawe7C3MQoe2%2FPI%3D Change 3985248 by Nick.Shin HTML5 game window size add project setting drop down box to select canvas scaling mode #jira UE-46555 HTML5 game window does not scale with browser size Change 3986190 by Sorin.Gradinaru UE-56076 Android Launch On "Running..." toast intermittently doesn't appear #jira UE-56076 #Android #4.10 When cancelling Launch on Device, always call CancelContinuations for the current task Change 3986412 by Nick.Shin CIS error fix #jira none Change 3987007 by Nick.Shin HTML5 fullscreen size fix - when using FIXED scale mode initially, there's some strange padding margins - but, setting UE4_fullscreenScaleMode to anything "but FIXED scale mode" will work... #jira UE-46555 HTML5 game window does not scale with browser size Change 3988408 by Nick.Shin HTML5 call EndSession() onbeforeunload() ? should PreExit() be called instead? #jira UE-57207 Session End event is not generated for HTML5 Change 3991828 by Nick.Shin HTML5 shipping build crash some FVector2D needs ContainsNaN() checks #jira UE-57401 Projects packaged for Shipping HTML5 do not launch the engine in the browser Change 3992884 by Nick.Shin HTML5 call EndSession() onbeforeunload() code cleanup #jira UE-57207 Session End event is not generated for HTML5 Change 3992887 by Nick.Shin datarouter: Session events code cleanup #jira UE-22285 - Session events are not generated for HTML5 Change 4002603 by Sorin.Gradinaru UE-56177 Unplugging a device while launching onto it from a source build will result in the "Running..." toast staying open #jira UE-56177 #Android #iOS #4.10 Using the device discovery to signal when the running device gets disconnected Change 4007162 by Dmitriy.Dyomin Merging using Dev-Mobile->FortMain Added ObjectOrientation material node for decals, returns decal projection direction ( X-axis) #jira none Change 4012196 by Sorin.Gradinaru UE-57120 Lighting needs to be rebuilt error appears on Camera test app on Nexus 9 and Note 4. #jira UE-57120 #Android #4.20 Level lightings rebuilt and QA-Media_Camera_BuiltData.uasset added. The message appeared (rarely and only on certain devices) because the engine tries to load the pre-computed lightmap data on the render thread, then to add it to the scene on the game thread (in FPrecomputedVolumetricLightmap::AddToScene). Most of the times there is a desync and the data is not yet loaded when the lightmap is validated (in FScene::AddPrecomputedVolumetricLightmap). Change 4013034 by Sorin.Gradinaru UE-55427 iOS application crashes when suspending and resuming the startup movie in rapid succession #jira UE-55427 #iOS #4.20 Caused by ToggleSuspend waiting for FDefaultGameMoviePlayer::WaitForMovieToFinish() Renamed InitialMovie to StartupMovie, including the methods related to the Android platform. Change 4015449 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Run on device: Pressing Cancel on the "Running..." message should stop the application, if running Cancel Android builds using "adb shell am force-stop <bundle_id> <device_id>" Note: Using a new AutomationTool command (re-starting the Automation tool after canceling the BuildCookRun task chain) is too slow - takes 3-10 sec depending on the PC configuration. AutomationTool is used now only to correctly retrieve the bundle id for each Android device. This is done inside the BuildCookRun command when the application is deployed on the device(s). Cannot simply use the current project's properties to retrieve the bundle id, because when using Launch-> Device Launcher, the user can choose to cook&deploy a different project/texture format, also the user can create & use a profile with multiple devices / with different texture formats. Change 4016057 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #4.20 #Android #4666 https://github.com/EpicGames/UnrealEngine/pull/4666 Implemented Clipboard function on Android. Change 4020229 by Sorin.Gradinaru UE-57845 GitHub 4666 : Pull request clipboard on android #jira UE-57845 #Android #4.20 GameActivity.java: moving the methods related to clipboard above the native public declarations Change 4021188 by Sorin.Gradinaru UE-57876 Location accuracy is ignored by ULocationServicesIOSImpl #jira UE-57876 #iOS #4.30 In ULocationServicesIOSImpl::InitLocationServices(ELocationAccuracy Accuracy, float UpdateFrequency, float MinDistance) the first param must be converted to CLLocationAccuracy and used as the first param of LocationDelegateinitLocationServices, rather than using the hardcoded kCLLocationAccuracyHundredMeters. Also fixed a compilation error (!) when enabling The Location Services plugin on iOS Change 4024839 by Sorin.Gradinaru UE-38306 "Running xxx on yyy" panel Cancel button should terminate app #jira UE-38306 #Android #4.10 Removed unnecessary #include "AndroidTargetDevice.h", causing circular reference => nightly build errors Change 4024962 by Cosmin.Sulea UE-56294 - Packaging step fails when packaging project for distribution #jira UE-56294 Change 4026122 by Sorin.Gradinaru UE-57149 Razer Phone: Crash after Switching Camera Format 22-26 times #jira UE-57149 #Android #4.20 jobject obj = env->GetObjectArrayElement must be followed by env->DeleteLocalRef(obj) The bug can probably be reproduced by using a MediaPlayer. Change 4038185 by Nick.Shin HTML5 - merge error fix MallocAnsi.cpp was stomped on #jira UE-58367 //UE4/Dev-Mobile - Compile UE4Game HTML5 - use of undeclared identifier 'malloc_usable_size' Change 4039521 by Dmitriy.Dyomin Export WorldBrowser API so plugin makers can use it #jira UE-57323 Change 4039523 by Dmitriy.Dyomin Exposed MobilePatchingLibrary API #jira UE-55941 Change 4039526 by Dmitriy.Dyomin Fixed: Hierarchy filtering does not work in world composition #jira UE-57900 Change 4039529 by Dmitriy.Dyomin Fixed: 'Apply Fogging' in Material does not work on Mobile (GitHub 4357) #jira UE-53618 #4357 Change 4039874 by Sorin.Gradinaru UEMOB-436 Support "All Android" Launch On and Project Launcher options The main change is in the DeviceProxy class. A new type ("All devices" proxy) was added, and the proxy now holds a list of physical device IDs for every variant (texture format), instead of a single device ID. The "All devices" proxy is updated automatically by the device discovery thread. The change was necessary because the list in the Project Launcher is using the device proxy list. #jira UEMOB-436 #Android #UE4 #4.19 Change 4041446 by John.Mauney Fix that Chris B made locally on my machine #jira UE-58420 Change 4041791 by Jack.Porter Fix CIS incremental UE4Editor Win64 #jira 0 [CL 4047603 by Jack Porter in Main branch]
2018-05-02 22:53:38 -04:00
ERenderTargetLoadAction LoadAction = ERenderTargetLoadAction::ENoAction;
for (int32 ViewIndex = 0, Num = Views.Num(); ViewIndex < Num; ++ViewIndex)
{
const FViewInfo& View = Views[ViewIndex];
RDG_GPU_MASK_SCOPE(GraphBuilder, View.GPUMask);
RDG_EVENT_SCOPE_CONDITIONAL(GraphBuilder, Views.Num() > 1, "View%d", ViewIndex);
auto* PassParameters = GraphBuilder.AllocParameters<FDistortionScreenPS::FParameters>();
*PassParameters = CommonParameters;
if (bUseRoughRefraction)
{
PassParameters->SceneColorMSAATexture = ViewsSceneColorMipchain[ViewIndex];
PassParameters->SceneColorTexture = ViewsSceneColorMipchain[ViewIndex];
}
PassParameters->View = View.ViewUniformBuffer;
PassParameters->RenderTargets[0] = FRenderTargetBinding(DistortionSceneColorTexture, LoadAction);
Viewport.Rect = View.ViewRect;
ClearUnusedGraphResources(ApplyPixelShader, PassParameters);
AddDrawScreenPass(GraphBuilder, {}, View, Viewport, Viewport, PipelineState, PassParameters,
[ApplyPixelShader, PassParameters](FRHICommandList& RHICmdList)
{
SetShaderParameters(RHICmdList, ApplyPixelShader, ApplyPixelShader.GetPixelShader(), *PassParameters);
});
LoadAction = ERenderTargetLoadAction::ELoad;
}
}
// Merge distortion back to scene color.
{
QUICK_SCOPE_CYCLE_COUNTER(STAT_FSceneRenderer_RenderDistortion_Merge);
RDG_EVENT_SCOPE(GraphBuilder, "Merge");
CommonParameters.SceneColorMSAATexture = DistortionSceneColorTexture;
CommonParameters.SceneColorTexture = DistortionSceneColorTexture;
CommonParameters.RenderTargets.DepthStencil = StencilWriteBinding;
PipelineState.PixelShader = MergePixelShader;
// Test against stencil mask and clear it.
PipelineState.DepthStencilState = TStaticDepthStencilState<
false, CF_Always,
true, CF_Equal, SO_Keep, SO_Keep, SO_Zero,
false, CF_Always, SO_Keep, SO_Keep, SO_Keep,
DISTORTION_STENCIL_MASK_BIT, DISTORTION_STENCIL_MASK_BIT>::GetRHI();
PipelineState.StencilRef = DISTORTION_STENCIL_MASK_BIT;
for (int32 ViewIndex = 0, Num = Views.Num(); ViewIndex < Num; ++ViewIndex)
{
const FViewInfo& View = Views[ViewIndex];
RDG_GPU_MASK_SCOPE(GraphBuilder, View.GPUMask);
RDG_EVENT_SCOPE_CONDITIONAL(GraphBuilder, Views.Num() > 1, "View%d", ViewIndex);
auto* PassParameters = GraphBuilder.AllocParameters<FDistortionScreenPS::FParameters>();
*PassParameters = CommonParameters;
PassParameters->View = View.ViewUniformBuffer;
PassParameters->RenderTargets[0] = FRenderTargetBinding(SceneColorTexture, ERenderTargetLoadAction::ELoad);
// Fetch the separated before dof translucent data if available for composition
FTranslucencyPassResources& TranslucencyPassResources = TranslucencyResourceMap.Get(ViewIndex, ETranslucencyPass::TPT_TranslucencyStandard);
PassParameters->StandardTranslucentColorAlphaTexture = TranslucencyPassResources.GetColorForRead(GraphBuilder);
PassParameters->StandardTranslucentColorAlphaMSAATexture = TranslucencyPassResources.ColorTexture.Target;
PassParameters->StandardTranslucentTransmittanceTexture = TranslucencyPassResources.GetColorModulateForRead(GraphBuilder);
PassParameters->StandardTranslucentTransmittanceMSAATexture = TranslucencyPassResources.ColorModulateTexture.Target;
Viewport.Rect = View.ViewRect;
ClearUnusedGraphResources(MergePixelShader, PassParameters);
AddDrawScreenPass(GraphBuilder, {}, View, Viewport, Viewport, PipelineState, PassParameters,
[MergePixelShader, PassParameters](FRHICommandList& RHICmdList)
{
SetShaderParameters(RHICmdList, MergePixelShader, MergePixelShader.GetPixelShader(), *PassParameters);
});
}
}
}
bool GetDistortionPassShaders(
const FMaterial& Material,
const FVertexFactoryType* VertexFactoryType,
ERHIFeatureLevel::Type FeatureLevel,
TShaderRef<FDistortionMeshVS>& VertexShader,
TShaderRef<FDistortionMeshPS>& PixelShader)
{
FMaterialShaderTypes ShaderTypes;
ShaderTypes.AddShaderType<FDistortionMeshVS>();
ShaderTypes.AddShaderType<FDistortionMeshPS>();
FMaterialShaders Shaders;
if (!Material.TryGetShaders(ShaderTypes, VertexFactoryType, Shaders))
{
return false;
}
Shaders.TryGetVertexShader(VertexShader);
Shaders.TryGetPixelShader(PixelShader);
return true;
}
void FDistortionMeshProcessor::AddMeshBatch(const FMeshBatch& RESTRICT MeshBatch, uint64 BatchElementMask, const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy, int32 StaticMeshId)
{
if (MeshBatch.bUseForMaterial)
{
const FMaterialRenderProxy* MaterialRenderProxy = MeshBatch.MaterialRenderProxy;
while (MaterialRenderProxy)
{
const FMaterial* Material = MaterialRenderProxy->GetMaterialNoFallback(FeatureLevel);
if (Material)
{
if (TryAddMeshBatch(MeshBatch, BatchElementMask, PrimitiveSceneProxy, StaticMeshId, *MaterialRenderProxy, *Material))
{
break;
}
}
MaterialRenderProxy = MaterialRenderProxy->GetFallback(FeatureLevel);
}
}
}
static bool ShouldDraw(const FMaterial& Material)
{
const EBlendMode BlendMode = Material.GetBlendMode();
const bool bIsTranslucent = IsTranslucentBlendMode(BlendMode);
return (bIsTranslucent
&& ShouldIncludeDomainInMeshPass(Material.GetMaterialDomain())
&& Material.IsDistorted());
}
void FDistortionMeshProcessor::CollectPSOInitializers(const FSceneTexturesConfig& SceneTexturesConfig, const FMaterial& Material, const FVertexFactoryType* VertexFactoryType, const FPSOPrecacheParams& PreCacheParams, TArray<FPSOPrecacheData>& PSOInitializers)
{
if (!ShouldDraw(Material))
{
return;
}
TMeshProcessorShaders<
FDistortionMeshVS,
FDistortionMeshPS> DistortionPassShaders;
if (!GetDistortionPassShaders(
Material,
VertexFactoryType,
FeatureLevel,
DistortionPassShaders.VertexShader,
DistortionPassShaders.PixelShader))
{
return;
}
const FMeshDrawingPolicyOverrideSettings OverrideSettings = ComputeMeshOverrideSettings(PreCacheParams);
const ERasterizerFillMode MeshFillMode = ComputeMeshFillMode(Material, OverrideSettings);
const ERasterizerCullMode MeshCullMode = ComputeMeshCullMode(Material, OverrideSettings);
FGraphicsPipelineRenderTargetsInfo RenderTargetsInfo;
RenderTargetsInfo.NumSamples = 1;
AddRenderTargetInfo(CVarRefractionOffsetQuality.GetValueOnAnyThread() > 0 ? PF_FloatRGBA : PF_B8G8R8A8, GFastVRamConfig.Distortion | TexCreate_RenderTargetable | TexCreate_ShaderResource, RenderTargetsInfo);
if (GetUseRoughRefraction())
{
AddRenderTargetInfo(PF_R16F, GFastVRamConfig.Distortion | TexCreate_RenderTargetable | TexCreate_ShaderResource, RenderTargetsInfo);
}
ETextureCreateFlags DepthStencilCreateFlags = SceneTexturesConfig.DepthCreateFlags;
SetupDepthStencilInfo(PF_DepthStencil, DepthStencilCreateFlags, ERenderTargetLoadAction::ELoad,
ERenderTargetLoadAction::ELoad, FExclusiveDepthStencil::DepthRead_StencilWrite, RenderTargetsInfo);
AddGraphicsPipelineStateInitializer(
VertexFactoryType,
Material,
PassDrawRenderState,
RenderTargetsInfo,
DistortionPassShaders,
MeshFillMode,
MeshCullMode,
(EPrimitiveType)PreCacheParams.PrimitiveType,
EMeshPassFeatures::Default,
PSOInitializers);
}
bool FDistortionMeshProcessor::TryAddMeshBatch(
const FMeshBatch& RESTRICT MeshBatch,
uint64 BatchElementMask,
const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy,
int32 StaticMeshId,
const FMaterialRenderProxy& MaterialRenderProxy,
const FMaterial& Material)
{
bool bResult = true;
if (ShouldDraw(Material)
&& (!PrimitiveSceneProxy || PrimitiveSceneProxy->ShouldRenderInMainPass()))
{
const FMeshDrawingPolicyOverrideSettings OverrideSettings = ComputeMeshOverrideSettings(MeshBatch);
const ERasterizerFillMode MeshFillMode = ComputeMeshFillMode(Material, OverrideSettings);
const ERasterizerCullMode MeshCullMode = ComputeMeshCullMode(Material, OverrideSettings);
bResult = Process(MeshBatch, BatchElementMask, PrimitiveSceneProxy, StaticMeshId, MaterialRenderProxy, Material, MeshFillMode, MeshCullMode);
}
return bResult;
}
bool FDistortionMeshProcessor::Process(
const FMeshBatch& MeshBatch,
uint64 BatchElementMask,
const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy,
int32 StaticMeshId,
const FMaterialRenderProxy& RESTRICT MaterialRenderProxy,
const FMaterial& RESTRICT MaterialResource,
ERasterizerFillMode MeshFillMode,
ERasterizerCullMode MeshCullMode)
{
const FVertexFactory* VertexFactory = MeshBatch.VertexFactory;
TMeshProcessorShaders<
FDistortionMeshVS,
FDistortionMeshPS> DistortionPassShaders;
if (!GetDistortionPassShaders(
MaterialResource,
VertexFactory->GetType(),
FeatureLevel,
DistortionPassShaders.VertexShader,
DistortionPassShaders.PixelShader))
{
return false;
}
FMeshMaterialShaderElementData ShaderElementData;
ShaderElementData.InitializeMeshMaterialData(ViewIfDynamicMeshCommand, PrimitiveSceneProxy, MeshBatch, StaticMeshId, false);
const FMeshDrawCommandSortKey SortKey = CalculateMeshStaticSortKey(DistortionPassShaders.VertexShader, DistortionPassShaders.PixelShader);
const bool bDisableDepthTest = MaterialResource.ShouldDisableDepthTest();
BuildMeshDrawCommands(
MeshBatch,
BatchElementMask,
PrimitiveSceneProxy,
MaterialRenderProxy,
MaterialResource,
bDisableDepthTest ? PassDrawRenderStateNoDepthTest : PassDrawRenderState,
DistortionPassShaders,
MeshFillMode,
MeshCullMode,
SortKey,
EMeshPassFeatures::Default,
ShaderElementData);
return true;
}
FDistortionMeshProcessor::FDistortionMeshProcessor(
const FScene* Scene,
ERHIFeatureLevel::Type FeatureLevel,
const FSceneView* InViewIfDynamicMeshCommand,
const FMeshPassProcessorRenderState& InPassDrawRenderState,
const FMeshPassProcessorRenderState& InDistortionPassStateNoDepthTest,
FMeshPassDrawListContext* InDrawListContext)
: FMeshPassProcessor(EMeshPass::Distortion, Scene, FeatureLevel, InViewIfDynamicMeshCommand, InDrawListContext)
, PassDrawRenderState(InPassDrawRenderState)
, PassDrawRenderStateNoDepthTest(InDistortionPassStateNoDepthTest)
{}
FMeshPassProcessor* CreateDistortionPassProcessor(ERHIFeatureLevel::Type FeatureLevel, const FScene* Scene, const FSceneView* InViewIfDynamicMeshCommand, FMeshPassDrawListContext* InDrawListContext)
{
FMeshPassProcessorRenderState DistortionPassState;
// test against depth and write stencil mask
DistortionPassState.SetDepthStencilState(TStaticDepthStencilState<
false, CF_DepthNearOrEqual,
true, CF_Always, SO_Keep, SO_Keep, SO_Replace,
false, CF_Always, SO_Keep, SO_Keep, SO_Keep,
DISTORTION_STENCIL_MASK_BIT, DISTORTION_STENCIL_MASK_BIT>::GetRHI());
DistortionPassState.SetStencilRef(DISTORTION_STENCIL_MASK_BIT);
if (GetUseRoughRefraction())
{
DistortionPassState.SetBlendState(TStaticBlendState<CW_RGBA, BO_Add, BF_One, BF_One, BO_Add, BF_One, BF_One,
CW_RGBA, BO_Add, BF_One, BF_One, BO_Add, BF_One, BF_One>::GetRHI());
}
else
{
// additive blending of offsets (or complexity if the shader complexity viewmode is enabled)
DistortionPassState.SetBlendState(TStaticBlendState<CW_RGBA, BO_Add, BF_One, BF_One, BO_Add, BF_One, BF_One>::GetRHI());
}
FMeshPassProcessorRenderState DistortionPassStateNoDepthTest = DistortionPassState;
DistortionPassStateNoDepthTest.SetDepthStencilState(TStaticDepthStencilState<
false, CF_Always,
true, CF_Always, SO_Keep, SO_Keep, SO_Replace,
false, CF_Always, SO_Keep, SO_Keep, SO_Keep,
DISTORTION_STENCIL_MASK_BIT, DISTORTION_STENCIL_MASK_BIT>::GetRHI());
DistortionPassStateNoDepthTest.SetStencilRef(DISTORTION_STENCIL_MASK_BIT);
return new FDistortionMeshProcessor(Scene, FeatureLevel, InViewIfDynamicMeshCommand, DistortionPassState, DistortionPassStateNoDepthTest, InDrawListContext);
}
FMeshPassProcessor* CreateMobileDistortionPassProcessor(ERHIFeatureLevel::Type FeatureLevel, const FScene* Scene, const FSceneView* InViewIfDynamicMeshCommand, FMeshPassDrawListContext* InDrawListContext)
{
FMeshPassProcessorRenderState DistortionPassState;
// We don't have depth, render all pixels, pixel shader will sample SceneDepth from SceneColor.A and discard if occluded
DistortionPassState.SetDepthStencilState(TStaticDepthStencilState<false, CF_Always>::GetRHI());
if (GetUseRoughRefraction())
{
DistortionPassState.SetBlendState(TStaticBlendState<CW_RGBA, BO_Add, BF_One, BF_One, BO_Add, BF_One, BF_One,
CW_RGBA, BO_Add, BF_One, BF_One, BO_Add, BF_One, BF_One>::GetRHI());
}
else
{
// additive blending of offsets
DistortionPassState.SetBlendState(TStaticBlendState<CW_RGBA, BO_Add, BF_One, BF_One, BO_Add, BF_One, BF_One>::GetRHI());
}
return new FDistortionMeshProcessor(Scene, FeatureLevel, InViewIfDynamicMeshCommand, DistortionPassState, DistortionPassState, InDrawListContext);
}
REGISTER_MESHPASSPROCESSOR_AND_PSOCOLLECTOR(DistortionPass, CreateDistortionPassProcessor, EShadingPath::Deferred, EMeshPass::Distortion, EMeshPassFlags::MainView);
FRegisterPassProcessorCreateFunction RegisterMobileDistortionPass(&CreateMobileDistortionPassProcessor, EShadingPath::Mobile, EMeshPass::Distortion, EMeshPassFlags::MainView);