10
10
//
11
11
//===----------------------------------------------------------------------===//
12
12
13
+ import _Concurrency
13
14
import DOM
14
15
import JavaScriptEventLoop
15
16
import JavaScriptKit
17
+ import WebAPIBase
16
18
import WebGPU
17
19
18
- func fetchString( url: String ) async throws -> String {
20
+ func fetchString( url: String ) async throws ( JSException ) -> String {
19
21
let result = try await Window . global. fetch ( input: . init( url) )
20
22
return try await result. text ( )
21
23
}
22
24
23
- func fetchImageBitmap( url: String ) async throws -> ImageBitmap {
25
+ func fetchImageBitmap( url: String ) async throws ( JSException ) -> ImageBitmap {
24
26
let blob = try await Window . global. fetch ( input: . init( url) ) . blob ( )
25
27
return try await Window . global. createImageBitmap (
26
28
image: . blob( blob) ,
@@ -34,22 +36,26 @@ struct Entrypoint {
34
36
JavaScriptEventLoop . installGlobalExecutor ( )
35
37
let gpu = Window . global. navigator. gpu
36
38
Task {
37
- let adapter = try await gpu. requestAdapter ( ) !
38
- let device = try await adapter. requestDevice ( )
39
+ do throws ( JSException) {
40
+ let adapter = try await gpu. requestAdapter ( ) !
41
+ let device = try await adapter. requestDevice ( )
39
42
40
- let renderer = try await Renderer (
41
- device: device,
42
- gpu: gpu,
43
- assets: . init(
44
- shaders: fetchString ( url: " Resources/shaders.wgsl " ) ,
45
- model: fetchString ( url: " Resources/SwiftLogo/Swift3DLogo.obj " ) ,
46
- albedo: fetchImageBitmap ( url: " Resources/SwiftLogo/T_M_swiftLogo_BaseColor.png " ) ,
47
- normal: fetchImageBitmap ( url: " Resources/SwiftLogo/T_M_swiftLogo_Normal.png " ) ,
48
- metalRoughness: fetchImageBitmap ( url: " Resources/SwiftLogo/T_M_swiftLogo_MetalRoughness.png " ) ,
49
- ) ,
50
- )
43
+ let renderer = try await Renderer (
44
+ device: device,
45
+ gpu: gpu,
46
+ assets: . init(
47
+ shaders: fetchString ( url: " Resources/shaders.wgsl " ) ,
48
+ model: fetchString ( url: " Resources/SwiftLogo/Swift3DLogo.obj " ) ,
49
+ albedo: fetchImageBitmap ( url: " Resources/SwiftLogo/T_M_swiftLogo_BaseColor.png " ) ,
50
+ normal: fetchImageBitmap ( url: " Resources/SwiftLogo/T_M_swiftLogo_Normal.png " ) ,
51
+ metalRoughness: fetchImageBitmap ( url: " Resources/SwiftLogo/T_M_swiftLogo_MetalRoughness.png " ) ,
52
+ ) ,
53
+ )
51
54
52
- draw ( renderer: renderer)
55
+ draw ( renderer: renderer)
56
+ } catch {
57
+ console. error ( data: error. thrownValue)
58
+ }
53
59
}
54
60
}
55
61
}
0 commit comments