Co-authored-by: Tony <32993852+0xREDACTED@users.noreply.github.com>
This commit is contained in:
		
							
								
								
									
										7
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										7
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -14,6 +14,7 @@
 | 
				
			|||||||
        "@myriaddreamin/rehype-typst": "^0.5.4",
 | 
					        "@myriaddreamin/rehype-typst": "^0.5.4",
 | 
				
			||||||
        "@napi-rs/simple-git": "0.1.19",
 | 
					        "@napi-rs/simple-git": "0.1.19",
 | 
				
			||||||
        "@tweenjs/tween.js": "^25.0.0",
 | 
					        "@tweenjs/tween.js": "^25.0.0",
 | 
				
			||||||
 | 
					        "@webgpu/types": "^0.1.60",
 | 
				
			||||||
        "ansi-truncate": "^1.2.0",
 | 
					        "ansi-truncate": "^1.2.0",
 | 
				
			||||||
        "async-mutex": "^0.5.0",
 | 
					        "async-mutex": "^0.5.0",
 | 
				
			||||||
        "chalk": "^5.4.1",
 | 
					        "chalk": "^5.4.1",
 | 
				
			||||||
@@ -2001,9 +2002,9 @@
 | 
				
			|||||||
      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
 | 
					      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@webgpu/types": {
 | 
					    "node_modules/@webgpu/types": {
 | 
				
			||||||
      "version": "0.1.44",
 | 
					      "version": "0.1.60",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.44.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.60.tgz",
 | 
				
			||||||
      "integrity": "sha512-JDpYJN5E/asw84LTYhKyvPpxGnD+bAKPtpW9Ilurf7cZpxaTbxkQcGwOd7jgB9BPBrTYQ+32ufo4HiuomTjHNQ==",
 | 
					      "integrity": "sha512-8B/tdfRFKdrnejqmvq95ogp8tf52oZ51p3f4QD5m5Paey/qlX4Rhhy5Y8tgFMi7Ms70HzcMMw3EQjH/jdhTwlA==",
 | 
				
			||||||
      "license": "BSD-3-Clause"
 | 
					      "license": "BSD-3-Clause"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@xmldom/xmldom": {
 | 
					    "node_modules/@xmldom/xmldom": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@
 | 
				
			|||||||
    "@myriaddreamin/rehype-typst": "^0.5.4",
 | 
					    "@myriaddreamin/rehype-typst": "^0.5.4",
 | 
				
			||||||
    "@napi-rs/simple-git": "0.1.19",
 | 
					    "@napi-rs/simple-git": "0.1.19",
 | 
				
			||||||
    "@tweenjs/tween.js": "^25.0.0",
 | 
					    "@tweenjs/tween.js": "^25.0.0",
 | 
				
			||||||
 | 
					    "@webgpu/types": "^0.1.60",
 | 
				
			||||||
    "ansi-truncate": "^1.2.0",
 | 
					    "ansi-truncate": "^1.2.0",
 | 
				
			||||||
    "async-mutex": "^0.5.0",
 | 
					    "async-mutex": "^0.5.0",
 | 
				
			||||||
    "chalk": "^5.4.1",
 | 
					    "chalk": "^5.4.1",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,6 +68,15 @@ type TweenNode = {
 | 
				
			|||||||
  stop: () => void
 | 
					  stop: () => void
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function determineGraphicsAPI(): Promise<"webgpu" | "webgl"> {
 | 
				
			||||||
 | 
					  const adapter = await navigator.gpu?.requestAdapter().catch(() => null)
 | 
				
			||||||
 | 
					  if (!adapter) {
 | 
				
			||||||
 | 
					    return "webgl"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  // Devices with WebGPU but no float32-blendable feature fail to render the graph
 | 
				
			||||||
 | 
					  return adapter.features.has("float32-blendable") ? "webgpu" : "webgl"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function renderGraph(graph: HTMLElement, fullSlug: FullSlug) {
 | 
					async function renderGraph(graph: HTMLElement, fullSlug: FullSlug) {
 | 
				
			||||||
  const slug = simplifySlug(fullSlug)
 | 
					  const slug = simplifySlug(fullSlug)
 | 
				
			||||||
  const visited = getVisited()
 | 
					  const visited = getVisited()
 | 
				
			||||||
@@ -349,6 +358,7 @@ async function renderGraph(graph: HTMLElement, fullSlug: FullSlug) {
 | 
				
			|||||||
  tweens.forEach((tween) => tween.stop())
 | 
					  tweens.forEach((tween) => tween.stop())
 | 
				
			||||||
  tweens.clear()
 | 
					  tweens.clear()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const pixiPreference = await determineGraphicsAPI()
 | 
				
			||||||
  const app = new Application()
 | 
					  const app = new Application()
 | 
				
			||||||
  await app.init({
 | 
					  await app.init({
 | 
				
			||||||
    width,
 | 
					    width,
 | 
				
			||||||
@@ -357,7 +367,7 @@ async function renderGraph(graph: HTMLElement, fullSlug: FullSlug) {
 | 
				
			|||||||
    autoStart: false,
 | 
					    autoStart: false,
 | 
				
			||||||
    autoDensity: true,
 | 
					    autoDensity: true,
 | 
				
			||||||
    backgroundAlpha: 0,
 | 
					    backgroundAlpha: 0,
 | 
				
			||||||
    preference: "webgpu",
 | 
					    preference: pixiPreference,
 | 
				
			||||||
    resolution: window.devicePixelRatio,
 | 
					    resolution: window.devicePixelRatio,
 | 
				
			||||||
    eventMode: "static",
 | 
					    eventMode: "static",
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user