From fd76832fc34a395fdf4212b4176f4c5ccb505788 Mon Sep 17 00:00:00 2001 From: Chris McMath Date: Tue, 5 Jul 2022 18:02:47 +0100 Subject: [PATCH 01/15] Return vkGetInstanceProcAddr from Hook_vkGetInstanceProcAddr for use by other plugins --- PluginSource/source/RenderAPI_Vulkan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PluginSource/source/RenderAPI_Vulkan.cpp b/PluginSource/source/RenderAPI_Vulkan.cpp index 8e24ca20..27180a9e 100644 --- a/PluginSource/source/RenderAPI_Vulkan.cpp +++ b/PluginSource/source/RenderAPI_Vulkan.cpp @@ -121,7 +121,7 @@ static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL Hook_vkGetInstanceProcAddr(VkIns INTERCEPT(vkCreateInstance); #undef INTERCEPT - return NULL; + return vkGetInstanceProcAddr(device, funcName); } static PFN_vkGetInstanceProcAddr UNITY_INTERFACE_API InterceptVulkanInitialization(PFN_vkGetInstanceProcAddr getInstanceProcAddr, void*) From 45efffb5a33d0388e421df447d2749b3df6ba111 Mon Sep 17 00:00:00 2001 From: Matas Tunkevicius Date: Fri, 10 Feb 2023 14:29:20 +0200 Subject: [PATCH 02/15] Prevent modifying vulkan resource that might still be used by GPU --- PluginSource/source/RenderAPI_Vulkan.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/PluginSource/source/RenderAPI_Vulkan.cpp b/PluginSource/source/RenderAPI_Vulkan.cpp index 8e24ca20..0f132cbf 100644 --- a/PluginSource/source/RenderAPI_Vulkan.cpp +++ b/PluginSource/source/RenderAPI_Vulkan.cpp @@ -749,19 +749,14 @@ void* RenderAPI_Vulkan::BeginModifyVertexBuffer(void* bufferHandle, size_t* outB if (!bufferInfo.memory.mapped) return NULL; - UnityVulkanBuffer src; - if (!m_UnityVulkan->AccessBuffer(bufferHandle, VK_PIPELINE_STAGE_HOST_BIT, VK_ACCESS_HOST_READ_BIT, kUnityVulkanResourceAccess_PipelineBarrier, &src)) + // We don't want to start modifying a resource that might still be used by the GPU, + // so we can use kUnityVulkanResourceAccess_Recreate to recreate it while still keeping the old one alive if it's in use. + UnityVulkanBuffer recreatedBuffer; + if (!m_UnityVulkan->AccessBuffer(bufferHandle, VK_PIPELINE_STAGE_HOST_BIT, VK_ACCESS_HOST_WRITE_BIT, kUnityVulkanResourceAccess_Recreate, &recreatedBuffer)) return NULL; - UnityVulkanBuffer dst; - if (!m_UnityVulkan->AccessBuffer(bufferHandle, VK_PIPELINE_STAGE_HOST_BIT, VK_ACCESS_HOST_WRITE_BIT, kUnityVulkanResourceAccess_PipelineBarrier, &dst)) - return NULL; - - // read might be slow because it's not cached - // can't use GPU transfer here because is not marked as transfer src - memcpy(dst.memory.mapped, src.memory.mapped, bufferInfo.sizeInBytes); - - return dst.memory.mapped; + // We don't care about the previous contents of this vertex buffer so we can return the mapped pointer to the new resource memory + return recreatedBuffer.memory.mapped; } void RenderAPI_Vulkan::EndModifyVertexBuffer(void* bufferHandle) From 397d26906470c7637e65c0e34ae9c3c0a4eb3a3f Mon Sep 17 00:00:00 2001 From: matas-tunkevicius Date: Wed, 22 Feb 2023 11:55:27 +0200 Subject: [PATCH 03/15] Cancel ModifyVertexBuffer if vertex buffer has unexpected data layout. This prevents UB from overwriting memory --- PluginSource/source/RenderingPlugin.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/PluginSource/source/RenderingPlugin.cpp b/PluginSource/source/RenderingPlugin.cpp index 54af64a0..d910d6bb 100644 --- a/PluginSource/source/RenderingPlugin.cpp +++ b/PluginSource/source/RenderingPlugin.cpp @@ -262,6 +262,13 @@ static void ModifyVertexBuffer() return; int vertexStride = int(bufferSize / vertexCount); + // Unity should return us a buffer that is the size of `vertexCount * sizeof(MeshVertex)` + // If that's not the case then we should quit to avoid unexpected results. + // This can happen if https://docs.unity3d.com/ScriptReference/Mesh.GetNativeVertexBufferPtr.html returns + // a pointer to a buffer with an unexpected layout. + if (static_cast(vertexStride) != sizeof(MeshVertex)) + return; + const float t = g_Time * 3.0f; char* bufferPtr = (char*)bufferDataPtr; From 9911b945fb5ac49c76e3dabf25af56d6a07e4990 Mon Sep 17 00:00:00 2001 From: matas-tunkevicius Date: Thu, 23 Feb 2023 09:31:11 +0200 Subject: [PATCH 04/15] Manually define the plane vertex layout in managed code so we're certain it matches the vertex layout in native code --- UnityProject/Assets/UseRenderingPlugin.cs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/UnityProject/Assets/UseRenderingPlugin.cs b/UnityProject/Assets/UseRenderingPlugin.cs index 97fcbc39..a3ee5010 100644 --- a/UnityProject/Assets/UseRenderingPlugin.cs +++ b/UnityProject/Assets/UseRenderingPlugin.cs @@ -2,7 +2,7 @@ using System; using System.Collections; using System.Runtime.InteropServices; - +using UnityEngine.Rendering; public class UseRenderingPlugin : MonoBehaviour { @@ -80,10 +80,23 @@ private void CreateTextureAndPassToPlugin() private void SendMeshBuffersToPlugin () { var filter = GetComponent (); - var mesh = filter.mesh; - // The plugin will want to modify the vertex buffer -- on many platforms - // for that to work we have to mark mesh as "dynamic" (which makes the buffers CPU writable -- - // by default they are immutable and only GPU-readable). + var mesh = filter.mesh; + + // This is equivalent to MeshVertex in RenderingPlugin.cpp + var desiredVertexLayout = new[] + { + new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3), + new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float32, 3), + new VertexAttributeDescriptor(VertexAttribute.Color, VertexAttributeFormat.Float32, 4), + new VertexAttributeDescriptor(VertexAttribute.TexCoord0, VertexAttributeFormat.Float32, 2) + }; + + // Let's be certain we'll get the vertex buffer layout we want in native code + mesh.SetVertexBufferParams(mesh.vertexCount, desiredVertexLayout); + + // The plugin will want to modify the vertex buffer -- on many platforms + // for that to work we have to mark mesh as "dynamic" (which makes the buffers CPU writable -- + // by default they are immutable and only GPU-readable). mesh.MarkDynamic (); // Make sure to have vertex colors so that the plugin can rely on a known From 0d2b2950a73e27b31bdb5f2a6dbee99b35c89a9c Mon Sep 17 00:00:00 2001 From: matas-tunkevicius Date: Thu, 23 Feb 2023 10:11:56 +0200 Subject: [PATCH 05/15] Remove old workaround for vertex color attribute --- UnityProject/Assets/UseRenderingPlugin.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/UnityProject/Assets/UseRenderingPlugin.cs b/UnityProject/Assets/UseRenderingPlugin.cs index a3ee5010..d5a65416 100644 --- a/UnityProject/Assets/UseRenderingPlugin.cs +++ b/UnityProject/Assets/UseRenderingPlugin.cs @@ -99,12 +99,6 @@ private void SendMeshBuffersToPlugin () // by default they are immutable and only GPU-readable). mesh.MarkDynamic (); - // Make sure to have vertex colors so that the plugin can rely on a known - // vertex layout (position+normal+color+UV). Since Unity 2019.3 it's easier - // since there are APIs to query all that info. - var colors = mesh.colors; - mesh.colors = colors; - // However, mesh being dynamic also means that the CPU on most platforms can not // read from the vertex buffer. Our plugin also wants original mesh data, // so let's pass it as pointers to regular C# arrays. From 85840b6ccb1ca586499c1b1f5989cfe1ef1ae002 Mon Sep 17 00:00:00 2001 From: "eduardas.vitkus" Date: Thu, 30 Mar 2023 13:29:38 +0300 Subject: [PATCH 06/15] [opengl][windows] fix crash on startup, caused by using OpenGL API before it is initialized --- PluginSource/source/RenderAPI_OpenGLCoreES.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp index 742e4884..186b6e56 100644 --- a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp +++ b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp @@ -137,6 +137,9 @@ static GLuint CreateShader(GLenum type, const char* sourceText) void RenderAPI_OpenGLCoreES::CreateResources() { +# if UNITY_WIN && SUPPORT_OPENGL_CORE + gl3wInit(); +# endif // Make sure that there are no GL error flags set before creating resources while (glGetError() != GL_NO_ERROR) {} @@ -154,10 +157,6 @@ void RenderAPI_OpenGLCoreES::CreateResources() # if SUPPORT_OPENGL_CORE else if (m_APIType == kUnityGfxRendererOpenGLCore) { -# if UNITY_WIN - gl3wInit(); -# endif - m_VertexShader = CreateShader(GL_VERTEX_SHADER, kGlesVProgTextGLCore); m_FragmentShader = CreateShader(GL_FRAGMENT_SHADER, kGlesFShaderTextGLCore); } From 53479ebfd94c568079e310edd65f83a3a65b9962 Mon Sep 17 00:00:00 2001 From: "eduardas.vitkus" Date: Fri, 31 Mar 2023 11:28:07 +0300 Subject: [PATCH 07/15] [opengl][windows] exclude OpenGLES --- PluginSource/source/RenderAPI_OpenGLCoreES.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp index 186b6e56..47f96dce 100644 --- a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp +++ b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp @@ -138,7 +138,8 @@ static GLuint CreateShader(GLenum type, const char* sourceText) void RenderAPI_OpenGLCoreES::CreateResources() { # if UNITY_WIN && SUPPORT_OPENGL_CORE - gl3wInit(); + if (m_APIType == kUnityGfxRendererOpenGLCore) + gl3wInit(); # endif // Make sure that there are no GL error flags set before creating resources while (glGetError() != GL_NO_ERROR) {} From f639f649cd5b85ceea11d97d388adc37e9c71e13 Mon Sep 17 00:00:00 2001 From: Aleksis Karastie Date: Fri, 29 Sep 2023 21:51:35 +0300 Subject: [PATCH 08/15] Update DX12 plugin example - Update visual studio project files - Update Unity plugin interface headers - Update the example Unity project - Update DX12 C++ plugin files --- .../UWPVisualStudio2015/RenderingPlugin.sln | 34 - .../RenderingPlugin.vcxproj | 367 ---- .../RenderingPlugin.sln | 0 .../RenderingPlugin.vcxproj | 251 +++ .../RenderingPlugin.vcxproj.filters | 1 + .../VisualStudio2022/RenderingPlugin.sln | 28 + .../RenderingPlugin.vcxproj | 85 +- .../RenderingPlugin.vcxproj.filters | 50 +- PluginSource/source/PlatformBase.h | 2 +- PluginSource/source/RenderAPI.cpp | 3 +- PluginSource/source/RenderAPI.h | 36 +- PluginSource/source/RenderAPI_D3D12.cpp | 1657 +++++++++++++++-- .../source/RenderAPI_OpenGLCoreES.cpp | 2 +- PluginSource/source/RenderingPlugin.cpp | 70 +- PluginSource/source/Unity/IUnityGraphics.h | 18 +- .../source/Unity/IUnityGraphicsD3D12.h | 121 +- PluginSource/source/Unity/IUnityInterface.h | 10 +- README.md | 4 +- .../Plugins/Metro/UWP/x64/RenderingPlugin.dll | Bin 19968 -> 188416 bytes .../Plugins/Metro/UWP/x86/RenderingPlugin.dll | Bin 16896 -> 159744 bytes .../Assets/Plugins/x86/RenderingPlugin.dll | Bin 122368 -> 159744 bytes .../Assets/Plugins/x86_64/RenderingPlugin.dll | Bin 147456 -> 188416 bytes UnityProject/Assets/UseRenderingPlugin.cs | 301 +-- UnityProject/Assets/scene.unity | 401 ++-- UnityProject/Packages/manifest.json | 13 +- .../ProjectSettings/EditorBuildSettings.asset | 7 +- .../ProjectSettings/ProjectVersion.txt | 3 +- 27 files changed, 2527 insertions(+), 937 deletions(-) delete mode 100644 PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.sln delete mode 100644 PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj rename PluginSource/projects/{VisualStudio2015 => UWPVisualStudio2022}/RenderingPlugin.sln (100%) create mode 100644 PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj rename PluginSource/projects/{VisualStudio2015 => UWPVisualStudio2022}/RenderingPlugin.vcxproj.filters (95%) create mode 100644 PluginSource/projects/VisualStudio2022/RenderingPlugin.sln rename PluginSource/projects/{VisualStudio2015 => VisualStudio2022}/RenderingPlugin.vcxproj (73%) rename PluginSource/projects/{UWPVisualStudio2015 => VisualStudio2022}/RenderingPlugin.vcxproj.filters (64%) diff --git a/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.sln b/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.sln deleted file mode 100644 index 11fc4e6f..00000000 --- a/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.sln +++ /dev/null @@ -1,34 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.23107.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RenderingPlugin", "RenderingPlugin.vcxproj", "{6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM = Debug|ARM - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|ARM = Release|ARM - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Debug|ARM.ActiveCfg = Debug|ARM - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Debug|ARM.Build.0 = Debug|ARM - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Debug|Win32.ActiveCfg = Debug|Win32 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Debug|Win32.Build.0 = Debug|Win32 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Debug|x64.ActiveCfg = Debug|x64 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Debug|x64.Build.0 = Debug|x64 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Release|ARM.ActiveCfg = Release|ARM - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Release|ARM.Build.0 = Release|ARM - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Release|Win32.ActiveCfg = Release|Win32 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Release|Win32.Build.0 = Release|Win32 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Release|x64.ActiveCfg = Release|x64 - {6C7AE7F4-BDCA-4E9A-81C8-75F5E138AA54}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj b/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj deleted file mode 100644 index fefa9331..00000000 --- a/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj +++ /dev/null @@ -1,367 +0,0 @@ - - - - - Debug - ARM - - - Debug - Win32 - - - Debug - x64 - - - Release - ARM - - - Release - Win32 - - - Release - x64 - - - - - - - - true - true - true - true - true - true - - - - - - - - - - - - - - - - true - true - true - true - true - true - - - - - {6c7ae7f4-bdca-4e9a-81c8-75f5e138aa54} - DynamicLibrary - RenderingPlugin - RenderingPlugin - en-US - 14.0 - true - Windows Store - 10.0.10586.0 - 10.0.10586.0 - 10.0 - - - - DynamicLibrary - true - - - DynamicLibrary - true - - - DynamicLibrary - true - - - DynamicLibrary - false - true - - - DynamicLibrary - false - true - - - DynamicLibrary - false - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - false - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - - - false - false - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - - - false - false - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - - - false - false - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - - - false - false - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - - - false - false - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\$(MSBuildProjectName)\ - - - - NotUsing - false - WINDOWS_UWP;UNITY_METRO;_WINDLL;%(PreprocessorDefinitions) - - - Console - false - false - ../../source/RenderingPlugin.def - - - SETLOCAL - -if "$(SolutionName)" == "RenderingPlugin" ( - set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\ -) else ( - set TARGET_PLUGIN_PATH=$(SolutionDir)$(SolutionName)\ -) - -echo Target Plugin Path is %TARGET_PLUGIN_PATH% - -mkdir "%TARGET_PLUGIN_PATH%Plugins" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)" -copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)\$(TargetFileName)" - -ENDLOCAL - - - - - - NotUsing - false - WINDOWS_UWP;UNITY_METRO;_WINDLL;%(PreprocessorDefinitions) - - - Console - false - false - ../../source/RenderingPlugin.def - - - SETLOCAL - -if "$(SolutionName)" == "RenderingPlugin" ( - set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\ -) else ( - set TARGET_PLUGIN_PATH=$(SolutionDir)$(SolutionName)\ -) - -echo Target Plugin Path is %TARGET_PLUGIN_PATH% - -mkdir "%TARGET_PLUGIN_PATH%Plugins" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)" -copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)\$(TargetFileName)" - -ENDLOCAL - - - - - - NotUsing - false - WINDOWS_UWP;UNITY_METRO;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - - - Console - false - false - ../../source/RenderingPlugin.def - - - SETLOCAL - -if "$(SolutionName)" == "RenderingPlugin" ( - set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\ -) else ( - set TARGET_PLUGIN_PATH=$(SolutionDir)$(SolutionName)\ -) - -echo Target Plugin Path is %TARGET_PLUGIN_PATH% - -mkdir "%TARGET_PLUGIN_PATH%Plugins" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)" -copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)\$(TargetFileName)" - -ENDLOCAL - - - - - - NotUsing - false - WINDOWS_UWP;UNITY_METRO;_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1;%(ClCompile.PreprocessorDefinitions) - - - Console - false - false - ../../source/RenderingPlugin.def - - - SETLOCAL - -if "$(SolutionName)" == "RenderingPlugin" ( - set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\ -) else ( - set TARGET_PLUGIN_PATH=$(SolutionDir)$(SolutionName)\ -) - -echo Target Plugin Path is %TARGET_PLUGIN_PATH% - -mkdir "%TARGET_PLUGIN_PATH%Plugins" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)" -copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)\$(TargetFileName)" - -ENDLOCAL - - - - - - NotUsing - false - WINDOWS_UWP;UNITY_METRO;_WINDLL;%(PreprocessorDefinitions) - - - Console - false - false - ../../source/RenderingPlugin.def - - - SETLOCAL - -if "$(SolutionName)" == "RenderingPlugin" ( - set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\ -) else ( - set TARGET_PLUGIN_PATH=$(SolutionDir)$(SolutionName)\ -) - -echo Target Plugin Path is %TARGET_PLUGIN_PATH% - -mkdir "%TARGET_PLUGIN_PATH%Plugins" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)" -copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)\$(TargetFileName)" - -ENDLOCAL - - - - - - NotUsing - false - WINDOWS_UWP;UNITY_METRO;_WINDLL;%(PreprocessorDefinitions) - - - Console - false - false - ../../source/RenderingPlugin.def - - - SETLOCAL - -if "$(SolutionName)" == "RenderingPlugin" ( - set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\ -) else ( - set TARGET_PLUGIN_PATH=$(SolutionDir)$(SolutionName)\ -) - -echo Target Plugin Path is %TARGET_PLUGIN_PATH% - -mkdir "%TARGET_PLUGIN_PATH%Plugins" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP" -mkdir "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)" -copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%Plugins\Metro\UWP\$(PlatformShortName)\$(TargetFileName)" - -ENDLOCAL - - - - - - - diff --git a/PluginSource/projects/VisualStudio2015/RenderingPlugin.sln b/PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.sln similarity index 100% rename from PluginSource/projects/VisualStudio2015/RenderingPlugin.sln rename to PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.sln diff --git a/PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj b/PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj new file mode 100644 index 00000000..13036483 --- /dev/null +++ b/PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj @@ -0,0 +1,251 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + $(VULKAN_SDK)\Include + $(VULKAN_SDK)\Include + + + + + + + + + + true + true + true + true + + + + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C} + RenderingPlugin + Win32Proj + 10.0 + + + + DynamicLibrary + v143 + Unicode + + + DynamicLibrary + v143 + Unicode + + + DynamicLibrary + v143 + Unicode + + + DynamicLibrary + Unicode + v143 + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + + + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(IncludePath) + + + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(IncludePath) + + + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(IncludePath) + + + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(SolutionDir)..\..\build\uwp\$(Platform)\$(Configuration)\ + $(IncludePath) + + + + GLEW_STATIC;WIN32 + + Level3 + stdcpp17 + MultiThreadedDLL + true + + + opengl32.lib;d3d12.lib + true + Windows + ../../source/RenderingPlugin.def + + + SETLOCAL + +if "$(PlatformShortName)" == "x86" ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x86 +) else ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x64 +) +echo Target Plugin Path is %TARGET_PLUGIN_PATH% +copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%\$(TargetFileName)" + +ENDLOCAL + + + + + + GLEW_STATIC;WIN32 + + + Level3 + stdcpp17 + MultiThreadedDLL + true + + + opengl32.lib;d3d12.lib + true + Windows + ../../source/RenderingPlugin.def + + + SETLOCAL + +if "$(PlatformShortName)" == "x86" ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x86 +) else ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x64 +) +echo Target Plugin Path is %TARGET_PLUGIN_PATH% +copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%\$(TargetFileName)" + +ENDLOCAL + + + + + + GLEW_STATIC;WIN32 + + Level3 + stdcpp17 + MultiThreadedDLL + true + + + opengl32.lib;d3d12.lib + true + Windows + ../../source/RenderingPlugin.def + + + SETLOCAL + +if "$(PlatformShortName)" == "x86" ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x86 +) else ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x64 +) +echo Target Plugin Path is %TARGET_PLUGIN_PATH% +copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%\$(TargetFileName)" + +ENDLOCAL + + + + + + GLEW_STATIC;WIN32 + + + Level3 + stdcpp17 + MultiThreadedDLL + true + + + opengl32.lib;d3d12.lib + true + Windows + ../../source/RenderingPlugin.def + + + SETLOCAL + +if "$(PlatformShortName)" == "x86" ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x86 +) else ( + set TARGET_PLUGIN_PATH=$(SolutionDir)..\..\..\UnityProject\Assets\Plugins\Metro\UWP\x64 +) +echo Target Plugin Path is %TARGET_PLUGIN_PATH% +copy /Y "$(TargetPath)" "%TARGET_PLUGIN_PATH%\$(TargetFileName)" + +ENDLOCAL + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/PluginSource/projects/VisualStudio2015/RenderingPlugin.vcxproj.filters b/PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj.filters similarity index 95% rename from PluginSource/projects/VisualStudio2015/RenderingPlugin.vcxproj.filters rename to PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj.filters index 0de05ac9..1b8c3c5b 100644 --- a/PluginSource/projects/VisualStudio2015/RenderingPlugin.vcxproj.filters +++ b/PluginSource/projects/UWPVisualStudio2022/RenderingPlugin.vcxproj.filters @@ -49,6 +49,7 @@ + diff --git a/PluginSource/projects/VisualStudio2022/RenderingPlugin.sln b/PluginSource/projects/VisualStudio2022/RenderingPlugin.sln new file mode 100644 index 00000000..abf801d5 --- /dev/null +++ b/PluginSource/projects/VisualStudio2022/RenderingPlugin.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.40418.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RenderingPlugin", "RenderingPlugin.vcxproj", "{F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Debug|Win32.Build.0 = Debug|Win32 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Debug|x64.ActiveCfg = Debug|x64 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Debug|x64.Build.0 = Debug|x64 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Release|Win32.ActiveCfg = Release|Win32 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Release|Win32.Build.0 = Release|Win32 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Release|x64.ActiveCfg = Release|x64 + {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PluginSource/projects/VisualStudio2015/RenderingPlugin.vcxproj b/PluginSource/projects/VisualStudio2022/RenderingPlugin.vcxproj similarity index 73% rename from PluginSource/projects/VisualStudio2015/RenderingPlugin.vcxproj rename to PluginSource/projects/VisualStudio2022/RenderingPlugin.vcxproj index fd6d842e..993ab16a 100644 --- a/PluginSource/projects/VisualStudio2015/RenderingPlugin.vcxproj +++ b/PluginSource/projects/VisualStudio2022/RenderingPlugin.vcxproj @@ -44,6 +44,7 @@ + @@ -57,30 +58,28 @@ {F7CFEF5A-54BD-42E8-A59E-54ABAEB4EA9C} RenderingPlugin Win32Proj - 10.0.16299.0 + 10.0 DynamicLibrary - v141 + v143 Unicode - true DynamicLibrary - v141 + v143 Unicode - true DynamicLibrary - v141 + v143 Unicode DynamicLibrary - v141 Unicode + v143 @@ -104,40 +103,36 @@ $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ - true + $(IncludePath) - true $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ + $(IncludePath) $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ - false + $(IncludePath) - false $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ $(SolutionDir)..\..\build\$(Platform)\$(Configuration)\ + $(IncludePath) - Disabled - GLEW_STATIC;WIN32;_DEBUG;_WINDOWS;_USRDLL;RENDERINGPLUGIN_EXPORTS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug + GLEW_STATIC;WIN32 Level3 - EditAndContinue - ../../ + stdcpp17 + MultiThreadedDLL + true - opengl32.lib;%(AdditionalDependencies) + opengl32.lib;d3d12.lib true Windows - MachineX86 ../../source/RenderingPlugin.def @@ -157,18 +152,16 @@ ENDLOCAL - Disabled - GLEW_STATIC;WIN32;_DEBUG;_WINDOWS;_USRDLL;RENDERINGPLUGIN_EXPORTS;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug + GLEW_STATIC;WIN32 Level3 - ProgramDatabase - ../../ + stdcpp17 + MultiThreadedDLL + true - opengl32.lib;%(AdditionalDependencies) + opengl32.lib;d3d12.lib true Windows ../../source/RenderingPlugin.def @@ -190,23 +183,17 @@ ENDLOCAL - MaxSpeed - true - GLEW_STATIC;WIN32;NDEBUG;_WINDOWS;_USRDLL;RENDERINGPLUGIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - true + GLEW_STATIC;WIN32 Level3 - ProgramDatabase - ../../ + stdcpp17 + MultiThreadedDLL + true - opengl32.lib;%(AdditionalDependencies) + opengl32.lib;d3d12.lib true Windows - true - true - MachineX86 ../../source/RenderingPlugin.def @@ -226,23 +213,18 @@ ENDLOCAL - MaxSpeed - true - GLEW_STATIC;WIN32;NDEBUG;_WINDOWS;_USRDLL;RENDERINGPLUGIN_EXPORTS;%(PreprocessorDefinitions) - MultiThreaded - true + GLEW_STATIC;WIN32 Level3 - ProgramDatabase - ../../ + stdcpp17 + MultiThreadedDLL + true - opengl32.lib;%(AdditionalDependencies) + opengl32.lib;d3d12.lib true Windows - true - true ../../source/RenderingPlugin.def @@ -261,6 +243,9 @@ ENDLOCAL - - + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + \ No newline at end of file diff --git a/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj.filters b/PluginSource/projects/VisualStudio2022/RenderingPlugin.vcxproj.filters similarity index 64% rename from PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj.filters rename to PluginSource/projects/VisualStudio2022/RenderingPlugin.vcxproj.filters index 5cb27e52..1b8c3c5b 100644 --- a/PluginSource/projects/UWPVisualStudio2015/RenderingPlugin.vcxproj.filters +++ b/PluginSource/projects/VisualStudio2022/RenderingPlugin.vcxproj.filters @@ -1,18 +1,8 @@  - - - - {0b7de993-622e-4614-b3bc-a6dd42480fbe} - - - - - - - - - + + + Unity @@ -31,11 +21,37 @@ Unity - - + + gl3w + + + gl3w + + + + + + + + + + + gl3w + + + + + {c01468d4-90d4-4d19-9a9b-ee2f1b5e9083} + + + {f00ad923-e825-43a2-b22c-b3380a3a8813} + - + + + + - + \ No newline at end of file diff --git a/PluginSource/source/PlatformBase.h b/PluginSource/source/PlatformBase.h index 9482d3fd..f331f396 100644 --- a/PluginSource/source/PlatformBase.h +++ b/PluginSource/source/PlatformBase.h @@ -47,7 +47,7 @@ #endif #elif UNITY_WIN #define SUPPORT_D3D11 1 // comment this out if you don't have D3D11 header/library files - #define SUPPORT_D3D12 1 // comment this out if you don't have D3D12 header/library files + #define SUPPORT_D3D12 0 // comment this out if you don't have D3D12 header/library files #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 #define SUPPORT_VULKAN 0 // Requires Vulkan SDK to be installed diff --git a/PluginSource/source/RenderAPI.cpp b/PluginSource/source/RenderAPI.cpp index 238b397f..6b18cede 100644 --- a/PluginSource/source/RenderAPI.cpp +++ b/PluginSource/source/RenderAPI.cpp @@ -2,7 +2,6 @@ #include "PlatformBase.h" #include "Unity/IUnityGraphics.h" - RenderAPI* CreateRenderAPI(UnityGfxRenderer apiType) { # if SUPPORT_D3D11 @@ -23,7 +22,7 @@ RenderAPI* CreateRenderAPI(UnityGfxRenderer apiType) # if SUPPORT_OPENGL_UNIFIED - if (apiType == kUnityGfxRendererOpenGLCore || apiType == kUnityGfxRendererOpenGLES20 || apiType == kUnityGfxRendererOpenGLES30) + if (apiType == kUnityGfxRendererOpenGLCore || apiType == kUnityGfxRendererOpenGLES30) { extern RenderAPI* CreateRenderAPI_OpenGLCoreES(UnityGfxRenderer apiType); return CreateRenderAPI_OpenGLCoreES(apiType); diff --git a/PluginSource/source/RenderAPI.h b/PluginSource/source/RenderAPI.h index b2387844..f2935ff8 100644 --- a/PluginSource/source/RenderAPI.h +++ b/PluginSource/source/RenderAPI.h @@ -6,7 +6,6 @@ struct IUnityInterfaces; - // Super-simple "graphics abstraction". This is nothing like how a proper platform abstraction layer would look like; // all this does is a base interface for whatever our plugin sample needs. Which is only "draw some triangles" // and "modify a texture" at this point. @@ -47,6 +46,41 @@ class RenderAPI virtual void* BeginModifyVertexBuffer(void* bufferHandle, size_t* outBufferSize) = 0; // End modifying vertex buffer data. virtual void EndModifyVertexBuffer(void* bufferHandle) = 0; + + // -------------------------------------------------------------------------- + // DX12 plugin specific functions + // -------------------------------------------------------------------------- + + // Draws to a texture that is created by the plugin + virtual void drawToPluginTexture() {} + + // Draws to a a unity RenderBuffer which can be set with + // setRenderTextureResource(). When the texture resource is not + // set with setRenderTextureResource() one is created by the plugin + virtual void drawToRenderTexture() {} + + // Returns the native resource pointer to either unity render buffer or + // to the resource created by the plugin (i.e ID3D12Resource* in case of DX12) + virtual void* getRenderTexture() { return nullptr; } + + // Sets the underlying resource to unity RenderBuffer + // see https://docs.unity3d.com/ScriptReference/RenderBuffer.html + // setting rb to nullptr is used to signal the plugin that the + // previously set RenderBuffer is no longer valid + virtual void setRenderTextureResource(UnityRenderBuffer rb) {} + + // This should return true when the plugin is used with the unity player + // and false when the editor is used. The editor uses multiple swap + // chains (for each window) so instead of choosing one of them nullptr is returned. + virtual bool isSwapChainAvailable() { return false; }; + + // These require the swap chain to be available to be functional. + // When the swap chain is not available these simply return 0 + + virtual unsigned int getPresentFlags() { return 0; } + virtual unsigned int getSyncInterval() { return 0; } + virtual unsigned int getBackbufferWidth() { return 0; } + virtual unsigned int getBackbufferHeight() { return 0; } }; diff --git a/PluginSource/source/RenderAPI_D3D12.cpp b/PluginSource/source/RenderAPI_D3D12.cpp index aabc3273..ec5dacd4 100644 --- a/PluginSource/source/RenderAPI_D3D12.cpp +++ b/PluginSource/source/RenderAPI_D3D12.cpp @@ -5,268 +5,1579 @@ // Direct3D 12 implementation of RenderAPI. - #if SUPPORT_D3D12 #include +#include +#include #include +#include "d3dx12.h" #include "Unity/IUnityGraphicsD3D12.h" +#include +#include +#include +#include +#include + +#define ReturnOnFail(x, hr, OnFailureMsg, onFailureReturnValue) hr = x; if(FAILED(hr)){OutputDebugStringA(OnFailureMsg); return onFailureReturnValue;} + +#define D3D12_DEFAULT_HEAP_TRIANGLE_BUFFER_NAME L"Native Plugin Default Heap Triangle Vertex Buffer" +#define D3D12_UPLOAD_HEAP_TRIANGLE_BUFFER_NAME L"Native Plugin Upload Heap Triangle Vertex Buffer" +#define D3D12_UPLOAD_HEAP_TEXTURE_BUFFER_NAME L"Native Plugin Upload Heap Texture" +#define D3D12_UPLOAD_HEAP_VERTEX_BUFFER_NAME L"Native Plugin Upload Heap Vertex Buffer" + +// Compiled from: +/* + cbuffer MyCB : register(b0) + { + float4x4 worldMatrix; + } + void VS(float3 pos : POSITION, float4 color : COLOR, out float4 ocolor : COLOR, out float4 opos : SV_Position) + { + opos = mul(worldMatrix, float4(pos, 1)); + ocolor = color; + } + float4 PS(float4 color : COLOR) : SV_TARGET + { + return color; + } + */ + + // using: + /* + dxc -T vs_6_0 -E VSMain -Fo vertex_shader .\shaders.hlsl -Qstrip_reflect -Qstrip_debug + dxc -T ps_6_0 -E PSMain -Fo pixel_shader .\shaders.hlsl -Qstrip_reflect -Qstrip_debug + */ +const BYTE vertex_shader[] = +{ + 68,88,66,67,128,57,232,34,242,147,249,9,179,113,162,105,42,26,31, + 250,1,0,0,0,109,9,0,0,6,0,0,0,56,0,0,0,72,0,0, + 0,167,0,0,0,9,1,0,0,237,1,0,0,9,2,0,0,83,70,73, + 48,8,0,0,0,0,0,0,0,0,0,0,0,73,83,71,49,87,0,0, + 0,2,0,0,0,8,0,0,0,0,0,0,0,72,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,0,0,0,0,7,7,0,0,0,0,0, + 0,0,0,0,0,81,0,0,0,0,0,0,0,0,0,0,0,3,0,0, + 0,1,0,0,0,15,15,0,0,0,0,0,0,80,79,83,73,84,73,79, + 78,0,67,79,76,79,82,0,79,83,71,49,90,0,0,0,2,0,0,0, + 8,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0,0,0,0, + 3,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0, + 78,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0, + 15,0,0,0,0,0,0,0,67,79,76,79,82,0,83,86,95,80,111,115, + 105,116,105,111,110,0,80,83,86,48,220,0,0,0,48,0,0,0,1,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255, + 255,255,1,0,0,0,2,2,0,2,2,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,1,0,0,0,24,0,0,0,2,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,24,0, + 0,0,0,80,79,83,73,84,73,79,78,0,67,79,76,79,82,0,67,79, + 76,79,82,0,0,0,1,0,0,0,0,0,0,0,16,0,0,0,1,0, + 0,0,0,0,0,0,1,0,67,0,3,0,0,0,10,0,0,0,0,0, + 0,0,1,1,68,0,3,0,0,0,16,0,0,0,0,0,0,0,1,0, + 68,0,3,2,0,0,0,0,0,0,0,0,0,0,1,1,68,3,3,4, + 0,0,240,0,0,0,240,0,0,0,240,0,0,0,0,0,0,0,1,0, + 0,0,2,0,0,0,4,0,0,0,8,0,0,0,72,65,83,72,20,0, + 0,0,0,0,0,0,104,176,13,123,21,10,21,217,124,92,148,133,249,234, + 46,114,68,88,73,76,92,7,0,0,96,0,1,0,215,1,0,0,68,88, + 73,76,0,1,0,0,16,0,0,0,68,7,0,0,66,67,192,222,33,12, + 0,0,206,1,0,0,11,130,32,0,2,0,0,0,19,0,0,0,7,129, + 35,145,65,200,4,73,6,16,50,57,146,1,132,12,37,5,8,25,30,4, + 139,98,128,20,69,2,66,146,11,66,164,16,50,20,56,8,24,75,10,50, + 82,136,72,144,20,32,67,70,136,165,0,25,50,66,228,72,14,144,145,34, + 196,80,65,81,129,140,225,131,229,138,4,41,70,6,81,24,0,0,8,0, + 0,0,27,140,224,255,255,255,255,7,64,2,168,13,132,240,255,255,255,255, + 3,32,109,48,134,255,255,255,255,31,0,9,168,0,73,24,0,0,3,0, + 0,0,19,130,96,66,32,76,8,6,0,0,0,0,137,32,0,0,35,0, + 0,0,50,34,72,9,32,100,133,4,147,34,164,132,4,147,34,227,132,161, + 144,20,18,76,138,140,11,132,164,76,16,104,35,0,37,0,20,102,0,230, + 8,192,96,142,0,41,198,32,132,20,66,166,24,128,16,82,6,161,163,134, + 203,159,176,135,144,124,110,163,138,149,152,252,226,182,17,49,198,24,84,238, + 25,46,127,194,30,66,242,67,160,25,22,2,5,171,16,138,48,66,173,20, + 131,140,49,232,205,17,4,197,96,164,16,18,73,14,4,12,35,16,67,18, + 212,123,14,71,154,22,0,115,168,201,55,49,110,67,129,165,155,10,4,0, + 0,0,19,20,114,192,135,116,96,135,54,104,135,121,104,3,114,192,135,13, + 175,80,14,109,208,14,122,80,14,109,0,15,122,48,7,114,160,7,115,32, + 7,109,144,14,113,160,7,115,32,7,109,144,14,120,160,7,115,32,7,109, + 144,14,113,96,7,122,48,7,114,208,6,233,48,7,114,160,7,115,32,7, + 109,144,14,118,64,7,122,96,7,116,208,6,230,16,7,118,160,7,115,32, + 7,109,96,14,115,32,7,122,48,7,114,208,6,230,96,7,116,160,7,118, + 64,7,109,224,14,120,160,7,113,96,7,122,48,7,114,160,7,118,64,7, + 67,158,0,0,0,0,0,0,0,0,0,0,0,134,60,6,16,0,1,0, + 0,0,0,0,0,0,12,121,16,32,0,4,0,0,0,0,0,0,0,24, + 242,52,64,0,12,0,0,0,0,0,0,0,48,228,121,128,0,8,0,0, + 0,0,0,0,0,96,200,35,1,1,48,0,0,0,0,0,0,0,64,22, + 8,0,14,0,0,0,50,30,152,20,25,17,76,144,140,9,38,71,198,4, + 67,34,37,48,2,80,12,5,24,80,6,229,80,30,84,74,98,4,160,12, + 10,161,8,8,207,0,80,30,75,65,16,248,128,15,248,0,2,129,64,0, + 0,0,121,24,0,0,87,0,0,0,26,3,76,144,70,2,19,196,49,32, + 195,27,67,129,147,75,179,11,163,43,75,1,137,113,185,113,129,113,153,193, + 201,177,1,65,129,145,137,49,195,49,155,41,139,73,217,16,4,19,4,194, + 152,32,16,199,6,97,32,38,8,4,178,65,24,12,10,118,115,27,6,196, + 32,38,8,152,68,96,130,64,36,27,16,66,89,8,98,96,128,13,65,179, + 129,0,0,7,152,32,100,211,134,0,154,32,8,0,5,171,41,34,80,79, + 83,73,84,73,79,78,19,132,162,153,32,20,206,134,128,152,32,20,207,4, + 129,80,38,8,196,178,65,200,180,13,11,65,85,214,101,13,24,97,109,44, + 134,158,152,158,164,38,8,5,52,65,32,152,13,66,246,109,88,134,174,178, + 46,107,240,6,11,12,54,8,92,24,76,16,138,104,195,66,116,149,117,141, + 193,224,17,22,24,112,153,178,250,130,122,155,75,163,75,123,115,219,176,12, + 101,80,97,151,55,120,131,5,6,27,4,50,48,131,13,131,24,156,1,176, + 161,144,38,52,120,128,42,108,108,118,109,46,105,100,101,110,116,83,130,160, + 10,25,158,139,93,153,220,92,218,155,219,148,128,104,66,134,231,98,23,198, + 102,87,38,55,37,48,234,144,225,185,204,161,133,145,149,201,53,189,145,149, + 177,77,9,144,50,100,120,46,114,101,115,111,117,114,99,101,115,83,2,167, + 14,25,158,139,93,90,217,93,18,217,20,93,24,93,217,148,0,170,67,134, + 231,82,230,70,39,151,7,245,150,230,70,55,55,37,64,3,0,0,121,24, + 0,0,76,0,0,0,51,8,128,28,196,225,28,102,20,1,61,136,67,56, + 132,195,140,66,128,7,121,120,7,115,152,113,12,230,0,15,237,16,14,244, + 128,14,51,12,66,30,194,193,29,206,161,28,102,48,5,61,136,67,56,132, + 131,27,204,3,61,200,67,61,140,3,61,204,120,140,116,112,7,123,8,7, + 121,72,135,112,112,7,122,112,3,118,120,135,112,32,135,25,204,17,14,236, + 144,14,225,48,15,110,48,15,227,240,14,240,80,14,51,16,196,29,222,33, + 28,216,33,29,194,97,30,102,48,137,59,188,131,59,208,67,57,180,3,60, + 188,131,60,132,3,59,204,240,20,118,96,7,123,104,7,55,104,135,114,104, + 7,55,128,135,112,144,135,112,96,7,118,40,7,118,248,5,118,120,135,119, + 128,135,95,8,135,113,24,135,114,152,135,121,152,129,44,238,240,14,238,224, + 14,245,192,14,236,48,3,98,200,161,28,228,161,28,204,161,28,228,161,28, + 220,97,28,202,33,28,196,129,29,202,97,6,214,144,67,57,200,67,57,152, + 67,57,200,67,57,184,195,56,148,67,56,136,3,59,148,195,47,188,131,60, + 252,130,59,212,3,59,176,195,12,196,33,7,124,112,3,122,40,135,118,128, + 135,25,209,67,14,248,224,6,228,32,14,231,224,6,246,16,14,242,192,14, + 225,144,15,239,80,15,244,0,0,0,113,32,0,0,24,0,0,0,6,32, + 188,172,13,108,195,229,59,143,47,4,84,81,16,81,233,0,67,73,24,128, + 128,249,197,109,91,129,52,92,190,243,248,66,68,0,19,17,2,205,176,16, + 22,48,13,151,239,60,254,226,0,131,216,60,212,228,23,183,109,2,213,112, + 249,206,227,75,147,19,17,40,53,61,212,228,23,183,109,4,210,112,249,206, + 227,79,68,52,33,64,132,249,197,109,3,0,0,0,97,32,0,0,122,0, + 0,0,19,4,65,44,16,0,0,0,5,0,0,0,68,138,171,20,10,97, + 6,160,236,74,174,8,168,148,0,197,17,0,0,0,35,6,9,0,130,96, + 32,97,4,99,89,193,136,65,2,128,32,24,24,29,130,93,208,49,98,144, + 0,32,8,6,134,151,100,24,129,140,24,36,0,8,130,129,241,41,90,246, + 36,35,6,9,0,130,96,96,128,193,178,105,146,50,98,144,0,32,8,6, + 70,24,48,219,70,45,35,6,9,0,130,96,96,136,65,195,113,8,51,98, + 144,0,32,8,6,198,24,56,93,55,53,35,6,7,0,130,96,208,136,65, + 131,120,163,9,1,48,154,32,4,163,9,131,48,154,64,12,35,6,7,0, + 130,96,208,156,129,212,144,193,104,66,0,140,38,8,193,104,194,32,140,38, + 16,195,136,193,1,128,32,24,52,108,112,73,213,104,66,0,140,38,8,193, + 104,194,32,140,38,16,195,136,193,1,128,32,24,52,113,192,93,106,48,154, + 16,0,163,9,66,48,154,48,8,163,9,196,96,211,37,159,17,3,4,0, + 65,48,120,236,192,12,158,43,24,49,64,0,16,4,131,231,14,206,96,185, + 2,11,14,232,152,181,201,103,196,0,1,64,16,12,30,61,80,3,105,11, + 70,12,16,0,4,193,224,217,131,53,112,182,192,2,5,58,150,125,242,25, + 49,64,0,16,4,131,199,15,220,160,250,130,17,3,4,0,65,48,120,254, + 224,13,162,47,176,160,129,142,113,99,32,159,17,3,4,0,65,48,120,68, + 65,14,176,49,8,70,12,16,0,4,193,224,25,133,57,160,198,32,176,0, + 130,206,136,65,2,128,32,24,32,167,64,7,163,32,10,123,208,140,24,36, + 0,8,130,1,114,10,116,48,10,162,224,6,201,136,65,2,128,32,24,32, + 167,64,7,163,32,10,120,80,140,24,36,0,8,130,1,114,10,116,48,10, + 162,160,7,193,136,65,2,128,32,24,32,167,64,7,162,32,10,123,176,6, + 35,6,9,0,130,96,128,156,2,29,136,130,40,184,129,26,140,24,36,0, + 8,130,1,114,10,116,32,10,162,128,7,105,48,98,144,0,32,8,6,200, + 41,208,129,40,136,130,30,160,1,2,0,0,0,0 +}; + +const BYTE pixel_shader[] = +{ + 68,88,66,67,155,38,61,235,152,175,36,0,5,163,174,225,114,25,46, + 165,1,0,0,0,48,6,0,0,6,0,0,0,56,0,0,0,72,0,0, + 0,126,0,0,0,184,0,0,0,64,1,0,0,92,1,0,0,83,70,73, + 48,8,0,0,0,0,0,0,0,0,0,0,0,73,83,71,49,46,0,0, + 0,1,0,0,0,8,0,0,0,0,0,0,0,40,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,0,0,0,0,15,15,0,0,0,0,0, + 0,67,79,76,79,82,0,79,83,71,49,50,0,0,0,1,0,0,0,8, + 0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,64,0,0,0,3, + 0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,83,86,95,84,97, + 114,103,101,116,0,80,83,86,48,128,0,0,0,48,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255, + 255,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,0,67,79,76,79,82,0, + 0,1,0,0,0,0,0,0,0,16,0,0,0,1,0,0,0,0,0,0, + 0,1,0,68,0,3,2,0,0,0,0,0,0,0,0,0,0,1,0,68, + 16,3,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0, + 0,72,65,83,72,20,0,0,0,0,0,0,0,12,2,178,107,86,235,87, + 236,39,12,117,190,13,71,209,140,68,88,73,76,204,4,0,0,96,0,0, + 0,51,1,0,0,68,88,73,76,0,1,0,0,16,0,0,0,180,4,0, + 0,66,67,192,222,33,12,0,0,42,1,0,0,11,130,32,0,2,0,0, + 0,19,0,0,0,7,129,35,145,65,200,4,73,6,16,50,57,146,1,132, + 12,37,5,8,25,30,4,139,98,128,16,69,2,66,146,11,66,132,16,50, + 20,56,8,24,75,10,50,66,136,72,144,20,32,67,70,136,165,0,25,50, + 66,228,72,14,144,17,34,196,80,65,81,129,140,225,131,229,138,4,33,70, + 6,81,24,0,0,6,0,0,0,27,140,224,255,255,255,255,7,64,2,168, + 13,132,240,255,255,255,255,3,32,1,0,0,0,73,24,0,0,2,0,0, + 0,19,130,96,66,32,0,0,0,137,32,0,0,15,0,0,0,50,34,8, + 9,32,100,133,4,19,34,164,132,4,19,34,227,132,161,144,20,18,76,136, + 140,11,132,132,76,16,48,35,0,37,0,138,25,128,57,2,48,152,35,64, + 138,49,68,84,68,86,12,32,162,26,194,129,128,52,32,0,0,19,20,114, + 192,135,116,96,135,54,104,135,121,104,3,114,192,135,13,175,80,14,109,208, + 14,122,80,14,109,0,15,122,48,7,114,160,7,115,32,7,109,144,14,113, + 160,7,115,32,7,109,144,14,120,160,7,115,32,7,109,144,14,113,96,7, + 122,48,7,114,208,6,233,48,7,114,160,7,115,32,7,109,144,14,118,64, + 7,122,96,7,116,208,6,230,16,7,118,160,7,115,32,7,109,96,14,115, + 32,7,122,48,7,114,208,6,230,96,7,116,160,7,118,64,7,109,224,14, + 120,160,7,113,96,7,122,48,7,114,160,7,118,64,7,67,158,0,0,0, + 0,0,0,0,0,0,0,0,134,60,6,16,0,1,0,0,0,0,0,0, + 0,12,121,16,32,0,4,0,0,0,0,0,0,0,200,2,1,11,0,0, + 0,50,30,152,16,25,17,76,144,140,9,38,71,198,4,67,162,18,24,1, + 40,134,50,40,15,170,146,24,1,40,130,66,40,16,218,177,12,130,8,4, + 2,1,0,0,0,121,24,0,0,65,0,0,0,26,3,76,144,70,2,19, + 196,49,32,195,27,67,129,147,75,179,11,163,43,75,1,137,113,185,113,129, + 113,153,193,201,177,1,65,129,145,137,49,195,49,155,41,139,73,217,16,4, + 19,4,98,152,32,16,196,6,97,32,38,8,68,177,65,24,12,10,112,115, + 27,6,196,32,38,8,75,179,33,80,38,8,2,64,1,106,138,197,208,19, + 211,147,212,4,161,64,38,8,69,178,33,32,38,8,133,50,65,40,150,9, + 2,97,76,16,136,99,131,64,85,27,22,194,121,160,72,26,38,2,178,54, + 4,23,147,41,171,47,170,48,185,179,50,186,9,66,193,108,88,136,236,209, + 34,104,152,8,200,218,16,108,27,6,140,3,54,20,76,211,1,64,21,54, + 54,187,54,151,52,178,50,55,186,41,65,80,133,12,207,197,174,76,110,46, + 237,205,109,74,64,52,33,195,115,177,11,99,179,43,147,155,18,24,117,200, + 240,92,230,208,194,200,202,228,154,222,200,202,216,166,4,72,29,50,60,23, + 187,180,178,187,36,178,41,186,48,186,178,41,129,82,135,12,207,165,204,141, + 78,46,15,234,45,205,141,110,110,74,208,1,0,121,24,0,0,76,0,0, + 0,51,8,128,28,196,225,28,102,20,1,61,136,67,56,132,195,140,66,128, + 7,121,120,7,115,152,113,12,230,0,15,237,16,14,244,128,14,51,12,66, + 30,194,193,29,206,161,28,102,48,5,61,136,67,56,132,131,27,204,3,61, + 200,67,61,140,3,61,204,120,140,116,112,7,123,8,7,121,72,135,112,112, + 7,122,112,3,118,120,135,112,32,135,25,204,17,14,236,144,14,225,48,15, + 110,48,15,227,240,14,240,80,14,51,16,196,29,222,33,28,216,33,29,194, + 97,30,102,48,137,59,188,131,59,208,67,57,180,3,60,188,131,60,132,3, + 59,204,240,20,118,96,7,123,104,7,55,104,135,114,104,7,55,128,135,112, + 144,135,112,96,7,118,40,7,118,248,5,118,120,135,119,128,135,95,8,135, + 113,24,135,114,152,135,121,152,129,44,238,240,14,238,224,14,245,192,14,236, + 48,3,98,200,161,28,228,161,28,204,161,28,228,161,28,220,97,28,202,33, + 28,196,129,29,202,97,6,214,144,67,57,200,67,57,152,67,57,200,67,57, + 184,195,56,148,67,56,136,3,59,148,195,47,188,131,60,252,130,59,212,3, + 59,176,195,12,196,33,7,124,112,3,122,40,135,118,128,135,25,209,67,14, + 248,224,6,228,32,14,231,224,6,246,16,14,242,192,14,225,144,15,239,80, + 15,244,0,0,0,113,32,0,0,10,0,0,0,6,32,164,172,5,76,195, + 229,59,143,191,56,192,32,54,15,53,249,197,109,155,64,53,92,190,243,248, + 210,228,68,4,74,77,15,53,249,197,109,3,0,97,32,0,0,30,0,0, + 0,19,4,65,44,16,0,0,0,3,0,0,0,68,133,48,3,80,10,84, + 37,80,6,0,0,35,6,9,0,130,96,96,72,197,243,40,196,136,65,2, + 128,32,24,24,147,1,65,67,49,98,144,0,32,8,6,6,117,68,209,98, + 140,24,36,0,8,130,129,81,33,146,68,28,35,6,9,0,130,96,128,84, + 199,52,57,196,136,65,2,128,32,24,32,213,49,77,198,48,98,144,0,32, + 8,6,72,117,76,83,35,140,24,36,0,8,130,1,82,29,211,84,4,8, + 0,0,0,0,0 +}; + +struct Vec3 +{ + float x; + float y; + float z; +}; + +struct Vec4 +{ + float x; + float y; + float z; + float w; +}; + +struct Vertex +{ + Vec3 position; + Vec4 color; +}; + +static void handle_hr(HRESULT hr, const char* error = "") +{ + if (FAILED(hr)) + { + OutputDebugStringA(error); + std::cerr << error << "\n"; + abort(); + } +} + +struct D3D12MemoryObject +{ + ID3D12Resource* resource; + void* mapped; + D3D12_HEAP_TYPE heapType; + D3D12_RESOURCE_FLAGS resourceFlags; + UINT64 deviceMemorySize; +}; + +struct D3D12DefaultBufferMemoryObject +{ + D3D12MemoryObject uploadResource; + D3D12MemoryObject defaultResource; +}; class RenderAPI_D3D12 : public RenderAPI { public: - RenderAPI_D3D12(); - virtual ~RenderAPI_D3D12() { } + RenderAPI_D3D12(); + virtual ~RenderAPI_D3D12() override { } - virtual void ProcessDeviceEvent(UnityGfxDeviceEventType type, IUnityInterfaces* interfaces); + virtual void ProcessDeviceEvent(UnityGfxDeviceEventType type, IUnityInterfaces* interfaces) override; + virtual bool GetUsesReverseZ() override { return true; } - virtual bool GetUsesReverseZ() { return true; } + //----------------------------------------------------------- + // These functions will be called from unity render thread, + // see kUnityD3D12GraphicsQueueAccess_DontCare - virtual void DrawSimpleTriangles(const float worldMatrix[16], int triangleCount, const void* verticesFloat3Byte4); + // Demonstrates how to use the CommandRecordingState + virtual void DrawSimpleTriangles(const float worldMatrix[16], int triangleCount, const void* verticesFloat3Byte4) override; - virtual void* BeginModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int* outRowPitch); - virtual void EndModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int rowPitch, void* dataPtr); + // These demonstrate how to submit work via ExecuteCommandList + virtual void* BeginModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int* outRowPitch) override; + virtual void EndModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int rowPitch, void* dataPtr) override; + virtual void* BeginModifyVertexBuffer(void* bufferHandle, size_t* outBufferSize) override; + virtual void EndModifyVertexBuffer(void* bufferHandle) override; + virtual void drawToRenderTexture() override; + //----------------------------------------------------------- - virtual void* BeginModifyVertexBuffer(void* bufferHandle, size_t* outBufferSize); - virtual void EndModifyVertexBuffer(void* bufferHandle); + //----------------------------------------------------------- + // These functions will be called from unity submission thread, + // see kUnityD3D12GraphicsQueueAccess_Allow -private: - UINT64 AlignPow2(UINT64 value); - UINT64 GetAlignedSize(int width, int height, int pixelSize, int rowPitch); - ID3D12Resource* GetUploadResource(UINT64 size); - void CreateResources(); - void ReleaseResources(); + // Demonstrates how to submit work to unity command queue + // directly via GetCommandQueue + virtual void drawToPluginTexture() override; + //----------------------------------------------------------- + + virtual void* getRenderTexture() override; + virtual void setRenderTextureResource(UnityRenderBuffer rb) override; + + virtual bool isSwapChainAvailable() override; + virtual unsigned int getPresentFlags() override; + virtual unsigned int getSyncInterval() override; + virtual unsigned int getBackbufferWidth() override; + virtual unsigned int getBackbufferHeight() override; private: - IUnityGraphicsD3D12v2* s_D3D12; - ID3D12Resource* s_D3D12Upload; - ID3D12CommandAllocator* s_D3D12CmdAlloc; - ID3D12GraphicsCommandList* s_D3D12CmdList; - UINT64 s_D3D12FenceValue = 0; - HANDLE s_D3D12Event = NULL; -}; + UINT64 align_pow2(UINT64 value); + + // Aligns texture to power of 2 boundary + UINT64 get_aligned_size(int width, int height, int pixelSize, int rowPitch); + + // Creates a new buffer on D3D12_HEAP_TYPE_UPLOAD when resource points to a nullptr. + // When resource points to a existing ID3D12Resource* we only check if it's big enough + // to hold the size, if not return false + bool get_upload_resource(ID3D12Resource** resource, UINT64 size, LPCWSTR name); + + // Creates dx12 buffer, if heapType allows CPU-access the resource will be also mapped + bool create_D3D12_buffer(size_t sizeInBytes, D3D12_HEAP_TYPE heapType, D3D12_RESOURCE_FLAGS resourceFlags, D3D12_RESOURCE_STATES initialResourceState, LPCWSTR resourceName, D3D12MemoryObject* buffer); + + // Creates two buffers; one on D3D12_HEAP_TYPE_UPLOAD and one on D3D12_HEAP_TYPE_DEFAULT, + // copies contents from initData to -> upload buffer -> default buffer + bool create_D3D12_default_buffer(ID3D12GraphicsCommandList* cmdLst, const void* initData, unsigned int bufferSizeInBytes, LPCWSTR uploadHeapResourceName, LPCWSTR defaultHeapResourceName, D3D12DefaultBufferMemoryObject& outMemoryObj); + + ID3D12PipelineState* create_triangle_pipeline(); + void create_triangle_input_layout(); + bool create_triangle_root_signature(); + // Push buffer to deletion queue + void safe_destroy(unsigned long long frameNumber, const D3D12MemoryObject& buffer); + + // Processes deletion queue + void garbage_collect(bool force = false); + + // Destroy buffer without deletion queue + void immediate_destroy_d3d12_buffer(D3D12MemoryObject& buffer); + + // Creates and initializes all resources that are used across multiple frames + void initialize_and_create_resources(); + void release_resources(); + + // Records commands that draw a single triangle to target_texture + void record_draw_cmd_list(ID3D12CommandAllocator* cmd_alloc, ID3D12GraphicsCommandList* cmd, ID3D12RootSignature* rootsig, D3D12_CPU_DESCRIPTOR_HANDLE rtv_handle, D3D12_VERTEX_BUFFER_VIEW* vbview, const float* world_matrix, D3D12_VIEWPORT* viewport, ID3D12PipelineState* pso, ID3D12Resource* target_texture, D3D12_RESOURCE_STATES target_state); + + // Demonstrates how to submit work to unity worker thread via ExecuteCommandList API + UINT64 submit_cmd_to_unity_worker(ID3D12GraphicsCommandList* cmd, UnityGraphicsD3D12ResourceState* resource_states, int state_count); + + // Creates a texture that can be used as render target + ID3D12Resource* create_render_texture(); + void create_render_texture_rtv(ID3D12DescriptorHeap* desc_heap, ID3D12Resource* target, UINT offset); + + void transition_barrier(ID3D12GraphicsCommandList* cmd, ID3D12Resource* resource, D3D12_RESOURCE_STATES before, D3D12_RESOURCE_STATES after); + + // When unity frame fence changes we can be sure that previously submitted command lists have finished executing + void wait_for_unity_frame_fence(UINT64 fence_value); + + // Wait on any user provided fence + void wait_on_fence(UINT64 fence_value, ID3D12Fence* fence, HANDLE fence_event); + + typedef std::vector D3D12Buffers; + typedef std::map DeleteQueue; + typedef std::unordered_map MappedVertexBuffers; + + IUnityGraphicsD3D12v7* s_d3d12; + + ID3D12Resource* s_upload_texture; + ID3D12Resource* s_upload_buffer; + ID3D12PipelineState* m_triangle_pso; + D3D12_INPUT_ELEMENT_DESC m_triangle_layout[2]; + ID3D12RootSignature* m_triangle_rootsig; + D3D12DefaultBufferMemoryObject m_triangle_vertex_buffer; + ID3D12DescriptorHeap* m_triangle_rtv_desc_heap; + ID3D12DescriptorHeap* m_triangle_dsv_desc_heap; + DeleteQueue m_DeleteQueue; + MappedVertexBuffers m_mapped_triangle_vertex_buffers; + + ID3D12DescriptorHeap* m_texture_rtv_desc_heap; + UINT m_texture_rtv_desc_size; + ID3D12Resource* m_render_texture_vertex_buffer; + D3D12_VERTEX_BUFFER_VIEW m_texture_vertex_buffer_view; + std::atomic m_render_texture; + std::atomic m_plugin_texture; + UINT m_texture_width = 256; + UINT m_texture_height = 256; + ID3D12CommandAllocator* m_render_texture_cmd_allocator; + ID3D12GraphicsCommandList* m_render_texture_cmd_list; + ID3D12CommandAllocator* m_plugin_texture_cmd_allocator; + ID3D12GraphicsCommandList* m_plugin_texture_cmd_list; + ID3DBlob* m_render_texture_root_blob; + ID3D12RootSignature* m_texture_root_sig; + ID3D12PipelineState* m_texture_pso; + std::atomic m_are_resources_initialized = false; + + UINT64 m_plugin_texture_fence_value = 0; + ID3D12Fence* m_plugin_texture_fence; + HANDLE m_plugin_texture_fence_event; + + ID3D12CommandAllocator* m_vertex_copy_cmd_allocator; + ID3D12GraphicsCommandList* m_vertex_copy_cmd_list; + + ID3D12CommandAllocator* m_texture_copy_cmd_allocator; + ID3D12GraphicsCommandList* m_texture_copy_cmd_list; + + UINT64 m_vertex_copy_fence = 0; + UINT64 m_texture_copy_fence = 0; + UINT64 m_render_texture_draw_fence = 0; + + HANDLE m_fence_event; + + bool m_is_render_texture_created_by_unity = false; +}; RenderAPI* CreateRenderAPI_D3D12() { - return new RenderAPI_D3D12(); + return new RenderAPI_D3D12(); } - const UINT kNodeMask = 0; - RenderAPI_D3D12::RenderAPI_D3D12() - : s_D3D12(NULL) - , s_D3D12Upload(NULL) - , s_D3D12CmdAlloc(NULL) - , s_D3D12CmdList(NULL) - , s_D3D12FenceValue(0) - , s_D3D12Event(NULL) + : s_d3d12(NULL) + , s_upload_texture(NULL) + , s_upload_buffer(NULL) + , m_triangle_pso(NULL) + , m_triangle_rootsig(NULL) + , m_triangle_rtv_desc_heap(NULL) + , m_triangle_dsv_desc_heap(NULL) + , m_texture_rtv_desc_heap(NULL) + , m_texture_rtv_desc_size(NULL) + , m_render_texture_vertex_buffer(NULL) + , m_render_texture_cmd_allocator(NULL) + , m_render_texture_cmd_list(NULL) { } -UINT64 RenderAPI_D3D12::AlignPow2(UINT64 value) +UINT64 CalcByteAlignedValue(unsigned int byteSize, unsigned int byteAlignment) { - UINT64 aligned = pow(2, (int)log2(value)); - return aligned >= value ? aligned : aligned * 2; + UINT byteAlignmentMinusOne = byteAlignment - 2; + return (byteSize + byteAlignmentMinusOne) & ~byteAlignmentMinusOne; } -UINT64 RenderAPI_D3D12::GetAlignedSize( int width, int height, int pixelSize, int rowPitch) +UINT64 RenderAPI_D3D12::align_pow2(UINT64 value) { - UINT64 size = width * height * pixelSize; + UINT64 aligned = static_cast(pow(2, (int)log2(value))); + return aligned >= value ? aligned : aligned * 2; +} - size = AlignPow2(size); +UINT64 RenderAPI_D3D12::get_aligned_size(int width, int height, int pixelSize, int rowPitch) +{ + UINT64 size = width * height * pixelSize; - if (size < D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT) - { - return D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT; - } - else if (width * pixelSize < rowPitch) - { - return rowPitch * height; - } - else - { - return size; - } + size = align_pow2(size); + + if (size < D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT) + { + return D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT; + } + else if (width * pixelSize < rowPitch) + { + return rowPitch * height; + } + else + { + return size; + } } -ID3D12Resource* RenderAPI_D3D12::GetUploadResource(UINT64 size) +bool RenderAPI_D3D12::create_D3D12_default_buffer(ID3D12GraphicsCommandList* cmdLst, const void* initData, unsigned int bufferSizeInBytes, LPCWSTR uploadHeapResourceName, LPCWSTR defaultHeapResourceName, D3D12DefaultBufferMemoryObject& outMemoryObj) { - if (s_D3D12Upload) - { - D3D12_RESOURCE_DESC desc = s_D3D12Upload->GetDesc(); - if (desc.Width == size) - return s_D3D12Upload; - else - s_D3D12Upload->Release(); - } + if (!cmdLst) + return false; - // Texture upload buffer - D3D12_HEAP_PROPERTIES heapProps = {}; - heapProps.Type = D3D12_HEAP_TYPE_UPLOAD; - heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; - heapProps.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; - heapProps.CreationNodeMask = kNodeMask; - heapProps.VisibleNodeMask = kNodeMask; + if (!create_D3D12_buffer(bufferSizeInBytes, D3D12_HEAP_TYPE_UPLOAD, D3D12_RESOURCE_FLAG_NONE, D3D12_RESOURCE_STATE_GENERIC_READ, uploadHeapResourceName, &outMemoryObj.uploadResource)) + return false; - D3D12_RESOURCE_DESC heapDesc = {}; - heapDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; - heapDesc.Alignment = 0; - heapDesc.Width = size; - heapDesc.Height = 1; - heapDesc.DepthOrArraySize = 1; - heapDesc.MipLevels = 1; - heapDesc.Format = DXGI_FORMAT_UNKNOWN; - heapDesc.SampleDesc.Count = 1; - heapDesc.SampleDesc.Quality = 0; - heapDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR; - heapDesc.Flags = D3D12_RESOURCE_FLAG_NONE; + if (!create_D3D12_buffer(bufferSizeInBytes, D3D12_HEAP_TYPE_DEFAULT, D3D12_RESOURCE_FLAG_NONE, D3D12_RESOURCE_STATE_COMMON, defaultHeapResourceName, &outMemoryObj.defaultResource)) + return false; - ID3D12Device* device = s_D3D12->GetDevice(); - HRESULT hr = device->CreateCommittedResource( - &heapProps, - D3D12_HEAP_FLAG_NONE, - &heapDesc, - D3D12_RESOURCE_STATE_GENERIC_READ, - nullptr, - IID_PPV_ARGS(&s_D3D12Upload)); - if (FAILED(hr)) - { - OutputDebugStringA("Failed to CreateCommittedResource.\n"); - } + ID3D12Resource* uploadResource = outMemoryObj.uploadResource.resource; + ID3D12Resource* defaultResource = outMemoryObj.defaultResource.resource; - return s_D3D12Upload; -} + D3D12_SUBRESOURCE_DATA subResourceDataDesc; + subResourceDataDesc.pData = initData; + subResourceDataDesc.RowPitch = outMemoryObj.uploadResource.deviceMemorySize; + subResourceDataDesc.SlicePitch = subResourceDataDesc.RowPitch; + transition_barrier(cmdLst, defaultResource, D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_COPY_DEST); + UpdateSubresources<1>(cmdLst, defaultResource, uploadResource, 0, 0, 1, &subResourceDataDesc); + transition_barrier(cmdLst, defaultResource, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_COMMON); + + return true; +} -void RenderAPI_D3D12::CreateResources() +bool RenderAPI_D3D12::create_D3D12_buffer(size_t sizeInBytes, D3D12_HEAP_TYPE heapType, D3D12_RESOURCE_FLAGS resourceFlags, D3D12_RESOURCE_STATES initialResourceState, LPCWSTR resourceName, D3D12MemoryObject* buffer) { - ID3D12Device* device = s_D3D12->GetDevice(); + ID3D12Device* device = s_d3d12->GetDevice(); - HRESULT hr = E_FAIL; + UINT64 alignedBufferSizeInBytes = CalcByteAlignedValue(static_cast(sizeInBytes), 256); - // Command list - hr = device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&s_D3D12CmdAlloc)); - if (FAILED(hr)) OutputDebugStringA("Failed to CreateCommandAllocator.\n"); - hr = device->CreateCommandList(kNodeMask, D3D12_COMMAND_LIST_TYPE_DIRECT, s_D3D12CmdAlloc, nullptr, IID_PPV_ARGS(&s_D3D12CmdList)); - if (FAILED(hr)) OutputDebugStringA("Failed to CreateCommandList.\n"); - s_D3D12CmdList->Close(); + HRESULT hr = S_OK; - // Fence - s_D3D12FenceValue = 0; - s_D3D12Event = CreateEvent(nullptr, FALSE, FALSE, nullptr); + CD3DX12_HEAP_PROPERTIES heap_props = CD3DX12_HEAP_PROPERTIES(heapType); + CD3DX12_RESOURCE_DESC resource_desc = CD3DX12_RESOURCE_DESC::Buffer(alignedBufferSizeInBytes, resourceFlags); + + ReturnOnFail( + device->CreateCommittedResource( + &heap_props, + D3D12_HEAP_FLAG_NONE, + &resource_desc, + initialResourceState, + NULL, + IID_PPV_ARGS(&buffer->resource)), + hr, + "CreateD3D12Buffer Failed\n", + false + ); + + if (heapType == D3D12_HEAP_TYPE_UPLOAD) + { + hr = buffer->resource->Map(0, NULL, &buffer->mapped); + if (FAILED(hr)) + { + OutputDebugStringA("Failed to map buffer.\n"); + buffer->resource->Release(); + buffer->resource = NULL; + return false; + } + } + else + buffer->mapped = NULL; + + buffer->heapType = heapType; + buffer->resourceFlags = resourceFlags; + buffer->deviceMemorySize = alignedBufferSizeInBytes; + buffer->resourceFlags = resourceFlags; + + if (resourceName != NULL) + buffer->resource->SetName(resourceName); + + return true; } +void RenderAPI_D3D12::create_triangle_input_layout() +{ + m_triangle_layout[0] = D3D12_INPUT_ELEMENT_DESC( + { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 } + ); + + m_triangle_layout[1] = D3D12_INPUT_ELEMENT_DESC( + { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 } + ); +} -void RenderAPI_D3D12::ReleaseResources() +bool RenderAPI_D3D12::create_triangle_root_signature() { - SAFE_RELEASE(s_D3D12Upload); - if (s_D3D12Event) - CloseHandle(s_D3D12Event); - SAFE_RELEASE(s_D3D12CmdList); - SAFE_RELEASE(s_D3D12CmdAlloc); + HRESULT hr = S_OK; + CD3DX12_ROOT_PARAMETER slotRootParameter[1]; + + slotRootParameter[0].InitAsConstants(64, 0, 0, D3D12_SHADER_VISIBILITY_ALL); + + CD3DX12_ROOT_SIGNATURE_DESC rsDesc(1, slotRootParameter, 0, NULL, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT); + ID3DBlob* serializedRootSigBlob = NULL; + ID3DBlob* errorBlob = NULL; + + ReturnOnFail( + D3D12SerializeRootSignature(&rsDesc, D3D_ROOT_SIGNATURE_VERSION_1, &serializedRootSigBlob, &errorBlob), + hr, + "D3D12SerializeRootSignature Failed\n", + false + ); + + ID3D12Device* device = s_d3d12->GetDevice(); + ReturnOnFail( + device->CreateRootSignature(0, serializedRootSigBlob->GetBufferPointer(), serializedRootSigBlob->GetBufferSize(), __uuidof(ID3D12RootSignature), reinterpret_cast(&m_triangle_rootsig)); , + hr, + "CreateRootSignature Failed\n", + false + ); + + return true; } +ID3D12PipelineState* RenderAPI_D3D12::create_triangle_pipeline() +{ + HRESULT hr = S_OK; + + if (!create_triangle_root_signature()) + return NULL; -void RenderAPI_D3D12::ProcessDeviceEvent(UnityGfxDeviceEventType type, IUnityInterfaces* interfaces) + create_triangle_input_layout(); + + D3D12_GRAPHICS_PIPELINE_STATE_DESC desc; + ZeroMemory(&desc, sizeof(D3D12_GRAPHICS_PIPELINE_STATE_DESC)); + + desc.InputLayout = { m_triangle_layout, 2 }; + desc.pRootSignature = m_triangle_rootsig; + desc.VS = { + vertex_shader, + sizeof(vertex_shader) + }; + + desc.PS = { + pixel_shader, + sizeof(pixel_shader) + }; + + desc.RasterizerState = CD3DX12_RASTERIZER_DESC(D3D12_DEFAULT); + desc.RasterizerState.MultisampleEnable = true; + desc.RasterizerState.CullMode = D3D12_CULL_MODE_NONE; + + desc.BlendState = CD3DX12_BLEND_DESC(D3D12_DEFAULT); + desc.BlendState.RenderTarget[0].RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL; + + desc.DepthStencilState = CD3DX12_DEPTH_STENCIL_DESC(D3D12_DEFAULT); + desc.DepthStencilState.DepthEnable = true; + desc.DepthStencilState.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ALL; // Unity uses reverse z depth + desc.DepthStencilState.DepthFunc = D3D12_COMPARISON_FUNC_GREATER_EQUAL; + + desc.SampleMask = UINT_MAX; + desc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + desc.NumRenderTargets = 1; + desc.RTVFormats[0] = DXGI_FORMAT_R8G8B8A8_UNORM; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.DSVFormat = DXGI_FORMAT_D32_FLOAT_S8X24_UINT; + + ID3D12Device* device = s_d3d12->GetDevice(); + ReturnOnFail( + device->CreateGraphicsPipelineState(&desc, __uuidof(ID3D12PipelineState), reinterpret_cast(&m_triangle_pso)), + hr, + "CreateGraphicsPipelineState Failed\n", + NULL + ); + + return m_triangle_pso; +} + +bool RenderAPI_D3D12::get_upload_resource(ID3D12Resource** outResource, UINT64 size, LPCWSTR name) { - switch (type) - { - case kUnityGfxDeviceEventInitialize: - s_D3D12 = interfaces->Get(); - CreateResources(); - break; - case kUnityGfxDeviceEventShutdown: - ReleaseResources(); - break; - } + ID3D12Resource*& resource = *outResource; + if (resource) + { + D3D12_RESOURCE_DESC desc = resource->GetDesc(); + if (desc.Width == size) + return true; + else + { + resource->Release(); + return false; + } + } + + // Texture upload buffer + D3D12_HEAP_PROPERTIES heapProps = {}; + heapProps.Type = D3D12_HEAP_TYPE_UPLOAD; + heapProps.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + heapProps.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + heapProps.CreationNodeMask = kNodeMask; + heapProps.VisibleNodeMask = kNodeMask; + + D3D12_RESOURCE_DESC heapDesc = {}; + heapDesc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; + heapDesc.Alignment = 0; + heapDesc.Width = size; + heapDesc.Height = 1; + heapDesc.DepthOrArraySize = 1; + heapDesc.MipLevels = 1; + heapDesc.Format = DXGI_FORMAT_UNKNOWN; + heapDesc.SampleDesc.Count = 1; + heapDesc.SampleDesc.Quality = 0; + heapDesc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR; + heapDesc.Flags = D3D12_RESOURCE_FLAG_NONE; + + HRESULT hr = S_OK; + ID3D12Device* device = s_d3d12->GetDevice(); + ReturnOnFail( + device->CreateCommittedResource( + &heapProps, + D3D12_HEAP_FLAG_NONE, + &heapDesc, + D3D12_RESOURCE_STATE_GENERIC_READ, + nullptr, + IID_PPV_ARGS(&resource)), + hr, + "CreateCommittedResource Failed\n", + false + ); + + if (name != NULL) + resource->SetName(name); + + return true; } +void RenderAPI_D3D12::ProcessDeviceEvent(UnityGfxDeviceEventType type, IUnityInterfaces* interfaces) +{ + switch (type) + { + case kUnityGfxDeviceEventInitialize: + s_d3d12 = interfaces->Get(); + + UnityD3D12PluginEventConfig config_1; + config_1.graphicsQueueAccess = kUnityD3D12GraphicsQueueAccess_DontCare; + config_1.flags = kUnityD3D12EventConfigFlag_SyncWorkerThreads | kUnityD3D12EventConfigFlag_ModifiesCommandBuffersState | kUnityD3D12EventConfigFlag_EnsurePreviousFrameSubmission; + config_1.ensureActiveRenderTextureIsBound = true; + s_d3d12->ConfigureEvent(1, &config_1); + + UnityD3D12PluginEventConfig config_2; + config_2.graphicsQueueAccess = kUnityD3D12GraphicsQueueAccess_Allow; + config_2.flags = kUnityD3D12EventConfigFlag_SyncWorkerThreads | kUnityD3D12EventConfigFlag_ModifiesCommandBuffersState | kUnityD3D12EventConfigFlag_EnsurePreviousFrameSubmission; + config_2.ensureActiveRenderTextureIsBound = false; + s_d3d12->ConfigureEvent(2, &config_2); + + initialize_and_create_resources(); + break; + case kUnityGfxDeviceEventShutdown: + release_resources(); + break; + } +} void RenderAPI_D3D12::DrawSimpleTriangles(const float worldMatrix[16], int triangleCount, const void* verticesFloat3Byte4) { - //@TODO: example not implemented yet :) + UnityGraphicsD3D12RecordingState recordingState; + if (!s_d3d12->CommandRecordingState(&recordingState)) + return; + + if (m_triangle_pso == NULL) + { + m_triangle_pso = create_triangle_pipeline(); + } + + if (m_triangle_pso != NULL) + { + ID3D12GraphicsCommandList* cmdLst = recordingState.commandList; + + garbage_collect(); + + const int kVertexSize = 12 + 4; // 12 bytes for position and 4 bytes for color + const UINT vertexBufferSizeInBytes = kVertexSize * 3 * triangleCount; + if (!create_D3D12_default_buffer(cmdLst, verticesFloat3Byte4, vertexBufferSizeInBytes, D3D12_UPLOAD_HEAP_TRIANGLE_BUFFER_NAME, D3D12_DEFAULT_HEAP_TRIANGLE_BUFFER_NAME, m_triangle_vertex_buffer)) + return; + + cmdLst->SetPipelineState(m_triangle_pso); + cmdLst->SetGraphicsRootSignature(m_triangle_rootsig); + cmdLst->SetGraphicsRoot32BitConstants(0, 64, worldMatrix, 0); + + D3D12_VERTEX_BUFFER_VIEW vbView; + vbView.BufferLocation = m_triangle_vertex_buffer.defaultResource.resource->GetGPUVirtualAddress(); + vbView.SizeInBytes = vertexBufferSizeInBytes; + vbView.StrideInBytes = kVertexSize; + + cmdLst->IASetVertexBuffers(0, 1, &vbView); + cmdLst->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + cmdLst->DrawInstanced(triangleCount * 3, 1, 0, 0); + + UINT64 nextval = s_d3d12->GetNextFrameFenceValue(); + + ID3D12Fence* fence = s_d3d12->GetFrameFence(); + UINT64 lastCompletedFenceValue = fence->GetCompletedValue(); + lastCompletedFenceValue += 3; + safe_destroy(lastCompletedFenceValue, m_triangle_vertex_buffer.uploadResource); + safe_destroy(lastCompletedFenceValue, m_triangle_vertex_buffer.defaultResource); + } } +void RenderAPI_D3D12::safe_destroy(unsigned long long frameNumber, const D3D12MemoryObject& buffer) +{ + m_DeleteQueue[frameNumber].push_back(buffer); +} -void* RenderAPI_D3D12::BeginModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int* outRowPitch) +void RenderAPI_D3D12::garbage_collect(bool force /*= false*/) { - ID3D12Fence* fence = s_D3D12->GetFrameFence(); + ID3D12Fence* fence = s_d3d12->GetFrameFence(); + UINT64 lastCompletedFenceValue = fence->GetCompletedValue(); - // Wait on the previous job (example only - simplifies resource management) - if (fence->GetCompletedValue() < s_D3D12FenceValue) - { - fence->SetEventOnCompletion(s_D3D12FenceValue, s_D3D12Event); - WaitForSingleObject(s_D3D12Event, INFINITE); - } + DeleteQueue::iterator it = m_DeleteQueue.begin(); + while (it != m_DeleteQueue.end()) + { + if (force || it->first <= lastCompletedFenceValue) + { + for (size_t i = 0; i < it->second.size(); ++i) + immediate_destroy_d3d12_buffer(it->second[i]); + m_DeleteQueue.erase(it++); + } + else + ++it; + } +} - // Begin a command list - s_D3D12CmdAlloc->Reset(); - s_D3D12CmdList->Reset(s_D3D12CmdAlloc, nullptr); +void RenderAPI_D3D12::immediate_destroy_d3d12_buffer(D3D12MemoryObject& buffer) +{ + if (buffer.resource == NULL) + return; + + if (buffer.mapped) + { + buffer.resource->Unmap(0, NULL); + buffer.mapped = 0; + } - // Fill data - // Clamp to minimum rowPitch of RGBA32 - *outRowPitch = max(AlignPow2(textureWidth * 4), 256); - const UINT64 kDataSize = GetAlignedSize(textureWidth, textureHeight, 4, *outRowPitch); - ID3D12Resource* upload = GetUploadResource(kDataSize); - void* mapped = NULL; - upload->Map(0, NULL, &mapped); - return mapped; + SAFE_RELEASE(buffer.resource); } +void RenderAPI_D3D12::initialize_and_create_resources() +{ + if (m_are_resources_initialized) + return; -void RenderAPI_D3D12::EndModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int rowPitch, void* dataPtr) + ID3D12Device* device = s_d3d12->GetDevice(); + assert(device != nullptr); + + UnityGraphicsD3D12PhysicalVideoMemoryControlValues control_values; + control_values.reservation = 64000000; + control_values.systemMemoryThreshold = 64000000; + control_values.residencyHysteresisThreshold = 128000000; + control_values.nonEvictableRelativeThreshold = 0.25; + s_d3d12->SetPhysicalVideoMemoryControlValues(&control_values); + + constexpr Vertex vertices[] { + // position color + // <---------------> <--------------------> + {{ 0.0f, 1.0f, 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } }, + {{ 1.0f, -1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, + {{ -1.0f, -1.0f, 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } } + }; + + D3D12_INPUT_ELEMENT_DESC position = {}; + position.SemanticName = "POSITION"; + position.SemanticIndex = 0; + position.Format = DXGI_FORMAT_R32G32B32_FLOAT; + position.AlignedByteOffset = 0; + position.InputSlotClass = D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA; + position.InstanceDataStepRate = 0; + + D3D12_INPUT_ELEMENT_DESC color = {}; + color.SemanticName = "COLOR"; + color.SemanticIndex = 0; + color.Format = DXGI_FORMAT_R32G32B32A32_FLOAT; + color.AlignedByteOffset = 12; + color.InputSlotClass = D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA; + color.InstanceDataStepRate = 0; + + D3D12_INPUT_ELEMENT_DESC input_element_desc[] = {position, color}; + + D3D12_RESOURCE_DESC vertex_buffer_desc = {}; + vertex_buffer_desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER; + vertex_buffer_desc.Alignment = 0; + vertex_buffer_desc.Width = sizeof(vertices); + vertex_buffer_desc.Height = 1; + vertex_buffer_desc.DepthOrArraySize = 1; + vertex_buffer_desc.MipLevels = 1; + vertex_buffer_desc.Format = DXGI_FORMAT_UNKNOWN; + vertex_buffer_desc.SampleDesc.Count = 1; + vertex_buffer_desc.SampleDesc.Quality = 0; + vertex_buffer_desc.Layout = D3D12_TEXTURE_LAYOUT_ROW_MAJOR; + vertex_buffer_desc.Flags = D3D12_RESOURCE_FLAG_NONE; + + D3D12_HEAP_PROPERTIES vertex_buffer_heap_props = {}; + vertex_buffer_heap_props.Type = D3D12_HEAP_TYPE_UPLOAD; + vertex_buffer_heap_props.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + vertex_buffer_heap_props.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + vertex_buffer_heap_props.CreationNodeMask = 1; + vertex_buffer_heap_props.VisibleNodeMask = 1; + + handle_hr(device->CreateCommittedResource(&vertex_buffer_heap_props, D3D12_HEAP_FLAG_NONE, &vertex_buffer_desc, D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(&m_render_texture_vertex_buffer)), + "Failed to create vertex buffer for render texture\n"); + + char* data; + D3D12_RANGE read_range{ 0, 0 }; + handle_hr(m_render_texture_vertex_buffer->Map(0, &read_range, reinterpret_cast(&data))); + memcpy(data, vertices, sizeof(vertices)); + m_render_texture_vertex_buffer->Unmap(0, nullptr); + + m_texture_vertex_buffer_view = {}; + m_texture_vertex_buffer_view.BufferLocation = m_render_texture_vertex_buffer->GetGPUVirtualAddress(); + m_texture_vertex_buffer_view.SizeInBytes = sizeof(vertices); + m_texture_vertex_buffer_view.StrideInBytes = sizeof(Vertex); + + // 1st descriptor is for m_render_texture and 2nd one is for m_plugin_texture + D3D12_DESCRIPTOR_HEAP_DESC rtv_heap_desc = {}; + rtv_heap_desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; + rtv_heap_desc.NumDescriptors = 2; + rtv_heap_desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + rtv_heap_desc.NodeMask = 0; + + handle_hr(device->CreateDescriptorHeap(&rtv_heap_desc, IID_PPV_ARGS(&m_texture_rtv_desc_heap)), + "Failed to create descriptor heap for render texture RTVs\n"); + + m_texture_rtv_desc_size = device->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV); + + // When Unity does create it's own RenderBuffer and passes it to the plugin + // using setRenderTexture() we don't have to create one here. + if (!m_is_render_texture_created_by_unity) + m_render_texture = create_render_texture(); + + m_plugin_texture = create_render_texture(); + + create_render_texture_rtv(m_texture_rtv_desc_heap, m_render_texture, 0); + create_render_texture_rtv(m_texture_rtv_desc_heap, m_plugin_texture, 1); + + m_render_texture.load()->SetName(L"plugin render texture\n"); + + // we store the world matrix in the root signature + D3D12_ROOT_CONSTANTS root_constants = {}; + root_constants.ShaderRegister = 0; + root_constants.RegisterSpace = 0; + root_constants.Num32BitValues = 64; // maximum size for root sig + + D3D12_ROOT_PARAMETER root_param = {}; + root_param.ParameterType = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS; + root_param.Constants = root_constants; + root_param.ShaderVisibility = D3D12_SHADER_VISIBILITY_VERTEX; + + D3D12_ROOT_SIGNATURE_DESC root_signature_desc = {}; + root_signature_desc.NumParameters = 1; + root_signature_desc.pParameters = &root_param; + root_signature_desc.NumStaticSamplers = 0; + root_signature_desc.pStaticSamplers = nullptr; + root_signature_desc.Flags = D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT; + + handle_hr(D3D12SerializeRootSignature(&root_signature_desc, D3D_ROOT_SIGNATURE_VERSION_1, &m_render_texture_root_blob, nullptr), + "Failed to serialize root signature for render texture\n"); + handle_hr(device->CreateRootSignature(0, m_render_texture_root_blob->GetBufferPointer(), m_render_texture_root_blob->GetBufferSize(), IID_PPV_ARGS(&m_texture_root_sig)), + "Failed to create root signature for render texture\n"); + + D3D12_RASTERIZER_DESC rasterizer_desc = {}; + rasterizer_desc.FillMode = D3D12_FILL_MODE_SOLID; + rasterizer_desc.CullMode = D3D12_CULL_MODE_NONE; + rasterizer_desc.FrontCounterClockwise = FALSE; + rasterizer_desc.DepthBias = D3D12_DEFAULT_DEPTH_BIAS; + rasterizer_desc.DepthBiasClamp = D3D12_DEFAULT_DEPTH_BIAS_CLAMP; + rasterizer_desc.SlopeScaledDepthBias = 0; + rasterizer_desc.MultisampleEnable = FALSE; + rasterizer_desc.MultisampleEnable = FALSE; + rasterizer_desc.AntialiasedLineEnable = FALSE; + rasterizer_desc.ForcedSampleCount = 0; + rasterizer_desc.ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF; + + D3D12_RENDER_TARGET_BLEND_DESC render_target_blend_desc = {}; + render_target_blend_desc.BlendEnable = FALSE; + render_target_blend_desc.LogicOpEnable = FALSE; + render_target_blend_desc.SrcBlend = D3D12_BLEND_ONE; + render_target_blend_desc.DestBlend = D3D12_BLEND_ZERO; + render_target_blend_desc.BlendOp = D3D12_BLEND_OP_ADD; + render_target_blend_desc.SrcBlendAlpha = D3D12_BLEND_ONE; + render_target_blend_desc.DestBlendAlpha = D3D12_BLEND_ZERO; + render_target_blend_desc.BlendOpAlpha = D3D12_BLEND_OP_ADD; + render_target_blend_desc.LogicOp = D3D12_LOGIC_OP_NOOP; + render_target_blend_desc.RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL; + + D3D12_BLEND_DESC blend_desc = {}; + blend_desc.AlphaToCoverageEnable = FALSE; + blend_desc.IndependentBlendEnable = FALSE; + blend_desc.RenderTarget[0] = render_target_blend_desc; + + D3D12_DEPTH_STENCIL_DESC depth_stencil_desc = {}; + depth_stencil_desc.DepthEnable = FALSE; + depth_stencil_desc.DepthWriteMask = D3D12_DEPTH_WRITE_MASK_ZERO; + depth_stencil_desc.DepthFunc = D3D12_COMPARISON_FUNC_NEVER; + depth_stencil_desc.StencilEnable = FALSE; + + D3D12_SHADER_BYTECODE vertex_bytecode = {}; + vertex_bytecode.pShaderBytecode = (void*)(vertex_shader); + vertex_bytecode.BytecodeLength = sizeof(vertex_shader); + + D3D12_SHADER_BYTECODE pixel_bytecode = {}; + pixel_bytecode.pShaderBytecode = (void*)(pixel_shader); + pixel_bytecode.BytecodeLength = sizeof(pixel_shader); + + D3D12_INPUT_LAYOUT_DESC input_layout_desc = {}; + input_layout_desc.pInputElementDescs = input_element_desc; + input_layout_desc.NumElements = _countof(input_element_desc); + + DXGI_SAMPLE_DESC dxgi_sample_desc = {}; + dxgi_sample_desc.Count = 1; + dxgi_sample_desc.Quality = 0; + + D3D12_GRAPHICS_PIPELINE_STATE_DESC pso_desc = {}; + pso_desc.pRootSignature = m_texture_root_sig; + pso_desc.VS = vertex_bytecode; + pso_desc.PS = pixel_bytecode; + pso_desc.DS = { nullptr, 0 }; + pso_desc.HS = { nullptr, 0 }; + pso_desc.GS = { nullptr, 0 }; + pso_desc.StreamOutput = {}; + pso_desc.BlendState = blend_desc; + pso_desc.SampleMask = 1; + pso_desc.RasterizerState = rasterizer_desc; + pso_desc.DepthStencilState = depth_stencil_desc; + pso_desc.InputLayout = input_layout_desc; + pso_desc.IBStripCutValue = {}; + pso_desc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; + pso_desc.NumRenderTargets = 1; + pso_desc.RTVFormats[0] = {DXGI_FORMAT_R8G8B8A8_UNORM}; + pso_desc.DSVFormat = {}; + pso_desc.SampleDesc = dxgi_sample_desc; + pso_desc.NodeMask = 0; + pso_desc.CachedPSO = { nullptr, 0 }; + pso_desc.Flags = D3D12_PIPELINE_STATE_FLAG_NONE; + + handle_hr(device->CreateGraphicsPipelineState(&pso_desc, IID_PPV_ARGS(&m_texture_pso)), + "Failed to create PSO for render texture\n"); + handle_hr(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_render_texture_cmd_allocator)), + "Failed to create cmd allocator for render texture\n"); + handle_hr(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_render_texture_cmd_allocator, nullptr, IID_PPV_ARGS(&m_render_texture_cmd_list)), + "Failed to create cmd list for render texture\n"); + + handle_hr(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_plugin_texture_cmd_allocator)), + "Failed to create cmd allocator for plugin texture\n"); + + handle_hr(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_plugin_texture_cmd_allocator, nullptr, IID_PPV_ARGS(&m_plugin_texture_cmd_list)), + "Failed to create cmd list for render texture2\n"); + + handle_hr(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_texture_copy_cmd_allocator)), + "Failed to create cmd allocator for texture copy\n"); + + handle_hr(device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_vertex_copy_cmd_allocator)), + "Failed to create cmd allocator for vertex copy\n"); + + handle_hr(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_texture_copy_cmd_allocator, nullptr, IID_PPV_ARGS(&m_texture_copy_cmd_list)), + "Failed to create texture copy cmd list\n"); + + handle_hr(device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_vertex_copy_cmd_allocator, nullptr, IID_PPV_ARGS(&m_vertex_copy_cmd_list)), + "Failed to create vertex copy cmd list\n"); + + handle_hr(device->CreateFence(m_plugin_texture_fence_value, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&m_plugin_texture_fence)), + "Failed to create fence for plugin texture"); + + m_texture_copy_cmd_allocator->SetName(L"texture copy cmd allocator"); + m_vertex_copy_cmd_allocator->SetName(L"vertex copy cmd allocator"); + m_render_texture_cmd_allocator->SetName(L"render texture cmd allocator"); + + m_vertex_copy_cmd_list->SetName(L"vertex copy cmd list"); + m_texture_copy_cmd_list->SetName(L"texture copy cmd list"); + m_render_texture_cmd_list->SetName(L"render texture cmd list"); + + handle_hr(m_vertex_copy_cmd_list->Close(), "Failed to close cmd list for vertex copy\n"); + handle_hr(m_texture_copy_cmd_list->Close(), "Failed to close cmd list for texture copy\n"); + handle_hr(m_render_texture_cmd_list->Close(), "Failed to close cmd list for render texture\n"); + handle_hr(m_plugin_texture_cmd_list->Close(), "Failed to close cmd list for plugin texture\n"); + + m_fence_event = CreateEvent(NULL, false, false, nullptr); + m_plugin_texture_fence_event = CreateEvent(NULL, false, false, nullptr); + + D3D12_DESCRIPTOR_HEAP_DESC rtvDesc = {}; + rtvDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV; + rtvDesc.NumDescriptors = 1; + rtvDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + rtvDesc.NodeMask = 0; + + handle_hr(device->CreateDescriptorHeap(&rtvDesc, IID_PPV_ARGS(&m_triangle_rtv_desc_heap)), + "CreateDescriptorHeap Failed\n"); + + D3D12_DESCRIPTOR_HEAP_DESC dsvDesc = {}; + dsvDesc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_DSV; + dsvDesc.NumDescriptors = 1; + dsvDesc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE; + dsvDesc.NodeMask = 0; + + handle_hr(device->CreateDescriptorHeap(&dsvDesc, IID_PPV_ARGS(&m_triangle_dsv_desc_heap)), + "CreateDescriptorHeap Failed\n"); + + m_are_resources_initialized = true; +} + +void RenderAPI_D3D12::release_resources() +{ + SAFE_RELEASE(m_render_texture_cmd_list); + SAFE_RELEASE(m_render_texture_cmd_allocator); + SAFE_RELEASE(m_plugin_texture_cmd_list); + SAFE_RELEASE(m_plugin_texture_cmd_allocator); + SAFE_RELEASE(m_texture_pso); + SAFE_RELEASE(m_texture_root_sig); + SAFE_RELEASE(m_render_texture_root_blob); + SAFE_RELEASE(m_texture_rtv_desc_heap); + if (!m_is_render_texture_created_by_unity) + { + ID3D12Resource* render_texture = m_render_texture.load(); + if (render_texture) + { + render_texture->Release(); + m_render_texture = nullptr; + } + } + SAFE_RELEASE(m_render_texture_vertex_buffer); + SAFE_RELEASE(m_triangle_pso); + SAFE_RELEASE(m_triangle_rootsig); + SAFE_RELEASE(m_triangle_rtv_desc_heap); + SAFE_RELEASE(m_triangle_dsv_desc_heap); + SAFE_RELEASE(s_upload_texture); + SAFE_RELEASE(s_upload_buffer); + SAFE_RELEASE(m_vertex_copy_cmd_list); + SAFE_RELEASE(m_texture_copy_cmd_list); + SAFE_RELEASE(m_vertex_copy_cmd_allocator); + SAFE_RELEASE(m_texture_copy_cmd_allocator); + + if (ID3D12Resource* plugin_texture = m_plugin_texture.load()) + { + plugin_texture->Release(); + m_plugin_texture = nullptr; + } + + CloseHandle(m_fence_event); + CloseHandle(m_plugin_texture_fence_event); + + garbage_collect(true); + m_mapped_triangle_vertex_buffers.clear(); +} + +void RenderAPI_D3D12::record_draw_cmd_list(ID3D12CommandAllocator* cmd_alloc, ID3D12GraphicsCommandList* cmd, ID3D12RootSignature* rootsig, D3D12_CPU_DESCRIPTOR_HANDLE rtv_handle, D3D12_VERTEX_BUFFER_VIEW* vbview, const float* world_matrix, D3D12_VIEWPORT* viewport, ID3D12PipelineState* pso, ID3D12Resource* target, D3D12_RESOURCE_STATES target_state) { - ID3D12Device* device = s_D3D12->GetDevice(); + constexpr FLOAT clear_color[4] = { 0.5f, 0.5f, 0.5f, 1.f }; - const UINT64 kDataSize = GetAlignedSize(textureWidth, textureHeight, 4, rowPitch); - ID3D12Resource* upload = GetUploadResource(kDataSize); - upload->Unmap(0, NULL); + handle_hr(cmd_alloc->Reset(), "Failed to reset cmd allocator\n"); + handle_hr(cmd->Reset(cmd_alloc, pso), "Failed to reset cmd list\n"); - ID3D12Resource* resource = (ID3D12Resource*)textureHandle; - D3D12_RESOURCE_DESC desc = resource->GetDesc(); - assert(desc.Width == textureWidth); - assert(desc.Height == textureHeight); + cmd->SetGraphicsRootSignature(rootsig); + cmd->SetGraphicsRoot32BitConstants(0, 64, world_matrix, 0); - D3D12_TEXTURE_COPY_LOCATION srcLoc = {}; - srcLoc.pResource = upload; - srcLoc.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT; - device->GetCopyableFootprints(&desc, 0, 1, 0, &srcLoc.PlacedFootprint, nullptr, nullptr, nullptr); + if (target_state != D3D12_RESOURCE_STATE_RENDER_TARGET) + { + transition_barrier(cmd, target, target_state, D3D12_RESOURCE_STATE_RENDER_TARGET); + } - D3D12_TEXTURE_COPY_LOCATION dstLoc = {}; - dstLoc.pResource = resource; - dstLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; - dstLoc.SubresourceIndex = 0; + cmd->OMSetRenderTargets(1, &rtv_handle, FALSE, nullptr); + cmd->ClearRenderTargetView(rtv_handle, clear_color, 0, nullptr); - // We inform Unity that we expect this resource to be in D3D12_RESOURCE_STATE_COPY_DEST state, - // and because we do not barrier it ourselves, we tell Unity that no changes are done on our command list. - UnityGraphicsD3D12ResourceState resourceState = {}; - resourceState.resource = resource; - resourceState.expected = D3D12_RESOURCE_STATE_COPY_DEST; - resourceState.current = D3D12_RESOURCE_STATE_COPY_DEST; + D3D12_RECT scissor; + scissor.left = 0; + scissor.top = 0; + scissor.right = static_cast(viewport->Width); + scissor.bottom = static_cast(viewport->Height); - // Queue data upload - s_D3D12CmdList->CopyTextureRegion(&dstLoc, 0, 0, 0, &srcLoc, nullptr); + cmd->RSSetViewports(1, viewport); + cmd->RSSetScissorRects(1, &scissor); + cmd->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + cmd->IASetVertexBuffers(0, 1, vbview); - // Execute the command list - s_D3D12CmdList->Close(); - s_D3D12FenceValue = s_D3D12->ExecuteCommandList(s_D3D12CmdList, 1, &resourceState); + const UINT vertices = vbview->SizeInBytes / vbview->StrideInBytes; + + cmd->DrawInstanced(vertices, 1, 0, 0); + + if (target_state != D3D12_RESOURCE_STATE_RENDER_TARGET) + { + transition_barrier(cmd, target, D3D12_RESOURCE_STATE_RENDER_TARGET, target_state); + } + + handle_hr(cmd->Close(), "Failed to close draw cmd list\n"); } +UINT64 RenderAPI_D3D12::submit_cmd_to_unity_worker(ID3D12GraphicsCommandList* cmd, UnityGraphicsD3D12ResourceState* resource_states, int state_count) +{ + return s_d3d12->ExecuteCommandList(cmd, state_count, resource_states); +} -void* RenderAPI_D3D12::BeginModifyVertexBuffer(void* bufferHandle, size_t* outBufferSize) +ID3D12Resource* RenderAPI_D3D12::create_render_texture() { - //@TODO - return NULL; + ID3D12Device* device = s_d3d12->GetDevice(); + + DXGI_SAMPLE_DESC dxgi_sample_desc = {}; + dxgi_sample_desc.Count = 1; + dxgi_sample_desc.Quality = 0; + + D3D12_RESOURCE_DESC render_texture_desc = {}; + render_texture_desc.Dimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D; + render_texture_desc.Width = m_texture_width; + render_texture_desc.Height = m_texture_height; + render_texture_desc.DepthOrArraySize = 1; + render_texture_desc.MipLevels = 1; + render_texture_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + render_texture_desc.SampleDesc = dxgi_sample_desc; + render_texture_desc.Layout = D3D12_TEXTURE_LAYOUT_UNKNOWN; + render_texture_desc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET; + + D3D12_HEAP_PROPERTIES render_texture_heap_props = {}; + render_texture_heap_props.Type = D3D12_HEAP_TYPE_DEFAULT; + render_texture_heap_props.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN; + render_texture_heap_props.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN; + render_texture_heap_props.CreationNodeMask = 1; + render_texture_heap_props.VisibleNodeMask = 1; + + ID3D12Resource* pRendertex; + handle_hr(device->CreateCommittedResource(&render_texture_heap_props, D3D12_HEAP_FLAG_NONE, &render_texture_desc, D3D12_RESOURCE_STATE_RENDER_TARGET, nullptr, IID_PPV_ARGS(&pRendertex)), + "Failed to create a render texture\n"); + + return pRendertex; +} + +void RenderAPI_D3D12::create_render_texture_rtv(ID3D12DescriptorHeap* heap, ID3D12Resource* target, UINT offset) +{ + CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_handle{ heap->GetCPUDescriptorHandleForHeapStart() }; + rtv_handle.Offset(offset, m_texture_rtv_desc_size); + s_d3d12->GetDevice()->CreateRenderTargetView(target, nullptr, rtv_handle); +} + +void RenderAPI_D3D12::transition_barrier(ID3D12GraphicsCommandList* cmd, ID3D12Resource* resource, D3D12_RESOURCE_STATES before, D3D12_RESOURCE_STATES after) +{ + D3D12_RESOURCE_TRANSITION_BARRIER transition = {}; + transition.pResource = resource; + transition.Subresource = 0; + transition.StateBefore = before; + transition.StateAfter = after; + + D3D12_RESOURCE_BARRIER barrier = {}; + barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE; + barrier.Transition = transition; + + cmd->ResourceBarrier(1, &barrier); +} + +void RenderAPI_D3D12::wait_for_unity_frame_fence(UINT64 fence_value) +{ + ID3D12Fence* unity_fence = s_d3d12->GetFrameFence(); + UINT64 current_fence_value = unity_fence->GetCompletedValue(); + + if (current_fence_value < fence_value) + { + handle_hr(unity_fence->SetEventOnCompletion(fence_value, m_fence_event), "Failed to set fence event on completion\n"); + WaitForSingleObject(m_fence_event, INFINITE); + } +} + +void RenderAPI_D3D12::wait_on_fence(UINT64 fence_value, ID3D12Fence* fence, HANDLE fence_event) +{ + UINT64 current_fence_value = fence->GetCompletedValue(); + + if (current_fence_value < fence_value) + { + handle_hr(fence->SetEventOnCompletion(fence_value, fence_event)); + WaitForSingleObject(fence_event, INFINITE); + } +} + +void* RenderAPI_D3D12::BeginModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int* outRowPitch) +{ + wait_for_unity_frame_fence(m_texture_copy_fence); + + // Fill data + // Clamp to minimum rowPitch of RGBA32 + *outRowPitch = static_cast(max(align_pow2(textureWidth * 4), 256)); + const UINT64 kDataSize = get_aligned_size(textureWidth, textureHeight, 4, *outRowPitch); + if (!get_upload_resource(&s_upload_texture, kDataSize, D3D12_UPLOAD_HEAP_TEXTURE_BUFFER_NAME)) + return NULL; + + void* mapped = NULL; + s_upload_texture->Map(0, NULL, &mapped); + return mapped; +} + +void RenderAPI_D3D12::EndModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int rowPitch, void* dataPtr) +{ + ID3D12Device* device = s_d3d12->GetDevice(); + + const UINT64 kDataSize = get_aligned_size(textureWidth, textureHeight, 4, rowPitch); + if (!get_upload_resource(&s_upload_texture, kDataSize, D3D12_UPLOAD_HEAP_TEXTURE_BUFFER_NAME)) + return; + + s_upload_texture->Unmap(0, 0); + + ID3D12Resource* resource = (ID3D12Resource*)textureHandle; + D3D12_RESOURCE_DESC desc = resource->GetDesc(); + assert(desc.Width == textureWidth); + assert(desc.Height == textureHeight); + + D3D12_TEXTURE_COPY_LOCATION srcLoc = {}; + srcLoc.pResource = s_upload_texture; + srcLoc.Type = D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT; + device->GetCopyableFootprints(&desc, 0, 1, 0, &srcLoc.PlacedFootprint, nullptr, nullptr, nullptr); + + D3D12_TEXTURE_COPY_LOCATION dstLoc = {}; + dstLoc.pResource = resource; + dstLoc.Type = D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX; + dstLoc.SubresourceIndex = 0; + + m_texture_copy_cmd_allocator->Reset(); + m_texture_copy_cmd_list->Reset(m_texture_copy_cmd_allocator, nullptr); + transition_barrier(m_texture_copy_cmd_list, resource, D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_COPY_DEST); + m_texture_copy_cmd_list->CopyTextureRegion(&dstLoc, 0, 0, 0, &srcLoc, nullptr); + transition_barrier(m_texture_copy_cmd_list, resource, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_COMMON); + m_texture_copy_cmd_list->Close(); + + UnityGraphicsD3D12ResourceState resource_states = {}; + resource_states.resource = resource; + resource_states.expected = D3D12_RESOURCE_STATE_COMMON; + resource_states.current = D3D12_RESOURCE_STATE_COMMON; + + m_texture_copy_fence = submit_cmd_to_unity_worker(m_texture_copy_cmd_list, &resource_states, 1); } +void* RenderAPI_D3D12::BeginModifyVertexBuffer(void* bufferHandle, size_t* outBufferSize) +{ + wait_for_unity_frame_fence(m_vertex_copy_fence); + + if (bufferHandle == NULL) + return NULL; + + ID3D12Resource* unity_vertex_buffer = reinterpret_cast(bufferHandle); + D3D12_RESOURCE_DESC desc = unity_vertex_buffer->GetDesc(); + *outBufferSize = static_cast(desc.Width); + + if (!get_upload_resource(&s_upload_buffer, desc.Width, D3D12_UPLOAD_HEAP_VERTEX_BUFFER_NAME)) + return NULL; + + MappedVertexBuffers::iterator it = m_mapped_triangle_vertex_buffers.find(bufferHandle); + if (it == m_mapped_triangle_vertex_buffers.end()) + m_mapped_triangle_vertex_buffers.insert(std::make_pair(bufferHandle, reinterpret_cast(new int()))); + + HRESULT hr = s_upload_buffer->Map(0, 0, &m_mapped_triangle_vertex_buffers[bufferHandle]); + return m_mapped_triangle_vertex_buffers[bufferHandle]; +} void RenderAPI_D3D12::EndModifyVertexBuffer(void* bufferHandle) { - //@TODO + m_vertex_copy_cmd_allocator->Reset(); + m_vertex_copy_cmd_list->Reset(m_vertex_copy_cmd_allocator, nullptr); + + if (bufferHandle == NULL) + return; + + UnityGraphicsD3D12RecordingState recordingState; + if (!s_d3d12->CommandRecordingState(&recordingState)) + return; + + ID3D12Resource* unity_vertex_buffer = reinterpret_cast(bufferHandle); + D3D12_RESOURCE_DESC desc = unity_vertex_buffer->GetDesc(); + if (!get_upload_resource(&s_upload_buffer, desc.Width, D3D12_UPLOAD_HEAP_VERTEX_BUFFER_NAME)) + return; + + assert(desc.Height == 1); + + s_upload_buffer->Unmap(0, 0); + + D3D12_HEAP_PROPERTIES heap_props; + handle_hr(unity_vertex_buffer->GetHeapProperties(&heap_props, nullptr), "Failed to get heap properties for unitys vertex buffer"); + + // On DX12 Mesh.MarkDynamic() doesn't guarantee the underlying resource to be CPU mappable. In the case when it's not we need to + // place correct transition barriers before and after the copy command. + + if (heap_props.Type == D3D12_HEAP_TYPE_DEFAULT) + transition_barrier(m_vertex_copy_cmd_list, unity_vertex_buffer, D3D12_RESOURCE_STATE_COMMON, D3D12_RESOURCE_STATE_COPY_DEST); + + m_vertex_copy_cmd_list->CopyBufferRegion(unity_vertex_buffer, 0, s_upload_buffer, 0, desc.Width); + + if (heap_props.Type == D3D12_HEAP_TYPE_DEFAULT) + transition_barrier(m_vertex_copy_cmd_list, unity_vertex_buffer, D3D12_RESOURCE_STATE_COPY_DEST, D3D12_RESOURCE_STATE_COMMON); + + handle_hr(m_vertex_copy_cmd_list->Close(), "Failed to close vertex copy cmd list"); + + UnityGraphicsD3D12ResourceState resource_states = {}; + if (heap_props.Type == D3D12_HEAP_TYPE_DEFAULT) + { + resource_states.resource = unity_vertex_buffer; + resource_states.expected = D3D12_RESOURCE_STATE_COMMON; + resource_states.current = D3D12_RESOURCE_STATE_COMMON; + } + + m_vertex_copy_fence = submit_cmd_to_unity_worker(m_vertex_copy_cmd_list, &resource_states, 1); +} + +void RenderAPI_D3D12::drawToPluginTexture() +{ + if (!m_plugin_texture) + return; + + wait_on_fence(m_plugin_texture_fence_value, m_plugin_texture_fence, m_plugin_texture_fence_event); + + // Draw the triangle upside down + constexpr float world_matrix[16] = { 1, 0, 0, 0, + 0,-1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 }; + + D3D12_VIEWPORT viewport = {}; + viewport.TopLeftX = 0; + viewport.TopLeftY = 0; + viewport.Width = static_cast(m_texture_width); + viewport.Height = static_cast(m_texture_height); + viewport.MinDepth = D3D12_MIN_DEPTH; + viewport.MaxDepth = D3D12_MAX_DEPTH; + + CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_handle { m_texture_rtv_desc_heap->GetCPUDescriptorHandleForHeapStart() }; + rtv_handle.Offset(1, m_texture_rtv_desc_size); + + // We can reuse some of the resources for both plugin_texture and render_texture + record_draw_cmd_list(m_plugin_texture_cmd_allocator, + m_plugin_texture_cmd_list, + m_texture_root_sig, + rtv_handle, + &m_texture_vertex_buffer_view, + world_matrix, &viewport, + m_texture_pso, + m_plugin_texture, + D3D12_RESOURCE_STATE_RENDER_TARGET); + + ID3D12CommandQueue* unity_command_queue = s_d3d12->GetCommandQueue(); + unity_command_queue->ExecuteCommandLists(1, (ID3D12CommandList**)&m_plugin_texture_cmd_list); + unity_command_queue->Signal(m_plugin_texture_fence, ++m_plugin_texture_fence_value); } +void RenderAPI_D3D12::drawToRenderTexture() +{ + wait_for_unity_frame_fence(m_render_texture_draw_fence); + + if (!m_render_texture) + return; + + // Draw the triangle upright + constexpr float world_matrix[16] = { 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 }; + + D3D12_VIEWPORT viewport = {}; + viewport.TopLeftX = 0; + viewport.TopLeftY = 0; + viewport.Width = static_cast(m_texture_width); + viewport.Height = static_cast(m_texture_height); + viewport.MinDepth = D3D12_MIN_DEPTH; + viewport.MaxDepth = D3D12_MAX_DEPTH; + + CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_handle { m_texture_rtv_desc_heap->GetCPUDescriptorHandleForHeapStart() }; + rtv_handle.Offset(0, m_texture_rtv_desc_size); + + D3D12_RESOURCE_STATES target_state; + if (m_is_render_texture_created_by_unity) + { + target_state = D3D12_RESOURCE_STATE_COMMON; + } + else + { + target_state = D3D12_RESOURCE_STATE_RENDER_TARGET; + } + + record_draw_cmd_list(m_render_texture_cmd_allocator, + m_render_texture_cmd_list, + m_texture_root_sig, + rtv_handle, + &m_texture_vertex_buffer_view, + world_matrix, &viewport, + m_texture_pso, + m_render_texture, + target_state); + + UnityGraphicsD3D12ResourceState resource_states; + resource_states.resource = m_render_texture; + resource_states.expected = D3D12_RESOURCE_STATE_COMMON; + resource_states.current = D3D12_RESOURCE_STATE_COMMON; + + m_render_texture_draw_fence = submit_cmd_to_unity_worker(m_render_texture_cmd_list, &resource_states, 1); +} + +void* RenderAPI_D3D12::getRenderTexture() +{ + return reinterpret_cast(m_render_texture.load()); +} + +void RenderAPI_D3D12::setRenderTextureResource(UnityRenderBuffer rb) +{ + // Release existing resource if there is already one that wasn't created by Unity C# script + if (!m_is_render_texture_created_by_unity && m_render_texture) + { + m_render_texture.load()->Release(); + m_render_texture = nullptr; + } + + // rb == nullptr is used to signal that the previously used UnityRenderBuffer + // is not available anymore (i.e when it gets destroyed) + if (!rb) + { + m_render_texture = nullptr; + m_is_render_texture_created_by_unity = false; + return; + } + + // TextureFromRenderBuffer might not be immediately available when this function is called. + ID3D12Resource* rb_resource = nullptr; + while (!rb_resource) + { + rb_resource = s_d3d12->TextureFromRenderBuffer(rb); + } + + D3D12_RESOURCE_DESC desc = rb_resource->GetDesc(); + m_texture_width = desc.Width; + m_texture_height = desc.Height; + assert(desc.Dimension == D3D12_RESOURCE_DIMENSION_TEXTURE2D); + assert(desc.Flags & D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET); + + m_render_texture = rb_resource; + + // we need to update the rtv if we won't be calling initialize_render_texture_resources() after + // (when it's already initialized) + if (m_are_resources_initialized) + create_render_texture_rtv(m_texture_rtv_desc_heap, m_render_texture, 0); + + m_is_render_texture_created_by_unity = true; +} + +bool RenderAPI_D3D12::isSwapChainAvailable() +{ + return s_d3d12->GetSwapChain(); +} + +unsigned int RenderAPI_D3D12::getPresentFlags() +{ + return s_d3d12->GetPresentFlags(); +}; + +unsigned int RenderAPI_D3D12::getSyncInterval() +{ + return s_d3d12->GetSyncInterval(); +} + +unsigned int RenderAPI_D3D12::getBackbufferWidth() +{ + IDXGISwapChain* swap_chain = s_d3d12->GetSwapChain(); + if (!swap_chain) + return 0; + + DXGI_SWAP_CHAIN_DESC desc; + handle_hr(swap_chain->GetDesc(&desc), "Failed to get DXGI swap chain desc\n"); + + return desc.BufferDesc.Width; +} + +unsigned int RenderAPI_D3D12::getBackbufferHeight() +{ + IDXGISwapChain* swap_chain = s_d3d12->GetSwapChain(); + if (!swap_chain) + return 0; + + DXGI_SWAP_CHAIN_DESC desc; + handle_hr(swap_chain->GetDesc(&desc), "Failed to get DXGI swap chain desc\n"); + + return desc.BufferDesc.Height; +} + +#undef ReturnOnFail + #endif // #if SUPPORT_D3D12 diff --git a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp index 47f96dce..c62f4861 100644 --- a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp +++ b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp @@ -145,7 +145,7 @@ void RenderAPI_OpenGLCoreES::CreateResources() while (glGetError() != GL_NO_ERROR) {} // Create shaders - if (m_APIType == kUnityGfxRendererOpenGLES20) + if (m_APIType == kUnityGfxRendererOpenGLES30) { m_VertexShader = CreateShader(GL_VERTEX_SHADER, kGlesVProgTextGLES2); m_FragmentShader = CreateShader(GL_FRAGMENT_SHADER, kGlesFShaderTextGLES2); diff --git a/PluginSource/source/RenderingPlugin.cpp b/PluginSource/source/RenderingPlugin.cpp index d910d6bb..429b0020 100644 --- a/PluginSource/source/RenderingPlugin.cpp +++ b/PluginSource/source/RenderingPlugin.cpp @@ -82,7 +82,6 @@ extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API SetMeshBuffersFromUni } - // -------------------------------------------------------------------------- // UnitySetInterfaces @@ -91,6 +90,11 @@ static void UNITY_INTERFACE_API OnGraphicsDeviceEvent(UnityGfxDeviceEventType ev static IUnityInterfaces* s_UnityInterfaces = NULL; static IUnityGraphics* s_Graphics = NULL; +IUnityInterfaces* get_unityintrfaces() +{ + return s_UnityInterfaces; +} + extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityPluginLoad(IUnityInterfaces* unityInterfaces) { s_UnityInterfaces = unityInterfaces; @@ -292,6 +296,15 @@ static void ModifyVertexBuffer() s_CurrentAPI->EndModifyVertexBuffer(bufferHandle); } +static void drawToPluginTexture() +{ + s_CurrentAPI->drawToPluginTexture(); +} + +static void drawToRenderTexture() +{ + s_CurrentAPI->drawToRenderTexture(); +} static void UNITY_INTERFACE_API OnRenderEvent(int eventID) { @@ -299,11 +312,20 @@ static void UNITY_INTERFACE_API OnRenderEvent(int eventID) if (s_CurrentAPI == NULL) return; - DrawColoredTriangle(); - ModifyTexturePixels(); - ModifyVertexBuffer(); -} + if (eventID == 1) + { + drawToRenderTexture(); + DrawColoredTriangle(); + ModifyTexturePixels(); + ModifyVertexBuffer(); + } + + if (eventID == 2) + { + drawToPluginTexture(); + } +} // -------------------------------------------------------------------------- // GetRenderEventFunc, an example function we export which is used to get a rendering event callback function. @@ -313,3 +335,41 @@ extern "C" UnityRenderingEvent UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API GetRen return OnRenderEvent; } +// -------------------------------------------------------------------------- +// DX12 plugin specific +// -------------------------------------------------------------------------- + +extern "C" UNITY_INTERFACE_EXPORT void* UNITY_INTERFACE_API GetRenderTexture() +{ + return s_CurrentAPI->getRenderTexture(); +} + +extern "C" UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API SetRenderTexture(UnityRenderBuffer rb) +{ + s_CurrentAPI->setRenderTextureResource(rb); +} + +extern "C" UNITY_INTERFACE_EXPORT bool UNITY_INTERFACE_API IsSwapChainAvailable() +{ + return s_CurrentAPI->isSwapChainAvailable(); +} + +extern "C" UNITY_INTERFACE_EXPORT unsigned int UNITY_INTERFACE_API GetPresentFlags() +{ + return s_CurrentAPI->getPresentFlags(); +} + +extern "C" UNITY_INTERFACE_EXPORT unsigned int UNITY_INTERFACE_API GetSyncInterval() +{ + return s_CurrentAPI->getSyncInterval(); +} + +extern "C" UNITY_INTERFACE_EXPORT unsigned int UNITY_INTERFACE_API GetBackBufferWidth() +{ + return s_CurrentAPI->getBackbufferHeight(); +} + +extern "C" UNITY_INTERFACE_EXPORT unsigned int UNITY_INTERFACE_API GetBackBufferHeight() +{ + return s_CurrentAPI->getBackbufferWidth(); +} diff --git a/PluginSource/source/Unity/IUnityGraphics.h b/PluginSource/source/Unity/IUnityGraphics.h index 855009bd..d1f7bf9c 100644 --- a/PluginSource/source/Unity/IUnityGraphics.h +++ b/PluginSource/source/Unity/IUnityGraphics.h @@ -1,16 +1,22 @@ +// Unity Native Plugin API copyright © 2015 Unity Technologies ApS +// +// Licensed under the Unity Companion License for Unity - dependent projects--see[Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). +// +// Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.Please review the license for details on these and other terms and conditions. + #pragma once #include "IUnityInterface.h" +// Has to match the GfxDeviceRenderer enum typedef enum UnityGfxRenderer { //kUnityGfxRendererOpenGL = 0, // Legacy OpenGL, removed //kUnityGfxRendererD3D9 = 1, // Direct3D 9, removed kUnityGfxRendererD3D11 = 2, // Direct3D 11 - kUnityGfxRendererGCM = 3, // PlayStation 3 kUnityGfxRendererNull = 4, // "null" device (used in batch mode) - kUnityGfxRendererOpenGLES20 = 8, // OpenGL ES 2.0 + //kUnityGfxRendererOpenGLES20 = 8, // OpenGL ES 2.0, removed kUnityGfxRendererOpenGLES30 = 11, // OpenGL ES 3.0 - kUnityGfxRendererGXM = 12, // PlayStation Vita + //kUnityGfxRendererGXM = 12, // PlayStation Vita, removed kUnityGfxRendererPS4 = 13, // PlayStation 4 kUnityGfxRendererXboxOne = 14, // Xbox One kUnityGfxRendererMetal = 16, // iOS Metal @@ -18,7 +24,11 @@ typedef enum UnityGfxRenderer kUnityGfxRendererD3D12 = 18, // Direct3D 12 kUnityGfxRendererVulkan = 21, // Vulkan kUnityGfxRendererNvn = 22, // Nintendo Switch NVN API - kUnityGfxRendererXboxOneD3D12 = 23 // MS XboxOne Direct3D 12 + kUnityGfxRendererXboxOneD3D12 = 23, // MS XboxOne Direct3D 12 + kUnityGfxRendererGameCoreXboxOne = 24, // GameCore Xbox One + kUnityGfxRendererGameCoreXboxSeries = 25, // GameCore XboxSeries + kUnityGfxRendererPS5 = 26, // PS5 + kUnityGfxRendererPS5NGGC = 27 // PS5 NGGC } UnityGfxRenderer; typedef enum UnityGfxDeviceEventType diff --git a/PluginSource/source/Unity/IUnityGraphicsD3D12.h b/PluginSource/source/Unity/IUnityGraphicsD3D12.h index 00946fd6..3dfdccf9 100644 --- a/PluginSource/source/Unity/IUnityGraphicsD3D12.h +++ b/PluginSource/source/Unity/IUnityGraphicsD3D12.h @@ -1,3 +1,9 @@ +// Unity Native Plugin API copyright © 2015 Unity Technologies ApS +// +// Licensed under the Unity Companion License for Unity - dependent projects--see[Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). +// +// Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.Please review the license for details on these and other terms and conditions. + #pragma once #include "IUnityInterface.h" #ifndef __cplusplus @@ -15,13 +21,106 @@ struct UnityGraphicsD3D12ResourceState D3D12_RESOURCE_STATES current; // State this resource will be in after this command list is executed. }; +struct UnityGraphicsD3D12RecordingState +{ + ID3D12GraphicsCommandList* commandList; // D3D12 command list that is currently recorded by Unity +}; + +enum UnityD3D12GraphicsQueueAccess +{ + // No queue acccess, no work must be submitted to UnityD3D12Instance::graphicsQueue from the plugin event callback + kUnityD3D12GraphicsQueueAccess_DontCare, + + // Make sure that Unity worker threads don't access the D3D12 graphics queue + // This disables access to the current Unity command buffer + kUnityD3D12GraphicsQueueAccess_Allow, +}; + +enum UnityD3D12EventConfigFlagBits +{ + kUnityD3D12EventConfigFlag_EnsurePreviousFrameSubmission = (1 << 0), // default: (NOT SUPPORTED) + kUnityD3D12EventConfigFlag_FlushCommandBuffers = (1 << 1), // submit existing command buffers, default: not set + kUnityD3D12EventConfigFlag_SyncWorkerThreads = (1 << 2), // wait for worker threads to finish, default: not set + kUnityD3D12EventConfigFlag_ModifiesCommandBuffersState = (1 << 3), // should be set when descriptor set bindings, vertex buffer bindings, etc are changed (default: set) +}; + +struct UnityD3D12PluginEventConfig +{ + UnityD3D12GraphicsQueueAccess graphicsQueueAccess; + UINT32 flags; // UnityD3D12EventConfigFlagBits to be used when invoking a native plugin + bool ensureActiveRenderTextureIsBound; // If true, the actively bound render texture will be bound prior the execution of the native plugin method. +}; + typedef struct UnityGraphicsD3D12PhysicalVideoMemoryControlValues UnityGraphicsD3D12PhysicalVideoMemoryControlValues; -struct UnityGraphicsD3D12PhysicalVideoMemoryControlValues // all values in bytes +struct UnityGraphicsD3D12PhysicalVideoMemoryControlValues // all absolute values in bytes { UINT64 reservation; // Minimum required physical memory for an application [default = 64MB]. UINT64 systemMemoryThreshold; // If free physical video memory drops below this threshold, resources will be allocated in system memory. [default = 64MB] - UINT64 residencyThreshold; // Minimum free physical video memory needed to start bringing evicted resources back after shrunken video memory budget expands again. [default = 128MB] + UINT64 residencyHysteresisThreshold; // Minimum free physical video memory needed to start bringing evicted resources back after shrunken video memory budget expands again. [default = 128MB] + float nonEvictableRelativeThreshold; // The relative proportion of the video memory budget that must be kept available for non-evictable resources. [default = 0.25] +}; + +// Should only be used on the rendering/submission thread. +UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v7) +{ + ID3D12Device* (UNITY_INTERFACE_API * GetDevice)(); + + IDXGISwapChain* (UNITY_INTERFACE_API * GetSwapChain)(); + UINT32(UNITY_INTERFACE_API * GetSyncInterval)(); + UINT(UNITY_INTERFACE_API * GetPresentFlags)(); + + ID3D12Fence* (UNITY_INTERFACE_API * GetFrameFence)(); + // Returns the value set on the frame fence once the current frame completes or the GPU is flushed + UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); + + // Executes a given command list on a worker thread. The command list type must be D3D12_COMMAND_LIST_TYPE_DIRECT. + // [Optional] Declares expected and post-execution resource states. + // Returns the fence value. The value will be set once the current frame completes or the GPU is flushed. + UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); + + void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); + + ID3D12CommandQueue* (UNITY_INTERFACE_API * GetCommandQueue)(); + + ID3D12Resource* (UNITY_INTERFACE_API * TextureFromRenderBuffer)(UnityRenderBuffer rb); + ID3D12Resource* (UNITY_INTERFACE_API * TextureFromNativeTexture)(UnityTextureID texture); + + // Change the precondition for a specific user-defined event + // Should be called during initialization + void(UNITY_INTERFACE_API * ConfigureEvent)(int eventID, const UnityD3D12PluginEventConfig * pluginEventConfig); + + bool(UNITY_INTERFACE_API * CommandRecordingState)(UnityGraphicsD3D12RecordingState * outCommandRecordingState); +}; +UNITY_REGISTER_INTERFACE_GUID(0x4624B0DA41B64AACULL, 0x915AABCB9BC3F0D3ULL, IUnityGraphicsD3D12v7) + +// Should only be used on the rendering/submission thread. +UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v6) +{ + ID3D12Device* (UNITY_INTERFACE_API * GetDevice)(); + + ID3D12Fence* (UNITY_INTERFACE_API * GetFrameFence)(); + // Returns the value set on the frame fence once the current frame completes or the GPU is flushed + UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); + + // Executes a given command list on a worker thread. The command list type must be D3D12_COMMAND_LIST_TYPE_DIRECT. + // [Optional] Declares expected and post-execution resource states. + // Returns the fence value. The value will be set once the current frame completes or the GPU is flushed. + UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); + + void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); + + ID3D12CommandQueue* (UNITY_INTERFACE_API * GetCommandQueue)(); + + ID3D12Resource* (UNITY_INTERFACE_API * TextureFromRenderBuffer)(UnityRenderBuffer rb); + ID3D12Resource* (UNITY_INTERFACE_API * TextureFromNativeTexture)(UnityTextureID texture); + + // Change the precondition for a specific user-defined event + // Should be called during initialization + void(UNITY_INTERFACE_API * ConfigureEvent)(int eventID, const UnityD3D12PluginEventConfig * pluginEventConfig); + + bool(UNITY_INTERFACE_API * CommandRecordingState)(UnityGraphicsD3D12RecordingState* outCommandRecordingState); }; +UNITY_REGISTER_INTERFACE_GUID(0xA396DCE58CAC4D78ULL, 0xAFDD9B281F20B840ULL, IUnityGraphicsD3D12v6) // Should only be used on the rendering/submission thread. UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v5) @@ -32,16 +131,16 @@ UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v5) // Returns the value set on the frame fence once the current frame completes or the GPU is flushed UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); - // Executes a given command list on a worker thread. + // Executes a given command list on a worker thread. The command list type must be D3D12_COMMAND_LIST_TYPE_DIRECT. // [Optional] Declares expected and post-execution resource states. - // Returns the fence value. + // Returns the fence value. The value will be set once the current frame completes or the GPU is flushed. UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); ID3D12CommandQueue* (UNITY_INTERFACE_API * GetCommandQueue)(); - ID3D12Resource* (UNITY_INTERFACE_API * TextureFromRenderBuffer)(UnityRenderBuffer * rb); + ID3D12Resource* (UNITY_INTERFACE_API * TextureFromRenderBuffer)(UnityRenderBuffer rb); }; UNITY_REGISTER_INTERFACE_GUID(0xF5C8D8A37D37BC42ULL, 0xB02DFE93B5064A27ULL, IUnityGraphicsD3D12v5) @@ -54,9 +153,9 @@ UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v4) // Returns the value set on the frame fence once the current frame completes or the GPU is flushed UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); - // Executes a given command list on a worker thread. + // Executes a given command list on a worker thread. The command list type must be D3D12_COMMAND_LIST_TYPE_DIRECT. // [Optional] Declares expected and post-execution resource states. - // Returns the fence value. + // Returns the fence value. The value will be set once the current frame completes or the GPU is flushed. UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); @@ -74,9 +173,9 @@ UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v3) // Returns the value set on the frame fence once the current frame completes or the GPU is flushed UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); - // Executes a given command list on a worker thread. + // Executes a given command list on a worker thread. The command list type must be D3D12_COMMAND_LIST_TYPE_DIRECT. // [Optional] Declares expected and post-execution resource states. - // Returns the fence value. + // Returns the fence value. The value will be set once the current frame completes or the GPU is flushed. UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); void(UNITY_INTERFACE_API * SetPhysicalVideoMemoryControlValues)(const UnityGraphicsD3D12PhysicalVideoMemoryControlValues * memInfo); @@ -92,9 +191,9 @@ UNITY_DECLARE_INTERFACE(IUnityGraphicsD3D12v2) // Returns the value set on the frame fence once the current frame completes or the GPU is flushed UINT64(UNITY_INTERFACE_API * GetNextFrameFenceValue)(); - // Executes a given command list on a worker thread. + // Executes a given command list on a worker thread. The command list type must be D3D12_COMMAND_LIST_TYPE_DIRECT. // [Optional] Declares expected and post-execution resource states. - // Returns the fence value. + // Returns the fence value. The value will be set once the current frame completes or the GPU is flushed. UINT64(UNITY_INTERFACE_API * ExecuteCommandList)(ID3D12GraphicsCommandList * commandList, int stateCount, UnityGraphicsD3D12ResourceState * states); }; UNITY_REGISTER_INTERFACE_GUID(0xEC39D2F18446C745ULL, 0xB1A2626641D6B11FULL, IUnityGraphicsD3D12v2) diff --git a/PluginSource/source/Unity/IUnityInterface.h b/PluginSource/source/Unity/IUnityInterface.h index 190c5a02..ab713ec6 100644 --- a/PluginSource/source/Unity/IUnityInterface.h +++ b/PluginSource/source/Unity/IUnityInterface.h @@ -1,3 +1,9 @@ +// Unity Native Plugin API copyright © 2015 Unity Technologies ApS +// +// Licensed under the Unity Companion License for Unity - dependent projects--see[Unity Companion License](http://www.unity3d.com/legal/licenses/Unity_Companion_License). +// +// Unless expressly provided otherwise, the Software under this license is made available strictly on an “AS IS” BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.Please review the license for details on these and other terms and conditions. + #pragma once // Unity native plugin API @@ -9,9 +15,9 @@ #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64) || defined(WINAPI_FAMILY) #define UNITY_INTERFACE_API __stdcall #define UNITY_INTERFACE_EXPORT __declspec(dllexport) -#elif defined(__MACH__) || defined(__ANDROID__) || defined(__linux__) +#elif defined(__MACH__) || defined(__ANDROID__) || defined(__linux__) || defined(LUMIN) #define UNITY_INTERFACE_API - #define UNITY_INTERFACE_EXPORT + #define UNITY_INTERFACE_EXPORT __attribute__ ((visibility ("default"))) #else #define UNITY_INTERFACE_API #define UNITY_INTERFACE_EXPORT diff --git a/README.md b/README.md index c7f77ca1..43eaeb65 100644 --- a/README.md +++ b/README.md @@ -22,8 +22,10 @@ The plugin itself does very few things: Native code rendering is implemented for several platforms and graphics APIs: * Windows (D3D11, D3D12, OpenGL, Vulkan) - * Note that Vulkan is not compiled in by default (requires Vulkan SDK); enable it by editing `#define SUPPORT_VULKAN 0` + * Note that Vulkan and DX12 are not compiled in by default + * Vulkan requires Vulkan SDK; enable it by editing `#define SUPPORT_VULKAN 0` to `1` under `UNITY_WIN` clause in `PlatformBase.h` + * DX12 requires Agility SDK; enable it by editing `#define SUPPORT_D3D12 0` to `1` under `UNITY_WIN` clause in `PlatformBase.h` * macOS (Metal, OpenGL) * Linux (OpenGL, Vulkan) * Windows Store aka UWP (D3D11, D3D12) diff --git a/UnityProject/Assets/Plugins/Metro/UWP/x64/RenderingPlugin.dll b/UnityProject/Assets/Plugins/Metro/UWP/x64/RenderingPlugin.dll index b3c5879a347ef87b1f52b12058e365c6618e7201..344570d8b9feb883ecfecdae4016af4ed830886e 100644 GIT binary patch literal 188416 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 literal 19968 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 h9%EJTeK1wa*3DaETa~Rj+icsaw*7nFj$Ea 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�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 literal 16896 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 Ao&W#< diff --git a/UnityProject/Assets/Plugins/x86/RenderingPlugin.dll b/UnityProject/Assets/Plugins/x86/RenderingPlugin.dll index 83dfd6ab2c63dcaba974f8151156c21e8d6a5088..6c114ce45aed1fa15b8ca4eda11babcb294219ff 100644 GIT binary patch literal 159744 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 literal 122368 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 cvjphot30w(R&Q){sxJK?~ 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 literal 147456 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 diff --git a/UnityProject/Assets/UseRenderingPlugin.cs b/UnityProject/Assets/UseRenderingPlugin.cs index d5a65416..ceea22e1 100644 --- a/UnityProject/Assets/UseRenderingPlugin.cs +++ b/UnityProject/Assets/UseRenderingPlugin.cs @@ -4,135 +4,210 @@ using System.Runtime.InteropServices; using UnityEngine.Rendering; + public class UseRenderingPlugin : MonoBehaviour { - // Native plugin rendering events are only called if a plugin is used - // by some script. This means we have to DllImport at least - // one function in some active script. - // For this example, we'll call into plugin's SetTimeFromUnity - // function and pass the current time so the plugin can animate. - -#if (UNITY_IOS || UNITY_TVOS || UNITY_WEBGL) && !UNITY_EDITOR - [DllImport ("__Internal")] + // Native plugin rendering events are only called if a plugin is used + // by some script. This means we have to DllImport at least + // one function in some active script. + // For this example, we'll call into plugin's SetTimeFromUnity + // function and pass the current time so the plugin can animate. + +#if (PLATFORM_IOS || PLATFORM_TVOS || PLATFORM_BRATWURST || PLATFORM_SWITCH) && !UNITY_EDITOR + [DllImport("__Internal")] #else - [DllImport ("RenderingPlugin")] + [DllImport("RenderingPlugin")] #endif - private static extern void SetTimeFromUnity(float t); + private static extern void SetTimeFromUnity(float t); - // We'll also pass native pointer to a texture in Unity. - // The plugin will fill texture data from native code. -#if (UNITY_IOS || UNITY_TVOS || UNITY_WEBGL) && !UNITY_EDITOR - [DllImport ("__Internal")] + // We'll also pass native pointer to a texture in Unity. + // The plugin will fill texture data from native code. +#if (PLATFORM_IOS || PLATFORM_TVOS || PLATFORM_BRATWURST || PLATFORM_SWITCH) && !UNITY_EDITOR + [DllImport("__Internal")] #else - [DllImport ("RenderingPlugin")] + [DllImport("RenderingPlugin")] #endif - private static extern void SetTextureFromUnity(System.IntPtr texture, int w, int h); + private static extern void SetTextureFromUnity(System.IntPtr texture, int w, int h); - // We'll pass native pointer to the mesh vertex buffer. - // Also passing source unmodified mesh data. - // The plugin will fill vertex data from native code. -#if (UNITY_IOS || UNITY_TVOS || UNITY_WEBGL) && !UNITY_EDITOR - [DllImport ("__Internal")] + // We'll pass native pointer to the mesh vertex buffer. + // Also passing source unmodified mesh data. + // The plugin will fill vertex data from native code. +#if (PLATFORM_IOS || PLATFORM_TVOS || PLATFORM_BRATWURST || PLATFORM_SWITCH) && !UNITY_EDITOR + [DllImport("__Internal")] #else - [DllImport ("RenderingPlugin")] + [DllImport("RenderingPlugin")] #endif - private static extern void SetMeshBuffersFromUnity (IntPtr vertexBuffer, int vertexCount, IntPtr sourceVertices, IntPtr sourceNormals, IntPtr sourceUVs); + private static extern void SetMeshBuffersFromUnity(IntPtr vertexBuffer, int vertexCount, IntPtr sourceVertices, IntPtr sourceNormals, IntPtr sourceUVs); -#if (UNITY_IOS || UNITY_TVOS || UNITY_WEBGL) && !UNITY_EDITOR - [DllImport ("__Internal")] +#if (PLATFORM_IOS || PLATFORM_TVOS || PLATFORM_BRATWURST || PLATFORM_SWITCH) && !UNITY_EDITOR + [DllImport("__Internal")] #else - [DllImport("RenderingPlugin")] + [DllImport("RenderingPlugin")] #endif - private static extern IntPtr GetRenderEventFunc(); + private static extern IntPtr GetRenderEventFunc(); -#if UNITY_WEBGL && !UNITY_EDITOR - [DllImport ("__Internal")] - private static extern void RegisterPlugin(); +#if PLATFORM_SWITCH && !UNITY_EDITOR + [DllImport("__Internal")] + private static extern void RegisterPlugin(); #endif - IEnumerator Start() - { -#if UNITY_WEBGL && !UNITY_EDITOR - RegisterPlugin(); + // DX12 plugin has a few additional exported functions + +#if (UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_WSA || UNITY_WSA_10_0) + [DllImport("RenderingPlugin")] + private static extern IntPtr GetRenderTexture(); + + [DllImport("RenderingPlugin")] + private static extern void SetRenderTexture(IntPtr rb); + + [DllImport("RenderingPlugin")] + private static extern bool IsSwapChainAvailable(); + + [DllImport("RenderingPlugin")] + private static extern uint GetPresentFlags(); + + [DllImport("RenderingPlugin")] + private static extern uint GetBackBufferWidth(); + + [DllImport("RenderingPlugin")] + private static extern uint GetSyncInterval(); + + [DllImport("RenderingPlugin")] + private static extern uint GetBackBufferHeight(); + + private static RenderTexture renderTex; + private static GameObject pluginInfo; + + private void CreateRenderTexture() + { + renderTex = new RenderTexture(256, 256, 16, RenderTextureFormat.ARGB32); + renderTex.Create(); + IntPtr nativeBufPTr = renderTex.colorBuffer.GetNativeRenderBufferPtr(); + SetRenderTexture(nativeBufPTr); + GameObject sphere = GameObject.Find("Sphere"); + sphere.transform.rotation = Quaternion.Euler(0.0f, 180.0f, 0.0f); + sphere.GetComponent().material.mainTexture = renderTex; + } + +#else + private void CreateRenderTexture() { } + private void SetRenderTexture(IntPtr rb) { } #endif - CreateTextureAndPassToPlugin(); - SendMeshBuffersToPlugin(); - yield return StartCoroutine("CallPluginAtEndOfFrames"); - } - - private void CreateTextureAndPassToPlugin() - { - // Create a texture - Texture2D tex = new Texture2D(256,256,TextureFormat.ARGB32,false); - // Set point filtering just so we can see the pixels clearly - tex.filterMode = FilterMode.Point; - // Call Apply() so it's actually uploaded to the GPU - tex.Apply(); - - // Set texture onto our material - GetComponent().material.mainTexture = tex; - - // Pass texture pointer to the plugin - SetTextureFromUnity (tex.GetNativeTexturePtr(), tex.width, tex.height); - } - - private void SendMeshBuffersToPlugin () - { - var filter = GetComponent (); - var mesh = filter.mesh; - - // This is equivalent to MeshVertex in RenderingPlugin.cpp - var desiredVertexLayout = new[] - { - new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3), - new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float32, 3), - new VertexAttributeDescriptor(VertexAttribute.Color, VertexAttributeFormat.Float32, 4), - new VertexAttributeDescriptor(VertexAttribute.TexCoord0, VertexAttributeFormat.Float32, 2) - }; - - // Let's be certain we'll get the vertex buffer layout we want in native code - mesh.SetVertexBufferParams(mesh.vertexCount, desiredVertexLayout); - - // The plugin will want to modify the vertex buffer -- on many platforms - // for that to work we have to mark mesh as "dynamic" (which makes the buffers CPU writable -- - // by default they are immutable and only GPU-readable). - mesh.MarkDynamic (); - - // However, mesh being dynamic also means that the CPU on most platforms can not - // read from the vertex buffer. Our plugin also wants original mesh data, - // so let's pass it as pointers to regular C# arrays. - // This bit shows how to pass array pointers to native plugins without doing an expensive - // copy: you have to get a GCHandle, and get raw address of that. - var vertices = mesh.vertices; - var normals = mesh.normals; - var uvs = mesh.uv; - GCHandle gcVertices = GCHandle.Alloc (vertices, GCHandleType.Pinned); - GCHandle gcNormals = GCHandle.Alloc (normals, GCHandleType.Pinned); - GCHandle gcUV = GCHandle.Alloc (uvs, GCHandleType.Pinned); - - SetMeshBuffersFromUnity (mesh.GetNativeVertexBufferPtr (0), mesh.vertexCount, gcVertices.AddrOfPinnedObject (), gcNormals.AddrOfPinnedObject (), gcUV.AddrOfPinnedObject ()); - - gcVertices.Free (); - gcNormals.Free (); - gcUV.Free (); - } - - - private IEnumerator CallPluginAtEndOfFrames() - { - while (true) { - // Wait until all frame rendering is done - yield return new WaitForEndOfFrame(); - - // Set time for the plugin - SetTimeFromUnity (Time.timeSinceLevelLoad); - - // Issue a plugin event with arbitrary integer identifier. - // The plugin can distinguish between different - // things it needs to do based on this ID. - // For our simple plugin, it does not matter which ID we pass here. - GL.IssuePluginEvent(GetRenderEventFunc(), 1); - } - } + + IEnumerator Start() + { +#if PLATFORM_SWITCH && !UNITY_EDITOR + RegisterPlugin(); +#endif + + if (SystemInfo.graphicsDeviceType == GraphicsDeviceType.Direct3D12) + { + CreateRenderTexture(); + } + + CreateTextureAndPassToPlugin(); + SendMeshBuffersToPlugin(); + yield return StartCoroutine("CallPluginAtEndOfFrames"); + } + + void OnDisable() + { + if (SystemInfo.graphicsDeviceType == GraphicsDeviceType.Direct3D12) + { + // Signals the plugin that renderTex will be destroyed + SetRenderTexture(IntPtr.Zero); + } + } + + private void CreateTextureAndPassToPlugin() + { + // Create a texture + Texture2D tex = new Texture2D(256, 256, TextureFormat.ARGB32, false); + // Set point filtering just so we can see the pixels clearly + tex.filterMode = FilterMode.Point; + // Call Apply() so it's actually uploaded to the GPU + tex.Apply(); + + // Set texture onto our material + GetComponent().material.mainTexture = tex; + + // Pass texture pointer to the plugin + SetTextureFromUnity(tex.GetNativeTexturePtr(), tex.width, tex.height); + } + + private void SendMeshBuffersToPlugin() + { + var filter = GetComponent(); + var mesh = filter.mesh; + + // This is equivalent to MeshVertex in RenderingPlugin.cpp + var desiredVertexLayout = new[] + { + new VertexAttributeDescriptor(VertexAttribute.Position, VertexAttributeFormat.Float32, 3), + new VertexAttributeDescriptor(VertexAttribute.Normal, VertexAttributeFormat.Float32, 3), + new VertexAttributeDescriptor(VertexAttribute.Color, VertexAttributeFormat.Float32, 4), + new VertexAttributeDescriptor(VertexAttribute.TexCoord0, VertexAttributeFormat.Float32, 2) + }; + + // Let's be certain we'll get the vertex buffer layout we want in native code + mesh.SetVertexBufferParams(mesh.vertexCount, desiredVertexLayout); + + // The plugin will want to modify the vertex buffer -- on many platforms + // for that to work we have to mark mesh as "dynamic" (which makes the buffers CPU writable -- + // by default they are immutable and only GPU-readable). + mesh.MarkDynamic(); + + // However, mesh being dynamic also means that the CPU on most platforms can not + // read from the vertex buffer. Our plugin also wants original mesh data, + // so let's pass it as pointers to regular C# arrays. + // This bit shows how to pass array pointers to native plugins without doing an expensive + // copy: you have to get a GCHandle, and get raw address of that. + var vertices = mesh.vertices; + var normals = mesh.normals; + var uvs = mesh.uv; + GCHandle gcVertices = GCHandle.Alloc(vertices, GCHandleType.Pinned); + GCHandle gcNormals = GCHandle.Alloc(normals, GCHandleType.Pinned); + GCHandle gcUV = GCHandle.Alloc(uvs, GCHandleType.Pinned); + + SetMeshBuffersFromUnity(mesh.GetNativeVertexBufferPtr(0), mesh.vertexCount, gcVertices.AddrOfPinnedObject(), gcNormals.AddrOfPinnedObject(), gcUV.AddrOfPinnedObject()); + + gcVertices.Free(); + gcNormals.Free(); + gcUV.Free(); + } + + // custom "time" for deterministic results + int updateTimeCounter = 0; + + private IEnumerator CallPluginAtEndOfFrames() + { + while (true) + { + // Wait until all frame rendering is done + yield return new WaitForEndOfFrame(); + + // Set time for the plugin + // Unless it is D3D12 whose renderer is allowed to overlap with the next frame update and would cause instabilities due to no synchronization. + // On Switch, with multithreaded mode, setting the time for frame 1 may overlap with the render thread calling the plugin event for frame 0 resulting in the plugin writing data for frame 1 at frame 0. + if (SystemInfo.graphicsDeviceType != GraphicsDeviceType.Direct3D12 && SystemInfo.graphicsDeviceType != GraphicsDeviceType.Switch) + { + ++updateTimeCounter; + SetTimeFromUnity((float)updateTimeCounter * 0.016f); + } + + // Issue a plugin event with arbitrary integer identifier. + // The plugin can distinguish between different + // things it needs to do based on this ID. + // On some backends the choice of eventID matters e.g on DX12 where + // eventID == 1 means the plugin callback will be called from the render thread + // and eventID == 2 means the callback is called from the submission thread + GL.IssuePluginEvent(GetRenderEventFunc(), 1); + + if (SystemInfo.graphicsDeviceType == GraphicsDeviceType.Direct3D12) + { + GL.IssuePluginEvent(GetRenderEventFunc(), 2); + } + } + } } diff --git a/UnityProject/Assets/scene.unity b/UnityProject/Assets/scene.unity index f74696dc..69c1ee60 100644 --- a/UnityProject/Assets/scene.unity +++ b/UnityProject/Assets/scene.unity @@ -1,19 +1,19 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: --- !u!29 &1 -SceneSettings: +OcclusionCullingSettings: m_ObjectHideFlags: 0 - m_PVSData: - m_PVSObjectsArray: [] - m_PVSPortalsArray: [] + serializedVersion: 2 m_OcclusionBakeSettings: smallestOccluder: 5 smallestHole: 0.25 backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 7 + serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -25,6 +25,7 @@ RenderSettings: m_AmbientGroundColor: {r: 0.098908, g: 0.100485, b: 0.119403, a: 1} m_AmbientIntensity: 1 m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} m_SkyboxMaterial: {fileID: 0} m_HaloStrength: 0.5 m_FlareStrength: 1 @@ -38,70 +39,100 @@ RenderSettings: m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 7 + serializedVersion: 12 m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 m_IndirectOutputScale: 1 m_AlbedoBoost: 1 - m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 4 + serializedVersion: 12 m_Resolution: 1 m_BakeResolution: 50 - m_TextureWidth: 1024 - m_TextureHeight: 1024 + m_AtlasSize: 1024 m_AO: 1 m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 m_TextureCompression: 0 - m_DirectLightInLightProbes: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_RuntimeCPUUsage: 25 + m_LightingSettings: {fileID: 4890085278179872738, guid: ce9c18af04d795548bfbfde3a9fcb6ea, + type: 2} --- !u!196 &5 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 + agentTypeID: 0 agentRadius: 0.4 agentHeight: 1.8 agentSlope: 45 agentClimb: 0.9 ledgeDropHeight: 0 maxJumpAcrossDistance: 0 - accuratePlacement: 0 minRegionArea: 2 - cellSize: 0.13333333 manualCellSize: 0 + cellSize: 0.13333333 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &7 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - - 4: {fileID: 9} - - 20: {fileID: 10} - - 92: {fileID: 12} - - 124: {fileID: 13} - - 81: {fileID: 11} + - component: {fileID: 9} + - component: {fileID: 10} + - component: {fileID: 13} + - component: {fileID: 11} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -112,26 +143,43 @@ GameObject: --- !u!4 &9 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7} + serializedVersion: 2 m_LocalRotation: {x: -0.13691497, y: -0.8374118, z: 0.24425894, w: -0.4693969} m_LocalPosition: {x: -1.913136, y: 2.253977, z: 0.506491} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!20 &10 Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.192157, g: 0.301961, b: 0.47451, a: 0.019608} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -152,40 +200,38 @@ Camera: m_TargetDisplay: 0 m_TargetEye: 3 m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 - m_StereoMirrorMode: 0 --- !u!81 &11 AudioListener: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 7} - m_Enabled: 1 ---- !u!92 &12 -Behaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7} m_Enabled: 1 --- !u!124 &13 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7} m_Enabled: 1 --- !u!1 &15 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - - 4: {fileID: 19} - - 108: {fileID: 28} + - component: {fileID: 19} + - component: {fileID: 28} m_Layer: 0 m_Name: Spotlight m_TagString: Untagged @@ -196,12 +242,13 @@ GameObject: --- !u!1 &16 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - - 4: {fileID: 20} - - 108: {fileID: 29} + - component: {fileID: 20} + - component: {fileID: 29} m_Layer: 0 m_Name: Directional light m_TagString: Untagged @@ -212,13 +259,14 @@ GameObject: --- !u!1 &17 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - - 4: {fileID: 21} - - 33: {fileID: 25} - - 23: {fileID: 23} + - component: {fileID: 21} + - component: {fileID: 25} + - component: {fileID: 23} m_Layer: 0 m_Name: Sphere m_TagString: Untagged @@ -229,14 +277,15 @@ GameObject: --- !u!1 &18 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 m_Component: - - 4: {fileID: 22} - - 33: {fileID: 26} - - 23: {fileID: 24} - - 114: {fileID: 31} + - component: {fileID: 22} + - component: {fileID: 26} + - component: {fileID: 24} + - component: {fileID: 31} m_Layer: 0 m_Name: _PlaneThatCallsIntoPlugin m_TagString: Untagged @@ -247,148 +296,206 @@ GameObject: --- !u!4 &19 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 15} + serializedVersion: 2 m_LocalRotation: {x: -0.08680297, y: -0.9131517, z: 0.27678692, w: -0.2863709} m_LocalPosition: {x: -2.210178, y: 2.850663, z: 1.878642} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &20 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 16} + serializedVersion: 2 m_LocalRotation: {x: -0.31668198, y: -0.33227497, z: 0.119525984, w: -0.8803519} m_LocalPosition: {x: -2.359002, y: 3.204721, z: -3.580904} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &21 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 17} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.109563, y: 1.027012, z: -1.076521} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &22 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 18} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 1.9431487, y: 0.447558, z: -3.4134645} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!23 &23 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 17} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} - m_SubsetIndices: + 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: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_SelectedWireframeHidden: 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!23 &24 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 18} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 0 m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} - m_SubsetIndices: + 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: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 - m_SelectedWireframeHidden: 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!33 &25 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 17} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!33 &26 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 18} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!108 &28 Light: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 15} m_Enabled: 1 - serializedVersion: 7 + serializedVersion: 10 m_Type: 0 + m_Shape: 0 m_Color: {r: 1, g: 0.492537, b: 0.492537, a: 1} m_Intensity: 2 m_Range: 10 m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 m_CookieSize: 10 m_Shadows: m_Type: 0 m_Resolution: -1 + m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} @@ -396,32 +503,61 @@ Light: m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 + m_RenderingLayerMask: 1 m_Lightmapping: 1 + m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!108 &29 Light: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 16} m_Enabled: 1 - serializedVersion: 7 + serializedVersion: 10 m_Type: 1 + m_Shape: 0 m_Color: {r: 1, g: 0.997495, b: 0.955224, a: 1} m_Intensity: 1 m_Range: 10 m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 m_CookieSize: 10 m_Shadows: m_Type: 2 m_Resolution: -1 + m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} @@ -429,73 +565,36 @@ Light: m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 + m_RenderingLayerMask: 1 m_Lightmapping: 1 + m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!114 &31 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 18} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f1ad34d2576df73428a8586fc566c6cb, type: 3} m_Name: m_EditorClassIdentifier: ---- !u!1 &32 -GameObject: +--- !u!1660057539 &9223372036854775807 +SceneRoots: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 - m_Component: - - 4: {fileID: 33} - - 132: {fileID: 34} - m_Layer: 0 - m_Name: GUI Text Instructions - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &33 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 32} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!132 &34 -GUIText: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 32} - m_Enabled: 1 - serializedVersion: 3 - m_Text: "A simple scene. The plugin will render a rotating triangle in the middle - of it.\r\nIt will also fill the plane texture each frame.\r\nAnd modify the plane - vertex buffer each frame.\nAll done from native code.\r\nPress Play!" - m_Anchor: 0 - m_Alignment: 0 - m_PixelOffset: {x: 0, y: 0} - m_LineSpacing: 1 - m_TabSize: 4 - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_Material: {fileID: 0} - m_FontSize: 0 - m_FontStyle: 0 - m_Color: - serializedVersion: 2 - rgba: 4294967295 - m_PixelCorrect: 1 - m_RichText: 1 + m_Roots: + - {fileID: 22} + - {fileID: 9} + - {fileID: 20} + - {fileID: 21} + - {fileID: 19} diff --git a/UnityProject/Packages/manifest.json b/UnityProject/Packages/manifest.json index 950f1abe..3a39d617 100644 --- a/UnityProject/Packages/manifest.json +++ b/UnityProject/Packages/manifest.json @@ -1,8 +1,17 @@ { "dependencies": { - "com.unity.package-manager-ui": "2.0.7", - "com.unity.textmeshpro": "1.4.1", + "com.unity.2d.sprite": "1.0.0", + "com.unity.2d.tilemap": "1.0.0", + "com.unity.ai.navigation": "1.1.4", + "com.unity.ide.rider": "3.0.24", + "com.unity.ide.visualstudio": "2.0.18", + "com.unity.test-framework": "1.3.9", + "com.unity.textmeshpro": "3.0.6", + "com.unity.timeline": "1.8.2", + "com.unity.ugui": "1.0.0", + "com.unity.xr.legacyinputhelpers": "2.1.10", "com.unity.modules.ai": "1.0.0", + "com.unity.modules.androidjni": "1.0.0", "com.unity.modules.animation": "1.0.0", "com.unity.modules.assetbundle": "1.0.0", "com.unity.modules.audio": "1.0.0", diff --git a/UnityProject/ProjectSettings/EditorBuildSettings.asset b/UnityProject/ProjectSettings/EditorBuildSettings.asset index 6dc24f7d..add5036a 100644 --- a/UnityProject/ProjectSettings/EditorBuildSettings.asset +++ b/UnityProject/ProjectSettings/EditorBuildSettings.asset @@ -4,4 +4,9 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 - m_Scenes: [] + m_Scenes: + - enabled: 1 + path: Assets/scene.unity + guid: c159f2591a9b5c843b0a0442451f78f8 + m_configObjects: {} + m_UseUCBPForAssetBundles: 0 diff --git a/UnityProject/ProjectSettings/ProjectVersion.txt b/UnityProject/ProjectSettings/ProjectVersion.txt index 1d735178..93aa152b 100644 --- a/UnityProject/ProjectSettings/ProjectVersion.txt +++ b/UnityProject/ProjectSettings/ProjectVersion.txt @@ -1 +1,2 @@ -m_EditorVersion: 2018.3.9f1 +m_EditorVersion: 2023.1.15f1 +m_EditorVersionWithRevision: 2023.1.15f1 (831263a4172c) From 2d06b28ca65296e673fec8a162359daf2d6d7aa3 Mon Sep 17 00:00:00 2001 From: Aleksis Karastie Date: Fri, 20 Oct 2023 22:53:26 +0300 Subject: [PATCH 09/15] Resolve type for typeless resource Fixing bug when creating rtvs for typeless resources and remove unused function in RenderingPlugin.cpp --- PluginSource/source/RenderAPI_D3D12.cpp | 89 +++++++++++++++++- PluginSource/source/RenderingPlugin.cpp | 5 - .../Plugins/Metro/UWP/x64/RenderingPlugin.dll | Bin 188416 -> 188928 bytes .../Plugins/Metro/UWP/x86/RenderingPlugin.dll | Bin 159744 -> 160768 bytes .../Assets/Plugins/x86/RenderingPlugin.dll | Bin 159744 -> 160768 bytes .../Assets/Plugins/x86_64/RenderingPlugin.dll | Bin 188416 -> 188928 bytes 6 files changed, 88 insertions(+), 6 deletions(-) diff --git a/PluginSource/source/RenderAPI_D3D12.cpp b/PluginSource/source/RenderAPI_D3D12.cpp index ec5dacd4..135b6516 100644 --- a/PluginSource/source/RenderAPI_D3D12.cpp +++ b/PluginSource/source/RenderAPI_D3D12.cpp @@ -399,6 +399,8 @@ class RenderAPI_D3D12 : public RenderAPI // Wait on any user provided fence void wait_on_fence(UINT64 fence_value, ID3D12Fence* fence, HANDLE fence_event); + DXGI_FORMAT typeless_fmt_to_typed(DXGI_FORMAT format); + typedef std::vector D3D12Buffers; typedef std::map DeleteQueue; typedef std::unordered_map MappedVertexBuffers; @@ -1233,7 +1235,17 @@ void RenderAPI_D3D12::create_render_texture_rtv(ID3D12DescriptorHeap* heap, ID3D { CD3DX12_CPU_DESCRIPTOR_HANDLE rtv_handle{ heap->GetCPUDescriptorHandleForHeapStart() }; rtv_handle.Offset(offset, m_texture_rtv_desc_size); - s_d3d12->GetDevice()->CreateRenderTargetView(target, nullptr, rtv_handle); + + D3D12_TEX2D_RTV rtv; + rtv.MipSlice = 0; + rtv.PlaneSlice = 0; + + D3D12_RENDER_TARGET_VIEW_DESC desc; + desc.Format = typeless_fmt_to_typed(target->GetDesc().Format); + desc.ViewDimension = D3D12_RTV_DIMENSION_TEXTURE2D; + desc.Texture2D = rtv; + + s_d3d12->GetDevice()->CreateRenderTargetView(target, &desc, rtv_handle); } void RenderAPI_D3D12::transition_barrier(ID3D12GraphicsCommandList* cmd, ID3D12Resource* resource, D3D12_RESOURCE_STATES before, D3D12_RESOURCE_STATES after) @@ -1275,6 +1287,81 @@ void RenderAPI_D3D12::wait_on_fence(UINT64 fence_value, ID3D12Fence* fence, HAND } } +DXGI_FORMAT RenderAPI_D3D12::typeless_fmt_to_typed(DXGI_FORMAT format) +{ + switch (format) + { + case DXGI_FORMAT_R32G32B32A32_TYPELESS: + return DXGI_FORMAT_R32G32B32A32_UINT; + + case DXGI_FORMAT_R32G32B32_TYPELESS: + return DXGI_FORMAT_R32G32B32_UINT; + + case DXGI_FORMAT_R16G16B16A16_TYPELESS: + return DXGI_FORMAT_R16G16B16A16_UNORM; + + case DXGI_FORMAT_R32G32_TYPELESS: + return DXGI_FORMAT_R32G32_UINT; + + case DXGI_FORMAT_R32G8X24_TYPELESS: + return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT; + + case DXGI_FORMAT_R10G10B10A2_TYPELESS: + return DXGI_FORMAT_X32_TYPELESS_G8X24_UINT; + + case DXGI_FORMAT_R8G8B8A8_TYPELESS: + return DXGI_FORMAT_R8G8B8A8_UNORM; + + case DXGI_FORMAT_R16G16_TYPELESS: + return DXGI_FORMAT_R16G16_UNORM; + + case DXGI_FORMAT_R32_TYPELESS: + return DXGI_FORMAT_R32_UINT; + + case DXGI_FORMAT_R24G8_TYPELESS: + return DXGI_FORMAT_R24_UNORM_X8_TYPELESS; + + case DXGI_FORMAT_R8G8_TYPELESS: + return DXGI_FORMAT_R8G8_UNORM; + + case DXGI_FORMAT_R16_TYPELESS: + return DXGI_FORMAT_R16_UNORM; + + case DXGI_FORMAT_R8_TYPELESS: + return DXGI_FORMAT_R8_UNORM; + + case DXGI_FORMAT_BC1_TYPELESS: + return DXGI_FORMAT_BC1_UNORM; + + case DXGI_FORMAT_BC2_TYPELESS: + return DXGI_FORMAT_BC2_UNORM; + + case DXGI_FORMAT_BC3_TYPELESS: + return DXGI_FORMAT_BC3_UNORM; + + case DXGI_FORMAT_BC4_TYPELESS: + return DXGI_FORMAT_BC4_UNORM; + + case DXGI_FORMAT_BC5_TYPELESS: + return DXGI_FORMAT_BC5_UNORM; + + case DXGI_FORMAT_B8G8R8A8_TYPELESS: + return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB; + + case DXGI_FORMAT_B8G8R8X8_TYPELESS: + return DXGI_FORMAT_B8G8R8X8_UNORM_SRGB; + + case DXGI_FORMAT_BC6H_TYPELESS: + return DXGI_FORMAT_BC6H_UF16; + + case DXGI_FORMAT_BC7_TYPELESS: + return DXGI_FORMAT_BC7_UNORM; + + default: + return format; + } +} + void* RenderAPI_D3D12::BeginModifyTexture(void* textureHandle, int textureWidth, int textureHeight, int* outRowPitch) { wait_for_unity_frame_fence(m_texture_copy_fence); diff --git a/PluginSource/source/RenderingPlugin.cpp b/PluginSource/source/RenderingPlugin.cpp index 429b0020..6b1c5773 100644 --- a/PluginSource/source/RenderingPlugin.cpp +++ b/PluginSource/source/RenderingPlugin.cpp @@ -90,11 +90,6 @@ static void UNITY_INTERFACE_API OnGraphicsDeviceEvent(UnityGfxDeviceEventType ev static IUnityInterfaces* s_UnityInterfaces = NULL; static IUnityGraphics* s_Graphics = NULL; -IUnityInterfaces* get_unityintrfaces() -{ - return s_UnityInterfaces; -} - extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityPluginLoad(IUnityInterfaces* unityInterfaces) { s_UnityInterfaces = unityInterfaces; diff --git a/UnityProject/Assets/Plugins/Metro/UWP/x64/RenderingPlugin.dll b/UnityProject/Assets/Plugins/Metro/UWP/x64/RenderingPlugin.dll index 344570d8b9feb883ecfecdae4016af4ed830886e..25fe78a0cae628960c8a3ace286197ffd1e8d694 100644 GIT binary patch delta 46274 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

T}ejn3hQeWeQyH} zX9G7nd@Oso9~GQe&+u4_+!X~*lkhTzn@M<^gby=pRbb?_rA0~8&(D=ElbVf_(B z>GmACD=ElbVf~1rU#`y{4&g@Uj$sd{$VTtsSrWM`3cOLmJs9pK;ZYLa!|+fAo+jZ~ zhHEn%VCp96B&M4vG;&wqcYD@NijLfsROGI(PG6_<Y;$ zqQJQle!P;7{Zt9RK?R3lE5oxDc$tK+GaSb-=Hw(jiRm5+jog(~KIE=Y_-@aQve6dYXx1q9Fh(}IjNxMne5Edj z6T+}v!p$T+m|;$^I&xRw_X*a06+K8= zf4+ha{!b&>Z*OUQ5yQVx2fBlN8ODA)8Qv^mPYL&Cc&`GVlJIW~&tMpHa+0pjbecjV zcV#YeSMXei+!aMf?h5ontk+R=;{fk@88^Q6El8ts^_%ijNJD$6B zIG(2rFPE@U!W9|bsKCfwNki@m9?ForqUgw7fxesd4vLQ4l{Dn8uwF^g8^}g)a-+`S z?BNqsaJsc)_;2bfw};*mzR2(a3I8r(GsC$Ge7!b@bBy5y4CC9Oq;KI#4Y?}{jog)a z$X#JQLD7-BG7q^ctVb$(XK8%}TlbQ#?3Bi%81_@(>Jm<8_}VZIa;=1mGyEs@wmZnz zwb<`uhPN>sU|KBcpYZU7+!cjJ?us3`E3D5~bmXo;Phh>Dq9b?3j@%X2>nVC0*=jd# zmA(n%{y0K5>dCNCfy+s_9m8iN+(*La@R)_%73vUoJjh*{kK7g3wR7jj#Uxyu z;lm8$i;$$#nLee^$X#(DcZKy8ijLeBhow_B*2gM(N=^3r;c~jBG$QM1#$dYN(O-@{ z^ZtL4UAskfwI)9ZjJ2DG!J|0)V{4jeL8w75GFDVzAMIz;%%4E0J6436fZU%taWejd zBUbehV?{^_wB$@nbh%*RL`{RfdaS5aZe3yFf%;eEh39>%y?0QgHLcbcH4T~9#|opN zRAeW#8D_N$tNkk4+ZJNb4HHC&t>abv>B}_ZXCdg?cyIjO%gMCnoBXO!B5J3d6UWmZ zzid7ns>cLNRF;GORHnnc`8Lj7hw1vS6zyO-N_Jxl-qU_E&3LRbJlrr5d!`w~pyCKj z@Q<~7hhK`d8+}NypG3ce^@`CqPY`V~9y?Z*(Z+5x7A@S*dbBRmZ+e$JS@cY!F>F`l=S(E_t(7=F8v@pV>9VP13H!z0G= z5spb)@3@-BW9*lm3$JU>_C<(DEp&f<@lqSGf4^w0l|Rr@_-efm_=}eri3cn~+|bew zejpBJ>^wNxATDVk-);BahHI&F@elG3kZQMze5Q>(6qKA-?O&V&DyGCB@M+cY8l76iTzr!<2wwYky^`3DO%)-F`|#Q^Mu)( z{%ow(VVta;JyB1XSc;R9RjZI&tzzT3I7YcqzBpny#8KX0OOTX?F>oYDTXdqL!7)es z_C)DIXU}?g=rbpZGTM$@U;M%B?A#B;eC<|l7tv5_crx5zh}1@&tSElf=AE1%5;WJz zcu`)9&x=9C%knA~%4oq|8l>IID_v$(OB{B4vHg+MYVxtbUUvt}&1JN(GbTSh6&~3C zAtz=Xxd6s_Rf{}Tp_C`@wlEtC@9O+l8*^$x?T{4daPkrFyHoI|bKjpwSVKTXlMn0i9xiy_)Z%6k9L7}xsjb41FLK2M z)BeW-{@c$vr!;fvG0j9H{lYw9)VHOJVpWajKg$ooe$5KkoR&Nfj~6+#n?C}u+RrtQ3mWs^;C}o`-Twr)Xh#70{5RP1e}L_^N@qKZ6m8rPsDhm7o^*-M> z6OFZH-v@{n+TQQ0h)&wI?<zLk0Z7-8w&v zFjSeUef7gy@tfB2^3Q>l!f_RI%uc6Hb9C~g{w@K@YLD}bdqr^Q12 zquH*W6L+)@*Cv`K&ti-IWU;+=@mgu0-Ex<}$!u|x_V=~0pjDt;=6U7ls%7%DVBs*& zhvtk5Ax}@DnxI*)e-#wM;AwvbqltHz%>;fHoDXi-ylxB?MYJ(D_KRX#ji1YxxX4Cg zgW@UPAg%Myv&@&P6YiG2qxm0z%Oc<6uVg>NXu7I-|244Ccm8a*L!$quBZN9^mo3U)z)Qncq{~6CZ7BvnrUHA?|5|?i49#>YZae;Sh>rZ z_XD^a^nwB0iZ}S0KGu?-trb_b>VMZ0rL>-Z&lerEJAbbiw=~D|%Hp!N^Lb5?r`>qo zR&>^aUM#{`-TR`O_(m)7vbLC{HGetO;NMOA=H+H_QS11s4ldxcUTqQHTCIQjird=! ze5tlqqBi>j>#PS!e0m#` z=uaVpAG4;ler2^AV(gD&?MGt<{u7JqjiXCejQyl5-Wp|J=}*@XN0)4?&yHU(wymBR zYK2|#@%H#YM=MwItNuQ7p1@$N!}#*mJC}7yl+WH2k1xE1N0fbjQZp=LJWslA=eAzu z=|O*-9v2x8RJ^dbi@&!{>&0jtf7_kbOVav!xn73Wm&*0>v`+VJFjZ)MmRzra#r??; zYtzaYtkk8IAy|o^l|EQ$PAi?U($+?6?XlL5R$5^tj#e6DC7xEou+oWEs$-=WtyIKH zA6hYEr5~*n$I2(P;+fWERd}{FxAnS0sHU~v8e?zc?edMapN@63US+lai1RAe?i=O$ zd=<9ia`4J(!};+M9jIBylAuNP?bo+gpPV7-mAr&UE&Lke*BZZ$`1QeWIDU!v&BSjG ze(Crv#cvIMTkzYB-y!@?;CCLsEBM{U?;d{7@bfU6%>q9IerB_$xue-!2rKk6l435* zr5Ban_!Xg*qEwj8#pD8IakJTEHkUA)eavQGw_4I%%Is%0m&WtSS6bMcA|`t{MpIf; zFs_vI!?iYVQVd1+YG>Yz@cVU&hevAml+w7mHT{^bLZ%m5%-eXw>5kf0Z=2P)+>x|N z&jtSS_}!HlBSU<~n3FJ~Vd!FAvKdX6U(?09n)r7?;J-LAeM+`=V$|*gajqU$U!j_X zYMo{oJN|trO8NFBIVKDaMZ%sbsgJhZwb?Me!YZ}XSe;)bfsA0pZ$e@QznKRmbBN;8AL7bZ`+gF=`Y>WQ>^nIWWXO- zH-G(9Pah}(_4A&>$M9mCe#=t~u@#LW(EAZ$v72Vm!eM@4#VPyUzc^p`+Iyd>J5hC+ zFTkxc`(X^5&g0*;KSU(KMniYnt#eR+`)r_4O!1`H7x+>wBqfN36S!qieM063(ai`@ zu^z%hKVC>2H2mwKCmY2u&(L@8^hZXq-4L-wUs+iAcl?c=NREJ=bUfnvq@Z)i(%~+$ z#j*BecZ&~5vD@=olua1Bc9kuzk}c+T)xEsLWzRKe=NB*0rqI(j?_7FzEdC=Yw~DmQ zT;(mYg(=`Q1%4q0cgnsm^@O70kYV#TdT23G*^u{2k1r<5w;CHyo%ZXW)TF7`9rDH8 z8=7WR9)uH_t0tf=%66F<&34nIP#Ugy_jfbxVK)~E#kJj^CPlbS=#-I z77p`rXwIw8^X(eR?kQAV=6iRg-M|97TVCp;i;G=V8qR)y?T^6z1=s#6yusHL{*iX} zY*l@jNh~(}xOQ;~k!xt(QqLMS)v>f1xY{c> zb+T^r6~VTO6=5bf)gLz=9g3D)Xn#DM zc|@me^QJ9nhl3XP;hQ^ zP+(3`-Z(Y}x3lysAaRvyh=7JiQa`P|g|O_V^0z5Ea~EjNo{#f~$n2)5wnx=v9{D?l z2;LQ9@c1LQ350_Bwjz#z-t6jL_Bi;7fU}u*(TG~HE3x~NL8GQ3szWwS{ zeSj+droFTu9TbVa(mR$CcWpi;X9v?sS~4{YUbF4)xwFF{Q76Va_@ZDrIx`}7$Y*zdL;o3<{<8~1xx{N%LR{%|8YV!IQIL?3!o?n|9IXEt4b zsQQttqPsB@z-sI8ymWf*urH=7k8{N1sCSq&m`y}$`+0R!JRhG0Y|3G72M4hg9gi{B zIz2XRMmkK<(@w0OU0T$(%@|N{$ZLajnK%B-5mvg%0a~Cr`#sDL&47fdhl6h>W3O17Jv%mSP*5;N z2hNK?90u1pe?vhW)!Jt*x5S8UG_2#dkNBe}BQi9T<4~g~}WAtvTKQW6&wsJH0&8u|; zdW>$IRV#vp$t)a7y5stEyA+Q1wUVi1%com*TIwJS7F?i~VByp4dRpo#tnh(POWlpt zwA3>wW9)^30AWfV#*8&Au$e{)j#Qgpg=^iZW^<%IMi2UwJoE|+oIP9%mI3&b+~bW_ zF+g_`6D;F>=41Pk?nF4-$w@rv+g7Z?G8S)bR#es}p@Q)pkBtdM$ad;ncm$+ zkuAlOSn$anAMFz?M}&J2K5jyT@Ykz2Jh%g2qj6xq0nNGeZvG%Vj*E(O9;&zlW0cZ4 zfeyi4n%)L>Ho|`kDEtzQ>v-Ic_|kfrZ7!5Hy`{|~WV20y&2eP25!>wMwrO=N=uS56 zZqrpqqo4U^67J$t2yM`f1cy8@{E{oazq_>!Hg2wxY;GAX9A=H0yW-3bp%68fhbsQs z;f;b2`pXdhYDj0$e?%~!O`f~Lz0y{ioJ=ND3rv2CCt>GAGFj5R*liOb3?rMmtDG>? zuwZB3yE>H34wq(srG>-XiOdETn2jZ~CE3%u?>)_uo;LcQp2o7tGScKiX)=OLp0(Y{ zkNzJ#K06Pi>N4NFUJ(68Y4i66|0DXwY%}L4j=q_+S(R)~Eim~FnHd;FCh|>Q{Cz#lJH);I>Ega^58pB+P0_#o4y6aDJ_=5uL3wDyj_66iOj{`hr z;Hv5{g`!m&C&B--!!O!k7}*FvawvmjV~41*HLxz9%Fp5T!>Ms&8Q1cA$MhH@1~;R0 z*%&Ox+SBQhYjwWU;dw6eLhPAe#}n2q*e7{1xhUtkAP5li84GT1!w&E=+XqPBlq0ufq+S%k4Ii1_P_dT~a zP_{Rn+FSiwe!rfrjq2y9y3D(9o}7uEeRwX#Wj`2{O-~$H(&JC8T|VZ;+P4N>p!=$Q zchE`RzC7p^FC9sE7^auA7C6@4m;<5roW5GeAJ1ppD)QE_xQb|L_+x<{RYmw2oK5tu zRYb$ETlJ|wN}Xr_?6h#0&p>nL-OTszc?hceQN=s`CH-I(Q7-H|-Yf4M@6}4~wT1Rd zD%fi)?e!_|wdhi&F-R;B%`4#&i+^8wmUl~`g~M#3%kI$|`HelQj%o&~F7x*nc)Z8G zq>z^0%)C%l+&9$8%cH&RbmU#;gQ)Dnmx|NUU5EVwjSGC&3Zt(I{qE-ctS^cX3-M~~ zr6+}mm4>2M^uQXTiDAzTy>|@}YM60DpI1XvH0=6`z^;pHic*GBbM(?R#fnDp)Ts`0 zbXD@xlz>rzH1$)$<3)5(yr9>=juNOMfinyoKBYTrikf9EUU}y_k?e$*a4$BfJH-%r zMGpxTFKzkLdMkKH84n#p@N!zOK3*kgTJHwlPk34{i-uiJ77jm3n#aq@q8YrLESkH^ z$)X35oUAHb(o9`W7EROTWYHX5PF4h$G&`4*)s{<|mdmka(WG2XRy>z99hZ|ub8$IY zG!d7RMYC`@S)Wj8Kbq4Et_;9$D1Hg}jmK{aem4A4@w4N%2tOUa75J^iZxeny@Y{pm z0sM~Omy6$7{Jw8GRCrv)%74$D{r{Lc>!knipr;86y6uHbkIr@%TVn)l|70A%8qim?AG_(qubNHovLtj$0C#uL8 zIsrrPreKqD`stUySS_XN3Mly%?mxa~@%Fs8ddG>P zw13818t(X3D_$HG6N>H+#zAvBF2B=eZE9qw^}XJ%j%e6q)EZnJ9eBaTOL-&!kNtz@ z;6H-<`CK}Kys*(a5F7UIL*1H&&nrexXpVMQT^ICO6NTU6SmCGNsv}DHO}&61ar=$H z&1Zri&WS#CbrB{$4E^jPh5N}`jEL;S7x+Ay{Hj=D6fB*`yX?NYb}~%6VajEdJ~m90 z348Z7M$T#c$NF#{L*4-HesuDyl8F;hTlC+1Es=Xw&2sNGSMD_&92?#jh9=Vb7014P zBx;-CM&p2{_4CEQCcp}=*tc;L3%`W#&uvS)%n{J+AC-oD4)T5+Z}dnN61x?Lj%OfV z_vLjztS8&NOD2|*yR2nPxJ-S;MsN|OCdnEmRBih|gG=b}FzRsp@d0d0#&<43-<JCA9tO~fyYY15GS}w8X)Fs4n=U}3MlYa1mF8*F+6E%Lmn#8Zz~{R1X>Eh{Nr&%K zyWPsW59mYGqV~1Cg`V6O0l%gClyIkfy*nk`CYC1^d#dp$+N4RXk3mbbu{}m%n z3(ziJ8iT851wAYrGp(sJ^r&!A!B!1B@B0;(A(uITRy}by#*8XDX5Xi*{)<(*UmLL% zbDVTB$1G{}V2;Ko1l<8O3vv5|U^WMv&hR=es3i1vnai&rG!UNSO+LyIFI?tNmy;BP z`5#+Q7&b_?H&i|vc=PY(@9v2^I-&k9^CPT;U)rbf5O0h=d*44bQF9cU7;8U!vAx=ZXxIDdkBTVsj$kV4c z50?`p@`i{{^#v_ObHnr6`q`G^1H;ZB{ZUJy2i{4f^CQyd zixaSt+7-87nub|{FBD{MO0d2@QZzO!NX)zyDLg&vEghGSTkTzz;Br2pIEE;HS(u1T z5KsPxIAEM^juy2H#}8*lM~mLV5HwO>(^^b1+#aJ>Xd?p4=8mDg%EmfUf-rco+9B9w z-akg~+y>3wIixQHWaxfS|F(_z&=598f6+z+8(xgo1KSFV;n&f6v$o=t;qWls+bT91 zb|>h&tYVnq?LNJHjOc2(H%gxngAr0VL0=Lhs+g~iqPNCm4+KYZsBx=Y=Dnlz3o)W> z-SyZ+-qY1=7(HO6WWI9|blQ1gFHI0048mCrB+i!}ZJuQ5{_RAj;rZaqi|vF#1k4&i z`_B)WOb~z|?2ac=da%_Nz4};>j1|)jtA=MD#@$7P_ZkK|d3tSM58PMmoojnjrxmf< zeO%^v+LSMqfQ0^and=SH3w01T0=Dgu$K7EKc23%*3}VCH%r_k{G7O6b>x1J(m546_ z==8={SeLouU<&($)&4yW6ta(EP{*bA3T|E{t@bi_F{lH@SsA|CbM$X(i7-8Wpztb6 zPF2I@xI%y~I*R^brw5VOHaK0%YVVfsb1|3sC~a^nxG5E5m)8%{7j+c%43!4y$2*E3 z+na#|UBhTiEMZN}!*jq9`0@v-$<1luk=Ou@6}RwZ=>oQ0q;0^T#GCd0z z)lO^4l#xt}0w&)f8+jBWp{Jj)*Od#Pi%MfA$()l+;R5Ek!aSjkcH?Hr+`~dfzfWN< zOJ=rY&e;l}Z3?tcLZ3)zR{^tBVOB_{g=7{NFsTYNOEMP8Of6uh6fidYH9iTw7{Jl@ zEr1dVAdF4PT#`(y0%o|v)RN40$y6&~1}jWS$;^{X(NAc8f(OU|1$s_f?ZzPzdW3~! z`Y6m*$+VIT`6Zbi3Uf#@6(zH`fa#(zw$&1P-JhdhRsh8)P^x5pl+4Tmrh&o?m&`87 zd{V%KC`_DW7D%QIF^xI;stQzBLL($pgAL&+*IZ6v%uw^6iX(C7+oiASDtry4d+NKo ziW-I&oAjGqMOnj+e)`L1C%!nZHV#24~g!qELIecWJN>+64|FCHw`7;;wXO@@ftC4N{yPXkj{ z($m0=mDJc&{qYdtV+)N(uPE7@3Ens`4%5ma^w=1Ty)ZHa7?&?)Z_bIq6>`K1y852P ziTwB@JisGG%yb7UxSCDCRaDr&M<(Y92%I!(I)k<3HzKhTZ3m0(E?;Y|kvv6_Lxs82Usf39Oqy)_5j4{FBmK@$5pB5GL9aDTeA;tC2YSwY%rjBG z&!T;Nn^Rs)O7?`pQ9i-v?|V~vQauXCZW;)bJ|$Xxf=^h}b_Z=l+dkcl#3KnO=^1h# zQle;fke*-LJkwtd6MaH=#Nit3ince{j+JP8)vvIyrgaXAh)$ajR3EnmpA;WF3d8)i zIDOV|QPUI;!u}Gj^f1SH>HCI@fOe5y{8?yu5IxM0lNAh7Sr_EtR;v0-Woyu5I6zD- zH?uqFmRo7?pm1iz5u%kaoN2FrGE#(AnvFyW>%a=ru%J1jxiA)&>heh`j1{q*oXvW*gGl z>3Ad2BM6e%OC)lnI=-8WG*@LoTkPO{zUbdvdn+`YaK)iY=A_Or|7 zX<0|gb#R}9iEBRWF9Pu6U@`%fo zC~~Yv@_g^^oyQiH`0=dz@U@&H_~|tr=l632{x}5ASqt82QJc!@UrfZc=h8g=)I=QH zD)aTGlf((bka@c2WL&I*Tk6#&iz=lm!aUv?y_|;-(EV~wPrKf0GWKhprZ1W-{QY0d zeTR(B#6tD5@0W760*s26^HrLDWU?sl^%8>fa+?18WD!=rQyQ5{EJN3Ul6VHAC(5%{ zd#=koQ`f_$h^PQEhQ@r+ySJLt&^#7=*QXp@UNT3YKSfmexCu4vqI{Bmv-$jjoG=uYL#z$CC zm6oW!#NveU2ul3#CNX5$<~3UTUfy@Xhov_ zWUAQccWyR4grj?krCd++vd%HDX{v9XCd!wkSvZe*S0@xoxs+Jk=?UNGop!EE)qk0W zyHMYzx@(#+8>~(BGSfv!aDBkIKJ>&KqSby8!306L+Za{%2%;hB{3}HtI$bm>l8FAk zZ*=}PN8d1AbhAC=gYA=YlDw`=4PBXw>7&R@k=#54!_&hj^*A==8q1+VhrzianL2*L zN6wz`-dR5d#W)-bg!S1_c;GON90IDhnfo@xnasy&LLj!c8qC`R24Z_dY|k|wi)}3U z8$e_|if|&>$P`y%OJ@dbTagTq9N{qmSxP6JXV4B>#lI*xk)J4GwR^_eO^-gu1c~dS z%Xqo5o;O2OHwM8-x_%LJZF=*WqJ*JiV?A!BDBCLnO*xOjE=L%c-27Yw+D>fb%)t)M zQ>iHGph&K|7rF<$8OcW{a^898K7{<@O2GBx--PoV7<- zyt<`F=p}5TOxeh%2o+p|>H034s9Mn>HzgKvbQeex3cFt#jQuBO_ND93ZDL&Me{r9o zRtxhTF9)*<;pzIcBvIRtl&o(_5)GpMJ_UlOA+4B@l$S(n@&I2PH{)d5TmGAYvjv!P z)dVu*lwN5T-b@Fa(wol`73#jmQNe-rtVEYj$_Umlu~Kl|!nm_ac{xSuFjooG?XyIU zs*T2gr?;JkSaF#Hxq5PckwPBXd=kO&LSyu6vqWXvmC^J@KEZ1reJMH{g5lMoA&%ph zc$23rfe4(0RU1+3w4R)eIacEy0O-pSB&Qi|4XB18jrC+~$u;(XLQUlwJ7J9uPOhqoJNKn)7H`q-LYU_(W6Mp6VYf}rcg#rQJc!bfAorExxk45Np zy^%bBVYAVT%sIcGxj0z_*!CrGDBf@;%zlz%sfZ?=58(oNh`W~2NWLSMV0SEE0zfQ} zXpv^@hi@{u#?~mM|1Gg5{f}|4y?4`Lih^eEj0u#q(#Wwec|CmyUw*XdtCL0B&JQpl zfPN)sBHhk(1n&%VJ3}2CL9HqsdlCSgsU)5G9AA2JjgwJIXU2u=%~C|eQXfN6-DnrC zr=*BRRZ2pSMRV~;Z^^c%6*_hQ6ude>&mCXSeBWV~lsiQ63hp4muh^uQ}R zF39MN$2&g1fA1Tq$EAt}rm4KWH_x#}YDe}~&~9z=sx0^I#M?4x-*6XARd9spUFL|;+WjCUpY+Z( zcEAcout%CP7Hd&2asnqrB%ch-H8wz%ZXoz?GKJ_n=7{n|N<)cEt57sV|6z`p@4Gx0 z&3u{7r)6^0yaxK%xuRN3i(z~;3)xSf4cSMAon@!<{Ej2;aa7g?JcB!HA)CjFD*iqx zV5@zF6Bs^oUcpA3i`=Kxhv~n}#aG3fL-oKk@o|fuL*ef$3?3Xcnv07>p3`HWFLG$z zN|UQS0MHp8iGO5|Ra|0$GQSIA`yK53}^ ze;A@i!n>G3CqsqtAe^H2pDzO19CQM!EQeIkzHG*60Ynmv)`c7kYkhjGP2iaWUc`2QpVLEIwAVeIjc z`XNx?XBWlv{ti*3d6oZU>*5ngI!W|6U@Q!0&_n1aYtswdNzuvgJ1HWWI;pIdo#CaW ze_Qy&Bjgo&_TGQ^R~r_C3oNdLr|&INZ#BbB&fQz9Kcn6%t@W?s~{jF)O@j(Z37#{X)Yh79|Bi9{qfwErW6Mf?X(Y@U< zy3ZV_x8|2xOKZZtra6fdtjUAv<`w7O%W7}!3ws#l!|-a)_OL!dt~=uVVGs3D1N3$a zMdPwjWDhgh@z$3#eN}_1$;ZO*iM=+i-i7ot3x#*Fg|~5{Bw`rk_Sb(|DEwo(&}H9M zb!C6NdGr5p8H<8;*B>_u5)g6>>O3~E9#^nV&tbN)bglCaa&8=}N2ZIib$*V{M{!&C zrVAeqb%pcK=ukJm@HZYE(7~SW&J9k|XQzwsa%-RS=5=^NRX5+T(dKG2hi`LLt%tB( zRfD)J!=*QuG)LpA`hd%uTwdVvD3`mr{D#XVT+ZWiI+s88qkY4;yvF4XF86Y|k;`RN z+N#dy%1kcDa`_3Dow;noWdxTsxGc|Q2`)XjeA<^9`<=@ZT=r-E6t5rTvLS~Q!DSOJ zn{jDt!HY;PPjOj@OPVf11YF+ZnB)%CSn(Z5TMb;1WG z!sQvZaE{9hG}Gs*dWp*)xcrgJD_maVvJe}($?Lbc{FTe!xtz#`vOdW?@wq7PXE-&2 zzt7+w&OY$bA7={hQj6o{d!p4bFA!t&?(SH<=w4CN@Lf~A(O!H{_^`b`eXj`ZF|yr% zaufcm-u}Ppo%8GVd0}MtOb7S=vW|aQnN9Mn_PWRv0fxiv^@^D^I~J$6$P`t*m%uH0 zjKgVU)|239xzPXJ!0mR@Kt;EKm$CZIOkpV$i}v;2dtvfQd%b*?2(2>89cg42K0WOB z_S38jzE*@em&E>8Yo$Z~t6Rbg%q6$i4`zur<=(ZI0i8KhU~pbspz}_9Jz$?GXK3AC zZ@5oH7zV{=j@>8P`j)7LD`*_<1>-ScQTL&KJWsT*6j~FfKmOI1^VcTtT==Mj=Y~VL zEYknz1@X{>%(|zkKa0ujY@Jt&BzjQzzg-S2>B0LgEhU%U?qyJES>J4y%iF$k zdDdMIb?-OQk9FNE*ihH@#J$sTDSAA0FDto?PH}G^?>5%OZS4P%6PcO8hTFn7>D<;y z3kDAEF!#$NPs3-=ZlS+wV+ho*R5ldPjIM7uSSoW#4Z{V4zND7HUmsS>5T@^}Ww_$| z_WYyLui{=tuJ-ReYfS6meKV748?p_0_qv8Fnbvy$r?hjAj-tx*_^&Qa=wt#WAwVFB zbR=R}c{CWc9fP#W9O45FE29CKwOPTz2NE3|f(E)dB7}E%UT`9GcqkZf<1U(vX0;hn z;)*+A7RSf{6CGyFIvh8y><+8WxSwBlrRiloXaATw=bP{M{_dmhtE%p=s=8u2o%EK~ zCf-$}Y|$iht&?e|O)^8BV|L*rb6+^*HtjW+f9^K%Avc`ih8MfxAG=*rPjPoJ*WJM?mlwG^n(0<-pKFi0_GNDPFRzHjZ@%Ky zhfS8r^c_izVGP#Z%C-KvrqUCLC4vK*8|E6GFaGeK$8jqm@%G?8xOKge*08#1B0X`L z=v**ogAqRR+FW$XndjYD)oZ%t^M`%yfd%F^C(r)(0&{(O@GT>itBsV{hH5ity+6~2 zs!fR#w8x$_gKV_g6sLC`;_C(^X-OvOt~NfW%VsY$*E=nC@-`?v`LqcP@alW_Y(*gU zk0Pf5g)XJg9J_F-xe7Y4)J)1N?avMRZAMnpNP^iT91d&x3$ITgElnHg4~6`Mywlc-opHF~jz`-K|p{AH$$gfA~M zgP?bpnfwuliPKG6+m^r|xc9NTxf$sg?fnVZ~8U8W9^m;Y5{ z#-}1ad*gD`e}u0mn$m(qX>?DP!TG%;-6;^m6*0#yT5bkimqS0qNUB@WkTe-Gf2dqC z^-}Sa7K%T|k(r<_rO2eszEAc-&0d+vEslo=B{zu-9%!VGlg%ESS|)mq9Z<`}$gxuh z6;>2D@+v5=ztHHU%`U0sY?osjYTa)94XHj!6kl=%{TYaNV`r@?AmN{CO@3ik21SB% zDMco2_UaX8Oko9A+T-B%=Ti3CW3x+En4yDor1gKqv6ZyKZvm6hVw+c(tHUzLk?(_} zDfut9IcY}H#u@)$e!0=#`Hl1rc`CGfB58>R6lHlO>s*Iqp7}_;$4}71zm?#njywf? z+ueHUm>&K(ZY#UYkwC&8mLiRq-zjRmd6*+JdNKskBvAXH6jeVY-Z>A)i2b4Els7wTp`ZbV)*K7sIiw^4ueFb@HCNreHDMAx@|%7s@;T_S4R((v&3a1H zg+Af0nMhI@>`pa})Bk8HbIdO02Z$dWU#&Hl#dmoX7PgWy_*Oe=of%W2Ssss@1NuK% zp9UK==<#Op*Q`PtC({15UAm4F)oy!e9S7}hO~F>A4?@py&$u*AI^W^_^CKd=?HB7< zspQxZb;d%6>dc@iop(4=$|Ka4-8~saF1BUorb+IsbjdCCO76Iqrll1_nSG{u+&yqNMCT(`fdXqm^XR0o-b&DTB=PsAf zJ&wExHl<`s+U)!5&9K7m+Z>s|%T=8zNs>0(cSHQlefb7+^K9KgQ=)}ZG~OfQ&rB0< zDZd5%A@3Z6SmetPQvLcF+=0(clO853;(jb=o8Xoe&8 zV5I%QMl-ZjWeX@vq-WS99(}PbnT>R|dX@3{x*z10-b0S;P05*Rvu$fkNxqKMK>b~u zlnjMN0#Cmf^L=EA&EI5hOiZ$Pf`65Kdv#f>oxk-9+j5BZ4Ru77M>}35eTQa|WaI?uT(s7HCRJS6phcoLn zoQ_Myzrc}4!BV?tv$=A-%AbPzp3-wXlCw8Q(pl%K{XjMS+!N>J06gxG+pb*b$XVNW z3sX>KIq<%Cp>5w~)1ngDrfo4}iZ0%ByrTTMP{Dna9`EN9@sa~w&>z588g%>lOEmqQ z)n?CbF=g28aBFTFxRT-1qhiuZM~;D;+LY~LYo5JK7kd6)Pg3p4H^+)U8|dZKtVYVOk{{tHy-J* z?p^epxnis?gLO+y{0B|`7fLp*c@F-XYENBF+ z2aS=V%?Eavn?0kd9!WSHO^+tHeV!YxN^noRbgZO#{BBn3PLo}~htqbP^6bZZIH|>T z|K`l+Sy~a8@`5SI3sG@n;{%2Azq)anuaHYnrRQtkv((aQf+&(#jy4sU!;e|3w7fn0P9ewd5vR4%&7i!53%wzZ%It-KW+M=S3DUFZs)fa{mKGAXBuukL&t zeov%=6++}FUI43$OcJH8G<3z0)6Rm9G|Hu*1>Fq?e?`|*(I|Wp_|e_)$bVr$gsy^j zf;_dun~saLv3QEX1s~90bU3-vWA&#iz866UTDcW;qdVb@Uy~W_gO`J1oT4cF9?*Zz z?)#9T0A1P`IK6{%*nuB@90aI@e$e4pph7DIkNb%6_YtW0h-LT*x{pFrJuLOKcATVj z*p*)g=g^^3A|IX>Im-@$zh&}%LW{Bcen%^RPj8`9eXFDkhNGme*mNFC1<=#G!W`lR zDhMdofLUnYzfm|S)k1kl5#`=oC-Wn@-ekwR?%eS2oL11v+rWIZ@++VYt^7LJjn3*8 z83te&={YmvT&*rfNrBLPbz=KN{8SF?NFJI?U(IDIb z1ntjvB)fo$qLbdVHYSYm&O%nA1eDi;8gwT-9LF<{LQ{P{bw+y}&s1MC)qhk!GIF^i ztF=P#yTcvXk5(Q%%8|op?wC-DmuAJ zMe7Pyzwp$8R!+NxJbS~m7;zeSaVPw@@(nLAkwoqAmAD!K>=p3)po?{P($&DOZpbQd z4z1h>xIRlKylpZ=g>HxU+(A#0H`T{d|7%b9E+z>r*aN=<&Y@F15%p5~-_3YZkg^}t zqm@4dO=xA_AeN)(q^m@Q)Qws^jl&GBycHZp`=>i{|Gkd*NFQ!OT!$|*RWrkJH-(y} z`Y7s`ockNb7`w9PJ}QJ()+cG3v}JHGgr)%@cpKP@Zi4&G3Dg?gSBZXby|i2Oa4qbE=!8E>PoK#*!T?zX6V;qmMiCGPs@Li^08q!VsW+ z@ZW(ZcH9YP&1aYzvCj|lMD+^x=y^5quK$=vSLEVY> zpQL*!Q~7H!5v@GrDS8pDTvNjY4--(a9qdKRV!8-;DAWhv55A!Vyxbx&P(ZD_;NH*R z&7m{lAA@3a9sCjqppU|T1Z8N?GG4F%6Vbcj7Ld8$$Ro=+{`c^wo`{2R7dV4H5BII* z_(tc#W#AihIs7BwA@eL)f0=U_`$;%+1?LHL9y}79LzlvfzzP}Ru! zU+)hWgWW{<;c4I?dKSDL%t5!qpMntjEL^slnM@@r;0M-lx<&7Yc>zE|XrBDbGdL>8 z(ci$=)p2+qU{1iDpa9*aHvQFTF@e1GOd9YAdImgt1Kow51up<)=o&b0BdtRR;X5~R zAwqA0oz3J&7r<-44D^1u(sBkwcfnU};}AsG!oL8u=#yc@sAoB?5|{xugZ*g#&$x_& zqv&dQ3ur}0;Sa%a^cnbDa2S2G-Vy!c^htCnycC>4cfdDqXZX+|ICBTXgbu*>g0SZ$ z3PrpQGSThIQMwde09S%ywEq=H#(@C30=^pr(UG^w3p!X(w8Q5?J&Rbq-F6BDcCrvX zLd!wD9+vPaP>RlKb1Edz#)M*A)ytg@Hlfw4T>vT>KXqEwQEf#l?*oU?>V$p*j3gKdF~r0YBqT(HSQ2YOFd-q-zLnaSpd@M^L=a<$UR--o`&OC~ zdt<5Cx3+dl*NLT7RcmXW&-Z&KaenUeBYio_o*dzVCNA_s*Sr&;2HuezMr~ zoMOBEMVSR9$`0~y|9k3DC9s&GM3Bb~EnEy2f!cCW)7vUMJa*4CctkC#93UdJJkhXd z&uh?pvC|E$hM{7Epi@|V3h6YKcd%6c#dvtcgb(bW(jVHHAT&7!504^PZqTL~s*7#f zCbS2&i)g>oUZB0ERV-vF@uU!t7&L{kyrZ=)bk;UuitxzO`=L2I8_kiLXhQm;d1OaZ zaleO0UUXfo1wXnNE^^K*SPUkEgf$i6oPbNX zGGCCvhm>)-B50ncqWKzUN#3o$(ae~M?i9-A5e2yP4zxW-(LAOB9Wox;aVOULJVX;h z0S?IauzBPS9*r%_$@_Q5AlfLHp5EwgoR4M<9j8cgTVXSuBi8TZ5{3IAn zR0x^@G@>PFt=#X}I`A2qPbQ&z%ZR2V*`GB7jh2R{0a>kc7tIth`ZaOKiTjs~ZutvZ z)oNI)NGbK8ID)>R^UsHpn6w*BdL@XZX$aq5Lw6=I>u5ti3VkIxSx@lPBWUK*88(NS zi*){_(%Q*&*iebi#D~4mEZIT(4#iqAva)_6);iMoI_X%^sM_*=q_edZ?K~kI%?I>3 zJBTfL%Lyz`8(f3YJfs0wPUn!7nsZyxtwHBne@bUnZ>)Ll#oBuEG=s*idpw#$bh?CZ zf;NmCZK33BozP4gf~Jd&+J0-XC2Jnm8qm&HXv~^W=$_>1%llZ1o{lvq#j$V}nn^Si z6X`T4T#K|wG{4gr?fnf}AdOJ~T{^CvMf2xKY$!htP3~rN*Iz_)fIdD?Z35@t0E&MX zov1y?!gJcW7p+<7tVr)k-~=>pKf{K>^!cen7nSpapj97%X67&GCR27^6vt0Aw#_VP zqDd=Ehy2nOtTn2RwN!F6ojy&Eg3-0jrkoc2ihdZKvYTm_A1gzv^&{49kk1noQ8=Au zp>!oYNh9Ap5No?A%5*yW$I!K6J7qWi4VpnT%6t-5r(o{U02nEUpqcbS)7F`#1{ z{S_AJIjKeWyYSDNb~5CI)nTp!X?qBW6dyr&ahd5qb0na;X9WYUM=BK3_B?kq(GL7OL!{7UoaeCnl9;RrVlCf589|8 zi(g^Z7byCd+R7k{?NS!S-Cxnu7jxXz*m{TzB~%(;!EikV?k-_(hTmS~xJyfT5W}7d zTvNi&Pt%B8WH`X&LJva{!SpQ}CU=(av<|@*zqemfd^;8WiZ&(KVmrn9bVc8waol^^ zdK($aerbFW!yhQ{ClX%9utmZvCET0gY6{#|!jl<(a)I0gn5Id(I@7OdnA~w!&?2f? z{GRQhxX&y4Q>_p5BdmX>=qI#!)hx+#Ss$zDOF!j&eAsI=do`7kPCsC{l>!fw@UvVR z+Ts%a8y$>nMTY$qxQSM>x}|j9Zi?^`Th+@rI+yh99*N)h#v~>x&e9 z?;;Ly8hh=2o;s!((ra6W2P*Jf3HN8Xri2Gd*vxQ41@0x`IELSyBg+A%Hj=*o1qEJI zp~JOGA(qnHS-(rkyAu+Nw8W5dw(-1Sx3b~8Ob-0XDH^U%*u3c}IvB24hSL;yvxF}* z+*ZQhO1L<~T@`qegtHi~;0}DBq_6Lyz(W-}@zYR?-+Gq+p%HP%9jMiUp3M3sMgL3d z8EQ$6Vtu`$pIXT2G-s#7&QizJLi#MkaH;|?mv9w^n@BiV!WVZ^fK~+_sXag>%UKUl z^yXTL8Wz8Stp83~x+5>8HLhW?)n@&eqW`jhBi!{34fxzM9N`{xFyL=?kkiEqykEkL z815zE#S;F8;UNlamv9Qh;S2|uK9O`L(~T6mul5Jx?!~%E(d%gCYg%m8SietW;?AeA zv|fv?Z$8a&$4KLUZl}1j6!^M>lMG~dl7u5Ae3;?c3cO9ieheov9AGLV={ZdIQ0S@J z<(d}1POOJ1dXn}p^a`xID0z3>Rka#nmSpEP3h}C=4p|Iu zRNylbp2zS=2|FY_jo}Fjyh_^>X7P(>y`7?u*6u+s&3Z*eZ=n^dWwHIRl_LC;(sxI0 zmQKUj>Hbq3VYGC*jp36D?6h+_s41wa1A2+7^o2SJCT9>qkz|$X@@3<35cJMs^*;KhXfXlk}AE7KXP;c)Ns0 zGQ3ZLZ_VQ*?F>(4IKZ?((hZr;Q0Sf7+Hi}Xf%V>sK3%&2{laF7ySAc#puGvVBrjv# zpy<`4*Xr!`%t_9thIBfB;qPe#-TA!E;1G*4yh_4m35PShMS;(2GiqD>UT>mECM)`9 z+AioPS#PiCW3}70Ew+WMS61{^(&@hAG~&(^9N`&sFycKKeokZMj?iDiTNyqi;lmOR zW;j=YAI;@-Rx!MQ;Q-SYl7708;$ET9N413!7QaKRCoB3Q?Qn#}Hk(dl{y|%rs#nznlj*6Z-n+7A?<3xDSlMu2ORi_}tHt_4MbFY! z)UzbNT1##}QuNugIHA$(Hk93(CP}X+7_P6tJtW+d;eU?Oo~A((Ucj)I0*7gp>s$PK zuzow|edsQ&J@g>fcPaW+ZE}5!?T^nW!WoLbF^wa9_ce{8RXX*SP7gBNS%D`=IFI1~ z3IBr*hCH3&>I&RW!gm<{{Rp`UF#RCuB&Oed{XXuBTI~iFzW~-RDEgmT?*lUl6nKk-k1^a%!sjJipW$u_JXyj!7_P{0faz;VdoW!? zq1$V&D2v~@l@$2Dhu;TYSqqD{*p{+>S<#={IPO%ot{>#Mr%U7g8U9>>b0yr5;o%Y< zAmK2E$1Cs(3AbdpDZ>G#_L6?Ng5rx;=w$7Fw8if@>*WW@8y(Rnv9UQdZms5m86?ndO43QjQ zy|JQysQnIo7V9Mxy{;C}*kbFz`h$b-BR5K?OWEm`{T$(P>D0pTR|?_QG|08c)NsqGu)nGeE&##H`6^8dYX2rvBhsP>$McUqxKKtZq2%fq6bOqCbpiN z&2jrm<0TpX_Q3ljUryn;pB|>eutLIrp@WgVqf^|Q6!@%!zhyX?;Q-S$NpEI)qC&6M zb~my3jb%MS(Z^_ap*Ll{lA^cNiZ-<*d$Im(|N9WjNUtBV*8}@FpO2)|Z!y>BGJm7M zd6PMx77Wjqa4QL~VR)GWAJ!H%wfGHVeT1Sf)Q&>0$9gkG|44h()M9gCBF|+msp$2k z(~E~_5O3_|2(O@nK|IUw&)M(O@sjW!hPO-jD+w=QI9q{lPvUeIGdzvq0Fy51eoW6( z=v~@p%`AR3S?{ChGqm%~EVdVz$a9$^6uq;w-juDs{EFkYO5?{EE~LQKB^<)=SqVo< zcs|3|Xtdq;9&aXc+6S^TxN%&@6lGpT5OwG z@2BXqKH<2Z9H5b<*;9P6zd{Ei`!U0j3fxV?HyD1ihvAo!IIT-(;dl0204PKrK$Jm)i-y_S<9 zPLfU|84gz9cnSAp`0;MeXOM*7VOq{*enkV~jF^KTNgdMzba41@Vb02BPEp`x5cXtF6+e=JwmHswUquBlTa@650tz+pF$sN z?X2aJPxFQ^l?~U%a6*6VqXRK*^BCTsz^5g= zh~W_u-XP&F41c1)DV zg?4B;Z7qI3Vgku!ZldV@v?tJavhJhkk(#BQC3yntKhmJM^C=>|{{PES*kcr>8e_gc;H)%|p4&-_cmP(|I+LBOJ!?N(rY(*vRl^1wJR?&J2%Y7>_@a zzKrQ3mwA#xuhG6pu=uTHJyFp=*6t)&Y=c=3RP;D$-OSd1+r)7PO5=4H{)-0C9d}s? zdoX-Z!o?)~4`zN`=2Hs%a0Dm$=qoyA4u%6vFVMq5%Vm1GLLbpG6D@w9vQDoD@?BkjQl0#T8rRWW$SDn4y+{pQClTQD_B#+Dd3yq*VA8!fIV|a&zS4;RP z!}}HZj`neTi(dxoc18a}TLZl_>wOh{rgpBq#a4;+I*Q(9IFCy;cKT`qM;I!dKExc4 z%UoE2LnQ3Y@Hq(=m+)SOuhYP~(|J3LEkDkp5nsb_fawqPFyhmh-lotOHCqRZUpv;P zD*8HYM+b|o4C_gXo+7O;Ve4gOC~Kwh2bjxonX4*r8wpQm_~GZAq+P;07=A&c?T*_b z;SmfUVHkHRlKzD0GYb7g>z8ElYr*;|MbFV3&`qq5R&>;^B%yW%(>ADGQS`w>d989mjoG!h;z0 zRN$HtUd8Z5h67BSB^|-^EgB|wmZ)9ngxVEMpP+U{(NVk73AHP%PgnE}gE{VGw%$gD zGF=*9#PA0S{E3A7F>I0W2nqLQxS9gDm2f+TpR6S}xP6gyb*5j_FuCJK?aBwJUBNU7 zUd|{wYFD5iVf`~jNA1c7s9j-wtfDU+#QC`P&{2+Nuco5X=?4tAQs7|{e#mff3IB}_ z4q8Qq{S_FsE1glhf|(E0u2Amo$bANB%{!xZg*O~kHlTK;Gip~@U!>@J2Xcs;*lYLC zsAD=Ny|!g|paRd8@H&QTN_dBa%?vkG;9e4*&+xl7WErHj`T%6&q3Oq@| zjTx@s4!pgjuVan_wJQpp_-R+vuCV+MjfgvL)UH5JX8n?)qjse$YFAiaujr>f;&jTg z(_yQrW2z#37GgM6ftO3zz;F`@nQ+Zm3;h{g|Tv(w`$dwVO`nxvMzBo9N*De1j?w@J7i!-)(BnEFb34%0mp8nr9kQMFVZEKAqjm*)Y1S($I%-#XqILz72&i45^xcu0rPE)(pfhFva*j|)r`s4lsld*@ zoX!J=?Gk>B4o<67hIIu#B;oT6_hmT1bV<@NOb=IR)UNbI?F#En6&4n-A)(whYO?rK~i;lw?o%1nBrvn)No<`7} z&+FbC;*SiklJGC+;5dXcyhVXgyV4uAE0_~N?TVtKb_M!L*4ryOYFB!rc7^rIirz{( zUCK_KOF6==(rHhIpVL^mBlMSW2E&IWyh_5s4CgBFqh6fO6owZt9AKIw>8F?{z`GfR zM(s);)UL3etmvp+>4Vx8)?*ZXptPRI);(n?-KFu44Erf?LkUMQd}|3O*;2yg8UB?< z+nr=l30Gx!C&K}z29o{_kL;*jQE1ez^hNCo>+=;IwJXr4vi_l>qjse)YFAjVtLR;O z@@W0Alg^aai#f!H=-}Y{F>F-ePzj%9_`HNKNcbKe!tug}2E?5YYF9o)?F#GL6&EolcZai!vOfz*Y(OVEB>7>5P={_jm|L?FtR7 zJHh}7Cop`JVLUubdM(rR$|;{l?Mgq?uCTsZ(NVk7549_-k5Tl+-8t@Hw%$;N5+#ib zhFdD|5DEJ;TvWm}C43&w)u>%j;6@TI#_-)w$xV4vMM>*S=g}~^vov+rV*8_Zg*O~l zHlTK;KWbN4U#RG)UFnb76+Hf;c16)=cjJUE?VwX7l--)HqJvZA1jF?exQB$lWcZ&& zw5MsWgcmUErNF3N`3SWutly^O-Jzp)1$q$cyA&O@D<7eD1&_a|T~YLnT{*&L?9?iq z#!9CL8SbpW6C_-j;Q$GTNjRP1>I&RW!o?Z>J(Ju7n952ziRm{qAnv$PyD|W^E398o zbkwd4KYO=qI~y+!waf$PQuarW@#BWcM&UPJwj^?`OD?gilC#3d5}xc({Z= zXV~P9dzYl?G2CS?r_iWf8Hm~y)*sV|xbs2n3iP{paz*WmqN8?YAZk}w|5VZUb>@7! zvDY38sbl&`IvvOGAO+5la0`aRB-};9%@~eSVAQT45^vUvDLQIb2BCHZ�(fp)}o* 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 diff --git a/UnityProject/Assets/Plugins/Metro/UWP/x86/RenderingPlugin.dll b/UnityProject/Assets/Plugins/Metro/UWP/x86/RenderingPlugin.dll index 8e4f63e88218ad5fc3e7e1031789ea8ac75ea307..345e8b937d220c7ea0b51a75c71c66e2dda9337f 100644 GIT binary patch delta 22625 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 KDN`9A@P7coIZ4I< delta 21774 zcmb8X34Bb~|NlQ{WD|)@NC-lLNyL7a+2_to5Nj=oC8(vSWu%s96H6_F#1bQfi>s); ztzC$UU5MJ3peWUfmUdEGEY(!W{9fnISgPOe_y73M=aX~aXWyUaect!#R9D5R#T9cS zNZr+ys}E6lf5i%A-AbggS}~m{6fZo1ABaXWvErUO3WcGeQejw7w-!khuM>UXz-dUN zLZaznO=V*;Q*5JbK$?i7;Bw*;xC!DRWrK!ol&?#dpYaMse6vr7j2Qi~Lh-yFf^reB z#Crx8-S#gKl@fHNu--U(TdGHGlGbx!{U z=cox0srMmmq(vpu2sQ^!WB|N^0Z!}IaQf{<*vBm(ef$JcxdTr7snlKcEu2Sjh)G!l z=~EU`G%cal95~tS;0+xM>0(PrQY4%@4dI-di?BV9;fPJ(Ezg5=ofgo7*7;~Uq|-5w zzN2BK%^+>29r=wGwS%@OXr@BpDEWq#kVCTs)9CsMkbG%PA++Ke4d66m;EcY9Sho$* z4BCmJlkk2(n_rE3>(WYQ=^>5#4bsA5IKgyydZoizHw(@M8heX6YT8%#9|&vYpmpB; z9Zo2%Wa3IlyG!8Ir4cu2$Nt(0=~67D+Gij&qUoys38@+N4r>eVqH~ZOYDh}ja+Z!@ z5{<~G-Ts{BSg;jI`qCWZXu7UWNR{GS0E zBfR@*pZw;*8Q2(M2R?@+orbg41!oo=yrs1veOwBsKP_*<6iB^ki^fyOM3+GxT`4)A zL2~S-Sz?buJVJ-?{&+Y|EC{CJl}c z&9;9Aq%Ex=O{)(_I0bM1H*mUcgVSjuoL;o~8SCKGnMfzF;SM<6>72yU>g=?cU(wXL zbRtag@P17tdGZh3hSZZ5y_2raXS4~I=>WH)^BHZ0)Skv_XzwnBL%IHr(pEYb zz!^x>-ET^;{_fL>me=DLEdn3V{Ug%lS(TPw*&k98o&4^!38QJ#r_k7Rx&q?AfU}%7 z@HpKsx9Rkb$b{2{CfP}g+WIM+YjjntM|CCV$G|%w0Fs85*T_K=2GdnNf{tG4J_MR; z!Kq9mDpIEjoy7*b5Vn`rG|vpjkLI{M8)4_4!r4fNaWHktXeo23^c8J>Jk7g@Ry>mq zas^sIN4j%DXaV(}DzN@K)q}W!Mt7rGB50cHw3*N7s_U`dU)?uD_jhIc_};$6gl^>uN%3_7faYfcF==QKKHh`#IfaTG}N?Gg{zv8eNT! z)NMM{N;*3|SHn9f7tTf+dy)?DXSBM`v~6G9g>%dY-jAxmNum2?746di9!{mj@V22m z9YdR%N-MrbS8Pk#!-KSx06I;d{YFR1S{eT9k0IsI70~4sq)oKI&*|vJ(|z{iB6xKL zaGZ2$%iAtL1k&0+5cX;^oTYN#Y3)7f2wG|0W8)Cfjpq2A?!s{DB)Z{jqv>{+DipO# z2GSLFe;NXRr*(e13eHG6wkP9=*y70OJSK3HZzX%tRHAZSd+v7k&L5LR9#s*Uz}UP2 z^%Gl5`pzUIKPQQVhKfZKDmIF9y4@LNRYEdP&!<9YT4+XDrL>@ovha}1wsYNXzMwEG zLG4r0EnCdlUR#X*e34J+9JgD%y&ys?`aI0%c9zGpaAG)#5UWkBL)4;n;vDjsSTIpT z=8Jz$oKDnv<0qMw%5~?&Z>Ka1=rYUgo_1^x5fhI`qggZZavVPs5}!AES`i_Jy!edW zr0UiYL^XJg0>8wJ`_bK!d#+K76=&p-EqTjkG$v%9czk9(<&tB0f6PoG{<^7dcap26 z*mCw-<%&Y_x7mlu&*IlvQRI+#Jj)t03AD;M7Id#}Fm8TH!?#+-_&NQr_p zd!*6Wi673_E1#r`BUV}cDx|1fwZ@6LtImlzt0#%k3xd>XK1$WlkgE!3f;uRp zz$eiav!C`T;Dp}_#5j-lKkB0pRSP0({U_mFEN4047ID^sSZ)uJpCDV{7M}I~lAVu3 zdKP52@ku=4_n+)D_KCL^G*I<>+kqsx`PCMFNB$6RE{r0l#g_|PLA8k&b>UscU;!Nq za2}uWJpDoc6qS3NkIO7N#gEA~@sZe(%n^k}&BH!SeJ_>X)mC&YYOETFh?F?D&Q-;e zLVUcmnpm``71=3>2D`P6lucc=O!yD~<5vuYsF{`$xLPE=y) z(rEGgynx`Gx9!I=y1aN$5bbHAtLbiqqIaQKcS)ExAlMUdWL|i^g132+*QgVfD*n5~ z?AFf);}}A$HZ{h13^^OB`{DDI;o{Rj4f!H{~gB5pLmBc6T+Kee2!H|(kk0QDMe4$@J|+pkh-Gdi;6WogLnh# zPR21GqzWKul~RI|T`}UCFB*7bm;ER9u6X-R?1%q}{YtF6Oxx!J)bH%8Ry!|b`+P|| z2m-0Ua6WOml6$xgj&!?cTuQHEQJ_KNDjlMatnTWFdzF%VI4`(XBHCH%9HEZG4sQ~& z{iiI}dEv;fN@w90T@zhX#U0CHEAI(Ws=6j-j|*^KNOn~h?=G9BYW?m+_Qf(8ySyn^ zJ{)Cr+BM@;NahpN;w0HU_H<2hC&oEjpUmzYWM8UMs@&;kvpOwJOmd#j@^>{5uPjd@ zL&OFv>Jqcqe#LNdUCdj-l2zi}7259J+5Z1n1(iaig3N-nn$9z>dBfc9p6>MA?AEKD zXA)g(3YsG?h1Kr#ElE9*VzxNy%UWTxuw)Wb6e)_H?yK3YchR(I;+J36t}@<^99S3u z-i5JmtMs@%FwF$c6;oHn#udKXYZ*=Nt#oU~b75mJuC3aa=i_{Q5 zS=EZP%-g;Sv{sCMXD7sC02{AqMasm{Yif|gV%D0vY_XqGWiJd=pqVMkWVHS8Ah$cS zAS81hh87e?tL=8Aq5Vi9$*$Gnk87HePGZHi^~qGR>DmFxaf3y2B!X-cH>_Q$u8G{v zPA+UYSBNbBYcq7R^XFWr#FTXhiCTk*^C;}8Q@M*JN>gesw3^up|tl& zJ>7|hMAy%a#P|)hF@pU!m}(sChtAFmL#g(`NR;Fx?nHH>Yh)vF$A-QnMy$MXCK|PP zV@&Wgr0kECAHkn>jSx?493L#vyePguLVg!JZt75#c{^3p?gydJHR`;Ln^q8|c6DCc zEt$k;STDC*+My&}uuv9?x!YRQUYJaY;4`BjZCrM0{fys=v)a78S9OLvEf{B@Sb4jN zOcvX3H&pJ^lco#$s1KH$>sN99_MYUP`1|(WBsH%^?le;SW5hc<2h3>`G`mI6@isxk z*&@JsCi!@L5OFc$tsQ5`U~%)#D8D|a@7_0J-M|7dC$BZBm3K8yMf^)C+`d@ydJTV& zm-y|D3Q_Ms)E_K;5)zuAR{cc(BGs;yq8Pn5jNB5ndt=FRvG3l^p@kjXZoAs5RAoc2 zNp$sED3=#t|DK*Oofn9PeGADy;+cJiv4x%ckJmXsYi)*Gj0dS1_XC{W)hY~W5Z0bW z9DN|XxvDCi(}17)sso;cGyw_$`jY_tDOUva(2%&3IAe!~R7J#-5S4GVn0J691I6DC zj3=!4(ZMK!6YwBcv2lCP;PsXsYe=kEe9#AzdiS7?v=bu_NfCX0>GElps#JZ{zaLl7 z2QBD`Ikk&t4%H`<#7BqJBuWfBZ1KO{hL)2k+K$-8g2R2__xQ3soquD&2RW5VU9pax z`OxeYA=}f`VHFr>TOX&wU6h=nz>bP=1|+(Z5I7e9DaI!m80_Z0)<=&0L5^+HLY#79Vzmdb9@uM9)MTn3pg!z9 z*Y%lV$jNG?u^4;ORjx+&8vqW}3e%5;<1 z<@}6DSrr=<`hnJhDw{axdxq0D)mx#^ z?cLgw;Yk(E7fh&d>;+owvI~8c8D_EULOcKI2HLF=5^gcW#oVG^%HBpX@M31_99Z8|b>h@Z)%=@yN}!vyz8HOpZq}GfQ36`=|F7H< zIS0xu){4=W!~L^8CD3x!;(*KTlo5Jy)8$U^lwE#>ZTS5AxZV8|?@Bc<-n=r_F#yMrN1;8Im8tFvUpMFVtiI}?ITOee3d!K@NF(t~^usemh4^In`qI#l&`fnPp70OAL-90Z3Sx#jLat`2agkQo+hHRk zay*U1a|DBu@l5sl)07Zskt0$Rvf4rmgdv9Z2(|!45Y3jUrh`v^DBcsEgqvEX8dgt* zx0ygc($Sps=SZQs;=DeHP2TqXoneSWC{2SyBU8=L&St6&c+k;+D7?)S?@ftNIt>K> zgDB60CoP=`S`vHnKyv-67JpXGPY z&m&P?{x-s=6@E{{D>$t=PTGY<@>=WatmsksoD6IL5rCQZjO^(-Af4tMgwxb?Id*jh zcvJU9+B{k@&ec|O9tRHA*O{EO2{}$;UxeOalp|6U(1_wN_VV(~&ZFA|ppQ>ZA&5vo zga#oBdRhonz%xGH^GuLe81|p{ndpu0?tS*6;jY%*o64siXFvPifXaT)fR;4z4rp-` z@zRgYKY4vL_HbX5=Ry_u?-eHdJy|nfXPxK~JafSpU|QGHhTvz1X;P6m6zIDP-|S2^ zZ243r$fUty_RSg&I$rdLOcXlw2l0SMqT(Hhbdem-RJ-s9aovW6k)E?ubJ(S(U3F$W zLk!f2Vyra^jsXb7^xQ`%EzG;dkV*AM!9c21q;f!gM(Y+Kqs$cf5RD7Y#mOm?B@JnS z6k6y~6ob;1BI%wI;)&jXFdA2YK*X)UV`N1yN9eSAfbv=}ycXhVsZf5ZDjh0hTa9dS zPr*YB97G0qg}4DC{XyLFR;2HzyrH|^ihJIQ2i}TBZ^e$N(VH#ND?a@SEqAD+J>81L zgGPj?&<#9MYdZwdUr6X&bw^LCNpFI{Nyu4?)Kl@0hi(g!%3~If5Lyf!02Gr6FKr0K z*%0ZE4q0EwCs6-fJaO8|Ip_c(Sq_3|TOcliNFhaYjF5Avci};Qh~4ux;p<68Xu;bA z$KHx3-->6wBB0}Nwu{ToC_{0HcB*S)ZPH0h?BTvBFaN~%mcQ)xEdQ|$y*p>5M|gvx z?7U)>muw#a5~e7CCAC~s=6glS{!mX@jbE2luc4T8tD1SLoYk$PmsS+uQI?LqSAgvI zA5C2O?@4weL+3zW^=j#GH|EIv#)OPTuMBJriGtAqWj12ns@X3Bpsmj-- z{v9jsy&dUT1!E*%r>CQ2pY%?WJ6Ip~+;;+K9*>DdUhwx3^{#R+`#lZxd)>fS zF>*`24a}f*yi-DS<)QyBBDymCo+6HUawfX=|GNmd`pgDxA3lDs8)u`p?b~@CH?0BO9yJNr)GV_eP5arMcpOr>5A<_vTFYd**C! zHSe6|Ruc=Jj*k65ZUpMrNo!RTdpxsMoQhj9?D(yZNRQQ|s+jvMgp3dio@sn8R(<{c zvKk2&8~iyr{1!rB>&)`ODVavi1py}%BgDOb#zgp`x$f}3gHcpL`g547GRgwdwQCe2 z^PKg+_bFbSrfbD!&zlFU5|yfZ2E0v8AG9U_u}w*s*#Eh)Nch#AQy?t%YODBuA)6ofR$~4Sp2uyr&TD% zWa_lKV*HDCK4sK1z!@g4esLw}P_R5UGhnta6?bHXDOU!I(m&gk&4a|$IbmYomr?#- zhv3!ePa)prZl$kItNEgW*RM`H1yM6iPgk2tBKt~P<-xmq$n$n|{HqvpQ(XBq?PW%9W8xmV@x6udcg-T9~7{ZSv} zp<7qBRQ7oxWrdJK$kI+lsuJa_viyFbq`9)u#naK5=J&COCzNf z;Y6rvuTQsx`{KG?-Q{f+YPU=G!budFBvq}7S<9?9vrAIAkNi|YgnhnPoq<*)cvvT4hZ({Yo;%I1w<$G_OLApQ-@~e)5 z%4k7-|CRWroVeJVc*MWrXlRDzjyG|c@aebwz2sFknnei}A{a4B$ zIi<>*a>c*mXlRBdOpXh-?~>+6kSkc~LuwF4dF-(y)gT2*=Od|iO|qc&RLr}566VNb zeZ`9a`VQ)shjhgxipBd=!K{j6(LBE@li%HG@A+pAT0^srnk+1|6l#fRm2t#TbC>Ysa9sQ=4*rhO>% z_Ks5(9^Nk(x9+U%_wKMiSg0-p-_ z9+R5Jkx2Ew)AYh2|CDlF?MaE${e26hk#QvYZN2$Rkdahch#hZdVsW_GrGpJgb^k~l zSgxYm(vJ;E+W_jJDxQ2SGl70mVk6>@N$%B%{9I`@8gwtaQK8;Z( zBaLrNR+C*)jV44#a;3y3qn7xr#usmv zgLZRKC%$3GC{w22p>H^&!KT>=!=lN3lfc`k^)>CD_i}Y#zn5E+h(#%X*CGWrBYI^H zC$(xuEMl&GY}B!zu^hBbkl1#~!=uHq>r|48A<+x3`ij0OjJB91o|U|&I|`x}xQsHN^oq%@9oOlK_Q|mHqT2$m zeBU2lc|=`>H_FAVl%CQ6hWG_~3JY)-6-tRL(GPv~W4XIz?X`0Eo9{Lt^l;*vj{sLa z1o!SoyM};%CDY_oB|&(YgQ+5!P6|t^UX`<+ATA7fA<{i>9YFAL&j~*okQPWk%$Rdk zdccw-5+T_*GSfdIPO18{R)JKC_Y6`gM{4-*Ly;v{uS+VPj6|v_JefiwrB^&?93j=# zkTvif){sW<{h=X!{d2!Z`haUvCoP$ZsPkH)^MvD^(!&EGW?!o3LBvrAH$fy8vkEGozM1-(NS7to<|)xSi&=@qzwLf2G}?C-K5 z&AkV?{VIW=iilkviBBX3ZDC!Bar(v316{^#Zhg>ST@{mkFcwZNC zHbvn&c^Pw7A|ci@Z5fjT6zTrQeN&N_xQ5YMenuo3o35rDJ zA}PT{235Fyfg+{8bk;-yluge|S4|{OdE&g}G!sqW59i9=bd6LzE1fcvNy>farM3cL zD>k`+j`_Os&r8z;(x$rUEIssHoe|obesggV+sd`-g7mXMVw>MOLmQIT$+hb=nzbH2 z*HfgotJZ_xLF@1#;g+iCY;P#N4PD|{iMJ4a$XcXzmS$KLX;I0pT4$vR7SgoNWMu1I z$QL*}mA><7(y77}f7kJ|ufgaOn4+@JwqXpPoR&hZBs#jo`EvK{*2P(qUuIbB7$9Z( zC$2`c89mTD*Ml=sl9fa#51)}fu@Y@~24Z>_I@9mCHk>MV)3UFep=CG2BDe3MKpn37XQW37q$SQlAD;kM>S^gpOLE3v zj`BZEqxAVdw<3YW6Lk1wK7tCB%H(6xuD0Z<-@rnQMjz>M0%@@?mY-*YlI^io z6e_zqe_sbwM~F0~6QH1$?sp=_K-#0fE`F3194$5POzL3>yLKk+RRM>vCffOA1gNvx z`M5qkl)t$%*&ALn@M|yDa&qwHL_l`SAZLdn{-kT@SJIThB(~kAZ;-81>9ivh_9cVY zQQ!THBR(aXue@SVNxu#ME#p4QP$J2mFhQv*G2O$JLoKZyOnhpVphP+;XWyx@6sdQw zmzoVBtTJQ0G;j!MrtG#}S}=sv4~$x0?#}LXr{u_b>Cg}?n9A#=t3ybgz*}fbcBc&` z)7DGn2oE|>+t%SFN;_ppwo1!&uOM zBqGV4b{6zwb_x1XPbwHnLV~Kw^`#-c;yUTap`<}jG3xWQ;Obhb@-V^%t&>CSNb|*7 z>4RaUM$KaM=KbE^LHy9Q(v)E&w&te)A)dA&cCB=17-Z9Bz5bW9->;EWcA~C1 z8GZhr>RPfUzq6gpS1Fgy&%ZUE+zs_%A{DCqP$!8BSin@wXGBtFiTSyzLY2^q{I7q4 zN}(#0rd3eZBHN`S7fDrV(nS&(>>I97UBlnI(fNq(Q%%BK+&I>54%q~DoK55;6svOsaQ>+3PXMS(cG=r6*-{_)f_w@hbdHFA^dARw;^mM{(9qY zH2evOzlFc^`E?(W=0rMHN}}^el#*>h(jTu#wFOK-e*7yE=T~Dd3it*E=Ogi7cow41 z?{-Y?cYbaKWn@r{1qC-n{1c?RhkX4}*+=m2hF=f=fAdAFlzRxdBwY_xuEXw~Tt&H^ zfBi3-a8*=n#@_&~QZb+w^(hpuBJ59%ZKSf@Uej=3Vfigz=zEW zd>gF5_q7UqFRQ@EunK%fslZo-3VaTzz;|W}e0!wWia%WQ6}V3;py|`Hf{8RBN*P9! z`RP&0>VD7zvtyLCd{*N_Lh0i7ButsuOF9~()WsFkPYdyL;YrPp&+()!1&dVme8n16 zPkm-qsut7@lU75ar5W4ADw_o|__Pt$8nymS z-K0V4iYS$4DjO-)Y@ke5Pema}uULpD&A1FtTKfh(sa-S=Pbo1*$@tM+i6f=c4V2Aj z6JFp+wnz=*lzoB?m^7r7f2*aWIAztyrI;`3r@4yXX~hyQS;-WqOb}rdA*p_0OW}9W3 zYm;nW+Sb~(+xFXz+s@lw*%XXIL0{zgGxeE<49l39c&07Wk?G0wV+J$BnKb5eW*Re- zS-?olN@g9ijoHQQX9}1z%thu0<|oF*JY@c4UNF9FCAJD%ovp{lvCUbHgSD}(*^X=y z+m{{04rfQP6Icg3lXbF7*cI$Lb_1Ko?qv(u@7N;tD*F@r3;Te5%D!OTY#^uNs&kQC z1Fk8j;f!1Y*MUpolDUE0Fm4q088?N?c~cid_23il)T3->$s zge&9RoWq9?;luezzAoQ{=XfJ;<=gXJ_+-8hKa?NAf5wmJGx#h%hhNOE=D+5*@;mv1 zd?A0Dzrf$%i}~OA`}|-0E8a&_Q4^-Asi~`p)vy}9#;R$h>8$Cl>7yB-`9w2DGhQ=U zGg~uHvsklC^Oa_^W~U}!b5wIubHSncUUN%xS94$USo2b&)K=71*4EHQX=AmGwK}b! zZKZ9e?WXOm9iSbeP1TOoPS#G>W@|<5GVLnuCT*@ZUwc4%LVHg8z4p5Hj`k1jW9@S- z(fR8t>#FMN=+wH#I!0&Kwa~TGb<*|H_16v2rRdUi6Lr&dvvdn}OLdM_y7jv4x^Hy{ zbVqb&b(eJ4bwBG$bdPk;b^qx6^g;Tn`Urh}eM3E?*XrZ-ZSm-_Ykjrv{seflH%_ApXvY6D-4wkp@s-UZ9|-)nL%qX z8Cn}YFmyHaGz>D>9fr|{G=sx1!!Xydz_7xw*09mA&9K*S*l^r%#&Fee)9|aoWq4}% z+n_M|8db(>#@fbu#->KzXfoQ29gK;_p2oh$VaAchG~)zgrg4sOfpLj(jqw}fHe;Ug zknx!DjIqf0qw%)UWqe>PGnN~DO@XFxQ!P_HQv(xcau`fDQ-Z0BsfVerX`pF@=~L4L z(-c#dX})QRX}RfZ(-u>nX^*MUbjnm@x?(Ce{bqV#dSZHIs$dQ@hnQ=cqsP0V_; z#hhSnZ|-jX&^*vQ)I7#K&OF7OVV-ARWL|DwZQg9&VcugtXg+B^Z@yx_VZLj=XMSS- z%dB(=0YZonCPWD_LKA@%1fiwSUg#|J7CsV&3ZDpLg-Jq&Fk29XFND>?S3<6^TR12j z70wBlg&V>x;SZry_)B;x_*;T4VU`*ewWX1TwdgD@ENv~FE!`~rErTteSW+z$Ez>Ns zE!mc(mX(&TESoIfTJ~FxT25FTmn=V6ZdvYF9$EghytEK&khO}nhP95hp|!bHXEj^f zSUXy~S$kPOwhp(ZTGOpltuw9J)`iwDt?R6ttlO>otOeE+*0a`Y)}O3*tR>cG))!V{ z^RtE8s@v+=>f4&xG&Zv>-u8hl$=1u(&t|ucvZdQTx6QCQZ3}IZ1CZGO%Y5T=iVtZ)&+vc_@;_>PQ(D7p`G1ZtzpeK&u86(isnn`4mfu2FkNai!3$HB~D za)6!{%s0$dpl2_0j5!VTTxD)EzXLr_nR3Pl=uxq?*t$SZQ`W#*K^{j3wg=k>=o!X- z%8mzmGTHg;VxVUYyM^5e^c-SOu@``zAKBm7`#?__TY;+x^n`QKTrAMTaTcx>(9?zc zkQ)H>jNry`lYyQrZV|T(==qx4!Q}%zh1_}Wd!VP7yT?5SdR}n>d}Th|!Pn$t_{Knw zo^Q#w1A4miAMrzgo-zC+emc-IkN<*S1@vs@ck>5;o|F7#{yNZemoMd?13gMju%;@| z6QyaSVSpY%(^k_7=;^H)tVscS#%iW%W&u5-W~F95(37j#uQ>wroYVZE`B~$*tNBCo zr{*7^$6s4T8v*pFwav9!pr?hlqqZy1(_cGWI~wSjsGX^u3-m12uG4M=dcM^bXpaLu zm$W}=e+7CTX|;nSh=)x+Gmspyy-VC|w%RGgar*EdYAH)NRmh za{xX2bl>UD06o`qzvx^*&oiA{=L__N>Lc~_fSzW0quvJee4tO(_XT?F`p@(efSwup z9Q_iYXRUs#J`dxL2p+L{4#>vJEpl7~unQ=AHv&EQiJP7ohGJbEo0rdQ4d~Ey+=&4|;YzhN< zqD_rWtjS=qnA$l^oq?VYO+!qd06pVO(@nF1o<*irrmujW9i{`Oqd?Dj({IJU=xJ&0WbOv^d}K~Brvg2b%(KkdK+hNE_2x}L&u;S(^9i8m zviWE89iXSw{EwM{Ji&q^LZ}1uG!nFe8R%&%bQO95J%feOLORehO_(bz1bS8q8-?va z&wk;!a2DwKLHJcD0eb!v6c#_Ar;4Svr9RNp++woC13eurJuUr!p5c}>%jZDPOv?g` z1oW)4Y_seFdI~IOEEhqZpBxsK=?jjGCP}{2ly;wzhXB7KKblX_9Wo*J$sA2 z3-~-{U$RQTr!rTAivoNab2?4{eA;o{xZZ%z5H6J)3;0auvN;j(S;cMQasi(M+zIX+ z;B%e3!~FsHJm(1S5BOB&>+lXW;KT4{z6IdZiSNbt2Ygcabbcb>GmBryF9m$o^V|7v z0iPrMS^g5>^D|$#a1F~Fxt_oMDM;PXINrYi@00`=kgT7XXj zJ*PJSJ_-6R`W}GKK>Y~)r-08CeU^Sc;Imx+wSEiWvqxX3KLz+)(HHA~1ALz7U+F6V zJ|TvhhG@X2i9v6$06y&v-3=cCK0^&-4C4$_3>gl?Ji{WuXSHFoVF%!I&~Val9`Lzg zxNEov`21y18Up~IFk_T42Jm5xg0Usw)7jYD_z~dqiE*rP65uo2C>p;2e7-W~8g~Oe zM~&x#zbP2-sbNx^8Ua2!QwvjDu*cEO)Za81@JTgIG))71vQ0}( zD*>NPrf*IA0iP45OQs(HpF5^Urau86Vh%D_0etG18=9K~K4xlC@L6d7(!37v*>2uvE&zPany;CE0(?r$&&)3XA3q^fs4moT2=#?#f(G!37d{Y@ z0H1z>T^I%Ud@jrooPductQ9r@KD&g&!gqkrMd7CK3*hrm_*-xbewIp>YL-aAC(goK zjDSyTOQIzi@EK$oY55HBaaiV9asZzdmTxRu0iV5=W0uo^&sEE9%kLJ)L(5Z3xy1+Y zQCVwQ>jFMatp=+V@abUfVeJF>46}Y}9S`_qTIX9A13qi4TdX?)pF`GD)(e2okJjI; z_W_?WYXw_Hz$e@mZHonbIGe@R3h?P-`_MK3@EKtnXPXT8WZ4$kmH|Fr+jiLU9e__E zE?D0KKE<|sw#R@EE?clRC={vCd;*xtfKN>(hG`7==$V#GJHV$q^AR%y@EOBQVx|K= z^O!G~Re;ZCW;b&H@Hxp`X08K1cbQV=IpCvYgW0NpPZZmTWdI+6ZOe9IyR*Gn$6z)E z@EOZaV`l+ABD<1Z5BTJ=``IIa&pGx7_GiH75B5*?AHc_-tHMP9K5DKxrv-dka2>g> zfKPvJI5!&bnaIuL<^n!Txpmw|z~@`8fIANOT;hJ>eg%9UaW6Op;1k4G=WFw7zM+HH z@Fu{g4WGpK1bjZ`NAYQZ&s5&YF93YLN8c>wk} z{?_e9E;Ibs>OHEnTdx3E*SUwbHc*e0t~x=!OD5pXw&-G60|Xx@Ef6fX^0P zzV4vzm_v6;_r2~0;PadAvF7VOg0zLtTs)ibXPmF;v=m4LVhE9fVfX_#U z6hkWDGs!T^kZo`*GJIiJZ`cI*>^2-RoB(_-8-6z20engg{}>416Ksqy)&YDP8MQ_; z;M3OF)z}O08EhPFOb2|X8Rr@o0zNB^8;#ompZ&(;#| zZK@CWG&h+{@qkZ9Q%_Sr2jDZ@lxF%I@R?~^V3Gizb*62mU4T!4>5S1fc`qlPnArh5h_$;=p zwtNlv?6e%T6aqdMEH^C0fX{u)Uk=MFz^9@$%vuxhiM6s;J>b*I+S%G2@EKtJ#5xA> znQWbHod@_VvwmgW4EW?*k6KRxKHpn!S?>ZqkF77QO2DVGt%fZM@M&z**#y9+ovoX# zH{dhGmTDUd_)NED+eE-;m2HzP*OqTPU~`Y9Er6a*OfRNC(38TXGZTTHSD%IJ=?gw++m>S z40n~g3G}$Qr`+E_k1wy{s{uXr_@+D$@;GdK2R;$#>B|q}M*=+)_)LBd(6fYJ!+!(x zZt2YVSne#lnk>O=1v0$bNI8MK$VyWC5zgJ!O-0XE@b<8jk9 z(=$^fYyo{OV=Z4o^*&&E4lO&*+7{P&JFfCGaMCywt3Cf*sy+;GbJ*QbIe%hfFt|fu zLR$#K*>l`ekMKA7W||Y^TjNY@+9FdWOHIo%%OOjo6bF%Ot0OduP=reO?U@SthZdYq+2J#1Th2mfVI|cI83kE6h-*wImka4i*hH< zzEjK}Obk1Ny@XLp=Q6nYTz~mYVYPbgDD5=uEZE6f=-TQ!%GXlIDBU>S6wJyt-BDd8_9ht+XohL-||74Dw^sJ`TR0!T$&GM z8(#{ne6zIMalm}1JuM$G_q8LSt)A5VuA}$hy@qoD^bdxgU>AFVYbix@ePf)lnX$F8 zyKy*>OzmI}*ucIr?lSJfIyh!LjVov=>|T{jD%tYILHA2EC7b$~2ACW}O_NP?Vd+`} zTi0e>I8S2P+=qqhFX(zo=y`GG7Us4xWP1Xz8M0Ql!Mqh{J#D@Sq&_k$pvlz}EJ7=x zozO|>hS70Ab(D$G<2mgOSL2Fo^wCC{=4%jSxu zDqT3G3dKo0!nhb&p-AH7|n&WcY5t?Ntw8*2dnwc%VEMrjl_m;a<|MRz2wpO)9 zVPmwgwzGD!_J+{wsbD-xm7MOif#Du&$oIm3}C$D+~3r3{K-XQ(xEyB=bUHov>Nh z3oD}IZ=pVBVJOYPNBOFFLt6*&jO_*8$`&)-vM_bdZpJQzB5ASdh zUupeD)`j<33vnEshc0{zHo!luPpto7ocwSc(TjLJTO%89GuW)QHqeE;LmM7s`$RsF zrr2gV@Ty@UPNa3Xi*K{-h86G_uHu(uZTL5AsK0D4>2OBl6&W5%CJ;wb1P-NGra7a* zONf@t2eKuwKQj#a@Taf@W-zlcI*#zZs%%p+XIm?Vcz&3-2|yFz1*njF!E}{v}_;1GzBh z!A)=pZ^`w-F(kp(cZU0b@6C^e`kKQp-(BCi&=BX`)BH-v2Zi7BXYKp3Etcx9Q zfa*09JAH-GZB&`+np(ney%svsAQ+mTm<6FPZcpVxL(5uAFf@wkxVUVz?t#tZ7Z_+O zLQ`l7bB99_PZaduUY0S3VPc5GwwuqbgxA3?pQ>7^YhOux{q^urN!bQw@?=s$;p;k(Atdh%Abjq{sj)3d<@(pYZ-&Q z*;?36Vfd)3g#S*PVjC9N4@?p}1vjS4><4%WHHCWyg`+jJi=q4{{Cs{9zn0&`AH|!a zTl^jVDa^J}xU{r!;Knix%7PR3l--&_*k$ptJ>CLU*Vcm#q=)uH7+=S0zl5>%AZT!3 z`=?fkcRE90N?ia0>JD5Y3Un8AS70&qhs88XZ^eF3#@eB;W@h5m%tHNA{Yt!?*`&|a z@0M>0Cvj8wUVlS2RNU7)p6JW;<+7nv1w(11p`QGfMuWFB@rE{rj(AVg3yW~Dd}$bq zOT%=-Y}sV73?_@Ou`sE{^bjnjr?Euo>zZHiy5^zb84f3f(a%WdogPtYW4saDX#i0~ z<8efY0f5&7z%^LBSh!}b0}I_e+YuLG8CR#?Tp&#+!9W>QKr12w_kqN7f>x~;= znN>t96$uFa0e81zr~)nwYN_@aw3?SNAo=J5V82%B!gLY3NZlR1OP^q9hgVZMhNXr8 iV}8*{r4I>-Lv{t@!vruvjEV`%zcor(*H>gJwEKU=Z=P}h diff --git a/UnityProject/Assets/Plugins/x86/RenderingPlugin.dll b/UnityProject/Assets/Plugins/x86/RenderingPlugin.dll index 6c114ce45aed1fa15b8ca4eda11babcb294219ff..1630de0861cff4d4f22dfe09fbae53ae97f5c646 100644 GIT binary patch delta 22625 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 Date: Tue, 24 Oct 2023 14:00:59 +0300 Subject: [PATCH 10/15] Edit README --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 43eaeb65..b2a07868 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,7 @@ This sample demonstrates how to render and do other graphics related things from Unity versions: -* **2018.1+** use tip of default branch. -* 5.6, 5.5, 5.4: use corresponding `unity-x.x` tag. +* **2023.1+** use tip of default branch. The plugin itself does very few things: @@ -25,7 +24,7 @@ Native code rendering is implemented for several platforms and graphics APIs: * Note that Vulkan and DX12 are not compiled in by default * Vulkan requires Vulkan SDK; enable it by editing `#define SUPPORT_VULKAN 0` to `1` under `UNITY_WIN` clause in `PlatformBase.h` - * DX12 requires Agility SDK; enable it by editing `#define SUPPORT_D3D12 0` to `1` under `UNITY_WIN` clause in `PlatformBase.h` + * DX12 requires additional header files (see on [github](https://github.com/microsoft/DirectX-Headers) or [nuget package](https://www.nuget.org/packages/Microsoft.Direct3D.D3D12/1.4.10)); enable it by editing `#define SUPPORT_D3D12 0` to `1` under `UNITY_WIN` clause in `PlatformBase.h` * macOS (Metal, OpenGL) * Linux (OpenGL, Vulkan) * Windows Store aka UWP (D3D11, D3D12) @@ -39,12 +38,12 @@ Code is organized as follows: * `PluginSource` is source code & IDE project files for the C++ plugin. * `source`: The source code itself. `RenderingPlugin.cpp` is the main logic, `RenderAPI*.*` files contain rendering implementations for different APIs. - * `projects/VisualStudio2015`: Visual Studio 2015 project files for regular Windows plugin - * `projects/UWPVisualStudio2015`: Visual Studio 2015 project files for Windows Store (UWP - Win10) plugin + * `projects/VisualStudio2022`: Visual Studio 2022 project files for regular Windows plugin + * `projects/UWPVisualStudio2022`: Visual Studio 2022 project files for Windows Store (UWP) plugin * `projects/Xcode`: Apple Xcode project file for Mac OS X plugin, Xcode 10.3 on macOS 10.14 was tested * `projects/GNUMake`: Makefile for Linux * `projects/EmbeddedLinux`: Windows .bat files to build plugins for different architectures -* `UnityProject` is the Unity (2018.3.9 was tested) project. +* `UnityProject` is the Unity (2023.1.15f1 was tested) project. * Single `scene` that contains the plugin sample scene. From ba91863a246b60f80385c5ae218fe2923e4c20c1 Mon Sep 17 00:00:00 2001 From: Brice Gros Date: Thu, 4 Apr 2024 18:11:55 +0200 Subject: [PATCH 11/15] fix linux build missing -lGL --- PluginSource/projects/GNUMake/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PluginSource/projects/GNUMake/Makefile b/PluginSource/projects/GNUMake/Makefile index bf23155d..ceb189bc 100644 --- a/PluginSource/projects/GNUMake/Makefile +++ b/PluginSource/projects/GNUMake/Makefile @@ -7,7 +7,7 @@ OBJS = ${SRCS:.cpp=.o} UNITY_DEFINES = -DSUPPORT_OPENGL_UNIFIED=1 -DSUPPORT_VULKAN=1 -DUNITY_LINUX=1 CXXFLAGS = $(UNITY_DEFINES) -O2 -fPIC LDFLAGS = -shared -rdynamic -LIBS = +LIBS = -lGL PLUGIN_SHARED = libRenderingPlugin.so CXX ?= g++ From 31b6a316834468c6bee171b8d8f2fa915ca24a65 Mon Sep 17 00:00:00 2001 From: Brice Gros Date: Thu, 4 Jul 2024 10:33:09 +0200 Subject: [PATCH 12/15] add QNX --- .gitignore | 1 + PluginSource/projects/QNX/Makefile | 48 +++++++++++++++++++ PluginSource/source/PlatformBase.h | 7 ++- .../source/RenderAPI_OpenGLCoreES.cpp | 2 + README.md | 4 +- 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 PluginSource/projects/QNX/Makefile diff --git a/.gitignore b/.gitignore index b57860d5..803ea27f 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ UnityProject/Logs PluginSource/build PluginSource/projects/Android/libs/* PluginSource/projects/Android/obj/* +PluginSource/source/*.o diff --git a/PluginSource/projects/QNX/Makefile b/PluginSource/projects/QNX/Makefile new file mode 100644 index 00000000..5b46457f --- /dev/null +++ b/PluginSource/projects/QNX/Makefile @@ -0,0 +1,48 @@ +# UNITY_QNX_TARGET_LIB allows to specify the path to the QNX target libraries +# e.g. for imx8qm, use "~/qnx710/target/qnx7/aarch64le/usr/lib/graphics/iMX8QM/" +UNITY_QNX_TARGET_LIB ?= $(QNX_TARGET)/aarch64le/usr/lib + +# UNITY_QNX_GLES2_LIB allows to link against a device/driver-specific library +# e.g. for imx8qm, use "GLES2_viv" +UNITY_QNX_GLES2_LIB ?= GLESv2 + +SRCDIR = ../../source +SRCS = $(SRCDIR)/RenderingPlugin.cpp \ +$(SRCDIR)/RenderAPI.cpp \ +$(SRCDIR)/RenderAPI_OpenGLCoreES.cpp +OBJS = ${SRCS:.cpp=.o} +UNITY_DEFINES = -DUNITY_QNX=1 +CXXFLAGS = $(UNITY_DEFINES) -O2 -fPIC +LDFLAGS = -shared -rdynamic -static-libstdc++ -Wl,-soname,RenderingPlugin -Wl,-L$(UNITY_QNX_TARGET_LIB) -Wl,-l$(UNITY_QNX_GLES2_LIB) +LIBS = +PLUGIN_SHARED = libRenderingPlugin.so +CXX = ntoaarch64-g++ + +ifeq (, $(shell echo $(QNX_TARGET))) +$(error "QNX_TARGET is not set.") +endif + +ifeq (, $(shell echo $(QNX_HOST))) +$(error "QNX_HOST is not set.") +endif + +# Check if the CXX variable is set to a valid compiler +ifeq (, $(shell which $(CXX))) +$(error "No $(CXX) in PATH. Did you set '$$QNX_HOST/usr/bin' in your PATH?") +endif + +.cpp.o: + $(CXX) $(CXXFLAGS) -c -o $@ $< + +all: clean shared + +cleanobjs: + rm -f $(OBJS) + +cleanlib: + rm -f $(PLUGIN_SHARED) + +clean: cleanobjs cleanlib + +shared: $(OBJS) + $(CXX) $(LDFLAGS) -o $(PLUGIN_SHARED) $(OBJS) $(LIBS) diff --git a/PluginSource/source/PlatformBase.h b/PluginSource/source/PlatformBase.h index f331f396..676005c6 100644 --- a/PluginSource/source/PlatformBase.h +++ b/PluginSource/source/PlatformBase.h @@ -28,7 +28,7 @@ #endif #elif defined(__ANDROID__) #define UNITY_ANDROID 1 -#elif defined(UNITY_METRO) || defined(UNITY_LINUX) || defined(UNITY_WEBGL) || defined (UNITY_EMBEDDED_LINUX) || defined (UNITY_EMBEDDED_LINUX_GL) +#elif defined(UNITY_METRO) || defined(UNITY_LINUX) || defined(UNITY_WEBGL) || defined (UNITY_EMBEDDED_LINUX) || defined (UNITY_EMBEDDED_LINUX_GL) || defined (UNITY_QNX) // these are defined externally #elif defined(__EMSCRIPTEN__) // this is already defined in Unity 5.6 @@ -62,12 +62,15 @@ #elif UNITY_OSX || UNITY_LINUX #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 -#elif UNITY_EMBEDDED_LINUX +#elif UNITY_EMBEDDED_LINUX || UNITY_QNX #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_ES 1 #ifndef SUPPORT_VULKAN #define SUPPORT_VULKAN 0 #endif +#elif UNITY_QNX + #define SUPPORT_OPENGL_UNIFIED 1 + #define SUPPORT_OPENGL_ES 1 #endif #if UNITY_IOS || UNITY_TVOS || UNITY_OSX diff --git a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp index c62f4861..5db46cdc 100644 --- a/PluginSource/source/RenderAPI_OpenGLCoreES.cpp +++ b/PluginSource/source/RenderAPI_OpenGLCoreES.cpp @@ -29,6 +29,8 @@ # define GL_GLEXT_PROTOTYPES # include #endif +#elif UNITY_QNX +# include #else # error Unknown platform #endif diff --git a/README.md b/README.md index b2a07868..67cd950f 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,8 @@ Native code rendering is implemented for several platforms and graphics APIs: * WebGL (OpenGL ES) * Android (OpenGL ES, Vulkan) * iOS/tvOS (Metal; Simulator is supported if you use unity 2020+ and XCode 11+) -* EmbeddedLinux (OpenGL, Open GLES) +* EmbeddedLinux (OpenGL, OpenGL ES , Vulkan) +* QNX (OpenGL ES) * ...more platforms might be coming soon, we just did not get around to adding project files yet. Code is organized as follows: @@ -43,6 +44,7 @@ Code is organized as follows: * `projects/Xcode`: Apple Xcode project file for Mac OS X plugin, Xcode 10.3 on macOS 10.14 was tested * `projects/GNUMake`: Makefile for Linux * `projects/EmbeddedLinux`: Windows .bat files to build plugins for different architectures + * `projects/QNX`: Makefile for Linux requires QNX to be installed and environment variables to be set * `UnityProject` is the Unity (2023.1.15f1 was tested) project. * Single `scene` that contains the plugin sample scene. From 2e889a9ffc84a988128e9b6621be7a9e5285a10f Mon Sep 17 00:00:00 2001 From: Brice Gros Date: Thu, 4 Jul 2024 10:51:30 +0200 Subject: [PATCH 13/15] fix typo --- PluginSource/projects/QNX/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PluginSource/projects/QNX/Makefile b/PluginSource/projects/QNX/Makefile index 5b46457f..0a0b112f 100644 --- a/PluginSource/projects/QNX/Makefile +++ b/PluginSource/projects/QNX/Makefile @@ -3,7 +3,7 @@ UNITY_QNX_TARGET_LIB ?= $(QNX_TARGET)/aarch64le/usr/lib # UNITY_QNX_GLES2_LIB allows to link against a device/driver-specific library -# e.g. for imx8qm, use "GLES2_viv" +# e.g. for imx8qm, use "GLESv2_viv" UNITY_QNX_GLES2_LIB ?= GLESv2 SRCDIR = ../../source From 811d7b4881cb88a6cc457c49dff562dbfb93096d Mon Sep 17 00:00:00 2001 From: Brice Gros Date: Fri, 5 Jul 2024 09:40:41 +0200 Subject: [PATCH 14/15] Fix QNX defines --- PluginSource/source/PlatformBase.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PluginSource/source/PlatformBase.h b/PluginSource/source/PlatformBase.h index 676005c6..f24cd366 100644 --- a/PluginSource/source/PlatformBase.h +++ b/PluginSource/source/PlatformBase.h @@ -62,7 +62,7 @@ #elif UNITY_OSX || UNITY_LINUX #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 -#elif UNITY_EMBEDDED_LINUX || UNITY_QNX +#elif UNITY_EMBEDDED_LINUX #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_ES 1 #ifndef SUPPORT_VULKAN From 94bd38fcc9406b78a81256cbf7418a4dfa2ae875 Mon Sep 17 00:00:00 2001 From: Alexey Orlov Date: Wed, 5 Aug 2026 08:04:05 +0200 Subject: [PATCH 15/15] [macos] updated plugin for arm64 Updated xcode project to build both arm64 and x64, updated code to use didModifyRange only for managed buffers --- .../RenderingPlugin.xcodeproj/project.pbxproj | 37 ++++++++++-------- PluginSource/source/PlatformBase.h | 4 +- PluginSource/source/RenderAPI_Metal.mm | 10 +++-- .../RenderingPlugin.bundle/Contents.meta | 8 ---- .../Contents/Info.plist | 18 +++++---- .../Contents/Info.plist.meta | 7 ---- .../Contents/MacOS.meta | 8 ---- .../Contents/MacOS/RenderingPlugin | Bin 30156 -> 91040 bytes .../Contents/MacOS/RenderingPlugin.meta | 7 ---- 9 files changed, 39 insertions(+), 60 deletions(-) delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta diff --git a/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj b/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj index 08f683df..5c257d88 100644 --- a/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj +++ b/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj @@ -7,12 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - 2B6899B81CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899B01CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp */; }; 2B6899B91CF8396700C4BA4F /* RenderAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899B11CF8396700C4BA4F /* RenderAPI.cpp */; }; 2B6899BA1CF8396700C4BA4F /* RenderingPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899B31CF8396700C4BA4F /* RenderingPlugin.cpp */; }; 2B6899C91CF83DB000C4BA4F /* RenderingPlugin.bundle in Copy Bundle into Unity project */ = {isa = PBXBuildFile; fileRef = 8D576316048677EA00EA77CD /* RenderingPlugin.bundle */; }; 2B6899CB1CF8409A00C4BA4F /* RenderAPI_Metal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899CA1CF8409A00C4BA4F /* RenderAPI_Metal.mm */; }; - 2BC2A8D5144C433D00D5EF79 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BC2A8D4144C433D00D5EF79 /* OpenGL.framework */; }; + 8A0E9E8B3022106C005CEB36 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A0E9E8A3022106C005CEB36 /* Metal.framework */; }; 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */; }; /* End PBXBuildFile section */ @@ -33,9 +32,6 @@ /* Begin PBXFileReference section */ 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; 2B6899AB1CF8396700C4BA4F /* PlatformBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformBase.h; path = ../../source/PlatformBase.h; sourceTree = ""; }; - 2B6899AD1CF8396700C4BA4F /* RenderAPI_D3D11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI_D3D11.cpp; path = ../../source/RenderAPI_D3D11.cpp; sourceTree = ""; }; - 2B6899AE1CF8396700C4BA4F /* RenderAPI_D3D12.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI_D3D12.cpp; path = ../../source/RenderAPI_D3D12.cpp; sourceTree = ""; }; - 2B6899B01CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI_OpenGLCoreES.cpp; path = ../../source/RenderAPI_OpenGLCoreES.cpp; sourceTree = ""; }; 2B6899B11CF8396700C4BA4F /* RenderAPI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI.cpp; path = ../../source/RenderAPI.cpp; sourceTree = ""; }; 2B6899B21CF8396700C4BA4F /* RenderAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderAPI.h; path = ../../source/RenderAPI.h; sourceTree = ""; }; 2B6899B31CF8396700C4BA4F /* RenderingPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderingPlugin.cpp; path = ../../source/RenderingPlugin.cpp; sourceTree = ""; }; @@ -46,7 +42,7 @@ 2B6899C61CF839A600C4BA4F /* IUnityGraphicsMetal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IUnityGraphicsMetal.h; path = ../../source/Unity/IUnityGraphicsMetal.h; sourceTree = ""; }; 2B6899C71CF839A600C4BA4F /* IUnityInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IUnityInterface.h; path = ../../source/Unity/IUnityInterface.h; sourceTree = ""; }; 2B6899CA1CF8409A00C4BA4F /* RenderAPI_Metal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RenderAPI_Metal.mm; path = ../../source/RenderAPI_Metal.mm; sourceTree = ""; }; - 2BC2A8D4144C433D00D5EF79 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + 8A0E9E8A3022106C005CEB36 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; 8D576316048677EA00EA77CD /* RenderingPlugin.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RenderingPlugin.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ @@ -56,8 +52,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 8A0E9E8B3022106C005CEB36 /* Metal.framework in Frameworks */, 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */, - 2BC2A8D5144C433D00D5EF79 /* OpenGL.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -71,6 +67,7 @@ 089C167CFE841241C02AAC07 /* Resources */, 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, 19C28FB6FE9D52B211CA2CBB /* Products */, + 8A0E9E893022106C005CEB36 /* Frameworks */, ); name = RenderingPlugin; sourceTree = ""; @@ -79,7 +76,6 @@ isa = PBXGroup; children = ( 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */, - 2BC2A8D4144C433D00D5EF79 /* OpenGL.framework */, ); name = "External Frameworks and Libraries"; sourceTree = ""; @@ -97,10 +93,7 @@ children = ( 2B6899BC1CF8398200C4BA4F /* Unity */, 2B6899AB1CF8396700C4BA4F /* PlatformBase.h */, - 2B6899AD1CF8396700C4BA4F /* RenderAPI_D3D11.cpp */, - 2B6899AE1CF8396700C4BA4F /* RenderAPI_D3D12.cpp */, 2B6899CA1CF8409A00C4BA4F /* RenderAPI_Metal.mm */, - 2B6899B01CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp */, 2B6899B11CF8396700C4BA4F /* RenderAPI.cpp */, 2B6899B21CF8396700C4BA4F /* RenderAPI.h */, 2B6899B31CF8396700C4BA4F /* RenderingPlugin.cpp */, @@ -129,6 +122,14 @@ name = Unity; sourceTree = ""; }; + 8A0E9E893022106C005CEB36 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8A0E9E8A3022106C005CEB36 /* Metal.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -194,7 +195,6 @@ buildActionMask = 2147483647; files = ( 2B6899BA1CF8396700C4BA4F /* RenderingPlugin.cpp in Sources */, - 2B6899B81CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp in Sources */, 2B6899B91CF8396700C4BA4F /* RenderAPI.cpp in Sources */, 2B6899CB1CF8409A00C4BA4F /* RenderAPI_Metal.mm in Sources */, ); @@ -214,9 +214,10 @@ HEADER_SEARCH_PATHS = ../; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + MACOSX_DEPLOYMENT_TARGET = 12.0; + ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:rfc1034Identifier}"; PRODUCT_NAME = RenderingPlugin; - VALID_ARCHS = x86_64; WRAPPER_EXTENSION = bundle; }; name = Debug; @@ -231,9 +232,10 @@ HEADER_SEARCH_PATHS = ../; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + MACOSX_DEPLOYMENT_TARGET = 12.0; + ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:rfc1034Identifier}"; PRODUCT_NAME = RenderingPlugin; - VALID_ARCHS = x86_64; WRAPPER_EXTENSION = bundle; }; name = Release; @@ -244,8 +246,8 @@ ARCHS = "$(ARCHS_STANDARD)"; ENABLE_TESTABILITY = YES; GCC_OPTIMIZATION_LEVEL = 0; - MACOSX_DEPLOYMENT_TARGET = 10.11; - ONLY_ACTIVE_ARCH = YES; + MACOSX_DEPLOYMENT_TARGET = 12.0; + ONLY_ACTIVE_ARCH = NO; SDKROOT = macosx; SYMROOT = ../../build; }; @@ -255,9 +257,10 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD)"; - MACOSX_DEPLOYMENT_TARGET = 10.11; + MACOSX_DEPLOYMENT_TARGET = 12.0; SDKROOT = macosx; SYMROOT = ../../build; + ONLY_ACTIVE_ARCH = NO; }; name = Release; }; diff --git a/PluginSource/source/PlatformBase.h b/PluginSource/source/PlatformBase.h index f24cd366..c9d4e8b3 100644 --- a/PluginSource/source/PlatformBase.h +++ b/PluginSource/source/PlatformBase.h @@ -51,7 +51,7 @@ #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 #define SUPPORT_VULKAN 0 // Requires Vulkan SDK to be installed -#elif UNITY_IOS || UNITY_TVOS || UNITY_ANDROID || UNITY_WEBGL +#elif UNITY_ANDROID || UNITY_WEBGL #ifndef SUPPORT_OPENGL_ES #define SUPPORT_OPENGL_ES 1 #endif @@ -59,7 +59,7 @@ #ifndef SUPPORT_VULKAN #define SUPPORT_VULKAN 0 #endif -#elif UNITY_OSX || UNITY_LINUX +#elif UNITY_LINUX #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 #elif UNITY_EMBEDDED_LINUX diff --git a/PluginSource/source/RenderAPI_Metal.mm b/PluginSource/source/RenderAPI_Metal.mm index f7abf0f7..dd1cc9c5 100644 --- a/PluginSource/source/RenderAPI_Metal.mm +++ b/PluginSource/source/RenderAPI_Metal.mm @@ -142,7 +142,6 @@ pipeDesc.depthAttachmentPixelFormat = MTLPixelFormatDepth32Float_Stencil8; pipeDesc.stencilAttachmentPixelFormat = MTLPixelFormatDepth32Float_Stencil8; - pipeDesc.sampleCount = 1; pipeDesc.colorAttachments[0].blendingEnabled = NO; pipeDesc.vertexFunction = vertexFunction; @@ -199,8 +198,10 @@ ::memcpy(m_ConstantBuffer.contents, worldMatrix, cbSize); #if UNITY_OSX - [m_VertexBuffer didModifyRange:NSMakeRange(0, vbSize)]; - [m_ConstantBuffer didModifyRange:NSMakeRange(0, cbSize)]; + if (m_VertexBuffer.storageMode == MTLStorageModeManaged) + [m_VertexBuffer didModifyRange:NSMakeRange(0, vbSize)]; + if (m_ConstantBuffer.storageMode == MTLStorageModeManaged) + [m_ConstantBuffer didModifyRange:NSMakeRange(0, cbSize)]; #endif id cmd = (id)m_MetalGraphics->CurrentCommandEncoder(); @@ -250,7 +251,8 @@ { # if UNITY_OSX id buf = (__bridge id)bufferHandle; - [buf didModifyRange:NSMakeRange(0, buf.length)]; + if (buf.storageMode == MTLStorageModeManaged) + [buf didModifyRange:NSMakeRange(0, buf.length)]; # endif // if UNITY_OSX } diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta deleted file mode 100644 index 74ed6185..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f755e08657c4d45a2964c48ee8fe540d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist index 8eed89a2..905d9e17 100644 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist +++ b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 18G87 + 25F84 CFBundleDevelopmentRegion English CFBundleExecutable @@ -47,16 +47,20 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 10G8 + 25F70 + DTPlatformName + macosx DTPlatformVersion - GM + 26.5 DTSDKBuild - 18G74 + 25F70 DTSDKName - macosx10.14 + macosx26.5 DTXcode - 1030 + 2660 DTXcodeBuild - 10G8 + 17F113 + LSMinimumSystemVersion + 13.0 diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta deleted file mode 100644 index 0476b6af..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 8aa00d77c9d59498d8afc6cc966ccedf -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta deleted file mode 100644 index 4d9bf1d4..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ea416e3a931c44c7dab7be3ff85af5da -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin index ffed025ad209719a88131ffac4bc7ee4b61c9430..590c51c5ac544b498feea6af448258b0519f4509 100755 GIT binary patch literal 91040 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 OFZrUs3=~RqM*Tmt+P^&j diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta deleted file mode 100644 index 488164d4..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f0b092cc71f8b465cbb5a657186a3267 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: