diff --git a/.gitignore b/.gitignore index a72ac79..0f623f5 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,8 @@ /[Bb]uild/ /[Ww]iki/ /[Mm]isc/ +/UnityPackageManager +/Packages # Autogenerated VS/MD solution and project files *.csproj @@ -28,3 +30,4 @@ sysinfo.txt /Assets/AssetStoreTools* /Assets/Extensions* /uDesktopDuplication.log +.vs diff --git a/Assets/uDesktopDuplication/Materials/uDD_Screen_Unlit.mat b/Assets/uDesktopDuplication/Materials/uDD_Screen_Unlit.mat index 0708fc8..6822025 100644 --- a/Assets/uDesktopDuplication/Materials/uDD_Screen_Unlit.mat +++ b/Assets/uDesktopDuplication/Materials/uDD_Screen_Unlit.mat @@ -8,84 +8,51 @@ Material: m_PrefabInternal: {fileID: 0} m_Name: uDD_Screen_Unlit m_Shader: {fileID: 4800000, guid: 2ca7b38c676bddd439a77a646a279a54, type: 3} - m_ShaderKeywords: _CULL_BACK _EMISSION _FORWARD_Z _USEBEND_ON + m_ShaderKeywords: _CULL_BACK _EMISSION _FORWARD_Y _USEBEND_ON m_LightmapFlags: 1 - m_EnableInstancingVariants: 0 m_CustomRenderQueue: -1 stringTagMap: {} - disabledShaderPasses: [] m_SavedProperties: - serializedVersion: 3 + serializedVersion: 2 m_TexEnvs: - - _BumpMap: + - first: + name: + second: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} - - _CursorTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: + - first: + name: _MainTex + second: m_Texture: {fileID: 0} m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Floats: - - PixelSnap: 0 - - _Bend: 0 - - _BumpScale: 1 - - _Cull: 2 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _Forward: 1 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _InvFade: 1 - - _InvertX: 1 - - _InvertY: 0 - - _Mask: 0.653 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _Radius: 10 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _Thickness: 1 - - _UVSec: 0 - - _UseBend: 0 - - _Width: 1 - - _ZWrite: 1 + - first: + name: + second: 0 + - first: + name: _Bend + second: 0 + - first: + name: _Cull + second: 2 + - first: + name: _Forward + second: 0 + - first: + name: _Radius + second: 30 + - first: + name: _Thickness + second: 1 + - first: + name: _Width + second: 1 m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - first: + name: + second: {r: 0, g: 1.3912242e-34, b: 0, a: 1.3912168e-34} + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll index e53766a..a45e3e6 100644 Binary files a/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll and b/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll differ diff --git a/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll.meta b/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll.meta index 195a84f..818bdc6 100644 --- a/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll.meta +++ b/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll.meta @@ -25,6 +25,12 @@ PluginImporter: Exclude OSXUniversal: 0 Exclude Win: 0 Exclude Win64: 1 + data: + first: + '': data + second: + enabled: 0 + settings: {} data: first: Android: Android @@ -37,7 +43,17 @@ PluginImporter: Any: second: enabled: 1 - settings: {} + settings: + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 1 data: first: Editor: Editor @@ -46,7 +62,13 @@ PluginImporter: settings: CPU: x86 DefaultValueInitialized: true - OS: Windows + OS: AnyOS + data: + first: + Facebook: WebGL + second: + enabled: 1 + settings: {} data: first: Facebook: Win @@ -117,6 +139,12 @@ PluginImporter: enabled: 0 settings: CPU: None + data: + first: + WebGL: WebGL + second: + enabled: 1 + settings: {} userData: assetBundleName: assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll index ad16881..eb1feaa 100644 Binary files a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll and b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll differ diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll.meta b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll.meta index 9ebde99..e12db88 100644 --- a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll.meta +++ b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll.meta @@ -9,20 +9,66 @@ PluginImporter: isPreloaded: 0 isOverridable: 0 platformData: + data: + first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude Win: 1 + Exclude Win64: 0 + data: + first: + '': data + second: + enabled: 0 + settings: {} + data: + first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 data: first: Any: second: enabled: 1 - settings: {} + settings: + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXIntel: 0 + Exclude OSXIntel64: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 0 + Exclude Win: 1 + Exclude Win64: 0 data: first: Editor: Editor second: - enabled: 0 + enabled: 1 settings: CPU: x86_64 DefaultValueInitialized: true + OS: AnyOS + data: + first: + Facebook: WebGL + second: + enabled: 1 + settings: {} data: first: Facebook: Win @@ -41,7 +87,7 @@ PluginImporter: first: Standalone: Linux second: - enabled: 0 + enabled: 1 settings: CPU: None data: @@ -57,12 +103,12 @@ PluginImporter: second: enabled: 1 settings: - CPU: x86_64 + CPU: AnyCPU data: first: Standalone: OSXIntel second: - enabled: 0 + enabled: 1 settings: CPU: None data: @@ -76,9 +122,9 @@ PluginImporter: first: Standalone: OSXUniversal second: - enabled: 0 + enabled: 1 settings: - CPU: x86_64 + CPU: AnyCPU data: first: Standalone: Win @@ -93,6 +139,12 @@ PluginImporter: enabled: 1 settings: CPU: AnyCPU + data: + first: + WebGL: WebGL + second: + enabled: 1 + settings: {} userData: assetBundleName: assetBundleVariant: diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp index 93c29a6..a3d5180 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Duplicator.cpp @@ -134,6 +134,8 @@ void Duplicator::CheckUnityAdapter() void Duplicator::Start() { + Debug::Log(__FUNCTION__); + if (state_ != State::Ready) return; Stop(); @@ -179,6 +181,8 @@ void Duplicator::Start() void Duplicator::Stop() { + Debug::Log(__FUNCTION__); + shouldRun_ = false; if (thread_.joinable()) @@ -235,6 +239,8 @@ const Duplicator::Frame& Duplicator::GetLastFrame() const void Duplicator::Duplicate(UINT timeout) { + Debug::Log(__FUNCTION__); + if (!dupl_ || !device_) return; ComPtr resource; @@ -347,6 +353,8 @@ void Duplicator::UpdateCursor( const ComPtr& texture, const DXGI_OUTDUPL_FRAME_INFO& frameInfo) { + Debug::Log(__FUNCTION__); + auto& manager = GetMonitorManager(); if (frameInfo.PointerPosition.Visible) @@ -365,6 +373,8 @@ void Duplicator::UpdateCursor( void Duplicator::UpdateMetadata(UINT totalBufferSize) { + Debug::Log(__FUNCTION__); + metaData_.buffer.ExpandIfNeeded(totalBufferSize); if (!metaData_.buffer.Empty()) { @@ -376,6 +386,8 @@ void Duplicator::UpdateMetadata(UINT totalBufferSize) void Duplicator::UpdateMoveRects() { + Debug::Log(__FUNCTION__); + const auto hr = dupl_->GetFrameMoveRects( metaData_.buffer.Size(), metaData_.buffer.As(), @@ -418,6 +430,8 @@ void Duplicator::UpdateMoveRects() void Duplicator::UpdateDirtyRects() { + Debug::Log(__FUNCTION__); + const auto hr = dupl_->GetFrameDirtyRects( metaData_.buffer.Size() - metaData_.moveRectSize, metaData_.buffer.As(metaData_.moveRectSize /* offset */), diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp index a22729f..055cc62 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp @@ -30,6 +30,8 @@ void Monitor::Initialize( const ComPtr &output ) { + Debug::Log(__FUNCTION__); + adapter_ = adapter; output_ = output; @@ -64,12 +66,16 @@ void Monitor::Initialize( void Monitor::Finalize() { + Debug::Log(__FUNCTION__); + StopCapture(); } void Monitor::Render() { + Debug::Log(__FUNCTION__); + const auto& frame = duplicator_->GetLastFrame(); if (frame.id == lastFrameId_) return; @@ -113,6 +119,8 @@ void Monitor::Render() void Monitor::StartCapture() { + Debug::Log(__FUNCTION__); + if (duplicator_->GetState() == DuplicatorState::Ready) { duplicator_->Start(); @@ -122,6 +130,8 @@ void Monitor::StartCapture() void Monitor::StopCapture() { + Debug::Log(__FUNCTION__); + duplicator_->Stop(); } diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp index 20643c9..544d82b 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/MonitorManager.cpp @@ -32,6 +32,8 @@ MonitorManager::~MonitorManager() void MonitorManager::Initialize() { + Debug::Log(__FUNCTION__); + Finalize(); // Get factory @@ -63,6 +65,8 @@ void MonitorManager::Initialize() void MonitorManager::Finalize() { + Debug::Log(__FUNCTION__); + for (const auto& monitor : monitors_) { monitor->Finalize(); @@ -74,6 +78,8 @@ void MonitorManager::Finalize() void MonitorManager::Update() { + Debug::Log(__FUNCTION__); + if (isReinitializationRequired_) { Reinitialize(); @@ -84,6 +90,8 @@ void MonitorManager::Update() void MonitorManager::RequireReinitilization() { + Debug::Log(__FUNCTION__); + Debug::Log("MonitorManager::Reinitialize() was required."); isReinitializationRequired_ = true; } @@ -91,6 +99,8 @@ void MonitorManager::RequireReinitilization() void MonitorManager::Reinitialize() { + Debug::Log(__FUNCTION__); + Debug::Log("MonitorManager::Reinitialize()"); Initialize(); SendMessageToUnity(Message::Reinitialized); diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 73da3c7..2273005 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -35,6 +35,8 @@ extern "C" UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Initialize() { + Debug::Log(__FUNCTION__); + if (g_unity && !g_manager) { Debug::Initialize(); @@ -63,6 +65,8 @@ extern "C" UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Finalize() { + Debug::Log(__FUNCTION__); + if (!g_manager) return; g_manager->Finalize(); @@ -76,6 +80,8 @@ extern "C" void UNITY_INTERFACE_API OnGraphicsDeviceEvent(UnityGfxDeviceEventType event) { + Debug::Log(__FUNCTION__); + switch (event) { case kUnityGfxDeviceEventInitialize: @@ -93,6 +99,8 @@ extern "C" UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API UnityPluginLoad(IUnityInterfaces* unityInterfaces) { + Debug::Log(__FUNCTION__); + g_unity = unityInterfaces; auto unityGraphics = g_unity->Get(); unityGraphics->RegisterDeviceEventCallback(OnGraphicsDeviceEvent); @@ -100,6 +108,8 @@ extern "C" UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API UnityPluginUnload() { + Debug::Log(__FUNCTION__); + auto unityGraphics = g_unity->Get(); unityGraphics->UnregisterDeviceEventCallback(OnGraphicsDeviceEvent); g_unity = nullptr; @@ -107,6 +117,8 @@ extern "C" void UNITY_INTERFACE_API OnRenderEvent(int id) { + Debug::Log(__FUNCTION__); + if (!g_manager) return; if (auto monitor = g_manager->GetMonitor(id)) { @@ -121,18 +133,24 @@ extern "C" UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Reinitialize() { + Debug::Log(__FUNCTION__); + if (!g_manager) return; return g_manager->Reinitialize(); } UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API Update() { + Debug::Log(__FUNCTION__); + if (!g_manager) return; g_manager->Update(); } UNITY_INTERFACE_EXPORT Message UNITY_INTERFACE_API PopMessage() { + Debug::Log(__FUNCTION__); + if (g_messages.empty()) return Message::None; const auto message = g_messages.front(); diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index d74737e..6bb567d 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -3,7 +3,7 @@ --- !u!30 &1 GraphicsSettings: m_ObjectHideFlags: 0 - serializedVersion: 12 + serializedVersion: 9 m_Deferred: m_Mode: 1 m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} @@ -39,24 +39,26 @@ GraphicsSettings: m_PreloadedShaders: [] m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - m_CustomRenderPipeline: {fileID: 0} - m_TransparencySortMode: 0 - m_TransparencySortAxis: {x: 0, y: 0, z: 1} + m_TierSettings_Tier1: + renderingPath: 1 + useCascadedShadowMaps: 1 + m_TierSettings_Tier2: + renderingPath: 1 + useCascadedShadowMaps: 1 + m_TierSettings_Tier3: + renderingPath: 1 + useCascadedShadowMaps: 1 m_DefaultRenderingPath: 1 m_DefaultMobileRenderingPath: 1 m_TierSettings: [] m_LightmapStripping: 0 m_FogStripping: 0 - m_InstancingStripping: 0 m_LightmapKeepPlain: 1 m_LightmapKeepDirCombined: 1 + m_LightmapKeepDirSeparate: 1 m_LightmapKeepDynamicPlain: 1 m_LightmapKeepDynamicDirCombined: 1 - m_LightmapKeepShadowMask: 1 - m_LightmapKeepSubtractive: 1 + m_LightmapKeepDynamicDirSeparate: 1 m_FogKeepLinear: 1 m_FogKeepExp: 1 m_FogKeepExp2: 1 - m_AlbedoSwatchInfos: [] - m_LightsUseLinearIntensity: 0 - m_LightsUseColorTemperature: 0 diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset new file mode 100644 index 0000000..83c80dc Binary files /dev/null and b/ProjectSettings/PresetManager.asset differ