code = {
let colorValue1 = Math.random()
let rndRot = () => Math.PI/4*Math.random() + ''
let rndTrans = () => Math.random()*.3 + .2 + ''
let rndScale = () => Math.random()*.5 + 1. + ''
let grammar = tracery.createGrammar({
'origin': `
#colors#
float scaleCumulative = 1., scale;
for(int i = 0; i < #iter_val#; i++){
#body#
}
`,
'colors': `vec3 c1=hsv(#color_value1#,.5,1.);vec3 c2=hsv(#color_value2#,1.,1.);vec3 c3=hsv(#color_value3#,.5,1.); `,
'color_value1': colorValue1 + '',
'color_value2': colorValue1+.15 + '',
'color_value3': colorValue1+.3 + '',
'iter_val': ['3', '4'],
'body': [`#body# #op#`, `#body# #op#`, `#body# #op#`, `#mirror# #invert# #trans# #scale#`],
'op': [`#rot#`, `#trans#`, `#mirror#`, `#invert#`],
'rot': `uv *= rot(#rot_val#);`,
'rot_val': [rndRot(), rndRot(), rndRot()],
'scale': `scale = #scale_val#; uv *= scale; scaleCumulative *= scale;`,
'scale_val': [rndScale(), rndScale(), rndScale()],
'trans': `uv-=vec2(#trans_val#, #trans_val#);`,
'trans_val': [rndTrans(), rndTrans(), rndTrans()],
'mirror': `uv = abs(uv);`,
'invert': `uv /= dot(uv,uv);`,
})
let result = grammar.flatten('#origin#')
console.log(result)
return result;
}