Spec-Zone.ru › Web APIs

Расширение KHR_parallel_shader_compile

Ограниченная доступность

Эта функция не относится к базовому уровню, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Узнать больше
  • Посмотреть полную совместимость
  • Отправить отзыв

Расширение KHR_parallel_shader_compile является частью API WebGL и позволяет выполнять операцию опроса без блокировки, чтобы можно было запросить доступность статуса компиляции/связывания (COMPLETION_STATUS_KHR) без потенциальных задержек. Другими словами, вы можете проверить статус компиляции шейдеров без блокирования выполнения.

Расширения WebGL доступны с помощью метода WebGLRenderingContext.getExtension(). Дополнительную информацию можно также найти в Использовании расширений в учебнике по WebGL.

Константы

ext.COMPLETION_STATUS_KHR

Тип GLenum.

Примеры

Включить расширение:

const ext = gl.getExtension("KHR_parallel_shader_compile");

В общем случае, лучшей практикой как с расширением, так и без него, является:

// Assuming lists of `shaders` and `programs`:
for (const x of shaders) gl.compileShader(x); // Never check compile status unless subsequent linking fails.
for (const x of programs) gl.linkProgram(x);

С расширением приложения смогут проверять, были ли связаны программы, не вызывая задержек, но для связывания, скорее всего, потребуется одинаковое общее время:

// Generator yielding a progress ratio [0.0, 1.0].
// Without the extension, this will jank and only check one program per generation.
function* linkingProgress(programs) {
  const ext = gl.getExtension("KHR_parallel_shader_compile");
  let todo = programs.slice();
  while (todo.length) {
    if (ext) {
      todo = todo.filter(
        (x) => !gl.getProgramParameter(x, ext.COMPLETION_STATUS_KHR),
      );
    } else {
      const x = todo.pop();
      gl.getProgramParameter(x, gl.LINK_STATUS);
    }
    if (!todo.length) return;
    yield 1.0 - todo.length / programs.length;
  }
}

Спецификации

Спецификация
Спецификация расширения WebGL KHR_parallel_shader_compile

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
KHR_parallel_shader_compile 76 79 Нет 63 14.1 76 Нет 54 14.5 12.0 76

См. также

  • WebGLRenderingContext.getExtension()

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/KHR_parallel_shader_compile

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API