@@ -35,6 +35,7 @@ function configureContext() {
3535 toneMapping : { mode : simulationParams . toneMappingMode } ,
3636 alphaMode : 'premultiplied' ,
3737 } ) ;
38+ hdrFolder . name = getHdrFolderName ( ) ;
3839}
3940
4041const particlesBuffer = device . createBuffer ( {
@@ -346,13 +347,24 @@ hdrFolder
346347hdrFolder . add ( simulationParams , 'brightnessFactor' , 0 , 4 , 0.1 ) ;
347348hdrFolder . open ( ) ;
348349const 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' ;
353364}
354- updateHdrFolderName ( ) ;
355- hdrMediaQuery . onchange = updateHdrFolderName ;
365+ hdrMediaQuery . onchange = ( ) => {
366+ hdrFolder . name = getHdrFolderName ( ) ;
367+ } ;
356368
357369const computePipeline = device . createComputePipeline ( {
358370 layout : 'auto' ,
0 commit comments