-
Notifications
You must be signed in to change notification settings - Fork 839
Screen Coordinates Override (Re-Submission) #7231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…enne/upgrade-test
…enne/upgrade-test
…enne/upgrade-test
…enne/upgrade-test
…enne/upgrade-test
…enne/upgrade-test
… into cluster-display/etienne/upgrade-test
# Conflicts: # com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs
…enne/upgrade-test # Conflicts: # com.unity.render-pipelines.universal/Runtime/RenderTargetBufferSystem.cs
This reverts commit 99fc51f.
…enne/upgrade-test # Conflicts: # com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs
…enne/upgrade-test # Conflicts: # com.unity.render-pipelines.high-definition/CHANGELOG.md
…enne/upgrade-test # Conflicts: # com.unity.render-pipelines.core/CHANGELOG.md
…enne/upgrade-test
…enne/upgrade-test # Conflicts: # TestProjects/HDRP_Tests/ProjectSettings/EditorBuildSettings.asset # com.unity.render-pipelines.high-definition/CHANGELOG.md
…enne/upgrade-test # Conflicts: # TestProjects/HDRP_Tests/Assets/HDRPDefaultResources/HDRenderPipelineGlobalSettings.asset # com.unity.render-pipelines.core/CHANGELOG.md # com.unity.render-pipelines.high-definition/CHANGELOG.md # com.unity.render-pipelines.universal/CHANGELOG.md # com.unity.render-pipelines.universal/Runtime/Passes/CapturePass.cs
…enne/upgrade-test
….com/Unity-Technologies/Graphics into cluster-display/etienne/upgrade-test
Hi! This comment will help you figure out which jobs to run before merging your PR. The suggestions are dynamic based on what files you have changed. HDRP URP SRP Core Depending on the scope of your PR, you may need to run more jobs than what has been suggested. Please speak to your lead or a Graphics SDET (#devs-graphics-automation) if you are unsure. |
It appears that you made a non-draft PR! |
…enne/upgrade-test
…enne/upgrade-test
…enne/upgrade-test
submitted on private github |
Purpose of this PR
Re-submission of #6597 which got reverted due to test failures
This PR introduces Screen Coordinates Override (SCO for the remainder of this document) for both URP and HDRP. SCO
provides a transformation of screen space coordinates when evaluating screen space effects.
We have found it useful in virtual production scenarios.
The first use case for this is Cluster Display (formerly known as Cluster Rendering), that is, distributed rendering. It allows for post effects such as vignette to be properly rendered at the scale of a grid of displays.
Another use case is the implementation of Lens Distortion when replicating the distortion incurred by a physical lens. Since pixels near the edges may be pushed inwards of the viewport by the distortion, we need to render the scene with overscan. (By overscan, we mean rendering to an expanded pixel surface, later cropped out to its original size before being
presented.) To preserve the distortion's aspect in the cropped image, we need to apply a transform to screen space coordinates when the lens distortion is being computed.
The first implementation of this technique was part of the first Cluster Display effort, and was then called Cluster
Display Space or Global Screen Space. A high level description of the technique can be found in
this document and this one.
The switch to the Screen Coordinates Override terminology is justified by the fact that the technique is relevant outside of
Cluster Display. As illustrated above by our Lens Distortion example.
In the changes we regularly see the introduction of 2 fields:
screenCoordScaleBias
holds the scale and bias used to transform screen space coordinates.screenSizeOverride
holds the screen size (and its reciprocal) to be used in conjunction with transformed screenspace coordinates.
Changes Overview
SRP Core
ScreenCoordOverrideUtils
-> basic utilities to manage the shader keyword. Main point is to avoid the duplication ofthe shader keyword.
ScreenCoordOverride.hlsl
-> shader code and macros to perform the screen space coordinates conversion.HDRP
FrameSettings
-> addScreenCoordOverride
andAsymmetricProjection
settings.AsymmetricProjection
allows theactivation of the asymmetric projection code path even when XR is not enabled. This is useful for Cluster Display.
HDAdditionalCameraData
-> add theScreenSizeOverride
andScreenCoordScaleBias
fields.ShaderVariablesGlobal
-> add theScreenSizeOverride
andScreenCoordScaleBias
fields.HDCamera
-> update global shader variables.HDRenderPipeline
-> activates the shader keyword.HDRenderPipeline.PostProcess
-> activates the shader keyword based on frame settings.UberPost.compute
-> add SCO support.URP
ScriptableRenderer
-> fix a swap buffer issue (firstfixed here)
PostProcessUtils
-> init random generation using frame count so that it's consistent across machines in a ClusterDisplay scenario.
UniversalAdditionalCameraData
-> add theScreenSizeOverride
andScreenCoordScaleBias
fields and featureactivation.
UniversalRenderPipeline
-> populate additional camera data.UniversalRenderPipelineCore
-> add fields and associated shader properties.UniversalRenderer
-> related to swap buffer fix.Input.hlsl
-> add theScreenSizeOverride
andScreenCoordScaleBias
fields.FinalPost.shader
-> add SCO support.UberPost.shader
-> add SCO support.CapturePass
-> fixed color buffer access (before, post effects would not be captured)UniversalRenderPipelineGlobalSettings
-> add shader stripping option (SerializedUniversalRenderPipelineGlobalSettings
,UniversalRenderPipelineGlobalSettingsUI.Drawers
andUniversalRenderPipelineGlobalSettingsUI.Skin
were modified to reflect this change)ShaderPreprocessor
-> implement shader stripping optionTesting status
We added the following graphics tests. We test custom post processes and passes since we want to enable users to use the
feature.
HDRP_Tests
UniversalGraphicsTest_PostPro
We are also in the process of developing Cluster Display and test this feature as part of our work. We are also adding
graphics test to that package as well.
Comments to reviewers
@sandy-carter-unity regarding the swap buffer bug we discussed in late december.
@phi-lira feel free to assign relevant members from your team.
@sebastienlagarde feel free to assign relevant members from your team.
Let me know how CHANGELOG update works, I assume I shouldn't add entries below past releases.