|
|
@ -47,7 +47,9 @@ function makeMultiSlider(name, ranges, onChange) {
|
|
47
|
47
|
|
|
48
|
48
|
var names = [".x", ".y", ".z", ".y"];
|
|
49
|
49
|
ranges.forEach((range, i) => {
|
|
50
|
|
containerEl.appendChild(makeSlider(names[i], range));
|
|
|
50
|
containerEl.appendChild(makeSlider(names[i], range, function(ev) {
|
|
|
51
|
onChange(ev, i);
|
|
|
52
|
}));
|
|
51
|
53
|
});
|
|
52
|
54
|
|
|
53
|
55
|
return containerEl;
|
|
|
@ -57,14 +59,44 @@ function addSliders(parent, sliders) {
|
|
57
|
59
|
sliders.forEach((slider) => {
|
|
58
|
60
|
switch (slider.type) {
|
|
59
|
61
|
case "float":
|
|
60
|
|
parent.appendChild(makeSlider(slider.name, slider.range));
|
|
|
62
|
parent.appendChild(makeSlider(slider.name, slider.range, slider.onChange));
|
|
61
|
63
|
break;
|
|
62
|
64
|
case "vec2":
|
|
63
|
65
|
case "vec3":
|
|
64
|
|
parent.appendChild(makeMultiSlider(slider.name, slider.range));
|
|
|
66
|
parent.appendChild(makeMultiSlider(slider.name, slider.range, slider.onChange));
|
|
65
|
67
|
break;
|
|
66
|
68
|
default:
|
|
67
|
|
parent.innerHTML += "unknown slider type " + slider.type;
|
|
|
69
|
throw new Error("unknown slider type " + slider.type);
|
|
|
70
|
}
|
|
|
71
|
});
|
|
|
72
|
}
|
|
|
73
|
|
|
|
74
|
function initSliders(gl, program, sliders) {
|
|
|
75
|
return sliders.map(function(slider) {
|
|
|
76
|
switch (slider.type) {
|
|
|
77
|
case "float":
|
|
|
78
|
slider.uniform = gl.uniformLocation(program, slider.name);
|
|
|
79
|
|
|
|
80
|
slider.onChange = function(ev) {
|
|
|
81
|
gl.uniform1f(slider.uniform, parseFloat(ev.target.value));
|
|
|
82
|
}
|
|
|
83
|
|
|
|
84
|
break;
|
|
|
85
|
|
|
|
86
|
case "vec2":
|
|
|
87
|
case "vec3":
|
|
|
88
|
slider.values = slider.range.map((r) => r[1]);
|
|
|
89
|
slider.uniform = gl.uniformLocation(program, slider.name);
|
|
|
90
|
|
|
|
91
|
slider.onChange = function(ev, i) {
|
|
|
92
|
slider.values[0] = parseFloat(ev.target.value);
|
|
|
93
|
gl.uniform2f(slider.uniform, slider.values[0], slider.values[1]);
|
|
|
94
|
}
|
|
|
95
|
|
|
|
96
|
break;
|
|
|
97
|
|
|
|
98
|
default:
|
|
|
99
|
throw new Error("unknown slider type " + slider.type);
|
|
68
|
100
|
}
|
|
69
|
101
|
});
|
|
70
|
102
|
}
|