浏览代码

support integer parameters

Lucas Stadler 10 年之前
父节点
当前提交
6bff9fe541
共有 2 个文件被更改,包括 17 次插入2 次删除
  1. 2 2
      glsl/findSlider.js
  2. 15 0
      glsl/sliders.js

+ 2 - 2
glsl/findSlider.js

@ -1,6 +1,6 @@
1 1
function findSlider(input) {
2 2
var type = "unknown";
3
var match = input.match(/^(uniform|attribute) (float|vec2|vec3) (.*);/);
3
var match = input.match(/^(uniform|attribute) (int|float|vec2|vec3) (.*);/);
4 4
if (!match) {
5 5
  return false;
6 6
}
@ -19,7 +19,7 @@ if (!match) {
19 19
20 20
var rawVal = match[1];
21 21
22
if (type == "float") {
22
if (type == "int" || type == "float") {
23 23
  var vals = rawVal.split(",");
24 24
25 25
  vals = vals.map(function(v) {

+ 15 - 0
glsl/sliders.js

@ -59,6 +59,7 @@ function makeMultiSlider(name, ranges, onChange) {
59 59
function addSliders(parent, sliders) {
60 60
  sliders.forEach((slider) => {
61 61
    switch (slider.type) {
62
      case "int":
62 63
      case "float":
63 64
        parent.appendChild(makeSlider(slider.name, slider.range, slider.onChange));
64 65
        break;
@ -75,6 +76,20 @@ function addSliders(parent, sliders) {
75 76
function initSliders(gl, program, sliders, onChange) {
76 77
  sliders.forEach(function(slider) {
77 78
    switch (slider.type) {
79
      case "int":
80
        slider.uniform = gl.getUniformLocation(program, slider.name);
81
        gl.uniform1f(slider.uniform, slider.range[1]);
82
        
83
        slider.onChange = function(ev) {
84
          gl.uniform1i(slider.uniform, parseInt(ev.target.value));
85
          
86
          if (onChange) {
87
            onChange(ev, slider);
88
          }
89
        }
90
        
91
        break;
92
78 93
      case "float":
79 94
        slider.uniform = gl.getUniformLocation(program, slider.name);
80 95
        gl.uniform1f(slider.uniform, slider.range[1]);