diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/ArtisticNodes.png index f3d9c44a6fa..803d14d120a 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/OpenGLES3/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf39ef05d06c40d51e18abf5aadabaf06aaf293af7da0eb2161eadf03c0546d3 -size 1587761 +oid sha256:29df7deb23080ecbda415f7393f4cc14836f3547310ebc6fe5a189dff53a26a4 +size 1591060 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/ArtisticNodes.png index f3d9c44a6fa..c8929921f22 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf39ef05d06c40d51e18abf5aadabaf06aaf293af7da0eb2161eadf03c0546d3 -size 1587761 +oid sha256:5a8bf62503be280340af915e41f622512b9d6885d4d0213769426e938a02869e +size 1591014 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/InputNodes.png index 65c6097584d..5bdff123d48 100755 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/Android/Vulkan/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1be9e7434d0029042f8885d5d692a1dcb8a34acdb429e7607c02fcd2e6c9a5ed -size 554279 +oid sha256:5ab8c05c9955091c06d3148d657a7bc6bc13a02b50ca8bdec30024189d41ece3 +size 554445 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/ArtisticNodes.png index eac25f9324d..bdc5ac55a66 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:35326cfbf076c876bfa8265fef3799bd6d6e4ba3aa5fcfe2471972dd0b6fa528 -size 1600298 +oid sha256:f3768ae1c3a64cb6b16a7c801b94942528d15937d0f853a19cad521e5c0c7664 +size 1574723 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/InputNodes.png index 6ee93c9d615..68b19109418 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/IPhonePlayer/Metal/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9b32cd33b3afc983b73c42c859ee5fb5fa0cfab591af9d2f8f6f67fbedc0ac72 -size 568452 +oid sha256:b11744554b5c1fddba4d0b57fa5ca40cd7e6cfdbcfffe97cfe072872737ec591 +size 568672 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/ArtisticNodes.png index f5eeae58f73..ca10706dc11 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6447f70a529c98ce2eea2fb0cab9a18cb79965b1b85ba2cacb6bc66d7dc11e54 -size 1575229 +oid sha256:7ef02f3ad0c4e26fbcafec560969fe9e6e59fd27957f851e36a6327f9b0b9bd7 +size 1552796 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/InputNodes.png index 23cdb5ce3ef..64c46dd464b 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxEditor/Vulkan/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae8dafc3dbef8b8ae9b9f6eaefbe598f0c7e773abc112cd69609452eb91d3bc0 -size 623857 +oid sha256:a08453fc98d58e6b50dfd808119911ec3e25f8278ea2fb33c7d95ed082e35d6e +size 550974 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/ArtisticNodes.png index f5eeae58f73..a16ab9c8b94 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6447f70a529c98ce2eea2fb0cab9a18cb79965b1b85ba2cacb6bc66d7dc11e54 -size 1575229 +oid sha256:a117291bb5cb82415549d30d46809f1ca3f793bd89ba4b6c25bf63e4f3a303b6 +size 1552797 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/InputNodes.png index 23cdb5ce3ef..64c46dd464b 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/LinuxPlayer/Vulkan/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae8dafc3dbef8b8ae9b9f6eaefbe598f0c7e773abc112cd69609452eb91d3bc0 -size 623857 +oid sha256:a08453fc98d58e6b50dfd808119911ec3e25f8278ea2fb33c7d95ed082e35d6e +size 550974 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/ArtisticNodes.png index 6bebc0ebd31..6c149032e21 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:441b31eaf13eda08870b330cf7b989e6652010714f271671ae8e3c28cf0f0f4c -size 1583766 +oid sha256:44b0af4c8f7dc7d71188c40a24176839a152051c8f8762d755f854e4396eb3d7 +size 1598495 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/InputNodes.png index a993614ea3d..542aada6602 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/OSXEditor/Metal/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:868136a7ccb5eac394ae5f7800a37c4db94dd4659797a5011c9983155c62a372 -size 560579 +oid sha256:c9b58b967c66cb715e818451f7fe79d11b5de86194afb9b845da1af7116b45f6 +size 560834 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/ArtisticNodes.png index f014f57fbff..98105715c39 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb3bbae9a501ebcdb0c438cdc5228be3a5cef2cfaacd99ea53e7b65cf0777170 -size 1575227 +oid sha256:cc125a15259ebbcdd82747fb495dc28b8573e7cc2d1e9de3e607847407e79949 +size 1552791 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/InputNodes.png index 23cdb5ce3ef..4bb821f216b 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsEditor/Direct3D11/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae8dafc3dbef8b8ae9b9f6eaefbe598f0c7e773abc112cd69609452eb91d3bc0 -size 623857 +oid sha256:c0b55b1a624f2d4aa6fcd146aab7d38e2df2dd027dc33aaf89af37a8be7f1d7a +size 550974 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/ArtisticNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/ArtisticNodes.png index f014f57fbff..98105715c39 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/ArtisticNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/ArtisticNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb3bbae9a501ebcdb0c438cdc5228be3a5cef2cfaacd99ea53e7b65cf0777170 -size 1575227 +oid sha256:cc125a15259ebbcdd82747fb495dc28b8573e7cc2d1e9de3e607847407e79949 +size 1552791 diff --git a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/InputNodes.png b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/InputNodes.png index 23cdb5ce3ef..ef1d1ab643b 100644 --- a/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/InputNodes.png +++ b/TestProjects/ShaderGraph/Assets/ReferenceImages/Linear/WindowsPlayer/Direct3D11/None/InputNodes.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ae8dafc3dbef8b8ae9b9f6eaefbe598f0c7e773abc112cd69609452eb91d3bc0 -size 623857 +oid sha256:74473be81fc84073c9d503ca32a450542472099dd4f53b79a60f9f7cf3c6b7d8 +size 550934 diff --git a/TestProjects/ShaderGraph/Assets/Scenes/InputNodes.unity b/TestProjects/ShaderGraph/Assets/Scenes/InputNodes.unity index e3ebb48d162..41711574211 100644 --- a/TestProjects/ShaderGraph/Assets/Scenes/InputNodes.unity +++ b/TestProjects/ShaderGraph/Assets/Scenes/InputNodes.unity @@ -217,6 +217,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -3, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 16 @@ -250,6 +251,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 14 @@ -346,6 +348,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 28 @@ -505,6 +508,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -6, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 14 @@ -538,6 +542,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 5 @@ -634,6 +639,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -6, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 5 @@ -730,6 +736,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 4 @@ -826,6 +833,7 @@ Transform: m_LocalRotation: {x: -0.0000015744266, y: -0.00095836265, z: -0.00018746467, w: 0.9999995} m_LocalPosition: {x: -1, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 26 @@ -922,6 +930,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 3, y: 0, z: 2.0000129} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 10 @@ -1015,6 +1024,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 303484558} - {fileID: 242909117} @@ -1119,6 +1129,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -3, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 11 @@ -1152,6 +1163,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -7, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1584544957} m_RootOrder: 4 @@ -1248,6 +1260,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 0, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 8 @@ -1344,6 +1357,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: -1, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 9 @@ -1440,6 +1454,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 10 @@ -1599,6 +1614,7 @@ Transform: m_LocalRotation: {x: -0.4055798, y: 0.4055798, z: -0.579228, w: -0.579228} m_LocalPosition: {x: -4, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 1 @@ -1629,6 +1645,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1545791078} - {fileID: 2087670890} @@ -1661,6 +1678,7 @@ Transform: - {fileID: 17182306} - {fileID: 1467200801} - {fileID: 620689884} + - {fileID: 1477714186} m_Father: {fileID: 134715868} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1693,6 +1711,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -4, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 7 @@ -1789,6 +1808,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 12 @@ -1885,6 +1905,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 20 @@ -1978,6 +1999,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1909678461} - {fileID: 238486952} @@ -2031,6 +2053,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 5 @@ -2179,6 +2202,7 @@ Transform: m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: 0.85, z: 0.5} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -2231,6 +2255,7 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 1 m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 m_RenderPostProcessing: 0 m_Antialiasing: 0 m_AntialiasingQuality: 2 @@ -2267,6 +2292,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 414435820} - {fileID: 510972450} @@ -2316,6 +2342,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 1 @@ -2412,6 +2439,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 6 @@ -2508,6 +2536,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 3, y: 0, z: 4.000012} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 0 @@ -2604,6 +2633,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: -1, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 14 @@ -2700,6 +2730,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 9 @@ -2796,6 +2827,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000029504295} m_LocalPosition: {x: -2.9999962, y: 0, z: 1.0000052} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1427803695} m_RootOrder: 3 @@ -2892,6 +2924,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 11 @@ -2985,6 +3018,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2076468047} - {fileID: 371422989} @@ -3032,6 +3066,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000029504295} m_LocalPosition: {x: -5, y: 0, z: 1.9999957} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1427803695} m_RootOrder: 2 @@ -3128,6 +3163,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 2, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 1 @@ -3224,6 +3260,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068} m_LocalPosition: {x: -6, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1584544957} m_RootOrder: 1 @@ -3320,6 +3357,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 7 @@ -3416,6 +3454,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 6 @@ -3512,6 +3551,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 2, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 11 @@ -3608,6 +3648,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000029504295} m_LocalPosition: {x: -3.9999962, y: 0, z: 1.000001} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1427803695} m_RootOrder: 4 @@ -3704,6 +3745,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 8 @@ -3797,6 +3839,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 840653958} - {fileID: 978955574} @@ -3850,6 +3893,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -6, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 30 @@ -3947,6 +3991,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 6 @@ -4118,6 +4163,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -4, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 12 @@ -4151,6 +4197,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -4, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 3 @@ -4247,6 +4294,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 17 @@ -4343,6 +4391,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 17 @@ -4502,6 +4551,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -5, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 6 @@ -4535,6 +4585,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 1, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 2 @@ -4694,6 +4745,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -7, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 10 @@ -4727,6 +4779,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000029504295} m_LocalPosition: {x: -4, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1427803695} m_RootOrder: 1 @@ -4823,6 +4876,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 4 @@ -4919,6 +4973,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -7, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 4 @@ -5015,6 +5070,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 3, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 0 @@ -5111,6 +5167,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -3, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 2 @@ -5207,6 +5264,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 2 @@ -5303,6 +5361,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -7, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 0 @@ -5400,6 +5459,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 2 @@ -5508,6 +5568,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 3, y: 0, z: 3.0000129} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 5 @@ -5604,6 +5665,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 3.01, y: 0, z: -2.02} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 1 @@ -5700,6 +5762,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: -1, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 4 @@ -5796,6 +5859,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -3, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 10 @@ -5892,6 +5956,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 21 @@ -5988,6 +6053,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 3 @@ -6147,6 +6213,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -5, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 13 @@ -6180,6 +6247,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 7 @@ -6276,6 +6344,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -3, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 9 @@ -6372,6 +6441,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000029504295} m_LocalPosition: {x: -3.0000005, y: 0, z: 2.0000052} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1427803695} m_RootOrder: 0 @@ -6468,6 +6538,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -7, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1584544957} m_RootOrder: 0 @@ -6564,6 +6635,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 0, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 3 @@ -6660,6 +6732,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 1, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 7 @@ -6756,6 +6829,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 16 @@ -6852,6 +6926,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 15 @@ -6948,6 +7023,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 25 @@ -7044,6 +7120,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 3 @@ -7203,6 +7280,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -7, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 15 @@ -7236,6 +7314,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 13 @@ -7332,6 +7411,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 14 @@ -7428,6 +7508,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -5, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 2 @@ -7524,6 +7605,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 4 @@ -7620,6 +7702,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 10 @@ -7716,6 +7799,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 18 @@ -7812,6 +7896,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 3, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 18 @@ -7908,6 +7993,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 27 @@ -8001,6 +8087,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1114000234} - {fileID: 801207485} @@ -8039,6 +8126,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 3, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 24 @@ -8135,6 +8223,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: 1, w: -0.00000035762784} m_LocalPosition: {x: 4, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 5 @@ -8231,6 +8320,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 29 @@ -8327,6 +8417,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 23 @@ -8423,6 +8514,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 9 @@ -8582,10 +8674,108 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -5, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 18 m_LocalEulerAnglesHint: {x: -90, y: 180, z: -90} +--- !u!1 &1477714185 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1477714186} + - component: {fileID: 1477714189} + - component: {fileID: 1477714188} + - component: {fileID: 1477714187} + m_Layer: 0 + m_Name: ScreenPosition_Accuracy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1477714186 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477714185} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -8, y: 0, z: -1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 242909117} + m_RootOrder: 31 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1477714187 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477714185} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: dd8e14c86ce50514b815fb92b6b9190b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!135 &1477714188 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477714185} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1477714189 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477714185} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1491550964 GameObject: m_ObjectHideFlags: 0 @@ -8615,6 +8805,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 19 @@ -8774,6 +8965,7 @@ Transform: m_LocalRotation: {x: -0.6532815, y: 0.6532815, z: -0.27059805, w: -0.27059805} m_LocalPosition: {x: -5, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 2 @@ -8807,6 +8999,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 11 @@ -8903,6 +9096,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -5, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 0 @@ -8996,6 +9190,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1126344841} - {fileID: 513781236} @@ -9035,6 +9230,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 2, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 6 @@ -9131,6 +9327,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -5, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 6 @@ -9290,6 +9487,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -4, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 5 @@ -9323,6 +9521,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 13 @@ -9419,6 +9618,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 15 @@ -9546,6 +9746,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.69, y: -3.59, z: 0.8800001} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 @@ -9579,6 +9780,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 11 @@ -9738,6 +9940,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -7, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 9 @@ -9771,6 +9974,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 8 @@ -9867,6 +10071,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 19 @@ -10026,6 +10231,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -3, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 4 @@ -10059,6 +10265,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 9 @@ -10155,6 +10362,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 13 @@ -10251,6 +10459,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 1, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 12 @@ -10410,6 +10619,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -6, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 3 @@ -10506,6 +10716,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -6, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 7 @@ -10602,6 +10813,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -6, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 19 @@ -10635,6 +10847,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -6, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1584544957} m_RootOrder: 5 @@ -10731,6 +10944,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 22 @@ -10827,6 +11041,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 12 @@ -10986,6 +11201,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -7, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 8 @@ -11019,6 +11235,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 7 @@ -11115,6 +11332,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -8, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1584544957} m_RootOrder: 3 @@ -11211,6 +11429,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 3 @@ -11370,6 +11589,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -3, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 0 @@ -11403,6 +11623,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: -2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 8 @@ -11499,6 +11720,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 0, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 13 @@ -11592,6 +11814,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 871278865} - {fileID: 2006496219} @@ -11636,6 +11859,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 16 @@ -11732,6 +11956,7 @@ Transform: m_LocalRotation: {x: -0, y: 1, z: -0, w: 0.0000026822088} m_LocalPosition: {x: 3, y: 0, z: 1.0000129} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 366823147} m_RootOrder: 15 @@ -11828,6 +12053,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -5, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1584544957} m_RootOrder: 2 @@ -11924,6 +12150,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -6, y: 0, z: 3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 1 @@ -12020,6 +12247,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -2, y: 0, z: 2} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1967227534} m_RootOrder: 8 @@ -12116,6 +12344,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: 4} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 10 @@ -12275,6 +12504,7 @@ Transform: m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} m_LocalPosition: {x: -4, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 303484558} m_RootOrder: 17 @@ -12308,6 +12538,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 501824731} m_RootOrder: 0 @@ -12404,6 +12635,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -4, y: 0, z: -3} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 242909117} m_RootOrder: 1 @@ -12500,6 +12732,7 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: -1} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 596523079} m_RootOrder: 12 diff --git a/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.mat b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.mat new file mode 100644 index 00000000000..f7ace87d806 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.mat @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8274189426898252675 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: ScreenPosition_Accuracy + m_Shader: {fileID: -6465566751694194690, guid: f0f1927d8b1bd904baff3c624199fb25, + type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _QueueControl: 0 + - _QueueOffset: 0 + m_Colors: [] + m_BuildTextureStacks: [] diff --git a/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.mat.meta b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.mat.meta new file mode 100644 index 00000000000..229140f8299 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd8e14c86ce50514b815fb92b6b9190b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.shadergraph b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.shadergraph new file mode 100644 index 00000000000..405aed012a7 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.shadergraph @@ -0,0 +1,1397 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "b0410e238c5f4bb187064a9534f38905", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "45206056c9d84dab8a51e01f32ca0819" + } + ], + "m_Nodes": [ + { + "m_Id": "f781a5d74722441f97b0edc39cf2b526" + }, + { + "m_Id": "46e0efc1bfce480cbbd429965f13cde3" + }, + { + "m_Id": "fccc76ab377d478abc7115e1594551e7" + }, + { + "m_Id": "1320efc89f8247629430ed5d5839c099" + }, + { + "m_Id": "07ddfab130f24bd381c9a66dee7dbe2f" + }, + { + "m_Id": "468487e98ad2487e885dd9cb8196b94e" + }, + { + "m_Id": "843b5882fabe49cda4d4e52db102cdff" + }, + { + "m_Id": "8973d85ce911454ea7ff2153fae26bc0" + }, + { + "m_Id": "23eda949ffba4684b52497a3408307a5" + }, + { + "m_Id": "65e165382d1c4d6dbe49f2ee2eb6b626" + }, + { + "m_Id": "136dad595ad448d2a427654e51262fc8" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "07ddfab130f24bd381c9a66dee7dbe2f" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "468487e98ad2487e885dd9cb8196b94e" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "136dad595ad448d2a427654e51262fc8" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "23eda949ffba4684b52497a3408307a5" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "23eda949ffba4684b52497a3408307a5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "07ddfab130f24bd381c9a66dee7dbe2f" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "468487e98ad2487e885dd9cb8196b94e" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "843b5882fabe49cda4d4e52db102cdff" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "65e165382d1c4d6dbe49f2ee2eb6b626" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "136dad595ad448d2a427654e51262fc8" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "65e165382d1c4d6dbe49f2ee2eb6b626" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "136dad595ad448d2a427654e51262fc8" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "843b5882fabe49cda4d4e52db102cdff" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "1320efc89f8247629430ed5d5839c099" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "8973d85ce911454ea7ff2153fae26bc0" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "23eda949ffba4684b52497a3408307a5" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 425.0, + "y": 10.0 + }, + "m_Blocks": [ + { + "m_Id": "f781a5d74722441f97b0edc39cf2b526" + }, + { + "m_Id": "46e0efc1bfce480cbbd429965f13cde3" + }, + { + "m_Id": "fccc76ab377d478abc7115e1594551e7" + } + ] + }, + "m_FragmentContext": { + "m_Position": { + "x": 425.0, + "y": 210.0 + }, + "m_Blocks": [ + { + "m_Id": "1320efc89f8247629430ed5d5839c099" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"fileID\":10202,\"guid\":\"0000000000000000e000000000000000\",\"type\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_ActiveTargets": [ + { + "m_Id": "cb62694c26e8464493e44d7705407c4e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.FractionNode", + "m_ObjectId": "07ddfab130f24bd381c9a66dee7dbe2f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Fraction", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -657.9999389648438, + "y": 234.00001525878907, + "width": 208.0, + "height": 278.0 + } + }, + "m_Slots": [ + { + "m_Id": "e138fd74026548d48fd6c9f8a1380b68" + }, + { + "m_Id": "513cdcb916dc49e2a4f880fb2d15523d" + } + ], + "synonyms": [ + "remainder" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "1320efc89f8247629430ed5d5839c099", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e5353113626f4b3e8d51181ddc1d485d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CombineNode", + "m_ObjectId": "136dad595ad448d2a427654e51262fc8", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Combine", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1217.0, + "y": 514.0, + "width": 208.00006103515626, + "height": 350.0 + } + }, + "m_Slots": [ + { + "m_Id": "49bec57945e14917982eaf956c242466" + }, + { + "m_Id": "4528fefb8c0e4ac3a32e5d33d3edb4df" + }, + { + "m_Id": "3b0fbe01c3494d7dad63faaa3d1fdbc8" + }, + { + "m_Id": "7ba04124934c41a4a13f518e04f31dd8" + }, + { + "m_Id": "1e631bdeb66c4a139682d2ed234bd8c8" + }, + { + "m_Id": "644bcdf3406647f0abd55c43a277ad3a" + }, + { + "m_Id": "13ddfc2114754245bbed9a0fe25edfe9" + } + ], + "synonyms": [ + "append" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "13ddfc2114754245bbed9a0fe25edfe9", + "m_Id": 6, + "m_DisplayName": "RG", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RG", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "19a0e7b428114ce187d8c337e5502afa", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "1e631bdeb66c4a139682d2ed234bd8c8", + "m_Id": 4, + "m_DisplayName": "RGBA", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGBA", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "23eda949ffba4684b52497a3408307a5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -916.0, + "y": 234.00001525878907, + "width": 208.00006103515626, + "height": 302.00006103515627 + } + }, + "m_Slots": [ + { + "m_Id": "888e82f06a6c4297b0a79b06dbb0047b" + }, + { + "m_Id": "c762d92d4155465b816d647e7bfb6458" + }, + { + "m_Id": "19a0e7b428114ce187d8c337e5502afa" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.GradientInputMaterialSlot", + "m_ObjectId": "354f05699f5145c7b48e739ea08f519d", + "m_Id": 0, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "serializedVersion": "2", + "key0": { + "r": 64.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "key1": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "key2": { + "r": 0.0, + "g": 64.0, + "b": 0.0, + "a": 0.0 + }, + "key3": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key4": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key5": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key6": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key7": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "ctime0": 0, + "ctime1": 32768, + "ctime2": 65535, + "ctime3": 0, + "ctime4": 0, + "ctime5": 0, + "ctime6": 0, + "ctime7": 0, + "atime0": 0, + "atime1": 65535, + "atime2": 0, + "atime3": 0, + "atime4": 0, + "atime5": 0, + "atime6": 0, + "atime7": 0, + "m_Mode": 0, + "m_NumColorKeys": 3, + "m_NumAlphaKeys": 2 + }, + "m_DefaultValue": { + "serializedVersion": "2", + "key0": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "key1": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + }, + "key2": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key3": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key4": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key5": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key6": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "key7": { + "r": 0.0, + "g": 0.0, + "b": 0.0, + "a": 0.0 + }, + "ctime0": 0, + "ctime1": 65535, + "ctime2": 0, + "ctime3": 0, + "ctime4": 0, + "ctime5": 0, + "ctime6": 0, + "ctime7": 0, + "atime0": 0, + "atime1": 65535, + "atime2": 0, + "atime3": 0, + "atime4": 0, + "atime5": 0, + "atime6": 0, + "atime7": 0, + "m_Mode": 0, + "m_NumColorKeys": 2, + "m_NumAlphaKeys": 2 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "3b0fbe01c3494d7dad63faaa3d1fdbc8", + "m_Id": 2, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "42a3ba8e284f42a7a883caf95810c025", + "m_Id": 1, + "m_DisplayName": "Time", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Time", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "45206056c9d84dab8a51e01f32ca0819", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "4528fefb8c0e4ac3a32e5d33d3edb4df", + "m_Id": 1, + "m_DisplayName": "G", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "G", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.SampleGradient", + "m_ObjectId": "468487e98ad2487e885dd9cb8196b94e", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Gradient", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -309.99993896484377, + "y": 210.0, + "width": 207.9999237060547, + "height": 302.0 + } + }, + "m_Slots": [ + { + "m_Id": "354f05699f5145c7b48e739ea08f519d" + }, + { + "m_Id": "42a3ba8e284f42a7a883caf95810c025" + }, + { + "m_Id": "94d0d675ad8a46bfb9ce65a0e6f8d62b" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "46e0efc1bfce480cbbd429965f13cde3", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Normal", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "cc772edbd74d4fde86bdb26d3e49e5e2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Normal" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "49bec57945e14917982eaf956c242466", + "m_Id": 0, + "m_DisplayName": "R", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "R", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.PositionMaterialSlot", + "m_ObjectId": "4ed684f9bd5d4ccba7a9407164244b63", + "m_Id": 0, + "m_DisplayName": "Position", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Position", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "513cdcb916dc49e2a4f880fb2d15523d", + "m_Id": 1, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", + "m_ObjectId": "644bcdf3406647f0abd55c43a277ad3a", + "m_Id": 5, + "m_DisplayName": "RGB", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "RGB", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ScreenNode", + "m_ObjectId": "65e165382d1c4d6dbe49f2ee2eb6b626", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Screen", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1182.0, + "y": 539.0000610351563, + "width": 88.0, + "height": 100.99993896484375 + } + }, + "m_Slots": [ + { + "m_Id": "f2a0a2ec8be843ba9916c205dba900c6" + }, + { + "m_Id": "8269318096044f44b64fbffab71ece74" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "7ad1d2d197744dbf917c00dceebc0d2e", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "7ba04124934c41a4a13f518e04f31dd8", + "m_Id": 3, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "8269318096044f44b64fbffab71ece74", + "m_Id": 1, + "m_DisplayName": "Height", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.AddNode", + "m_ObjectId": "843b5882fabe49cda4d4e52db102cdff", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Add", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 165.9999542236328, + "y": 210.00003051757813, + "width": 208.00010681152345, + "height": 302.0000305175781 + } + }, + "m_Slots": [ + { + "m_Id": "db50c183d98b41b182ee48be65315bf8" + }, + { + "m_Id": "7ad1d2d197744dbf917c00dceebc0d2e" + }, + { + "m_Id": "de508b88cf9a496d8cef8eb5947994aa" + } + ], + "synonyms": [ + "addition", + "sum", + "plus" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "888e82f06a6c4297b0a79b06dbb0047b", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ScreenPositionNode", + "m_ObjectId": "8973d85ce911454ea7ff2153fae26bc0", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Screen Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -1334.0, + "y": 168.0000457763672, + "width": 208.0, + "height": 313.0 + } + }, + "m_Slots": [ + { + "m_Id": "c354a0d8ca2243a48f286eaa5685a8e2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_ScreenSpaceType": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "94d0d675ad8a46bfb9ce65a0e6f8d62b", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUnlitSubTarget", + "m_ObjectId": "c0124f07caf847dda14ebd311f6084be" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "c354a0d8ca2243a48f286eaa5685a8e2", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c762d92d4155465b816d647e7bfb6458", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "cb62694c26e8464493e44d7705407c4e", + "m_ActiveSubTarget": { + "m_Id": "c0124f07caf847dda14ebd311f6084be" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_CustomEditorGUI": "" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.NormalMaterialSlot", + "m_ObjectId": "cc772edbd74d4fde86bdb26d3e49e5e2", + "m_Id": 0, + "m_DisplayName": "Normal", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Normal", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "db50c183d98b41b182ee48be65315bf8", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "de508b88cf9a496d8cef8eb5947994aa", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e138fd74026548d48fd6c9f8a1380b68", + "m_Id": 0, + "m_DisplayName": "In", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "In", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "e5353113626f4b3e8d51181ddc1d485d", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "f2a0a2ec8be843ba9916c205dba900c6", + "m_Id": 0, + "m_DisplayName": "Width", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Width", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "f781a5d74722441f97b0edc39cf2b526", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Position", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "4ed684f9bd5d4ccba7a9407164244b63" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Position" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.TangentMaterialSlot", + "m_ObjectId": "fa4659e0d6ea45269abbcf5f8a49bb14", + "m_Id": 0, + "m_DisplayName": "Tangent", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tangent", + "m_StageCapability": 1, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "m_Labels": [], + "m_Space": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "fccc76ab377d478abc7115e1594551e7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "VertexDescription.Tangent", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "fa4659e0d6ea45269abbcf5f8a49bb14" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "VertexDescription.Tangent" +} + diff --git a/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.shadergraph.meta b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.shadergraph.meta new file mode 100644 index 00000000000..77e7da94743 --- /dev/null +++ b/TestProjects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/Input/Geometry/ScreenPosition_Accuracy.shadergraph.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f0f1927d8b1bd904baff3c624199fb25 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDStructFields.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDStructFields.cs index 6905a7864da..e23ee5790b8 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDStructFields.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDStructFields.cs @@ -98,6 +98,8 @@ public struct FragInputs subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor positionPredisplacementRWS = new FieldDescriptor(FragInputs.name, "positionPredisplacementRWS", "", ShaderValueType.Float3, subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor positionPixel = new FieldDescriptor(FragInputs.name, "positionPixel", "", ShaderValueType.Float2, + subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor tangentToWorld = new FieldDescriptor(FragInputs.name, "tangentToWorld", "", ShaderValueType.Float4, subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor texCoord0 = new FieldDescriptor(FragInputs.name, "texCoord0", "", ShaderValueType.Float4, diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs index c431a0279b8..6b51b25328b 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDTarget.cs @@ -527,7 +527,11 @@ static class CoreFieldDependencies new FieldDependency(StructFields.VertexDescriptionInputs.TangentSpaceViewDirection, StructFields.VertexDescriptionInputs.WorldSpaceBiTangent), new FieldDependency(StructFields.VertexDescriptionInputs.TangentSpaceViewDirection, StructFields.VertexDescriptionInputs.WorldSpaceNormal), + // vertex shader: screen position reads from world space position, then used to calculate NDC and Pixel position new FieldDependency(StructFields.VertexDescriptionInputs.ScreenPosition, StructFields.VertexDescriptionInputs.WorldSpacePosition), + new FieldDependency(StructFields.VertexDescriptionInputs.NDCPosition, StructFields.VertexDescriptionInputs.ScreenPosition), + new FieldDependency(StructFields.VertexDescriptionInputs.PixelPosition, StructFields.VertexDescriptionInputs.NDCPosition), + new FieldDependency(StructFields.VertexDescriptionInputs.uv0, HDStructFields.AttributesMesh.uv0), new FieldDependency(StructFields.VertexDescriptionInputs.uv1, HDStructFields.AttributesMesh.uv1), new FieldDependency(StructFields.VertexDescriptionInputs.uv2, HDStructFields.AttributesMesh.uv2), @@ -586,7 +590,11 @@ static class CoreFieldDependencies new FieldDependency(StructFields.SurfaceDescriptionInputs.TangentSpaceViewDirection, StructFields.SurfaceDescriptionInputs.WorldSpaceBiTangent), new FieldDependency(StructFields.SurfaceDescriptionInputs.TangentSpaceViewDirection, StructFields.SurfaceDescriptionInputs.WorldSpaceNormal), + // pixel shader: pixel position read from vpos, then used to calculate NDC position. Screen position calculated separately from world space position + new FieldDependency(StructFields.SurfaceDescriptionInputs.PixelPosition, HDStructFields.FragInputs.positionPixel), + new FieldDependency(StructFields.SurfaceDescriptionInputs.NDCPosition, StructFields.SurfaceDescriptionInputs.PixelPosition), new FieldDependency(StructFields.SurfaceDescriptionInputs.ScreenPosition, StructFields.SurfaceDescriptionInputs.WorldSpacePosition), + new FieldDependency(StructFields.SurfaceDescriptionInputs.uv0, HDStructFields.FragInputs.texCoord0), new FieldDependency(StructFields.SurfaceDescriptionInputs.uv1, HDStructFields.FragInputs.texCoord1), new FieldDependency(StructFields.SurfaceDescriptionInputs.uv2, HDStructFields.FragInputs.texCoord2), diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/CustomPassNodes.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/CustomPassNodes.cs index 306f8cec09a..fbbc26ba84d 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/CustomPassNodes.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/CustomPassNodes.cs @@ -11,7 +11,7 @@ namespace UnityEditor.Rendering.HighDefinition { [SRPFilter(typeof(HDRenderPipeline))] [Title("Input", "High Definition Render Pipeline", "Custom Color Buffer")] - class CustomColorBufferNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireScreenPosition + class CustomColorBufferNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition { public CustomColorBufferNode() { @@ -51,12 +51,19 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine($"$precision4 {GetVariableNameForSlot(kColorOutputSlotId)} = SampleCustomColor({uv}.xy);"); } - public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => true; + public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresScreenPosition(stageCapability) ?? false; + + public bool RequiresNDCPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresNDCPosition(stageCapability) ?? false; + + public bool RequiresPixelPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresPixelPosition(stageCapability) ?? false; } [SRPFilter(typeof(HDRenderPipeline))] [Title("Input", "High Definition Render Pipeline", "Custom Depth Buffer")] - class CustomDepthBufferNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireScreenPosition + class CustomDepthBufferNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition { public CustomDepthBufferNode() { @@ -120,6 +127,13 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine($"$precision {GetVariableNameForSlot(kDepthOutputSlotId)} = {depthValue};"); } - public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => true; + public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresScreenPosition(stageCapability) ?? false; + + public bool RequiresNDCPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresNDCPosition(stageCapability) ?? false; + + public bool RequiresPixelPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresPixelPosition(stageCapability) ?? false; } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/HDSceneColorNode.cs b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/HDSceneColorNode.cs index 06a3713a497..8c19fe210d7 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/HDSceneColorNode.cs +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Nodes/HDSceneColorNode.cs @@ -12,7 +12,7 @@ namespace UnityEditor.Rendering.HighDefinition [SRPFilter(typeof(HDRenderPipeline))] [Title("Input", "High Definition Render Pipeline", "HD Scene Color")] [FormerName("UnityEditor.Experimental.Rendering.HDPipeline.HDSceneColorNode")] - class HDSceneColorNode : AbstractMaterialNode, IGeneratesBodyCode, IGeneratesFunction, IMayRequireCameraOpaqueTexture, IMayRequireScreenPosition + class HDSceneColorNode : AbstractMaterialNode, IGeneratesBodyCode, IGeneratesFunction, IMayRequireCameraOpaqueTexture, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition { public HDSceneColorNode() { @@ -112,9 +112,14 @@ public bool RequiresCameraOpaqueTexture(ShaderStageCapability stageCapability) return true; } - public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) - { - return true; - } + public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresScreenPosition(stageCapability) ?? false; + + public bool RequiresNDCPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresNDCPosition(stageCapability) ?? false; + + public bool RequiresPixelPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) => + FindSlot(kUvInputSlotId)?.RequiresPixelPosition(stageCapability) ?? false; + } } diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl index 1f1a6b81f7c..0e3159b457d 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Pixel.template.hlsl @@ -34,6 +34,8 @@ SurfaceDescriptionInputs FragInputsToSurfaceDescriptionInputs(FragInputs input, $SurfaceDescriptionInputs.ViewSpacePositionPredisplacement: output.ViewSpacePositionPredisplacement = TransformWorldToView(input.positionPredisplacementRWS); $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: output.TangentSpacePositionPredisplacement = float3(0.0f, 0.0f, 0.0f); $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement: output.AbsoluteWorldSpacePositionPredisplacement = GetAbsolutePositionWS(input.positionPredisplacementRWS); + $SurfaceDescriptionInputs.PixelPosition: output.PixelPosition = input.positionPixel.xy; + $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy; $SurfaceDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(input.positionRWS), _ProjectionParams.x); $SurfaceDescriptionInputs.uv0: output.uv0 = input.texCoord0; $SurfaceDescriptionInputs.uv1: output.uv1 = input.texCoord1; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Tessellation.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Tessellation.template.hlsl index c72f674844e..fef0d4de422 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Tessellation.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Tessellation.template.hlsl @@ -86,6 +86,8 @@ VertexDescriptionInputs VaryingsMeshToDSToVertexDescriptionInputs(VaryingsMeshTo $VertexDescriptionInputs.TangentSpaceViewDirection: float3x3 tangentSpaceTransform = float3x3(output.WorldSpaceTangent, output.WorldSpaceBiTangent, output.WorldSpaceNormal); $VertexDescriptionInputs.TangentSpaceViewDirection: output.TangentSpaceViewDirection = TransformWorldToTangent(GetWorldSpaceNormalizeViewDir(input.positionRWS), tangentSpaceTransform); $VertexDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(input.positionRWS), _ProjectionParams.x); + $VertexDescriptionInputs.NDCPosition: output.NDCPosition = output.ScreenPosition.xy / output.ScreenPosition.w; + $VertexDescriptionInputs.PixelPosition: output.PixelPosition = output.NDCPosition.xy * _ScreenParams.xy; $VertexDescriptionInputs.uv0: output.uv0 = input.texCoord0; $VertexDescriptionInputs.uv1: output.uv1 = input.texCoord1; $VertexDescriptionInputs.uv2: output.uv2 = input.texCoord2; diff --git a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Vertex.template.hlsl b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Vertex.template.hlsl index cb215f11a90..81342ebe22e 100644 --- a/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Vertex.template.hlsl +++ b/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/Templates/Vertex.template.hlsl @@ -32,6 +32,8 @@ VertexDescriptionInputs AttributesMeshToVertexDescriptionInputs(AttributesMesh i $VertexDescriptionInputs.TangentSpaceViewDirection: float3x3 tangentSpaceTransform = float3x3(output.WorldSpaceTangent,output.WorldSpaceBiTangent,output.WorldSpaceNormal); $VertexDescriptionInputs.TangentSpaceViewDirection: output.TangentSpaceViewDirection = TransformWorldToTangent(output.WorldSpaceViewDirection, tangentSpaceTransform); $VertexDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(output.WorldSpacePosition), _ProjectionParams.x); + $VertexDescriptionInputs.NDCPosition: output.NDCPosition = output.ScreenPosition.xy / output.ScreenPosition.w; + $VertexDescriptionInputs.PixelPosition: output.PixelPosition = output.NDCPosition.xy * _ScreenParams.xy; $VertexDescriptionInputs.uv0: output.uv0 = input.uv0; $VertexDescriptionInputs.uv1: output.uv1 = input.uv1; $VertexDescriptionInputs.uv2: output.uv2 = input.uv2; @@ -109,6 +111,7 @@ FragInputs BuildFragInputs(VaryingsMeshToPS input) output.positionSS = input.positionCS; // input.positionCS is SV_Position $FragInputs.positionRWS: output.positionRWS = input.positionRWS; + $FragInputs.positionPixel: output.positionPixel = input.positionCS.xy; // NOTE: this is not actually in clip space, it is the VPOS pixel coordinate value $FragInputs.positionPredisplacementRWS: output.positionPredisplacementRWS = input.positionPredisplacementRWS; $FragInputs.tangentToWorld: output.tangentToWorld = BuildTangentToWorld(input.tangentWS, input.normalWS); $FragInputs.texCoord0: output.texCoord0 = input.texCoord0; diff --git a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl index e40b13719b9..60eb4231673 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/ShaderPass/FragInputs.hlsl @@ -13,6 +13,7 @@ struct FragInputs float4 positionSS; // In case depth offset is use, positionRWS.w is equal to depth offset float3 positionRWS; // Relative camera space position float3 positionPredisplacementRWS; // Relative camera space position + float2 positionPixel; // Pixel position (VPOS) float4 texCoord0; float4 texCoord1; float4 texCoord2; diff --git a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Templates/SharedCode.template.hlsl b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Templates/SharedCode.template.hlsl index 1c6677908fa..ccada955348 100644 --- a/com.unity.render-pipelines.universal/Editor/ShaderGraph/Templates/SharedCode.template.hlsl +++ b/com.unity.render-pipelines.universal/Editor/ShaderGraph/Templates/SharedCode.template.hlsl @@ -54,6 +54,8 @@ SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: output.TangentSpacePositionPredisplacement = float3(0.0f, 0.0f, 0.0f); $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement:output.AbsoluteWorldSpacePositionPredisplacement = GetAbsolutePositionWS(input.positionWS); $SurfaceDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(input.positionWS), _ProjectionParams.x); + $SurfaceDescriptionInputs.PixelPosition: output.PixelPosition = input.positionCS.xy; + $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy; $SurfaceDescriptionInputs.uv0: output.uv0 = input.texCoord0; $SurfaceDescriptionInputs.uv1: output.uv1 = input.texCoord1; $SurfaceDescriptionInputs.uv2: output.uv2 = input.texCoord2; diff --git a/com.unity.shadergraph/CHANGELOG.md b/com.unity.shadergraph/CHANGELOG.md index d299eb45e46..6414023f154 100644 --- a/com.unity.shadergraph/CHANGELOG.md +++ b/com.unity.shadergraph/CHANGELOG.md @@ -23,6 +23,7 @@ The version number for this package has increased due to a version update of a r - Added more inputs to the Parallax Occlusion Mapping node to handle non-uniformly scaled UVs such as HDRP/Lit POM [1347008]. - Fixed the wrong scaling of the main preview window [1356719] (https://issuetracker.unity3d.com/product/unity/issues/guid/1356719/) - Fixed an issue where ShaderGraph "view shader" commands were opening in individual windows, and blocking Unity from closing [1367188] + - Improved screenspace position accuracy in the fragment shader by using VPOS [1352662] (https://issuetracker.unity3d.com/issues/shadergraph-dither-node-results-in-artifacts-when-far-from-origin-caused-by-screen-position-breaking-down) ## [12.0.0] - 2021-01-11 diff --git a/com.unity.shadergraph/Editor/Data/Graphs/ScreenPositionMaterialSlot.cs b/com.unity.shadergraph/Editor/Data/Graphs/ScreenPositionMaterialSlot.cs index 29963a4ad8a..10673d1b7d9 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/ScreenPositionMaterialSlot.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/ScreenPositionMaterialSlot.cs @@ -7,7 +7,7 @@ namespace UnityEditor.ShaderGraph { [Serializable] - class ScreenPositionMaterialSlot : Vector4MaterialSlot, IMayRequireScreenPosition + class ScreenPositionMaterialSlot : Vector4MaterialSlot, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition { [SerializeField] ScreenSpaceType m_ScreenSpaceType; @@ -42,7 +42,15 @@ public override string GetDefaultValue(GenerationMode generationMode) public bool RequiresScreenPosition(ShaderStageCapability stageCapability) { - return !isConnected; + return !isConnected && screenSpaceType.RequiresScreenPosition(); + } + public bool RequiresNDCPosition(ShaderStageCapability stageCapability) + { + return !isConnected && screenSpaceType.RequiresNDCPosition(); + } + public bool RequiresPixelPosition(ShaderStageCapability stageCapability) + { + return !isConnected && screenSpaceType.RequiresPixelPosition(); } public override void CopyValuesFrom(MaterialSlot foundSlot) diff --git a/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs b/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs index 5285fd13001..95e5ee32087 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/ShaderGraphRequirements.cs @@ -16,6 +16,8 @@ public struct ShaderGraphRequirements [SerializeField] NeededCoordinateSpace m_RequiresPosition; [SerializeField] NeededCoordinateSpace m_RequiresPositionPredisplacement; [SerializeField] bool m_RequiresScreenPosition; + [SerializeField] bool m_RequiresNDCPosition; + [SerializeField] bool m_RequiresPixelPosition; [SerializeField] bool m_RequiresVertexColor; [SerializeField] bool m_RequiresFaceSign; [SerializeField] List m_RequiresMeshUVs; @@ -85,6 +87,18 @@ public bool requiresScreenPosition internal set { m_RequiresScreenPosition = value; } } + public bool requiresNDCPosition + { + get { return m_RequiresNDCPosition; } + internal set { m_RequiresNDCPosition = value; } + } + + public bool requiresPixelPosition + { + get { return m_RequiresPixelPosition; } + internal set { m_RequiresPixelPosition = value; } + } + public bool requiresVertexColor { get { return m_RequiresVertexColor; } @@ -152,6 +166,8 @@ internal ShaderGraphRequirements Union(ShaderGraphRequirements other) newReqs.m_RequiresPosition = other.m_RequiresPosition | m_RequiresPosition; newReqs.m_RequiresPositionPredisplacement = other.m_RequiresPositionPredisplacement | m_RequiresPositionPredisplacement; newReqs.m_RequiresScreenPosition = other.m_RequiresScreenPosition | m_RequiresScreenPosition; + newReqs.m_RequiresNDCPosition = other.m_RequiresNDCPosition | m_RequiresNDCPosition; + newReqs.m_RequiresPixelPosition = other.m_RequiresPixelPosition | m_RequiresPixelPosition; newReqs.m_RequiresVertexColor = other.m_RequiresVertexColor | m_RequiresVertexColor; newReqs.m_RequiresFaceSign = other.m_RequiresFaceSign | m_RequiresFaceSign; newReqs.m_RequiresDepthTexture = other.m_RequiresDepthTexture | m_RequiresDepthTexture; @@ -179,6 +195,8 @@ internal static ShaderGraphRequirements FromNodes(List nodes, ShaderStageC NeededCoordinateSpace requiresPosition = nodes.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresPosition(stageCapability)); NeededCoordinateSpace requiresPredisplacement = nodes.OfType().Aggregate(NeededCoordinateSpace.None, (mask, node) => mask | node.RequiresPositionPredisplacement(stageCapability)); bool requiresScreenPosition = nodes.OfType().Any(x => x.RequiresScreenPosition(stageCapability)); + bool requiresNDCPosition = nodes.OfType().Any(x => x.RequiresNDCPosition(stageCapability)); + bool requiresPixelPosition = nodes.OfType().Any(x => x.RequiresPixelPosition(stageCapability)); bool requiresVertexColor = nodes.OfType().Any(x => x.RequiresVertexColor(stageCapability)); bool requiresFaceSign = nodes.OfType().Any(x => x.RequiresFaceSign()); bool requiresDepthTexture = nodes.OfType().Any(x => x.RequiresDepthTexture()); @@ -222,6 +240,8 @@ internal static ShaderGraphRequirements FromNodes(List nodes, ShaderStageC m_RequiresPosition = requiresPosition, m_RequiresPositionPredisplacement = requiresPredisplacement, m_RequiresScreenPosition = requiresScreenPosition, + m_RequiresNDCPosition = requiresNDCPosition, + m_RequiresPixelPosition = requiresPixelPosition, m_RequiresVertexColor = requiresVertexColor, m_RequiresFaceSign = requiresFaceSign, m_RequiresMeshUVs = meshUV, diff --git a/com.unity.shadergraph/Editor/Data/Graphs/VertexColorMaterialSlot.cs b/com.unity.shadergraph/Editor/Data/Graphs/VertexColorMaterialSlot.cs index 225f12778a4..a48e4cc50c0 100644 --- a/com.unity.shadergraph/Editor/Data/Graphs/VertexColorMaterialSlot.cs +++ b/com.unity.shadergraph/Editor/Data/Graphs/VertexColorMaterialSlot.cs @@ -7,7 +7,7 @@ namespace UnityEditor.ShaderGraph { [Serializable] - class VertexColorMaterialSlot : Vector4MaterialSlot, IMayRequireScreenPosition + class VertexColorMaterialSlot : Vector4MaterialSlot, IMayRequireVertexColor { public VertexColorMaterialSlot() { } @@ -27,7 +27,7 @@ public override string GetDefaultValue(GenerationMode generationMode) return string.Format("IN.{0}", ShaderGeneratorNames.VertexColor); } - public bool RequiresScreenPosition(ShaderStageCapability stageCapability) + public bool RequiresVertexColor(ShaderStageCapability stageCapability) { return !isConnected; } diff --git a/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireScreenPosition.cs b/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireScreenPosition.cs index 1c0a13e67f1..0a2c02ebfb0 100644 --- a/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireScreenPosition.cs +++ b/com.unity.shadergraph/Editor/Data/Interfaces/IMayRequireScreenPosition.cs @@ -7,12 +7,34 @@ interface IMayRequireScreenPosition bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All); } + interface IMayRequireNDCPosition + { + bool RequiresNDCPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All); + } + + interface IMayRequirePixelPosition + { + bool RequiresPixelPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All); + } + static class MayRequireScreenPositionExtensions { public static bool RequiresScreenPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All) { var mayRequireScreenPosition = slot as IMayRequireScreenPosition; - return mayRequireScreenPosition != null && mayRequireScreenPosition.RequiresScreenPosition(stageCapability); + return mayRequireScreenPosition?.RequiresScreenPosition(stageCapability) ?? false; + } + + public static bool RequiresNDCPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All) + { + var mayRequireNDCPosition = slot as IMayRequireNDCPosition; + return mayRequireNDCPosition?.RequiresNDCPosition(stageCapability) ?? false; + } + + public static bool RequiresPixelPosition(this MaterialSlot slot, ShaderStageCapability stageCapability = ShaderStageCapability.All) + { + var mayRequirePixelPosition = slot as IMayRequirePixelPosition; + return mayRequirePixelPosition?.RequiresPixelPosition(stageCapability) ?? false; } } } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/BlockNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/BlockNode.cs index de869fd7531..55ed9f95a95 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/BlockNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/BlockNode.cs @@ -14,6 +14,8 @@ class BlockNode : AbstractMaterialNode , IMayRequireBitangent , IMayRequireMeshUV , IMayRequireScreenPosition + , IMayRequireNDCPosition + , IMayRequirePixelPosition , IMayRequireViewDirection , IMayRequirePosition , IMayRequirePositionPredisplacement @@ -241,6 +243,30 @@ public bool RequiresScreenPosition(ShaderStageCapability stageCapability) return requirements.requiresScreenPosition; } + public bool RequiresNDCPosition(ShaderStageCapability stageCapability) + { + if (stageCapability != m_Descriptor.shaderStage.GetShaderStageCapability()) + return false; + + if (m_Descriptor.control == null) + return false; + + var requirements = m_Descriptor.control.GetRequirements(); + return requirements.requiresNDCPosition; + } + + public bool RequiresPixelPosition(ShaderStageCapability stageCapability) + { + if (stageCapability != m_Descriptor.shaderStage.GetShaderStageCapability()) + return false; + + if (m_Descriptor.control == null) + return false; + + var requirements = m_Descriptor.control.GetRequirements(); + return requirements.requiresPixelPosition; + } + public bool RequiresVertexColor(ShaderStageCapability stageCapability) { if (stageCapability != m_Descriptor.shaderStage.GetShaderStageCapability()) diff --git a/com.unity.shadergraph/Editor/Data/Nodes/CodeFunctionNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/CodeFunctionNode.cs index 827e894af1b..dfed1e958a8 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/CodeFunctionNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/CodeFunctionNode.cs @@ -17,6 +17,8 @@ abstract class CodeFunctionNode : AbstractMaterialNode , IMayRequireBitangent , IMayRequireMeshUV , IMayRequireScreenPosition + , IMayRequireNDCPosition + , IMayRequirePixelPosition , IMayRequireViewDirection , IMayRequirePosition , IMayRequirePositionPredisplacement @@ -565,7 +567,34 @@ public bool RequiresScreenPosition(ShaderStageCapability stageCapability) if (slot.RequiresScreenPosition(stageCapability)) return true; } + return false; + } + } + public bool RequiresNDCPosition(ShaderStageCapability stageCapability) + { + using (var tempSlots = PooledList.Get()) + { + GetInputSlots(tempSlots); + foreach (var slot in tempSlots) + { + if (slot.RequiresNDCPosition(stageCapability)) + return true; + } + return false; + } + } + + public bool RequiresPixelPosition(ShaderStageCapability stageCapability) + { + using (var tempSlots = PooledList.Get()) + { + GetInputSlots(tempSlots); + foreach (var slot in tempSlots) + { + if (slot.RequiresPixelPosition(stageCapability)) + return true; + } return false; } } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/Geometry/ScreenPositionNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Input/Geometry/ScreenPositionNode.cs index 7817e056bc9..bb9f9d8d040 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Input/Geometry/ScreenPositionNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/Geometry/ScreenPositionNode.cs @@ -5,7 +5,7 @@ namespace UnityEditor.ShaderGraph { [Title("Input", "Geometry", "Screen Position")] - class ScreenPositionNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireScreenPosition + class ScreenPositionNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition { public ScreenPositionNode() { @@ -46,9 +46,19 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine(string.Format("$precision4 {0} = {1};", GetVariableNameForSlot(kOutputSlotId), m_ScreenSpaceType.ToValueAsVariable())); } - public bool RequiresScreenPosition(ShaderStageCapability stageCapability) + bool IMayRequireScreenPosition.RequiresScreenPosition(ShaderStageCapability stageCapability) { - return true; + return screenSpaceType.RequiresScreenPosition(); + } + + bool IMayRequireNDCPosition.RequiresNDCPosition(ShaderStageCapability stageCapability) + { + return screenSpaceType.RequiresNDCPosition(); + } + + bool IMayRequirePixelPosition.RequiresPixelPosition(ShaderStageCapability stageCapability) + { + return screenSpaceType.RequiresPixelPosition(); } } } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/SampleVirtualTextureNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/SampleVirtualTextureNode.cs index 6f6d8d4f004..870f4914c63 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/SampleVirtualTextureNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/SampleVirtualTextureNode.cs @@ -561,6 +561,9 @@ public bool RequiresTime() public bool RequiresScreenPosition(ShaderStageCapability stageCapability = ShaderStageCapability.All) { // Feedback dithering requires screen position (and only works in Pixel Shader currently) + // Note that the code that makes use of the screen position is not actually in this node, + // but is activated by the presence of this node.. + // via a bit of a hack.. return stageCapability.HasFlag(ShaderStageCapability.Fragment) && !noFeedback; } } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs index 05c3a3b4404..f4b98287936 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Input/Texture/TextureStackNode.cs @@ -121,6 +121,7 @@ public static void GenerateVirtualTextureFeedback( arrayIndex++; } + // TODO: should read from NDCPosition instead... surfaceDescriptionFunction.AppendLine("uint pixelColumn = (IN.ScreenPosition.x / IN.ScreenPosition.w) * _ScreenParams.x;"); surfaceDescriptionFunction.AppendLine( "surface.VTPackedFeedback = GetPackedVTFeedback(VTFeedback_array[(pixelColumn + _FrameCount) % (uint)" + feedbackVariables.Count + "]);"); diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs index fa2c43146f2..8795a511ab4 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Utility/SubGraphNode.cs @@ -18,6 +18,8 @@ class SubGraphNode : AbstractMaterialNode , IMayRequireBitangent , IMayRequireMeshUV , IMayRequireScreenPosition + , IMayRequireNDCPosition + , IMayRequirePixelPosition , IMayRequireViewDirection , IMayRequirePosition , IMayRequirePositionPredisplacement @@ -730,6 +732,22 @@ public bool RequiresScreenPosition(ShaderStageCapability stageCapability) return asset.requirements.requiresScreenPosition; } + public bool RequiresNDCPosition(ShaderStageCapability stageCapability) + { + if (asset == null) + return false; + + return asset.requirements.requiresNDCPosition; + } + + public bool RequiresPixelPosition(ShaderStageCapability stageCapability) + { + if (asset == null) + return false; + + return asset.requirements.requiresPixelPosition; + } + public NeededCoordinateSpace RequiresViewDirection(ShaderStageCapability stageCapability) { if (asset == null) diff --git a/com.unity.shadergraph/Editor/Data/Util/ScreenSpaceType.cs b/com.unity.shadergraph/Editor/Data/Util/ScreenSpaceType.cs index 0e8acc3608b..810a955110e 100644 --- a/com.unity.shadergraph/Editor/Data/Util/ScreenSpaceType.cs +++ b/com.unity.shadergraph/Editor/Data/Util/ScreenSpaceType.cs @@ -15,17 +15,32 @@ public static string ToValueAsVariable(this ScreenSpaceType screenSpaceType) { switch (screenSpaceType) { - case ScreenSpaceType.Raw: + case ScreenSpaceType.Raw: // for backwards compatibility we return ScreenPosition here return string.Format("IN.{0}", ShaderGeneratorNames.ScreenPosition); case ScreenSpaceType.Center: - return string.Format("$precision4(IN.{0}.xy / IN.{0}.w * 2 - 1, 0, 0)", ShaderGeneratorNames.ScreenPosition); + return string.Format("$precision4(IN.{0}.xy * 2 - 1, 0, 0)", ShaderGeneratorNames.NDCPosition); case ScreenSpaceType.Tiled: - return string.Format("frac($precision4((IN.{0}.x / IN.{0}.w * 2 - 1) * _ScreenParams.x / _ScreenParams.y, IN.{0}.y / IN.{0}.w * 2 - 1, 0, 0))", ShaderGeneratorNames.ScreenPosition); + return string.Format("frac($precision4((IN.{0}.x * 2 - 1) * _ScreenParams.x / _ScreenParams.y, IN.{0}.y * 2 - 1, 0, 0))", ShaderGeneratorNames.NDCPosition); case ScreenSpaceType.Pixel: - return string.Format("$precision4(IN.{0}.xy * _ScreenParams.xy / IN.{0}.w, 0, 0)", ShaderGeneratorNames.ScreenPosition); - default: - return string.Format("$precision4(IN.{0}.xy / IN.{0}.w, 0, 0)", ShaderGeneratorNames.ScreenPosition); + return string.Format("$precision4(IN.{0}.xy, 0, 0)", ShaderGeneratorNames.PixelPosition); + default: // ScreenSpaceType.Default (i.e. Normalized Device Coordinates) + return string.Format("$precision4(IN.{0}.xy, 0, 0)", ShaderGeneratorNames.NDCPosition); } } + + public static bool RequiresScreenPosition(this ScreenSpaceType screenSpaceType) + { + return (screenSpaceType == ScreenSpaceType.Raw); + } + + public static bool RequiresNDCPosition(this ScreenSpaceType screenSpaceType) + { + return (screenSpaceType == ScreenSpaceType.Center) || (screenSpaceType == ScreenSpaceType.Tiled) || (screenSpaceType == ScreenSpaceType.Default); + } + + public static bool RequiresPixelPosition(this ScreenSpaceType screenSpaceType) + { + return (screenSpaceType == ScreenSpaceType.Pixel); + } } } diff --git a/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs b/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs index ccd885bbf36..2058371c0b4 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs @@ -384,6 +384,9 @@ static ConditionalField[] GetConditionalFieldsFromVertexRequirements(ShaderGraph return new ConditionalField[] { new ConditionalField(StructFields.VertexDescriptionInputs.ScreenPosition, requirements.requiresScreenPosition), + new ConditionalField(StructFields.VertexDescriptionInputs.NDCPosition, requirements.requiresNDCPosition), + new ConditionalField(StructFields.VertexDescriptionInputs.PixelPosition, requirements.requiresPixelPosition), + new ConditionalField(StructFields.VertexDescriptionInputs.VertexColor, requirements.requiresVertexColor), new ConditionalField(StructFields.VertexDescriptionInputs.ObjectSpaceNormal, (requirements.requiresNormal & NeededCoordinateSpace.Object) > 0), @@ -439,6 +442,9 @@ static ConditionalField[] GetConditionalFieldsFromPixelRequirements(ShaderGraphR return new ConditionalField[] { new ConditionalField(StructFields.SurfaceDescriptionInputs.ScreenPosition, requirements.requiresScreenPosition), + new ConditionalField(StructFields.SurfaceDescriptionInputs.NDCPosition, requirements.requiresNDCPosition), + new ConditionalField(StructFields.SurfaceDescriptionInputs.PixelPosition, requirements.requiresPixelPosition), + new ConditionalField(StructFields.SurfaceDescriptionInputs.VertexColor, requirements.requiresVertexColor), new ConditionalField(StructFields.SurfaceDescriptionInputs.FaceSign, requirements.requiresFaceSign), @@ -746,6 +752,12 @@ internal static void GenerateSurfaceInputStruct(ShaderStringBuilder sb, ShaderGr if (requirements.requiresScreenPosition) sb.AppendLine("float4 {0};", ShaderGeneratorNames.ScreenPosition); + if (requirements.requiresNDCPosition) + sb.AppendLine("float2 {0};", ShaderGeneratorNames.NDCPosition); + + if (requirements.requiresPixelPosition) + sb.AppendLine("float2 {0};", ShaderGeneratorNames.PixelPosition); + if (requirements.requiresFaceSign) sb.AppendLine("float {0};", ShaderGeneratorNames.FaceSign); @@ -787,6 +799,12 @@ internal static void GenerateSurfaceInputTransferCode(ShaderStringBuilder sb, Sh if (requirements.requiresScreenPosition) sb.AppendLine($"{variableName}.{ShaderGeneratorNames.ScreenPosition} = IN.{ShaderGeneratorNames.ScreenPosition};"); + if (requirements.requiresNDCPosition) + sb.AppendLine($"{variableName}.{ShaderGeneratorNames.NDCPosition} = IN.{ShaderGeneratorNames.NDCPosition};"); + + if (requirements.requiresPixelPosition) + sb.AppendLine($"{variableName}.{ShaderGeneratorNames.PixelPosition} = IN.{ShaderGeneratorNames.PixelPosition};"); + if (requirements.requiresFaceSign) sb.AppendLine($"{variableName}.{ShaderGeneratorNames.FaceSign} = IN.{ShaderGeneratorNames.FaceSign};"); diff --git a/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs b/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs index 2b7d4280569..393e524f472 100644 --- a/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs +++ b/com.unity.shadergraph/Editor/Generation/Processors/ShaderGeneratorNames.cs @@ -9,6 +9,8 @@ static class ShaderGeneratorNames public static int UVCount = 4; public const string ScreenPosition = "ScreenPosition"; + public const string NDCPosition = "NDCPosition"; // normalized device coordinates, [0,1] across view, origin in lower left + public const string PixelPosition = "PixelPosition"; // pixel coordinates public const string VertexColor = "VertexColor"; public const string FaceSign = "FaceSign"; public const string TimeParameters = "TimeParameters"; diff --git a/com.unity.shadergraph/Editor/Generation/TargetResources/FieldDependencies.cs b/com.unity.shadergraph/Editor/Generation/TargetResources/FieldDependencies.cs index 3fc837c9414..6d7e76e86ad 100644 --- a/com.unity.shadergraph/Editor/Generation/TargetResources/FieldDependencies.cs +++ b/com.unity.shadergraph/Editor/Generation/TargetResources/FieldDependencies.cs @@ -52,6 +52,9 @@ internal static class FieldDependencies new FieldDependency(StructFields.VertexDescriptionInputs.TangentSpaceViewDirection, StructFields.VertexDescriptionInputs.WorldSpaceNormal), new FieldDependency(StructFields.VertexDescriptionInputs.ScreenPosition, StructFields.VertexDescriptionInputs.WorldSpacePosition), + new FieldDependency(StructFields.VertexDescriptionInputs.NDCPosition, StructFields.VertexDescriptionInputs.ScreenPosition), + new FieldDependency(StructFields.VertexDescriptionInputs.PixelPosition, StructFields.VertexDescriptionInputs.NDCPosition), + new FieldDependency(StructFields.VertexDescriptionInputs.uv0, StructFields.Attributes.uv0), new FieldDependency(StructFields.VertexDescriptionInputs.uv1, StructFields.Attributes.uv1), new FieldDependency(StructFields.VertexDescriptionInputs.uv2, StructFields.Attributes.uv2), @@ -98,6 +101,9 @@ internal static class FieldDependencies new FieldDependency(StructFields.SurfaceDescriptionInputs.TangentSpaceViewDirection, StructFields.SurfaceDescriptionInputs.WorldSpaceNormal), new FieldDependency(StructFields.SurfaceDescriptionInputs.ScreenPosition, StructFields.SurfaceDescriptionInputs.WorldSpacePosition), + // new FieldDependency(StructFields.SurfaceDescriptionInputs.PixelPosition, StructFields.Varyings.vpos), + new FieldDependency(StructFields.SurfaceDescriptionInputs.NDCPosition, StructFields.SurfaceDescriptionInputs.PixelPosition), + new FieldDependency(StructFields.SurfaceDescriptionInputs.uv0, StructFields.Varyings.texCoord0), new FieldDependency(StructFields.SurfaceDescriptionInputs.uv1, StructFields.Varyings.texCoord1), new FieldDependency(StructFields.SurfaceDescriptionInputs.uv2, StructFields.Varyings.texCoord2), diff --git a/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs b/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs index b5c6bf46ecc..229000f5f41 100644 --- a/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs +++ b/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs @@ -137,6 +137,11 @@ public struct VertexDescriptionInputs public static FieldDescriptor ScreenPosition = new FieldDescriptor(VertexDescriptionInputs.name, "ScreenPosition", "", ShaderValueType.Float4, subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor NDCPosition = new FieldDescriptor(VertexDescriptionInputs.name, "NDCPosition", "", ShaderValueType.Float2, + subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor PixelPosition = new FieldDescriptor(VertexDescriptionInputs.name, "PixelPosition", "", ShaderValueType.Float2, + subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor uv0 = new FieldDescriptor(VertexDescriptionInputs.name, "uv0", "", ShaderValueType.Float4, subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor uv1 = new FieldDescriptor(VertexDescriptionInputs.name, "uv1", "", ShaderValueType.Float4, @@ -222,6 +227,11 @@ public struct SurfaceDescriptionInputs public static FieldDescriptor ScreenPosition = new FieldDescriptor(SurfaceDescriptionInputs.name, "ScreenPosition", "", ShaderValueType.Float4, subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor NDCPosition = new FieldDescriptor(SurfaceDescriptionInputs.name, "NDCPosition", "", ShaderValueType.Float2, + subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor PixelPosition = new FieldDescriptor(SurfaceDescriptionInputs.name, "PixelPosition", "", ShaderValueType.Float2, + subscriptOptions: StructFieldOptions.Optional); + public static FieldDescriptor uv0 = new FieldDescriptor(SurfaceDescriptionInputs.name, "uv0", "", ShaderValueType.Float4, subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor uv1 = new FieldDescriptor(SurfaceDescriptionInputs.name, "uv1", "", ShaderValueType.Float4, diff --git a/com.unity.shadergraph/Editor/Generation/TargetResources/Structs.cs b/com.unity.shadergraph/Editor/Generation/TargetResources/Structs.cs index 2e7716ca835..869e90675ec 100644 --- a/com.unity.shadergraph/Editor/Generation/TargetResources/Structs.cs +++ b/com.unity.shadergraph/Editor/Generation/TargetResources/Structs.cs @@ -63,6 +63,9 @@ internal static class Structs StructFields.VertexDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement, StructFields.VertexDescriptionInputs.ScreenPosition, + StructFields.VertexDescriptionInputs.NDCPosition, + StructFields.VertexDescriptionInputs.PixelPosition, + StructFields.VertexDescriptionInputs.uv0, StructFields.VertexDescriptionInputs.uv1, StructFields.VertexDescriptionInputs.uv2, @@ -115,6 +118,9 @@ internal static class Structs StructFields.SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement, StructFields.SurfaceDescriptionInputs.ScreenPosition, + StructFields.SurfaceDescriptionInputs.NDCPosition, + StructFields.SurfaceDescriptionInputs.PixelPosition, + StructFields.SurfaceDescriptionInputs.uv0, StructFields.SurfaceDescriptionInputs.uv1, StructFields.SurfaceDescriptionInputs.uv2, diff --git a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Templates/SharedCode.template.hlsl b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Templates/SharedCode.template.hlsl index 9264511aa5b..7f8510b0ac1 100644 --- a/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Templates/SharedCode.template.hlsl +++ b/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/Editor/ShaderGraph/Templates/SharedCode.template.hlsl @@ -46,6 +46,8 @@ SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: output.TangentSpacePositionPredisplacement = float3(0.0f, 0.0f, 0.0f); $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement:output.AbsoluteWorldSpacePositionPredisplacement = GetAbsolutePositionWS(input.positionWS); $SurfaceDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(input.positionWS), _ProjectionParams.x); + $SurfaceDescriptionInputs.PixelPosition: output.PixelPosition = input.positionCS.xy; + $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy; $SurfaceDescriptionInputs.uv0: output.uv0 = input.texCoord0; $SurfaceDescriptionInputs.uv1: output.uv1 = input.texCoord1; $SurfaceDescriptionInputs.uv2: output.uv2 = input.texCoord2; diff --git a/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl b/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl index 5d95b23b6d4..4242aa485a1 100644 --- a/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl +++ b/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl @@ -46,6 +46,8 @@ SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) $SurfaceDescriptionInputs.TangentSpacePositionPredisplacement: output.TangentSpacePositionPredisplacement = float3(0.0f, 0.0f, 0.0f); $SurfaceDescriptionInputs.AbsoluteWorldSpacePositionPredisplacement:output.AbsoluteWorldSpacePositionPredisplacement = GetAbsolutePositionWS(input.positionPredisplacementWS); $SurfaceDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(input.positionWS), _ProjectionParams.x); + $SurfaceDescriptionInputs.PixelPosition: output.PixelPosition = input.positionCS.xy; + $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy; $SurfaceDescriptionInputs.uv0: output.uv0 = input.texCoord0; $SurfaceDescriptionInputs.uv1: output.uv1 = input.texCoord1; $SurfaceDescriptionInputs.uv2: output.uv2 = input.texCoord2; diff --git a/com.unity.shadergraph/Editor/Generation/Templates/BuildVertexDescriptionInputs.template.hlsl b/com.unity.shadergraph/Editor/Generation/Templates/BuildVertexDescriptionInputs.template.hlsl index efc9e84169d..a3079ddb7b3 100644 --- a/com.unity.shadergraph/Editor/Generation/Templates/BuildVertexDescriptionInputs.template.hlsl +++ b/com.unity.shadergraph/Editor/Generation/Templates/BuildVertexDescriptionInputs.template.hlsl @@ -31,6 +31,8 @@ VertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input) $VertexDescriptionInputs.TangentSpaceViewDirection: float3x3 tangentSpaceTransform = float3x3(output.WorldSpaceTangent,output.WorldSpaceBiTangent,output.WorldSpaceNormal); $VertexDescriptionInputs.TangentSpaceViewDirection: output.TangentSpaceViewDirection = TransformWorldToTangent(output.WorldSpaceViewDirection, tangentSpaceTransform); $VertexDescriptionInputs.ScreenPosition: output.ScreenPosition = ComputeScreenPos(TransformWorldToHClip(output.WorldSpacePosition), _ProjectionParams.x); + $VertexDescriptionInputs.NDCPosition: output.NDCPosition = output.ScreenPosition.xy / output.ScreenPosition.w; + $VertexDescriptionInputs.PixelPosition: output.PixelPosition = output.NDCPosition.xy * _ScreenParams.xy; $VertexDescriptionInputs.uv0: output.uv0 = input.uv0; $VertexDescriptionInputs.uv1: output.uv1 = input.uv1; $VertexDescriptionInputs.uv2: output.uv2 = input.uv2; diff --git a/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs b/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs index 5dff74d3b95..fcaacd1803e 100644 --- a/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs +++ b/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs @@ -772,6 +772,8 @@ void AddCoordinateSpaceSnippets(InterpolatorType interpolatorType, Func r.requiresVertexColor, $"float4 {ShaderGeneratorNames.VertexColor}"); AddRequirementsSnippet(r => r.requiresScreenPosition, $"float4 {ShaderGeneratorNames.ScreenPosition}"); + AddRequirementsSnippet(r => r.requiresNDCPosition, $"float2 {ShaderGeneratorNames.NDCPosition}"); + AddRequirementsSnippet(r => r.requiresPixelPosition, $"float2 {ShaderGeneratorNames.PixelPosition}"); AddRequirementsSnippet(r => r.requiresFaceSign, $"float4 {ShaderGeneratorNames.FaceSign}"); foreach (var uvChannel in EnumInfo.values) diff --git a/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphParticleOutput.cs b/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphParticleOutput.cs index fc9f236e1f4..b358cbe0edb 100644 --- a/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphParticleOutput.cs +++ b/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphParticleOutput.cs @@ -820,7 +820,9 @@ public override IEnumerable> additionalRep callSG.builder.AppendLine("INSG.TangentSpaceBiTangent = float3(0.0f, 1.0f, 0.0f);"); } - if (graphCode.requirements.requiresPosition != NeededCoordinateSpace.None || graphCode.requirements.requiresScreenPosition || graphCode.requirements.requiresViewDir != NeededCoordinateSpace.None) + if (graphCode.requirements.requiresPosition != NeededCoordinateSpace.None || + graphCode.requirements.requiresViewDir != NeededCoordinateSpace.None || + graphCode.requirements.requiresScreenPosition || graphCode.requirements.requiresNDCPosition || graphCode.requirements.requiresPixelPosition) { callSG.builder.AppendLine("float3 posRelativeWS = VFXGetPositionRWS(i.VFX_VARYING_POSWS);"); callSG.builder.AppendLine("float3 posAbsoluteWS = VFXGetPositionAWS(i.VFX_VARYING_POSWS);"); @@ -850,8 +852,19 @@ public override IEnumerable> additionalRep callSG.builder.AppendLine("INSG.AbsoluteWorldSpacePositionPredisplacement = posAbsoluteWS;"); } + callSG.builder.AppendLine("{"); + if (graphCode.requirements.requiresNDCPosition || graphCode.requirements.requiresPixelPosition) + callSG.builder.AppendLine("float2 localPixelPosition = i.VFX_VARYING_POSCS.xy;"); + if (graphCode.requirements.requiresNDCPosition) + callSG.builder.AppendLine("float2 localNDCPosition = localPixelPosition.xy / _ScreenParams.w;"); + if (graphCode.requirements.requiresScreenPosition) callSG.builder.AppendLine("INSG.ScreenPosition = ComputeScreenPos(VFXTransformPositionWorldToClip(i.VFX_VARYING_POSWS), _ProjectionParams.x);"); + if (graphCode.requirements.requiresNDCPosition) + callSG.builder.AppendLine("INSG.NDCPosition = localPixelPosition / _ScreenParams.xy;"); + if (graphCode.requirements.requiresPixelPosition) + callSG.builder.AppendLine("INSG.PixelPosition = localPixelPosition;"); + callSG.builder.AppendLine("}"); if (graphCode.requirements.requiresViewDir != NeededCoordinateSpace.None) {