UNPKG

typegpu

Version:

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

67 lines (66 loc) 2.52 kB
import { dualImpl } from "../core/function/dualImpl.js"; import { stitch } from "../core/resolve/stitch.js"; const derivativeNormalError = 'Derivative builtins are not allowed on the CPU'; export const dpdx = dualImpl({ name: 'dpdx', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `dpdx(${value})`, sideEffects: false, }); export const dpdxCoarse = dualImpl({ name: 'dpdxCoarse', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `dpdxCoarse(${value})`, sideEffects: false, }); export const dpdxFine = dualImpl({ name: 'dpdxFine', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `dpdxFine(${value})`, sideEffects: false, }); export const dpdy = dualImpl({ name: 'dpdy', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `dpdy(${value})`, sideEffects: false, }); export const dpdyCoarse = dualImpl({ name: 'dpdyCoarse', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `dpdyCoarse(${value})`, sideEffects: false, }); export const dpdyFine = dualImpl({ name: 'dpdyFine', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `dpdyFine(${value})`, sideEffects: false, }); export const fwidth = dualImpl({ name: 'fwidth', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `fwidth(${value})`, sideEffects: false, }); export const fwidthCoarse = dualImpl({ name: 'fwidthCoarse', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `fwidthCoarse(${value})`, sideEffects: false, }); export const fwidthFine = dualImpl({ name: 'fwidthFine', normalImpl: derivativeNormalError, signature: (value) => ({ argTypes: [value], returnType: value }), codegenImpl: (_ctx, [value]) => stitch `fwidthFine(${value})`, sideEffects: false, });