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;
							 |