@onerjs/core 8.27.11 → 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.
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.d.ts +39 -0
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js +86 -0
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.d.ts +34 -0
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js +74 -0
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/index.d.ts +2 -0
- package/FrameGraph/Node/Blocks/index.js +2 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.d.ts +21 -0
- package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.js +18 -0
- package/FrameGraph/Tasks/PostProcesses/customPostProcessTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.d.ts +22 -0
- package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.js +27 -0
- package/FrameGraph/Tasks/PostProcesses/screenSpaceCurvatureTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/sharpenTask.d.ts +17 -0
- package/FrameGraph/Tasks/PostProcesses/sharpenTask.js +23 -0
- package/FrameGraph/Tasks/PostProcesses/sharpenTask.js.map +1 -0
- package/FrameGraph/frameGraphTextureManager.d.ts +6 -2
- package/FrameGraph/frameGraphTextureManager.js +22 -8
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/index.d.ts +3 -0
- package/FrameGraph/index.js +3 -0
- package/FrameGraph/index.js.map +1 -1
- package/Materials/PBR/openPbrMaterial.d.ts +39 -0
- package/Materials/PBR/openPbrMaterial.js +47 -0
- package/Materials/PBR/openPbrMaterial.js.map +1 -1
- package/Materials/materialHelper.functions.d.ts +1 -7
- package/Materials/materialHelper.functions.js +2 -15
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialHelper.functions.pure.d.ts +10 -0
- package/Materials/materialHelper.functions.pure.js +21 -0
- package/Materials/materialHelper.functions.pure.js.map +1 -0
- package/PostProcesses/index.d.ts +2 -0
- package/PostProcesses/index.js +2 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +6 -2
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +37 -13
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.d.ts +6 -3
- package/PostProcesses/sharpenPostProcess.js +39 -24
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/thinCustomPostProcess.d.ts +20 -0
- package/PostProcesses/thinCustomPostProcess.js +32 -0
- package/PostProcesses/thinCustomPostProcess.js.map +1 -0
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.d.ts +36 -0
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +61 -0
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -0
- package/PostProcesses/thinSharpenPostProcess.d.ts +40 -0
- package/PostProcesses/thinSharpenPostProcess.js +64 -0
- package/PostProcesses/thinSharpenPostProcess.js.map +1 -0
- package/Rendering/objectRenderer.js +3 -1
- package/Rendering/objectRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDielectricReflectance.js +8 -9
- package/Shaders/ShadersInclude/openpbrDielectricReflectance.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDirectLighting.js +13 -6
- package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +10 -2
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js +7 -1
- package/Shaders/ShadersInclude/openpbrFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js +2 -0
- package/Shaders/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrThinFilmLayerData.d.ts +5 -0
- package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js +27 -0
- package/Shaders/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -0
- package/Shaders/ShadersInclude/openpbrUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.js +6 -0
- package/Shaders/ShadersInclude/openpbrVertexDeclaration.js.map +1 -1
- package/Shaders/openpbr.fragment.d.ts +1 -0
- package/Shaders/openpbr.fragment.js +7 -1
- package/Shaders/openpbr.fragment.js.map +1 -1
- package/Shaders/openpbr.vertex.js +4 -0
- package/Shaders/openpbr.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js +2 -2
- package/ShadersWGSL/ShadersInclude/openpbrBaseLayerData.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +13 -6
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +10 -2
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js +2 -0
- package/ShadersWGSL/ShadersInclude/openpbrFragmentSamplersDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js +27 -0
- package/ShadersWGSL/ShadersInclude/openpbrThinFilmLayerData.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrUboDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +3 -3
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/openpbr.fragment.d.ts +1 -0
- package/ShadersWGSL/openpbr.fragment.js +7 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/openpbr.vertex.js +4 -0
- package/ShadersWGSL/openpbr.vertex.js.map +1 -1
- package/ShadersWGSL/screenSpaceCurvature.fragment.d.ts +5 -0
- package/ShadersWGSL/screenSpaceCurvature.fragment.js +25 -0
- package/ShadersWGSL/screenSpaceCurvature.fragment.js.map +1 -0
- package/Sprites/spriteRenderer.js +1 -1
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/motionController/index.d.ts +1 -0
- package/XR/motionController/index.js +1 -0
- package/XR/motionController/index.js.map +1 -1
- package/XR/motionController/webXRMotionControllerManager.js +1 -0
- package/XR/motionController/webXRMotionControllerManager.js.map +1 -1
- package/XR/motionController/webXROculusHandController.d.ts +25 -0
- package/XR/motionController/webXROculusHandController.js +246 -0
- package/XR/motionController/webXROculusHandController.js.map +1 -0
- 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"]}
|
package/PostProcesses/index.d.ts
CHANGED
|
@@ -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";
|
package/PostProcesses/index.js
CHANGED
|
@@ -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":"AAAA,6DAA6D;AAC7D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAElD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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",
|
|
107
|
+
], ScreenSpaceCurvaturePostProcess.prototype, "ridge", null);
|
|
84
108
|
__decorate([
|
|
85
109
|
serialize()
|
|
86
|
-
], ScreenSpaceCurvaturePostProcess.prototype, "valley",
|
|
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":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,mDAAmD,CAAC;AAC3D,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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",
|
|
82
|
+
], SharpenPostProcess.prototype, "colorAmount", null);
|
|
68
83
|
__decorate([
|
|
69
84
|
serialize()
|
|
70
|
-
], SharpenPostProcess.prototype, "edgeAmount",
|
|
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;
|
|
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"]}
|