Sfoglia il codice sorgente

support integer parameters

Lucas Stadler 10 anni fa
parent
commit
6bff9fe541
2 ha cambiato i file con 17 aggiunte e 2 eliminazioni
  1. 2 2
      glsl/findSlider.js
  2. 15 0
      glsl/sliders.js

+ 2 - 2
glsl/findSlider.js

1
function findSlider(input) {
1
function findSlider(input) {
2
var type = "unknown";
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
if (!match) {
4
if (!match) {
5
  return false;
5
  return false;
6
}
6
}
19
19
20
var rawVal = match[1];
20
var rawVal = match[1];
21
21
22
if (type == "float") {
22
if (type == "int" || type == "float") {
23
  var vals = rawVal.split(",");
23
  var vals = rawVal.split(",");
24
24
25
  vals = vals.map(function(v) {
25
  vals = vals.map(function(v) {

+ 15 - 0
glsl/sliders.js

59
function addSliders(parent, sliders) {
59
function addSliders(parent, sliders) {
60
  sliders.forEach((slider) => {
60
  sliders.forEach((slider) => {
61
    switch (slider.type) {
61
    switch (slider.type) {
62
      case "int":
62
      case "float":
63
      case "float":
63
        parent.appendChild(makeSlider(slider.name, slider.range, slider.onChange));
64
        parent.appendChild(makeSlider(slider.name, slider.range, slider.onChange));
64
        break;
65
        break;
75
function initSliders(gl, program, sliders, onChange) {
76
function initSliders(gl, program, sliders, onChange) {
76
  sliders.forEach(function(slider) {
77
  sliders.forEach(function(slider) {
77
    switch (slider.type) {
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
      case "float":
93
      case "float":
79
        slider.uniform = gl.getUniformLocation(program, slider.name);
94
        slider.uniform = gl.getUniformLocation(program, slider.name);
80
        gl.uniform1f(slider.uniform, slider.range[1]);
95
        gl.uniform1f(slider.uniform, slider.range[1]);