From a8e24d20c80c8b5ee92181c88a17a1cbdcb42779 Mon Sep 17 00:00:00 2001 From: connan Date: Fri, 20 Dec 2024 16:10:04 +0800 Subject: [PATCH] =?UTF-8?q?ios=20oc=20=E6=8F=92=E4=BB=B6=20metal=20fx=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mac/libGfxPluginNativeRender.dylib | Bin 57792 -> 58192 bytes Assets/Plugins/iOS/IUnityGraphics.h | 62 +++++++++++++++ Assets/Plugins/iOS/IUnityGraphics.h.meta | 33 ++++++++ Assets/Plugins/iOS/RegisterPlugin.mm | 21 +++++ Assets/Plugins/iOS/RegisterPlugin.mm.meta | 73 ++++++++++++++++++ .../iOS/libGfxPluginNativeRender.a.meta | 2 +- .../Mobile/Mobile_High_Renderer.asset | 2 +- NativeRenderPlugin/RenderAPI_Metal.mm | 37 +++++---- NativeRenderPlugin/RenderingPlugin.cpp | 3 +- .../SuperRendering/SR/Scripts/MetalFx.cs | 13 ++-- ProjectSettings/ProjectSettings.asset | 5 +- UserSettings/Layouts/default-2022.dwlt | 24 +++--- 12 files changed, 232 insertions(+), 43 deletions(-) create mode 100644 Assets/Plugins/iOS/IUnityGraphics.h create mode 100644 Assets/Plugins/iOS/IUnityGraphics.h.meta create mode 100644 Assets/Plugins/iOS/RegisterPlugin.mm create mode 100644 Assets/Plugins/iOS/RegisterPlugin.mm.meta diff --git a/Assets/Plugins/Mac/libGfxPluginNativeRender.dylib b/Assets/Plugins/Mac/libGfxPluginNativeRender.dylib index 5c1cd01f54d5e7b134c1a144edd73f1e9a26bd7e..7d520151eeb0b4e317d49c3e3406eeb3e039c110 100755 GIT binary patch delta 8165 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 delta 7508 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 AzyJUM diff --git a/Assets/Plugins/iOS/IUnityGraphics.h b/Assets/Plugins/iOS/IUnityGraphics.h new file mode 100644 index 0000000..eb47f84 --- /dev/null +++ b/Assets/Plugins/iOS/IUnityGraphics.h @@ -0,0 +1,62 @@ +// 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 + kUnityGfxRendererNull = 4, // "null" device (used in batch mode) + //kUnityGfxRendererOpenGLES20 = 8, // OpenGL ES 2.0, removed + kUnityGfxRendererOpenGLES30 = 11, // OpenGL ES 3.0 + //kUnityGfxRendererGXM = 12, // PlayStation Vita, removed + kUnityGfxRendererPS4 = 13, // PlayStation 4 + kUnityGfxRendererXboxOne = 14, // Xbox One + kUnityGfxRendererMetal = 16, // iOS Metal + kUnityGfxRendererOpenGLCore = 17, // OpenGL core + kUnityGfxRendererD3D12 = 18, // Direct3D 12 + kUnityGfxRendererVulkan = 21, // Vulkan + kUnityGfxRendererNvn = 22, // Nintendo Switch NVN API + 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 +{ + kUnityGfxDeviceEventInitialize = 0, + kUnityGfxDeviceEventShutdown = 1, + kUnityGfxDeviceEventBeforeReset = 2, + kUnityGfxDeviceEventAfterReset = 3, +} UnityGfxDeviceEventType; + +typedef void (UNITY_INTERFACE_API * IUnityGraphicsDeviceEventCallback)(UnityGfxDeviceEventType eventType); + +// Should only be used on the rendering thread unless noted otherwise. +UNITY_DECLARE_INTERFACE(IUnityGraphics) +{ + UnityGfxRenderer(UNITY_INTERFACE_API * GetRenderer)(); // Thread safe + + // This callback will be called when graphics device is created, destroyed, reset, etc. + // It is possible to miss the kUnityGfxDeviceEventInitialize event in case plugin is loaded at a later time, + // when the graphics device is already created. + void(UNITY_INTERFACE_API * RegisterDeviceEventCallback)(IUnityGraphicsDeviceEventCallback callback); + void(UNITY_INTERFACE_API * UnregisterDeviceEventCallback)(IUnityGraphicsDeviceEventCallback callback); + int(UNITY_INTERFACE_API * ReserveEventIDRange)(int count); // reserves 'count' event IDs. Plugins should use the result as a base index when issuing events back and forth to avoid event id clashes. +}; +UNITY_REGISTER_INTERFACE_GUID(0x7CBA0A9CA4DDB544ULL, 0x8C5AD4926EB17B11ULL, IUnityGraphics) + + +// Certain Unity APIs (GL.IssuePluginEvent, CommandBuffer.IssuePluginEvent) can callback into native plugins. +// Provide them with an address to a function of this signature. +typedef void (UNITY_INTERFACE_API * UnityRenderingEvent)(int eventId); +typedef void (UNITY_INTERFACE_API * UnityRenderingEventAndData)(int eventId, void* data); diff --git a/Assets/Plugins/iOS/IUnityGraphics.h.meta b/Assets/Plugins/iOS/IUnityGraphics.h.meta new file mode 100644 index 0000000..bb78456 --- /dev/null +++ b/Assets/Plugins/iOS/IUnityGraphics.h.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: DnxM43+uBi5PTN+VjLUhJiqWT35vZ3X/qYGSh1s9ygOCPHX7gp770Po= +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/RegisterPlugin.mm b/Assets/Plugins/iOS/RegisterPlugin.mm new file mode 100644 index 0000000..d96880c --- /dev/null +++ b/Assets/Plugins/iOS/RegisterPlugin.mm @@ -0,0 +1,21 @@ +#import "UnityAppController.h" +#include "IUnityGraphics.h" + +extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityPluginLoad(IUnityInterfaces* unityInterfaces); +extern "C" void UNITY_INTERFACE_EXPORT UNITY_INTERFACE_API UnityPluginUnload(); + +@interface MyAppController : UnityAppController +{ +} +- (void)shouldAttachRenderDelegate; +@end +@implementation MyAppController +- (void)shouldAttachRenderDelegate +{ + // unlike desktops where plugin dynamic library is automatically loaded and registered + // we need to do that manually on iOS + UnityRegisterRenderingPluginV5(&UnityPluginLoad, &UnityPluginUnload); +} + +@end +IMPL_APP_CONTROLLER_SUBCLASS(MyAppController); diff --git a/Assets/Plugins/iOS/RegisterPlugin.mm.meta b/Assets/Plugins/iOS/RegisterPlugin.mm.meta new file mode 100644 index 0000000..e60ce08 --- /dev/null +++ b/Assets/Plugins/iOS/RegisterPlugin.mm.meta @@ -0,0 +1,73 @@ +fileFormatVersion: 2 +guid: BykYsCOpBX+d2b+9FYpH4sRtQQWfzWt//qzo8usCE85bX6WDY31ZgjI= +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 1 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/libGfxPluginNativeRender.a.meta b/Assets/Plugins/iOS/libGfxPluginNativeRender.a.meta index 546715d..65b987b 100644 --- a/Assets/Plugins/iOS/libGfxPluginNativeRender.a.meta +++ b/Assets/Plugins/iOS/libGfxPluginNativeRender.a.meta @@ -67,7 +67,7 @@ PluginImporter: AddToEmbeddedBinaries: false CPU: ARM64 CompileFlags: - FrameworkDependencies: + FrameworkDependencies: Metal;MetalKit; userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Settings/Mobile/Mobile_High_Renderer.asset b/Assets/Settings/Mobile/Mobile_High_Renderer.asset index 15b1a71..dd7473b 100644 --- a/Assets/Settings/Mobile/Mobile_High_Renderer.asset +++ b/Assets/Settings/Mobile/Mobile_High_Renderer.asset @@ -83,7 +83,7 @@ MonoBehaviour: - {fileID: 1342351342872651138} - {fileID: 6446168921458335383} m_RendererFeatureMap: bc3f630842f2e70dd6a559c442a94bfd4529d15534f2d3de228858dca8d12222f0f17d10860a28157820480586dae7578265b12b6ffda01297deaf157b647559 - m_UseNativeRenderPass: 0 + m_UseNativeRenderPass: 1 postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} shaders: blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} diff --git a/NativeRenderPlugin/RenderAPI_Metal.mm b/NativeRenderPlugin/RenderAPI_Metal.mm index 9bc1dfa..e8d4acf 100644 --- a/NativeRenderPlugin/RenderAPI_Metal.mm +++ b/NativeRenderPlugin/RenderAPI_Metal.mm @@ -78,7 +78,7 @@ void RenderAPI_Metal::initSupportFeature() void RenderAPI_Metal::spatialUpScale(void* data) { - if (@available(iOS 16, macOS 13, *)) + // if (@available(iOS 16, macOS 13, *)) { struct DataPack { @@ -93,9 +93,8 @@ void RenderAPI_Metal::spatialUpScale(void* data) id device = metal_graphics->MetalDevice(); id cmd = (id)metal_graphics->CurrentCommandBuffer(); - metal_graphics->EndCurrentCommandEncoder(); + // metal_graphics->EndCurrentCommandEncoder(); cmd.label = @"Upscale Command Buffer"; - if (mfx_spatial_scaler == nil ) { MTLFXSpatialScalerDescriptor* desc = [[MTLFXSpatialScalerDescriptor alloc]init]; @@ -128,34 +127,34 @@ void RenderAPI_Metal::spatialUpScale(void* data) return; } mfx_spatial_scaler.colorTexture = srctex; - mfx_spatial_scaler.outputTexture = outTexture; + mfx_spatial_scaler.outputTexture = dsttex; - mfx_spatial_scaler.inputContentWidth = [srctex width]; - mfx_spatial_scaler.inputContentHeight = [srctex height]; + // mfx_spatial_scaler.inputContentWidth = [srctex width]; + // mfx_spatial_scaler.inputContentHeight = [srctex height]; // if(!cmd) // { - // id upscaleCommandBuffer = [commandQueue commandBuffer]; - // upscaleCommandBuffer.label = @"Upscale Command Buffer"; - // [mfx_spatial_scaler encodeToCommandBuffer:upscaleCommandBuffer]; - // [upscaleCommandBuffer commit]; + id upscaleCommandBuffer = [commandQueue commandBuffer]; + upscaleCommandBuffer.label = @"Upscale Command Buffer"; + [mfx_spatial_scaler encodeToCommandBuffer:upscaleCommandBuffer]; + [upscaleCommandBuffer commit]; - // id textureCommandBuffer = [commandQueue commandBuffer]; - // id _mfxSpatialEncoder =[textureCommandBuffer blitCommandEncoder]; + // id textureCommandBuffer = [commandQueue commandBuffer]; + // id _mfxSpatialEncoder =[textureCommandBuffer blitCommandEncoder]; - // [_mfxSpatialEncoder copyFromTexture: outTexture toTexture: dsttex]; - // [_mfxSpatialEncoder endEncoding]; - // [textureCommandBuffer commit]; + // [_mfxSpatialEncoder copyFromTexture: outTexture toTexture: dsttex]; + // [_mfxSpatialEncoder endEncoding]; + // [textureCommandBuffer commit]; // } // else { - [mfx_spatial_scaler encodeToCommandBuffer:cmd]; + // [mfx_spatial_scaler encodeToCommandBuffer:cmd]; // [cmd commit]; // id textureCommandBuffer = [commandQueue commandBuffer]; - id _mfxSpatialEncoder =[textureCommandBuffer blitCommandEncoder]; + // id _mfxSpatialEncoder =[textureCommandBuffer blitCommandEncoder]; - [_mfxSpatialEncoder copyFromTexture: outTexture toTexture: dsttex]; - [_mfxSpatialEncoder endEncoding]; + // [_mfxSpatialEncoder copyFromTexture: outTexture toTexture: dsttex]; + // [_mfxSpatialEncoder endEncoding]; // [textureCommandBuffer commit]; } diff --git a/NativeRenderPlugin/RenderingPlugin.cpp b/NativeRenderPlugin/RenderingPlugin.cpp index d6c5ead..a42d5a2 100644 --- a/NativeRenderPlugin/RenderingPlugin.cpp +++ b/NativeRenderPlugin/RenderingPlugin.cpp @@ -71,6 +71,7 @@ static void UNITY_INTERFACE_API OnGraphicsDeviceEvent(UnityGfxDeviceEventType ev if (eventType == kUnityGfxDeviceEventInitialize) { assert(s_current_api == NULL); + unityLog("kUnityGfxDeviceEventInitialize"); s_device_type = s_graphics->GetRenderer(); s_current_api = createRenderAPI(s_device_type); } @@ -114,10 +115,10 @@ enum NativeRenderingEvent static void UNITY_INTERFACE_API OnRenderEventAndData(int eventID, void *data) { + // unityLog("OnRenderEventAndData0"); // Unknown / unsupported graphics device type? Do nothing if (s_current_api == NULL) return; - switch ((NativeRenderingEvent)eventID) { case NativeRenderingEvent::EnableVRS: diff --git a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/SuperRendering/SR/Scripts/MetalFx.cs b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/SuperRendering/SR/Scripts/MetalFx.cs index 96e37c3..d9e9d35 100644 --- a/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/SuperRendering/SR/Scripts/MetalFx.cs +++ b/Packages/com.unity.render-pipelines.universal@14.0.11/Runtime/SuperRendering/SR/Scripts/MetalFx.cs @@ -69,18 +69,17 @@ namespace X.Rendering.Feature lastQuality = quality; } ptr->dst = destination.rt.GetNativeTexturePtr(); - [DllImport("__Internal", EntryPoint = "callMetalFX_SpatialScaling")] - static extern void CallNativeMethod(IntPtr srcTexture, IntPtr dstTexture); - // cmd.SetRenderTarget(destination, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.DontCare); - CallNativeMethod(source.rt.GetNativeTexturePtr(), destination.rt.GetNativeTexturePtr()); - //cmd.Blit(dstRT, destination); - //cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.SpatialUpScale, dataPtr); + //[DllImport("__Internal", EntryPoint = "callMetalFX_SpatialScaling")] + //static extern void CallNativeMethod(IntPtr srcTexture, IntPtr dstTexture); + //CallNativeMethod(source.rt.GetNativeTexturePtr(), destination.rt.GetNativeTexturePtr()); + cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.SpatialUpScale, dataPtr); //cmd.Blit(dstRT, destination); } //cmd.SetRenderTarget(destination, RenderBufferLoadAction.DontCare, RenderBufferStoreAction.Store); //cmd.IssuePluginEventAndData(RenderingPlugin.GetRenderEventAndDataFunc(), (int)RenderingPlugin.NativeRenderingEvent.SpatialUpScale, dataPtr); - //SuperResolutionParamSets.Instance.RenderContext.ExecuteCommandBuffer(cmd); + SuperResolutionParamSets.Instance.RenderContext.ExecuteCommandBuffer(cmd); + cmd.Clear(); //CommandBufferPool.Release(cmd); } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 3a895e1..5f1f572 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -10,7 +10,7 @@ PlayerSettings: AndroidFilterTouchesWhenObscured: 0 AndroidEnableSustainedPerformanceMode: 0 defaultScreenOrientation: 3 - targetDevice: 2 + targetDevice: 0 useOnDemandResources: 0 accelerometerFrequency: 60 companyName: DefaultCompany @@ -1088,7 +1088,8 @@ PlayerSettings: Standalone: 0 il2cppCompilerConfiguration: {} il2cppCodeGeneration: {} - managedStrippingLevel: {} + managedStrippingLevel: + iPhone: 1 incrementalIl2cppBuild: {} suppressCommonWarnings: 1 allowUnsafeCode: 1 diff --git a/UserSettings/Layouts/default-2022.dwlt b/UserSettings/Layouts/default-2022.dwlt index 616fda4..c66d75e 100644 --- a/UserSettings/Layouts/default-2022.dwlt +++ b/UserSettings/Layouts/default-2022.dwlt @@ -43,7 +43,7 @@ MonoBehaviour: width: 1920 height: 954 m_ShowMode: 4 - m_Title: Console + m_Title: Game m_RootView: {fileID: 13} m_MinSize: {x: 875, y: 321} m_MaxSize: {x: 10000, y: 10000} @@ -97,7 +97,7 @@ MonoBehaviour: m_MinSize: {x: 640, y: 601} m_MaxSize: {x: 4000, y: 4021} vertical: 0 - controlID: 2099 + controlID: 14 draggingID: 0 --- !u!114 &5 MonoBehaviour: @@ -150,7 +150,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 50} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 18 + controlID: 123 draggingID: 0 --- !u!114 &7 MonoBehaviour: @@ -202,7 +202,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 50} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 120 + controlID: 226 draggingID: 0 --- !u!114 &9 MonoBehaviour: @@ -228,7 +228,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 100} m_MaxSize: {x: 24288, y: 16192} vertical: 0 - controlID: 16 + controlID: 121 draggingID: 0 --- !u!114 &10 MonoBehaviour: @@ -403,7 +403,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 100} m_MaxSize: {x: 16192, y: 16192} vertical: 1 - controlID: 17 + controlID: 122 draggingID: 0 --- !u!114 &17 MonoBehaviour: @@ -958,9 +958,9 @@ MonoBehaviour: m_IsLocked: 0 m_FolderTreeState: scrollPos: {x: 0, y: 37} - m_SelectedIDs: 76ba0000 - m_LastClickedID: 47734 - m_ExpandedIDs: 0000000074b7000076b7000078b7000000ca9a3bffffff7f + m_SelectedIDs: 4ebb0000 + m_LastClickedID: 47950 + m_ExpandedIDs: 000000004cb800004eb8000050b8000000ca9a3bffffff7f m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -988,7 +988,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 0000000074b7000076b7000078b70000 + m_ExpandedIDs: 000000004cb800004eb8000050b80000 m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -1015,7 +1015,7 @@ MonoBehaviour: m_ListAreaState: m_SelectedInstanceIDs: m_LastClickedInstanceID: 0 - m_HadKeyboardFocusLastEvent: 1 + m_HadKeyboardFocusLastEvent: 0 m_ExpandedInstanceIDs: c6230000000000005aca0000 m_RenameOverlay: m_UserAcceptedRename: 0 @@ -1130,7 +1130,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: f263feff9264feff72d6feffb6ecfeff56edfeff365fffff4cfaffff + m_ExpandedIDs: 4cfaffff m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: