├── .gitignore ├── Assets ├── TextureUpdater.meta └── TextureUpdater │ ├── Example.meta │ ├── Example │ ├── Example.mat │ ├── Example.mat.meta │ ├── SampleScene.unity │ ├── SampleScene.unity.meta │ ├── TextureUpdaterExample.cs │ └── TextureUpdaterExample.cs.meta │ ├── NativeSource~ │ ├── CMake │ │ ├── CMakeLists.txt │ │ └── Emscripten.cmake │ ├── Source │ │ └── Plugin.cpp │ └── Tests │ │ └── PluginTest.cpp │ ├── Plugins.meta │ ├── Plugins │ ├── Android.meta │ ├── Android │ │ ├── armeabi-v7a.meta │ │ ├── armeabi-v7a │ │ │ ├── libTextureUpdater.so │ │ │ └── libTextureUpdater.so.meta │ │ ├── x86.meta │ │ └── x86 │ │ │ ├── libTextureUpdater.so │ │ │ └── libTextureUpdater.so.meta │ ├── OSX.meta │ ├── OSX │ │ ├── TextureUpdater.bundle.meta │ │ └── TextureUpdater.bundle │ │ │ ├── Contents.meta │ │ │ └── Contents │ │ │ ├── Info.plist │ │ │ ├── Info.plist.meta │ │ │ ├── MacOS.meta │ │ │ └── MacOS │ │ │ ├── TextureUpdater │ │ │ └── TextureUpdater.meta │ ├── Windows.meta │ ├── Windows │ │ ├── x86_64.meta │ │ └── x86_64 │ │ │ ├── TextureUpdater.dll │ │ │ └── TextureUpdater.dll.meta │ ├── iOS.meta │ └── iOS │ │ ├── libTextureUpdater.a │ │ └── libTextureUpdater.a.meta │ ├── TextureUpdater.asset │ ├── TextureUpdater.asset.meta │ ├── TextureUpdater.cs │ └── TextureUpdater.cs.meta ├── LICENSE ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset └── VFXManager.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | *.opendb 26 | 27 | # Unity3D generated meta files 28 | *.pidb.meta 29 | *.pdb.meta 30 | 31 | # Unity3D Generated File On Crash Reports 32 | sysinfo.txt 33 | 34 | # Builds 35 | *.apk 36 | *.unitypackage 37 | /.idea/ 38 | /Logs 39 | Assets/Plugins/Editor/JetBrains 40 | JetBrains.meta 41 | Assets/NativePluginBuilder 42 | -------------------------------------------------------------------------------- /Assets/TextureUpdater.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52f3d097d8affa44ab41f73e4298dedd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8844a815113653e44ac393fffcdf6fb6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example/Example.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Example 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example/Example.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df4379de76fd927409f000e7f8aab55b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example/SampleScene.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 0 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_TemporalCoherenceThreshold: 1 54 | m_EnvironmentLightingMode: 0 55 | m_EnableBakedLightmaps: 1 56 | m_EnableRealtimeLightmaps: 0 57 | m_LightmapEditorSettings: 58 | serializedVersion: 10 59 | m_Resolution: 2 60 | m_BakeResolution: 10 61 | m_AtlasSize: 512 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 256 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_ShowResolutionOverlay: 1 92 | m_LightingDataAsset: {fileID: 0} 93 | m_UseShadowmask: 1 94 | --- !u!196 &4 95 | NavMeshSettings: 96 | serializedVersion: 2 97 | m_ObjectHideFlags: 0 98 | m_BuildSettings: 99 | serializedVersion: 2 100 | agentTypeID: 0 101 | agentRadius: 0.5 102 | agentHeight: 2 103 | agentSlope: 45 104 | agentClimb: 0.4 105 | ledgeDropHeight: 0 106 | maxJumpAcrossDistance: 0 107 | minRegionArea: 2 108 | manualCellSize: 0 109 | cellSize: 0.16666667 110 | manualTileSize: 0 111 | tileSize: 256 112 | accuratePlacement: 0 113 | debug: 114 | m_Flags: 0 115 | m_NavMeshData: {fileID: 0} 116 | --- !u!1 &170076733 117 | GameObject: 118 | m_ObjectHideFlags: 0 119 | m_CorrespondingSourceObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 0} 121 | serializedVersion: 6 122 | m_Component: 123 | - component: {fileID: 170076735} 124 | - component: {fileID: 170076734} 125 | m_Layer: 0 126 | m_Name: Directional Light 127 | m_TagString: Untagged 128 | m_Icon: {fileID: 0} 129 | m_NavMeshLayer: 0 130 | m_StaticEditorFlags: 0 131 | m_IsActive: 1 132 | --- !u!108 &170076734 133 | Light: 134 | m_ObjectHideFlags: 0 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInternal: {fileID: 0} 137 | m_GameObject: {fileID: 170076733} 138 | m_Enabled: 1 139 | serializedVersion: 8 140 | m_Type: 1 141 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 142 | m_Intensity: 1 143 | m_Range: 10 144 | m_SpotAngle: 30 145 | m_CookieSize: 10 146 | m_Shadows: 147 | m_Type: 2 148 | m_Resolution: -1 149 | m_CustomResolution: -1 150 | m_Strength: 1 151 | m_Bias: 0.05 152 | m_NormalBias: 0.4 153 | m_NearPlane: 0.2 154 | m_Cookie: {fileID: 0} 155 | m_DrawHalo: 0 156 | m_Flare: {fileID: 0} 157 | m_RenderMode: 0 158 | m_CullingMask: 159 | serializedVersion: 2 160 | m_Bits: 4294967295 161 | m_Lightmapping: 1 162 | m_LightShadowCasterMode: 0 163 | m_AreaSize: {x: 1, y: 1} 164 | m_BounceIntensity: 1 165 | m_ColorTemperature: 6570 166 | m_UseColorTemperature: 0 167 | m_ShadowRadius: 0 168 | m_ShadowAngle: 0 169 | --- !u!4 &170076735 170 | Transform: 171 | m_ObjectHideFlags: 0 172 | m_CorrespondingSourceObject: {fileID: 0} 173 | m_PrefabInternal: {fileID: 0} 174 | m_GameObject: {fileID: 170076733} 175 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 176 | m_LocalPosition: {x: 0, y: 3, z: 0} 177 | m_LocalScale: {x: 1, y: 1, z: 1} 178 | m_Children: [] 179 | m_Father: {fileID: 0} 180 | m_RootOrder: 1 181 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 182 | --- !u!1 &534669902 183 | GameObject: 184 | m_ObjectHideFlags: 0 185 | m_CorrespondingSourceObject: {fileID: 0} 186 | m_PrefabInternal: {fileID: 0} 187 | serializedVersion: 6 188 | m_Component: 189 | - component: {fileID: 534669905} 190 | - component: {fileID: 534669904} 191 | - component: {fileID: 534669903} 192 | m_Layer: 0 193 | m_Name: Main Camera 194 | m_TagString: Untagged 195 | m_Icon: {fileID: 0} 196 | m_NavMeshLayer: 0 197 | m_StaticEditorFlags: 0 198 | m_IsActive: 1 199 | --- !u!81 &534669903 200 | AudioListener: 201 | m_ObjectHideFlags: 0 202 | m_CorrespondingSourceObject: {fileID: 0} 203 | m_PrefabInternal: {fileID: 0} 204 | m_GameObject: {fileID: 534669902} 205 | m_Enabled: 1 206 | --- !u!20 &534669904 207 | Camera: 208 | m_ObjectHideFlags: 0 209 | m_CorrespondingSourceObject: {fileID: 0} 210 | m_PrefabInternal: {fileID: 0} 211 | m_GameObject: {fileID: 534669902} 212 | m_Enabled: 1 213 | serializedVersion: 2 214 | m_ClearFlags: 1 215 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 216 | m_projectionMatrixMode: 1 217 | m_SensorSize: {x: 36, y: 24} 218 | m_LensShift: {x: 0, y: 0} 219 | m_FocalLength: 50 220 | m_NormalizedViewPortRect: 221 | serializedVersion: 2 222 | x: 0 223 | y: 0 224 | width: 1 225 | height: 1 226 | near clip plane: 0.3 227 | far clip plane: 1000 228 | field of view: 60 229 | orthographic: 0 230 | orthographic size: 5 231 | m_Depth: -1 232 | m_CullingMask: 233 | serializedVersion: 2 234 | m_Bits: 4294967295 235 | m_RenderingPath: -1 236 | m_TargetTexture: {fileID: 0} 237 | m_TargetDisplay: 0 238 | m_TargetEye: 3 239 | m_HDR: 1 240 | m_AllowMSAA: 1 241 | m_AllowDynamicResolution: 0 242 | m_ForceIntoRT: 0 243 | m_OcclusionCulling: 1 244 | m_StereoConvergence: 10 245 | m_StereoSeparation: 0.022 246 | --- !u!4 &534669905 247 | Transform: 248 | m_ObjectHideFlags: 0 249 | m_CorrespondingSourceObject: {fileID: 0} 250 | m_PrefabInternal: {fileID: 0} 251 | m_GameObject: {fileID: 534669902} 252 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 253 | m_LocalPosition: {x: 0, y: 0, z: -1.33} 254 | m_LocalScale: {x: 1, y: 1, z: 1} 255 | m_Children: [] 256 | m_Father: {fileID: 0} 257 | m_RootOrder: 0 258 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 259 | --- !u!1 &1554198722 260 | GameObject: 261 | m_ObjectHideFlags: 0 262 | m_CorrespondingSourceObject: {fileID: 0} 263 | m_PrefabInternal: {fileID: 0} 264 | serializedVersion: 6 265 | m_Component: 266 | - component: {fileID: 1554198726} 267 | - component: {fileID: 1554198725} 268 | - component: {fileID: 1554198724} 269 | - component: {fileID: 1554198723} 270 | - component: {fileID: 1554198727} 271 | m_Layer: 0 272 | m_Name: Quad 273 | m_TagString: Untagged 274 | m_Icon: {fileID: 0} 275 | m_NavMeshLayer: 0 276 | m_StaticEditorFlags: 0 277 | m_IsActive: 1 278 | --- !u!64 &1554198723 279 | MeshCollider: 280 | m_ObjectHideFlags: 0 281 | m_CorrespondingSourceObject: {fileID: 0} 282 | m_PrefabInternal: {fileID: 0} 283 | m_GameObject: {fileID: 1554198722} 284 | m_Material: {fileID: 0} 285 | m_IsTrigger: 0 286 | m_Enabled: 1 287 | serializedVersion: 3 288 | m_Convex: 0 289 | m_CookingOptions: 14 290 | m_SkinWidth: 0.01 291 | m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} 292 | --- !u!23 &1554198724 293 | MeshRenderer: 294 | m_ObjectHideFlags: 0 295 | m_CorrespondingSourceObject: {fileID: 0} 296 | m_PrefabInternal: {fileID: 0} 297 | m_GameObject: {fileID: 1554198722} 298 | m_Enabled: 1 299 | m_CastShadows: 1 300 | m_ReceiveShadows: 1 301 | m_DynamicOccludee: 1 302 | m_MotionVectors: 1 303 | m_LightProbeUsage: 1 304 | m_ReflectionProbeUsage: 1 305 | m_RenderingLayerMask: 4294967295 306 | m_Materials: 307 | - {fileID: 2100000, guid: df4379de76fd927409f000e7f8aab55b, type: 2} 308 | m_StaticBatchInfo: 309 | firstSubMesh: 0 310 | subMeshCount: 0 311 | m_StaticBatchRoot: {fileID: 0} 312 | m_ProbeAnchor: {fileID: 0} 313 | m_LightProbeVolumeOverride: {fileID: 0} 314 | m_ScaleInLightmap: 1 315 | m_PreserveUVs: 0 316 | m_IgnoreNormalsForChartDetection: 0 317 | m_ImportantGI: 0 318 | m_StitchLightmapSeams: 0 319 | m_SelectedEditorRenderState: 3 320 | m_MinimumChartSize: 4 321 | m_AutoUVMaxDistance: 0.5 322 | m_AutoUVMaxAngle: 89 323 | m_LightmapParameters: {fileID: 0} 324 | m_SortingLayerID: 0 325 | m_SortingLayer: 0 326 | m_SortingOrder: 0 327 | --- !u!33 &1554198725 328 | MeshFilter: 329 | m_ObjectHideFlags: 0 330 | m_CorrespondingSourceObject: {fileID: 0} 331 | m_PrefabInternal: {fileID: 0} 332 | m_GameObject: {fileID: 1554198722} 333 | m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} 334 | --- !u!4 &1554198726 335 | Transform: 336 | m_ObjectHideFlags: 0 337 | m_CorrespondingSourceObject: {fileID: 0} 338 | m_PrefabInternal: {fileID: 0} 339 | m_GameObject: {fileID: 1554198722} 340 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 341 | m_LocalPosition: {x: 0, y: 0, z: 0} 342 | m_LocalScale: {x: 1, y: 1, z: 1} 343 | m_Children: [] 344 | m_Father: {fileID: 0} 345 | m_RootOrder: 2 346 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 347 | --- !u!114 &1554198727 348 | MonoBehaviour: 349 | m_ObjectHideFlags: 0 350 | m_CorrespondingSourceObject: {fileID: 0} 351 | m_PrefabInternal: {fileID: 0} 352 | m_GameObject: {fileID: 1554198722} 353 | m_Enabled: 1 354 | m_EditorHideFlags: 0 355 | m_Script: {fileID: 11500000, guid: 43c0d3f7179e1df4fa105d05a8f89122, type: 3} 356 | m_Name: 357 | m_EditorClassIdentifier: 358 | material: {fileID: 2100000, guid: df4379de76fd927409f000e7f8aab55b, type: 2} 359 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99c9720ab356a0642a771bea13969a05 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example/TextureUpdaterExample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Unity.Burst; 3 | using Unity.Collections; 4 | using Unity.Collections.LowLevel.Unsafe; 5 | using Unity.Jobs; 6 | using UnityEngine; 7 | using Unity.Mathematics; 8 | 9 | public class TextureUpdaterExample : MonoBehaviour 10 | { 11 | [BurstCompile] 12 | private struct PlasmaJob : IJobParallelFor 13 | { 14 | [WriteOnly] public NativeArray colors; 15 | 16 | [ReadOnly] public int width; 17 | [ReadOnly] public int height; 18 | [ReadOnly] public float time; 19 | 20 | public void Execute(int index) 21 | { 22 | colors[index] = Plasma(index % width, index / width, width, height, time); 23 | } 24 | 25 | private static Color32 Plasma(int x, int y, int width, int height, float time) 26 | { 27 | var px = (float) x / width; 28 | var py = (float) y / height; 29 | 30 | var l = math.sin(px * math.sin(time * 1.3f) + math.sin(py * 4 + time) * math.sin(time)); 31 | 32 | var r = (byte) (math.sin(l * 6) * 127 + 127); 33 | var g = (byte) (math.sin(l * 7) * 127 + 127); 34 | var b = (byte) (math.sin(l * 10) * 127 + 127); 35 | 36 | return new Color32(r, g, b, 255); 37 | } 38 | 39 | } 40 | 41 | private Texture texture; 42 | 43 | private NativeArray colorBuffer; 44 | 45 | private void Awake() 46 | { 47 | TextureUpdater.Init(); 48 | } 49 | 50 | private void OnDestroy() 51 | { 52 | TextureUpdater.Deinit(); 53 | colorBuffer.Dispose(); 54 | } 55 | 56 | private void Start() 57 | { 58 | texture = new Texture2D(512, 512, TextureFormat.RGBA32, false); 59 | GetComponent().material.mainTexture = texture; 60 | colorBuffer = new NativeArray(texture.width * texture.height, Allocator.Persistent); 61 | } 62 | 63 | private void ScheduleAndWaitForPlasmaJob(NativeArray colors, int width, int height, float time) 64 | { 65 | var jobData = new PlasmaJob 66 | { 67 | colors = colors, 68 | width = width, 69 | height = height, 70 | time = time 71 | }; 72 | var handle = jobData.Schedule(colorBuffer.Length, 32); 73 | handle.Complete(); 74 | } 75 | 76 | private void Update() 77 | { 78 | ScheduleAndWaitForPlasmaJob(colorBuffer, texture.width, texture.height, Time.time); 79 | 80 | //BUG: texture.Update(colorBuffer) hangs the editor on .Net 4.6 81 | #if UNITY_EDITOR 82 | var tex2d = (Texture2D) texture; 83 | unsafe 84 | { 85 | tex2d.LoadRawTextureData(new IntPtr(colorBuffer.GetUnsafePtr()), colorBuffer.Length * 4); 86 | } 87 | tex2d.Apply(); 88 | #else 89 | texture.Update(colorBuffer); 90 | #endif 91 | 92 | } 93 | 94 | 95 | 96 | } -------------------------------------------------------------------------------- /Assets/TextureUpdater/Example/TextureUpdaterExample.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43c0d3f7179e1df4fa105d05a8f89122 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/NativeSource~/CMake/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Specify the minimum version for CMake 2 | cmake_minimum_required(VERSION 3.2) 3 | 4 | # Plugins's name 5 | project(${PLUGIN_NAME}) 6 | 7 | #Build type 8 | set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}) 9 | 10 | #Plugin version 11 | add_definitions(-DPLUGIN_VERSION="${PLUGIN_VERSION}") 12 | 13 | #Plugin build number 14 | add_definitions(-DPLUGIN_BUILD_NUMBER=${PLUGIN_BUILD_NUMBER}) 15 | 16 | #Custom definitions 17 | if(DEFINED CUSTOM_DEFINES) 18 | set(CUSTOM_DEFINES ${CUSTOM_DEFINES}) 19 | foreach(definition ${CUSTOM_DEFINES}) 20 | add_definitions(-D${definition}) 21 | endforeach() 22 | endif() 23 | 24 | #Include Unity plugin API 25 | if(DEFINED INCLUDE_PLUGIN_API) 26 | include_directories(${INCLUDE_PLUGIN_API}) 27 | endif() 28 | 29 | # Find all .c, .cc and .cpp files in the source folder 30 | file(GLOB_RECURSE SOURCE_FILES "${SOURCE_FOLDER}/*.c" "${SOURCE_FOLDER}/*.cc" "${SOURCE_FOLDER}/*.cpp") 31 | 32 | if(ANDROID) 33 | add_library(${PLUGIN_NAME} SHARED ${SOURCE_FILES}) 34 | install(TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_BINARY_FOLDER}/Android/${ANDROID_ABI}) 35 | elseif(IOS) 36 | set (CMAKE_IOS_INSTALL_UNIVERSAL_LIBS ON) 37 | set (CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH OFF) 38 | set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos;-iphonesimulator") 39 | add_library(${PLUGIN_NAME} STATIC ${SOURCE_FILES}) 40 | install(TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_BINARY_FOLDER}/iOS) 41 | elseif(WEBGL) 42 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --em-config ${EM_CONFIG}") 43 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --em-config ${EM_CONFIG}") 44 | add_library(${PLUGIN_NAME} SHARED ${SOURCE_FILES}) 45 | set_target_properties(${PLUGIN_NAME} PROPERTIES PREFIX "" SUFFIX ".bc") 46 | install(TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_BINARY_FOLDER}/WebGL) 47 | elseif(OSX) 48 | add_library(${PLUGIN_NAME} MODULE ${SOURCE_FILES}) 49 | set_target_properties(${PLUGIN_NAME} PROPERTIES BUNDLE TRUE) 50 | install(TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_BINARY_FOLDER}/OSX) 51 | elseif(WINDOWS) 52 | add_library(${PLUGIN_NAME} MODULE ${SOURCE_FILES}) 53 | install(TARGETS ${PLUGIN_NAME} DESTINATION "${PLUGIN_BINARY_FOLDER}/Windows/${ARCH}") 54 | elseif(UWP) 55 | add_library(${PLUGIN_NAME} MODULE ${SOURCE_FILES}) 56 | install(TARGETS ${PLUGIN_NAME} DESTINATION "${PLUGIN_BINARY_FOLDER}/WSA/${ARCH}") 57 | elseif(LINUX) 58 | add_library(${PLUGIN_NAME} MODULE ${SOURCE_FILES}) 59 | if(ARCH STREQUAL "x86") 60 | set_target_properties(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32") 61 | elseif(ARCH STREQUAL "x86_64") 62 | set_target_properties(${PLUGIN_NAME} PROPERTIES COMPILE_FLAGS "-m64" LINK_FLAGS "-m64") 63 | endif() 64 | install(TARGETS ${PLUGIN_NAME} DESTINATION "${PLUGIN_BINARY_FOLDER}/Linux/${ARCH}") 65 | else() 66 | message(FATAL_ERROR "Unsupported platform") 67 | endif() 68 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/NativeSource~/CMake/Emscripten.cmake: -------------------------------------------------------------------------------- 1 | # This file is a 'toolchain description file' for CMake. 2 | # It teaches CMake about the Emscripten compiler, so that CMake can generate makefiles 3 | # from CMakeLists.txt that invoke emcc. 4 | 5 | # Since updating to LLVM 3.9, its build system requires CMake 3.4.3 or newer, so use this as a 6 | # baseline requirement for Emscripten toolchain as well, as developers will have this version or 7 | # they would have been unable to build LLVM in the first place. 8 | cmake_minimum_required(VERSION 3.4.3) 9 | 10 | # To use this toolchain file with CMake, invoke CMake with the following command line parameters 11 | # cmake -DCMAKE_TOOLCHAIN_FILE=/cmake/Modules/Platform/Emscripten.cmake 12 | # -DCMAKE_BUILD_TYPE= 13 | # -G "Unix Makefiles" (Linux and OSX) 14 | # -G "MinGW Makefiles" (Windows) 15 | # # Note, pass in here ONLY the path to the file, not the filename 'CMakeLists.txt' itself. 16 | 17 | # After that, build the generated Makefile with the command 'make'. On Windows, you may download and use 'mingw32-make' instead. 18 | 19 | # The following variable describes the target OS we are building to. 20 | set(CMAKE_SYSTEM_NAME Emscripten) 21 | set(CMAKE_SYSTEM_VERSION 1) 22 | 23 | set(CMAKE_CROSSCOMPILING TRUE) 24 | 25 | # Advertise Emscripten as a 32-bit platform (as opposed to CMAKE_SYSTEM_PROCESSOR=x86_64 for 64-bit platform), 26 | # since some projects (e.g. OpenCV) use this to detect bitness. 27 | set(CMAKE_SYSTEM_PROCESSOR x86) 28 | 29 | # Tell CMake how it should instruct the compiler to generate multiple versions of an outputted .so library: e.g. "libfoo.so, libfoo.so.1, libfoo.so.1.4" etc. 30 | # This feature is activated if a shared library project has the property SOVERSION defined. 31 | set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,") 32 | 33 | # In CMake, CMAKE_HOST_WIN32 is set when we are cross-compiling from Win32 to Emscripten: http://www.cmake.org/cmake/help/v2.8.12/cmake.html#variable:CMAKE_HOST_WIN32 34 | # The variable WIN32 is set only when the target arch that will run the code will be WIN32, so unset WIN32 when cross-compiling. 35 | set(WIN32) 36 | 37 | # The same logic as above applies for APPLE and CMAKE_HOST_APPLE, so unset APPLE. 38 | set(APPLE) 39 | 40 | # And for UNIX and CMAKE_HOST_UNIX. However, Emscripten is often able to mimic being a Linux/Unix system, in which case a lot of existing CMakeLists.txt files can be configured for Emscripten while assuming UNIX build, so this is left enabled. 41 | set(UNIX 1) 42 | 43 | # Do a no-op access on the CMAKE_TOOLCHAIN_FILE variable so that CMake will not issue a warning on it being unused. 44 | if (CMAKE_TOOLCHAIN_FILE) 45 | endif() 46 | 47 | # In order for check_function_exists() detection to work, we must signal it to pass an additional flag, which causes the compilation 48 | # to abort if linking results in any undefined symbols. The CMake detection mechanism depends on the undefined symbol error to be raised. 49 | set(CMAKE_REQUIRED_FLAGS "-s ERROR_ON_UNDEFINED_SYMBOLS=1") 50 | 51 | # Locate where the Emscripten compiler resides in relative to this toolchain file. 52 | if ("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "") 53 | get_filename_component(GUESS_EMSCRIPTEN_ROOT_PATH "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) 54 | if (EXISTS "${GUESS_EMSCRIPTEN_ROOT_PATH}/emranlib") 55 | set(EMSCRIPTEN_ROOT_PATH "${GUESS_EMSCRIPTEN_ROOT_PATH}") 56 | endif() 57 | endif() 58 | 59 | # If not found by above search, locate using the EMSCRIPTEN environment variable. 60 | if ("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "") 61 | set(EMSCRIPTEN_ROOT_PATH "$ENV{EMSCRIPTEN}") 62 | endif() 63 | 64 | # Abort if not found. 65 | if ("${EMSCRIPTEN_ROOT_PATH}" STREQUAL "") 66 | message(FATAL_ERROR "Could not locate the Emscripten compiler toolchain directory! Either set the EMSCRIPTEN environment variable, or pass -DEMSCRIPTEN_ROOT_PATH=xxx to CMake to explicitly specify the location of the compiler!") 67 | endif() 68 | 69 | # Normalize, convert Windows backslashes to forward slashes or CMake will crash. 70 | get_filename_component(EMSCRIPTEN_ROOT_PATH "${EMSCRIPTEN_ROOT_PATH}" ABSOLUTE) 71 | 72 | list(APPEND CMAKE_MODULE_PATH "${EMSCRIPTEN_ROOT_PATH}/cmake/Modules") 73 | 74 | list(APPEND CMAKE_FIND_ROOT_PATH "${EMSCRIPTEN_ROOT_PATH}/system") 75 | 76 | if (CMAKE_HOST_WIN32) 77 | set(EMCC_SUFFIX ".bat") 78 | else() 79 | set(EMCC_SUFFIX "") 80 | endif() 81 | 82 | # Specify the compilers to use for C and C++ 83 | if ("${CMAKE_C_COMPILER}" STREQUAL "") 84 | set(CMAKE_C_COMPILER "${EMSCRIPTEN_ROOT_PATH}/emcc${EMCC_SUFFIX}") 85 | endif() 86 | if ("${CMAKE_CXX_COMPILER}" STREQUAL "") 87 | set(CMAKE_CXX_COMPILER "${EMSCRIPTEN_ROOT_PATH}/em++${EMCC_SUFFIX}") 88 | endif() 89 | 90 | if ("${CMAKE_AR}" STREQUAL "") 91 | set(CMAKE_AR "${EMSCRIPTEN_ROOT_PATH}/emar${EMCC_SUFFIX}" CACHE FILEPATH "Emscripten ar") 92 | endif() 93 | 94 | if ("${CMAKE_RANLIB}" STREQUAL "") 95 | set(CMAKE_RANLIB "${EMSCRIPTEN_ROOT_PATH}/emranlib${EMCC_SUFFIX}" CACHE FILEPATH "Emscripten ranlib") 96 | endif() 97 | 98 | # Don't allow CMake to autodetect the compiler, since it does not understand Emscripten. 99 | # Pass -DEMSCRIPTEN_FORCE_COMPILERS=OFF to disable (sensible mostly only for testing/debugging purposes). 100 | option(EMSCRIPTEN_FORCE_COMPILERS "Force C/C++ compiler" ON) 101 | if (EMSCRIPTEN_FORCE_COMPILERS) 102 | 103 | # Detect version of the 'emcc' executable. Note that for CMake, we tell it the version of the Clang compiler and not the version of Emscripten, 104 | # because CMake understands Clang better. 105 | if (NOT CMAKE_C_COMPILER_VERSION) # Toolchain script is interpreted multiple times, so don't rerun the check if already done before. 106 | execute_process(COMMAND "${CMAKE_C_COMPILER}" -v --em-config ${EM_CONFIG} RESULT_VARIABLE _cmake_compiler_result ERROR_VARIABLE _cmake_compiler_output OUTPUT_QUIET) 107 | if (NOT _cmake_compiler_result EQUAL 0) 108 | message(FATAL_ERROR "Failed to fetch compiler version information with command \"'${CMAKE_C_COMPILER}' -v --em-config ${EM_CONFIG}\"! Process returned with error code ${_cmake_compiler_result} and error ${_cmake_compiler_output}.") 109 | endif() 110 | if (NOT "${_cmake_compiler_output}" MATCHES "Emscripten") 111 | message(FATAL_ERROR "System LLVM compiler cannot be used to build with Emscripten! Check Emscripten's LLVM toolchain location in .emscripten configuration file, and make sure to point CMAKE_C_COMPILER to where emcc is located. (was pointing to \"${CMAKE_C_COMPILER}\")") 112 | endif() 113 | string(REGEX MATCH "clang version ([0-9\.]+)" _dummy_unused "${_cmake_compiler_output}") 114 | if (NOT CMAKE_MATCH_1) 115 | message(FATAL_ERROR "Failed to regex parse Clang compiler version from version string: ${_cmake_compiler_output}") 116 | endif() 117 | 118 | set(CMAKE_C_COMPILER_VERSION "${CMAKE_MATCH_1}") 119 | set(CMAKE_CXX_COMPILER_VERSION "${CMAKE_MATCH_1}") 120 | if (${CMAKE_C_COMPILER_VERSION} VERSION_LESS 3.9.0) 121 | message(WARNING "CMAKE_C_COMPILER version looks too old. Was ${CMAKE_C_COMPILER_VERSION}, should be at least 3.9.0.") 122 | endif() 123 | endif() 124 | 125 | set(CMAKE_C_COMPILER_ID_RUN TRUE) 126 | set(CMAKE_C_COMPILER_FORCED TRUE) 127 | set(CMAKE_C_COMPILER_WORKS TRUE) 128 | set(CMAKE_C_COMPILER_ID Clang) 129 | set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11) 130 | 131 | set(CMAKE_CXX_COMPILER_ID_RUN TRUE) 132 | set(CMAKE_CXX_COMPILER_FORCED TRUE) 133 | set(CMAKE_CXX_COMPILER_WORKS TRUE) 134 | set(CMAKE_CXX_COMPILER_ID Clang) 135 | set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 98) 136 | 137 | set(CMAKE_C_PLATFORM_ID "emscripten") 138 | set(CMAKE_CXX_PLATFORM_ID "emscripten") 139 | 140 | set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros;c_static_assert") 141 | set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes") 142 | set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros") 143 | set(CMAKE_C11_COMPILE_FEATURES "c_static_assert") 144 | 145 | set(CMAKE_CXX_COMPILE_FEATURES "cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") 146 | set(CMAKE_CXX98_COMPILE_FEATURES "cxx_template_template_parameters") 147 | set(CMAKE_CXX11_COMPILE_FEATURES "cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") 148 | set(CMAKE_CXX14_COMPILE_FEATURES "cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") 149 | endif() 150 | 151 | # To find programs to execute during CMake run time with find_program(), e.g. 'git' or so, we allow looking 152 | # into system paths. 153 | set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 154 | 155 | # Since Emscripten is a cross-compiler, we should never look at the system-provided directories like /usr/include and so on. 156 | # Therefore only CMAKE_FIND_ROOT_PATH should be used as a find directory. See http://www.cmake.org/cmake/help/v3.0/variable/CMAKE_FIND_ROOT_PATH_MODE_INCLUDE.html 157 | set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 158 | set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 159 | set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 160 | 161 | set(CMAKE_SYSTEM_INCLUDE_PATH "${EMSCRIPTEN_ROOT_PATH}/system/include") 162 | 163 | # We would prefer to specify a standard set of Clang+Emscripten-friendly common convention for suffix files, especially for CMake executable files, 164 | # but if these are adjusted, ${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake will fail, since it depends on being able to compile output files with predefined names. 165 | #SET(CMAKE_LINK_LIBRARY_SUFFIX "") 166 | #SET(CMAKE_STATIC_LIBRARY_PREFIX "") 167 | #SET(CMAKE_SHARED_LIBRARY_PREFIX "") 168 | #SET(CMAKE_FIND_LIBRARY_PREFIXES "") 169 | #SET(CMAKE_FIND_LIBRARY_SUFFIXES ".bc") 170 | #SET(CMAKE_SHARED_LIBRARY_SUFFIX ".bc") 171 | 172 | option(EMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES "If set, static library targets generate LLVM bitcode files (.bc). If disabled (default), UNIX ar archives (.a) are generated." OFF) 173 | if (EMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES) 174 | SET(CMAKE_STATIC_LIBRARY_SUFFIX ".bc") 175 | 176 | SET(CMAKE_C_CREATE_STATIC_LIBRARY " -o ") 177 | SET(CMAKE_CXX_CREATE_STATIC_LIBRARY " -o ") 178 | else() 179 | # Specify the program to use when building static libraries. Force Emscripten-related command line options to clang. 180 | SET(CMAKE_C_CREATE_STATIC_LIBRARY " rc ") 181 | SET(CMAKE_CXX_CREATE_STATIC_LIBRARY " rc ") 182 | endif() 183 | 184 | SET(CMAKE_EXECUTABLE_SUFFIX ".js") 185 | 186 | SET(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1) 187 | SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1) 188 | SET(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1) 189 | SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1) 190 | SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES 1) 191 | SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 1) 192 | 193 | set(CMAKE_C_RESPONSE_FILE_LINK_FLAG "@") 194 | set(CMAKE_CXX_RESPONSE_FILE_LINK_FLAG "@") 195 | 196 | # Set a global EMSCRIPTEN variable that can be used in client CMakeLists.txt to detect when building using Emscripten. 197 | set(EMSCRIPTEN 1 CACHE BOOL "If true, we are targeting Emscripten output.") 198 | 199 | # Hardwire support for cmake-2.8/Modules/CMakeBackwardsCompatibilityC.cmake without having CMake to try complex things 200 | # to autodetect these: 201 | set(CMAKE_SKIP_COMPATIBILITY_TESTS 1) 202 | set(CMAKE_SIZEOF_CHAR 1) 203 | set(CMAKE_SIZEOF_UNSIGNED_SHORT 2) 204 | set(CMAKE_SIZEOF_SHORT 2) 205 | set(CMAKE_SIZEOF_INT 4) 206 | set(CMAKE_SIZEOF_UNSIGNED_LONG 4) 207 | set(CMAKE_SIZEOF_UNSIGNED_INT 4) 208 | set(CMAKE_SIZEOF_LONG 4) 209 | set(CMAKE_SIZEOF_VOID_P 4) 210 | set(CMAKE_SIZEOF_FLOAT 4) 211 | set(CMAKE_SIZEOF_DOUBLE 8) 212 | set(CMAKE_C_SIZEOF_DATA_PTR 4) 213 | set(CMAKE_CXX_SIZEOF_DATA_PTR 4) 214 | set(CMAKE_HAVE_LIMITS_H 1) 215 | set(CMAKE_HAVE_UNISTD_H 1) 216 | set(CMAKE_HAVE_PTHREAD_H 1) 217 | set(CMAKE_HAVE_SYS_PRCTL_H 1) 218 | set(CMAKE_WORDS_BIGENDIAN 0) 219 | set(CMAKE_DL_LIBS) 220 | 221 | set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2" CACHE STRING "Emscripten-overridden CMAKE_C_FLAGS_RELEASE") 222 | set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os" CACHE STRING "Emscripten-overridden CMAKE_C_FLAGS_MINSIZEREL") 223 | set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2" CACHE STRING "Emscripten-overridden CMAKE_C_FLAGS_RELWITHDEBINFO") 224 | set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O2" CACHE STRING "Emscripten-overridden CMAKE_CXX_FLAGS_RELEASE") 225 | set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os" CACHE STRING "Emscripten-overridden CMAKE_CXX_FLAGS_MINSIZEREL") 226 | set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2" CACHE STRING "Emscripten-overridden CMAKE_CXX_FLAGS_RELWITHDEBINFO") 227 | 228 | set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-O2" CACHE STRING "Emscripten-overridden CMAKE_EXE_LINKER_FLAGS_RELEASE") 229 | set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "-Os" CACHE STRING "Emscripten-overridden CMAKE_EXE_LINKER_FLAGS_MINSIZEREL") 230 | set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Emscripten-overridden CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO") 231 | set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "-O2" CACHE STRING "Emscripten-overridden CMAKE_SHARED_LINKER_FLAGS_RELEASE") 232 | set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "-Os" CACHE STRING "Emscripten-overridden CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL") 233 | set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Emscripten-overridden CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO") 234 | set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "-O2" CACHE STRING "Emscripten-overridden CMAKE_MODULE_LINKER_FLAGS_RELEASE") 235 | set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "-Os" CACHE STRING "Emscripten-overridden CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL") 236 | set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Emscripten-overridden CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO") 237 | 238 | function(em_validate_asmjs_after_build target) 239 | add_custom_command(TARGET ${target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E echo Validating build output for asm.js... COMMAND "python" ARGS "${EMSCRIPTEN_ROOT_PATH}/tools/validate_asmjs.py" "$") 240 | endfunction() 241 | 242 | # A global counter to guarantee unique names for js library files. 243 | set(link_js_counter 1) 244 | 245 | # Internal function: Do not call from user CMakeLists.txt files. Use one of em_link_js_library()/em_link_pre_js()/em_link_post_js() instead. 246 | function(em_add_tracked_link_flag target flagname) 247 | 248 | # User can input list of JS files either as a single list, or as variable arguments to this function, so iterate over varargs, and treat each 249 | # item in varargs as a list itself, to support both syntax forms. 250 | foreach(jsFileList ${ARGN}) 251 | foreach(jsfile ${jsFileList}) 252 | # If the user edits the JS file, we want to relink the emscripten application, but unfortunately it is not possible to make a link step 253 | # depend directly on a source file. Instead, we must make a dummy no-op build target on that source file, and make the project depend on 254 | # that target. 255 | 256 | # Sanitate the source .js filename to a good symbol name to use as a dummy filename. 257 | get_filename_component(jsname "${jsfile}" NAME) 258 | string(REGEX REPLACE "[/:\\\\.\ ]" "_" dummy_js_target ${jsname}) 259 | set(dummy_lib_name ${target}_${link_js_counter}_${dummy_js_target}) 260 | set(dummy_c_name "${CMAKE_BINARY_DIR}/${dummy_js_target}_tracker.c") 261 | 262 | # Create a new static library target that with a single dummy .c file. 263 | add_library(${dummy_lib_name} STATIC ${dummy_c_name}) 264 | # Make the dummy .c file depend on the .js file we are linking, so that if the .js file is edited, the dummy .c file, and hence the static library will be rebuild (no-op). This causes the main application to be relinked, which is what we want. 265 | # This approach was recommended by http://www.cmake.org/pipermail/cmake/2010-May/037206.html 266 | add_custom_command(OUTPUT ${dummy_c_name} COMMAND ${CMAKE_COMMAND} -E touch ${dummy_c_name} DEPENDS ${jsfile}) 267 | target_link_libraries(${target} ${dummy_lib_name}) 268 | 269 | # Link the js-library to the target 270 | # When a linked library starts with a "-" cmake will just add it to the linker command line as it is. 271 | # The advantage of doing it this way is that the js-library will also be automatically linked to targets 272 | # that depend on this target. 273 | get_filename_component(js_file_absolute_path "${jsfile}" ABSOLUTE ) 274 | target_link_libraries(${target} "${flagname} \"${js_file_absolute_path}\"") 275 | 276 | math(EXPR link_js_counter "${link_js_counter} + 1") 277 | endforeach() 278 | endforeach() 279 | endfunction() 280 | 281 | # This function links a (list of ) .js library file(s) to the given CMake project. 282 | # Example: em_link_js_library(my_executable "lib1.js" "lib2.js") 283 | # will result in emcc passing --js-library lib1.js --js-library lib2.js to the emscripten linker, as well as 284 | # tracking the modification timestamp between the linked .js files and the main project, so that editing the .js file 285 | # will cause the target project to be relinked. 286 | function(em_link_js_library target) 287 | em_add_tracked_link_flag(${target} "--js-library" ${ARGN}) 288 | endfunction() 289 | 290 | # This function is identical to em_link_js_library(), except the .js files will be added with '--pre-js file.js' command line flag, 291 | # which is generally used to add some preamble .js code to a generated output file. 292 | function(em_link_pre_js target) 293 | em_add_tracked_link_flag(${target} "--pre-js" ${ARGN}) 294 | endfunction() 295 | 296 | # This function is identical to em_link_js_library(), except the .js files will be added with '--post-js file.js' command line flag, 297 | # which is generally used to add some postamble .js code to a generated output file. 298 | function(em_link_post_js target) 299 | em_add_tracked_link_flag(${target} "--post-js" ${ARGN}) 300 | endfunction() 301 | 302 | # Experimental support for targeting generation of Visual Studio project files (vs-tool) of Emscripten projects for Windows. 303 | # To use this, pass the combination -G "Visual Studio 10" -DCMAKE_TOOLCHAIN_FILE=Emscripten.cmake 304 | if ("${CMAKE_GENERATOR}" MATCHES "^Visual Studio.*") 305 | # By default, CMake generates VS project files with a true directive. 306 | # This causes VS to attempt to invoke rc.exe during the build, which will fail since app manifests are meaningless for Emscripten. 307 | # To disable this, add the following linker flag. This flag will not go to emcc, since the Visual Studio CMake generator will swallow it. 308 | set(EMSCRIPTEN_VS_LINKER_FLAGS "/MANIFEST:NO") 309 | # CMake is hardcoded to write a ClCompile directive $(IntDir) in all VS project files it generates. 310 | # This makes VS pass emcc a -o param that points to a directory instead of a file, which causes emcc autogenerate the output filename. 311 | # CMake is hardcoded to assume all object files have the suffix .obj, so adjust the emcc-autogenerated default suffix name to match. 312 | set(EMSCRIPTEN_VS_LINKER_FLAGS "${EMSCRIPTEN_VS_LINKER_FLAGS} --default-obj-ext .obj") 313 | # Also hint CMake that it should not hardcode generation. Requires a custom CMake build for this to work (ignored on others) 314 | # See http://www.cmake.org/Bug/view.php?id=14673 and https://github.com/juj/CMake 315 | set(CMAKE_VS_NO_DEFAULT_OBJECTFILENAME 1) 316 | 317 | # Apply and cache Emscripten Visual Studio IDE-specific linker flags. 318 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EMSCRIPTEN_VS_LINKER_FLAGS}" CACHE STRING "") 319 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${EMSCRIPTEN_VS_LINKER_FLAGS}" CACHE STRING "") 320 | set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${EMSCRIPTEN_VS_LINKER_FLAGS}" CACHE STRING "") 321 | endif() 322 | 323 | if (NOT DEFINED CMAKE_CROSSCOMPILING_EMULATOR) 324 | find_program(NODE_JS_EXECUTABLE NAMES nodejs node) 325 | if(NODE_JS_EXECUTABLE) 326 | set(CMAKE_CROSSCOMPILING_EMULATOR "${NODE_JS_EXECUTABLE}" CACHE FILEPATH "Path to the emulator for the target system.") 327 | endif() 328 | endif() 329 | # No-op on CMAKE_CROSSCOMPILING_EMULATOR so older versions of cmake do not 330 | # complain about unused CMake variable. 331 | if(CMAKE_CROSSCOMPILING_EMULATOR) 332 | endif() 333 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/NativeSource~/Source/Plugin.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | typedef void (*TextureUpdateEvent)(UnityRenderingExtTextureUpdateParams* params); 5 | typedef void (*TextureUpdateEventV2)(UnityRenderingExtTextureUpdateParamsV2* params); 6 | 7 | static TextureUpdateEvent s_OnUpdateTextureBegin; 8 | static TextureUpdateEvent s_OnUpdateTextureEnd; 9 | static TextureUpdateEventV2 s_OnUpdateTextureBeginV2; 10 | static TextureUpdateEventV2 s_OnUpdateTextureEndV2; 11 | 12 | void TextureUpdateCallback(int eventID, void* data) 13 | { 14 | auto event = static_cast(eventID); 15 | 16 | switch(event) { 17 | case kUnityRenderingExtEventUpdateTextureBegin: 18 | { 19 | auto params = reinterpret_cast(data); 20 | if(s_OnUpdateTextureBegin) 21 | s_OnUpdateTextureBegin(params); 22 | } 23 | break; 24 | case kUnityRenderingExtEventUpdateTextureEnd: 25 | { 26 | auto params = reinterpret_cast(data); 27 | if(s_OnUpdateTextureEnd) 28 | s_OnUpdateTextureEnd(params); 29 | } 30 | break; 31 | case kUnityRenderingExtEventUpdateTextureBeginV2: 32 | { 33 | auto params = reinterpret_cast(data); 34 | if(s_OnUpdateTextureBeginV2) 35 | s_OnUpdateTextureBeginV2(params); 36 | } 37 | break; 38 | case kUnityRenderingExtEventUpdateTextureEndV2: 39 | { 40 | auto params = reinterpret_cast(data); 41 | if(s_OnUpdateTextureEndV2) 42 | s_OnUpdateTextureEndV2(params); 43 | } 44 | break; 45 | default: 46 | break; 47 | } 48 | } 49 | 50 | extern "C" void UNITY_INTERFACE_EXPORT 51 | TextureUpdater_SetTextureEventFuntions(TextureUpdateEvent onUpdateTextureBegin, TextureUpdateEvent onUpdateTextureEnd) 52 | { 53 | s_OnUpdateTextureBegin = onUpdateTextureBegin; 54 | s_OnUpdateTextureEnd = onUpdateTextureEnd; 55 | } 56 | 57 | extern "C" void UNITY_INTERFACE_EXPORT 58 | TextureUpdater_SetTextureEventFuntionsV2(TextureUpdateEventV2 onUpdateTextureBeginV2, TextureUpdateEventV2 onUpdateTextureEndV2) 59 | { 60 | s_OnUpdateTextureBeginV2 = onUpdateTextureBeginV2; 61 | s_OnUpdateTextureEndV2 = onUpdateTextureEndV2; 62 | } 63 | 64 | extern "C" UnityRenderingEventAndData UNITY_INTERFACE_EXPORT 65 | TextureUpdater_GetTextureUpdateCallback() 66 | { 67 | return TextureUpdateCallback; 68 | } 69 | 70 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/NativeSource~/Tests/PluginTest.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iBicha/TextureUpdater/461bd64c887b67896b1b2d12b6a03c03898c1db0/Assets/TextureUpdater/NativeSource~/Tests/PluginTest.cpp -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b14cd8f333fee24c9a8ce382ceca272 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0c3986e3c42f40f0a71aea6d8bb4c35 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android/armeabi-v7a.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1d08584c97644a6382a35aa14a162b4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android/armeabi-v7a/libTextureUpdater.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iBicha/TextureUpdater/461bd64c887b67896b1b2d12b6a03c03898c1db0/Assets/TextureUpdater/Plugins/Android/armeabi-v7a/libTextureUpdater.so -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android/armeabi-v7a/libTextureUpdater.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 67f4474b9792c45e1a122e264d170796 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 0 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude iOS: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 1 31 | settings: 32 | CPU: ARMv7 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | ANDROID_SDK_VERSION: 0 44 | BUILD_TYPE: Release 45 | CPU: ARMv7 46 | DefaultValueInitialized: true 47 | OS: AnyOS 48 | PLUGIN_BUILD_NUMBER: 1 49 | PLUGIN_NAME: TextureUpdater 50 | PLUGIN_VERSION: 1.0.0.0 51 | - first: 52 | Facebook: Win 53 | second: 54 | enabled: 0 55 | settings: 56 | CPU: AnyCPU 57 | - first: 58 | Facebook: Win64 59 | second: 60 | enabled: 0 61 | settings: 62 | CPU: AnyCPU 63 | - first: 64 | Standalone: Linux 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: x86 69 | - first: 70 | Standalone: Linux64 71 | second: 72 | enabled: 0 73 | settings: 74 | CPU: x86_64 75 | - first: 76 | Standalone: OSXUniversal 77 | second: 78 | enabled: 0 79 | settings: 80 | CPU: AnyCPU 81 | - first: 82 | Standalone: Win 83 | second: 84 | enabled: 0 85 | settings: 86 | CPU: AnyCPU 87 | - first: 88 | Standalone: Win64 89 | second: 90 | enabled: 0 91 | settings: 92 | CPU: AnyCPU 93 | - first: 94 | iPhone: iOS 95 | second: 96 | enabled: 0 97 | settings: 98 | AddToEmbeddedBinaries: false 99 | CompileFlags: 100 | FrameworkDependencies: 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1e929482debc4e3f93bad378d0c71ad 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android/x86/libTextureUpdater.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iBicha/TextureUpdater/461bd64c887b67896b1b2d12b6a03c03898c1db0/Assets/TextureUpdater/Plugins/Android/x86/libTextureUpdater.so -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Android/x86/libTextureUpdater.so.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee69098fe58394bcba6514a986d8818d 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | '': Any 15 | second: 16 | enabled: 0 17 | settings: 18 | Exclude Android: 0 19 | Exclude Editor: 1 20 | Exclude Linux: 1 21 | Exclude Linux64: 1 22 | Exclude LinuxUniversal: 1 23 | Exclude OSXUniversal: 1 24 | Exclude Win: 1 25 | Exclude Win64: 1 26 | Exclude iOS: 1 27 | - first: 28 | Android: Android 29 | second: 30 | enabled: 1 31 | settings: 32 | CPU: x86 33 | - first: 34 | Any: 35 | second: 36 | enabled: 0 37 | settings: {} 38 | - first: 39 | Editor: Editor 40 | second: 41 | enabled: 0 42 | settings: 43 | ANDROID_SDK_VERSION: 0 44 | BUILD_TYPE: Release 45 | CPU: x86 46 | DefaultValueInitialized: true 47 | OS: AnyOS 48 | PLUGIN_BUILD_NUMBER: 1 49 | PLUGIN_NAME: TextureUpdater 50 | PLUGIN_VERSION: 1.0.0.0 51 | - first: 52 | Facebook: Win 53 | second: 54 | enabled: 0 55 | settings: 56 | CPU: AnyCPU 57 | - first: 58 | Facebook: Win64 59 | second: 60 | enabled: 0 61 | settings: 62 | CPU: AnyCPU 63 | - first: 64 | Standalone: Linux 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: x86 69 | - first: 70 | Standalone: Linux64 71 | second: 72 | enabled: 0 73 | settings: 74 | CPU: x86_64 75 | - first: 76 | Standalone: OSXUniversal 77 | second: 78 | enabled: 0 79 | settings: 80 | CPU: AnyCPU 81 | - first: 82 | Standalone: Win 83 | second: 84 | enabled: 0 85 | settings: 86 | CPU: AnyCPU 87 | - first: 88 | Standalone: Win64 89 | second: 90 | enabled: 0 91 | settings: 92 | CPU: AnyCPU 93 | - first: 94 | iPhone: iOS 95 | second: 96 | enabled: 0 97 | settings: 98 | AddToEmbeddedBinaries: false 99 | CompileFlags: 100 | FrameworkDependencies: 101 | userData: 102 | assetBundleName: 103 | assetBundleVariant: 104 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ad581b6eae234a7582a0e9a13b3c414 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54ccb495f0d424b7692a0468a3d92768 3 | folderAsset: yes 4 | PluginImporter: 5 | externalObjects: {} 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | - first: 13 | '': OSXIntel 14 | second: 15 | enabled: 1 16 | settings: {} 17 | - first: 18 | '': OSXIntel64 19 | second: 20 | enabled: 1 21 | settings: {} 22 | - first: 23 | Any: 24 | second: 25 | enabled: 0 26 | settings: {} 27 | - first: 28 | Editor: Editor 29 | second: 30 | enabled: 1 31 | settings: 32 | BUILD_TYPE: Release 33 | DefaultValueInitialized: true 34 | OS: OSX 35 | PLUGIN_BUILD_NUMBER: 1 36 | PLUGIN_NAME: TextureUpdater 37 | PLUGIN_VERSION: 1.0.0.0 38 | - first: 39 | Standalone: OSXUniversal 40 | second: 41 | enabled: 1 42 | settings: {} 43 | userData: 44 | assetBundleName: 45 | assetBundleVariant: 46 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af1f39469e1b1426d9ab917547d46bc3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | TextureUpdater 9 | CFBundleGetInfoString 10 | 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleLongVersionString 18 | 19 | CFBundleName 20 | 21 | CFBundlePackageType 22 | APPL 23 | CFBundleShortVersionString 24 | 25 | CFBundleSignature 26 | ???? 27 | CFBundleVersion 28 | 29 | CSResourcesFileMapped 30 | 31 | NSHumanReadableCopyright 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents/Info.plist.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80a61044c9baa427cab354003f973017 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents/MacOS.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 06bfd8071b448461fbd2e95653e5cba3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents/MacOS/TextureUpdater: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iBicha/TextureUpdater/461bd64c887b67896b1b2d12b6a03c03898c1db0/Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents/MacOS/TextureUpdater -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/OSX/TextureUpdater.bundle/Contents/MacOS/TextureUpdater.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bf6e4af8de2a54c4b86d824c9096a4a2 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Windows.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b24873564f68c84abf83380d00f45fa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Windows/x86_64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2c06f4028638114fb16ff23e75aee5c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Windows/x86_64/TextureUpdater.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iBicha/TextureUpdater/461bd64c887b67896b1b2d12b6a03c03898c1db0/Assets/TextureUpdater/Plugins/Windows/x86_64/TextureUpdater.dll -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/Windows/x86_64/TextureUpdater.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0345281e9d5be794dabb3d1f27288d15 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | isPreloaded: 0 9 | isOverridable: 0 10 | platformData: 11 | - first: 12 | Any: 13 | second: 14 | enabled: 0 15 | settings: {} 16 | - first: 17 | Editor: Editor 18 | second: 19 | enabled: 1 20 | settings: 21 | BUILD_TYPE: Release 22 | CPU: x86_64 23 | DefaultValueInitialized: true 24 | OS: Windows 25 | PLUGIN_BUILD_NUMBER: 1 26 | PLUGIN_NAME: TextureUpdater 27 | PLUGIN_VERSION: 1.0.0.0 28 | - first: 29 | Standalone: Win64 30 | second: 31 | enabled: 1 32 | settings: {} 33 | userData: 34 | assetBundleName: 35 | assetBundleVariant: 36 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/iOS.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cbe8669617dc14109a2671f823778187 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/iOS/libTextureUpdater.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iBicha/TextureUpdater/461bd64c887b67896b1b2d12b6a03c03898c1db0/Assets/TextureUpdater/Plugins/iOS/libTextureUpdater.a -------------------------------------------------------------------------------- /Assets/TextureUpdater/Plugins/iOS/libTextureUpdater.a.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: be5e309d06bd948faa5452d701824d20 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | platformData: 13 | - first: 14 | Any: 15 | second: 16 | enabled: 0 17 | settings: {} 18 | - first: 19 | Editor: Editor 20 | second: 21 | enabled: 0 22 | settings: 23 | BUILD_TYPE: Release 24 | DefaultValueInitialized: true 25 | PLUGIN_BUILD_NUMBER: 1 26 | PLUGIN_NAME: TextureUpdater 27 | PLUGIN_VERSION: 1.0.0.0 28 | - first: 29 | iPhone: iOS 30 | second: 31 | enabled: 1 32 | settings: {} 33 | userData: 34 | assetBundleName: 35 | assetBundleVariant: 36 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/TextureUpdater.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: ba3b360fcee51e3409078f3802fb343d, type: 3} 13 | m_Name: TextureUpdater 14 | m_EditorClassIdentifier: 15 | Name: TextureUpdater 16 | Version: 1.0.0.0 17 | BuildNumber: 1 18 | includePluginAPI: 1 19 | buildOptions: 20 | - Architecture: 5 21 | BuildType: 0 22 | BuildPlatform: 7 23 | AndroidSdkVersion: 0 24 | isEnabled: 0 25 | foldoutAnimator: 26 | m_Target: 0 27 | speed: 2 28 | m_Value: 0 29 | - Architecture: 3 30 | BuildType: 0 31 | BuildPlatform: 4 32 | AndroidSdkVersion: 0 33 | isEnabled: 0 34 | foldoutAnimator: 35 | m_Target: 0 36 | speed: 2 37 | m_Value: 0 38 | - Architecture: 3 39 | BuildType: 0 40 | BuildPlatform: 2 41 | AndroidSdkVersion: 0 42 | isEnabled: 0 43 | foldoutAnimator: 44 | m_Target: 0 45 | speed: 2 46 | m_Value: 0 47 | - Architecture: 1 48 | BuildType: 1 49 | BuildPlatform: 1 50 | AndroidSdkVersion: 0 51 | isEnabled: 1 52 | foldoutAnimator: 53 | m_Target: 1 54 | speed: 2 55 | m_Value: 1 56 | Definitions: 57 | keys: [] 58 | values: [] 59 | pluginBinaryFolder: {fileID: 102900000, guid: 3b14cd8f333fee24c9a8ce382ceca272, 60 | type: 3} 61 | sourceFolder: C:\Users\bhadriche\Desktop\TextureUpdater\Assets\TextureUpdater\NativeSource~\Source 62 | buildFolder: C:\Users\bhadriche\Desktop\TextureUpdater\Assets\TextureUpdater\NativeSource~\Build 63 | sectionAnimator: 64 | m_Target: 1 65 | speed: 2 66 | m_Value: 1 67 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/TextureUpdater.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d64b51b056ff184184c4a106ea4448d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/TextureUpdater/TextureUpdater.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_2018_3_OR_NEWER && !(UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN) //Windows plugin not updated yet 2 | #define SUPPORTS_TEXTURE_UPDATE_V2 3 | #endif 4 | 5 | #if SUPPORTS_TEXTURE_UPDATE_V2 6 | #define USE_TEXTURE_UPDATE_V2 7 | #endif 8 | 9 | using System.Collections.Generic; 10 | using UnityEngine; 11 | using System.Runtime.InteropServices; 12 | using AOT; 13 | using System; 14 | using Unity.Collections; 15 | using Unity.Collections.LowLevel.Unsafe; 16 | using UnityEngine.Rendering; 17 | 18 | 19 | public static class TextureUpdater 20 | { 21 | #if UNITY_EDITOR 22 | private const string libraryName = "TextureUpdater"; 23 | #elif UNITY_IOS || UNITY_IPHONE || UNITY_WEBGL 24 | private const string libraryName = "__Internal"; 25 | #else 26 | private const string libraryName = "TextureUpdater"; 27 | #endif 28 | 29 | [StructLayout(LayoutKind.Sequential)] 30 | public struct UnityRenderingExtTextureUpdateParams 31 | { 32 | public IntPtr texData; // source data for the texture update. Must be set by the plugin 33 | public uint userData; // user defined data. Set by the plugin 34 | 35 | public uint textureID; // texture ID of the texture to be updated. 36 | public int format; // format of the texture to be updated 37 | public uint width; // width of the texture 38 | public uint height; // height of the texture 39 | public uint bpp; // texture bytes per pixel. 40 | } 41 | 42 | [StructLayout(LayoutKind.Sequential)] 43 | public struct UnityRenderingExtTextureUpdateParamsV2 44 | { 45 | public IntPtr texData; // source data for the texture update. Must be set by the plugin 46 | public IntPtr textureID; // texture ID of the texture to be updated. 47 | public uint userData; // user defined data. Set by the plugin 48 | public int format; // format of the texture to be updated 49 | public uint width; // width of the texture 50 | public uint height; // height of the texture 51 | public uint bpp; // texture bytes per pixel. 52 | } 53 | 54 | private static CommandBuffer commandBuffer; 55 | private static IntPtr textureUpdateCallbackPtr; 56 | 57 | private static bool initialized; 58 | 59 | // static TextureUpdater() 60 | // { 61 | // Init(); 62 | // } 63 | // 64 | public static void Init() 65 | { 66 | if (initialized) return; 67 | 68 | commandBuffer = new CommandBuffer(); 69 | pointerBuffers = new Dictionary(); 70 | textureUpdateCallbackPtr = GetTextureUpdateCallback(); 71 | SetTextureEventFunctions(OnUpdateTextureBegin, OnUpdateTextureEnd); 72 | 73 | #if USE_TEXTURE_UPDATE_V2 74 | SetTextureEventFunctionsV2(OnUpdateTextureBeginV2, OnUpdateTextureEndV2); 75 | #endif 76 | 77 | initialized = true; 78 | } 79 | 80 | public static void Deinit() 81 | { 82 | if (!initialized) return; 83 | 84 | if (commandBuffer != null) 85 | { 86 | commandBuffer.Dispose(); 87 | commandBuffer = null; 88 | } 89 | 90 | SetTextureEventFunctions(null, null); 91 | 92 | #if USE_TEXTURE_UPDATE_V2 93 | SetTextureEventFunctionsV2(null, null); 94 | #endif 95 | 96 | initialized = false; 97 | } 98 | 99 | public static unsafe void Update(this Texture texture, byte[] content) 100 | { 101 | fixed (byte* contentPtr = content) 102 | { 103 | Update(texture, new IntPtr(contentPtr)); 104 | } 105 | } 106 | 107 | public static unsafe void Update(this Texture texture, Color32[] content) 108 | { 109 | fixed (Color32* contentPtr = content) 110 | { 111 | Update(texture, new IntPtr(contentPtr)); 112 | } 113 | } 114 | 115 | public static unsafe void Update(this Texture texture, NativeArray content) where T : struct 116 | { 117 | Update(texture, new IntPtr(content.GetUnsafePtr())); 118 | } 119 | 120 | public static void Update(this Texture texture, IntPtr content) 121 | { 122 | Init(); 123 | 124 | var id = lastEventId++; 125 | pointerBuffers.Add(id, content); 126 | #if USE_TEXTURE_UPDATE_V2 127 | commandBuffer.IssuePluginCustomTextureUpdateV2(textureUpdateCallbackPtr, texture, id); 128 | #else 129 | commandBuffer.IssuePluginCustomTextureUpdate(textureUpdateCallbackPtr, texture, id); 130 | #endif 131 | Graphics.ExecuteCommandBuffer(commandBuffer); 132 | commandBuffer.Clear(); 133 | } 134 | 135 | [UnmanagedFunctionPointer(CallingConvention.Cdecl)] 136 | private delegate void TextureUpdateEventDelegate(IntPtr eventParamsPtr); 137 | 138 | [DllImport(libraryName, EntryPoint = "TextureUpdater_GetTextureUpdateCallback")] 139 | private static extern IntPtr GetTextureUpdateCallback(); 140 | 141 | [DllImport(libraryName, EntryPoint = "TextureUpdater_SetTextureEventFuntions")] 142 | private static extern void SetTextureEventFunctions(TextureUpdateEventDelegate onUpdateTextureBegin, 143 | TextureUpdateEventDelegate onUpdateTextureEnd); 144 | 145 | [DllImport(libraryName, EntryPoint = "TextureUpdater_SetTextureEventFuntionsV2")] 146 | private static extern void SetTextureEventFunctionsV2(TextureUpdateEventDelegate onUpdateTextureBeginV2, 147 | TextureUpdateEventDelegate onUpdateTextureEndV2); 148 | 149 | private static uint lastEventId; 150 | private static Dictionary pointerBuffers; 151 | 152 | [MonoPInvokeCallback(typeof(TextureUpdateEventDelegate))] 153 | private static void OnUpdateTextureBegin(IntPtr eventParamsPtr) 154 | { 155 | var eventParams = (UnityRenderingExtTextureUpdateParams) Marshal.PtrToStructure(eventParamsPtr, 156 | typeof(UnityRenderingExtTextureUpdateParams)); 157 | pointerBuffers.TryGetValue(eventParams.userData, out eventParams.texData); 158 | Marshal.StructureToPtr(eventParams, eventParamsPtr, false); 159 | } 160 | 161 | [MonoPInvokeCallback(typeof(TextureUpdateEventDelegate))] 162 | private static void OnUpdateTextureEnd(IntPtr eventParamsPtr) 163 | { 164 | var eventParams = (UnityRenderingExtTextureUpdateParams) Marshal.PtrToStructure(eventParamsPtr, 165 | typeof(UnityRenderingExtTextureUpdateParams)); 166 | pointerBuffers.Remove(eventParams.userData); 167 | } 168 | 169 | [MonoPInvokeCallback(typeof(TextureUpdateEventDelegate))] 170 | private static void OnUpdateTextureBeginV2(IntPtr eventParamsPtr) 171 | { 172 | var eventParams = (UnityRenderingExtTextureUpdateParamsV2) Marshal.PtrToStructure(eventParamsPtr, 173 | typeof(UnityRenderingExtTextureUpdateParamsV2)); 174 | pointerBuffers.TryGetValue(eventParams.userData, out eventParams.texData); 175 | Marshal.StructureToPtr(eventParams, eventParamsPtr, false); 176 | } 177 | 178 | [MonoPInvokeCallback(typeof(TextureUpdateEventDelegate))] 179 | private static void OnUpdateTextureEndV2(IntPtr eventParamsPtr) 180 | { 181 | var eventParams = (UnityRenderingExtTextureUpdateParamsV2) Marshal.PtrToStructure(eventParamsPtr, 182 | typeof(UnityRenderingExtTextureUpdateParamsV2)); 183 | pointerBuffers.Remove(eventParams.userData); 184 | } 185 | } -------------------------------------------------------------------------------- /Assets/TextureUpdater/TextureUpdater.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2b0c9a04e63e3443b3428f99f5f278e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Brahim Hadriche 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ads": "2.0.8", 4 | "com.unity.analytics": "3.2.2", 5 | "com.unity.burst": "0.2.4-preview.41", 6 | "com.unity.collab-proxy": "1.2.15", 7 | "com.unity.collections": "0.0.9-preview.11", 8 | "com.unity.incrementalcompiler": "0.0.42-preview.30", 9 | "com.unity.jobs": "0.0.7-preview.6", 10 | "com.unity.mathematics": "0.0.12-preview.19", 11 | "com.unity.package-manager-ui": "2.0.3", 12 | "com.unity.purchasing": "2.0.3", 13 | "com.unity.textmeshpro": "1.3.0", 14 | "com.unity.modules.ai": "1.0.0", 15 | "com.unity.modules.animation": "1.0.0", 16 | "com.unity.modules.assetbundle": "1.0.0", 17 | "com.unity.modules.audio": "1.0.0", 18 | "com.unity.modules.cloth": "1.0.0", 19 | "com.unity.modules.director": "1.0.0", 20 | "com.unity.modules.imageconversion": "1.0.0", 21 | "com.unity.modules.imgui": "1.0.0", 22 | "com.unity.modules.jsonserialize": "1.0.0", 23 | "com.unity.modules.particlesystem": "1.0.0", 24 | "com.unity.modules.physics": "1.0.0", 25 | "com.unity.modules.physics2d": "1.0.0", 26 | "com.unity.modules.screencapture": "1.0.0", 27 | "com.unity.modules.terrain": "1.0.0", 28 | "com.unity.modules.terrainphysics": "1.0.0", 29 | "com.unity.modules.tilemap": "1.0.0", 30 | "com.unity.modules.ui": "1.0.0", 31 | "com.unity.modules.uielements": "1.0.0", 32 | "com.unity.modules.umbra": "1.0.0", 33 | "com.unity.modules.unityanalytics": "1.0.0", 34 | "com.unity.modules.unitywebrequest": "1.0.0", 35 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 36 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 37 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 38 | "com.unity.modules.unitywebrequestwww": "1.0.0", 39 | "com.unity.modules.vehicles": "1.0.0", 40 | "com.unity.modules.video": "1.0.0", 41 | "com.unity.modules.vr": "1.0.0", 42 | "com.unity.modules.wind": "1.0.0", 43 | "com.unity.modules.xr": "1.0.0" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/TextureUpdater/Example/SampleScene.unity 10 | guid: 99c9720ab356a0642a771bea13969a05 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | m_EnableTextureStreamingInPlayMode: 1 23 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 16002, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_LightmapKeepPlain: 1 53 | m_LightmapKeepDirCombined: 1 54 | m_LightmapKeepDynamicPlain: 1 55 | m_LightmapKeepDynamicDirCombined: 1 56 | m_LightmapKeepShadowMask: 1 57 | m_LightmapKeepSubtractive: 1 58 | m_FogKeepLinear: 1 59 | m_FogKeepExp: 1 60 | m_FogKeepExp2: 1 61 | m_AlbedoSwatchInfos: [] 62 | m_LightsUseLinearIntensity: 0 63 | m_LightsUseColorTemperature: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | productGUID: 8623d33330f708640b6116a682198b17 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: iBicha 16 | productName: TextureUpdater 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | resizableWindow: 0 83 | useMacAppStoreValidation: 0 84 | macAppStoreCategory: public.app-category.games 85 | gpuSkinning: 1 86 | graphicsJobs: 0 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | graphicsJobMode: 0 95 | fullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | xboxOneResolution: 0 102 | xboxOneSResolution: 0 103 | xboxOneXResolution: 3 104 | xboxOneMonoLoggingLevel: 0 105 | xboxOneLoggingLevel: 1 106 | xboxOneDisableEsram: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 0 109 | vulkanEnableSetSRGBWrite: 0 110 | m_SupportedAspectRatios: 111 | 4:3: 1 112 | 5:4: 1 113 | 16:10: 1 114 | 16:9: 1 115 | Others: 1 116 | bundleVersion: 0.1 117 | preloadedAssets: [] 118 | metroInputSource: 0 119 | wsaTransparentSwapchain: 0 120 | m_HolographicPauseOnTrackingLoss: 1 121 | xboxOneDisableKinectGpuReservation: 0 122 | xboxOneEnable7thCore: 0 123 | isWsaHolographicRemotingEnabled: 0 124 | vrSettings: 125 | cardboard: 126 | depthFormat: 0 127 | enableTransitionView: 0 128 | daydream: 129 | depthFormat: 0 130 | useSustainedPerformanceMode: 0 131 | enableVideoLayer: 0 132 | useProtectedVideoMemory: 0 133 | minimumSupportedHeadTracking: 0 134 | maximumSupportedHeadTracking: 1 135 | hololens: 136 | depthFormat: 1 137 | depthBufferSharingEnabled: 0 138 | oculus: 139 | sharedDepthBuffer: 0 140 | dashSupport: 0 141 | enable360StereoCapture: 0 142 | protectGraphicsMemory: 0 143 | enableFrameTimingStats: 0 144 | useHDRDisplay: 0 145 | m_ColorGamuts: 00000000 146 | targetPixelDensity: 30 147 | resolutionScalingMode: 0 148 | androidSupportedAspectRatio: 1 149 | androidMaxAspectRatio: 2.1 150 | applicationIdentifier: 151 | Android: com.iBicha.TextureUpdater 152 | buildNumber: {} 153 | AndroidBundleVersionCode: 1 154 | AndroidMinSdkVersion: 16 155 | AndroidTargetSdkVersion: 0 156 | AndroidPreferredInstallLocation: 1 157 | aotOptions: 158 | stripEngineCode: 1 159 | iPhoneStrippingLevel: 0 160 | iPhoneScriptCallOptimization: 0 161 | ForceInternetPermission: 0 162 | ForceSDCardPermission: 0 163 | CreateWallpaper: 0 164 | APKExpansionFiles: 0 165 | keepLoadedShadersAlive: 0 166 | StripUnusedMeshComponents: 1 167 | VertexChannelCompressionMask: 4054 168 | iPhoneSdkVersion: 989 169 | iOSTargetOSVersionString: 9.0 170 | tvOSSdkVersion: 0 171 | tvOSRequireExtendedGameController: 0 172 | tvOSTargetOSVersionString: 9.0 173 | uIPrerenderedIcon: 0 174 | uIRequiresPersistentWiFi: 0 175 | uIRequiresFullScreen: 1 176 | uIStatusBarHidden: 1 177 | uIExitOnSuspend: 0 178 | uIStatusBarStyle: 0 179 | iPhoneSplashScreen: {fileID: 0} 180 | iPhoneHighResSplashScreen: {fileID: 0} 181 | iPhoneTallHighResSplashScreen: {fileID: 0} 182 | iPhone47inSplashScreen: {fileID: 0} 183 | iPhone55inPortraitSplashScreen: {fileID: 0} 184 | iPhone55inLandscapeSplashScreen: {fileID: 0} 185 | iPhone58inPortraitSplashScreen: {fileID: 0} 186 | iPhone58inLandscapeSplashScreen: {fileID: 0} 187 | iPadPortraitSplashScreen: {fileID: 0} 188 | iPadHighResPortraitSplashScreen: {fileID: 0} 189 | iPadLandscapeSplashScreen: {fileID: 0} 190 | iPadHighResLandscapeSplashScreen: {fileID: 0} 191 | appleTVSplashScreen: {fileID: 0} 192 | appleTVSplashScreen2x: {fileID: 0} 193 | tvOSSmallIconLayers: [] 194 | tvOSSmallIconLayers2x: [] 195 | tvOSLargeIconLayers: [] 196 | tvOSLargeIconLayers2x: [] 197 | tvOSTopShelfImageLayers: [] 198 | tvOSTopShelfImageLayers2x: [] 199 | tvOSTopShelfImageWideLayers: [] 200 | tvOSTopShelfImageWideLayers2x: [] 201 | iOSLaunchScreenType: 0 202 | iOSLaunchScreenPortrait: {fileID: 0} 203 | iOSLaunchScreenLandscape: {fileID: 0} 204 | iOSLaunchScreenBackgroundColor: 205 | serializedVersion: 2 206 | rgba: 0 207 | iOSLaunchScreenFillPct: 100 208 | iOSLaunchScreenSize: 100 209 | iOSLaunchScreenCustomXibPath: 210 | iOSLaunchScreeniPadType: 0 211 | iOSLaunchScreeniPadImage: {fileID: 0} 212 | iOSLaunchScreeniPadBackgroundColor: 213 | serializedVersion: 2 214 | rgba: 0 215 | iOSLaunchScreeniPadFillPct: 100 216 | iOSLaunchScreeniPadSize: 100 217 | iOSLaunchScreeniPadCustomXibPath: 218 | iOSUseLaunchScreenStoryboard: 0 219 | iOSLaunchScreenCustomStoryboardPath: 220 | iOSDeviceRequirements: [] 221 | iOSURLSchemes: [] 222 | iOSBackgroundModes: 0 223 | iOSMetalForceHardShadows: 0 224 | metalEditorSupport: 1 225 | metalAPIValidation: 1 226 | iOSRenderExtraFrameOnPause: 0 227 | appleDeveloperTeamID: 228 | iOSManualSigningProvisioningProfileID: 229 | tvOSManualSigningProvisioningProfileID: 230 | iOSManualSigningProvisioningProfileType: 0 231 | tvOSManualSigningProvisioningProfileType: 0 232 | appleEnableAutomaticSigning: 0 233 | iOSRequireARKit: 0 234 | appleEnableProMotion: 0 235 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 236 | templatePackageId: com.unity.3d@1.0.2 237 | templateDefaultScene: Assets/Scenes/SampleScene.unity 238 | AndroidTargetArchitectures: 5 239 | AndroidSplashScreenScale: 0 240 | androidSplashScreen: {fileID: 0} 241 | AndroidKeystoreName: 242 | AndroidKeyaliasName: 243 | AndroidBuildApkPerCpuArchitecture: 0 244 | AndroidTVCompatibility: 1 245 | AndroidIsGame: 1 246 | AndroidEnableTango: 0 247 | androidEnableBanner: 1 248 | androidUseLowAccuracyLocation: 0 249 | m_AndroidBanners: 250 | - width: 320 251 | height: 180 252 | banner: {fileID: 0} 253 | androidGamepadSupportLevel: 0 254 | resolutionDialogBanner: {fileID: 0} 255 | m_BuildTargetIcons: [] 256 | m_BuildTargetPlatformIcons: 257 | - m_BuildTarget: Android 258 | m_Icons: 259 | - m_Textures: [] 260 | m_Width: 432 261 | m_Height: 432 262 | m_Kind: 2 263 | m_SubKind: 264 | - m_Textures: [] 265 | m_Width: 324 266 | m_Height: 324 267 | m_Kind: 2 268 | m_SubKind: 269 | - m_Textures: [] 270 | m_Width: 216 271 | m_Height: 216 272 | m_Kind: 2 273 | m_SubKind: 274 | - m_Textures: [] 275 | m_Width: 162 276 | m_Height: 162 277 | m_Kind: 2 278 | m_SubKind: 279 | - m_Textures: [] 280 | m_Width: 108 281 | m_Height: 108 282 | m_Kind: 2 283 | m_SubKind: 284 | - m_Textures: [] 285 | m_Width: 81 286 | m_Height: 81 287 | m_Kind: 2 288 | m_SubKind: 289 | - m_Textures: [] 290 | m_Width: 192 291 | m_Height: 192 292 | m_Kind: 0 293 | m_SubKind: 294 | - m_Textures: [] 295 | m_Width: 144 296 | m_Height: 144 297 | m_Kind: 0 298 | m_SubKind: 299 | - m_Textures: [] 300 | m_Width: 96 301 | m_Height: 96 302 | m_Kind: 0 303 | m_SubKind: 304 | - m_Textures: [] 305 | m_Width: 72 306 | m_Height: 72 307 | m_Kind: 0 308 | m_SubKind: 309 | - m_Textures: [] 310 | m_Width: 48 311 | m_Height: 48 312 | m_Kind: 0 313 | m_SubKind: 314 | - m_Textures: [] 315 | m_Width: 36 316 | m_Height: 36 317 | m_Kind: 0 318 | m_SubKind: 319 | - m_Textures: [] 320 | m_Width: 192 321 | m_Height: 192 322 | m_Kind: 1 323 | m_SubKind: 324 | - m_Textures: [] 325 | m_Width: 144 326 | m_Height: 144 327 | m_Kind: 1 328 | m_SubKind: 329 | - m_Textures: [] 330 | m_Width: 96 331 | m_Height: 96 332 | m_Kind: 1 333 | m_SubKind: 334 | - m_Textures: [] 335 | m_Width: 72 336 | m_Height: 72 337 | m_Kind: 1 338 | m_SubKind: 339 | - m_Textures: [] 340 | m_Width: 48 341 | m_Height: 48 342 | m_Kind: 1 343 | m_SubKind: 344 | - m_Textures: [] 345 | m_Width: 36 346 | m_Height: 36 347 | m_Kind: 1 348 | m_SubKind: 349 | m_BuildTargetBatching: 350 | - m_BuildTarget: Standalone 351 | m_StaticBatching: 1 352 | m_DynamicBatching: 0 353 | - m_BuildTarget: tvOS 354 | m_StaticBatching: 1 355 | m_DynamicBatching: 0 356 | - m_BuildTarget: Android 357 | m_StaticBatching: 1 358 | m_DynamicBatching: 0 359 | - m_BuildTarget: iPhone 360 | m_StaticBatching: 1 361 | m_DynamicBatching: 0 362 | - m_BuildTarget: WebGL 363 | m_StaticBatching: 0 364 | m_DynamicBatching: 0 365 | m_BuildTargetGraphicsAPIs: 366 | - m_BuildTarget: AndroidPlayer 367 | m_APIs: 0b00000015000000 368 | m_Automatic: 1 369 | - m_BuildTarget: iOSSupport 370 | m_APIs: 0b00000008000000 371 | m_Automatic: 0 372 | - m_BuildTarget: AppleTVSupport 373 | m_APIs: 10000000 374 | m_Automatic: 0 375 | - m_BuildTarget: WebGLSupport 376 | m_APIs: 0b000000 377 | m_Automatic: 1 378 | m_BuildTargetVRSettings: 379 | - m_BuildTarget: Standalone 380 | m_Enabled: 0 381 | m_Devices: 382 | - Oculus 383 | - OpenVR 384 | m_BuildTargetEnableVuforiaSettings: [] 385 | openGLRequireES31: 0 386 | openGLRequireES31AEP: 0 387 | m_TemplateCustomTags: {} 388 | mobileMTRendering: 389 | Android: 1 390 | iPhone: 1 391 | tvOS: 1 392 | m_BuildTargetGroupLightmapEncodingQuality: [] 393 | m_BuildTargetGroupLightmapSettings: [] 394 | playModeTestRunnerEnabled: 0 395 | runPlayModeTestAsEditModeTest: 0 396 | actionOnDotNetUnhandledException: 1 397 | enableInternalProfiler: 0 398 | logObjCUncaughtExceptions: 1 399 | enableCrashReportAPI: 0 400 | cameraUsageDescription: 401 | locationUsageDescription: 402 | microphoneUsageDescription: 403 | switchNetLibKey: 404 | switchSocketMemoryPoolSize: 6144 405 | switchSocketAllocatorPoolSize: 128 406 | switchSocketConcurrencyLimit: 14 407 | switchScreenResolutionBehavior: 2 408 | switchUseCPUProfiler: 0 409 | switchApplicationID: 0x01004b9000490000 410 | switchNSODependencies: 411 | switchTitleNames_0: 412 | switchTitleNames_1: 413 | switchTitleNames_2: 414 | switchTitleNames_3: 415 | switchTitleNames_4: 416 | switchTitleNames_5: 417 | switchTitleNames_6: 418 | switchTitleNames_7: 419 | switchTitleNames_8: 420 | switchTitleNames_9: 421 | switchTitleNames_10: 422 | switchTitleNames_11: 423 | switchTitleNames_12: 424 | switchTitleNames_13: 425 | switchTitleNames_14: 426 | switchPublisherNames_0: 427 | switchPublisherNames_1: 428 | switchPublisherNames_2: 429 | switchPublisherNames_3: 430 | switchPublisherNames_4: 431 | switchPublisherNames_5: 432 | switchPublisherNames_6: 433 | switchPublisherNames_7: 434 | switchPublisherNames_8: 435 | switchPublisherNames_9: 436 | switchPublisherNames_10: 437 | switchPublisherNames_11: 438 | switchPublisherNames_12: 439 | switchPublisherNames_13: 440 | switchPublisherNames_14: 441 | switchIcons_0: {fileID: 0} 442 | switchIcons_1: {fileID: 0} 443 | switchIcons_2: {fileID: 0} 444 | switchIcons_3: {fileID: 0} 445 | switchIcons_4: {fileID: 0} 446 | switchIcons_5: {fileID: 0} 447 | switchIcons_6: {fileID: 0} 448 | switchIcons_7: {fileID: 0} 449 | switchIcons_8: {fileID: 0} 450 | switchIcons_9: {fileID: 0} 451 | switchIcons_10: {fileID: 0} 452 | switchIcons_11: {fileID: 0} 453 | switchIcons_12: {fileID: 0} 454 | switchIcons_13: {fileID: 0} 455 | switchIcons_14: {fileID: 0} 456 | switchSmallIcons_0: {fileID: 0} 457 | switchSmallIcons_1: {fileID: 0} 458 | switchSmallIcons_2: {fileID: 0} 459 | switchSmallIcons_3: {fileID: 0} 460 | switchSmallIcons_4: {fileID: 0} 461 | switchSmallIcons_5: {fileID: 0} 462 | switchSmallIcons_6: {fileID: 0} 463 | switchSmallIcons_7: {fileID: 0} 464 | switchSmallIcons_8: {fileID: 0} 465 | switchSmallIcons_9: {fileID: 0} 466 | switchSmallIcons_10: {fileID: 0} 467 | switchSmallIcons_11: {fileID: 0} 468 | switchSmallIcons_12: {fileID: 0} 469 | switchSmallIcons_13: {fileID: 0} 470 | switchSmallIcons_14: {fileID: 0} 471 | switchManualHTML: 472 | switchAccessibleURLs: 473 | switchLegalInformation: 474 | switchMainThreadStackSize: 1048576 475 | switchPresenceGroupId: 476 | switchLogoHandling: 0 477 | switchReleaseVersion: 0 478 | switchDisplayVersion: 1.0.0 479 | switchStartupUserAccount: 0 480 | switchTouchScreenUsage: 0 481 | switchSupportedLanguagesMask: 0 482 | switchLogoType: 0 483 | switchApplicationErrorCodeCategory: 484 | switchUserAccountSaveDataSize: 0 485 | switchUserAccountSaveDataJournalSize: 0 486 | switchApplicationAttribute: 0 487 | switchCardSpecSize: -1 488 | switchCardSpecClock: -1 489 | switchRatingsMask: 0 490 | switchRatingsInt_0: 0 491 | switchRatingsInt_1: 0 492 | switchRatingsInt_2: 0 493 | switchRatingsInt_3: 0 494 | switchRatingsInt_4: 0 495 | switchRatingsInt_5: 0 496 | switchRatingsInt_6: 0 497 | switchRatingsInt_7: 0 498 | switchRatingsInt_8: 0 499 | switchRatingsInt_9: 0 500 | switchRatingsInt_10: 0 501 | switchRatingsInt_11: 0 502 | switchLocalCommunicationIds_0: 503 | switchLocalCommunicationIds_1: 504 | switchLocalCommunicationIds_2: 505 | switchLocalCommunicationIds_3: 506 | switchLocalCommunicationIds_4: 507 | switchLocalCommunicationIds_5: 508 | switchLocalCommunicationIds_6: 509 | switchLocalCommunicationIds_7: 510 | switchParentalControl: 0 511 | switchAllowsScreenshot: 1 512 | switchAllowsVideoCapturing: 1 513 | switchAllowsRuntimeAddOnContentInstall: 0 514 | switchDataLossConfirmation: 0 515 | switchUserAccountLockEnabled: 0 516 | switchSupportedNpadStyles: 3 517 | switchNativeFsCacheSize: 32 518 | switchIsHoldTypeHorizontal: 0 519 | switchSupportedNpadCount: 8 520 | switchSocketConfigEnabled: 0 521 | switchTcpInitialSendBufferSize: 32 522 | switchTcpInitialReceiveBufferSize: 64 523 | switchTcpAutoSendBufferSizeMax: 256 524 | switchTcpAutoReceiveBufferSizeMax: 256 525 | switchUdpSendBufferSize: 9 526 | switchUdpReceiveBufferSize: 42 527 | switchSocketBufferEfficiency: 4 528 | switchSocketInitializeEnabled: 1 529 | switchNetworkInterfaceManagerInitializeEnabled: 1 530 | switchPlayerConnectionEnabled: 1 531 | ps4NPAgeRating: 12 532 | ps4NPTitleSecret: 533 | ps4NPTrophyPackPath: 534 | ps4ParentalLevel: 11 535 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 536 | ps4Category: 0 537 | ps4MasterVersion: 01.00 538 | ps4AppVersion: 01.00 539 | ps4AppType: 0 540 | ps4ParamSfxPath: 541 | ps4VideoOutPixelFormat: 0 542 | ps4VideoOutInitialWidth: 1920 543 | ps4VideoOutBaseModeInitialWidth: 1920 544 | ps4VideoOutReprojectionRate: 60 545 | ps4PronunciationXMLPath: 546 | ps4PronunciationSIGPath: 547 | ps4BackgroundImagePath: 548 | ps4StartupImagePath: 549 | ps4StartupImagesFolder: 550 | ps4IconImagesFolder: 551 | ps4SaveDataImagePath: 552 | ps4SdkOverride: 553 | ps4BGMPath: 554 | ps4ShareFilePath: 555 | ps4ShareOverlayImagePath: 556 | ps4PrivacyGuardImagePath: 557 | ps4NPtitleDatPath: 558 | ps4RemotePlayKeyAssignment: -1 559 | ps4RemotePlayKeyMappingDir: 560 | ps4PlayTogetherPlayerCount: 0 561 | ps4EnterButtonAssignment: 1 562 | ps4ApplicationParam1: 0 563 | ps4ApplicationParam2: 0 564 | ps4ApplicationParam3: 0 565 | ps4ApplicationParam4: 0 566 | ps4DownloadDataSize: 0 567 | ps4GarlicHeapSize: 2048 568 | ps4ProGarlicHeapSize: 2560 569 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 570 | ps4pnSessions: 1 571 | ps4pnPresence: 1 572 | ps4pnFriends: 1 573 | ps4pnGameCustomData: 1 574 | playerPrefsSupport: 0 575 | enableApplicationExit: 0 576 | resetTempFolder: 1 577 | restrictedAudioUsageRights: 0 578 | ps4UseResolutionFallback: 0 579 | ps4ReprojectionSupport: 0 580 | ps4UseAudio3dBackend: 0 581 | ps4SocialScreenEnabled: 0 582 | ps4ScriptOptimizationLevel: 0 583 | ps4Audio3dVirtualSpeakerCount: 14 584 | ps4attribCpuUsage: 0 585 | ps4PatchPkgPath: 586 | ps4PatchLatestPkgPath: 587 | ps4PatchChangeinfoPath: 588 | ps4PatchDayOne: 0 589 | ps4attribUserManagement: 0 590 | ps4attribMoveSupport: 0 591 | ps4attrib3DSupport: 0 592 | ps4attribShareSupport: 0 593 | ps4attribExclusiveVR: 0 594 | ps4disableAutoHideSplash: 0 595 | ps4videoRecordingFeaturesUsed: 0 596 | ps4contentSearchFeaturesUsed: 0 597 | ps4attribEyeToEyeDistanceSettingVR: 0 598 | ps4IncludedModules: [] 599 | monoEnv: 600 | splashScreenBackgroundSourceLandscape: {fileID: 0} 601 | splashScreenBackgroundSourcePortrait: {fileID: 0} 602 | spritePackerPolicy: 603 | webGLMemorySize: 256 604 | webGLExceptionSupport: 1 605 | webGLNameFilesAsHashes: 0 606 | webGLDataCaching: 1 607 | webGLDebugSymbols: 0 608 | webGLEmscriptenArgs: 609 | webGLModulesDirectory: 610 | webGLTemplate: APPLICATION:Default 611 | webGLAnalyzeBuildSize: 0 612 | webGLUseEmbeddedResources: 0 613 | webGLCompressionFormat: 1 614 | webGLLinkerTarget: 1 615 | webGLThreadsSupport: 0 616 | scriptingDefineSymbols: {} 617 | platformArchitecture: {} 618 | scriptingBackend: {} 619 | il2cppCompilerConfiguration: {} 620 | managedStrippingLevel: {} 621 | incrementalIl2cppBuild: {} 622 | allowUnsafeCode: 1 623 | additionalIl2CppArgs: 624 | scriptingRuntimeVersion: 1 625 | apiCompatibilityLevelPerPlatform: {} 626 | m_RenderingPath: 1 627 | m_MobileRenderingPath: 1 628 | metroPackageName: Template_3D 629 | metroPackageVersion: 630 | metroCertificatePath: 631 | metroCertificatePassword: 632 | metroCertificateSubject: 633 | metroCertificateIssuer: 634 | metroCertificateNotAfter: 0000000000000000 635 | metroApplicationDescription: Template_3D 636 | wsaImages: {} 637 | metroTileShortName: 638 | metroTileShowName: 0 639 | metroMediumTileShowName: 0 640 | metroLargeTileShowName: 0 641 | metroWideTileShowName: 0 642 | metroSupportStreamingInstall: 0 643 | metroLastRequiredScene: 0 644 | metroDefaultTileSize: 1 645 | metroTileForegroundText: 2 646 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 647 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 648 | a: 1} 649 | metroSplashScreenUseBackgroundColor: 0 650 | platformCapabilities: {} 651 | metroTargetDeviceFamilies: {} 652 | metroFTAName: 653 | metroFTAFileTypes: [] 654 | metroProtocolName: 655 | metroCompilationOverrides: 1 656 | XboxOneProductId: 657 | XboxOneUpdateKey: 658 | XboxOneSandboxId: 659 | XboxOneContentId: 660 | XboxOneTitleId: 661 | XboxOneSCId: 662 | XboxOneGameOsOverridePath: 663 | XboxOnePackagingOverridePath: 664 | XboxOneAppManifestOverridePath: 665 | XboxOneVersion: 1.0.0.0 666 | XboxOnePackageEncryption: 0 667 | XboxOnePackageUpdateGranularity: 2 668 | XboxOneDescription: 669 | XboxOneLanguage: 670 | - enus 671 | XboxOneCapability: [] 672 | XboxOneGameRating: {} 673 | XboxOneIsContentPackage: 0 674 | XboxOneEnableGPUVariability: 0 675 | XboxOneSockets: {} 676 | XboxOneSplashScreen: {fileID: 0} 677 | XboxOneAllowedProductIds: [] 678 | XboxOnePersistentLocalStorageSize: 0 679 | XboxOneXTitleMemory: 8 680 | xboxOneScriptCompiler: 0 681 | XboxOneOverrideIdentityName: 682 | vrEditorSettings: 683 | daydream: 684 | daydreamIconForeground: {fileID: 0} 685 | daydreamIconBackground: {fileID: 0} 686 | cloudServicesEnabled: 687 | UNet: 1 688 | luminIcon: 689 | m_Name: 690 | m_ModelFolderPath: 691 | m_PortalFolderPath: 692 | luminCert: 693 | m_CertPath: 694 | m_PrivateKeyPath: 695 | luminIsChannelApp: 0 696 | luminVersion: 697 | m_VersionCode: 1 698 | m_VersionName: 699 | facebookSdkVersion: 7.9.4 700 | facebookAppId: 701 | facebookCookies: 1 702 | facebookLogging: 1 703 | facebookStatus: 1 704 | facebookXfbml: 0 705 | facebookFrictionlessRequests: 1 706 | apiCompatibilityLevel: 6 707 | cloudProjectId: 708 | framebufferDepthMemorylessMode: 0 709 | projectName: 710 | organizationId: 711 | cloudEnabled: 0 712 | enableNativePlatformBackendsForNewInputSystem: 0 713 | disableOldInputManagerSupport: 0 714 | legacyClampBlendShapeWeights: 1 715 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.3.3f1 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 4 41 | resolutionScalingFixedDPIFactor: 1 42 | excludedTargetPlatforms: [] 43 | - serializedVersion: 2 44 | name: Low 45 | pixelLightCount: 0 46 | shadows: 0 47 | shadowResolution: 0 48 | shadowProjection: 1 49 | shadowCascades: 1 50 | shadowDistance: 20 51 | shadowNearPlaneOffset: 3 52 | shadowCascade2Split: 0.33333334 53 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 54 | shadowmaskMode: 0 55 | blendWeights: 2 56 | textureQuality: 0 57 | anisotropicTextures: 0 58 | antiAliasing: 0 59 | softParticles: 0 60 | softVegetation: 0 61 | realtimeReflectionProbes: 0 62 | billboardsFaceCameraPosition: 0 63 | vSyncCount: 0 64 | lodBias: 0.4 65 | maximumLODLevel: 0 66 | streamingMipmapsActive: 0 67 | streamingMipmapsAddAllCameras: 1 68 | streamingMipmapsMemoryBudget: 512 69 | streamingMipmapsRenderersPerFrame: 512 70 | streamingMipmapsMaxLevelReduction: 2 71 | streamingMipmapsMaxFileIORequests: 1024 72 | particleRaycastBudget: 16 73 | asyncUploadTimeSlice: 2 74 | asyncUploadBufferSize: 4 75 | resolutionScalingFixedDPIFactor: 1 76 | excludedTargetPlatforms: [] 77 | - serializedVersion: 2 78 | name: Medium 79 | pixelLightCount: 1 80 | shadows: 1 81 | shadowResolution: 0 82 | shadowProjection: 1 83 | shadowCascades: 1 84 | shadowDistance: 20 85 | shadowNearPlaneOffset: 3 86 | shadowCascade2Split: 0.33333334 87 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 88 | shadowmaskMode: 0 89 | blendWeights: 2 90 | textureQuality: 0 91 | anisotropicTextures: 1 92 | antiAliasing: 0 93 | softParticles: 0 94 | softVegetation: 0 95 | realtimeReflectionProbes: 0 96 | billboardsFaceCameraPosition: 0 97 | vSyncCount: 1 98 | lodBias: 0.7 99 | maximumLODLevel: 0 100 | streamingMipmapsActive: 0 101 | streamingMipmapsAddAllCameras: 1 102 | streamingMipmapsMemoryBudget: 512 103 | streamingMipmapsRenderersPerFrame: 512 104 | streamingMipmapsMaxLevelReduction: 2 105 | streamingMipmapsMaxFileIORequests: 1024 106 | particleRaycastBudget: 64 107 | asyncUploadTimeSlice: 2 108 | asyncUploadBufferSize: 4 109 | resolutionScalingFixedDPIFactor: 1 110 | excludedTargetPlatforms: [] 111 | - serializedVersion: 2 112 | name: High 113 | pixelLightCount: 2 114 | shadows: 2 115 | shadowResolution: 1 116 | shadowProjection: 1 117 | shadowCascades: 2 118 | shadowDistance: 40 119 | shadowNearPlaneOffset: 3 120 | shadowCascade2Split: 0.33333334 121 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 122 | shadowmaskMode: 1 123 | blendWeights: 2 124 | textureQuality: 0 125 | anisotropicTextures: 1 126 | antiAliasing: 2 127 | softParticles: 0 128 | softVegetation: 1 129 | realtimeReflectionProbes: 1 130 | billboardsFaceCameraPosition: 1 131 | vSyncCount: 1 132 | lodBias: 1 133 | maximumLODLevel: 0 134 | streamingMipmapsActive: 0 135 | streamingMipmapsAddAllCameras: 1 136 | streamingMipmapsMemoryBudget: 512 137 | streamingMipmapsRenderersPerFrame: 512 138 | streamingMipmapsMaxLevelReduction: 2 139 | streamingMipmapsMaxFileIORequests: 1024 140 | particleRaycastBudget: 256 141 | asyncUploadTimeSlice: 2 142 | asyncUploadBufferSize: 4 143 | resolutionScalingFixedDPIFactor: 1 144 | excludedTargetPlatforms: [] 145 | - serializedVersion: 2 146 | name: Very High 147 | pixelLightCount: 3 148 | shadows: 2 149 | shadowResolution: 2 150 | shadowProjection: 1 151 | shadowCascades: 2 152 | shadowDistance: 40 153 | shadowNearPlaneOffset: 3 154 | shadowCascade2Split: 0.33333334 155 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 156 | shadowmaskMode: 1 157 | blendWeights: 4 158 | textureQuality: 0 159 | anisotropicTextures: 1 160 | antiAliasing: 4 161 | softParticles: 1 162 | softVegetation: 1 163 | realtimeReflectionProbes: 1 164 | billboardsFaceCameraPosition: 1 165 | vSyncCount: 1 166 | lodBias: 1.5 167 | maximumLODLevel: 0 168 | streamingMipmapsActive: 0 169 | streamingMipmapsAddAllCameras: 1 170 | streamingMipmapsMemoryBudget: 512 171 | streamingMipmapsRenderersPerFrame: 512 172 | streamingMipmapsMaxLevelReduction: 2 173 | streamingMipmapsMaxFileIORequests: 1024 174 | particleRaycastBudget: 1024 175 | asyncUploadTimeSlice: 2 176 | asyncUploadBufferSize: 4 177 | resolutionScalingFixedDPIFactor: 1 178 | excludedTargetPlatforms: [] 179 | - serializedVersion: 2 180 | name: Ultra 181 | pixelLightCount: 4 182 | shadows: 2 183 | shadowResolution: 2 184 | shadowProjection: 1 185 | shadowCascades: 4 186 | shadowDistance: 150 187 | shadowNearPlaneOffset: 3 188 | shadowCascade2Split: 0.33333334 189 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 190 | shadowmaskMode: 1 191 | blendWeights: 4 192 | textureQuality: 0 193 | anisotropicTextures: 1 194 | antiAliasing: 4 195 | softParticles: 1 196 | softVegetation: 1 197 | realtimeReflectionProbes: 1 198 | billboardsFaceCameraPosition: 1 199 | vSyncCount: 1 200 | lodBias: 2 201 | maximumLODLevel: 0 202 | streamingMipmapsActive: 0 203 | streamingMipmapsAddAllCameras: 1 204 | streamingMipmapsMemoryBudget: 512 205 | streamingMipmapsRenderersPerFrame: 512 206 | streamingMipmapsMaxLevelReduction: 2 207 | streamingMipmapsMaxFileIORequests: 1024 208 | particleRaycastBudget: 4096 209 | asyncUploadTimeSlice: 2 210 | asyncUploadBufferSize: 4 211 | resolutionScalingFixedDPIFactor: 1 212 | excludedTargetPlatforms: [] 213 | m_PerPlatformDefaultQuality: {} 214 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 1 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | UnityAdsSettings: 25 | m_Enabled: 0 26 | m_InitializeOnStartup: 1 27 | m_TestMode: 0 28 | m_IosGameId: 29 | m_AndroidGameId: 30 | m_GameIds: {} 31 | m_GameId: 32 | PerformanceReportingSettings: 33 | m_Enabled: 0 34 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TextureUpdater 2 | 3 | Texture Updater uses [CommandBuffer.IssuePluginCustomTextureUpdate](https://docs.unity3d.com/ScriptReference/Rendering.CommandBuffer.IssuePluginCustomTextureUpdate.html) to update the texture at runtime. In addition, the generated texture image is done in C# with the help of the job system and the burst compiler. 4 | 5 | The Plasma effect example is ported from https://github.com/keijiro/TextureUpdateExample/ 6 | 7 | ## Why? 8 | `CommandBuffer.IssuePluginCustomTextureUpdate` is designed to work with native code, but any change of the logic requires recompiling the plugins for each platform. This approach makes the texture updater plugin reusable, as the texture update logic is moved to C#. 9 | 10 | ## known issues 11 | - Because the native thread is calling managed code (to generate the texture), it is causing the editor to hang on domain unload (the second time you press play). 12 | The example is currently using [Texture2D.LoadRawTextureData](https://docs.unity3d.com/ScriptReference/Texture2D.LoadRawTextureData.html) in the editor to prevent this issue. 13 | --------------------------------------------------------------------------------