Skip to content

Commit 0797a1b

Browse files
committed
refactor / add qualifiers to hook arguments (i.e. in sampler2D etc). next to fix structs
1 parent 79602a7 commit 0797a1b

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

src/webgl/ShaderGen.js

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@ function shadergen(p5, fn) {
494494
GLOBAL_SHADER = this;
495495
this.modifyFunction = modifyFunction;
496496
this.srcLocations = srcLocations;
497-
this.generateHookBuilders(originalShader);
497+
this.generateHookOverrides(originalShader);
498498
this.output = {
499499
uniforms: {},
500500
}
@@ -507,31 +507,28 @@ function shadergen(p5, fn) {
507507
return this.output;
508508
}
509509

510-
generateHookBuilders(originalShader) {
510+
generateHookOverrides(originalShader) {
511511
const availableHooks = {
512512
...originalShader.hooks.vertex,
513513
...originalShader.hooks.fragment,
514514
}
515-
516515
// Defines a function for each of the hooks for the shader we are modifying.
517516
Object.keys(availableHooks).forEach((hookName) => {
518517
const hookTypes = originalShader.hookTypes(hookName)
518+
console.log(hookTypes);
519519
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(
525523
new VariableNode(parameter.name, parameter.type.typeName, true)
526524
);
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 ];
535532
codeLines.push(`\n${hookTypes.returnType.typeName} finalReturnValue = ${toGLSLResult};
536533
\nreturn finalReturnValue;
537534
\n}`);

0 commit comments

Comments
 (0)