diff --git a/src/render/shader/glsl.lisp b/src/render/shader/glsl.lisp index 6dd754e..9024258 100644 --- a/src/render/shader/glsl.lisp +++ b/src/render/shader/glsl.lisp @@ -35,13 +35,19 @@ collect name))) (apply #'concatenate 'string (append (loop for binding in bindings - collect (format nil "~(~a ~a~)~@[ = ~a~];~%" (second binding) (first binding) - (walk-list (cddr binding)))) + collect (format nil "~@[~vt~]~(~a ~a~)~@[ = ~a~];~%" + (when (> *current-indent* 0) + *current-indent*) + (second binding) (first binding) + (if (and (cddr binding) + (not (cdddr binding))) + (walk-1 (third binding)) + (walk-list (cddr binding))))) (walk-list body))))) (defun default-handler (first &rest rest) "Handle a simple function call." - (format nil "~@[~vt~]~(~a~) (~{~a~^, ~});~%" + (format nil "~@[~vt~]~(~a (~{~a~^, ~})~);~%" (when (> *current-indent* 0) *current-indent*) (if (symbolp first)