Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion WebGPUDemo/.sourcekit-lsp/config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"swiftPM": {
"swiftSDK": "swift-DEVELOPMENT-SNAPSHOT-2025-06-03-a_wasm"
"swiftSDK": "swift-DEVELOPMENT-SNAPSHOT-2025-08-14-a_wasm-embedded"
}
}
6 changes: 3 additions & 3 deletions WebGPUDemo/Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion WebGPUDemo/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ let package = Package(
),
.package(
url: "https://github.com/swiftwasm/JavaScriptKit.git",
branch: "main",
branch: "yt/embedded-fix",
),
],
targets: [
Expand Down
47 changes: 24 additions & 23 deletions WebGPUDemo/Sources/Entrypoint.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,32 +30,33 @@ func fetchImageBitmap(url: String) async throws(JSException) -> ImageBitmap {
)
}

typealias DefaultExecutorFactory = JavaScriptEventLoop

@main
struct Entrypoint {
static func main() {
JavaScriptEventLoop.installGlobalExecutor()
static func main() async {
let gpu = Window.global.navigator.gpu
Task {
do throws(JSException) {
let adapter = try await gpu.requestAdapter()!
let device = try await adapter.requestDevice()

let renderer = try await Renderer(
device: device,
gpu: gpu,
assets: .init(
shaders: fetchString(url: "Resources/shaders.wgsl"),
model: fetchString(url: "Resources/SwiftLogo/Swift3DLogo.obj"),
albedo: fetchImageBitmap(url: "Resources/SwiftLogo/T_M_swiftLogo_BaseColor.png"),
normal: fetchImageBitmap(url: "Resources/SwiftLogo/T_M_swiftLogo_Normal.png"),
metalRoughness: fetchImageBitmap(url: "Resources/SwiftLogo/T_M_swiftLogo_MetalRoughness.png"),
),
)

draw(renderer: renderer)
} catch {
console.error(data: error.thrownValue)
}

do throws(JSException) {
let adapterPromise: JSPromise = gpu.requestAdapter()
let devicePromise = JSPromise(from: try await adapterPromise.value().requestDevice())!
let device = try await GPUDevice(unsafelyWrapping: devicePromise.value().object!)

let renderer = try await Renderer(
device: device,
gpu: gpu,
assets: .init(
shaders: fetchString(url: "Resources/shaders.wgsl"),
model: fetchString(url: "Resources/SwiftLogo/Swift3DLogo.obj"),
albedo: fetchImageBitmap(url: "Resources/SwiftLogo/T_M_swiftLogo_BaseColor.png"),
normal: fetchImageBitmap(url: "Resources/SwiftLogo/T_M_swiftLogo_Normal.png"),
metalRoughness: fetchImageBitmap(url: "Resources/SwiftLogo/T_M_swiftLogo_MetalRoughness.png"),
),
)

draw(renderer: renderer)
} catch {
console.error(data: error.thrownValue)
}
}
}