Lucas Stadler лет назад: 10
Родитель
Сommit
119a765eef
2 измененных файлов с 10 добавлено и 2 удалено
  1. 2 2
      glsl/raymarching.js
  2. 8 0
      glsl/sliders.js

+ 2 - 2
glsl/raymarching.js

243
    gl.uniform2f(iResolution, w, h);
243
    gl.uniform2f(iResolution, w, h);
244
    render();
244
    render();
245
  };
245
  };
246
  
247
  render();
248
246
249
  var sidebarEl = document.createElement("div");
247
  var sidebarEl = document.createElement("div");
250
  sidebarEl.style = `
248
  sidebarEl.style = `
267
  });
265
  });
268
  
266
  
269
  addSliders(sidebarEl, sliders);
267
  addSliders(sidebarEl, sliders);
268
  
269
  render();
270
} catch (e) {
270
} catch (e) {
271
  window.error = e;
271
  window.error = e;
272
  var msg = document.createElement("pre");
272
  var msg = document.createElement("pre");

+ 8 - 0
glsl/sliders.js

76
    switch (slider.type) {
76
    switch (slider.type) {
77
      case "float":
77
      case "float":
78
        slider.uniform = gl.getUniformLocation(program, slider.name);
78
        slider.uniform = gl.getUniformLocation(program, slider.name);
79
        gl.uniform1f(slider.uniform, slider.range[1]);
79
        
80
        
80
        slider.onChange = function(ev) {
81
        slider.onChange = function(ev) {
81
          gl.uniform1f(slider.uniform, parseFloat(ev.target.value));
82
          gl.uniform1f(slider.uniform, parseFloat(ev.target.value));
91
      case "vec3":
92
      case "vec3":
92
        slider.values = slider.range.map((r) => r[1]);
93
        slider.values = slider.range.map((r) => r[1]);
93
        slider.uniform = gl.getUniformLocation(program, slider.name);
94
        slider.uniform = gl.getUniformLocation(program, slider.name);
95
        if (slider.type == "vec2") {
96
          gl.uniform2f(slider.uniform, slider.values[0], slider.values[1]);
97
        } else if (slider.type == "vec3") {
98
          gl.uniform3f(slider.uniform, slider.values[0], slider.values[1], slider.values[2]);
99
        } else {
100
          throw new Error("unknown slider type " + slider.type);
101
        }
94
        
102
        
95
        slider.onChange = function(ev, i) {
103
        slider.onChange = function(ev, i) {
96
          slider.values[0] = parseFloat(ev.target.value);
104
          slider.values[0] = parseFloat(ev.target.value);