Possible bug in serializer
Closed this issue · 2 comments
cbaggers commented
It doesn't seem to like function declarations:
"#version 450
vec4 BAR(float I);
float FOO(float X);
float FOO(float X) {
return (X * 10);
}
vec4 BAR(float I) {
return vec4(FOO(I),FOO(I),float(0),float(0));
}
void main() {
int X0 = 1;
gl_Position = BAR(float(X0));
}
"
(GLSL-TOOLKIT:SHADER (GLSL-TOOLKIT:PREPROCESSOR-DIRECTIVE "#version 450")
(GLSL-TOOLKIT:FUNCTION-DEFINITION
(GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
(GLSL-TOOLKIT:TYPE-SPECIFIER :VEC4) "BAR"
((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "I"))
(GLSL-TOOLKIT:COMPOUND-STATEMENT :|;|))
(GLSL-TOOLKIT:FUNCTION-DEFINITION
(GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
(GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "FOO"
((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "X"))
(GLSL-TOOLKIT:COMPOUND-STATEMENT :|;|))
(GLSL-TOOLKIT:FUNCTION-DEFINITION
(GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
(GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "FOO"
((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "X"))
(GLSL-TOOLKIT:COMPOUND-STATEMENT
(RETURN (GLSL-TOOLKIT:MULTIPLICATION "X" 10))))
(GLSL-TOOLKIT:FUNCTION-DEFINITION
(GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
(GLSL-TOOLKIT:TYPE-SPECIFIER :VEC4) "BAR"
((GLSL-TOOLKIT:TYPE-SPECIFIER :FLOAT) "I"))
(GLSL-TOOLKIT:COMPOUND-STATEMENT
(RETURN
(GLSL-TOOLKIT:MODIFIED-REFERENCE :VEC4
(GLSL-TOOLKIT:CALL-MODIFIER
(GLSL-TOOLKIT:MODIFIED-REFERENCE "FOO" (GLSL-TOOLKIT:CALL-MODIFIER "I"))
(GLSL-TOOLKIT:MODIFIED-REFERENCE "FOO" (GLSL-TOOLKIT:CALL-MODIFIER "I"))
(GLSL-TOOLKIT:MODIFIED-REFERENCE :FLOAT (GLSL-TOOLKIT:CALL-MODIFIER 0))
(GLSL-TOOLKIT:MODIFIED-REFERENCE :FLOAT
(GLSL-TOOLKIT:CALL-MODIFIER 0)))))))
(GLSL-TOOLKIT:FUNCTION-DEFINITION
(GLSL-TOOLKIT:FUNCTION-PROTOTYPE GLSL-TOOLKIT:NO-VALUE
(GLSL-TOOLKIT:TYPE-SPECIFIER :VOID) "main")
(GLSL-TOOLKIT:COMPOUND-STATEMENT
(GLSL-TOOLKIT:VARIABLE-DECLARATION GLSL-TOOLKIT:NO-VALUE
(GLSL-TOOLKIT:TYPE-SPECIFIER :INT) "X0" GLSL-TOOLKIT:NO-VALUE 1)
(GLSL-TOOLKIT:ASSIGNMENT "gl_Position" :=
(GLSL-TOOLKIT:MODIFIED-REFERENCE "BAR"
(GLSL-TOOLKIT:CALL-MODIFIER
(GLSL-TOOLKIT:MODIFIED-REFERENCE :FLOAT
(GLSL-TOOLKIT:CALL-MODIFIER "X0"))))))))
VARJO> (glsl-toolkit:serialize *)
"#version 450
vec4 BAR(float I){ // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
NIL;
};
float FOO(float X){ // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< nope
NIL;
};
float FOO(float X){
return (X * 10);
};
vec4 BAR(float I){
return vec4(FOO(I), FOO(I), float(0), float(0));
};
void main(){
int X0 = 1;
gl_Position = BAR(float(X0));
};"
cbaggers commented
thanks again!