diff --git a/Assets/uDesktopDuplication/Examples/Scenes/Buffer.unity b/Assets/uDesktopDuplication/Examples/Scenes/Buffer.unity new file mode 100644 index 0000000..53304b8 --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Scenes/Buffer.unity @@ -0,0 +1,258 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + 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: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &15787040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 15787043} + - component: {fileID: 15787042} + - component: {fileID: 15787041} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &15787041 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 15787040} + m_Enabled: 1 +--- !u!20 &15787042 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 15787040} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &15787043 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 15787040} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &423308485 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 423308487} + - component: {fileID: 423308486} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &423308486 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 423308485} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + 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_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &423308487 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 423308485} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/Assets/uDesktopDuplication/Examples/Scenes/Buffer.unity.meta b/Assets/uDesktopDuplication/Examples/Scenes/Buffer.unity.meta new file mode 100644 index 0000000..ba54af8 --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Scenes/Buffer.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 36c8d626679d64b46b75b9f1a2923647 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Examples/Scenes/GetPixels.unity b/Assets/uDesktopDuplication/Examples/Scenes/GetPixels.unity index 4d04895..600ca9a 100644 --- a/Assets/uDesktopDuplication/Examples/Scenes/GetPixels.unity +++ b/Assets/uDesktopDuplication/Examples/Scenes/GetPixels.unity @@ -13,7 +13,7 @@ OcclusionCullingSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 8 + serializedVersion: 9 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -38,7 +38,8 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} + m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 @@ -54,11 +55,10 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 9 + serializedVersion: 10 m_Resolution: 2 m_BakeResolution: 40 - m_TextureWidth: 1024 - m_TextureHeight: 1024 + m_AtlasSize: 1024 m_AO: 0 m_AOMaxDistance: 1 m_CompAOExponent: 1 @@ -77,15 +77,18 @@ LightmapSettings: m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 - m_PVRFiltering: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 m_PVRFilteringMode: 1 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousColorSigma: 1 - m_PVRFilteringAtrousNormalSigma: 1 - m_PVRFilteringAtrousPositionSigma: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 m_LightingDataAsset: {fileID: 0} m_UseShadowmask: 0 --- !u!196 &4 @@ -107,13 +110,15 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + debug: + m_Flags: 0 m_NavMeshData: {fileID: 0} --- !u!1 &129126780 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + serializedVersion: 6 m_Component: - component: {fileID: 129126782} - component: {fileID: 129126781} @@ -127,7 +132,7 @@ GameObject: --- !u!108 &129126781 Light: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 129126780} m_Enabled: 1 @@ -154,22 +159,9 @@ Light: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 4 + m_LightShadowCasterMode: 0 m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 - m_FalloffTable: - m_Table[0]: 0 - m_Table[1]: 0 - m_Table[2]: 0 - m_Table[3]: 0 - m_Table[4]: 0 - m_Table[5]: 0 - m_Table[6]: 0 - m_Table[7]: 0 - m_Table[8]: 0 - m_Table[9]: 0 - m_Table[10]: 0 - m_Table[11]: 0 - m_Table[12]: 0 m_ColorTemperature: 6570 m_UseColorTemperature: 0 m_ShadowRadius: 0 @@ -177,7 +169,7 @@ Light: --- !u!4 &129126782 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 129126780} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} @@ -187,80 +179,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &913398332 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 1000012642892690, guid: de6f36e446e5e8a48bf61fe198985bb4, - type: 2} - m_PrefabInternal: {fileID: 940835900} - serializedVersion: 5 - m_Component: - - component: {fileID: 913398335} - - component: {fileID: 913398334} - - component: {fileID: 913398333} - - component: {fileID: 1426812830} - m_Layer: 0 - m_Name: Monitor Board - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &913398333 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 23000011974915108, guid: de6f36e446e5e8a48bf61fe198985bb4, - type: 2} - m_PrefabInternal: {fileID: 940835900} - m_GameObject: {fileID: 913398332} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: c181d333a7bee7a44b94c0f4e02c4bd4, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - 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 ---- !u!33 &913398334 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 33000012841683532, guid: de6f36e446e5e8a48bf61fe198985bb4, - type: 2} - m_PrefabInternal: {fileID: 940835900} - m_GameObject: {fileID: 913398332} - m_Mesh: {fileID: 4300002, guid: d6b30b913257fee4d8246bf7a2620fcd, type: 3} ---- !u!4 &913398335 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 4000011474108562, guid: de6f36e446e5e8a48bf61fe198985bb4, - type: 2} - m_PrefabInternal: {fileID: 940835900} - m_GameObject: {fileID: 913398332} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 10} - m_LocalScale: {x: 1.92, y: 1.08, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &940835900 Prefab: m_ObjectHideFlags: 0 @@ -301,15 +219,14 @@ Prefab: value: 2 objectReference: {fileID: 0} m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: de6f36e446e5e8a48bf61fe198985bb4, type: 2} - m_RootGameObject: {fileID: 913398332} - m_IsPrefabParent: 0 + m_SourcePrefab: {fileID: 100100000, guid: de6f36e446e5e8a48bf61fe198985bb4, type: 2} + m_IsPrefabAsset: 0 --- !u!1 &1324913475 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + serializedVersion: 6 m_Component: - component: {fileID: 1324913479} - component: {fileID: 1324913478} @@ -326,15 +243,17 @@ GameObject: --- !u!23 &1324913476 MeshRenderer: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1324913475} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_DynamicOccludee: 1 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 4294967295 m_Materials: - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_StaticBatchInfo: @@ -347,6 +266,7 @@ MeshRenderer: m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_StitchLightmapSeams: 0 m_SelectedEditorRenderState: 3 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 @@ -358,28 +278,28 @@ MeshRenderer: --- !u!64 &1324913477 MeshCollider: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1324913475} m_Material: {fileID: 0} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Convex: 0 - m_InflateMesh: 0 + m_CookingOptions: 14 m_SkinWidth: 0.01 m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!33 &1324913478 MeshFilter: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1324913475} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!4 &1324913479 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1324913475} m_LocalRotation: {x: 0, y: -0.7071068, z: 0.7071068, w: 0} @@ -392,7 +312,7 @@ Transform: --- !u!114 &1324913480 MonoBehaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1324913475} m_Enabled: 1 @@ -403,30 +323,21 @@ MonoBehaviour: uddTexture: {fileID: 1426812830} x: 100 y: 100 + w: 32 + h: 64 texture: {fileID: 0} ---- !u!114 &1426812830 +--- !u!114 &1426812830 stripped MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 114000012274256594, guid: de6f36e446e5e8a48bf61fe198985bb4, + m_CorrespondingSourceObject: {fileID: 114000012274256594, guid: de6f36e446e5e8a48bf61fe198985bb4, type: 2} m_PrefabInternal: {fileID: 940835900} - m_GameObject: {fileID: 913398332} - m_Enabled: 1 - m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: bb54a34570e4747429b1c5b66c69d356, type: 3} - m_Name: - m_EditorClassIdentifier: - invertX_: 0 - invertY_: 0 - useClip_: 0 - clipPos: {x: 0, y: 0} - clipScale: {x: 0.2, y: 0.2} --- !u!1 &1446288312 GameObject: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - serializedVersion: 5 + serializedVersion: 6 m_Component: - component: {fileID: 1446288317} - component: {fileID: 1446288316} @@ -443,34 +354,38 @@ GameObject: --- !u!81 &1446288313 AudioListener: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1446288312} m_Enabled: 1 --- !u!124 &1446288314 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1446288312} m_Enabled: 1 --- !u!92 &1446288315 Behaviour: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1446288312} m_Enabled: 1 --- !u!20 &1446288316 Camera: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1446288312} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -492,15 +407,15 @@ Camera: 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!4 &1446288317 Transform: m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1446288312} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} diff --git a/Assets/uDesktopDuplication/Examples/Scripts/BufferExample.cs b/Assets/uDesktopDuplication/Examples/Scripts/BufferExample.cs new file mode 100644 index 0000000..ad60fbb --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Scripts/BufferExample.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +public class BufferExample : MonoBehaviour +{ + [SerializeField] + uDesktopDuplication.Texture uddTexture; + + Texture2D texture_; + Color32[] pixels_; + GCHandle handle_; + IntPtr ptr_ = IntPtr.Zero; + + [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = false)] + public static extern IntPtr memcpy(IntPtr dest, IntPtr src, int count); + + void Start() + { + if (!uddTexture) return; + + uddTexture.monitor.useGetPixels = true; + UpdateTexture(); + } + + void OnDestroy() + { + if (ptr_ != IntPtr.Zero) { + handle_.Free(); + } + } + + void Update() + { + if (!uddTexture) return; + + if (uddTexture.monitor.width != texture_.width || + uddTexture.monitor.height != texture_.height) { + UpdateTexture(); + } + + CopyTexture(); + } + + void UpdateTexture() + { + var width = uddTexture.monitor.width; + var height = uddTexture.monitor.height; + + // TextureFormat.BGRA32 should be set but it causes an error now. + texture_ = new Texture2D(width, height, TextureFormat.RGBA32, false); + texture_.filterMode = FilterMode.Bilinear; + pixels_ = texture_.GetPixels32(); + handle_ = GCHandle.Alloc(pixels_, GCHandleType.Pinned); + ptr_ = handle_.AddrOfPinnedObject(); + + GetComponent().material.mainTexture = texture_; + } + + void CopyTexture() + { + var buffer = uddTexture.monitor.buffer; + if (buffer == IntPtr.Zero) return; + + var width = uddTexture.monitor.width; + var height = uddTexture.monitor.height; + memcpy(ptr_, buffer, width * height * sizeof(Byte) * 4); + + texture_.SetPixels32(pixels_); + texture_.Apply(); + } +} diff --git a/Assets/uDesktopDuplication/Examples/Scripts/BufferExample.cs.meta b/Assets/uDesktopDuplication/Examples/Scripts/BufferExample.cs.meta new file mode 100644 index 0000000..5b8a347 --- /dev/null +++ b/Assets/uDesktopDuplication/Examples/Scripts/BufferExample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bbc456c8248acd46976392616f32f8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/uDesktopDuplication/Examples/Scripts/GetPixelsExample.cs b/Assets/uDesktopDuplication/Examples/Scripts/GetPixelsExample.cs index a7d33b0..7cc174c 100644 --- a/Assets/uDesktopDuplication/Examples/Scripts/GetPixelsExample.cs +++ b/Assets/uDesktopDuplication/Examples/Scripts/GetPixelsExample.cs @@ -6,27 +6,38 @@ public class GetPixelsExample : MonoBehaviour [SerializeField] int x = 100; [SerializeField] int y = 100; - const int width = 64; - const int height = 32; + [SerializeField] int w = 64; + [SerializeField] int h = 32; public Texture2D texture; - Color32[] colors = new Color32[width * height]; + Color32[] colors; + + void CreateTextureIfNeeded() + { + if (!texture || texture.width != w || texture.height != h) + { + colors = new Color32[w * h]; + texture = new Texture2D(w, h, TextureFormat.ARGB32, false); + GetComponent().material.mainTexture = texture; + } + } void Start() { - texture = new Texture2D(width, height, TextureFormat.ARGB32, false); - GetComponent().material.mainTexture = texture; + CreateTextureIfNeeded(); } void Update() { + CreateTextureIfNeeded(); + // must be called (performance will be slightly down). uDesktopDuplication.Manager.primary.useGetPixels = true; var monitor = uddTexture.monitor; if (!monitor.hasBeenUpdated) return; - if (monitor.GetPixels(colors, x, y, width, height)) { + if (monitor.GetPixels(colors, x, y, w, h)) { texture.SetPixels32(colors); texture.Apply(); } diff --git a/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86/uDesktopDuplication.dll index 2b7407a..9a4a39e 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_64/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll index 8ecda3d..3a23a14 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/Scripts/Lib.cs b/Assets/uDesktopDuplication/Scripts/Lib.cs index 88cb866..a9f6a1f 100644 --- a/Assets/uDesktopDuplication/Scripts/Lib.cs +++ b/Assets/uDesktopDuplication/Scripts/Lib.cs @@ -169,6 +169,8 @@ public static class Lib [DllImport("uDesktopDuplication", EntryPoint = "GetPixels")] private static extern bool GetPixels_Internal(int id, System.IntPtr ptr, int x, int y, int width, int height); [DllImport("uDesktopDuplication")] + public static extern IntPtr GetBuffer(int id); + [DllImport("uDesktopDuplication")] public static extern bool HasBeenUpdated(int id); [DllImport("uDesktopDuplication")] public static extern bool UseGetPixels(int id, bool use); diff --git a/Assets/uDesktopDuplication/Scripts/Monitor.cs b/Assets/uDesktopDuplication/Scripts/Monitor.cs index 588907b..99d0f58 100644 --- a/Assets/uDesktopDuplication/Scripts/Monitor.cs +++ b/Assets/uDesktopDuplication/Scripts/Monitor.cs @@ -238,6 +238,11 @@ public class Monitor get { return Lib.GetDirtyRects(id); } } + public System.IntPtr buffer + { + get { return Lib.GetBuffer(id); } + } + public bool hasBeenUpdated { get { return Lib.HasBeenUpdated(id); } diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp index e1c0f98..1612063 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.cpp @@ -499,3 +499,14 @@ bool Monitor::GetPixels(BYTE* output, int x, int y, int width, int height) return true; } + + +BYTE* Monitor::GetBuffer() const +{ + if (!bufferForGetPixels_) + { + Debug::Error("Monitor::GetBuffer() => CopyTextureFromGpuToCpu() has not been called yet."); + return nullptr; + } + return bufferForGetPixels_.Get(); +} diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h index bb6754f..4fb48c7 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Monitor.h @@ -53,6 +53,7 @@ public: void UseGetPixels(bool use); bool UseGetPixels() const; bool GetPixels(BYTE* output, int x, int y, int width, int height); + BYTE* GetBuffer() const; private: void CopyTextureFromGpuToCpu(ID3D11Texture2D* texture); diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 2b49910..c7cd400 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -366,7 +366,7 @@ extern "C" return 0; } - UNITY_INTERFACE_EXPORT void* UNITY_INTERFACE_API GetMoveRects(int id) + UNITY_INTERFACE_EXPORT DXGI_OUTDUPL_MOVE_RECT* UNITY_INTERFACE_API GetMoveRects(int id) { if (!g_manager) return nullptr; if (auto monitor = g_manager->GetMonitor(id)) @@ -386,7 +386,7 @@ extern "C" return 0; } - UNITY_INTERFACE_EXPORT void* UNITY_INTERFACE_API GetDirtyRects(int id) + UNITY_INTERFACE_EXPORT RECT* UNITY_INTERFACE_API GetDirtyRects(int id) { if (!g_manager) return nullptr; if (auto monitor = g_manager->GetMonitor(id)) @@ -398,7 +398,7 @@ extern "C" UNITY_INTERFACE_EXPORT bool UNITY_INTERFACE_API GetPixels(int id, BYTE* output, int x, int y, int width, int height) { - if (!g_manager) return nullptr; + if (!g_manager) return false; if (auto monitor = g_manager->GetMonitor(id)) { return monitor->GetPixels(output, x, y, width, height); @@ -406,6 +406,16 @@ extern "C" return false; } + UNITY_INTERFACE_EXPORT BYTE* UNITY_INTERFACE_API GetBuffer(int id) + { + if (!g_manager) return nullptr; + if (auto monitor = g_manager->GetMonitor(id)) + { + return monitor->GetBuffer(); + } + return nullptr; + } + UNITY_INTERFACE_EXPORT bool UNITY_INTERFACE_API HasBeenUpdated(int id) { if (!g_manager) return nullptr;