From 8bec3696b607de91fc62eb3d5e12ef99e37a7c6a Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Tue, 28 Apr 2026 21:41:12 -0700 Subject: [PATCH 1/3] [Patch] Fixed bundle script to include required helper scripts --- create_app_bundle.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/create_app_bundle.sh b/create_app_bundle.sh index fd3d82e..75c7668 100755 --- a/create_app_bundle.sh +++ b/create_app_bundle.sh @@ -69,6 +69,9 @@ if [ -d "$SCRIPTS_SRC" ]; then mkdir -p "$APP_BUNDLE/Contents/Resources/scripts" cp "$SCRIPTS_SRC/export-untold" "$APP_BUNDLE/Contents/Resources/scripts/" cp "$SCRIPTS_SRC/export-untold-tiles" "$APP_BUNDLE/Contents/Resources/scripts/" + cp "$SCRIPTS_SRC/untoldexporter.py" "$APP_BUNDLE/Contents/Resources/scripts/" + cp "$SCRIPTS_SRC/tilestreamingpartition.py" "$APP_BUNDLE/Contents/Resources/scripts/" + cp "$SCRIPTS_SRC/untoldexplorer.py" "$APP_BUNDLE/Contents/Resources/scripts/" cp "$SCRIPTS_SRC/texbake.py" "$APP_BUNDLE/Contents/Resources/scripts/" chmod +x "$APP_BUNDLE/Contents/Resources/scripts/export-untold" chmod +x "$APP_BUNDLE/Contents/Resources/scripts/export-untold-tiles" From 91b64c81c8da42905a5462a05ae0108156ac43c2 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Wed, 29 Apr 2026 08:48:59 -0700 Subject: [PATCH 2/3] [Release] Preparing release 0.12.10 for the editor --- CHANGELOG.md | 3 +++ Package.swift | 2 +- Sources/UntoldEditor/Editor/ToolbarView.swift | 2 +- .../Systems/EditorRenderingSystem.swift | 15 ++++++++++++++- Sources/UntoldEditor/main.swift | 4 ++-- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7828d1..a4fb66d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ # Changelog +## v0.12.10 - 2026-04-29 +### 🐞 Fixes +- [Patch] Fixed bundle script to include required helper scripts (8bec369…) ## v0.12.8 - 2026-04-28 ### 🐞 Fixes - [Patch] Updated script to follow engine dependency tag version (761dc47…) diff --git a/Package.swift b/Package.swift index 1f6bec0..7d84d8f 100644 --- a/Package.swift +++ b/Package.swift @@ -13,7 +13,7 @@ let package = Package( // Use a branch during active development: // .package(url: "https://github.com/untoldengine/UntoldEngine.git", branch: "develop"), // Or pin to a release: - .package(url: "https://github.com/untoldengine/UntoldEngine.git", exact: "0.12.8"), + .package(url: "https://github.com/untoldengine/UntoldEngine.git", exact: "0.12.10"), ], targets: [ .executableTarget( diff --git a/Sources/UntoldEditor/Editor/ToolbarView.swift b/Sources/UntoldEditor/Editor/ToolbarView.swift index 1494c40..71dc186 100644 --- a/Sources/UntoldEditor/Editor/ToolbarView.swift +++ b/Sources/UntoldEditor/Editor/ToolbarView.swift @@ -14,7 +14,7 @@ struct ToolbarView: View { @ObservedObject var selectionManager: SelectionManager @ObservedObject var editorBasePath = EditorAssetBasePath.shared - private let editorVersionLabel = "v0.12.8" + private let editorVersionLabel = "v0.12.10" var onSave: () -> Void var onSaveAs: () -> Void diff --git a/Sources/UntoldEditor/Systems/EditorRenderingSystem.swift b/Sources/UntoldEditor/Systems/EditorRenderingSystem.swift index 891119d..3f0d3b3 100644 --- a/Sources/UntoldEditor/Systems/EditorRenderingSystem.swift +++ b/Sources/UntoldEditor/Systems/EditorRenderingSystem.swift @@ -145,9 +145,22 @@ func buildEditModeGraph() -> RenderGraphResult { ) graph[lookPass.id] = lookPass + let outputDependency: String + if FXAAParams.shared.enabled { + let fxaaPass = RenderPass( + id: "fxaa", + dependencies: [lookPass.id], + execute: fxaaRenderPass + ) + graph[fxaaPass.id] = fxaaPass + outputDependency = fxaaPass.id + } else { + outputDependency = lookPass.id + } + let outputPass = RenderPass( id: "outputTransform", - dependencies: [lookPass.id], + dependencies: [outputDependency], execute: outputTransformRenderPass ) graph[outputPass.id] = outputPass diff --git a/Sources/UntoldEditor/main.swift b/Sources/UntoldEditor/main.swift index 828b20c..1c2e4ee 100644 --- a/Sources/UntoldEditor/main.swift +++ b/Sources/UntoldEditor/main.swift @@ -17,7 +17,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { var window: NSWindow! func applicationDidFinishLaunching(_: Notification) { - Logger.log(message: "Launching Untold Engine Editor v0.12.8") + Logger.log(message: "Launching Untold Engine Editor v0.12.10") // Step 1. Create and configure the window window = NSWindow( @@ -27,7 +27,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { defer: false ) - window.title = "Untold Engine Editor v0.12.8" + window.title = "Untold Engine Editor v0.12.10" window.center() let hostingView = NSHostingView(rootView: EditorView()) From 1d4a68a9044445d2eb68e56ff6b31092c79c4233 Mon Sep 17 00:00:00 2001 From: Untold Engine Date: Wed, 29 Apr 2026 09:16:31 -0700 Subject: [PATCH 3/3] [Test] Updated tests --- .../BuildEditModeGraphTests.swift | 97 +++++++++++++++++-- .../EditorRenderingSystemTests.swift | 4 + 2 files changed, 94 insertions(+), 7 deletions(-) diff --git a/Tests/UntoldEditorTests/BuildEditModeGraphTests.swift b/Tests/UntoldEditorTests/BuildEditModeGraphTests.swift index cddc466..60439b2 100644 --- a/Tests/UntoldEditorTests/BuildEditModeGraphTests.swift +++ b/Tests/UntoldEditorTests/BuildEditModeGraphTests.swift @@ -50,10 +50,14 @@ final class BuildEditModeGraphTests: XCTestCase { // MARK: - Tests - func test_buildEditModeGraph_withEnvironmentRoot() { - let original = renderEnvironment + func test_buildEditModeGraph_withEnvironmentRoot_fxaaDisabled() { + let originalEnv = renderEnvironment renderEnvironment = true - defer { renderEnvironment = original } + defer { renderEnvironment = originalEnv } + + let originalFXAA = FXAAParams.shared.enabled + FXAAParams.shared.enabled = false + defer { FXAAParams.shared.enabled = originalFXAA } let (graph, finalID) = buildEditModeGraph() @@ -80,14 +84,55 @@ final class BuildEditModeGraphTests: XCTestCase { assertDeps(graph, "look", ["precomp"]) assertDeps(graph, "outputTransform", ["look"]) - // Sanity: no cycles assertNoCycles(graph) } - func test_buildEditModeGraph_withGridRoot() { - let original = renderEnvironment + func test_buildEditModeGraph_withEnvironmentRoot_fxaaEnabled() { + let originalEnv = renderEnvironment + renderEnvironment = true + defer { renderEnvironment = originalEnv } + + let originalFXAA = FXAAParams.shared.enabled + FXAAParams.shared.enabled = true + defer { FXAAParams.shared.enabled = originalFXAA } + + let (graph, finalID) = buildEditModeGraph() + + XCTAssertEqual(finalID, "outputTransform") + + let expectedIDs: Set = [ + "environment", "shadow", "batchedShadow", "model", "batchedModel", "lightPass", + "transparency", "outline", "lightVisualPass", "gizmo", "precomp", "gaussian", "look", "fxaa", "outputTransform", + ] + XCTAssertEqual(Set(graph.keys), expectedIDs) + + assertDeps(graph, "environment", []) + assertDeps(graph, "shadow", ["environment"]) + assertDeps(graph, "batchedShadow", ["shadow"]) + assertDeps(graph, "model", ["batchedShadow"]) + assertDeps(graph, "batchedModel", ["model"]) + assertDeps(graph, "lightPass", ["batchedModel", "model", "shadow"]) + assertDeps(graph, "transparency", ["lightPass"]) + assertDeps(graph, "outline", ["batchedModel"]) + assertDeps(graph, "lightVisualPass", ["outline"]) + assertDeps(graph, "gizmo", ["lightVisualPass"]) + assertDeps(graph, "gaussian", ["model"]) + assertDeps(graph, "precomp", ["model", "gizmo", "transparency", "gaussian"]) + assertDeps(graph, "look", ["precomp"]) + assertDeps(graph, "fxaa", ["look"]) + assertDeps(graph, "outputTransform", ["fxaa"]) + + assertNoCycles(graph) + } + + func test_buildEditModeGraph_withGridRoot_fxaaDisabled() { + let originalEnv = renderEnvironment renderEnvironment = false - defer { renderEnvironment = original } + defer { renderEnvironment = originalEnv } + + let originalFXAA = FXAAParams.shared.enabled + FXAAParams.shared.enabled = false + defer { FXAAParams.shared.enabled = originalFXAA } let (graph, finalID) = buildEditModeGraph() @@ -116,4 +161,42 @@ final class BuildEditModeGraphTests: XCTestCase { assertNoCycles(graph) } + + func test_buildEditModeGraph_withGridRoot_fxaaEnabled() { + let originalEnv = renderEnvironment + renderEnvironment = false + defer { renderEnvironment = originalEnv } + + let originalFXAA = FXAAParams.shared.enabled + FXAAParams.shared.enabled = true + defer { FXAAParams.shared.enabled = originalFXAA } + + let (graph, finalID) = buildEditModeGraph() + + XCTAssertEqual(finalID, "outputTransform") + + let expectedIDs: Set = [ + "grid", "shadow", "batchedShadow", "model", "batchedModel", "lightPass", + "transparency", "outline", "lightVisualPass", "gizmo", "precomp", "gaussian", "look", "fxaa", "outputTransform", + ] + XCTAssertEqual(Set(graph.keys), expectedIDs) + + assertDeps(graph, "grid", []) + assertDeps(graph, "shadow", ["grid"]) + assertDeps(graph, "batchedShadow", ["shadow"]) + assertDeps(graph, "model", ["batchedShadow"]) + assertDeps(graph, "batchedModel", ["model"]) + assertDeps(graph, "lightPass", ["batchedModel", "model", "shadow"]) + assertDeps(graph, "transparency", ["lightPass"]) + assertDeps(graph, "outline", ["batchedModel"]) + assertDeps(graph, "lightVisualPass", ["outline"]) + assertDeps(graph, "gizmo", ["lightVisualPass"]) + assertDeps(graph, "gaussian", ["model"]) + assertDeps(graph, "precomp", ["model", "gizmo", "transparency", "gaussian"]) + assertDeps(graph, "look", ["precomp"]) + assertDeps(graph, "fxaa", ["look"]) + assertDeps(graph, "outputTransform", ["fxaa"]) + + assertNoCycles(graph) + } } diff --git a/Tests/UntoldEditorTests/EditorRenderingSystemTests.swift b/Tests/UntoldEditorTests/EditorRenderingSystemTests.swift index c9a6476..167d96f 100644 --- a/Tests/UntoldEditorTests/EditorRenderingSystemTests.swift +++ b/Tests/UntoldEditorTests/EditorRenderingSystemTests.swift @@ -18,6 +18,7 @@ final class EditorRenderingSystemTests: XCTestCase { private var originalRenderEnvironment: Bool! private var originalVisualDebug: Bool! private var originalGameMode: Bool! + private var originalFXAAEnabled: Bool! override func setUp() { super.setUp() @@ -26,6 +27,7 @@ final class EditorRenderingSystemTests: XCTestCase { originalRenderEnvironment = renderEnvironment originalVisualDebug = visualDebug originalGameMode = gameMode + originalFXAAEnabled = FXAAParams.shared.enabled // Set up Metal device guard let device = MTLCreateSystemDefaultDevice() else { @@ -41,6 +43,7 @@ final class EditorRenderingSystemTests: XCTestCase { renderEnvironment = false visualDebug = false gameMode = false + FXAAParams.shared.enabled = false } override func tearDown() { @@ -48,6 +51,7 @@ final class EditorRenderingSystemTests: XCTestCase { renderEnvironment = originalRenderEnvironment visualDebug = originalVisualDebug gameMode = originalGameMode + FXAAParams.shared.enabled = originalFXAAEnabled super.tearDown() }