extended.ts 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { AbstractViewer } from '../../viewer/viewer';
  2. import { Scalar, DefaultRenderingPipeline } from 'babylonjs';
  3. export function extendedUpgrade(viewer: AbstractViewer): boolean {
  4. let defaultPipeline = <DefaultRenderingPipeline>viewer.sceneManager.defaultRenderingPipeline;
  5. // if (!this.Scene.BackgroundHelper) {
  6. // this.Scene.EngineScene.autoClear = false;
  7. // this.Scene.BackgroundHelper = true;
  8. // Would require a dedicated clear color;
  9. // return false;
  10. // }
  11. if (viewer.engine.getHardwareScalingLevel() > 1) {
  12. let scaling = Scalar.Clamp(viewer.engine.getHardwareScalingLevel() - 0.25, 0, 1);
  13. viewer.engine.setHardwareScalingLevel(scaling);
  14. return false;
  15. }
  16. if (!viewer.sceneManager.scene.postProcessesEnabled) {
  17. viewer.sceneManager.scene.postProcessesEnabled = true;
  18. return false;
  19. }
  20. if (!viewer.sceneManager.groundEnabled) {
  21. viewer.sceneManager.groundEnabled = true;
  22. return false;
  23. }
  24. if (defaultPipeline && !viewer.sceneManager.fxaaEnabled) {
  25. viewer.sceneManager.fxaaEnabled = true
  26. return false;
  27. }
  28. var hardwareScalingLevel = Math.max(1 / 2, 1 / (window.devicePixelRatio || 2));
  29. if (viewer.engine.getHardwareScalingLevel() > hardwareScalingLevel) {
  30. let scaling = Scalar.Clamp(viewer.engine.getHardwareScalingLevel() - 0.25, 0, hardwareScalingLevel);
  31. viewer.engine.setHardwareScalingLevel(scaling);
  32. return false;
  33. }
  34. if (!viewer.sceneManager.processShadows) {
  35. viewer.sceneManager.processShadows = true;
  36. return false;
  37. }
  38. if (defaultPipeline && !viewer.sceneManager.bloomEnabled) {
  39. viewer.sceneManager.bloomEnabled = true
  40. return false;
  41. }
  42. if (!viewer.sceneManager.groundMirrorEnabled) {
  43. viewer.sceneManager.groundMirrorEnabled = true;
  44. return false;
  45. }
  46. return true;
  47. }
  48. export function extendedDegrade(viewer: AbstractViewer): boolean {
  49. let defaultPipeline = <DefaultRenderingPipeline>viewer.sceneManager.defaultRenderingPipeline;
  50. if (viewer.sceneManager.groundMirrorEnabled) {
  51. viewer.sceneManager.groundMirrorEnabled = false;
  52. return false;
  53. }
  54. if (defaultPipeline && viewer.sceneManager.bloomEnabled) {
  55. viewer.sceneManager.bloomEnabled = false;
  56. return false;
  57. }
  58. if (viewer.sceneManager.processShadows) {
  59. viewer.sceneManager.processShadows = false;
  60. return false;
  61. }
  62. if (viewer.engine.getHardwareScalingLevel() < 1) {
  63. let scaling = Scalar.Clamp(viewer.engine.getHardwareScalingLevel() + 0.25, 0, 1);
  64. viewer.engine.setHardwareScalingLevel(scaling);
  65. return false;
  66. }
  67. if (defaultPipeline && viewer.sceneManager.fxaaEnabled) {
  68. viewer.sceneManager.fxaaEnabled = false;
  69. return false;
  70. }
  71. if (viewer.sceneManager.groundEnabled) {
  72. viewer.sceneManager.groundEnabled = false;
  73. return false;
  74. }
  75. if (viewer.sceneManager.scene.postProcessesEnabled) {
  76. viewer.sceneManager.scene.postProcessesEnabled = false;
  77. return false;
  78. }
  79. if (viewer.engine.getHardwareScalingLevel() < 1.25) {
  80. let scaling = Scalar.Clamp(viewer.engine.getHardwareScalingLevel() + 0.25, 0, 1.25);
  81. viewer.engine.setHardwareScalingLevel(scaling);
  82. return false;
  83. }
  84. // if (this.Scene.BackgroundHelper) {
  85. // this.Scene.EngineScene.autoClear = true;
  86. // this.Scene.BackgroundHelper = false;
  87. // Would require a dedicated clear color;
  88. // return false;
  89. // }
  90. return true;
  91. }