UNPKG

typegpu

Version:

A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.

32 lines (31 loc) 1.08 kB
import { isBuiltin } from "../../data/attributes.js"; import { isVoid, isWgslStruct } from "../../data/wgslTypes.js"; export function connectTargetsToShader(fragmentOut, targets) { let presentationFormat; if (isVoid(fragmentOut) || isBuiltin(fragmentOut)) { return [null]; } if (isWgslStruct(fragmentOut)) { const result = []; for (const key of Object.keys(fragmentOut.propTypes)) { const outputValue = fragmentOut.propTypes[key]; if (isBuiltin(outputValue)) { continue; } const matchingTarget = targets[key]; result.push({ ...matchingTarget, format: matchingTarget?.format ?? (presentationFormat ??= navigator.gpu.getPreferredCanvasFormat()), }); } return result; } const singleTarget = targets; return [ { ...singleTarget, format: singleTarget?.format ?? (presentationFormat ??= navigator.gpu.getPreferredCanvasFormat()), }, ]; }