@onerjs/core 8.27.12 → 8.27.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/Engines/abstractEngine.js +2 -2
  2. package/Engines/abstractEngine.js.map +1 -1
  3. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.d.ts +39 -0
  4. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js +86 -0
  5. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js.map +1 -0
  6. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.d.ts +34 -0
  7. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js +74 -0
  8. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js.map +1 -0
  9. package/FrameGraph/Node/Blocks/index.d.ts +2 -0
  10. package/FrameGraph/Node/Blocks/index.js +2 -0
  11. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  12. package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.d.ts +21 -0
  13. package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.js +18 -0
  14. package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.js.map +1 -0
  15. package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.d.ts +22 -0
  16. package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.js +27 -0
  17. package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.js.map +1 -0
  18. package/FrameGraph/Tasks/PostProcesses/sharpenTask.d.ts +17 -0
  19. package/FrameGraph/Tasks/PostProcesses/sharpenTask.js +23 -0
  20. package/FrameGraph/Tasks/PostProcesses/sharpenTask.js.map +1 -0
  21. package/FrameGraph/frameGraphTextureManager.d.ts +6 -2
  22. package/FrameGraph/frameGraphTextureManager.js +22 -8
  23. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  24. package/FrameGraph/index.d.ts +3 -0
  25. package/FrameGraph/index.js +3 -0
  26. package/FrameGraph/index.js.map +1 -1
  27. package/Materials/PBR/openPbrMaterial.d.ts +39 -0
  28. package/Materials/PBR/openPbrMaterial.js +46 -0
  29. package/Materials/PBR/openPbrMaterial.js.map +1 -1
  30. package/Materials/materialHelper.functions.d.ts +1 -7
  31. package/Materials/materialHelper.functions.js +2 -15
  32. package/Materials/materialHelper.functions.js.map +1 -1
  33. package/Materials/materialHelper.functions.pure.d.ts +10 -0
  34. package/Materials/materialHelper.functions.pure.js +21 -0
  35. package/Materials/materialHelper.functions.pure.js.map +1 -0
  36. package/PostProcesses/index.d.ts +2 -0
  37. package/PostProcesses/index.js +2 -0
  38. package/PostProcesses/index.js.map +1 -1
  39. package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +6 -2
  40. package/PostProcesses/screenSpaceCurvaturePostProcess.js +37 -13
  41. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  42. package/PostProcesses/sharpenPostProcess.d.ts +6 -3
  43. package/PostProcesses/sharpenPostProcess.js +39 -24
  44. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  45. package/PostProcesses/thinCustomPostProcess.d.ts +20 -0
  46. package/PostProcesses/thinCustomPostProcess.js +32 -0
  47. package/PostProcesses/thinCustomPostProcess.js.map +1 -0
  48. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +36 -0
  49. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +61 -0
  50. package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -0
  51. package/PostProcesses/thinSharpenPostProcess.d.ts +40 -0
  52. package/PostProcesses/thinSharpenPostProcess.js +64 -0
  53. package/PostProcesses/thinSharpenPostProcess.js.map +1 -0
  54. package/Rendering/objectRenderer.js +3 -1
  55. package/Rendering/objectRenderer.js.map +1 -1
  56. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +8 -9
  57. package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
  58. package/Shaders/ShadersInclude/openpbrDirectLighting.js +13 -6
  59. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  60. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +10 -2
  61. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  62. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js +7 -1
  63. package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js.map +1 -1
  64. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js +2 -0
  65. package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
  66. package/Shaders/ShadersInclude/openpbrThinFilmLayerData.d.ts +5 -0
  67. package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js +27 -0
  68. package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -0
  69. package/Shaders/ShadersInclude/openpbrUboDeclaration.js +1 -1
  70. package/Shaders/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
  71. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +6 -0
  72. package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
  73. package/Shaders/openpbr.fragment.d.ts +1 -0
  74. package/Shaders/openpbr.fragment.js +7 -1
  75. package/Shaders/openpbr.fragment.js.map +1 -1
  76. package/Shaders/openpbr.vertex.js +4 -0
  77. package/Shaders/openpbr.vertex.js.map +1 -1
  78. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +2 -2
  79. package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
  80. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +13 -6
  81. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  82. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +10 -2
  83. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  84. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +2 -0
  85. package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
  86. package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.d.ts +5 -0
  87. package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js +27 -0
  88. package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -0
  89. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js +1 -1
  90. package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
  91. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -3
  92. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  93. package/ShadersWGSL/openpbr.fragment.d.ts +1 -0
  94. package/ShadersWGSL/openpbr.fragment.js +7 -1
  95. package/ShadersWGSL/openpbr.fragment.js.map +1 -1
  96. package/ShadersWGSL/openpbr.vertex.js +4 -0
  97. package/ShadersWGSL/openpbr.vertex.js.map +1 -1
  98. package/ShadersWGSL/screenSpaceCurvature.fragment.d.ts +5 -0
  99. package/ShadersWGSL/screenSpaceCurvature.fragment.js +25 -0
  100. package/ShadersWGSL/screenSpaceCurvature.fragment.js.map +1 -0
  101. package/Sprites/spriteRenderer.js +1 -1
  102. package/Sprites/spriteRenderer.js.map +1 -1
  103. package/XR/motionController/index.d.ts +1 -0
  104. package/XR/motionController/index.js +1 -0
  105. package/XR/motionController/index.js.map +1 -1
  106. package/XR/motionController/webXRMotionControllerManager.js +1 -0
  107. package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
  108. package/XR/motionController/webXROculusHandController.d.ts +25 -0
  109. package/XR/motionController/webXROculusHandController.js +246 -0
  110. package/XR/motionController/webXROculusHandController.js.map +1 -0
  111. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ /** This file must only contain pure code and pure imports */
2
+ // All non-type imports must be pure
3
+
4
+ import { Logger } from "../Misc/logger.js";
5
+ // All code must be pure
6
+ /**
7
+ * Binds the logarithmic depth information from the scene to the effect for the given defines.
8
+ * @param defines The generated defines used in the effect
9
+ * @param effect The effect we are binding the data to
10
+ * @param scene The scene we are willing to render with logarithmic scale for
11
+ */
12
+ export function BindLogDepth(defines, effect, scene) {
13
+ if (!defines || defines["LOGARITHMICDEPTH"] || (defines.indexOf && defines.indexOf("LOGARITHMICDEPTH") >= 0)) {
14
+ const camera = scene.activeCamera;
15
+ if (camera.mode === 1) {
16
+ Logger.Error("Logarithmic depth is not compatible with orthographic cameras!", 20);
17
+ }
18
+ effect.setFloat("logarithmicDepthConstant", 2.0 / (Math.log(camera.maxZ + 1.0) / Math.LN2));
19
+ }
20
+ }
21
+ //# sourceMappingURL=materialHelper.functions.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialHelper.functions.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Materials/materialHelper.functions.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAM7D,oCAAoC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,wBAAwB;AAExB;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAY,EAAE,MAAc,EAAE,KAAY;IACnE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC3G,MAAM,MAAM,GAAG,KAAK,CAAC,YAAsB,CAAC;QAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,CAAC;AACL,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { Effect } from \"./effect\";\r\n\r\n// All non-type imports must be pure\r\n\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { Logger } from \"../Misc/logger\";\r\n\r\n// All code must be pure\r\n\r\n/**\r\n * Binds the logarithmic depth information from the scene to the effect for the given defines.\r\n * @param defines The generated defines used in the effect\r\n * @param effect The effect we are binding the data to\r\n * @param scene The scene we are willing to render with logarithmic scale for\r\n */\r\nexport function BindLogDepth(defines: any, effect: Effect, scene: Scene): void {\r\n if (!defines || defines[\"LOGARITHMICDEPTH\"] || (defines.indexOf && defines.indexOf(\"LOGARITHMICDEPTH\") >= 0)) {\r\n const camera = scene.activeCamera as Camera;\r\n if (camera.mode === Constants.ORTHOGRAPHIC_CAMERA) {\r\n Logger.Error(\"Logarithmic depth is not compatible with orthographic cameras!\", 20);\r\n }\r\n effect.setFloat(\"logarithmicDepthConstant\", 2.0 / (Math.log(camera.maxZ + 1.0) / Math.LN2));\r\n }\r\n}\r\n"]}
@@ -45,6 +45,8 @@ export * from "./thinGrainPostProcess.js";
45
45
  export * from "./thinImageProcessingPostProcess.js";
46
46
  export * from "./thinMotionBlurPostProcess.js";
47
47
  export * from "./thinPassPostProcess.js";
48
+ export * from "./thinSharpenPostProcess.js";
49
+ export * from "./thinScreenSpaceCurvaturePostProcess.js";
48
50
  export * from "../Shaders/postprocess.vertex.js";
49
51
  export * from "../ShadersWGSL/postprocess.vertex.js";
50
52
  export * from "../Shaders/kernelBlur.fragment.js";
@@ -46,6 +46,8 @@ export * from "./thinGrainPostProcess.js";
46
46
  export * from "./thinImageProcessingPostProcess.js";
47
47
  export * from "./thinMotionBlurPostProcess.js";
48
48
  export * from "./thinPassPostProcess.js";
49
+ export * from "./thinSharpenPostProcess.js";
50
+ export * from "./thinScreenSpaceCurvaturePostProcess.js";
49
51
  // Postprocess
50
52
  export * from "../Shaders/postprocess.vertex.js";
51
53
  export * from "../ShadersWGSL/postprocess.vertex.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./anaglyphPostProcess\";\r\nexport * from \"./blackAndWhitePostProcess\";\r\nexport * from \"./bloomEffect\";\r\nexport * from \"./bloomMergePostProcess\";\r\nexport * from \"./blurPostProcess\";\r\nexport * from \"./chromaticAberrationPostProcess\";\r\nexport * from \"./circleOfConfusionPostProcess\";\r\nexport * from \"./colorCorrectionPostProcess\";\r\nexport * from \"./convolutionPostProcess\";\r\nexport * from \"./depthOfFieldBlurPostProcess\";\r\nexport * from \"./depthOfFieldEffect\";\r\nexport * from \"./depthOfFieldMergePostProcess\";\r\nexport * from \"./displayPassPostProcess\";\r\nexport * from \"./extractHighlightsPostProcess\";\r\nexport * from \"./filterPostProcess\";\r\nexport * from \"./fxaaPostProcess\";\r\nexport * from \"./grainPostProcess\";\r\nexport * from \"./highlightsPostProcess\";\r\nexport * from \"./imageProcessingPostProcess\";\r\nexport * from \"./motionBlurPostProcess\";\r\nexport * from \"./passPostProcess\";\r\nexport * from \"./postProcess\";\r\nexport * from \"./postProcessManager\";\r\nexport * from \"./refractionPostProcess\";\r\nexport * from \"./RenderPipeline/index\";\r\nexport * from \"./sharpenPostProcess\";\r\nexport * from \"./stereoscopicInterlacePostProcess\";\r\nexport * from \"./tonemapPostProcess\";\r\nexport * from \"./volumetricLightScatteringPostProcess\";\r\nexport * from \"./vrDistortionCorrectionPostProcess\";\r\nexport * from \"./vrMultiviewToSingleviewPostProcess\";\r\nexport * from \"./screenSpaceReflectionPostProcess\";\r\nexport * from \"./screenSpaceCurvaturePostProcess\";\r\n\r\nexport * from \"./thinAnaglyphPostProcess\";\r\nexport * from \"./thinBlackAndWhitePostProcess\";\r\nexport * from \"./thinBloomEffect\";\r\nexport * from \"./thinBlurPostProcess\";\r\nexport * from \"./thinChromaticAberrationPostProcess\";\r\nexport * from \"./thinCircleOfConfusionPostProcess\";\r\nexport * from \"./thinConvolutionPostProcess\";\r\nexport * from \"./thinDepthOfFieldEffect\";\r\nexport * from \"./thinExtractHighlightsPostProcess\";\r\nexport * from \"./thinFXAAPostProcess\";\r\nexport * from \"./thinGrainPostProcess\";\r\nexport * from \"./thinImageProcessingPostProcess\";\r\nexport * from \"./thinMotionBlurPostProcess\";\r\nexport * from \"./thinPassPostProcess\";\r\n\r\n// Postprocess\r\nexport * from \"../Shaders/postprocess.vertex\";\r\nexport * from \"../ShadersWGSL/postprocess.vertex\";\r\n\r\n// Blur postprocess\r\nexport * from \"../Shaders/kernelBlur.fragment\";\r\nexport * from \"../Shaders/kernelBlur.vertex\";\r\nexport * from \"../ShadersWGSL/kernelBlur.fragment\";\r\nexport * from \"../ShadersWGSL/kernelBlur.vertex\";\r\n\r\n// Pass postprocess\r\nexport * from \"../Shaders/pass.fragment\";\r\nexport * from \"../Shaders/passCube.fragment\";\r\nexport * from \"../ShadersWGSL/pass.fragment\";\r\nexport * from \"../ShadersWGSL/passCube.fragment\";\r\n\r\n// vrDFistortionCorrection postprocess\r\nexport * from \"../Shaders/vrDistortionCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/vrDistortionCorrection.fragment\";\r\n\r\n// Image processing postprocess\r\nexport * from \"../ShadersWGSL/imageProcessing.fragment\";\r\nexport * from \"../Shaders/imageProcessing.fragment\";\r\n\r\n// Sharpen\r\nexport * from \"../Shaders/sharpen.fragment\";\r\nexport * from \"../ShadersWGSL/sharpen.fragment\";\r\n\r\n// Grain\r\nexport * from \"../Shaders/grain.fragment\";\r\nexport * from \"../ShadersWGSL/grain.fragment\";\r\n\r\n// Chromatic Aberration\r\nexport * from \"../Shaders/chromaticAberration.fragment\";\r\nexport * from \"../ShadersWGSL/chromaticAberration.fragment\";\r\n\r\n// Depth of field merge\r\nexport * from \"../Shaders/depthOfFieldMerge.fragment\";\r\nexport * from \"../ShadersWGSL/depthOfFieldMerge.fragment\";\r\n\r\n// Circle of confusion\r\nexport * from \"../Shaders/circleOfConfusion.fragment\";\r\nexport * from \"../ShadersWGSL/circleOfConfusion.fragment\";\r\n\r\n// Bloom\r\nexport * from \"../Shaders/bloomMerge.fragment\";\r\nexport * from \"../ShadersWGSL/bloomMerge.fragment\";\r\n\r\n// Extract highlights\r\nexport * from \"../Shaders/extractHighlights.fragment\";\r\nexport * from \"../ShadersWGSL/extractHighlights.fragment\";\r\n\r\n// FXAA\r\nexport * from \"../Shaders/fxaa.fragment\";\r\nexport * from \"../Shaders/fxaa.vertex\";\r\nexport * from \"../ShadersWGSL/fxaa.fragment\";\r\nexport * from \"../ShadersWGSL/fxaa.vertex\";\r\n\r\n// B&W\r\nexport * from \"../Shaders/blackAndWhite.fragment\";\r\nexport * from \"../ShadersWGSL/blackAndWhite.fragment\";\r\n\r\n// Anaglyph\r\nexport * from \"../Shaders/anaglyph.fragment\";\r\nexport * from \"../ShadersWGSL/anaglyph.fragment\";\r\n\r\n// Convolution\r\nexport * from \"../Shaders/convolution.fragment\";\r\nexport * from \"../ShadersWGSL/convolution.fragment\";\r\n\r\n// Color correction\r\nexport * from \"../Shaders/colorCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/colorCorrection.fragment\";\r\n\r\n// Motion blur\r\nexport * from \"../Shaders/motionBlur.fragment\";\r\nexport * from \"../ShadersWGSL/motionBlur.fragment\";\r\n\r\n// Filter\r\nexport * from \"../Shaders/filter.fragment\";\r\nexport * from \"../ShadersWGSL/filter.fragment\";\r\n\r\n// Highlights\r\nexport * from \"../Shaders/highlights.fragment\";\r\nexport * from \"../ShadersWGSL/highlights.fragment\";\r\n\r\n// Display\r\nexport * from \"../Shaders/displayPass.fragment\";\r\nexport * from \"../ShadersWGSL/displayPass.fragment\";\r\n\r\n// Tonemap\r\nexport * from \"../Shaders/tonemap.fragment\";\r\nexport * from \"../ShadersWGSL/tonemap.fragment\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./anaglyphPostProcess\";\r\nexport * from \"./blackAndWhitePostProcess\";\r\nexport * from \"./bloomEffect\";\r\nexport * from \"./bloomMergePostProcess\";\r\nexport * from \"./blurPostProcess\";\r\nexport * from \"./chromaticAberrationPostProcess\";\r\nexport * from \"./circleOfConfusionPostProcess\";\r\nexport * from \"./colorCorrectionPostProcess\";\r\nexport * from \"./convolutionPostProcess\";\r\nexport * from \"./depthOfFieldBlurPostProcess\";\r\nexport * from \"./depthOfFieldEffect\";\r\nexport * from \"./depthOfFieldMergePostProcess\";\r\nexport * from \"./displayPassPostProcess\";\r\nexport * from \"./extractHighlightsPostProcess\";\r\nexport * from \"./filterPostProcess\";\r\nexport * from \"./fxaaPostProcess\";\r\nexport * from \"./grainPostProcess\";\r\nexport * from \"./highlightsPostProcess\";\r\nexport * from \"./imageProcessingPostProcess\";\r\nexport * from \"./motionBlurPostProcess\";\r\nexport * from \"./passPostProcess\";\r\nexport * from \"./postProcess\";\r\nexport * from \"./postProcessManager\";\r\nexport * from \"./refractionPostProcess\";\r\nexport * from \"./RenderPipeline/index\";\r\nexport * from \"./sharpenPostProcess\";\r\nexport * from \"./stereoscopicInterlacePostProcess\";\r\nexport * from \"./tonemapPostProcess\";\r\nexport * from \"./volumetricLightScatteringPostProcess\";\r\nexport * from \"./vrDistortionCorrectionPostProcess\";\r\nexport * from \"./vrMultiviewToSingleviewPostProcess\";\r\nexport * from \"./screenSpaceReflectionPostProcess\";\r\nexport * from \"./screenSpaceCurvaturePostProcess\";\r\n\r\nexport * from \"./thinAnaglyphPostProcess\";\r\nexport * from \"./thinBlackAndWhitePostProcess\";\r\nexport * from \"./thinBloomEffect\";\r\nexport * from \"./thinBlurPostProcess\";\r\nexport * from \"./thinChromaticAberrationPostProcess\";\r\nexport * from \"./thinCircleOfConfusionPostProcess\";\r\nexport * from \"./thinConvolutionPostProcess\";\r\nexport * from \"./thinDepthOfFieldEffect\";\r\nexport * from \"./thinExtractHighlightsPostProcess\";\r\nexport * from \"./thinFXAAPostProcess\";\r\nexport * from \"./thinGrainPostProcess\";\r\nexport * from \"./thinImageProcessingPostProcess\";\r\nexport * from \"./thinMotionBlurPostProcess\";\r\nexport * from \"./thinPassPostProcess\";\r\nexport * from \"./thinSharpenPostProcess\";\r\nexport * from \"./thinScreenSpaceCurvaturePostProcess\";\r\n\r\n// Postprocess\r\nexport * from \"../Shaders/postprocess.vertex\";\r\nexport * from \"../ShadersWGSL/postprocess.vertex\";\r\n\r\n// Blur postprocess\r\nexport * from \"../Shaders/kernelBlur.fragment\";\r\nexport * from \"../Shaders/kernelBlur.vertex\";\r\nexport * from \"../ShadersWGSL/kernelBlur.fragment\";\r\nexport * from \"../ShadersWGSL/kernelBlur.vertex\";\r\n\r\n// Pass postprocess\r\nexport * from \"../Shaders/pass.fragment\";\r\nexport * from \"../Shaders/passCube.fragment\";\r\nexport * from \"../ShadersWGSL/pass.fragment\";\r\nexport * from \"../ShadersWGSL/passCube.fragment\";\r\n\r\n// vrDFistortionCorrection postprocess\r\nexport * from \"../Shaders/vrDistortionCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/vrDistortionCorrection.fragment\";\r\n\r\n// Image processing postprocess\r\nexport * from \"../ShadersWGSL/imageProcessing.fragment\";\r\nexport * from \"../Shaders/imageProcessing.fragment\";\r\n\r\n// Sharpen\r\nexport * from \"../Shaders/sharpen.fragment\";\r\nexport * from \"../ShadersWGSL/sharpen.fragment\";\r\n\r\n// Grain\r\nexport * from \"../Shaders/grain.fragment\";\r\nexport * from \"../ShadersWGSL/grain.fragment\";\r\n\r\n// Chromatic Aberration\r\nexport * from \"../Shaders/chromaticAberration.fragment\";\r\nexport * from \"../ShadersWGSL/chromaticAberration.fragment\";\r\n\r\n// Depth of field merge\r\nexport * from \"../Shaders/depthOfFieldMerge.fragment\";\r\nexport * from \"../ShadersWGSL/depthOfFieldMerge.fragment\";\r\n\r\n// Circle of confusion\r\nexport * from \"../Shaders/circleOfConfusion.fragment\";\r\nexport * from \"../ShadersWGSL/circleOfConfusion.fragment\";\r\n\r\n// Bloom\r\nexport * from \"../Shaders/bloomMerge.fragment\";\r\nexport * from \"../ShadersWGSL/bloomMerge.fragment\";\r\n\r\n// Extract highlights\r\nexport * from \"../Shaders/extractHighlights.fragment\";\r\nexport * from \"../ShadersWGSL/extractHighlights.fragment\";\r\n\r\n// FXAA\r\nexport * from \"../Shaders/fxaa.fragment\";\r\nexport * from \"../Shaders/fxaa.vertex\";\r\nexport * from \"../ShadersWGSL/fxaa.fragment\";\r\nexport * from \"../ShadersWGSL/fxaa.vertex\";\r\n\r\n// B&W\r\nexport * from \"../Shaders/blackAndWhite.fragment\";\r\nexport * from \"../ShadersWGSL/blackAndWhite.fragment\";\r\n\r\n// Anaglyph\r\nexport * from \"../Shaders/anaglyph.fragment\";\r\nexport * from \"../ShadersWGSL/anaglyph.fragment\";\r\n\r\n// Convolution\r\nexport * from \"../Shaders/convolution.fragment\";\r\nexport * from \"../ShadersWGSL/convolution.fragment\";\r\n\r\n// Color correction\r\nexport * from \"../Shaders/colorCorrection.fragment\";\r\nexport * from \"../ShadersWGSL/colorCorrection.fragment\";\r\n\r\n// Motion blur\r\nexport * from \"../Shaders/motionBlur.fragment\";\r\nexport * from \"../ShadersWGSL/motionBlur.fragment\";\r\n\r\n// Filter\r\nexport * from \"../Shaders/filter.fragment\";\r\nexport * from \"../ShadersWGSL/filter.fragment\";\r\n\r\n// Highlights\r\nexport * from \"../Shaders/highlights.fragment\";\r\nexport * from \"../ShadersWGSL/highlights.fragment\";\r\n\r\n// Display\r\nexport * from \"../Shaders/displayPass.fragment\";\r\nexport * from \"../ShadersWGSL/displayPass.fragment\";\r\n\r\n// Tonemap\r\nexport * from \"../Shaders/tonemap.fragment\";\r\nexport * from \"../ShadersWGSL/tonemap.fragment\";\r\n"]}
@@ -6,6 +6,7 @@ import "../Rendering/geometryBufferRendererSceneComponent.js";
6
6
  import "../Shaders/screenSpaceCurvature.fragment.js";
7
7
  import type { AbstractEngine } from "../Engines/abstractEngine.js";
8
8
  import type { Scene } from "../scene.js";
9
+ import { ThinScreenSpaceCurvaturePostProcess } from "./thinScreenSpaceCurvaturePostProcess.js";
9
10
  /**
10
11
  * The Screen Space curvature effect can help highlighting ridge and valley of a model.
11
12
  */
@@ -13,17 +14,20 @@ export declare class ScreenSpaceCurvaturePostProcess extends PostProcess {
13
14
  /**
14
15
  * Defines how much ridge the curvature effect displays.
15
16
  */
16
- ridge: number;
17
+ get ridge(): number;
18
+ set ridge(value: number);
17
19
  /**
18
20
  * Defines how much valley the curvature effect displays.
19
21
  */
20
- valley: number;
22
+ get valley(): number;
23
+ set valley(value: number);
21
24
  private _geometryBufferRenderer;
22
25
  /**
23
26
  * Gets a string identifying the name of the class
24
27
  * @returns "ScreenSpaceCurvaturePostProcess" string
25
28
  */
26
29
  getClassName(): string;
30
+ protected _effectWrapper: ThinScreenSpaceCurvaturePostProcess;
27
31
  /**
28
32
  * Creates a new instance ScreenSpaceCurvaturePostProcess
29
33
  * @param name The name of the effect.
@@ -8,10 +8,29 @@ import { EngineStore } from "../Engines/engineStore.js";
8
8
  import { RegisterClass } from "../Misc/typeStore.js";
9
9
  import { serialize } from "../Misc/decorators.js";
10
10
  import { SerializationHelper } from "../Misc/decorators.serialization.js";
11
+ import { ThinScreenSpaceCurvaturePostProcess } from "./thinScreenSpaceCurvaturePostProcess.js";
11
12
  /**
12
13
  * The Screen Space curvature effect can help highlighting ridge and valley of a model.
13
14
  */
14
15
  export class ScreenSpaceCurvaturePostProcess extends PostProcess {
16
+ /**
17
+ * Defines how much ridge the curvature effect displays.
18
+ */
19
+ get ridge() {
20
+ return this._effectWrapper.ridge;
21
+ }
22
+ set ridge(value) {
23
+ this._effectWrapper.ridge = value;
24
+ }
25
+ /**
26
+ * Defines how much valley the curvature effect displays.
27
+ */
28
+ get valley() {
29
+ return this._effectWrapper.valley;
30
+ }
31
+ set valley(value) {
32
+ this._effectWrapper.valley = value;
33
+ }
15
34
  /**
16
35
  * Gets a string identifying the name of the class
17
36
  * @returns "ScreenSpaceCurvaturePostProcess" string
@@ -32,15 +51,22 @@ export class ScreenSpaceCurvaturePostProcess extends PostProcess {
32
51
  * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
33
52
  */
34
53
  constructor(name, scene, options, camera, samplingMode, engine, reusable, textureType = 0, blockCompilation = false) {
35
- super(name, "screenSpaceCurvature", ["curvature_ridge", "curvature_valley"], ["textureSampler", "normalSampler"], options, camera, samplingMode, engine, reusable, undefined, textureType, undefined, null, blockCompilation);
36
- /**
37
- * Defines how much ridge the curvature effect displays.
38
- */
39
- this.ridge = 1;
40
- /**
41
- * Defines how much valley the curvature effect displays.
42
- */
43
- this.valley = 1;
54
+ const localOptions = {
55
+ uniforms: ThinScreenSpaceCurvaturePostProcess.Uniforms,
56
+ samplers: ThinScreenSpaceCurvaturePostProcess.Samplers,
57
+ size: typeof options === "number" ? options : undefined,
58
+ camera,
59
+ samplingMode,
60
+ engine,
61
+ reusable,
62
+ textureType,
63
+ blockCompilation,
64
+ ...options,
65
+ };
66
+ super(name, ThinScreenSpaceCurvaturePostProcess.FragmentUrl, {
67
+ effectWrapper: typeof options === "number" || !options.effectWrapper ? new ThinScreenSpaceCurvaturePostProcess(name, engine, localOptions) : undefined,
68
+ ...localOptions,
69
+ });
44
70
  this._geometryBufferRenderer = scene.enableGeometryBufferRenderer();
45
71
  if (!this._geometryBufferRenderer) {
46
72
  // Geometry buffer renderer is not supported. So, work as a passthrough.
@@ -52,8 +78,6 @@ export class ScreenSpaceCurvaturePostProcess extends PostProcess {
52
78
  }
53
79
  // Geometry buffer renderer is supported.
54
80
  this.onApply = (effect) => {
55
- effect.setFloat("curvature_ridge", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));
56
- effect.setFloat("curvature_valley", 0.7 / Math.max(this.valley * this.valley, 1e-4));
57
81
  const normalTexture = this._geometryBufferRenderer.getGBuffer().textures[1];
58
82
  effect.setTexture("normalSampler", normalTexture);
59
83
  };
@@ -80,9 +104,9 @@ export class ScreenSpaceCurvaturePostProcess extends PostProcess {
80
104
  }
81
105
  __decorate([
82
106
  serialize()
83
- ], ScreenSpaceCurvaturePostProcess.prototype, "ridge", void 0);
107
+ ], ScreenSpaceCurvaturePostProcess.prototype, "ridge", null);
84
108
  __decorate([
85
109
  serialize()
86
- ], ScreenSpaceCurvaturePostProcess.prototype, "valley", void 0);
110
+ ], ScreenSpaceCurvaturePostProcess.prototype, "valley", null);
87
111
  RegisterClass("BABYLON.ScreenSpaceCurvaturePostProcess", ScreenSpaceCurvaturePostProcess);
88
112
  //# sourceMappingURL=screenSpaceCurvaturePostProcess.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/screenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport type { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\n\r\nimport \"../Rendering/geometryBufferRendererSceneComponent\";\r\nimport \"../Shaders/screenSpaceCurvature.fragment\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The Screen Space curvature effect can help highlighting ridge and valley of a model.\r\n */\r\nexport class ScreenSpaceCurvaturePostProcess extends PostProcess {\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n @serialize()\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n @serialize()\r\n public valley: number = 1;\r\n\r\n private _geometryBufferRenderer: Nullable<GeometryBufferRenderer>;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceCurvaturePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"ScreenSpaceCurvaturePostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance ScreenSpaceCurvaturePostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n blockCompilation = false\r\n ) {\r\n super(\r\n name,\r\n \"screenSpaceCurvature\",\r\n [\"curvature_ridge\", \"curvature_valley\"],\r\n [\"textureSampler\", \"normalSampler\"],\r\n options,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n undefined,\r\n textureType,\r\n undefined,\r\n null,\r\n blockCompilation\r\n );\r\n\r\n this._geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n\r\n if (!this._geometryBufferRenderer) {\r\n // Geometry buffer renderer is not supported. So, work as a passthrough.\r\n Logger.Error(\"Multiple Render Target support needed for screen space curvature post process. Please use IsSupported test first.\");\r\n } else {\r\n if (this._geometryBufferRenderer.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceCurvaturePostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\r\n }\r\n\r\n // Geometry buffer renderer is supported.\r\n this.onApply = (effect: Effect) => {\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n\r\n const normalTexture = this._geometryBufferRenderer!.getGBuffer().textures[1];\r\n effect.setTexture(\"normalSampler\", normalTexture);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n\r\n return engine.getCaps().drawBuffersExtension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new ScreenSpaceCurvaturePostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceCurvaturePostProcess\", ScreenSpaceCurvaturePostProcess);\r\n"]}
1
+ {"version":3,"file":"screenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/screenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Logger } from \"../Misc/logger\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport type { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer\";\r\n\r\nimport \"../Rendering/geometryBufferRendererSceneComponent\";\r\nimport \"../Shaders/screenSpaceCurvature.fragment\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\nimport { ThinScreenSpaceCurvaturePostProcess } from \"./thinScreenSpaceCurvaturePostProcess\";\r\n\r\n/**\r\n * The Screen Space curvature effect can help highlighting ridge and valley of a model.\r\n */\r\nexport class ScreenSpaceCurvaturePostProcess extends PostProcess {\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n @serialize()\r\n public get ridge() {\r\n return this._effectWrapper.ridge;\r\n }\r\n\r\n public set ridge(value: number) {\r\n this._effectWrapper.ridge = value;\r\n }\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n @serialize()\r\n public get valley() {\r\n return this._effectWrapper.valley;\r\n }\r\n\r\n public set valley(value: number) {\r\n this._effectWrapper.valley = value;\r\n }\r\n\r\n private _geometryBufferRenderer: Nullable<GeometryBufferRenderer>;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"ScreenSpaceCurvaturePostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"ScreenSpaceCurvaturePostProcess\";\r\n }\r\n\r\n protected override _effectWrapper: ThinScreenSpaceCurvaturePostProcess;\r\n\r\n /**\r\n * Creates a new instance ScreenSpaceCurvaturePostProcess\r\n * @param name The name of the effect.\r\n * @param scene The scene containing the objects to blur according to their velocity.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n blockCompilation = false\r\n ) {\r\n const localOptions = {\r\n uniforms: ThinScreenSpaceCurvaturePostProcess.Uniforms,\r\n samplers: ThinScreenSpaceCurvaturePostProcess.Samplers,\r\n size: typeof options === \"number\" ? options : undefined,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n blockCompilation,\r\n ...(options as PostProcessOptions),\r\n };\r\n\r\n super(name, ThinScreenSpaceCurvaturePostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinScreenSpaceCurvaturePostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this._geometryBufferRenderer = scene.enableGeometryBufferRenderer();\r\n\r\n if (!this._geometryBufferRenderer) {\r\n // Geometry buffer renderer is not supported. So, work as a passthrough.\r\n Logger.Error(\"Multiple Render Target support needed for screen space curvature post process. Please use IsSupported test first.\");\r\n } else {\r\n if (this._geometryBufferRenderer.generateNormalsInWorldSpace) {\r\n Logger.Error(\"ScreenSpaceCurvaturePostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\r\n }\r\n\r\n // Geometry buffer renderer is supported.\r\n this.onApply = (effect: Effect) => {\r\n const normalTexture = this._geometryBufferRenderer!.getGBuffer().textures[1];\r\n effect.setTexture(\"normalSampler\", normalTexture);\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n\r\n return engine.getCaps().drawBuffersExtension;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new ScreenSpaceCurvaturePostProcess(\r\n parsedPostProcess.name,\r\n scene,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ScreenSpaceCurvaturePostProcess\", ScreenSpaceCurvaturePostProcess);\r\n"]}
@@ -5,6 +5,7 @@ import { PostProcess } from "./postProcess.js";
5
5
  import "../Shaders/sharpen.fragment.js";
6
6
  import type { AbstractEngine } from "../Engines/abstractEngine.js";
7
7
  import type { Scene } from "../scene.js";
8
+ import { ThinSharpenPostProcess } from "./thinSharpenPostProcess.js";
8
9
  /**
9
10
  * The SharpenPostProcess applies a sharpen kernel to every pixel
10
11
  * See http://en.wikipedia.org/wiki/Kernel_(image_processing)
@@ -13,16 +14,19 @@ export declare class SharpenPostProcess extends PostProcess {
13
14
  /**
14
15
  * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)
15
16
  */
16
- colorAmount: number;
17
+ get colorAmount(): number;
18
+ set colorAmount(value: number);
17
19
  /**
18
20
  * How much sharpness should be applied (default: 0.3)
19
21
  */
20
- edgeAmount: number;
22
+ get edgeAmount(): number;
23
+ set edgeAmount(value: number);
21
24
  /**
22
25
  * Gets a string identifying the name of the class
23
26
  * @returns "SharpenPostProcess" string
24
27
  */
25
28
  getClassName(): string;
29
+ protected _effectWrapper: ThinSharpenPostProcess;
26
30
  /**
27
31
  * Creates a new instance ConvolutionPostProcess
28
32
  * @param name The name of the effect.
@@ -35,7 +39,6 @@ export declare class SharpenPostProcess extends PostProcess {
35
39
  * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
36
40
  */
37
41
  constructor(name: string, options: number | PostProcessOptions, camera: Nullable<Camera>, samplingMode?: number, engine?: AbstractEngine, reusable?: boolean, textureType?: number, blockCompilation?: boolean);
38
- protected _gatherImports(useWebGPU: boolean, list: Promise<any>[]): void;
39
42
  /**
40
43
  * @internal
41
44
  */
@@ -5,11 +5,30 @@ import "../Shaders/sharpen.fragment.js";
5
5
  import { RegisterClass } from "../Misc/typeStore.js";
6
6
  import { serialize } from "../Misc/decorators.js";
7
7
  import { SerializationHelper } from "../Misc/decorators.serialization.js";
8
+ import { ThinSharpenPostProcess } from "./thinSharpenPostProcess.js";
8
9
  /**
9
10
  * The SharpenPostProcess applies a sharpen kernel to every pixel
10
11
  * See http://en.wikipedia.org/wiki/Kernel_(image_processing)
11
12
  */
12
13
  export class SharpenPostProcess extends PostProcess {
14
+ /**
15
+ * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)
16
+ */
17
+ get colorAmount() {
18
+ return this._effectWrapper.colorAmount;
19
+ }
20
+ set colorAmount(value) {
21
+ this._effectWrapper.colorAmount = value;
22
+ }
23
+ /**
24
+ * How much sharpness should be applied (default: 0.3)
25
+ */
26
+ get edgeAmount() {
27
+ return this._effectWrapper.edgeAmount;
28
+ }
29
+ set edgeAmount(value) {
30
+ this._effectWrapper.edgeAmount = value;
31
+ }
13
32
  /**
14
33
  * Gets a string identifying the name of the class
15
34
  * @returns "SharpenPostProcess" string
@@ -29,29 +48,25 @@ export class SharpenPostProcess extends PostProcess {
29
48
  * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)
30
49
  */
31
50
  constructor(name, options, camera, samplingMode, engine, reusable, textureType = 0, blockCompilation = false) {
32
- super(name, "sharpen", ["sharpnessAmounts", "screenSize"], null, options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, blockCompilation);
33
- /**
34
- * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)
35
- */
36
- this.colorAmount = 1.0;
37
- /**
38
- * How much sharpness should be applied (default: 0.3)
39
- */
40
- this.edgeAmount = 0.3;
41
- this.onApply = (effect) => {
42
- effect.setFloat2("screenSize", this.width, this.height);
43
- effect.setFloat2("sharpnessAmounts", this.edgeAmount, this.colorAmount);
51
+ const localOptions = {
52
+ uniforms: ThinSharpenPostProcess.Uniforms,
53
+ size: typeof options === "number" ? options : undefined,
54
+ camera,
55
+ samplingMode,
56
+ engine,
57
+ reusable,
58
+ textureType,
59
+ blockCompilation,
60
+ ...options,
61
+ };
62
+ super(name, ThinSharpenPostProcess.FragmentUrl, {
63
+ effectWrapper: typeof options === "number" || !options.effectWrapper ? new ThinSharpenPostProcess(name, engine, localOptions) : undefined,
64
+ ...localOptions,
65
+ });
66
+ this.onApply = (_effect) => {
67
+ this._effectWrapper.textureWidth = this.width;
68
+ this._effectWrapper.textureHeight = this.height;
44
69
  };
45
- }
46
- _gatherImports(useWebGPU, list) {
47
- if (useWebGPU) {
48
- this._webGPUReady = true;
49
- list.push(Promise.all([import("../ShadersWGSL/sharpen.fragment.js")]));
50
- }
51
- else {
52
- list.push(Promise.all([import("../Shaders/sharpen.fragment.js")]));
53
- }
54
- super._gatherImports(useWebGPU, list);
55
70
  }
56
71
  /**
57
72
  * @internal
@@ -64,9 +79,9 @@ export class SharpenPostProcess extends PostProcess {
64
79
  }
65
80
  __decorate([
66
81
  serialize()
67
- ], SharpenPostProcess.prototype, "colorAmount", void 0);
82
+ ], SharpenPostProcess.prototype, "colorAmount", null);
68
83
  __decorate([
69
84
  serialize()
70
- ], SharpenPostProcess.prototype, "edgeAmount", void 0);
85
+ ], SharpenPostProcess.prototype, "edgeAmount", null);
71
86
  RegisterClass("BABYLON.SharpenPostProcess", SharpenPostProcess);
72
87
  //# sourceMappingURL=sharpenPostProcess.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sharpenPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/sharpenPostProcess.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAKvE;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAY/C;;;OAGG;IACa,YAAY;QACxB,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAED;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,yBAAyB,EACzD,gBAAgB,GAAG,KAAK;QAExB,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAxC5K;;WAEG;QAEI,gBAAW,GAAW,GAAG,CAAC;QACjC;;WAEG;QAEI,eAAU,GAAW,GAAG,CAAC;QAiC5B,IAAI,CAAC,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;YAC9B,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC,CAAC;IACN,CAAC;IAEkB,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,MAAM,CAAU,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QACrG,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,kBAAkB,CACzB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA5EU;IADN,SAAS,EAAE;uDACqB;AAK1B;IADN,SAAS,EAAE;sDACoB;AAyEpC,aAAa,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/sharpen.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\n\r\n/**\r\n * The SharpenPostProcess applies a sharpen kernel to every pixel\r\n * See http://en.wikipedia.org/wiki/Kernel_(image_processing)\r\n */\r\nexport class SharpenPostProcess extends PostProcess {\r\n /**\r\n * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)\r\n */\r\n @serialize()\r\n public colorAmount: number = 1.0;\r\n /**\r\n * How much sharpness should be applied (default: 0.3)\r\n */\r\n @serialize()\r\n public edgeAmount: number = 0.3;\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"SharpenPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"SharpenPostProcess\";\r\n }\r\n\r\n /**\r\n * Creates a new instance ConvolutionPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n blockCompilation = false\r\n ) {\r\n super(name, \"sharpen\", [\"sharpnessAmounts\", \"screenSize\"], null, options, camera, samplingMode, engine, reusable, null, textureType, undefined, null, blockCompilation);\r\n\r\n this.onApply = (effect: Effect) => {\r\n effect.setFloat2(\"screenSize\", this.width, this.height);\r\n effect.setFloat2(\"sharpnessAmounts\", this.edgeAmount, this.colorAmount);\r\n };\r\n }\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(Promise.all([import(\"../ShadersWGSL/sharpen.fragment\")]));\r\n } else {\r\n list.push(Promise.all([import(\"../Shaders/sharpen.fragment\")]));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new SharpenPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SharpenPostProcess\", SharpenPostProcess);\r\n"]}
1
+ {"version":3,"file":"sharpenPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/sharpenPostProcess.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IAC/C;;OAEG;IAEH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED,IAAW,WAAW,CAAC,KAAa;QAChC,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED;;OAEG;IAEH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED,IAAW,UAAU,CAAC,KAAa;QAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAID;;;;;;;;;;OAUG;IACH,YACI,IAAY,EACZ,OAAoC,EACpC,MAAwB,EACxB,YAAqB,EACrB,MAAuB,EACvB,QAAkB,EAClB,cAAsB,SAAS,CAAC,yBAAyB,EACzD,gBAAgB,GAAG,KAAK;QAExB,MAAM,YAAY,GAAG;YACjB,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvD,MAAM;YACN,YAAY;YACZ,MAAM;YACN,QAAQ;YACR,WAAW;YACX,gBAAgB;YAChB,GAAI,OAA8B;SACrC,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,WAAW,EAAE;YAC5C,aAAa,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACzI,GAAG,YAAY;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;YAC/B,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QACpD,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAU,MAAM,CAAC,iBAAsB,EAAE,YAAoB,EAAE,KAAY,EAAE,OAAe;QACrG,OAAO,mBAAmB,CAAC,KAAK,CAC5B,GAAG,EAAE;YACD,OAAO,IAAI,kBAAkB,CACzB,iBAAiB,CAAC,IAAI,EACtB,iBAAiB,CAAC,OAAO,EACzB,YAAY,EACZ,iBAAiB,CAAC,wBAAwB,EAC1C,KAAK,CAAC,SAAS,EAAE,EACjB,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,QAAQ,CAC7B,CAAC;QACN,CAAC,EACD,iBAAiB,EACjB,KAAK,EACL,OAAO,CACV,CAAC;IACN,CAAC;CACJ;AA/FG;IADC,SAAS,EAAE;qDAGX;AAUD;IADC,SAAS,EAAE;oDAGX;AAmFL,aAAa,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport type { Camera } from \"../Cameras/camera\";\r\nimport type { Effect } from \"../Materials/effect\";\r\nimport type { PostProcessOptions } from \"./postProcess\";\r\nimport { PostProcess } from \"./postProcess\";\r\nimport { Constants } from \"../Engines/constants\";\r\n\r\nimport \"../Shaders/sharpen.fragment\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\nimport { serialize } from \"../Misc/decorators\";\r\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\r\n\r\nimport type { AbstractEngine } from \"../Engines/abstractEngine\";\r\nimport type { Scene } from \"../scene\";\r\nimport { ThinSharpenPostProcess } from \"./thinSharpenPostProcess\";\r\n\r\n/**\r\n * The SharpenPostProcess applies a sharpen kernel to every pixel\r\n * See http://en.wikipedia.org/wiki/Kernel_(image_processing)\r\n */\r\nexport class SharpenPostProcess extends PostProcess {\r\n /**\r\n * How much of the original color should be applied. Setting this to 0 will display edge detection. (default: 1)\r\n */\r\n @serialize()\r\n public get colorAmount() {\r\n return this._effectWrapper.colorAmount;\r\n }\r\n\r\n public set colorAmount(value: number) {\r\n this._effectWrapper.colorAmount = value;\r\n }\r\n\r\n /**\r\n * How much sharpness should be applied (default: 0.3)\r\n */\r\n @serialize()\r\n public get edgeAmount() {\r\n return this._effectWrapper.edgeAmount;\r\n }\r\n\r\n public set edgeAmount(value: number) {\r\n this._effectWrapper.edgeAmount = value;\r\n }\r\n\r\n /**\r\n * Gets a string identifying the name of the class\r\n * @returns \"SharpenPostProcess\" string\r\n */\r\n public override getClassName(): string {\r\n return \"SharpenPostProcess\";\r\n }\r\n\r\n protected override _effectWrapper: ThinSharpenPostProcess;\r\n\r\n /**\r\n * Creates a new instance ConvolutionPostProcess\r\n * @param name The name of the effect.\r\n * @param options The required width/height ratio to downsize to before computing the render pass.\r\n * @param camera The camera to apply the render pass to.\r\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\r\n * @param engine The engine which the post process will be applied. (default: current engine)\r\n * @param reusable If the post process can be reused on the same frame. (default: false)\r\n * @param textureType Type of textures used when performing the post process. (default: 0)\r\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: false)\r\n */\r\n constructor(\r\n name: string,\r\n options: number | PostProcessOptions,\r\n camera: Nullable<Camera>,\r\n samplingMode?: number,\r\n engine?: AbstractEngine,\r\n reusable?: boolean,\r\n textureType: number = Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n blockCompilation = false\r\n ) {\r\n const localOptions = {\r\n uniforms: ThinSharpenPostProcess.Uniforms,\r\n size: typeof options === \"number\" ? options : undefined,\r\n camera,\r\n samplingMode,\r\n engine,\r\n reusable,\r\n textureType,\r\n blockCompilation,\r\n ...(options as PostProcessOptions),\r\n };\r\n\r\n super(name, ThinSharpenPostProcess.FragmentUrl, {\r\n effectWrapper: typeof options === \"number\" || !options.effectWrapper ? new ThinSharpenPostProcess(name, engine, localOptions) : undefined,\r\n ...localOptions,\r\n });\r\n\r\n this.onApply = (_effect: Effect) => {\r\n this._effectWrapper.textureWidth = this.width;\r\n this._effectWrapper.textureHeight = this.height;\r\n };\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public static override _Parse(parsedPostProcess: any, targetCamera: Camera, scene: Scene, rootUrl: string) {\r\n return SerializationHelper.Parse(\r\n () => {\r\n return new SharpenPostProcess(\r\n parsedPostProcess.name,\r\n parsedPostProcess.options,\r\n targetCamera,\r\n parsedPostProcess.renderTargetSamplingMode,\r\n scene.getEngine(),\r\n parsedPostProcess.textureType,\r\n parsedPostProcess.reusable\r\n );\r\n },\r\n parsedPostProcess,\r\n scene,\r\n rootUrl\r\n );\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SharpenPostProcess\", SharpenPostProcess);\r\n"]}
@@ -0,0 +1,20 @@
1
+ import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Effect } from "../index.js";
2
+ import { EffectWrapper } from "../Materials/effectRenderer.js";
3
+ import { Observable } from "../Misc/observable.js";
4
+ /**
5
+ * Class used to apply a custom post process
6
+ */
7
+ export declare class ThinCustomPostProcess extends EffectWrapper {
8
+ /**
9
+ * Observable triggered when the post process is bound
10
+ */
11
+ onBindObservable: Observable<Effect>;
12
+ /**
13
+ * Constructs a new custom post process
14
+ * @param name Name of the effect
15
+ * @param engine Engine to use to render the effect. If not provided, the last created engine will be used
16
+ * @param options Options to configure the effect
17
+ */
18
+ constructor(name: string, engine?: Nullable<AbstractEngine>, options?: EffectWrapperCreationOptions);
19
+ bind(noDefaultBindings?: boolean): void;
20
+ }
@@ -0,0 +1,32 @@
1
+ import { EffectWrapper } from "../Materials/effectRenderer.js";
2
+ import { Engine } from "../Engines/engine.js";
3
+ import { Observable } from "../Misc/observable.js";
4
+ /**
5
+ * Class used to apply a custom post process
6
+ */
7
+ export class ThinCustomPostProcess extends EffectWrapper {
8
+ /**
9
+ * Constructs a new custom post process
10
+ * @param name Name of the effect
11
+ * @param engine Engine to use to render the effect. If not provided, the last created engine will be used
12
+ * @param options Options to configure the effect
13
+ */
14
+ constructor(name, engine = null, options) {
15
+ super({
16
+ name,
17
+ engine: engine || Engine.LastCreatedEngine,
18
+ useShaderStore: true,
19
+ useAsPostProcess: true,
20
+ ...options,
21
+ });
22
+ /**
23
+ * Observable triggered when the post process is bound
24
+ */
25
+ this.onBindObservable = new Observable();
26
+ }
27
+ bind(noDefaultBindings = false) {
28
+ super.bind(noDefaultBindings);
29
+ this.onBindObservable.notifyObservers(this._drawWrapper.effect);
30
+ }
31
+ }
32
+ //# sourceMappingURL=thinCustomPostProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinCustomPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinCustomPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IAMpD;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,iBAAkB;YAC3C,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,GAAG,OAAO;SACb,CAAC,CAAC;QAlBP;;WAEG;QACI,qBAAgB,GAAuB,IAAI,UAAU,EAAU,CAAC;IAgBvE,CAAC;IAEe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,CAAC;IACrE,CAAC;CACJ","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Effect } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { Observable } from \"../Misc/observable\";\r\n\r\n/**\r\n * Class used to apply a custom post process\r\n */\r\nexport class ThinCustomPostProcess extends EffectWrapper {\r\n /**\r\n * Observable triggered when the post process is bound\r\n */\r\n public onBindObservable: Observable<Effect> = new Observable<Effect>();\r\n\r\n /**\r\n * Constructs a new custom post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: EffectWrapperCreationOptions) {\r\n super({\r\n name,\r\n engine: engine || Engine.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n ...options,\r\n });\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n this.onBindObservable.notifyObservers(this._drawWrapper.effect!);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,36 @@
1
+ import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from "../index.js";
2
+ import { EffectWrapper } from "../Materials/effectRenderer.js";
3
+ /**
4
+ * Post process used to apply a screen space curvature post process
5
+ */
6
+ export declare class ThinScreenSpaceCurvaturePostProcess extends EffectWrapper {
7
+ /**
8
+ * The fragment shader url
9
+ */
10
+ static readonly FragmentUrl = "screenSpaceCurvature";
11
+ /**
12
+ * The list of uniforms used by the effect
13
+ */
14
+ static readonly Uniforms: string[];
15
+ /**
16
+ * The list of samplers used by the effect
17
+ */
18
+ static readonly Samplers: string[];
19
+ protected _gatherImports(useWebGPU: boolean, list: Promise<any>[]): void;
20
+ /**
21
+ * Constructs a new screen space curvature post process
22
+ * @param name Name of the effect
23
+ * @param engine Engine to use to render the effect. If not provided, the last created engine will be used
24
+ * @param options Options to configure the effect
25
+ */
26
+ constructor(name: string, engine?: Nullable<AbstractEngine>, options?: EffectWrapperCreationOptions);
27
+ /**
28
+ * Defines how much ridge the curvature effect displays.
29
+ */
30
+ ridge: number;
31
+ /**
32
+ * Defines how much valley the curvature effect displays.
33
+ */
34
+ valley: number;
35
+ bind(noDefaultBindings?: boolean): void;
36
+ }
@@ -0,0 +1,61 @@
1
+ import { EffectWrapper } from "../Materials/effectRenderer.js";
2
+ import { Engine } from "../Engines/engine.js";
3
+ /**
4
+ * Post process used to apply a screen space curvature post process
5
+ */
6
+ export class ThinScreenSpaceCurvaturePostProcess extends EffectWrapper {
7
+ _gatherImports(useWebGPU, list) {
8
+ if (useWebGPU) {
9
+ this._webGPUReady = true;
10
+ list.push(import("../ShadersWGSL/screenSpaceCurvature.fragment.js"));
11
+ }
12
+ else {
13
+ list.push(import("../Shaders/screenSpaceCurvature.fragment.js"));
14
+ }
15
+ }
16
+ /**
17
+ * Constructs a new screen space curvature post process
18
+ * @param name Name of the effect
19
+ * @param engine Engine to use to render the effect. If not provided, the last created engine will be used
20
+ * @param options Options to configure the effect
21
+ */
22
+ constructor(name, engine = null, options) {
23
+ super({
24
+ ...options,
25
+ name,
26
+ engine: engine || Engine.LastCreatedEngine,
27
+ useShaderStore: true,
28
+ useAsPostProcess: true,
29
+ fragmentShader: ThinScreenSpaceCurvaturePostProcess.FragmentUrl,
30
+ uniforms: ThinScreenSpaceCurvaturePostProcess.Uniforms,
31
+ samplers: ThinScreenSpaceCurvaturePostProcess.Samplers,
32
+ });
33
+ /**
34
+ * Defines how much ridge the curvature effect displays.
35
+ */
36
+ this.ridge = 1;
37
+ /**
38
+ * Defines how much valley the curvature effect displays.
39
+ */
40
+ this.valley = 1;
41
+ }
42
+ bind(noDefaultBindings = false) {
43
+ super.bind(noDefaultBindings);
44
+ const effect = this._drawWrapper.effect;
45
+ effect.setFloat("curvature_ridge", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));
46
+ effect.setFloat("curvature_valley", 0.7 / Math.max(this.valley * this.valley, 1e-4));
47
+ }
48
+ }
49
+ /**
50
+ * The fragment shader url
51
+ */
52
+ ThinScreenSpaceCurvaturePostProcess.FragmentUrl = "screenSpaceCurvature";
53
+ /**
54
+ * The list of uniforms used by the effect
55
+ */
56
+ ThinScreenSpaceCurvaturePostProcess.Uniforms = ["curvature_ridge", "curvature_valley"];
57
+ /**
58
+ * The list of samplers used by the effect
59
+ */
60
+ ThinScreenSpaceCurvaturePostProcess.Samplers = ["normalSampler"];
61
+ //# sourceMappingURL=thinScreenSpaceCurvaturePostProcess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinScreenSpaceCurvaturePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinScreenSpaceCurvaturePostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,aAAa;IAgB/C,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,iBAAkB;YAC3C,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,mCAAmC,CAAC,WAAW;YAC/D,QAAQ,EAAE,mCAAmC,CAAC,QAAQ;YACtD,QAAQ,EAAE,mCAAmC,CAAC,QAAQ;SACzD,CAAC,CAAC;QAGP;;WAEG;QACI,UAAK,GAAW,CAAC,CAAC;QAEzB;;WAEG;QACI,WAAM,GAAW,CAAC,CAAC;IAV1B,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;QAEzC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACzF,CAAC;;AA5DD;;GAEG;AACoB,+CAAW,GAAG,sBAAsB,AAAzB,CAA0B;AAE5D;;GAEG;AACoB,4CAAQ,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,AAA1C,CAA2C;AAE1E;;GAEG;AACoB,4CAAQ,GAAG,CAAC,eAAe,CAAC,AAApB,CAAqB","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { Engine } from \"../Engines/engine\";\r\n\r\n/**\r\n * Post process used to apply a screen space curvature post process\r\n */\r\nexport class ThinScreenSpaceCurvaturePostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"screenSpaceCurvature\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"curvature_ridge\", \"curvature_valley\"];\r\n\r\n /**\r\n * The list of samplers used by the effect\r\n */\r\n public static readonly Samplers = [\"normalSampler\"];\r\n\r\n protected override _gatherImports(useWebGPU: boolean, list: Promise<any>[]) {\r\n if (useWebGPU) {\r\n this._webGPUReady = true;\r\n list.push(import(\"../ShadersWGSL/screenSpaceCurvature.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceCurvature.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new screen space curvature post process\r\n * @param name Name of the effect\r\n * @param engine Engine to use to render the effect. If not provided, the last created engine will be used\r\n * @param options Options to configure the effect\r\n */\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || Engine.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinScreenSpaceCurvaturePostProcess.FragmentUrl,\r\n uniforms: ThinScreenSpaceCurvaturePostProcess.Uniforms,\r\n samplers: ThinScreenSpaceCurvaturePostProcess.Samplers,\r\n });\r\n }\r\n\r\n /**\r\n * Defines how much ridge the curvature effect displays.\r\n */\r\n public ridge: number = 1;\r\n\r\n /**\r\n * Defines how much valley the curvature effect displays.\r\n */\r\n public valley: number = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n const effect = this._drawWrapper.effect!;\r\n\r\n effect.setFloat(\"curvature_ridge\", 0.5 / Math.max(this.ridge * this.ridge, 1e-4));\r\n effect.setFloat(\"curvature_valley\", 0.7 / Math.max(this.valley * this.valley, 1e-4));\r\n }\r\n}\r\n"]}