From fe43256bf4e342c004d8e27d331ec402691b95cc Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 26 Jun 2023 02:41:11 -0400 Subject: [PATCH] com.rest.blockadelabs 1.0.0-preview.5 (#6) --- BlockadeLabs/Assets/Demo/SkyboxDemo.cs | 4 +- .../Runtime/BlockadeLabsClient.cs | 2 +- .../Runtime/BlockadeLabsSettingsInfo.cs | 2 +- .../Runtime/Skyboxes/SkyboxEndpoint.cs | 107 ++++++- .../Runtime/Skyboxes/SkyboxInfo.cs | 11 +- .../Runtime/Skyboxes/SkyboxRequest.cs | 289 +++++++++++++++++- .../Runtime/Skyboxes/SkyboxStyle.cs | 2 + .../Tests/TestFixture_00_Skyboxes.cs | 14 +- .../com.rest.blockadelabs/package.json | 4 +- .../ProjectSettings/ProjectSettings.asset | 59 ++-- .../ProjectSettings/ProjectVersion.txt | 4 +- BlockadeLabs/ProjectSettings/boot.config | 0 12 files changed, 437 insertions(+), 61 deletions(-) delete mode 100644 BlockadeLabs/ProjectSettings/boot.config diff --git a/BlockadeLabs/Assets/Demo/SkyboxDemo.cs b/BlockadeLabs/Assets/Demo/SkyboxDemo.cs index 6322679..adbbc95 100644 --- a/BlockadeLabs/Assets/Demo/SkyboxDemo.cs +++ b/BlockadeLabs/Assets/Demo/SkyboxDemo.cs @@ -1,3 +1,5 @@ +// Licensed under the MIT License. See LICENSE in the project root for license information. + using BlockadeLabs.Skyboxes; using System; using System.Collections.Generic; @@ -79,7 +81,7 @@ private async void GenerateSkybox(string prompt) generateButton.interactable = false; promptInputField.interactable = false; var request = new SkyboxRequest(prompt, skyboxStyleId: skyboxOptions[skyboxStyleDropdown.value].Id); - var skyboxInfo = await api.SkyboxEndpoint.GenerateSkyboxAsync(request, lifetimeCancellationTokenSource.Token).ConfigureAwait(true); + var skyboxInfo = await api.SkyboxEndpoint.GenerateSkyboxAsync(request, cancellationToken: lifetimeCancellationTokenSource.Token).ConfigureAwait(true); skyboxMaterial.mainTexture = skyboxInfo.MainTexture; Debug.Log($"Successfully created skybox: {skyboxInfo.Id}"); } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsClient.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsClient.cs index ccb83a0..94e650c 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsClient.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsClient.cs @@ -36,7 +36,7 @@ protected override void SetupDefaultRequestHeaders() #if !UNITY_WEBGL {"User-Agent", "com.rest.blockadelabs" }, #endif - {"X-API-Key", Authentication.Info.ApiKey } + {"x-api-key", Authentication.Info.ApiKey } }; } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsSettingsInfo.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsSettingsInfo.cs index 61d3cd7..88e5482 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsSettingsInfo.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/BlockadeLabsSettingsInfo.cs @@ -5,7 +5,7 @@ namespace BlockadeLabs { public sealed class BlockadeLabsSettingsInfo : ISettingsInfo { - internal const string DefaultDomain = "blockade.cloudshell.run"; + internal const string DefaultDomain = "backend.blockadelabs.com"; internal const string DefaultVersion = "v1"; public BlockadeLabsSettingsInfo() diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxEndpoint.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxEndpoint.cs index d9eff55..313eb77 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxEndpoint.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxEndpoint.cs @@ -1,45 +1,124 @@ // Licensed under the MIT License. See LICENSE in the project root for license information. using Newtonsoft.Json; +using System; using System.Collections.Generic; +using System.IO; using System.Threading; using System.Threading.Tasks; +using UnityEngine; +using UnityEngine.Scripting; using Utilities.WebRequestRest; namespace BlockadeLabs.Skyboxes { public sealed class SkyboxEndpoint : BlockadeLabsBaseEndpoint { + [Preserve] + private class SkyboxInfoRequest + { + [Preserve] + [JsonConstructor] + public SkyboxInfoRequest([JsonProperty("request")] SkyboxInfo skyboxInfo) + { + SkyboxInfo = skyboxInfo; + } + + [Preserve] + [JsonProperty("request")] + public SkyboxInfo SkyboxInfo { get; } + } + public SkyboxEndpoint(BlockadeLabsClient client) : base(client) { } - protected override string Root => "skybox"; + protected override string Root => string.Empty; /// /// Returns the list of predefined styles that can influence the overall aesthetic of your skybox generation. /// - /// + /// Optional, . /// A list of s. public async Task> GetSkyboxStylesAsync(CancellationToken cancellationToken = default) { - var endpoint = GetUrl("/styles"); + var endpoint = GetUrl("skybox/styles"); var response = await Rest.GetAsync(endpoint, parameters: new RestParameters(client.DefaultRequestHeaders), cancellationToken); response.Validate(); return JsonConvert.DeserializeObject>(response.Body, client.JsonSerializationOptions); } /// - /// Generate a skybox image + /// Generate a skybox image. /// - /// - /// - /// - public async Task GenerateSkyboxAsync(SkyboxRequest skyboxRequest, CancellationToken cancellationToken = default) + /// . + /// Optional, polling interval in seconds. + /// Optional, . + /// . + public async Task GenerateSkyboxAsync(SkyboxRequest skyboxRequest, int? pollingInterval = null, CancellationToken cancellationToken = default) { - var jsonContent = JsonConvert.SerializeObject(skyboxRequest, client.JsonSerializationOptions); - var response = await Rest.PostAsync(GetUrl("/generate"), jsonContent, parameters: new RestParameters(client.DefaultRequestHeaders), cancellationToken); + var formData = new WWWForm(); + formData.AddField("prompt", skyboxRequest.Prompt); + + if (!string.IsNullOrWhiteSpace(skyboxRequest.NegativeText)) + { + formData.AddField("negative_text", skyboxRequest.NegativeText); + } + + if (skyboxRequest.Seed.HasValue) + { + formData.AddField("seed", skyboxRequest.Seed.Value); + } + + if (skyboxRequest.SkyboxStyleId.HasValue) + { + formData.AddField("skybox_style_id", skyboxRequest.SkyboxStyleId.Value); + } + + if (skyboxRequest.RemixImagineId.HasValue) + { + formData.AddField("remix_imagine_id", skyboxRequest.RemixImagineId.Value); + } + + if (skyboxRequest.Depth) + { + formData.AddField("return_depth", skyboxRequest.Depth.ToString()); + } + + if (skyboxRequest.ControlImage != null) + { + if (!string.IsNullOrWhiteSpace(skyboxRequest.ControlModel)) + { + formData.AddField("control_model", skyboxRequest.ControlModel); + } + + using var imageData = new MemoryStream(); + await skyboxRequest.ControlImage.CopyToAsync(imageData, cancellationToken); + formData.AddBinaryData("control_image", imageData.ToArray(), skyboxRequest.ControlImageFileName); + skyboxRequest.Dispose(); + } + + var response = await Rest.PostAsync(GetUrl("skybox"), formData, parameters: new RestParameters(client.DefaultRequestHeaders), cancellationToken); response.Validate(); var skyboxInfo = JsonConvert.DeserializeObject(response.Body, client.JsonSerializationOptions); + while (!cancellationToken.IsCancellationRequested) + { + await Task.Delay(pollingInterval ?? 3 * 1000, cancellationToken) + .ConfigureAwait(true); // Configure await to make sure we're still in Unity context + skyboxInfo = await GetSkyboxInfoAsync(skyboxInfo, cancellationToken); + + if (skyboxInfo.Status is "pending" or "processing") + { + continue; + } + + break; + } + + if (skyboxInfo.Status != "complete") + { + throw new Exception($"Failed to generate skybox! {skyboxInfo.Id} -> {skyboxInfo.Status}\nError: {skyboxInfo.ErrorMessage}\n{skyboxInfo}"); + } + var downloadTasks = new List(2) { Task.Run(async () => @@ -62,14 +141,14 @@ public async Task GenerateSkyboxAsync(SkyboxRequest skyboxRequest, C /// /// Returns the skybox metadata for the given skybox id. /// - /// - /// + /// Skybox Id. + /// Optional, . /// . public async Task GetSkyboxInfoAsync(int id, CancellationToken cancellationToken = default) { - var response = await Rest.GetAsync(GetUrl($"/info/{id}"), parameters: new RestParameters(client.DefaultRequestHeaders), cancellationToken); + var response = await Rest.GetAsync(GetUrl($"imagine/requests/{id}"), parameters: new RestParameters(client.DefaultRequestHeaders), cancellationToken); response.Validate(); - return JsonConvert.DeserializeObject(response.Body, client.JsonSerializationOptions); + return JsonConvert.DeserializeObject(response.Body, client.JsonSerializationOptions).SkyboxInfo; } } } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxInfo.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxInfo.cs index b477cad..ece1607 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxInfo.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxInfo.cs @@ -19,7 +19,8 @@ public SkyboxInfo( [JsonProperty("title")] string title, [JsonProperty("obfuscated_id")] string obfuscatedId, [JsonProperty("created_at")] DateTime createdAt, - [JsonProperty("updated_at")] DateTime updatedAt) + [JsonProperty("updated_at")] DateTime updatedAt, + [JsonProperty("error_message")] string errorMessage = null) { Id = id; SkyboxStyleId = skyboxStyleId; @@ -33,6 +34,7 @@ public SkyboxInfo( ObfuscatedId = obfuscatedId; CreatedAt = createdAt; UpdatedAt = updatedAt; + ErrorMessage = errorMessage; } [JsonProperty("id")] @@ -79,5 +81,12 @@ public SkyboxInfo( [JsonProperty("updated_at")] public DateTime UpdatedAt { get; } + + [JsonProperty("error_message")] + public string ErrorMessage { get; set; } + + public override string ToString() => JsonConvert.SerializeObject(this, Formatting.Indented); + + public static implicit operator int(SkyboxInfo skyboxInfo) => skyboxInfo.Id; } } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxRequest.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxRequest.cs index 51e4159..12e6b1b 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxRequest.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxRequest.cs @@ -1,9 +1,42 @@ -using Newtonsoft.Json; +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using System.IO; +using UnityEngine; namespace BlockadeLabs.Skyboxes { - public sealed class SkyboxRequest + public sealed class SkyboxRequest : IDisposable { + /// + /// Creates a new Skybox Request. + /// + /// + /// Text prompt describing the skybox world you wish to create. + /// Maximum number of characters: 550. + /// If you are using then the maximum number of characters is defined + /// in the max-char response parameter defined for each style. + /// + /// + /// Describe things to avoid in the skybox world you wish to create. + /// Maximum number of characters: 200. + /// If you are using then the maximum number of characters is defined + /// in the negative-text-max-char response parameter defined for each style. + /// + /// + /// Send 0 for a random seed generation. + /// Any other number (1-2147483647) set will be used to "freeze" the image generator generator and + /// create similar images when run again with the same seed and settings. + /// + /// + /// Id of predefined style that influences the overall aesthetic of your skybox generation. + /// + /// + /// ID of a previously generated skybox. + /// + /// + /// Return depth map image. + /// public SkyboxRequest( string prompt, string negativeText = null, @@ -20,22 +53,262 @@ public SkyboxRequest( Depth = depth; } - [JsonProperty("prompt")] + /// + /// Creates a new Skybox Request. + /// + /// + /// Text prompt describing the skybox world you wish to create. + /// Maximum number of characters: 550. + /// If you are using then the maximum number of characters is defined + /// in the max-char response parameter defined for each style. + /// + /// + /// File path to the control image for the request. + /// + /// + /// Model used for the . + /// Currently the only option is: "scribble". + /// + /// + /// Describe things to avoid in the skybox world you wish to create. + /// Maximum number of characters: 200. + /// If you are using then the maximum number of characters is defined + /// in the negative-text-max-char response parameter defined for each style. + /// + /// + /// Send 0 for a random seed generation. + /// Any other number (1-2147483647) set will be used to "freeze" the image generator generator and + /// create similar images when run again with the same seed and settings. + /// + /// + /// Id of predefined style that influences the overall aesthetic of your skybox generation. + /// + /// + /// ID of a previously generated skybox. + /// + /// + /// Return depth map image. + /// + public SkyboxRequest( + string prompt, + string controlImagePath, + string controlModel = null, + string negativeText = null, + int? seed = null, + int? skyboxStyleId = null, + int? remixImagineId = null, + bool depth = false) + : this( + prompt, + File.OpenRead(controlImagePath), + Path.GetFileName(controlImagePath), + controlModel, + negativeText, + seed, + skyboxStyleId, + remixImagineId, + depth) + { + } + + /// + /// Creates a new Skybox Request. + /// + /// + /// Text prompt describing the skybox world you wish to create. + /// Maximum number of characters: 550. + /// If you are using then the maximum number of characters is defined + /// in the max-char response parameter defined for each style. + /// + /// + /// Control image used to influence the generation. + /// The image needs to be exactly 1024 pixels wide and 512 pixels tall PNG equirectangular projection image + /// of a scribble with black background and white brush strokes. + /// + /// + /// Model used for the . + /// Currently the only option is: "scribble". + /// + /// + /// Describe things to avoid in the skybox world you wish to create. + /// Maximum number of characters: 200. + /// If you are using then the maximum number of characters is defined + /// in the negative-text-max-char response parameter defined for each style. + /// + /// + /// Send 0 for a random seed generation. + /// Any other number (1-2147483647) set will be used to "freeze" the image generator generator and + /// create similar images when run again with the same seed and settings. + /// + /// + /// Id of predefined style that influences the overall aesthetic of your skybox generation. + /// + /// + /// ID of a previously generated skybox. + /// + /// + /// Return depth map image. + /// + public SkyboxRequest( + string prompt, + Texture2D controlImage, + string controlModel = null, + string negativeText = null, + int? seed = null, + int? skyboxStyleId = null, + int? remixImagineId = null, + bool depth = false) + : this( + prompt, + new MemoryStream(controlImage.EncodeToPNG()), + !string.IsNullOrWhiteSpace(controlImage.name) ? $"{controlImage.name}.png" : null, + controlModel, + negativeText, + seed, + skyboxStyleId, + remixImagineId, + depth) + { + if (controlImage.height != 512 || controlImage.width != 1024) + { + throw new ArgumentException($"{nameof(ControlImage)} dimensions should be 512x1024"); + } + } + + /// + /// Creates a new Skybox Request. + /// + /// + /// Text prompt describing the skybox world you wish to create. + /// Maximum number of characters: 550. + /// If you are using then the maximum number of characters is defined + /// in the max-char response parameter defined for each style. + /// + /// + /// data of control image for request. + /// + /// + /// File name of . + /// + /// + /// Model used for the . + /// Currently the only option is: "scribble". + /// + /// + /// Describe things to avoid in the skybox world you wish to create. + /// Maximum number of characters: 200. + /// If you are using then the maximum number of characters is defined + /// in the negative-text-max-char response parameter defined for each style. + /// + /// + /// Send 0 for a random seed generation. + /// Any other number (1-2147483647) set will be used to "freeze" the image generator generator and + /// create similar images when run again with the same seed and settings. + /// + /// + /// Id of predefined style that influences the overall aesthetic of your skybox generation. + /// + /// + /// ID of a previously generated skybox. + /// + /// + /// Return depth map image. + /// + public SkyboxRequest( + string prompt, + Stream controlImage, + string controlImageFileName, + string controlModel = null, + string negativeText = null, + int? seed = null, + int? skyboxStyleId = null, + int? remixImagineId = null, + bool depth = false) + : this(prompt, negativeText, seed, skyboxStyleId, remixImagineId, depth) + { + ControlImage = controlImage; + + if (string.IsNullOrWhiteSpace(controlImageFileName)) + { + const string defaultImageName = "control_image.png"; + controlImageFileName = defaultImageName; + } + + ControlImageFileName = controlImageFileName; + ControlModel = controlModel; + } + + ~SkyboxRequest() => Dispose(false); + + /// + /// Text prompt describing the skybox world you wish to create. + /// Maximum number of characters: 550. + /// If you are using then the maximum number of characters is defined + /// in the max-char response parameter defined for each style. + /// public string Prompt { get; } - [JsonProperty("negative_text")] + /// + /// Describe things to avoid in the skybox world you wish to create. + /// Maximum number of characters: 200. + /// If you are using then the maximum number of characters is defined + /// in the negative-text-max-char response parameter defined for each style. + /// public string NegativeText { get; } - [JsonProperty("seed")] + /// + /// Send 0 for a random seed generation. + /// Any other number (1-2147483647) set will be used to "freeze" the image generator generator and + /// create similar images when run again with the same seed and settings. + /// public int? Seed { get; } - [JsonProperty("skybox_style_id")] + /// + /// Id of predefined style that influences the overall aesthetic of your skybox generation. + /// public int? SkyboxStyleId { get; } - [JsonProperty("remix_imagine_id")] + /// + /// ID of a previously generated skybox. + /// public int? RemixImagineId { get; } - [JsonProperty("return_depth")] + /// + /// Return depth map image. + /// public bool Depth { get; } + + /// + /// Control image used to influence the generation. + /// The image needs to be exactly 1024 pixels wide and 512 pixels tall PNG equirectangular projection image + /// of a scribble with black background and white brush strokes. + /// + public Stream ControlImage { get; } + + /// + /// File name of . + /// + public string ControlImageFileName { get; } + + /// + /// Model used for the . + /// Currently the only option is: "scribble". + /// + public string ControlModel { get; } + + private void Dispose(bool disposing) + { + if (disposing) + { + ControlImage?.Close(); + ControlImage?.Dispose(); + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } } } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxStyle.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxStyle.cs index 92a54d3..db3ee70 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxStyle.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Runtime/Skyboxes/SkyboxStyle.cs @@ -39,5 +39,7 @@ public SkyboxStyle( [JsonProperty("sort_order")] public int SortOrder { get; } + + public static implicit operator int(SkyboxStyle style) => style.Id; } } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/Tests/TestFixture_00_Skyboxes.cs b/BlockadeLabs/Packages/com.rest.blockadelabs/Tests/TestFixture_00_Skyboxes.cs index 6747b56..53d16d6 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/Tests/TestFixture_00_Skyboxes.cs +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/Tests/TestFixture_00_Skyboxes.cs @@ -27,7 +27,7 @@ public async Task Test_02_GenerateSkybox() var api = new BlockadeLabsClient(); Assert.IsNotNull(api.SkyboxEndpoint); - var request = new SkyboxRequest("underwater", depth: true); + var request = new SkyboxRequest("mars", depth: true); var skyboxInfo = await api.SkyboxEndpoint.GenerateSkyboxAsync(request); Assert.IsNotNull(skyboxInfo); Debug.Log($"Successfully created skybox: {skyboxInfo.Id}"); @@ -35,17 +35,7 @@ public async Task Test_02_GenerateSkybox() Assert.IsNotNull(skyboxInfo.MainTexture); Debug.Log(skyboxInfo.DepthTextureUrl); Assert.IsNotNull(skyboxInfo.DepthTexture); - } - - [Test] - public async Task Test_03_GetSkyboxInfo() - { - var api = new BlockadeLabsClient(); - Assert.IsNotNull(api.SkyboxEndpoint); - - var result = await api.SkyboxEndpoint.GetSkyboxInfoAsync(5719637); - Assert.IsNotNull(result); - Debug.Log($"Skybox: {result.Id} | {result.MainTextureUrl}"); + Debug.Log(skyboxInfo.ToString()); } } } diff --git a/BlockadeLabs/Packages/com.rest.blockadelabs/package.json b/BlockadeLabs/Packages/com.rest.blockadelabs/package.json index 4f6982c..58b95ee 100644 --- a/BlockadeLabs/Packages/com.rest.blockadelabs/package.json +++ b/BlockadeLabs/Packages/com.rest.blockadelabs/package.json @@ -3,7 +3,7 @@ "displayName": "BlockadeLabs", "description": "A Non-Official Blockade Labs Rest Client for Unity (UPM)", "keywords": [], - "version": "1.0.0-preview.4", + "version": "1.0.0-preview.5", "unity": "2021.3", "documentationUrl": "https://github.com/RageAgainstThePixel/com.rest.blockadelabs#documentation", "changelogUrl": "https://github.com/RageAgainstThePixel/com.rest.blockadelabs/releases", @@ -17,7 +17,7 @@ "url": "https://github.com/StephenHodgson" }, "dependencies": { - "com.utilities.rest": "2.0.6" + "com.utilities.rest": "2.0.7" }, "publishConfig": { "registry": "https://package.openupm.com" diff --git a/BlockadeLabs/ProjectSettings/ProjectSettings.asset b/BlockadeLabs/ProjectSettings/ProjectSettings.asset index 3e47e6a..4e222a3 100644 --- a/BlockadeLabs/ProjectSettings/ProjectSettings.asset +++ b/BlockadeLabs/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 24 + serializedVersion: 26 productGUID: 40b10b75df2bc1c4081e9d8da766a3c0 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -48,14 +48,15 @@ PlayerSettings: defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 + m_SpriteBatchVertexThreshold: 300 m_MTRendering: 1 mipStripping: 0 numberOfMipsStripped: 0 + numberOfMipsStrippedPerMipmapLimitGroup: {} m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 iosUseCustomAppBackgroundBehavior: 0 - iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 allowedAutorotateToLandscapeRight: 1 @@ -119,8 +120,11 @@ PlayerSettings: switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 + switchGpuScratchPoolGranularity: 2097152 + switchAllowGpuScratchShrinking: 0 switchNVNMaxPublicTextureIDCount: 0 switchNVNMaxPublicSamplerIDCount: 0 + switchNVNGraphicsFirmwareMemory: 32 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 @@ -128,13 +132,8 @@ PlayerSettings: vulkanEnablePreTransform: 0 vulkanEnableLateAcquireNextImage: 0 vulkanEnableCommandBufferRecycling: 1 - m_SupportedAspectRatios: - 4:3: 1 - 5:4: 1 - 16:10: 1 - 16:9: 1 - Others: 1 - bundleVersion: 1.0.0-preview.1 + loadStoreDebugModeEnabled: 0 + bundleVersion: 1.0.0-preview.5 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 @@ -147,7 +146,7 @@ PlayerSettings: enableFrameTimingStats: 0 enableOpenGLProfilerGPURecorders: 1 useHDRDisplay: 0 - D3DHDRBitDepth: 0 + hdrBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 @@ -160,6 +159,7 @@ PlayerSettings: Standalone: com.rest.blockadelabs iPhone: com.rest.blockadelabs buildNumber: + Bratwurst: 0 Standalone: 0 iPhone: 0 tvOS: 0 @@ -178,12 +178,15 @@ PlayerSettings: APKExpansionFiles: 0 keepLoadedShadersAlive: 0 StripUnusedMeshComponents: 0 + strictShaderVariantMatching: 0 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 iOSTargetOSVersionString: 15.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 tvOSTargetOSVersionString: 12.0 + bratwurstSdkVersion: 0 + bratwurstTargetOSVersionString: 16.4 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 @@ -231,8 +234,10 @@ PlayerSettings: appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: + bratwurstManualSigningProvisioningProfileID: iOSManualSigningProvisioningProfileType: 0 tvOSManualSigningProvisioningProfileType: 0 + bratwurstManualSigningProvisioningProfileType: 0 appleEnableAutomaticSigning: 0 iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 @@ -247,6 +252,7 @@ PlayerSettings: useCustomLauncherGradleManifest: 0 useCustomBaseGradleTemplate: 0 useCustomGradlePropertiesTemplate: 0 + useCustomGradleSettingsTemplate: 0 useCustomProguardFile: 0 AndroidTargetArchitectures: 3 AndroidTargetDevices: 0 @@ -254,6 +260,7 @@ PlayerSettings: androidSplashScreen: {fileID: 0} AndroidKeystoreName: AndroidKeyaliasName: + AndroidEnableArmv9SecurityFeatures: 0 AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 0 AndroidIsGame: 1 @@ -267,7 +274,6 @@ PlayerSettings: banner: {fileID: 0} androidGamepadSupportLevel: 0 chromeosInputEmulation: 0 - AndroidMinifyWithR8: 0 AndroidMinifyRelease: 0 AndroidMinifyDebug: 0 AndroidValidateAppBundleSize: 1 @@ -486,7 +492,9 @@ PlayerSettings: iPhone: 1 tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] + m_BuildTargetGroupHDRCubemapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetGroupLoadStoreDebugModeSettings: [] m_BuildTargetNormalMapEncoding: [] m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 @@ -499,6 +507,7 @@ PlayerSettings: locationUsageDescription: microphoneUsageDescription: bluetoothUsageDescription: + macOSTargetOSVersion: 10.13.0 switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 @@ -510,6 +519,7 @@ PlayerSettings: switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: + switchCompilerFlags: switchTitleNames_0: switchTitleNames_1: switchTitleNames_2: @@ -725,6 +735,7 @@ PlayerSettings: webGLMemorySize: 32 webGLExceptionSupport: 1 webGLNameFilesAsHashes: 0 + webGLShowDiagnostics: 0 webGLDataCaching: 1 webGLDebugSymbols: 0 webGLEmscriptenArgs: @@ -737,6 +748,12 @@ PlayerSettings: webGLLinkerTarget: 1 webGLThreadsSupport: 0 webGLDecompressionFallback: 0 + webGLInitialMemorySize: 32 + webGLMaximumMemorySize: 2048 + webGLMemoryGrowthMode: 2 + webGLMemoryLinearGrowthStep: 16 + webGLMemoryGeometricGrowthStep: 0.2 + webGLMemoryGeometricGrowthCap: 96 webGLPowerPreference: 2 scriptingDefineSymbols: {} additionalCompilerArguments: {} @@ -746,6 +763,7 @@ PlayerSettings: Server: 1 Standalone: 1 il2cppCompilerConfiguration: {} + il2cppCodeGeneration: {} managedStrippingLevel: Android: 1 EmbeddedLinux: 1 @@ -767,12 +785,9 @@ PlayerSettings: suppressCommonWarnings: 1 allowUnsafeCode: 0 useDeterministicCompilation: 1 - enableRoslynAnalyzers: 1 - selectedPlatform: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 gcIncremental: 0 - assemblyVersionValidation: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: Windows Store Apps: 6 @@ -801,7 +816,7 @@ PlayerSettings: metroSplashScreenUseBackgroundColor: 0 platformCapabilities: WindowsStoreApps: - CodeGeneration: False + EnterpriseAuthentication: False OfflineMapsManagement: False HumanInterfaceDevice: False Location: False @@ -835,10 +850,10 @@ PlayerSettings: PointOfService: False RecordedCallsFolder: False Contacts: False - Proximity: False InternetClient: False + CodeGeneration: False BackgroundMediaPlayback: False - EnterpriseAuthentication: False + Proximity: False metroTargetDeviceFamilies: Desktop: False Holographic: False @@ -891,6 +906,11 @@ PlayerSettings: luminVersion: m_VersionCode: 1 m_VersionName: + hmiPlayerDataPath: + hmiForceSRGBBlit: 1 + embeddedLinuxEnableGamepadInput: 1 + hmiLogStartupTiming: 0 + hmiCpuConfiguration: apiCompatibilityLevel: 6 activeInputHandler: 2 windowsGamepadBackendHint: 0 @@ -901,6 +921,7 @@ PlayerSettings: organizationId: cloudEnabled: 0 legacyClampBlendShapeWeights: 0 - playerDataPath: - forceSRGBBlit: 1 + hmiLoadingImage: {fileID: 0} + platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 + insecureHttpOption: 0 diff --git a/BlockadeLabs/ProjectSettings/ProjectVersion.txt b/BlockadeLabs/ProjectSettings/ProjectVersion.txt index 6c676f0..8927a2e 100644 --- a/BlockadeLabs/ProjectSettings/ProjectVersion.txt +++ b/BlockadeLabs/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.24f1 -m_EditorVersionWithRevision: 2021.3.24f1 (cf10dcf7010d) +m_EditorVersion: 2022.3.3f1 +m_EditorVersionWithRevision: 2022.3.3f1 (7cdc2969a641) diff --git a/BlockadeLabs/ProjectSettings/boot.config b/BlockadeLabs/ProjectSettings/boot.config deleted file mode 100644 index e69de29..0000000