Skip to content
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

DOTS minimal picking support (Graphics part) #6071

Merged
merged 108 commits into from Nov 15, 2021

Conversation

vincent-breysse
Copy link
Contributor

@vincent-breysse vincent-breysse commented Oct 19, 2021

Purpose of this PR

This PR implements URP/HDRP minimal picking support for DOTS. This is intended to be on parity with Hybrid Renderer V2 picking.

The basic idea here is to define a new shader for URP/HDRP and use that only when rendering the BatchRendererGroup objects for the picking (renders object instanceIDs in a tiny 4x4 texture, then read it back from CPU).
Of course, it does not fully work with any kind of vertex deformation (including tessellation) and decals.
To put it simply: Picking "hitbox" = Mesh transformed by LocalToWorld matrix

This PR does not have any impact on the current GameObject picking.


Filtered diff for URP/HDRP reviewers here


Testing status

  • HDRP validated by @TomasKiniulis
  • URP validated by @cinight
  • Yamato HDRP green except for some unrelated failing tests
  • Yamato URP green except for some unrelated failing tests

Note to reviewers

There are some changes included in the ShaderGraph and VFX Graph packages, but they are not mine. Those changes are the result of an auto-upgrade performed when opening the HybridURP/HDRP test projects with recent trunk.

vincent-breysse and others added 30 commits September 3, 2021 16:20
# Conflicts:
#	com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl
#	com.unity.render-pipelines.high-definition/Editor/Material/Decal/ShaderGraph/DecalSubTarget.cs
#	com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDShaderPasses.cs
#	com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs
#	com.unity.render-pipelines.universal/ShaderLibrary/UniversalDOTSInstancing.hlsl
#	com.unity.shadergraph/Editor/Data/Graphs/ColorShaderProperty.cs
#	com.unity.shadergraph/Editor/Data/Nodes/MeshDeformation/LinearBlendSkinningNode.cs
#	com.unity.shadergraph/Editor/Generation/Processors/Generator.cs
#	com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs
… error fixes. This commit doesn't compile

This reverts commit 33124a1.
Copy link
Collaborator

@sebastienlagarde sebastienlagarde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, so for HDRP there is something wrong, or maybe I do'nt understand the PR.

The current code don't work with vertex deformation or tessellation in SG or depth offset.
And overall don't work with SG.

I am not sure to understand why you need to add this file BRGPicking.hlsl with vert and frag definition.

My understanding is what you really want is simply to reuse the current scene picking pass we have declare everywhere, and simply adjust a bit the code with #ifdef DOTS_INSTANCING
to call this specific function LoadObjectToWorldMatrixBRGPicking();

this function is the main change from what I get.
Let's setup a call or a chat will be easier to see how to solve that (or if I haven't understand the purpose)

@sebastienlagarde
Copy link
Collaborator

Tessellated object picking is only partially implemented. The picking "hitbox" is basically the same as the non-tessellated >version of the object, which means that trying to pick displaced triangles does not work.

ok I should have read the description, but same problem is true for vertex deformation. Let's talk can be easily fixed.

# Conflicts:
#	com.unity.render-pipelines.high-definition/CHANGELOG.md
Base automatically changed from graphics/hrnext to master November 8, 2021 10:19
@JussiKnuuttila JussiKnuuttila requested a review from a team as a code owner November 8, 2021 10:19
# Conflicts:
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/CheckerBoardSG.shadergraph
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/CheckerBoardSG.shadergraph.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/ElipseSG.shadergraph
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/ElipseSG.shadergraph.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/M_Mirror.mat
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/M_Mirror.mat.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/PolygonSG.shadergraph
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/PolygonSG.shadergraph.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/RectangleSG.shadergraph
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/112_Reflection_AlternativeSGNodes/RectangleSG.shadergraph.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/5013_PathTracing_ShadowFlags.unity
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/5013_PathTracing_ShadowFlags.unity.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/712_DirectionalShadow_Matte/M_Mirror.mat.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/713_PointShadow_Matte/M_Transparent.mat
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/713_PointShadow_Matte/M_Transparent.mat.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/714_AreaShadow_Matte.unity
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/714_AreaShadow_Matte.unity.meta
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/ShadowData/Shader Graphs_SG_ShadowMatteNone.mat
#	TestProjects/HDRP_DXR_Tests/Assets/Scenes/ShadowData/Shader Graphs_SG_ShadowMatteNone.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/BRGGameObjects.unity
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/BRGGameObjects.unity.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/Lit.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/Lit.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/LitTessellation.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/LitTessellation.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/RenderBRG.cs
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/Unlit.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BRGGameObjects/Unlit.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BatchRenderGroupRaw/BRGMaterial.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BatchRenderGroupRaw/BRGMaterial.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/BatchRenderGroupRaw/BatchRenderGroupRaw.unity.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestBuiltinProperties.unity.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestBuiltinProperties/SubsceneSHAb.unity.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestBuiltinProperties/SubsceneSHAg.unity.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestBuiltinProperties/SubsceneSHAr.unity.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestDuplicateProperties/DuplicateTestMaterial.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestHDRPLitProperties/Sky and Fog Settings Profile For Motion Blur.asset.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestHDRPLitProperties/Sky and Fog Settings Profile.asset.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestHDRPShaders/LitEmissive.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestHDRPShaders/LitEmissive.mat.meta
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestHDRPShaders/LitTessellationEmissive.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestHybridEntitiesConversion/ReflectingMaterial.mat
#	TestProjects/HDRP_HybridTests/Assets/SampleScenes/TestShaderGraphOverrides/HDRPLit.mat
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Common/3DObjects/HumanEyeModelScaled.fbx.meta
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2309_Shadow_Mask_Dir_Fade.unity
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2309_Shadow_Mask_Dir_Fade/LightingData.asset.meta
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2309_Shadow_Mask_Dir_Fade/Lightmap-0_comp_dir.png.meta
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2309_Shadow_Mask_Dir_Fade/Lightmap-0_comp_light.exr.meta
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2309_Shadow_Mask_Dir_Fade/Lightmap-0_comp_shadowmask.png.meta
#	TestProjects/HDRP_Tests/Assets/GraphicTests/Scenes/2x_Lighting/2309_Shadow_Mask_Dir_FadeSettings.lighting
#	TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/2309_Shadow_Mask_Dir_Fade.png.meta
#	TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/2309_Shadow_Mask_Dir_Fade.png.meta
#	TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/2309_Shadow_Mask_Dir_Fade.png.meta
#	TestProjects/HDRP_Tests/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D12/None/2309_Shadow_Mask_Dir_Fade.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/BRGGameObjects.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/BatchRenderGroupRaw.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/Android/Vulkan/None/BRGGameObjects.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/Android/Vulkan/None/BatchRenderGroupRaw.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/TestBuiltinProperties.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/TestDisabledEntities.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/TestDuplicateProperties.png.meta
#	TestProjects/UniversalHybridTest/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/TestFarAwayFromOrigin.png.meta
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BRGGameObjects/BRGGameObjects.unity.meta
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BRGGameObjects/Lit.mat
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BRGGameObjects/RenderBRG.cs
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BRGGameObjects/TestMaterial1.mat
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BRGGameObjects/TestMaterial2.mat
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BRGGameObjects/Unlit.mat
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/BatchRenderGroupRaw/BatchRenderGroupRaw.unity.meta
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/TestBuiltinProperties/Default URP Material.mat
#	TestProjects/UniversalHybridTest/Assets/SampleScenes/TestLayerParams/Plane.mat
#	TestProjects/VisualEffectGraph_HDRP/Assets/AllTests/VFXTests/GraphicsTests/38_SortingKeys/38_LargeSystem.vfx.meta
#	TestProjects/VisualEffectGraph_HDRP/Assets/AllTests/VFXTests/GraphicsTests/38_SortingKeys/38_SortingKeys.unity
#	TestProjects/VisualEffectGraph_HDRP/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/38_SortingKeys.png.meta
#	com.unity.render-pipelines.high-definition/CHANGELOG.md
#	com.unity.testing.visualeffectgraph/Scenes/019_CustomSimulate.unity
Copy link
Collaborator

@phi-lira phi-lira left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved with some comments.

@phi-lira phi-lira mentioned this pull request Nov 10, 2021
10 tasks
@vincent-breysse vincent-breysse merged commit 45d8b21 into master Nov 15, 2021
@vincent-breysse vincent-breysse deleted the graphics/hrnext-picking branch November 15, 2021 17:50
@vincent-breysse vincent-breysse changed the title DOTS 1.0 minimal picking support (Graphics part) DOTS minimal picking support (Graphics part) Jan 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
8 participants