ЙажаСценарий / Говнокод #27843 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
async init() {
                const engine = this.engine = new BABYLON.WebGPUEngine(this.canvas);
                await engine.initAsync();
            }

            async initCompute() {
                const supportCS = this.engine.getCaps().supportComputeShaders;
                if (!supportCS) {
                    return true;
                }

                const computeShaderSource = document.getElementById("calculate").value.replace('WORK_GROUP_SIZE', this.WORK_GROUP_SIZE);
                this.computeShader = new BABYLON.ComputeShader("compute", this.engine, { computeSource: computeShaderSource }, {
                    bindingsMapping:
                    {
                        "params": { group: 0, binding: 0 },
                        "ssboIn": { group: 0, binding: 1 },
                        "ssboOut": { group: 0, binding: 2 },
                    }
                });

                const simParamsBuffer = new BABYLON.UniformBuffer(this.engine);
                simParamsBuffer.updateFloat2("time", t, this.numInstances);
                simParamsBuffer.update();

                const ssboInBuffer = new BABYLON.StorageBuffer(this.engine, this.ssboData.byteLength);
                ssboInBuffer.update(this.ssboData);

                const ssboOutBuffer = new BABYLON.StorageBuffer(this.engine, this.ssboData.byteLength);

                this.computeShader.setUniformBuffer("params", simParamsBuffer);
                this.computeShader.setStorageBuffer("ssboIn", ssboInBuffer);
                this.computeShader.setStorageBuffer("ssboOut", ssboOutBuffer);
                                
                const handler = () => {
                    ssboOutBuffer.read().then((res) => {
                        const resFloats = new Float32Array(res.buffer);
                        //console.log(resFloats);
                        this.ssboData.set(resFloats);

                        ssboInBuffer.update(this.ssboData);
                        this.computeShader.setStorageBuffer("ssboIn", ssboInBuffer);
                        this.computeShader.dispatchWhenReady(this.numGroups).then(handler);                

                        this.loadPositions();
                    });
                };

                this.computeShader.dispatchWhenReady(this.numGroups).then(handler);                
            }

Наговнокодить кому нибудь Compute Shader для WebGPU? полный код тут https://pastebin.com/EigxhfqV . Тут короче симуляция гравитации расчетным методом... просто было делать нехрен и скушно... что бы запустить это говно надо Chrome Canary с включенным WebGPU поддержкой.

Запостил: ASD_77 ASD_77, (Updated )

Комментарии (24) RSS

    • > var G = 6.67408313131E-11;
      > var force = G * m1 * m2 / distanceSquared;

      У вас петух уплыл.
      Ответить
        • Опять старый Ахав помешался и пытается прибить моби-хуя
          Ответить
      • > E-11
        > single precision
        И правда — уплыл, и уплыл очень далеко.
        Ответить
          • А, действительно, даблы. Помнил про 53 бита Number.MAX_SAFE_INTEGER, но под вечер отдел интерпретации не смог правильно обработать информацию.
            Ответить
      • настоящие физики работают в планковской системе единиц
        Ответить
          • ФИЗИК: А по-моему, ты джаваскриптер!
            (Программист не сказал больше ни слова и тяжело рухнул на пол.)
            Ответить
        • >>настоящие физики работают в планковской системе единиц


          И бухгалтер работает по другой линии — по линии библиотекаря
          Ответить
      • Не знаю про Бормондяшу, а у меня маска иногда на глаза налезает.
        в качестве защитной реакции
        Ответить
          • Мне нравятся Ваши ассоциации
            А вдруг там под ней действительно сиська.
            Ответить
              • Ничего. Всё вывалилось, так как дна нет, а верх запаян.
                Ответить
              • 'Ну как, кто-нибудь узнал, что под чашечкой?'

                Чаевые.
                Ответить
                • Никому не интересно, что "под чашечкой". Гораздо интереснее, по какому поводу ее надели и какие надежды тешат те, кто пытается нося маску защитить свое бренное тело от вторжения.
                  Ответить
            • >>А вдруг там под ней действительно сиська.


              вдруг бывает только пук
              Ответить
  • Педро Виктор Делмино да Силва более известный как Педриньо
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8