@@ -13,9 +13,57 @@ export class GPU {
1313 nativeFunctions : IGPUNativeFunction [ ] ;
1414 addFunction ( kernel : KernelFunction , settings ?: IGPUFunctionSettings ) : this;
1515 addNativeFunction ( name : string , source : string ) : this;
16- combineKernels ( ...kernels : Function [ ] ) : KernelFunction ;
16+ combineKernels ( ...kernels : KernelFunction [ ] ) : KernelFunction ;
17+ combineKernels < KF extends KernelFunction > ( ...kernels : KF [ ] ) :
18+ ( ( ...args : Parameters < KF > ) =>
19+ ReturnType < KF > [ ]
20+ | ReturnType < KF > [ ] [ ]
21+ | ReturnType < KF > [ ] [ ] [ ]
22+ | Texture
23+ | void
24+ )
25+ & IKernelRunShortcutBase ;
1726 createKernel ( kernel : KernelFunction , settings ?: IGPUKernelSettings ) : IKernelRunShortcut ;
18- createKernelMap ( subKernels : Object | Array < Function > , rootKernel : Function , settings ?: IGPUKernelSettings ) : IKernelRunShortcut ;
27+ createKernel < KF extends KernelFunction > ( kernel : KF , settings ?: IGPUKernelSettings ) :
28+ ( ( ...args : Parameters < KF > ) =>
29+ ReturnType < KF > [ ]
30+ | ReturnType < KF > [ ] [ ]
31+ | ReturnType < KF > [ ] [ ] [ ]
32+ | Texture
33+ | void
34+ )
35+ & IKernelRunShortcutBase ;
36+ createKernelMap (
37+ subKernels : {
38+ [ targetLocation : string ] : KernelFunction
39+ }
40+ | KernelFunction [ ] ,
41+ rootKernel : KernelFunction ,
42+ settings ?: IGPUKernelSettings ) : ( ( ( ) => IMappedKernelResult ) & IKernelRunShortcut ) ;
43+ createKernelMap < KF extends KernelFunction > (
44+ subKernels : {
45+ [ targetLocation : string ] : KF
46+ }
47+ | KF [ ] ,
48+ rootKernel : KF ,
49+ settings ?: IGPUKernelSettings
50+ ) :
51+ ( ( ...args : Parameters < KF > ) => {
52+ result ?:
53+ ReturnType < KF > [ ]
54+ | ReturnType < KF > [ ] [ ]
55+ | ReturnType < KF > [ ] [ ] [ ]
56+ | Texture
57+ | void ;
58+ [ targetLocation : string ] :
59+ ReturnType < KF > [ ]
60+ | ReturnType < KF > [ ] [ ]
61+ | ReturnType < KF > [ ] [ ] [ ]
62+ | Texture
63+ | void
64+ }
65+ )
66+ & IKernelRunShortcutBase ;
1967 destroy ( ) : void ;
2068 Kernel : typeof Kernel ;
2169 mode : string ;
@@ -33,6 +81,11 @@ export interface IGPUNativeFunction extends IGPUFunctionSettings {
3381 settings : object ;
3482}
3583
84+ export interface IMappedKernelResult {
85+ result ?: KernelVariable ;
86+ [ targetLocation : string ] : KernelVariable
87+ }
88+
3689export interface INativeFunctionList {
3790 [ functionName : string ] : string
3891}
@@ -119,73 +172,11 @@ export abstract class Kernel {
119172 getPixels ( flip ?: boolean ) : Uint8ClampedArray [ ] ;
120173 prependString ( value : string ) : void ;
121174 hasPrependString ( value : string ) : boolean ;
122- constructor ( kernel : KernelFunction | IJSON , settings ?: IDirectKernelSettings ) ;
175+ constructor ( kernel : KernelFunction | IJSON | string , settings ?: IDirectKernelSettings ) ;
123176 onRequestSwitchKernel ?: Kernel ;
124- build (
125- arg1 ?: KernelVariable ,
126- arg2 ?: KernelVariable ,
127- arg3 ?: KernelVariable ,
128- arg4 ?: KernelVariable ,
129- arg5 ?: KernelVariable ,
130- arg6 ?: KernelVariable ,
131- arg7 ?: KernelVariable ,
132- arg8 ?: KernelVariable ,
133- arg9 ?: KernelVariable ,
134- arg10 ?: KernelVariable ,
135- arg11 ?: KernelVariable ,
136- arg12 ?: KernelVariable ,
137- arg13 ?: KernelVariable ,
138- arg14 ?: KernelVariable ,
139- arg15 ?: KernelVariable ,
140- arg16 ?: KernelVariable ,
141- arg17 ?: KernelVariable ,
142- arg18 ?: KernelVariable ,
143- arg19 ?: KernelVariable ,
144- arg20 ?: KernelVariable ) : void ;
145- run (
146- arg1 ?: KernelVariable ,
147- arg2 ?: KernelVariable ,
148- arg3 ?: KernelVariable ,
149- arg4 ?: KernelVariable ,
150- arg5 ?: KernelVariable ,
151- arg6 ?: KernelVariable ,
152- arg7 ?: KernelVariable ,
153- arg8 ?: KernelVariable ,
154- arg9 ?: KernelVariable ,
155- arg10 ?: KernelVariable ,
156- arg11 ?: KernelVariable ,
157- arg12 ?: KernelVariable ,
158- arg13 ?: KernelVariable ,
159- arg14 ?: KernelVariable ,
160- arg15 ?: KernelVariable ,
161- arg16 ?: KernelVariable ,
162- arg17 ?: KernelVariable ,
163- arg18 ?: KernelVariable ,
164- arg19 ?: KernelVariable ,
165- arg20 ?: KernelVariable
166- ) : KernelVariable ;
167- toString (
168- arg1 ?: KernelVariable ,
169- arg2 ?: KernelVariable ,
170- arg3 ?: KernelVariable ,
171- arg4 ?: KernelVariable ,
172- arg5 ?: KernelVariable ,
173- arg6 ?: KernelVariable ,
174- arg7 ?: KernelVariable ,
175- arg8 ?: KernelVariable ,
176- arg9 ?: KernelVariable ,
177- arg10 ?: KernelVariable ,
178- arg11 ?: KernelVariable ,
179- arg12 ?: KernelVariable ,
180- arg13 ?: KernelVariable ,
181- arg14 ?: KernelVariable ,
182- arg15 ?: KernelVariable ,
183- arg16 ?: KernelVariable ,
184- arg17 ?: KernelVariable ,
185- arg18 ?: KernelVariable ,
186- arg19 ?: KernelVariable ,
187- arg20 ?: KernelVariable
188- ) : string ;
177+ build ( ...args : KernelVariable [ ] ) : void ;
178+ run ( ...args : KernelVariable [ ] ) : KernelVariable ;
179+ toString ( ...args : KernelVariable [ ] ) : string ;
189180 toJSON ( ) : IJSON ;
190181 setOutput ( flag : number [ ] ) : this;
191182 setWarnVarUsage ( flag : boolean ) : this;
@@ -194,7 +185,8 @@ export abstract class Kernel {
194185 setDebug ( flag : boolean ) : this;
195186 setGraphical ( flag : boolean ) : this;
196187 setLoopMaxIterations ( flag : number ) : this;
197- setConstants ( flag : object ) : this;
188+ setConstants ( flag : IConstants ) : this;
189+ setConstants < T > ( flag : T & IConstants ) : this;
198190 setConstantTypes ( flag : IKernelValueTypes ) : this;
199191 setDynamicOutput ( flag : boolean ) : this;
200192 setDynamicArguments ( flag : boolean ) : this;
@@ -332,30 +324,14 @@ export interface ITypesList {
332324 [ typeName : string ] : GPUVariableType
333325}
334326
335- export interface IKernelRunShortcut extends Kernel {
327+ export interface IKernelRunShortcutBase extends Kernel {
336328 kernel : Kernel ;
337- (
338- arg1 ?: KernelVariable ,
339- arg2 ?: KernelVariable ,
340- arg3 ?: KernelVariable ,
341- arg4 ?: KernelVariable ,
342- arg5 ?: KernelVariable ,
343- arg6 ?: KernelVariable ,
344- arg7 ?: KernelVariable ,
345- arg8 ?: KernelVariable ,
346- arg9 ?: KernelVariable ,
347- arg10 ?: KernelVariable ,
348- arg11 ?: KernelVariable ,
349- arg12 ?: KernelVariable ,
350- arg13 ?: KernelVariable ,
351- arg14 ?: KernelVariable ,
352- arg15 ?: KernelVariable ,
353- arg16 ?: KernelVariable ,
354- arg17 ?: KernelVariable ,
355- arg18 ?: KernelVariable ,
356- arg19 ?: KernelVariable ,
357- arg20 ?: KernelVariable
358- ) : KernelOutput ;
329+ exec ( ) : Promise < KernelOutput > ;
330+ }
331+
332+ export interface IKernelRunShortcut extends IKernelRunShortcutBase {
333+ kernel : Kernel ;
334+ ( ...args : KernelVariable [ ] ) : KernelOutput ;
359335 exec ( ) : Promise < KernelOutput > ;
360336}
361337
@@ -388,46 +364,59 @@ export interface IKernelFunctionThis {
388364export type KernelVariable =
389365 boolean
390366 | number
391- | number [ ]
392- | number [ ] [ ]
393- | number [ ] [ ] [ ]
394367 | Texture
395368 | Input
396369 | HTMLImageElement
397370 | HTMLVideoElement
398371 | HTMLImageElement [ ]
399372 | KernelOutput ;
400373
401- export type ThreadKernelVariable = boolean | number | number [ ] | number [ ] [ ] | number [ ] [ ] [ ] ;
374+ export type ThreadKernelVariable
375+ = boolean
376+ | number
377+ | number [ ]
378+ | number [ ] [ ]
379+ | number [ ] [ ] [ ]
380+
381+ | [ number , number ]
382+ | [ number , number ] [ ]
383+ | [ number , number ] [ ] [ ]
384+ | [ number , number ] [ ] [ ] [ ]
385+
386+ | [ number , number , number ]
387+ | [ number , number , number ] [ ]
388+ | [ number , number , number ] [ ] [ ]
389+ | [ number , number , number ] [ ] [ ] [ ]
390+
391+ | [ number , number , number , number ]
392+ | [ number , number , number , number ] [ ]
393+ | [ number , number , number , number ] [ ] [ ]
394+ | [ number , number , number , number ] [ ] [ ] [ ]
395+ ;
396+
402397export type KernelFunction = ( (
403398 this : IKernelFunctionThis ,
404- arg1 ?: ThreadKernelVariable ,
405- arg2 ?: ThreadKernelVariable ,
406- arg3 ?: ThreadKernelVariable ,
407- arg4 ?: ThreadKernelVariable ,
408- arg5 ?: ThreadKernelVariable ,
409- arg6 ?: ThreadKernelVariable ,
410- arg7 ?: ThreadKernelVariable ,
411- arg8 ?: ThreadKernelVariable ,
412- arg9 ?: ThreadKernelVariable ,
413- arg10 ?: ThreadKernelVariable ,
414- arg11 ?: ThreadKernelVariable ,
415- arg12 ?: ThreadKernelVariable ,
416- arg13 ?: ThreadKernelVariable ,
417- arg14 ?: ThreadKernelVariable ,
418- arg15 ?: ThreadKernelVariable ,
419- arg16 ?: ThreadKernelVariable ,
420- arg17 ?: ThreadKernelVariable ,
421- arg18 ?: ThreadKernelVariable ,
422- arg19 ?: ThreadKernelVariable ,
423- arg20 ?: ThreadKernelVariable ,
424- ) => KernelOutput ) | object | string ;
399+ ...args : ThreadKernelVariable [ ]
400+ ) => KernelOutput ) ;
425401
426402export type KernelOutput = void
403+ | number
427404 | number [ ]
428405 | number [ ] [ ]
429406 | number [ ] [ ] [ ]
430- | number [ ] [ ] [ ] [ ]
407+
408+ | [ number , number ] [ ]
409+ | [ number , number , number ] [ ]
410+ | [ number , number , number , number ] [ ]
411+
412+ | [ number , number ] [ ] [ ]
413+ | [ number , number , number ] [ ] [ ]
414+ | [ number , number , number , number ] [ ] [ ]
415+
416+ | [ number , number ] [ ] [ ] [ ]
417+ | [ number , number , number ] [ ] [ ] [ ]
418+ | [ number , number , number , number ] [ ] [ ] [ ]
419+
431420 | Texture ;
432421
433422export interface IFunction {
@@ -516,7 +505,23 @@ export class Texture {
516505 kernel : Kernel ;
517506}
518507
519- export type TextureArrayOutput = number [ ] | number [ ] [ ] | number [ ] [ ] [ ] | number [ ] [ ] [ ] [ ] ;
508+ export type TextureArrayOutput
509+ = number [ ]
510+ | number [ ] [ ]
511+ | number [ ] [ ] [ ]
512+
513+ | [ number , number ] [ ]
514+ | [ number , number ] [ ] [ ]
515+ | [ number , number ] [ ] [ ] [ ]
516+
517+ | [ number , number , number ] [ ]
518+ | [ number , number , number ] [ ] [ ]
519+ | [ number , number , number ] [ ] [ ] [ ]
520+
521+ | [ number , number , number , number ] [ ]
522+ | [ number , number , number , number ] [ ] [ ]
523+ | [ number , number , number , number ] [ ] [ ] [ ]
524+ ;
520525
521526export interface IPlugin {
522527 source : string ;
@@ -538,7 +543,7 @@ export class Input {
538543
539544export type input = ( value : number [ ] , size : OutputDimensions ) => Input ;
540545
541- export function alias ( name : string , source : KernelFunction ) :KernelFunction ;
546+ export function alias ( name : string , source : KernelFunction ) : KernelFunction ;
542547
543548export class KernelValue {
544549 constructor ( value : KernelValue , settings : IKernelValueSettings ) ;
0 commit comments