@@ -494,7 +494,7 @@ function shadergen(p5, fn) {
494
494
GLOBAL_SHADER = this ;
495
495
this . modifyFunction = modifyFunction ;
496
496
this . srcLocations = srcLocations ;
497
- this . generateHookBuilders ( originalShader ) ;
497
+ this . generateHookOverrides ( originalShader ) ;
498
498
this . output = {
499
499
uniforms : { } ,
500
500
}
@@ -507,31 +507,28 @@ function shadergen(p5, fn) {
507
507
return this . output ;
508
508
}
509
509
510
- generateHookBuilders ( originalShader ) {
510
+ generateHookOverrides ( originalShader ) {
511
511
const availableHooks = {
512
512
...originalShader . hooks . vertex ,
513
513
...originalShader . hooks . fragment ,
514
514
}
515
-
516
515
// Defines a function for each of the hooks for the shader we are modifying.
517
516
Object . keys ( availableHooks ) . forEach ( ( hookName ) => {
518
517
const hookTypes = originalShader . hookTypes ( hookName )
518
+ console . log ( hookTypes ) ;
519
519
this [ hookTypes . name ] = function ( userOverride ) {
520
- let hookArgs = [ ]
521
- let argsArray = [ ] ;
522
-
523
- hookTypes . parameters . forEach ( ( parameter , i ) => {
524
- hookArgs . push (
520
+ let argNodes = [ ]
521
+ const argsArray = hookTypes . parameters . map ( ( parameter ) => {
522
+ argNodes . push (
525
523
new VariableNode ( parameter . name , parameter . type . typeName , true )
526
524
) ;
527
- if ( i === 0 ) {
528
- argsArray . push ( `${ parameter . type . typeName } ${ parameter . name } ` ) ;
529
- } else {
530
- argsArray . push ( `, ${ parameter . type . typeName } ${ parameter . name } ` ) ;
531
- }
532
- } )
533
- const toGLSLResult = userOverride ( ...hookArgs ) . toGLSLBase ( this . context ) ;
534
- let codeLines = [ `(${ argsArray . join ( ', ' ) } ) {` , this . context . declarations . slice ( ) ] . flat ( ) ;
525
+ const qualifiers = parameter . type . qualifiers . length > 0 ? parameter . type . qualifiers . join ( ' ' ) : '' ;
526
+ return `${ qualifiers } ${ parameter . type . typeName } ${ parameter . name } ` . trim ( ) ;
527
+ } ) ;
528
+
529
+ const argsString = `(${ argsArray . join ( ', ' ) } ) {` ;
530
+ const toGLSLResult = userOverride ( ...argNodes ) . toGLSLBase ( this . context ) ;
531
+ let codeLines = [ argsString , ...this . context . declarations ] ;
535
532
codeLines . push ( `\n${ hookTypes . returnType . typeName } finalReturnValue = ${ toGLSLResult } ;
536
533
\nreturn finalReturnValue;
537
534
\n}` ) ;
0 commit comments