Files
UnrealEngineUWP/Engine/Shaders/Private/ShadingModels.ush

1003 lines
37 KiB
Plaintext
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "DeferredShadingCommon.ush"
#include "BRDF.ush"
#include "FastMath.ush"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
#include "CapsuleLight.ush"
#include "RectLight.ush"
#include "AreaLightCommon.ush"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
#include "TransmissionCommon.ush"
#include "HairBsdf.ush"
#include "ShadingEnergyConservation.ush"
#include "ParticipatingMediaCommon.ush"
#include "ColorSpace.ush"
#if SHADING_PATH_MOBILE
#include "MobileGGX.ush"
#ifndef MOBILE_SHADOW_QUALITY
#define MOBILE_SHADOW_QUALITY 2
#endif
//It's always 0 in mobile deferred lighting shaders
#ifndef FULLY_ROUGH
#define FULLY_ROUGH 0
#endif
//It's always 0 in mobile deferred lighting shaders
#ifndef NONMETAL
#define NONMETAL 0
#endif
//It's always 0 in mobile deferred lighting shaders
#ifndef MATERIAL_SHADINGMODEL_SINGLELAYERWATER
#define MATERIAL_SHADINGMODEL_SINGLELAYERWATER 0
#endif
//It's always 0 in mobile deferred lighting shaders
#ifndef MOBILE_USE_PREINTEGRATED_GF
#define MOBILE_USE_PREINTEGRATED_GF 0
#endif
//It's always 1 in mobile deferred lighting shaders
#ifndef MOBILE_DEFERRED_LIGHTING
#define MOBILE_DEFERRED_LIGHTING 0
#endif
#ifndef DEFERRED_SHADING_PATH
#define DEFERRED_SHADING_PATH 0
#endif
/*------------------------------------------------------------------------------
Mobile Shading Model Functions
------------------------------------------------------------------------------*/
half4 GetSSProfilePreIntegratedValue(uint SubsurfaceProfileInt, half NoL, half Curvature)
{
float3 UV = float3((NoL * .5 + .5), Curvature, SubsurfaceProfileInt);
return Texture2DArraySampleLevel(View.SSProfilesPreIntegratedTexture, View.SSProfilesPreIntegratedSampler, UV, 0);
}
half3 GetEnvBRDF(half3 SpecularColor, half Roughness, half NoV)
{
#if FULLY_ROUGH
return 0.0f;
#elif MOBILE_USE_PREINTEGRATED_GF
return EnvBRDF(SpecularColor, Roughness, NoV);
#elif NONMETAL
// If nothing is hooked up to Metalic and Specular,
// then defaults are the same as a non-metal,
// so this define is safe.
return EnvBRDFApproxNonmetal(Roughness, NoV).xxx;
#else
return EnvBRDFApprox(SpecularColor, Roughness, NoV);
#endif
}
half3 MobileSpecularGGXInner(half D, half3 SpecularColor, half Roughness, half NoV, half NoL, half VoH, bool bHighQualityBRDF)
{
half Vis = (Roughness * 0.25 + 0.25);
half3 F = GetEnvBRDF(SpecularColor, Roughness, NoV);
if (bHighQualityBRDF)
{
Vis = saturate(Vis_SmithJointApprox(Roughness * Roughness * Roughness * Roughness, NoV, NoL));
F = F_Schlick(SpecularColor, VoH);
}
return (D * Vis) * F;
}
#endif // SHADING_PATH_MOBILE
#if 0
void StandardShadingShared( float3 DiffuseColor, float3 SpecularColor, float Roughness, float3 V, half3 N )
{
float NoV = saturate( abs( dot(N, V) ) + 1e-5 );
// Diffuse_Lambert
Shared.DiffuseMul = DiffuseColor * (1.0 / PI);
// D_GGX, Vis_SmithJointApprox
float m = Roughness * Roughness;
Shared.m2 = m * m;
Shared.SpecularMul = (0.5 / PI) * Shared.m2;
Shared.VisMad = float2( 2 * NoV * ( 1 - m ) + m, NoV * m );
// F_Schlick
Shared.SpecularMul *= saturate( 50.0 * SpecularColor.g );
}
void StandardShadingPerLight( Shared, float3 L, float3 V, half3 N )
{
float3 H = normalize(V + L); // 3 add, 2 mad, 4 mul, 1 rsqrt
float NoL = saturate( dot(N, L) ); // 2 mad, 1 mul
float NoH = saturate( dot(N, H) ); // 2 mad, 1 mul
float VoH = saturate( dot(V, H) ); // 2 mad, 1 mul
// D_GGX, Vis_SmithJointApprox
float d = ( NoH * Shared.m2 - NoH ) * NoH + 1; // 2 mad
float v = NoL * Shared.VisMad.x + Shared.VisMad.y; // 1 mad
float D_Vis = Shared.SpecularMul * rcp( d * d * v ); // 3 mul, 1 rcp
// F_Schlick
float Fc = pow( 1 - VoH, 5 ); // 1 sub, 3 mul
float3 F = Fc + (1 - Fc) * SpecularColor; // 1 sub, 3 mad
return Shared.DiffuseMul + D_Vis * F; // 3 mad
}
#endif
struct FDirectLighting
{
float3 Diffuse;
float3 Specular;
float3 Transmission;
};
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
struct FShadowTerms
{
half SurfaceShadow;
half TransmissionShadow;
half TransmissionThickness;
FHairTransmittanceData HairTransmittance;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
};
FDirectLighting HairBxDF(FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow)
{
const float3 BsdfValue = HairShading(GBuffer, L, V, N, Shadow.TransmissionShadow, Shadow.HairTransmittance, 1, 0, uint2(0, 0));
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting Lighting;
Lighting.Diffuse = 0;
Lighting.Specular = 0;
Lighting.Transmission = AreaLight.FalloffColor * Falloff * BsdfValue;
return Lighting;
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float New_a2( float a2, float SinAlpha, float VoH )
{
return a2 + 0.25 * SinAlpha * (3.0 * sqrtFast(a2) + SinAlpha) / ( VoH + 0.001 );
//return a2 + 0.25 * SinAlpha * ( saturate(12 * a2 + 0.125) + SinAlpha ) / ( VoH + 0.001 );
//return a2 + 0.25 * SinAlpha * ( a2 * 2 + 1 + SinAlpha ) / ( VoH + 0.001 );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
float EnergyNormalization( inout float a2, float VoH, FAreaLight AreaLight )
{
if( AreaLight.SphereSinAlphaSoft > 0 )
{
// Modify Roughness
a2 = saturate( a2 + Pow2( AreaLight.SphereSinAlphaSoft ) / ( VoH * 3.6 + 0.4 ) );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
float Sphere_a2 = a2;
float Energy = 1;
if( AreaLight.SphereSinAlpha > 0 )
{
Sphere_a2 = New_a2( a2, AreaLight.SphereSinAlpha, VoH );
Energy = a2 / Sphere_a2;
}
if( AreaLight.LineCosSubtended < 1 )
{
#if 1
float LineCosTwoAlpha = AreaLight.LineCosSubtended;
float LineTanAlpha = sqrt( ( 1.0001 - LineCosTwoAlpha ) / ( 1 + LineCosTwoAlpha ) );
float Line_a2 = New_a2( Sphere_a2, LineTanAlpha, VoH );
Energy *= sqrt( Sphere_a2 / Line_a2 );
#else
float LineCosTwoAlpha = AreaLight.LineCosSubtended;
float LineSinAlpha = sqrt( 0.5 - 0.5 * LineCosTwoAlpha );
float Line_a2 = New_a2( Sphere_a2, LineSinAlpha, VoH );
Energy *= Sphere_a2 / Line_a2;
#endif
}
return Energy;
}
float3 SpecularGGX(float Roughness, float Anisotropy, float3 SpecularColor, BxDFContext Context, float NoL, FAreaLight AreaLight)
{
float Alpha = Roughness * Roughness;
float a2 = Alpha * Alpha;
FAreaLight Punctual = AreaLight;
Punctual.SphereSinAlpha = 0;
Punctual.SphereSinAlphaSoft = 0;
Punctual.LineCosSubtended = 1;
Punctual.Rect = (FRect)0;
Punctual.IsRectAndDiffuseMicroReflWeight = 0;
float Energy = EnergyNormalization(a2, Context.VoH, Punctual);
float ax = 0;
float ay = 0;
GetAnisotropicRoughness(Alpha, Anisotropy, ax, ay);
// Generalized microfacet specular
float3 D = D_GGXaniso(ax, ay, Context.NoH, Context.XoH, Context.YoH) * Energy;
float3 Vis = Vis_SmithJointAniso(ax, ay, Context.NoV, NoL, Context.XoV, Context.XoL, Context.YoV, Context.YoL);
float3 F = F_Schlick( SpecularColor, Context.VoH );
return (D * Vis) * F;
}
float3 SpecularGGX( float Roughness, float3 SpecularColor, BxDFContext Context, half NoL, FAreaLight AreaLight )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
float a2 = Pow4( Roughness );
float Energy = EnergyNormalization( a2, Context.VoH, AreaLight );
#if SHADING_PATH_MOBILE
half D = D_GGX_Mobile(Roughness, Context.NoH) * Energy;
return MobileSpecularGGXInner(D, SpecularColor, Roughness, Context.NoV, NoL, Context.VoH, MOBILE_HIGH_QUALITY_BRDF);
#else
// Generalized microfacet specular
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float D = D_GGX( a2, Context.NoH ) * Energy;
float Vis = Vis_SmithJointApprox( a2, Context.NoV, NoL );
float3 F = F_Schlick( SpecularColor, Context.VoH );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return (D * Vis) * F;
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
half3 DualSpecularGGX(half AverageRoughness, half Lobe0Roughness, half Lobe1Roughness, half LobeMix, half3 SpecularColor, BxDFContext Context, half NoL, FAreaLight AreaLight)
{
float AverageAlpha2 = Pow4(AverageRoughness);
float Lobe0Alpha2 = Pow4(Lobe0Roughness);
float Lobe1Alpha2 = Pow4(Lobe1Roughness);
float Lobe0Energy = EnergyNormalization(Lobe0Alpha2, Context.VoH, AreaLight);
float Lobe1Energy = EnergyNormalization(Lobe1Alpha2, Context.VoH, AreaLight);
#if SHADING_PATH_MOBILE
half D = lerp(D_GGX_Mobile(Lobe0Roughness, Context.NoH) * Lobe0Energy, D_GGX_Mobile(Lobe1Roughness, Context.NoH) * Lobe1Energy, LobeMix);
return MobileSpecularGGXInner(D, SpecularColor, AverageRoughness, Context.NoV, NoL, Context.VoH, MOBILE_HIGH_QUALITY_BRDF);
#else
// Generalized microfacet specular
float D = lerp(D_GGX(Lobe0Alpha2, Context.NoH) * Lobe0Energy, D_GGX(Lobe1Alpha2, Context.NoH) * Lobe1Energy, LobeMix);
float Vis = Vis_SmithJointApprox(AverageAlpha2, Context.NoV, NoL); // Average visibility well approximates using two separate ones (one per lobe).
float3 F = F_Schlick(SpecularColor, Context.VoH);
return (D * Vis) * F;
#endif
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting DefaultLitBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
BxDFContext Context;
FDirectLighting Lighting;
#if SUPPORTS_ANISOTROPIC_MATERIALS
bool bHasAnisotropy = HasAnisotropy(GBuffer.SelectiveOutputMask);
#else
bool bHasAnisotropy = false;
#endif
float NoV, VoH, NoH;
BRANCH
if (bHasAnisotropy)
{
half3 X = GBuffer.WorldTangent;
half3 Y = normalize(cross(N, X));
Init(Context, N, X, Y, V, L);
NoV = Context.NoV;
VoH = Context.VoH;
NoH = Context.NoH;
}
else
{
#if SHADING_PATH_MOBILE
InitMobile(Context, N, V, L, NoL);
#else
Init(Context, N, V, L);
#endif
NoV = Context.NoV;
VoH = Context.VoH;
NoH = Context.NoH;
SphereMaxNoH(Context, AreaLight.SphereSinAlpha, true);
}
Context.NoV = saturate(abs( Context.NoV ) + 1e-5);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
#if MATERIAL_ROUGHDIFFUSE
// Chan diffuse model with roughness == specular roughness. This is not necessarily a good modelisation of reality because when the mean free path is super small, the diffuse can in fact looks rougher. But this is a start.
// Also we cannot use the morphed context maximising NoH as this is causing visual artefact when interpolating rough/smooth diffuse response.
Lighting.Diffuse = Diffuse_Chan(GBuffer.DiffuseColor, Pow4(GBuffer.Roughness), NoV, NoL, VoH, NoH, GetAreaLightDiffuseMicroReflWeight(AreaLight));
#else
Lighting.Diffuse = Diffuse_Lambert(GBuffer.DiffuseColor);
#endif
Lighting.Diffuse *= AreaLight.FalloffColor * (Falloff * NoL);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
BRANCH
if (bHasAnisotropy)
{
//Lighting.Specular = GBuffer.WorldTangent * .5f + .5f;
Lighting.Specular = AreaLight.FalloffColor * (Falloff * NoL) * SpecularGGX(GBuffer.Roughness, GBuffer.Anisotropy, GBuffer.SpecularColor, Context, NoL, AreaLight);
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
else
{
if( IsRectLight(AreaLight) )
{
Lighting.Specular = RectGGXApproxLTC(GBuffer.Roughness, GBuffer.SpecularColor, N, V, AreaLight.Rect, AreaLight.Texture);
}
else
{
Lighting.Specular = AreaLight.FalloffColor * (Falloff * NoL) * SpecularGGX(GBuffer.Roughness, GBuffer.SpecularColor, Context, NoL, AreaLight);
}
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FBxDFEnergyTerms EnergyTerms = ComputeGGXSpecEnergyTerms(GBuffer.Roughness, Context.NoV, GBuffer.SpecularColor);
// Add energy presevation (i.e. attenuation of the specular layer onto the diffuse component
Lighting.Diffuse *= ComputeEnergyPreservation(EnergyTerms);
// Add specular microfacet multiple scattering term (energy-conservation)
Lighting.Specular *= ComputeEnergyConservation(EnergyTerms);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Transmission = 0;
return Lighting;
}
// Simple default lit model used by Lumen
float3 SimpleShading( float3 DiffuseColor, float3 SpecularColor, float Roughness, float3 L, float3 V, half3 N )
{
const float NoV = saturate(dot(N, V));
const FBxDFEnergyTerms EnergyTerms = ComputeGGXSpecEnergyTerms(Roughness, NoV, SpecularColor);
float3 H = normalize(V + L);
float NoH = saturate( dot(N, H) );
// Generalized microfacet specular
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float D = D_GGX( Pow4(Roughness), NoH );
float Vis = Vis_Implicit();
float3 F = F_None( SpecularColor );
return
Diffuse_Lambert( DiffuseColor ) * ComputeEnergyPreservation(EnergyTerms) +
(D * Vis) * F * ComputeEnergyConservation(EnergyTerms);
}
float RefractBlend(float VoH, float Eta)
{
// Refraction blend factor for normal component of VoH
float k = 1.0 - Eta * Eta * (1.0 - VoH * VoH);
return Eta * VoH - sqrt(k);
}
half RefractBlendClearCoatApprox(half VoH)
{
// Polynomial approximation of refraction blend factor for normal component of VoH with fixed Eta (1/1.5):
return (0.63 - 0.22 * VoH) * VoH - 0.745;
}
float3 Refract(float3 V, float3 H, float Eta)
{
// Assumes V points away from the point of incidence
float VoH = dot(V, H);
return RefractBlend(VoH, Eta) * H - Eta * V;
}
BxDFContext RefractClearCoatContext(BxDFContext Context)
{
// Reference: Propagation of refraction through dot-product NoV
// Note: This version of Refract requires V to point away from the point of incidence
// NoV2 = -dot(N, Refract(V, H, Eta))
// NoV2 = -dot(N, RefractBlend(VoH, Eta) * H - Eta * V)
// NoV2 = -(RefractBlend(VoH, Eta) * NoH - Eta * NoV)
// NoV2 = Eta * NoV - RefractBlend(VoH, Eta) * NoH
// NoV2 = 1.0 / 1.5 * NoV - RefractBlendClearCoatApprox(VoH) * NoH
BxDFContext RefractedContext = Context;
half Eta = 1.0 / 1.5;
half RefractionBlendFactor = RefractBlendClearCoatApprox(Context.VoH);
half RefractionProjectionTerm = RefractionBlendFactor * Context.NoH;
RefractedContext.NoV = clamp(Eta * Context.NoV - RefractionProjectionTerm, 0.001, 1.0); // Due to CalcThinTransmission and Vis_SmithJointAniso, we need to make sure
RefractedContext.NoL = clamp(Eta * Context.NoL - RefractionProjectionTerm, 0.001, 1.0); // those values are not 0s to avoid NaNs.
RefractedContext.VoH = saturate(Eta * Context.VoH - RefractionBlendFactor);
RefractedContext.VoL = 2.0 * RefractedContext.VoH * RefractedContext.VoH - 1.0;
RefractedContext.NoH = Context.NoH;
return RefractedContext;
}
FDirectLighting ClearCoatBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
{
const half ClearCoat = GBuffer.CustomData.x;
const half ClearCoatRoughness = max(GBuffer.CustomData.y, 0.02f);
FDirectLighting Lighting = {
float3(0.0, 0.0, 0.0),
float3(0.0, 0.0, 0.0),
float3(0.0, 0.0, 0.0)
};
BxDFContext Context;
half3 Nspec = N;
if (CLEAR_COAT_BOTTOM_NORMAL)
{
Nspec = GBuffer.WorldNormal;
}
#if SUPPORTS_ANISOTROPIC_MATERIALS
bool bHasAnisotropy = HasAnisotropy(GBuffer.SelectiveOutputMask);
#else
bool bHasAnisotropy = false;
#endif
half3 X = 0;
half3 Y = 0;
//////////////////////////////
/// Top Layer
//////////////////////////////
// No anisotropy for the top layer
Init(Context, Nspec, V, L);
// Modify SphereSinAlpha, knowing that it was previously manipulated by roughness of the under coat
// Note: the operation is not invertible for GBuffer.Roughness = 1.0, so roughness is clamped to 254.0/255.0
float SphereSinAlpha = AreaLight.SphereSinAlpha;
float RoughnessCompensation = 1 - Pow2(GBuffer.Roughness);
half Alpha = ClearCoatRoughness * ClearCoatRoughness;
RoughnessCompensation = RoughnessCompensation > 0.0 ? (1 - Alpha) / RoughnessCompensation : 0.0;
AreaLight.SphereSinAlpha = saturate(AreaLight.SphereSinAlpha * RoughnessCompensation);
SphereMaxNoH(Context, AreaLight.SphereSinAlpha, CLEAR_COAT_BOTTOM_NORMAL == 0);
Context.NoV = saturate(abs(Context.NoV) + 1e-5);
const bool bIsRect = IsRectLight(AreaLight);
Context.VoH = bIsRect ? Context.NoV : Context.VoH;
// Hard-coded Fresnel evaluation with IOR = 1.5 (for polyurethane cited by Disney BRDF)
float F0 = 0.04;
float Fc = Pow5(1 - Context.VoH);
float F = Fc + (1 - Fc) * F0;
FBxDFEnergyTerms EnergyTermsCoat = ComputeGGXSpecEnergyTerms(ClearCoatRoughness, Context.NoV, F0);
if (bIsRect)
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
Lighting.Specular = ClearCoat * RectGGXApproxLTC(ClearCoatRoughness, F0, Nspec, V, AreaLight.Rect, AreaLight.Texture);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
else
{
// Generalized microfacet specular
float a2 = Pow2(Alpha);
float ClearCoatEnergy = EnergyNormalization(a2, Context.VoH, AreaLight);
half Vis = Vis_SmithJointApprox(a2, Context.NoV, NoL);
#if SHADING_PATH_MOBILE
half D = D_GGX_Mobile(ClearCoatRoughness, Context.NoH) * ClearCoatEnergy;
Vis = saturate(Vis);
#else
float D = D_GGX(a2, Context.NoH) * ClearCoatEnergy;
#endif
half Fr1 = (D * Vis) * F;
Lighting.Specular = ClearCoat * AreaLight.FalloffColor * (Falloff * NoL * Fr1);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
Lighting.Specular *= ComputeEnergyConservation(EnergyTermsCoat);
// Restore previously changed SphereSinAlpha for the top layer.
// Alpha needs to also be restored to the bottom layer roughness.
AreaLight.SphereSinAlpha = SphereSinAlpha;
Alpha = Pow2(GBuffer.Roughness);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
// Incoming and exiting Fresnel terms are identical to incoming Fresnel term (VoH == HoL)
// float FresnelCoeff = (1.0 - F1) * (1.0 - F2);
#if USE_ENERGY_CONSERVATION
float3 FresnelCoeff = ComputeEnergyPreservation(EnergyTermsCoat); // 1.0 - F;
#else
// Preserve old behavior when energy conservation is disabled
half FresnelCoeff = 1.0 - F;
#endif
FresnelCoeff *= FresnelCoeff;
//////////////////////////////
/// Bottom Layer
//////////////////////////////
if (CLEAR_COAT_BOTTOM_NORMAL)
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
BxDFContext TempContext;
BRANCH
if (bHasAnisotropy)
{
Init(TempContext, N, X, Y, V, L);
}
else
{
Init(TempContext, Nspec, V, L);
}
// If bottom-normal, update normal-based dot products:
float3 H = normalize(V + L);
Context.NoH = saturate(dot(N, H));
Context.NoV = saturate(dot(N, V));
Context.NoL = saturate(dot(N, L));
Context.VoL = saturate(dot(V, L));
Context.VoH = saturate(dot(V, H));
Context.XoV = TempContext.XoV;
Context.XoL = TempContext.XoL;
Context.XoH = TempContext.XoH;
Context.YoV = TempContext.YoV;
Context.YoL = TempContext.YoL;
Context.YoH = TempContext.YoH;
if (!bHasAnisotropy)
{
bool bNewtonIteration = true;
SphereMaxNoH(Context, AreaLight.SphereSinAlpha, bNewtonIteration);
}
Context.NoV = saturate(abs(Context.NoV) + 1e-5);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
// Propagate refraction through dot-products rather than the original vectors:
// Reference:
// float Eta = 1.0 / 1.5;
// float3 H = normalize(V + L);
// float3 V2 = Refract(V, H, Eta);
// float3 L2 = reflect(V2, H);
// V2 = -V2;
// BxDFContext BottomContext;
// Init(BottomContext, N, X, Y, V2, L2);
if (bHasAnisotropy)
{
// Prepare the anisotropic Context to refract.
X = GBuffer.WorldTangent;
Y = normalize(cross(N, X));
Init(Context, Nspec, X, Y, V, L);
}
BxDFContext BottomContext = RefractClearCoatContext(Context);
BottomContext.VoH = bIsRect ? BottomContext.NoV : BottomContext.VoH;
FBxDFEnergyTerms EnergyTermsBottom = ComputeGGXSpecEnergyTerms(GBuffer.Roughness, BottomContext.NoV, GBuffer.SpecularColor);
// Absorption
float3 Transmission = SimpleClearCoatTransmittance(BottomContext.NoL, BottomContext.NoV, GBuffer.Metallic, GBuffer.BaseColor);
// Default Lit
half3 DefaultDiffuse = (Falloff * NoL) * AreaLight.FalloffColor * Diffuse_Lambert(GBuffer.DiffuseColor) * ComputeEnergyPreservation(EnergyTermsBottom);
half3 RefractedDiffuse = FresnelCoeff * Transmission * DefaultDiffuse;
Lighting.Diffuse = lerp(DefaultDiffuse, RefractedDiffuse, ClearCoat);
if (!bHasAnisotropy && bIsRect)
{
// Note: V is used instead of V2 because LTC integration is not tuned to handle refraction direction
float3 DefaultSpecular = RectGGXApproxLTC(GBuffer.Roughness, GBuffer.SpecularColor, N, V, AreaLight.Rect, AreaLight.Texture);
float3 RefractedSpecular = FresnelCoeff * Transmission * DefaultSpecular;
Lighting.Specular += lerp(DefaultSpecular, RefractedSpecular, ClearCoat);
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
else
{
float a2 = Pow4(GBuffer.Roughness);
half D2 = 0;
half Vis2 = 0;
BRANCH
if (bHasAnisotropy)
{
float ax = 0;
float ay = 0;
GetAnisotropicRoughness(Alpha, GBuffer.Anisotropy, ax, ay);
D2 = D_GGXaniso(ax, ay, Context.NoH, Context.XoH, Context.YoH);
Vis2 = Vis_SmithJointAniso(ax, ay, BottomContext.NoV, BottomContext.NoL, BottomContext.XoV, BottomContext.XoL, BottomContext.YoV, BottomContext.YoL);
}
else
{
// NoL is chosen to provide better parity with DefaultLit when ClearCoat=0
Vis2 = Vis_SmithJointApprox(a2, BottomContext.NoV, NoL);
#if SHADING_PATH_MOBILE
D2 = D_GGX_Mobile(GBuffer.Roughness, BottomContext.NoH);
Vis2 = saturate(Vis2);
#else
D2 = D_GGX(a2, BottomContext.NoH);
#endif
}
half3 F_Bot = F_Schlick(GBuffer.SpecularColor, BottomContext.VoH);
half3 F_DefaultLit = F_Schlick(GBuffer.SpecularColor, Context.VoH);
float Energy = 0;
BRANCH
if (bHasAnisotropy)
{
FAreaLight Punctual = AreaLight;
Punctual.SphereSinAlpha = 0;
Punctual.SphereSinAlphaSoft = 0;
Punctual.LineCosSubtended = 1;
Punctual.Rect = (FRect)0;
Punctual.IsRectAndDiffuseMicroReflWeight = 0;
Energy = EnergyNormalization(a2, Context.VoH, Punctual);
}
else
{
Energy = EnergyNormalization(a2, Context.VoH, AreaLight);
}
// Note: reusing D and V from refracted context to save computation when ClearCoat < 1
float3 CommonSpecular = (Energy * Falloff * NoL * D2 * Vis2) * AreaLight.FalloffColor;
float3 DefaultSpecular = F_DefaultLit;
float3 RefractedSpecular = FresnelCoeff * Transmission * F_Bot;
Lighting.Specular += CommonSpecular * lerp(DefaultSpecular, RefractedSpecular, ClearCoat);
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return Lighting;
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
// HG phase function approximated
float ApproximateHG(float cosJ, float g)
{
float g2 = g * g;
float gcos2 = 1.0f - (g * cosJ);
gcos2 *= gcos2;
const float ISO_PHASE_FUNC_Normalized = 0.5;
return (ISO_PHASE_FUNC_Normalized * (1.0f - g2) / max( 1e-5, gcos2));
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
}
void GetProfileDualSpecular(uint SubsurfaceProfileInt, half Roughness, half Opacity, out half LobeRoughness0, out half LobeRoughness1, out half LobeMix)
{
#if !FORWARD_SHADING
GetSubsurfaceProfileDualSpecular(SubsurfaceProfileInt, Roughness, Opacity, LobeRoughness0, LobeRoughness1, LobeMix);
#else
// Disable dual lobe, as subsurface profile doesn't work with forward.
LobeRoughness0 = Roughness;
LobeRoughness1 = Roughness;
LobeMix = 0.f;
#endif
}
FDirectLighting SubsurfaceProfileBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
BxDFContext Context;
#if SHADING_PATH_MOBILE
InitMobile(Context, N, V, L, NoL);
#else
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Init( Context, N, V, L );
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
SphereMaxNoH( Context, AreaLight.SphereSinAlpha, true );
Context.NoV = saturate( abs( Context.NoV ) + 1e-5 );
uint SubsurfaceProfileId = ExtractSubsurfaceProfileInt(GBuffer);
half Opacity = GBuffer.CustomData.a;
half Roughness = GBuffer.Roughness;
half Lobe0Roughness = 0;
half Lobe1Roughness = 0;
half LobeMix = 0;
GetProfileDualSpecular(SubsurfaceProfileId, Roughness, Opacity, Lobe0Roughness, Lobe1Roughness, LobeMix);
half AverageRoughness = lerp(Lobe0Roughness, Lobe1Roughness, LobeMix);
// Take the average roughness instead of compute a separate energy term for each roughness
const FBxDFEnergyTerms EnergyTerms = ComputeGGXSpecEnergyTerms(AverageRoughness, Context.NoV, GBuffer.SpecularColor);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting Lighting;
#if SHADING_PATH_MOBILE
half Curvature = GBuffer.Curvature;
half UnClampedNoL = dot(GBuffer.WorldNormal, L);
half ShadowFactor = 1.0f - sqrt(Shadow.SurfaceShadow);
// Rotate the world normal based on the shadow value, it's just a experimental value
half UnClampedRotatedNoL = max(UnClampedNoL - max(2.0f * UnClampedNoL, 0.4f) * ShadowFactor, -1.0f);
half4 BurleyDiffuse = GetSSProfilePreIntegratedValue(SubsurfaceProfileId, UnClampedRotatedNoL, Curvature);
// asset specific color
half3 Tint = GetSubsurfaceProfileTexture(SSSS_TINT_SCALE_OFFSET, SubsurfaceProfileId).rgb;
// Needs to apply shadow at here, since the preintegrated value has already counted it, and we need to skip applying shadow outside.
Lighting.Diffuse = lerp(AreaLight.FalloffColor * (Falloff * NoL) * Shadow.SurfaceShadow, BurleyDiffuse.rgb, Tint) * Diffuse_Lambert(GBuffer.DiffuseColor);
#else
#if MATERIAL_ROUGHDIFFUSE
// Use Chan's diffuse model. It reduces flatness look and has better match, e.g., at the edge of human face skin when compared to GT.
const float3 DiffuseReflection = Diffuse_Chan(GBuffer.DiffuseColor, Pow4(GBuffer.Roughness), Context.NoV, NoL, Context.VoH, Context.NoH, GetAreaLightDiffuseMicroReflWeight(AreaLight));
#else
const float3 DiffuseReflection = Diffuse_Burley(GBuffer.DiffuseColor, GBuffer.Roughness, Context.NoV, NoL, Context.VoH);
#endif
Lighting.Diffuse = AreaLight.FalloffColor * (Falloff * NoL) * DiffuseReflection;
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
if (IsRectLight(AreaLight))
{
float3 Lobe0Specular = RectGGXApproxLTC(Lobe0Roughness, GBuffer.SpecularColor, N, V, AreaLight.Rect, AreaLight.Texture);
float3 Lobe1Specular = RectGGXApproxLTC(Lobe1Roughness, GBuffer.SpecularColor, N, V, AreaLight.Rect, AreaLight.Texture);
Lighting.Specular = lerp(Lobe0Specular, Lobe1Specular, LobeMix);
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
else
{
Lighting.Specular = AreaLight.FalloffColor * (Falloff * NoL) * DualSpecularGGX(AverageRoughness, Lobe0Roughness, Lobe1Roughness, LobeMix, GBuffer.SpecularColor, Context, NoL, AreaLight);
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Diffuse *= ComputeEnergyPreservation(EnergyTerms);
Lighting.Specular *= ComputeEnergyConservation(EnergyTerms);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
#if USE_TRANSMISSION
const uint ProfileId = ExtractSubsurfaceProfileInt(GBuffer);
FTransmissionProfileParams TransmissionParams = GetTransmissionProfileParams(ProfileId);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float Thickness = Shadow.TransmissionThickness;
Thickness = DecodeThickness(Thickness);
Thickness *= SSSS_MAX_TRANSMISSION_PROFILE_DISTANCE;
float3 Profile = GetTransmissionProfile(ProfileId, Thickness).rgb;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float3 RefracV = refract(V, -N, TransmissionParams.OneOverIOR);
float PhaseFunction = ApproximateHG( dot(-L, RefracV), TransmissionParams.ScatteringDistribution );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Transmission = AreaLight.FalloffColor * Profile * (Falloff * PhaseFunction); // TODO: This probably should also include cosine term (NoL)
#else // USE_TRANSMISSION
Lighting.Transmission = 0;
#endif // USE_TRANSMISSION
return Lighting;
}
FDirectLighting ClothBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
{
const float3 FuzzColor = ExtractSubsurfaceColor(GBuffer);
const float Cloth = saturate(GBuffer.CustomData.a);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
BxDFContext Context;
#if SHADING_PATH_MOBILE
InitMobile(Context, N, V, L, NoL);
#else
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Init( Context, N, V, L );
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
SphereMaxNoH( Context, AreaLight.SphereSinAlpha, true );
Context.NoV = saturate( abs( Context.NoV ) + 1e-5 );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float3 Spec1;
if(IsRectLight(AreaLight))
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Spec1 = RectGGXApproxLTC( GBuffer.Roughness, GBuffer.SpecularColor, N, V, AreaLight.Rect, AreaLight.Texture );
else
Spec1 = AreaLight.FalloffColor * (Falloff * NoL) * SpecularGGX( GBuffer.Roughness, GBuffer.SpecularColor, Context, NoL, AreaLight );
const FBxDFEnergyTerms EnergyTerms1 = ComputeGGXSpecEnergyTerms(GBuffer.Roughness, Context.NoV, GBuffer.SpecularColor);
Spec1 *= ComputeEnergyConservation(EnergyTerms1);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
// Cloth - Asperity Scattering - Inverse Beckmann Layer
float D2 = D_InvGGX( Pow4( GBuffer.Roughness ), Context.NoH );
float Vis2 = Vis_Cloth( Context.NoV, NoL );
#if SHADING_PATH_MOBILE
Vis2 = saturate(Vis2);
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float3 F2 = F_Schlick( FuzzColor, Context.VoH );
float3 Spec2 = AreaLight.FalloffColor * (Falloff * NoL) * (D2 * Vis2) * F2;
const FBxDFEnergyTermsA EnergyTerms2 = ComputeClothEnergyTermsA(GBuffer.Roughness, Context.NoV);
Spec2 *= ComputeEnergyConservation(EnergyTerms2);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting Lighting;
Lighting.Diffuse = AreaLight.FalloffColor * (Falloff * NoL) * Diffuse_Lambert( GBuffer.DiffuseColor );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Specular = lerp( Spec1, Spec2, Cloth );
Lighting.Transmission = 0;
Lighting.Diffuse *= lerp(ComputeEnergyPreservation(EnergyTerms1), ComputeEnergyPreservation(EnergyTerms2), Cloth);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return Lighting;
}
FDirectLighting SubsurfaceBxDF(FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
FDirectLighting Lighting = DefaultLitBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow);
half3 SubsurfaceColor = ExtractSubsurfaceColor(GBuffer);
half Opacity = GBuffer.CustomData.a;
// to get an effect when you see through the material
// hard coded pow constant
half InScatter = pow(saturate(dot(L, -V)), 12) * lerp(3, .1f, Opacity);
// Wrap around lighting,
// * /(PI*2) to be energy consistent (hack do get some view dependnt and light dependent effect)
// * Opacity of 0 gives no normal dependent lighting, Opacity of 1 gives strong normal contribution
// * Simplified version (with w=.5, n=1.5):
// half WrappedDiffuse = 2 * pow(saturate((dot(N, L) + w) / (1.0f + w)), n) * (n + 1) / (2 * (1 + w));
// NormalContribution = WrappedDiffuse * Opacity + 1 - Opacity;
const half WrappedDiffuse = pow(saturate(dot(N, L) * (1.f / 1.5f) + (0.5f / 1.5f)), 1.5f) * (2.5f / 1.5f);
const half NormalContribution = lerp(1.f, WrappedDiffuse, Opacity);
const half BackScatter = GBuffer.GBufferAO * NormalContribution / (PI * 2);
// Transmission
// * Emulate Beer-Lambert absorption by retrieving extinction coefficient from SubSurfaceColor. Subsurface is interpreted as a 'transmittance color'
// at a certain 'normalized' distance (SubSurfaceColorAsTransmittanceAtDistanceInMeters). This is a coarse approximation for getting hue-shiting.
// * TransmittedColor is computed for the 1-normalized distance, and then transformed back-and-forth in HSV space to preserving the luminance value
// of the original color, but getting hue shifting
const half3 ExtinctionCoefficients = TransmittanceToExtinction(SubsurfaceColor, View.SubSurfaceColorAsTransmittanceAtDistanceInMeters);
const half3 RawTransmittedColor = ExtinctionToTransmittance(ExtinctionCoefficients, 1.0f /*At 1 meters, as we use normalized units*/);
const half3 TransmittedColor = HSV_2_LinearRGB(half3(LinearRGB_2_HSV(RawTransmittedColor).xy, LinearRGB_2_HSV(SubsurfaceColor).z));
// lerp to never exceed 1 (energy conserving)
Lighting.Transmission = AreaLight.FalloffColor * (Falloff * lerp(BackScatter, 1, InScatter)) * lerp(TransmittedColor, SubsurfaceColor, Shadow.TransmissionThickness);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return Lighting;
}
FDirectLighting TwoSidedBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting Lighting = DefaultLitBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
half3 SubsurfaceColor = ExtractSubsurfaceColor(GBuffer);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
// http://blog.stevemcauley.com/2011/12/03/energy-conserving-wrapped-diffuse/
half Wrap = 0.5;
half WrapNoL = saturate( ( -dot(N, L) + Wrap ) / Square( 1 + Wrap ) );
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
// Scatter distribution
half VoL = dot(V, L);
#if SHADING_PATH_MOBILE
half Scatter = D_GGX_Mobile(0.6, saturate(-VoL));
#else
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float Scatter = D_GGX( 0.6*0.6, saturate( -VoL ) );
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Transmission = AreaLight.FalloffColor * (Falloff * WrapNoL * Scatter) * SubsurfaceColor;
return Lighting;
}
FDirectLighting EyeBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
{
#if IRIS_NORMAL
const float2 CausticNormalDelta = float2( GBuffer.StoredMetallic, GBuffer.StoredSpecular ) * 2 - (256.0/255.0);
const float2 IrisNormalDelta = float2( GBuffer.CustomData.y, GBuffer.CustomData.z ) * 2 - (256.0/255.0);
const float IrisMask = 1.0f - GBuffer.CustomData.w;
const float2 WorldNormalOct = UnitVectorToOctahedron( GBuffer.WorldNormal );
const float3 CausticNormal = OctahedronToUnitVector( WorldNormalOct + CausticNormalDelta );
const float3 IrisNormal = OctahedronToUnitVector( WorldNormalOct + IrisNormalDelta );
#else
const float3 IrisNormal = OctahedronToUnitVector( GBuffer.CustomData.yz * 2 - 1 );
const float IrisDistance = GBuffer.StoredMetallic;
const float IrisMask = 1.0f - GBuffer.CustomData.w;
// Blend in the negative intersection normal to create some concavity
// Not great as it ties the concavity to the convexity of the cornea surface
// No good justification for that. On the other hand, if we're just looking to
// introduce some concavity, this does the job.
const float3 CausticNormal = normalize(lerp(IrisNormal, -N, IrisMask*IrisDistance));
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
BxDFContext Context;
#if SHADING_PATH_MOBILE
InitMobile(Context, N, V, L, NoL);
#else
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Init( Context, N, V, L );
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
SphereMaxNoH( Context, AreaLight.SphereSinAlpha, false );
Context.NoV = saturate( abs( Context.NoV ) + 1e-5 );
const bool bIsRect = IsRectLight(AreaLight);
Context.VoH = bIsRect ? Context.NoV : Context.VoH;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
// F_Schlick
float F0 = GBuffer.Specular * 0.08;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
float Fc = Pow5( 1 - Context.VoH );
float F = Fc + (1 - Fc) * F0;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
const FBxDFEnergyTerms EnergyTerms = ComputeGGXSpecEnergyTerms(GBuffer.Roughness, Context.NoV, F0);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting Lighting;
if( bIsRect )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
{
Lighting.Specular = RectGGXApproxLTC( GBuffer.Roughness, F0, N, V, AreaLight.Rect, AreaLight.Texture );
}
else
{
float a2 = Pow4( GBuffer.Roughness );
float Energy = EnergyNormalization( a2, Context.VoH, AreaLight );
// Generalized microfacet specular
float Vis = Vis_SmithJointApprox(a2, Context.NoV, NoL);
#if SHADING_PATH_MOBILE
half D = D_GGX_Mobile(GBuffer.Roughness, Context.NoH) * Energy;
Vis = saturate(Vis);
#else
float D = D_GGX(a2, Context.NoH) * Energy;
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Specular = AreaLight.FalloffColor * (Falloff * NoL) * D * Vis * F;
}
float IrisNoL = saturate( dot( IrisNormal, L ) );
float Power = lerp( 12, 1, IrisNoL );
float Caustic = 0.8 + 0.2 * ( Power + 1 ) * pow( saturate( dot( CausticNormal, L ) ), Power );
float Iris = IrisNoL * Caustic;
float Sclera = NoL;
Lighting.Specular *= ComputeEnergyConservation(EnergyTerms);
#if USE_ENERGY_CONSERVATION
const float3 EnergyPreservation = ComputeEnergyPreservation(EnergyTerms);
#else
// Preserve old behavior when energy conservation is disabled
const float EnergyPreservation = 1.0f - F;
#endif
Lighting.Diffuse = 0;
Lighting.Transmission = AreaLight.FalloffColor * ( Falloff * lerp( Sclera, Iris, IrisMask ) * EnergyPreservation ) * Diffuse_Lambert( GBuffer.DiffuseColor );
#if SHADING_PATH_MOBILE
uint SubsurfaceProfileId = ExtractSubsurfaceProfileInt(GBuffer);
half Curvature = GBuffer.Curvature;
half ShadowFactor = 1.0f - sqrt(Shadow.SurfaceShadow);
// Rotate the world normal based on the shadow value, it's just a experimental value
half UnClampedNoL = dot(GBuffer.WorldNormal, L);
half UnClampedRotatedNoL = max(UnClampedNoL - max(2.0f * UnClampedNoL, 0.4f) * ShadowFactor, -1.0f);
half4 BurleyDiffuse = GetSSProfilePreIntegratedValue(SubsurfaceProfileId, UnClampedRotatedNoL, Curvature);
// Rotate the world normal based on the shadow value, it's just a experimental value
half UnClampedIrisNoL = dot(IrisNormal, L);
half UnClampedRotatedIrisNoL = max(UnClampedIrisNoL - max(2.0f * UnClampedIrisNoL, 0.4f) * ShadowFactor, -1.0f);
half4 IrisBurleyDiffuse = GetSSProfilePreIntegratedValue(SubsurfaceProfileId, UnClampedRotatedIrisNoL * Caustic, Curvature);
// asset specific color
half3 Tint = GetSubsurfaceProfileTexture(SSSS_TINT_SCALE_OFFSET, SubsurfaceProfileId).rgb;
// Needs to apply shadow at here, since the preintegrated value has already counted it, and we need to skip applying shadow outside.
Lighting.Transmission = lerp(Lighting.Transmission * Shadow.SurfaceShadow, Falloff * lerp(BurleyDiffuse.rgb, IrisBurleyDiffuse.rgb, IrisMask) * Diffuse_Lambert(GBuffer.DiffuseColor), Tint);
#endif
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return Lighting;
}
FDirectLighting PreintegratedSkinBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting Lighting = DefaultLitBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
half3 SubsurfaceColor = ExtractSubsurfaceColor(GBuffer);
half Opacity = GBuffer.CustomData.a;
half3 PreintegratedBRDF = Texture2DSampleLevel(View.PreIntegratedBRDF, View.PreIntegratedBRDFSampler, float2(saturate(dot(N, L) * .5 + .5), 1 - Opacity), 0).rgb;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
Lighting.Transmission = AreaLight.FalloffColor * Falloff * PreintegratedBRDF * SubsurfaceColor;
return Lighting;
}
FDirectLighting IntegrateBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float Falloff, half NoL, FAreaLight AreaLight, FShadowTerms Shadow )
{
switch( GBuffer.ShadingModelID )
{
case SHADINGMODELID_DEFAULT_LIT:
case SHADINGMODELID_SINGLELAYERWATER:
case SHADINGMODELID_THIN_TRANSLUCENT:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return DefaultLitBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_SUBSURFACE:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return SubsurfaceBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_PREINTEGRATED_SKIN:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return PreintegratedSkinBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_CLEAR_COAT:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return ClearCoatBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_SUBSURFACE_PROFILE:
return SubsurfaceProfileBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_TWOSIDED_FOLIAGE:
return TwoSidedBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_HAIR:
return HairBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_CLOTH:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return ClothBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
case SHADINGMODELID_EYE:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return EyeBxDF( GBuffer, N, V, L, Falloff, NoL, AreaLight, Shadow );
default:
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return (FDirectLighting)0;
}
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FDirectLighting EvaluateBxDF( FGBufferData GBuffer, half3 N, half3 V, half3 L, float NoL, FShadowTerms Shadow )
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
FAreaLight AreaLight;
AreaLight.SphereSinAlpha = 0;
AreaLight.SphereSinAlphaSoft = 0;
AreaLight.LineCosSubtended = 1;
AreaLight.FalloffColor = 1;
AreaLight.Rect = (FRect)0;
AreaLight.IsRectAndDiffuseMicroReflWeight = 0;
AreaLight.Texture = InitRectTexture();
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3870267 by Arne.Schober DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources) Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary Change 3872507 by Arne.Schober Back out changelist 3870267 Change 3988916 by Marcin.Undak Quail/Linux compilation fix #rb none #codereview arciel.rekman Change 4042277 by Rolando.Caloca DR - Clear UBs between PSOs on D3D to help track down not setting resources Change 4042297 by Arne.Schober DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass) #jira UE-42135 Change 4042404 by Jian.Ru Fix a race condition when RT is disabled and then re-enabled #jira Change 4042437 by Richard.Wallis Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's. Note: New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding. Update: Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates. #jira UE-49526 Change 4042602 by Guillaume.Abadie Adds support for alpha channel in DOF. Change 4042603 by Guillaume.Abadie Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them. Change 4042671 by Guillaume.Abadie Massages DOF's shader code for HLSLCC. Change 4042772 by Mark.Satterthwaite Expose the MTLComputePipelineState's label string. Change 4043013 by Juan.Canada Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues. #jira UE-49290 Change 4043171 by Rolando.Caloca DR - Workaround crash on hlslcc Change 4043182 by Uriel.Doyon Fixed skylight issues when using pre-exposure. Improved IndirectIrradiance gbuffer encoding when using pre-exposure. Change 4043452 by Mark.Satterthwaite Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive. Change 4044732 by Richard.Wallis Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method. #jira UE-57549 Change 4044741 by Guillaume.Abadie Fixes a couple of regressions in DOF when using temporal upsampling. Change 4044753 by Guillaume.Abadie Fixes a bug in WaveBroadcastIntrinsics.ush Change 4045010 by Guillaume.Abadie Creates TM-DepthOfField in QAGame to test DOF. Change 4045417 by Jian.Ru Prevent recursive flush #jira Change 4045923 by Mark.Satterthwaite Further insulate private plugin usage within MetalRHI. Change 4046006 by Mark.Satterthwaite Simplify dependency on the private module and hope it now builds properly. Change 4046612 by Mark.Satterthwaite Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work. #jira UE-55234 Change 4047504 by Mark.Satterthwaite Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms. Change 4048765 by Uriel.Doyon Fixed compilation issue from CL 4048308 Change 4048776 by Guillaume.Abadie Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF. Change 4049059 by Mark.Satterthwaite Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore. Change 4050290 by Mark.Satterthwaite Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit. Change 4050822 by Mark.Satterthwaite Partial custom counter support - still has bugs. Change 4051210 by Guillaume.Abadie Dumps PermutationID of shader when shader compile worker crashes. Change 4051652 by Guillaume.Abadie Optimises DOF's reduce with wave broadcast instrinsics. Change 4051839 by Mark.Satterthwaite Tiny fix to changing custom counters. Change 4052553 by Guillaume.Abadie Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass. Change 4052611 by Guillaume.Abadie Fixes a crashes in light shaft. Change 4052916 by Mark.Satterthwaite Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window. Change 4053111 by Rolando.Caloca DR - hlslcc - RequiresNegateDDY() Change 4053402 by Mark.Satterthwaite Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement. Change 4053454 by Mark.Satterthwaite More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error. Change 4053765 by Guillaume.Abadie Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change. Change 4053911 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering) Change 4053915 by Marcus.Wassmer Attempt to fix what looks like some unity build rearrangement issue. Change 4053916 by Marcus.Wassmer Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL Change 4054642 by Rolando.Caloca DR - Fix SCW not showing correct callstack/exception info on crashes Change 4054661 by Mark.Satterthwaite Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors. #jira UE-58670 Change 4054780 by Guillaume.Abadie Cuts number of shader permutation for DOF's gather pass from 138 to 41. Change 4054950 by Rolando.Caloca DR - vk - Fix negated ddy Change 4055019 by Guillaume.Abadie Cuts number of shader permutation for tonemapper from ~2k to 64. Change 4055144 by Guillaume.Abadie Adds an ensure to catch when there is too many permutations on a global shader. Change 4055240 by Krzysztof.Narkowicz Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer. #jira FORT-79981 Change 4055323 by Rolando.Caloca DR - Fix GLSL-based platforms Change 4055387 by Guillaume.Abadie Adds a point mirror between foreground and background bokeh to be phisically accurate. Change 4055403 by Rolando.Caloca DR - Fix uninitialized var causing crash Change 4055709 by Guillaume.Abadie Fixes a crash in SunTemple. Change 4055771 by Guillaume.Abadie Fixes DOF's reduce pass being compiled for SM4. #jira UE-58714 Change 4055876 by Rolando.Caloca DR - hlslcc - Fix crash during loop analysis on empty if() blocks Change 4056026 by Rolando.Caloca DR - Enable volumetric fog on Vulkan Change 4056272 by Guillaume.Abadie Exposes new DOF settings in post process settings. Change 4056460 by Brian.Karis Fix uniform buffer assert. Change 4057151 by Guillaume.Abadie Fixes a bug in DOF's temporal stability gathering pass. Change 4057220 by Guillaume.Abadie Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo. AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer. #jira UE-53997 Change 4057587 by Rolando.Caloca DR - Enable Diaphgram DOF on Vulkan Change 4058022 by Guillaume.Abadie Exposes new DOF settings to UCineCameraComponent Change 4058136 by Guillaume.Abadie Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback. Change 4058338 by Jostin.Bilyeu Checking in new map for verifying Mobile rendering features in conjunction with TAAU Change 4058352 by Matt.Collins Wrapped NSString for lambda capture. Change 4058500 by Rolando.Caloca DR - Fix bad normals & tangents on GL mobile #jira UE-57769 Change 4058723 by Rolando.Caloca DR - vk - Split device pipeline cache off generic cache file Change 4058782 by Mark.Satterthwaite Rebuild Mac hlslcc for 4055876 Change 4058791 by Mark.Satterthwaite Force MetalBackend to pick up new hlslcc. Change 4058840 by Guillaume.Abadie Fixes a bug in DOF's scalability setting groups Change 4058928 by Daniel.Wright Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array Change 4059141 by Marcus.Wassmer PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster) Change 4059227 by Brian.Karis Fix for simple forward Change 4059269 by Marcus.Wassmer Update test screenshots to account for minroughness changes from devrectlight Change 4059478 by Mark.Satterthwaite It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable. #jira UE-58773 Change 4059870 by Guillaume.Abadie Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)). #jira UE-58850 Change 4060324 by Rolando.Caloca DR - Very minor render pass Change 4060328 by Rolando.Caloca DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0 Change 4060461 by Jostin.Bilyeu Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU Change 4060698 by Marcus.Wassmer Merging xbox compile fix Change 4060930 by Marcus.Wassmer Fix android compile Change 4060971 by Mark.Satterthwaite Some missing #defines to guard functions that require an external plugin. #jira UE-58910 Change 4061104 by Guillaume.Abadie Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014. #jira UE-58900 Change 4061364 by Jostin.Bilyeu updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc. Change 4061743 by Mark.Satterthwaite Fix another build error for iOS. #jira UE-58827 Change 4061753 by Arne.Schober DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache #jira UE-58525 Change 4062236 by Mark.Satterthwaite AppleTV doesn't appear to support the set*Bytes APIs in Metal. #jira UE-58580 Change 4062320 by Guillaume.Abadie Enables bokeh simulation on scattered bokeh on Epic post process settings. Change 4062402 by Guillaume.Abadie Phiscally animates the rotation of the bokeh as aperture changes. Change 4062587 by Mark.Satterthwaite Fix another Ocean compile error. #jira N/A Change 4062811 by Marcus.Wassmer Only do newton iterations for area lights Fixes a host of AMD-only bugs Change 4063174 by Marcus.Wassmer Workaround shipping build compile error for all clang platforms. Change 4063760 by Guillaume.Abadie Changes the default number of diaphragm blades to 7. Change 4063992 by Marcus.Wassmer Fix DX12 crash when depthboundstest not available. Change 4064233 by Rolando.Caloca DR - Proper fix for GL changes related to tangents #jira UE-58948 Change 4064323 by Uriel.Doyon Increase the max number of uavs to 16 #jira 58898 Change 4064428 by Guillaume.Abadie Fixes a crashes on XB1 when doing async SSAO. Change 4064525 by Uriel.Doyon Better logic for depth bound support in d3d12. #jira 58956 Change 4064694 by Jian.Ru Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables Change 4064873 by Guillaume.Abadie Fixes wrong resource transitions in DOF's reduce passes. Change 4064956 by Guillaume.Abadie Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs. Change 4065215 by Arne.Schober DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied." In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated. Change 4065312 by Guillaume.Abadie Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect() Change 4070361 by Guillaume.Abadie Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy. Change 4070778 by Marcus.Wassmer Fix bad merge Change 4071337 by Rolando.Caloca DR - vk - Do not spam log Change 4048308 by Uriel.Doyon Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 : - Fixed d3derror when resizing the window in multi-gpu. - Fixed d3d12 checks when exiting in multi-gpu. - Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere. - RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding. - Removed of IRHIComputeContext::GetContextForGPUMask(). - Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase. - FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one. - Command lists now have a GPU mask set at creation time. - Support for immediate command list GPU mask. - Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack. - Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask". - Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU=" - Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr } - Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine. - Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering. [CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
return IntegrateBxDF( GBuffer, N, V, L, 1, NoL, AreaLight, Shadow );
}