Просмотр исходного кода

continue to play on shader reload if already playing

Lucas Stadler лет назад: 10
Родитель
Сommit
c25328316a
1 измененных файлов с 7 добавлено и 3 удалено
  1. 7 3
      glsl/raymarching.js

+ 7 - 3
glsl/raymarching.js

253
  `
253
  `
254
  document.head.appendChild(styleEl);
254
  document.head.appendChild(styleEl);
255
  
255
  
256
  function TwoTriangles(canvas, fragmentShaderSrc) {
256
  function TwoTriangles(canvas, fragmentShaderSrc, options) {
257
    var options = options || {};
257
    var tt = {};
258
    var tt = {};
258
    tt.canvas = canvas;
259
    tt.canvas = canvas;
259
    tt.fragmentShaderSrc = fragmentShaderSrc;
260
    tt.fragmentShaderSrc = fragmentShaderSrc;
299
      gl.drawArrays(gl.TRIANGLES, 0, 6);
300
      gl.drawArrays(gl.TRIANGLES, 0, 6);
300
    };
301
    };
301
    
302
    
302
    tt.playing = false;
303
    tt.playing = options.playing || false;
303
    tt.draw = function(timestamp) {
304
    tt.draw = function(timestamp) {
304
      if (tt.playing) {
305
      if (tt.playing) {
305
        requestAnimationFrame(tt.draw);
306
        requestAnimationFrame(tt.draw);
347
    };
348
    };
348
    
349
    
349
    tt.render();
350
    tt.render();
351
    if (tt.playing) {
352
      tt.draw();
353
    }
350
    return tt;
354
    return tt;
351
  }
355
  }
352
  
356
  
380
  editor.el.onkeydown = function(ev) {
384
  editor.el.onkeydown = function(ev) {
381
    try {
385
    try {
382
      if (ev.ctrlKey && ev.keyCode == 13) {
386
      if (ev.ctrlKey && ev.keyCode == 13) {
383
        tt = TwoTriangles(canvas, editor.el.value);
387
        tt = TwoTriangles(canvas, editor.el.value, {playing: tt.playing});
384
388
385
        sidebarEl.innerHTML = "";
389
        sidebarEl.innerHTML = "";
386
        sliders = findSliders(tt.fragmentShaderSrc);
390
        sliders = findSliders(tt.fragmentShaderSrc);