58 lines
1.1 KiB
JavaScript
58 lines
1.1 KiB
JavaScript
|
if ( self.GPUShaderStage === undefined ) {
|
||
|
|
||
|
self.GPUShaderStage = { VERTEX: 1, FRAGMENT: 2, COMPUTE: 4 };
|
||
|
|
||
|
}
|
||
|
|
||
|
// statics
|
||
|
|
||
|
let isAvailable = navigator.gpu !== undefined;
|
||
|
|
||
|
|
||
|
if ( typeof window !== 'undefined' && isAvailable ) {
|
||
|
|
||
|
isAvailable = await navigator.gpu.requestAdapter();
|
||
|
|
||
|
}
|
||
|
|
||
|
class WebGPU {
|
||
|
|
||
|
static isAvailable() {
|
||
|
|
||
|
return Boolean( isAvailable );
|
||
|
|
||
|
}
|
||
|
|
||
|
static getStaticAdapter() {
|
||
|
|
||
|
return isAvailable;
|
||
|
|
||
|
}
|
||
|
|
||
|
static getErrorMessage() {
|
||
|
|
||
|
const message = 'Your browser does not support <a href="https://gpuweb.github.io/gpuweb/" style="color:blue">WebGPU</a> yet';
|
||
|
|
||
|
const element = document.createElement( 'div' );
|
||
|
element.id = 'webgpumessage';
|
||
|
element.style.fontFamily = 'monospace';
|
||
|
element.style.fontSize = '13px';
|
||
|
element.style.fontWeight = 'normal';
|
||
|
element.style.textAlign = 'center';
|
||
|
element.style.background = '#fff';
|
||
|
element.style.color = '#000';
|
||
|
element.style.padding = '1.5em';
|
||
|
element.style.maxWidth = '400px';
|
||
|
element.style.margin = '5em auto 0';
|
||
|
|
||
|
element.innerHTML = message;
|
||
|
|
||
|
return element;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
export default WebGPU;
|