@@ -35,6 +35,7 @@ function configureContext() {
35
35
toneMapping : { mode : simulationParams . toneMappingMode } ,
36
36
alphaMode : 'premultiplied' ,
37
37
} ) ;
38
+ hdrFolder . name = getHdrFolderName ( ) ;
38
39
}
39
40
40
41
const particlesBuffer = device . createBuffer ( {
@@ -346,13 +347,24 @@ hdrFolder
346
347
hdrFolder . add ( simulationParams , 'brightnessFactor' , 0 , 4 , 0.1 ) ;
347
348
hdrFolder . open ( ) ;
348
349
const hdrMediaQuery = window . matchMedia ( '(dynamic-range: high)' ) ;
349
- function updateHdrFolderName ( ) {
350
- hdrFolder . name = `HDR settings ${
351
- hdrMediaQuery . matches ? '' : '⚠️ Your display is not compatible'
352
- } `;
350
+ function getHdrFolderName ( ) {
351
+ if ( ! hdrMediaQuery . matches ) {
352
+ return "HDR settings ⚠️ Display isn't compatible" ;
353
+ }
354
+ if ( ! ( 'getConfiguration' in GPUCanvasContext . prototype ) ) {
355
+ return 'HDR settings' ;
356
+ }
357
+ if (
358
+ simulationParams . toneMappingMode === 'extended' &&
359
+ context . getConfiguration ( ) . toneMapping ?. mode !== 'extended'
360
+ ) {
361
+ return "HDR settings ⚠️ Browser doesn't support HDR canvas" ;
362
+ }
363
+ return 'HDR settings' ;
353
364
}
354
- updateHdrFolderName ( ) ;
355
- hdrMediaQuery . onchange = updateHdrFolderName ;
365
+ hdrMediaQuery . onchange = ( ) => {
366
+ hdrFolder . name = getHdrFolderName ( ) ;
367
+ } ;
356
368
357
369
const computePipeline = device . createComputePipeline ( {
358
370
layout : 'auto' ,
0 commit comments