@onerjs/core 8.44.9 → 8.45.2
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/engine.d.ts +25 -0
- package/Engines/thinEngine.js +2 -0
- package/Engines/thinEngine.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.d.ts +2 -0
- package/Gizmos/boundingBoxGizmo.js +56 -7
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Layers/thinEffectLayer.js +1 -2
- package/Layers/thinEffectLayer.js.map +1 -1
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js +3 -0
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +2 -2
- package/Materials/Textures/renderTargetTexture.js +2 -2
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Misc/stringTools.js +20 -14
- package/Misc/stringTools.js.map +1 -1
- package/Misc/thinMinMaxReducer.js +4 -3
- package/Misc/thinMinMaxReducer.js.map +1 -1
- package/PostProcesses/thinAnaglyphPostProcess.js +2 -2
- package/PostProcesses/thinAnaglyphPostProcess.js.map +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.js +2 -2
- package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/thinBloomMergePostProcess.js +2 -2
- package/PostProcesses/thinBloomMergePostProcess.js.map +1 -1
- package/PostProcesses/thinBlurPostProcess.js +2 -2
- package/PostProcesses/thinBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinChromaticAberrationPostProcess.js +2 -2
- package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.js +2 -2
- package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/thinConvolutionPostProcess.js +2 -2
- package/PostProcesses/thinConvolutionPostProcess.js.map +1 -1
- package/PostProcesses/thinCustomPostProcess.js +2 -2
- package/PostProcesses/thinCustomPostProcess.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js +2 -2
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.js +2 -2
- package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/thinFXAAPostProcess.js +2 -2
- package/PostProcesses/thinFXAAPostProcess.js.map +1 -1
- package/PostProcesses/thinFilterPostProcess.js +2 -2
- package/PostProcesses/thinFilterPostProcess.js.map +1 -1
- package/PostProcesses/thinGrainPostProcess.js +2 -2
- package/PostProcesses/thinGrainPostProcess.js.map +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.js +1 -2
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/thinPassPostProcess.js +4 -4
- package/PostProcesses/thinPassPostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2BlurPostProcess.js +2 -2
- package/PostProcesses/thinSSAO2BlurPostProcess.js.map +1 -1
- package/PostProcesses/thinSSAO2CombinePostProcess.js +2 -2
- package/PostProcesses/thinSSAO2CombinePostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js +2 -2
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -1
- package/PostProcesses/thinSSRBlurPostProcess.js +2 -2
- package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js +2 -2
- package/PostProcesses/thinScreenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/thinSharpenPostProcess.js +2 -2
- package/PostProcesses/thinSharpenPostProcess.js.map +1 -1
- package/PostProcesses/thinTonemapPostProcess.js +2 -2
- package/PostProcesses/thinTonemapPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -3
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +1 -2
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/iblCdfGenerator.js +1 -2
- package/Rendering/iblCdfGenerator.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +8 -2
- package/Rendering/objectRenderer.js +8 -2
- package/Rendering/objectRenderer.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.d.ts +25 -0
- package/XR/features/WebXRControllerPointerSelection.js +76 -0
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.d.ts +13 -0
- package/XR/features/WebXRControllerTeleportation.js +38 -11
- package/XR/features/WebXRControllerTeleportation.js.map +1 -1
- package/package.json +1 -1
- package/scene.js +6 -0
- package/scene.js.map +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import { Engine } from "../Engines/engine.js";
|
|
3
2
|
import { EngineStore } from "../Engines/engineStore.js";
|
|
4
3
|
import { ImageProcessingConfiguration } from "../Materials/imageProcessingConfiguration.js";
|
|
5
4
|
/**
|
|
@@ -369,7 +368,7 @@ export class ThinImageProcessingPostProcess extends EffectWrapper {
|
|
|
369
368
|
super({
|
|
370
369
|
...options,
|
|
371
370
|
name,
|
|
372
|
-
engine: engine ||
|
|
371
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
373
372
|
useShaderStore: true,
|
|
374
373
|
useAsPostProcess: true,
|
|
375
374
|
fragmentShader: ThinImageProcessingPostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinImageProcessingPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinImageProcessingPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AAmBzF;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,aAAa;IAM1C,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAOD;;OAEG;IACH,IAAW,4BAA4B;QACnC,OAAO,IAAI,CAAC,6BAA6B,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,IAAW,4BAA4B,CAAC,KAAmC;QACvE,sDAAsD;QACtD,iCAAiC;QACjC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAOD;;;;OAIG;IACO,mCAAmC,CAAC,aAAqD,EAAE,UAAU,GAAG,KAAK;QACnH,IAAI,aAAa,KAAK,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACvD,OAAO;QACX,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACtE,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAChG,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACnC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC7B,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACJ,KAAK,GAAG,WAAW,CAAC,gBAAiB,CAAC;gBAC1C,CAAC;YACL,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC,4BAA4B,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,6BAA6B,GAAG,IAAI,4BAA4B,EAAE,CAAC;YAC5E,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,6BAA6B,GAAG,aAAa,CAAC;QACvD,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3F,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7B,CAAC,CAAC,CAAC;QACP,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC;IACzD,CAAC;IACD;;OAEG;IACH,IAAW,WAAW,CAAC,KAA4B;QAC/C,IAAI,CAAC,4BAA4B,CAAC,WAAW,GAAG,KAAK,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;IAChE,CAAC;IACD;;OAEG;IACH,IAAW,kBAAkB,CAAC,KAAc;QACxC,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,CAAC;IACjE,CAAC;IACD;;OAEG;IACH,IAAW,mBAAmB,CAAC,KAA4B;QACvD,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,CAAC;IACjE,CAAC;IACD;;OAEG;IACH,IAAW,mBAAmB,CAAC,KAAc;QACzC,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC;IACtD,CAAC;IACD;;OAEG;IACH,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,4BAA4B,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CAAC;IACjE,CAAC;IACD;;OAEG;IACH,IAAW,kBAAkB,CAAC,KAAc;QACxC,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,6BAA6B,CAAC,eAAe,CAAC;IAC9D,CAAC;IACD;;OAEG;IACH,IAAW,eAAe,CAAC,KAAa;QACpC,IAAI,CAAC,6BAA6B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC;IACtD,CAAC;IACD;;OAEG;IACH,IAAW,QAAQ,CAAC,KAAa;QAC7B,IAAI,CAAC,4BAA4B,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD;;OAEG;IACH,IAAW,eAAe,CAAC,KAAa;QACpC,IAAI,CAAC,4BAA4B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD;;;OAGG;IACH,IAAW,eAAe,CAAC,KAAa;QACpC,IAAI,CAAC,4BAA4B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD;;;OAGG;IACH,IAAW,eAAe,CAAC,KAAa;QACpC,IAAI,CAAC,4BAA4B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD,IAAW,eAAe,CAAC,KAAa;QACpC,IAAI,CAAC,4BAA4B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD,IAAW,eAAe,CAAC,KAAa;QACpC,IAAI,CAAC,4BAA4B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC;IAC5D,CAAC;IACD;;OAEG;IACH,IAAW,cAAc,CAAC,KAAa;QACnC,IAAI,CAAC,4BAA4B,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC;IAC3D,CAAC;IACD;;;OAGG;IACH,IAAW,aAAa,CAAC,KAAa;QAClC,IAAI,CAAC,4BAA4B,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;IAC/D,CAAC;IACD;;OAEG;IACH,IAAW,iBAAiB,CAAC,KAAa;QACtC,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;IAC/D,CAAC;IACD;;OAEG;IACH,IAAW,iBAAiB,CAAC,KAAa;QACtC,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC;IAC7D,CAAC;IACD;;OAEG;IACH,IAAW,eAAe,CAAC,KAAc;QACrC,IAAI,CAAC,4BAA4B,CAAC,eAAe,GAAG,KAAK,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;IAChE,CAAC;IACD;;OAEG;IACH,IAAW,kBAAkB,CAAC,KAAa;QACvC,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;IAC9D,CAAC;IACD;;OAEG;IACH,IAAW,gBAAgB,CAAC,KAAc;QACtC,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC/D,CAAC;IAGD;;OAEG;IACH,IAAW,eAAe;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD;;OAEG;IACH,IAAW,eAAe,CAAC,KAAc;QACrC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAClC,OAAO;QACX,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB,CAAC,KAAa;QACvC,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB,CAAC,KAAa;QACxC,IAAI,CAAC,4BAA4B,CAAC,mBAAmB,GAAG,KAAK,CAAC;IAClE,CAAC;IA+BD;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAA+C;QAC9G,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,8BAA8B,CAAC,WAAW;SAC7D,CAAC,CAAC;QA1FC,qBAAgB,GAAG,IAAI,CAAC;QAoDhC;;WAEG;QACK,aAAQ,GAAwE;YACpF,eAAe,EAAE,KAAK;YACtB,QAAQ,EAAE,KAAK;YACf,yBAAyB,EAAE,KAAK;YAChC,uBAAuB,EAAE,KAAK;YAC9B,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,KAAK;YACtB,mBAAmB,EAAE,KAAK;YAC1B,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,KAAK;YACb,0BAA0B,EAAE,KAAK;YACjC,QAAQ,EAAE,KAAK;YACf,mBAAmB,EAAE,KAAK;SAC7B,CAAC;QAoBE,MAAM,4BAA4B,GAAG,OAAO,EAAE,4BAA4B,CAAC;QAE3E,sFAAsF;QACtF,qFAAqF;QACrF,IAAI,4BAA4B,EAAE,CAAC;YAC/B,4BAA4B,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACvD,IAAI,CAAC,mCAAmC,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;YAC7E,4CAA4C;YAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC;QACD,2DAA2D;aACtD,CAAC;YACF,IAAI,CAAC,mCAAmC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAChE,CAAC;IACL,CAAC;IAED;;OAEG;IACI,iBAAiB;QACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACtD,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAS,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;YAE1B,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ;oBACT,OAAO,IAAI,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;oBACzC,MAAM;gBACV;oBACI,IAAI,KAAK,EAAE,CAAC;wBACR,OAAO,IAAI,WAAW,IAAI,KAAK,CAAC;oBACpC,CAAC;oBACD,MAAM;YACd,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,4BAA4B,EAAE,CAAC;YAC/B,4BAA4B,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtE,4BAA4B,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAEe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClF,CAAC;IAEe,OAAO;QACnB,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACtE,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,GAAG,KAAK,CAAC;QACjE,CAAC;IACL,CAAC;;AAjgBD;;GAEG;AACoB,0CAAW,GAAG,iBAAiB,AAApB,CAAqB","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Observer, NonNullableFields, Scene, ColorCurves, BaseTexture, Color4 } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport type { IImageProcessingConfigurationDefines } from \"../Materials/imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration } from \"../Materials/imageProcessingConfiguration\";\r\n\r\n/**\r\n * Options used to create a ThinImageProcessingPostProcessOptions.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface ThinImageProcessingPostProcessOptions extends EffectWrapperCreationOptions {\r\n /**\r\n * An existing image processing configuration to use. If not provided, the scene one will be used.\r\n */\r\n imageProcessingConfiguration?: ImageProcessingConfiguration;\r\n\r\n /**\r\n * The scene to retrieve the image processing configuration from if not provided in the options.\r\n * If not provided, the last created scene will be used.\r\n */\r\n scene?: Nullable<Scene>;\r\n}\r\n\r\n/**\r\n * Post process used to apply image processing to a scene\r\n */\r\nexport class ThinImageProcessingPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"imageProcessing\";\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/imageProcessing.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/imageProcessing.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Default configuration related to image processing available in the PBR Material.\r\n */\r\n protected _imageProcessingConfiguration: ImageProcessingConfiguration;\r\n\r\n /**\r\n * Gets the image processing configuration used either in this material.\r\n */\r\n public get imageProcessingConfiguration(): ImageProcessingConfiguration {\r\n return this._imageProcessingConfiguration;\r\n }\r\n\r\n /**\r\n * Sets the Default image processing configuration used either in the this material.\r\n *\r\n * If sets to null, the scene one is in use.\r\n */\r\n public set imageProcessingConfiguration(value: ImageProcessingConfiguration) {\r\n // We are almost sure it is applied by post process as\r\n // We are in the post process :-)\r\n value.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(value);\r\n }\r\n\r\n /**\r\n * Keep track of the image processing observer to allow dispose and replace.\r\n */\r\n private _imageProcessingObserver: Nullable<Observer<ImageProcessingConfiguration>>;\r\n\r\n /**\r\n * Attaches a new image processing configuration to the PBR Material.\r\n * @param configuration\r\n * @param doNotBuild\r\n */\r\n protected _attachImageProcessingConfiguration(configuration: Nullable<ImageProcessingConfiguration>, doNotBuild = false): void {\r\n if (configuration === this._imageProcessingConfiguration) {\r\n return;\r\n }\r\n\r\n // Detaches observer.\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n // Pick the scene configuration if needed.\r\n if (!configuration) {\r\n let scene = this.options.scene;\r\n\r\n if (!scene) {\r\n const engine = this.options.engine;\r\n if (engine && engine.scenes) {\r\n const scenes = engine.scenes;\r\n scene = scenes[scenes.length - 1];\r\n } else {\r\n scene = EngineStore.LastCreatedScene!;\r\n }\r\n }\r\n\r\n if (scene) {\r\n this._imageProcessingConfiguration = scene.imageProcessingConfiguration;\r\n } else {\r\n this._imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n }\r\n } else {\r\n this._imageProcessingConfiguration = configuration;\r\n }\r\n\r\n // Attaches observer.\r\n if (this._imageProcessingConfiguration) {\r\n this._imageProcessingObserver = this._imageProcessingConfiguration.onUpdateParameters.add(() => {\r\n this._updateParameters();\r\n });\r\n }\r\n\r\n // Ensure the effect will be rebuilt.\r\n if (!doNotBuild) {\r\n this._updateParameters();\r\n }\r\n }\r\n\r\n /**\r\n * Gets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public get colorCurves(): Nullable<ColorCurves> {\r\n return this.imageProcessingConfiguration.colorCurves;\r\n }\r\n /**\r\n * Sets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public set colorCurves(value: Nullable<ColorCurves>) {\r\n this.imageProcessingConfiguration.colorCurves = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color curves effect is enabled.\r\n */\r\n public get colorCurvesEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorCurvesEnabled;\r\n }\r\n /**\r\n * Sets whether the color curves effect is enabled.\r\n */\r\n public set colorCurvesEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public get colorGradingTexture(): Nullable<BaseTexture> {\r\n return this.imageProcessingConfiguration.colorGradingTexture;\r\n }\r\n /**\r\n * Sets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public set colorGradingTexture(value: Nullable<BaseTexture>) {\r\n this.imageProcessingConfiguration.colorGradingTexture = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public get colorGradingEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorGradingEnabled;\r\n }\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public set colorGradingEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorGradingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets exposure used in the effect.\r\n */\r\n public get exposure(): number {\r\n return this.imageProcessingConfiguration.exposure;\r\n }\r\n /**\r\n * Sets exposure used in the effect.\r\n */\r\n public set exposure(value: number) {\r\n this.imageProcessingConfiguration.exposure = value;\r\n }\r\n\r\n /**\r\n * Gets whether tonemapping is enabled or not.\r\n */\r\n public get toneMappingEnabled(): boolean {\r\n return this._imageProcessingConfiguration.toneMappingEnabled;\r\n }\r\n /**\r\n * Sets whether tonemapping is enabled or not\r\n */\r\n public set toneMappingEnabled(value: boolean) {\r\n this._imageProcessingConfiguration.toneMappingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets the type of tone mapping effect.\r\n */\r\n public get toneMappingType(): number {\r\n return this._imageProcessingConfiguration.toneMappingType;\r\n }\r\n /**\r\n * Sets the type of tone mapping effect.\r\n */\r\n public set toneMappingType(value: number) {\r\n this._imageProcessingConfiguration.toneMappingType = value;\r\n }\r\n\r\n /**\r\n * Gets contrast used in the effect.\r\n */\r\n public get contrast(): number {\r\n return this.imageProcessingConfiguration.contrast;\r\n }\r\n /**\r\n * Sets contrast used in the effect.\r\n */\r\n public set contrast(value: number) {\r\n this.imageProcessingConfiguration.contrast = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette stretch size.\r\n */\r\n public get vignetteStretch(): number {\r\n return this.imageProcessingConfiguration.vignetteStretch;\r\n }\r\n /**\r\n * Sets Vignette stretch size.\r\n */\r\n public set vignetteStretch(value: number) {\r\n this.imageProcessingConfiguration.vignetteStretch = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public get vignetteCentreX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n /**\r\n * Sets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public set vignetteCentreX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public get vignetteCentreY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n /**\r\n * Sets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public set vignetteCentreY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center Y Offset.\r\n */\r\n public get vignetteCenterY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n public set vignetteCenterY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center X Offset.\r\n */\r\n public get vignetteCenterX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n public set vignetteCenterX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette weight or intensity of the vignette effect.\r\n */\r\n public get vignetteWeight(): number {\r\n return this.imageProcessingConfiguration.vignetteWeight;\r\n }\r\n /**\r\n * Sets Vignette weight or intensity of the vignette effect.\r\n */\r\n public set vignetteWeight(value: number) {\r\n this.imageProcessingConfiguration.vignetteWeight = value;\r\n }\r\n\r\n /**\r\n * Gets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public get vignetteColor(): Color4 {\r\n return this.imageProcessingConfiguration.vignetteColor;\r\n }\r\n /**\r\n * Sets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public set vignetteColor(value: Color4) {\r\n this.imageProcessingConfiguration.vignetteColor = value;\r\n }\r\n\r\n /**\r\n * Gets Camera field of view used by the Vignette effect.\r\n */\r\n public get vignetteCameraFov(): number {\r\n return this.imageProcessingConfiguration.vignetteCameraFov;\r\n }\r\n /**\r\n * Sets Camera field of view used by the Vignette effect.\r\n */\r\n public set vignetteCameraFov(value: number) {\r\n this.imageProcessingConfiguration.vignetteCameraFov = value;\r\n }\r\n\r\n /**\r\n * Gets the vignette blend mode allowing different kind of effect.\r\n */\r\n public get vignetteBlendMode(): number {\r\n return this.imageProcessingConfiguration.vignetteBlendMode;\r\n }\r\n /**\r\n * Sets the vignette blend mode allowing different kind of effect.\r\n */\r\n public set vignetteBlendMode(value: number) {\r\n this.imageProcessingConfiguration.vignetteBlendMode = value;\r\n }\r\n\r\n /**\r\n * Gets whether the vignette effect is enabled.\r\n */\r\n public get vignetteEnabled(): boolean {\r\n return this.imageProcessingConfiguration.vignetteEnabled;\r\n }\r\n /**\r\n * Sets whether the vignette effect is enabled.\r\n */\r\n public set vignetteEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.vignetteEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets intensity of the dithering effect.\r\n */\r\n public get ditheringIntensity(): number {\r\n return this.imageProcessingConfiguration.ditheringIntensity;\r\n }\r\n /**\r\n * Sets intensity of the dithering effect.\r\n */\r\n public set ditheringIntensity(value: number) {\r\n this.imageProcessingConfiguration.ditheringIntensity = value;\r\n }\r\n\r\n /**\r\n * Gets whether the dithering effect is enabled.\r\n */\r\n public get ditheringEnabled(): boolean {\r\n return this.imageProcessingConfiguration.ditheringEnabled;\r\n }\r\n /**\r\n * Sets whether the dithering effect is enabled.\r\n */\r\n public set ditheringEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.ditheringEnabled = value;\r\n }\r\n\r\n private _fromLinearSpace = true;\r\n /**\r\n * Gets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public get fromLinearSpace(): boolean {\r\n return this._fromLinearSpace;\r\n }\r\n /**\r\n * Sets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public set fromLinearSpace(value: boolean) {\r\n if (this._fromLinearSpace === value) {\r\n return;\r\n }\r\n\r\n this._fromLinearSpace = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * * Gets the width of the output texture used to store the result of the post process.\r\n */\r\n public get outputTextureWidth() {\r\n return this.imageProcessingConfiguration.outputTextureWidth;\r\n }\r\n\r\n /**\r\n * * Sets the width of the output texture used to store the result of the post process.\r\n */\r\n public set outputTextureWidth(value: number) {\r\n this.imageProcessingConfiguration.outputTextureWidth = value;\r\n }\r\n\r\n /**\r\n * * Gets the height of the output texture used to store the result of the post process.\r\n */\r\n public get outputTextureHeight() {\r\n return this.imageProcessingConfiguration.outputTextureHeight;\r\n }\r\n\r\n /**\r\n * * Sets the height of the output texture used to store the result of the post process.\r\n */\r\n public set outputTextureHeight(value: number) {\r\n this.imageProcessingConfiguration.outputTextureHeight = value;\r\n }\r\n\r\n /**\r\n * Gets/sets the aspect ratio used to override the default one.\r\n */\r\n public overrideAspectRatio?: number;\r\n\r\n /**\r\n * Defines cache preventing GC.\r\n */\r\n private _defines: IImageProcessingConfigurationDefines & { FROMLINEARSPACE: boolean } = {\r\n IMAGEPROCESSING: false,\r\n VIGNETTE: false,\r\n VIGNETTEBLENDMODEMULTIPLY: false,\r\n VIGNETTEBLENDMODEOPAQUE: false,\r\n TONEMAPPING: 0,\r\n CONTRAST: false,\r\n COLORCURVES: false,\r\n COLORGRADING: false,\r\n COLORGRADING3D: false,\r\n FROMLINEARSPACE: false,\r\n SAMPLER3DGREENDEPTH: false,\r\n SAMPLER3DBGRMAP: false,\r\n DITHER: false,\r\n IMAGEPROCESSINGPOSTPROCESS: false,\r\n EXPOSURE: false,\r\n SKIPFINALCOLORCLAMP: false,\r\n };\r\n\r\n public override readonly options: Required<NonNullableFields<ThinImageProcessingPostProcessOptions>>;\r\n\r\n /**\r\n * Constructs a new image processing 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?: ThinImageProcessingPostProcessOptions) {\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: ThinImageProcessingPostProcess.FragmentUrl,\r\n });\r\n\r\n const imageProcessingConfiguration = options?.imageProcessingConfiguration;\r\n\r\n // Setup the configuration as forced by the constructor. This would then not force the\r\n // scene materials output in linear space and let untouched the default forward pass.\r\n if (imageProcessingConfiguration) {\r\n imageProcessingConfiguration.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(imageProcessingConfiguration, true);\r\n // This will cause the shader to be compiled\r\n this._updateParameters();\r\n }\r\n // Setup the default processing configuration to the scene.\r\n else {\r\n this._attachImageProcessingConfiguration(null, true);\r\n this.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _updateParameters(): void {\r\n this._defines.FROMLINEARSPACE = this._fromLinearSpace;\r\n this.imageProcessingConfiguration.prepareDefines(this._defines, true);\r\n let defines = \"\";\r\n for (const prop in this._defines) {\r\n const value = (<any>this._defines)[prop];\r\n const type = typeof value;\r\n\r\n switch (type) {\r\n case \"number\":\r\n case \"string\":\r\n defines += `#define ${prop} ${value};\\n`;\r\n break;\r\n default:\r\n if (value) {\r\n defines += `#define ${prop};\\n`;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const samplers = [\"textureSampler\"];\r\n const uniforms = [\"scale\"];\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, this._defines);\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, this._defines);\r\n }\r\n\r\n this.updateEffect(defines, uniforms, samplers);\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n this.imageProcessingConfiguration.bind(this.effect, this.overrideAspectRatio);\r\n }\r\n\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n if (this._imageProcessingConfiguration) {\r\n this.imageProcessingConfiguration.applyByPostProcess = false;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"thinImageProcessingPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinImageProcessingPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Observer, NonNullableFields, Scene, ColorCurves, BaseTexture, Color4 } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport type { IImageProcessingConfigurationDefines } from \"../Materials/imageProcessingConfiguration.defines\";\r\nimport { ImageProcessingConfiguration } from \"../Materials/imageProcessingConfiguration\";\r\n\r\n/**\r\n * Options used to create a ThinImageProcessingPostProcessOptions.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface ThinImageProcessingPostProcessOptions extends EffectWrapperCreationOptions {\r\n /**\r\n * An existing image processing configuration to use. If not provided, the scene one will be used.\r\n */\r\n imageProcessingConfiguration?: ImageProcessingConfiguration;\r\n\r\n /**\r\n * The scene to retrieve the image processing configuration from if not provided in the options.\r\n * If not provided, the last created scene will be used.\r\n */\r\n scene?: Nullable<Scene>;\r\n}\r\n\r\n/**\r\n * Post process used to apply image processing to a scene\r\n */\r\nexport class ThinImageProcessingPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"imageProcessing\";\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/imageProcessing.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/imageProcessing.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Default configuration related to image processing available in the PBR Material.\r\n */\r\n protected _imageProcessingConfiguration: ImageProcessingConfiguration;\r\n\r\n /**\r\n * Gets the image processing configuration used either in this material.\r\n */\r\n public get imageProcessingConfiguration(): ImageProcessingConfiguration {\r\n return this._imageProcessingConfiguration;\r\n }\r\n\r\n /**\r\n * Sets the Default image processing configuration used either in the this material.\r\n *\r\n * If sets to null, the scene one is in use.\r\n */\r\n public set imageProcessingConfiguration(value: ImageProcessingConfiguration) {\r\n // We are almost sure it is applied by post process as\r\n // We are in the post process :-)\r\n value.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(value);\r\n }\r\n\r\n /**\r\n * Keep track of the image processing observer to allow dispose and replace.\r\n */\r\n private _imageProcessingObserver: Nullable<Observer<ImageProcessingConfiguration>>;\r\n\r\n /**\r\n * Attaches a new image processing configuration to the PBR Material.\r\n * @param configuration\r\n * @param doNotBuild\r\n */\r\n protected _attachImageProcessingConfiguration(configuration: Nullable<ImageProcessingConfiguration>, doNotBuild = false): void {\r\n if (configuration === this._imageProcessingConfiguration) {\r\n return;\r\n }\r\n\r\n // Detaches observer.\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n // Pick the scene configuration if needed.\r\n if (!configuration) {\r\n let scene = this.options.scene;\r\n\r\n if (!scene) {\r\n const engine = this.options.engine;\r\n if (engine && engine.scenes) {\r\n const scenes = engine.scenes;\r\n scene = scenes[scenes.length - 1];\r\n } else {\r\n scene = EngineStore.LastCreatedScene!;\r\n }\r\n }\r\n\r\n if (scene) {\r\n this._imageProcessingConfiguration = scene.imageProcessingConfiguration;\r\n } else {\r\n this._imageProcessingConfiguration = new ImageProcessingConfiguration();\r\n }\r\n } else {\r\n this._imageProcessingConfiguration = configuration;\r\n }\r\n\r\n // Attaches observer.\r\n if (this._imageProcessingConfiguration) {\r\n this._imageProcessingObserver = this._imageProcessingConfiguration.onUpdateParameters.add(() => {\r\n this._updateParameters();\r\n });\r\n }\r\n\r\n // Ensure the effect will be rebuilt.\r\n if (!doNotBuild) {\r\n this._updateParameters();\r\n }\r\n }\r\n\r\n /**\r\n * Gets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public get colorCurves(): Nullable<ColorCurves> {\r\n return this.imageProcessingConfiguration.colorCurves;\r\n }\r\n /**\r\n * Sets Color curves setup used in the effect if colorCurvesEnabled is set to true .\r\n */\r\n public set colorCurves(value: Nullable<ColorCurves>) {\r\n this.imageProcessingConfiguration.colorCurves = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color curves effect is enabled.\r\n */\r\n public get colorCurvesEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorCurvesEnabled;\r\n }\r\n /**\r\n * Sets whether the color curves effect is enabled.\r\n */\r\n public set colorCurvesEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorCurvesEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public get colorGradingTexture(): Nullable<BaseTexture> {\r\n return this.imageProcessingConfiguration.colorGradingTexture;\r\n }\r\n /**\r\n * Sets Color grading LUT texture used in the effect if colorGradingEnabled is set to true.\r\n */\r\n public set colorGradingTexture(value: Nullable<BaseTexture>) {\r\n this.imageProcessingConfiguration.colorGradingTexture = value;\r\n }\r\n\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public get colorGradingEnabled(): boolean {\r\n return this.imageProcessingConfiguration.colorGradingEnabled;\r\n }\r\n /**\r\n * Gets whether the color grading effect is enabled.\r\n */\r\n public set colorGradingEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.colorGradingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets exposure used in the effect.\r\n */\r\n public get exposure(): number {\r\n return this.imageProcessingConfiguration.exposure;\r\n }\r\n /**\r\n * Sets exposure used in the effect.\r\n */\r\n public set exposure(value: number) {\r\n this.imageProcessingConfiguration.exposure = value;\r\n }\r\n\r\n /**\r\n * Gets whether tonemapping is enabled or not.\r\n */\r\n public get toneMappingEnabled(): boolean {\r\n return this._imageProcessingConfiguration.toneMappingEnabled;\r\n }\r\n /**\r\n * Sets whether tonemapping is enabled or not\r\n */\r\n public set toneMappingEnabled(value: boolean) {\r\n this._imageProcessingConfiguration.toneMappingEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets the type of tone mapping effect.\r\n */\r\n public get toneMappingType(): number {\r\n return this._imageProcessingConfiguration.toneMappingType;\r\n }\r\n /**\r\n * Sets the type of tone mapping effect.\r\n */\r\n public set toneMappingType(value: number) {\r\n this._imageProcessingConfiguration.toneMappingType = value;\r\n }\r\n\r\n /**\r\n * Gets contrast used in the effect.\r\n */\r\n public get contrast(): number {\r\n return this.imageProcessingConfiguration.contrast;\r\n }\r\n /**\r\n * Sets contrast used in the effect.\r\n */\r\n public set contrast(value: number) {\r\n this.imageProcessingConfiguration.contrast = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette stretch size.\r\n */\r\n public get vignetteStretch(): number {\r\n return this.imageProcessingConfiguration.vignetteStretch;\r\n }\r\n /**\r\n * Sets Vignette stretch size.\r\n */\r\n public set vignetteStretch(value: number) {\r\n this.imageProcessingConfiguration.vignetteStretch = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public get vignetteCentreX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n /**\r\n * Sets Vignette center X Offset.\r\n * @deprecated use vignetteCenterX instead\r\n */\r\n public set vignetteCentreX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public get vignetteCentreY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n /**\r\n * Sets Vignette center Y Offset.\r\n * @deprecated use vignetteCenterY instead\r\n */\r\n public set vignetteCentreY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center Y Offset.\r\n */\r\n public get vignetteCenterY(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterY;\r\n }\r\n public set vignetteCenterY(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterY = value;\r\n }\r\n\r\n /**\r\n * Vignette center X Offset.\r\n */\r\n public get vignetteCenterX(): number {\r\n return this.imageProcessingConfiguration.vignetteCenterX;\r\n }\r\n public set vignetteCenterX(value: number) {\r\n this.imageProcessingConfiguration.vignetteCenterX = value;\r\n }\r\n\r\n /**\r\n * Gets Vignette weight or intensity of the vignette effect.\r\n */\r\n public get vignetteWeight(): number {\r\n return this.imageProcessingConfiguration.vignetteWeight;\r\n }\r\n /**\r\n * Sets Vignette weight or intensity of the vignette effect.\r\n */\r\n public set vignetteWeight(value: number) {\r\n this.imageProcessingConfiguration.vignetteWeight = value;\r\n }\r\n\r\n /**\r\n * Gets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public get vignetteColor(): Color4 {\r\n return this.imageProcessingConfiguration.vignetteColor;\r\n }\r\n /**\r\n * Sets Color of the vignette applied on the screen through the chosen blend mode (vignetteBlendMode)\r\n * if vignetteEnabled is set to true.\r\n */\r\n public set vignetteColor(value: Color4) {\r\n this.imageProcessingConfiguration.vignetteColor = value;\r\n }\r\n\r\n /**\r\n * Gets Camera field of view used by the Vignette effect.\r\n */\r\n public get vignetteCameraFov(): number {\r\n return this.imageProcessingConfiguration.vignetteCameraFov;\r\n }\r\n /**\r\n * Sets Camera field of view used by the Vignette effect.\r\n */\r\n public set vignetteCameraFov(value: number) {\r\n this.imageProcessingConfiguration.vignetteCameraFov = value;\r\n }\r\n\r\n /**\r\n * Gets the vignette blend mode allowing different kind of effect.\r\n */\r\n public get vignetteBlendMode(): number {\r\n return this.imageProcessingConfiguration.vignetteBlendMode;\r\n }\r\n /**\r\n * Sets the vignette blend mode allowing different kind of effect.\r\n */\r\n public set vignetteBlendMode(value: number) {\r\n this.imageProcessingConfiguration.vignetteBlendMode = value;\r\n }\r\n\r\n /**\r\n * Gets whether the vignette effect is enabled.\r\n */\r\n public get vignetteEnabled(): boolean {\r\n return this.imageProcessingConfiguration.vignetteEnabled;\r\n }\r\n /**\r\n * Sets whether the vignette effect is enabled.\r\n */\r\n public set vignetteEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.vignetteEnabled = value;\r\n }\r\n\r\n /**\r\n * Gets intensity of the dithering effect.\r\n */\r\n public get ditheringIntensity(): number {\r\n return this.imageProcessingConfiguration.ditheringIntensity;\r\n }\r\n /**\r\n * Sets intensity of the dithering effect.\r\n */\r\n public set ditheringIntensity(value: number) {\r\n this.imageProcessingConfiguration.ditheringIntensity = value;\r\n }\r\n\r\n /**\r\n * Gets whether the dithering effect is enabled.\r\n */\r\n public get ditheringEnabled(): boolean {\r\n return this.imageProcessingConfiguration.ditheringEnabled;\r\n }\r\n /**\r\n * Sets whether the dithering effect is enabled.\r\n */\r\n public set ditheringEnabled(value: boolean) {\r\n this.imageProcessingConfiguration.ditheringEnabled = value;\r\n }\r\n\r\n private _fromLinearSpace = true;\r\n /**\r\n * Gets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public get fromLinearSpace(): boolean {\r\n return this._fromLinearSpace;\r\n }\r\n /**\r\n * Sets whether the input of the processing is in Gamma or Linear Space.\r\n */\r\n public set fromLinearSpace(value: boolean) {\r\n if (this._fromLinearSpace === value) {\r\n return;\r\n }\r\n\r\n this._fromLinearSpace = value;\r\n this._updateParameters();\r\n }\r\n\r\n /**\r\n * * Gets the width of the output texture used to store the result of the post process.\r\n */\r\n public get outputTextureWidth() {\r\n return this.imageProcessingConfiguration.outputTextureWidth;\r\n }\r\n\r\n /**\r\n * * Sets the width of the output texture used to store the result of the post process.\r\n */\r\n public set outputTextureWidth(value: number) {\r\n this.imageProcessingConfiguration.outputTextureWidth = value;\r\n }\r\n\r\n /**\r\n * * Gets the height of the output texture used to store the result of the post process.\r\n */\r\n public get outputTextureHeight() {\r\n return this.imageProcessingConfiguration.outputTextureHeight;\r\n }\r\n\r\n /**\r\n * * Sets the height of the output texture used to store the result of the post process.\r\n */\r\n public set outputTextureHeight(value: number) {\r\n this.imageProcessingConfiguration.outputTextureHeight = value;\r\n }\r\n\r\n /**\r\n * Gets/sets the aspect ratio used to override the default one.\r\n */\r\n public overrideAspectRatio?: number;\r\n\r\n /**\r\n * Defines cache preventing GC.\r\n */\r\n private _defines: IImageProcessingConfigurationDefines & { FROMLINEARSPACE: boolean } = {\r\n IMAGEPROCESSING: false,\r\n VIGNETTE: false,\r\n VIGNETTEBLENDMODEMULTIPLY: false,\r\n VIGNETTEBLENDMODEOPAQUE: false,\r\n TONEMAPPING: 0,\r\n CONTRAST: false,\r\n COLORCURVES: false,\r\n COLORGRADING: false,\r\n COLORGRADING3D: false,\r\n FROMLINEARSPACE: false,\r\n SAMPLER3DGREENDEPTH: false,\r\n SAMPLER3DBGRMAP: false,\r\n DITHER: false,\r\n IMAGEPROCESSINGPOSTPROCESS: false,\r\n EXPOSURE: false,\r\n SKIPFINALCOLORCLAMP: false,\r\n };\r\n\r\n public override readonly options: Required<NonNullableFields<ThinImageProcessingPostProcessOptions>>;\r\n\r\n /**\r\n * Constructs a new image processing 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?: ThinImageProcessingPostProcessOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinImageProcessingPostProcess.FragmentUrl,\r\n });\r\n\r\n const imageProcessingConfiguration = options?.imageProcessingConfiguration;\r\n\r\n // Setup the configuration as forced by the constructor. This would then not force the\r\n // scene materials output in linear space and let untouched the default forward pass.\r\n if (imageProcessingConfiguration) {\r\n imageProcessingConfiguration.applyByPostProcess = true;\r\n this._attachImageProcessingConfiguration(imageProcessingConfiguration, true);\r\n // This will cause the shader to be compiled\r\n this._updateParameters();\r\n }\r\n // Setup the default processing configuration to the scene.\r\n else {\r\n this._attachImageProcessingConfiguration(null, true);\r\n this.imageProcessingConfiguration.applyByPostProcess = true;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public _updateParameters(): void {\r\n this._defines.FROMLINEARSPACE = this._fromLinearSpace;\r\n this.imageProcessingConfiguration.prepareDefines(this._defines, true);\r\n let defines = \"\";\r\n for (const prop in this._defines) {\r\n const value = (<any>this._defines)[prop];\r\n const type = typeof value;\r\n\r\n switch (type) {\r\n case \"number\":\r\n case \"string\":\r\n defines += `#define ${prop} ${value};\\n`;\r\n break;\r\n default:\r\n if (value) {\r\n defines += `#define ${prop};\\n`;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const samplers = [\"textureSampler\"];\r\n const uniforms = [\"scale\"];\r\n\r\n if (ImageProcessingConfiguration) {\r\n ImageProcessingConfiguration.PrepareSamplers(samplers, this._defines);\r\n ImageProcessingConfiguration.PrepareUniforms(uniforms, this._defines);\r\n }\r\n\r\n this.updateEffect(defines, uniforms, samplers);\r\n }\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n this.imageProcessingConfiguration.bind(this.effect, this.overrideAspectRatio);\r\n }\r\n\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n if (this._imageProcessingConfiguration && this._imageProcessingObserver) {\r\n this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver);\r\n }\r\n\r\n if (this._imageProcessingConfiguration) {\r\n this.imageProcessingConfiguration.applyByPostProcess = false;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
/**
|
|
4
4
|
* PassPostProcess which produces an output the same as it's input
|
|
5
5
|
*/
|
|
@@ -23,14 +23,14 @@ export class ThinPassPostProcess extends EffectWrapper {
|
|
|
23
23
|
constructor(name, engine = null, options) {
|
|
24
24
|
const localOptions = {
|
|
25
25
|
name,
|
|
26
|
-
engine: engine ||
|
|
26
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
27
27
|
useShaderStore: true,
|
|
28
28
|
useAsPostProcess: true,
|
|
29
29
|
fragmentShader: ThinPassPostProcess.FragmentUrl,
|
|
30
30
|
...options,
|
|
31
31
|
};
|
|
32
32
|
if (!localOptions.engine) {
|
|
33
|
-
localOptions.engine =
|
|
33
|
+
localOptions.engine = EngineStore.LastCreatedEngine;
|
|
34
34
|
}
|
|
35
35
|
super(localOptions);
|
|
36
36
|
}
|
|
@@ -63,7 +63,7 @@ export class ThinPassCubePostProcess extends EffectWrapper {
|
|
|
63
63
|
super({
|
|
64
64
|
...options,
|
|
65
65
|
name,
|
|
66
|
-
engine: engine ||
|
|
66
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
67
67
|
useShaderStore: true,
|
|
68
68
|
useAsPostProcess: true,
|
|
69
69
|
fragmentShader: ThinPassCubePostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinPassPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinPassPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,uCAAsC;AAC9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"thinPassPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinPassPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable, EffectWrapperCreationOptions, AbstractEngine } from \"core/index\";\r\nimport { EffectWrapper } from \"core/Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * PassPostProcess which produces an output the same as it's input\r\n */\r\nexport class ThinPassPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"pass\";\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/pass.fragment\")]));\r\n } else {\r\n list.push(Promise.all([import(\"../Shaders/pass.fragment\")]));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n\r\n /**\r\n * Constructs a new pass 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 const localOptions: EffectWrapperCreationOptions = {\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinPassPostProcess.FragmentUrl,\r\n ...options,\r\n };\r\n\r\n if (!localOptions.engine) {\r\n localOptions.engine = EngineStore.LastCreatedEngine!;\r\n }\r\n\r\n super(localOptions);\r\n }\r\n}\r\n\r\n/**\r\n * PassCubePostProcess which produces an output the same as it's input (which must be a cube texture)\r\n */\r\nexport class ThinPassCubePostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"passCube\";\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/passCube.fragment\")]));\r\n } else {\r\n list.push(Promise.all([import(\"../Shaders/passCube.fragment\")]));\r\n }\r\n\r\n super._gatherImports(useWebGPU, list);\r\n }\r\n\r\n /**\r\n * Creates the PassCubePostProcess\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 || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinPassCubePostProcess.FragmentUrl,\r\n defines: \"#define POSITIVEX\",\r\n });\r\n }\r\n\r\n private _face = 0;\r\n\r\n /**\r\n * Gets or sets the cube face to display.\r\n * * 0 is +X\r\n * * 1 is -X\r\n * * 2 is +Y\r\n * * 3 is -Y\r\n * * 4 is +Z\r\n * * 5 is -Z\r\n */\r\n public get face(): number {\r\n return this._face;\r\n }\r\n\r\n public set face(value: number) {\r\n if (value < 0 || value > 5) {\r\n return;\r\n }\r\n\r\n this._face = value;\r\n switch (this._face) {\r\n case 0:\r\n this.updateEffect(\"#define POSITIVEX\");\r\n break;\r\n case 1:\r\n this.updateEffect(\"#define NEGATIVEX\");\r\n break;\r\n case 2:\r\n this.updateEffect(\"#define POSITIVEY\");\r\n break;\r\n case 3:\r\n this.updateEffect(\"#define NEGATIVEY\");\r\n break;\r\n case 4:\r\n this.updateEffect(\"#define POSITIVEZ\");\r\n break;\r\n case 5:\r\n this.updateEffect(\"#define NEGATIVEZ\");\r\n break;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
5
5
|
*/
|
|
@@ -17,7 +17,7 @@ export class ThinSSAO2BlurPostProcess extends EffectWrapper {
|
|
|
17
17
|
super({
|
|
18
18
|
...options,
|
|
19
19
|
name,
|
|
20
|
-
engine: engine ||
|
|
20
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
21
21
|
useShaderStore: true,
|
|
22
22
|
useAsPostProcess: true,
|
|
23
23
|
fragmentShader: ThinSSAO2BlurPostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinSSAO2BlurPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSAO2BlurPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"thinSSAO2BlurPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSAO2BlurPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,aAAa;IAOpC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAED,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,YAAqB,EAAE,OAAsC;QAC5H,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,wBAAwB,CAAC,WAAW;YACpD,QAAQ,EAAE,wBAAwB,CAAC,QAAQ;YAC3C,QAAQ,EAAE,wBAAwB,CAAC,QAAQ;YAC3C,OAAO,EAAE,gBAAgB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE,CAAC,CAAC;QAWC,gBAAW,GAAY,KAAK,CAAC;QAE9B,gBAAW,GAAW,CAAC,CAAC;QAExB,qBAAgB,GAAW,EAAE,CAAC;QAE9B,oBAAe,GAAW,CAAC,CAAC;QAE5B,uBAAkB,GAAW,CAAC,CAAC;QAc9B,mBAAc,GAAY,IAAI,CAAC;QA/BnC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAaD,IAAW,UAAU,CAAC,CAAU;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE3C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAID,IAAW,aAAa,CAAC,CAAU;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAEe,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,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAEO,mBAAmB,CAAC,QAAiB;QACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC;IAEO,kBAAkB,CAAC,SAAkB,EAAE,QAAiB;QAC5D,IAAI,MAAM,GAAG,gBAAgB,CAAC;QAC9B,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,IAAI,uBAAuB,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,uBAAuB,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;IACrE,CAAC;;AAhGsB,oCAAW,GAAG,OAAO,AAAV,CAAW;AAEtB,iCAAQ,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,AAAhD,CAAiD;AAEzD,iCAAQ,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,AAArC,CAAsC","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinSSAO2BlurPostProcess extends EffectWrapper {\r\n public static readonly FragmentUrl = \"ssao2\";\r\n\r\n public static readonly Uniforms = [\"outSize\", \"samples\", \"soften\", \"tolerance\"];\r\n\r\n public static readonly Samplers = [\"textureSampler\", \"depthSampler\"];\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/ssao2.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/ssao2.fragment\"));\r\n }\r\n }\r\n\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, isHorizontal: boolean, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSSAO2BlurPostProcess.FragmentUrl,\r\n uniforms: ThinSSAO2BlurPostProcess.Uniforms,\r\n samplers: ThinSSAO2BlurPostProcess.Samplers,\r\n defines: \"#define BLUR\\n\" + (isHorizontal ? \"#define BLUR_H\\n\" : \"\"),\r\n });\r\n\r\n this._isHorizontal = isHorizontal;\r\n\r\n const defines = this._getDefinesForBlur(this.expensiveBlur, this.bypassBlur);\r\n const samplers = this._getSamplersForBlur(this.bypassBlur);\r\n\r\n this.updateEffect(defines, null, samplers);\r\n }\r\n\r\n private readonly _isHorizontal: boolean;\r\n private _bypassBlur: boolean = false;\r\n\r\n public textureSize: number = 0;\r\n\r\n public bilateralSamples: number = 16;\r\n\r\n public bilateralSoften: number = 0;\r\n\r\n public bilateralTolerance: number = 0;\r\n\r\n public set bypassBlur(b: boolean) {\r\n const defines = this._getDefinesForBlur(this.expensiveBlur, b);\r\n const samplers = this._getSamplersForBlur(b);\r\n\r\n this.updateEffect(defines, null, samplers);\r\n\r\n this._bypassBlur = b;\r\n }\r\n public get bypassBlur(): boolean {\r\n return this._bypassBlur;\r\n }\r\n\r\n private _expensiveBlur: boolean = true;\r\n\r\n public set expensiveBlur(b: boolean) {\r\n const defines = this._getDefinesForBlur(b, this._bypassBlur);\r\n\r\n this.updateEffect(defines);\r\n\r\n this._expensiveBlur = b;\r\n }\r\n public get expensiveBlur(): boolean {\r\n return this._expensiveBlur;\r\n }\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(\"outSize\", this.textureSize);\r\n effect.setInt(\"samples\", this.bilateralSamples);\r\n effect.setFloat(\"soften\", this.bilateralSoften);\r\n effect.setFloat(\"tolerance\", this.bilateralTolerance);\r\n }\r\n\r\n private _getSamplersForBlur(disabled: boolean): Array<string> {\r\n return disabled ? [\"textureSampler\"] : [\"textureSampler\", \"depthSampler\"];\r\n }\r\n\r\n private _getDefinesForBlur(bilateral: boolean, disabled: boolean): string {\r\n let define = \"#define BLUR\\n\";\r\n if (disabled) {\r\n define += \"#define BLUR_BYPASS\\n\";\r\n }\r\n if (!bilateral) {\r\n define += \"#define BLUR_LEGACY\\n\";\r\n }\r\n return this._isHorizontal ? define + \"#define BLUR_H\\n\" : define;\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
import { TmpVectors } from "../Maths/math.vector.js";
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
@@ -18,7 +18,7 @@ export class ThinSSAO2CombinePostProcess extends EffectWrapper {
|
|
|
18
18
|
super({
|
|
19
19
|
...options,
|
|
20
20
|
name,
|
|
21
|
-
engine: engine ||
|
|
21
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
22
22
|
useShaderStore: true,
|
|
23
23
|
useAsPostProcess: true,
|
|
24
24
|
fragmentShader: ThinSSAO2CombinePostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinSSAO2CombinePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSAO2CombinePostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"thinSSAO2CombinePostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSAO2CombinePostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,gCAA+B;AAEpD;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,aAAa;IAOvC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IAED,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAsC;QACrG,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,2BAA2B,CAAC,WAAW;YACvD,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;YAC9C,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;SACjD,CAAC,CAAC;QAGA,WAAM,GAAqB,IAAI,CAAC;QAEhC,8BAAyB,GAAG,IAAI,CAAC;IAJxC,CAAC;IAMe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC;QAEzC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtC,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACjI,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;IACL,CAAC;;AA7CsB,uCAAW,GAAG,aAAa,AAAhB,CAAiB;AAE5B,oCAAQ,GAAG,CAAC,UAAU,CAAC,AAAf,CAAgB;AAExB,oCAAQ,GAAG,CAAC,eAAe,CAAC,AAApB,CAAqB","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Camera } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { TmpVectors } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinSSAO2CombinePostProcess extends EffectWrapper {\r\n public static readonly FragmentUrl = \"ssaoCombine\";\r\n\r\n public static readonly Uniforms = [\"viewport\"];\r\n\r\n public static readonly Samplers = [\"originalColor\"];\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/ssaoCombine.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/ssaoCombine.fragment\"));\r\n }\r\n }\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 || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSSAO2CombinePostProcess.FragmentUrl,\r\n uniforms: ThinSSAO2CombinePostProcess.Uniforms,\r\n samplers: ThinSSAO2CombinePostProcess.Samplers,\r\n });\r\n }\r\n\r\n public camera: Nullable<Camera> = null;\r\n\r\n public useViewportInCombineStage = true;\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 if (this.camera) {\r\n const viewport = this.camera.viewport;\r\n if (this.useViewportInCombineStage) {\r\n effect.setVector4(\"viewport\", TmpVectors.Vector4[0].copyFromFloats(viewport.x, viewport.y, viewport.width, viewport.height));\r\n } else {\r\n effect.setVector4(\"viewport\", TmpVectors.Vector4[0].copyFromFloats(0, 0, 1, 1));\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
import { TmpVectors } from "../Maths/math.vector.js";
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
@@ -18,7 +18,7 @@ export class ThinSSRBlurCombinerPostProcess extends EffectWrapper {
|
|
|
18
18
|
super({
|
|
19
19
|
...options,
|
|
20
20
|
name,
|
|
21
|
-
engine: engine ||
|
|
21
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
22
22
|
useShaderStore: true,
|
|
23
23
|
useAsPostProcess: true,
|
|
24
24
|
fragmentShader: ThinSSRBlurCombinerPostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinSSRBlurCombinerPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSRBlurCombinerPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Camera } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { TmpVectors } from \"../Maths/math.vector\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinSSRBlurCombinerPostProcess extends EffectWrapper {\r\n public static readonly FragmentUrl = \"screenSpaceReflection2BlurCombiner\";\r\n\r\n public static readonly Uniforms = [\r\n \"strength\",\r\n \"reflectionSpecularFalloffExponent\",\r\n \"reflectivityThreshold\",\r\n \"projection\",\r\n \"invProjectionMatrix\",\r\n \"nearPlaneZ\",\r\n \"farPlaneZ\",\r\n \"view\",\r\n ];\r\n\r\n public static readonly Samplers = [\"textureSampler\", \"depthSampler\", \"normalSampler\", \"mainSampler\", \"reflectivitySampler\"];\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/screenSpaceReflection2BlurCombiner.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceReflection2BlurCombiner.fragment\"));\r\n }\r\n }\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: ThinSSRBlurCombinerPostProcess.FragmentUrl,\r\n uniforms: ThinSSRBlurCombinerPostProcess.Uniforms,\r\n samplers: ThinSSRBlurCombinerPostProcess.Samplers,\r\n });\r\n\r\n this._updateEffectDefines();\r\n }\r\n\r\n public strength = 1;\r\n\r\n public reflectionSpecularFalloffExponent = 1;\r\n\r\n public camera: Nullable<Camera> = null;\r\n\r\n private _useFresnel = false;\r\n\r\n public get useFresnel() {\r\n return this._useFresnel;\r\n }\r\n\r\n public set useFresnel(fresnel: boolean) {\r\n if (this._useFresnel === fresnel) {\r\n return;\r\n }\r\n\r\n this._useFresnel = fresnel;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _useScreenspaceDepth = false;\r\n\r\n public get useScreenspaceDepth() {\r\n return this._useScreenspaceDepth;\r\n }\r\n\r\n public set useScreenspaceDepth(value: boolean) {\r\n if (this._useScreenspaceDepth === value) {\r\n return;\r\n }\r\n\r\n this._useScreenspaceDepth = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _inputTextureColorIsInGammaSpace = true;\r\n\r\n public get inputTextureColorIsInGammaSpace(): boolean {\r\n return this._inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(gammaSpace: boolean) {\r\n if (this._inputTextureColorIsInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._inputTextureColorIsInGammaSpace = gammaSpace;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _generateOutputInGammaSpace = true;\r\n\r\n public get generateOutputInGammaSpace(): boolean {\r\n return this._generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(gammaSpace: boolean) {\r\n if (this._generateOutputInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._generateOutputInGammaSpace = gammaSpace;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _debug = false;\r\n\r\n public get debug(): boolean {\r\n return this._debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n if (this._debug === value) {\r\n return;\r\n }\r\n\r\n this._debug = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _reflectivityThreshold = 0.04;\r\n\r\n public get reflectivityThreshold() {\r\n return this._reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(threshold: number) {\r\n if (threshold === this._reflectivityThreshold) {\r\n return;\r\n }\r\n\r\n if ((threshold === 0 && this._reflectivityThreshold !== 0) || (threshold !== 0 && this._reflectivityThreshold === 0)) {\r\n this._reflectivityThreshold = threshold;\r\n this._updateEffectDefines();\r\n } else {\r\n this._reflectivityThreshold = threshold;\r\n }\r\n }\r\n\r\n private _normalsAreInWorldSpace = false;\r\n\r\n public get normalsAreInWorldSpace() {\r\n return this._normalsAreInWorldSpace;\r\n }\r\n\r\n public set normalsAreInWorldSpace(value: boolean) {\r\n if (this._normalsAreInWorldSpace === value) {\r\n return;\r\n }\r\n\r\n this._normalsAreInWorldSpace = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _normalsAreUnsigned = false;\r\n\r\n public get normalsAreUnsigned() {\r\n return this._normalsAreUnsigned;\r\n }\r\n\r\n public set normalsAreUnsigned(value: boolean) {\r\n if (this._normalsAreUnsigned === value) {\r\n return;\r\n }\r\n\r\n this._normalsAreUnsigned = value;\r\n this._updateEffectDefines();\r\n }\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(\"strength\", this.strength);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"reflectivityThreshold\", this.reflectivityThreshold);\r\n\r\n if (this.useFresnel && this.camera) {\r\n const projectionMatrix = this.camera.getProjectionMatrix();\r\n\r\n projectionMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"invProjectionMatrix\", TmpVectors.Matrix[0]);\r\n effect.setMatrix(\"view\", this.camera.getViewMatrix());\r\n\r\n if (this.useScreenspaceDepth) {\r\n effect.setFloat(\"nearPlaneZ\", this.camera.minZ);\r\n effect.setFloat(\"farPlaneZ\", this.camera.maxZ);\r\n }\r\n }\r\n }\r\n\r\n private _updateEffectDefines() {\r\n let defines = \"\";\r\n\r\n if (this._debug) {\r\n defines += \"#define SSRAYTRACE_DEBUG\\n\";\r\n }\r\n if (this._inputTextureColorIsInGammaSpace) {\r\n defines += \"#define SSR_INPUT_IS_GAMMA_SPACE\\n\";\r\n }\r\n if (this._generateOutputInGammaSpace) {\r\n defines += \"#define SSR_OUTPUT_IS_GAMMA_SPACE\\n\";\r\n }\r\n if (this._useFresnel) {\r\n defines += \"#define SSR_BLEND_WITH_FRESNEL\\n\";\r\n }\r\n if (this._useScreenspaceDepth) {\r\n defines += \"#define SSRAYTRACE_SCREENSPACE_DEPTH\\n\";\r\n }\r\n if (this._reflectivityThreshold === 0) {\r\n defines += \"#define SSR_DISABLE_REFLECTIVITY_TEST\\n\";\r\n }\r\n if (this._normalsAreInWorldSpace) {\r\n defines += \"#define SSR_NORMAL_IS_IN_WORLDSPACE\\n\";\r\n }\r\n if (this._normalsAreUnsigned) {\r\n defines += \"#define SSR_DECODE_NORMAL\\n\";\r\n }\r\n\r\n this.updateEffect(defines);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"thinSSRBlurCombinerPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSRBlurCombinerPostProcess.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions, Camera } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { TmpVectors } from \"../Maths/math.vector\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinSSRBlurCombinerPostProcess extends EffectWrapper {\r\n public static readonly FragmentUrl = \"screenSpaceReflection2BlurCombiner\";\r\n\r\n public static readonly Uniforms = [\r\n \"strength\",\r\n \"reflectionSpecularFalloffExponent\",\r\n \"reflectivityThreshold\",\r\n \"projection\",\r\n \"invProjectionMatrix\",\r\n \"nearPlaneZ\",\r\n \"farPlaneZ\",\r\n \"view\",\r\n ];\r\n\r\n public static readonly Samplers = [\"textureSampler\", \"depthSampler\", \"normalSampler\", \"mainSampler\", \"reflectivitySampler\"];\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/screenSpaceReflection2BlurCombiner.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceReflection2BlurCombiner.fragment\"));\r\n }\r\n }\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 || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSSRBlurCombinerPostProcess.FragmentUrl,\r\n uniforms: ThinSSRBlurCombinerPostProcess.Uniforms,\r\n samplers: ThinSSRBlurCombinerPostProcess.Samplers,\r\n });\r\n\r\n this._updateEffectDefines();\r\n }\r\n\r\n public strength = 1;\r\n\r\n public reflectionSpecularFalloffExponent = 1;\r\n\r\n public camera: Nullable<Camera> = null;\r\n\r\n private _useFresnel = false;\r\n\r\n public get useFresnel() {\r\n return this._useFresnel;\r\n }\r\n\r\n public set useFresnel(fresnel: boolean) {\r\n if (this._useFresnel === fresnel) {\r\n return;\r\n }\r\n\r\n this._useFresnel = fresnel;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _useScreenspaceDepth = false;\r\n\r\n public get useScreenspaceDepth() {\r\n return this._useScreenspaceDepth;\r\n }\r\n\r\n public set useScreenspaceDepth(value: boolean) {\r\n if (this._useScreenspaceDepth === value) {\r\n return;\r\n }\r\n\r\n this._useScreenspaceDepth = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _inputTextureColorIsInGammaSpace = true;\r\n\r\n public get inputTextureColorIsInGammaSpace(): boolean {\r\n return this._inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(gammaSpace: boolean) {\r\n if (this._inputTextureColorIsInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._inputTextureColorIsInGammaSpace = gammaSpace;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _generateOutputInGammaSpace = true;\r\n\r\n public get generateOutputInGammaSpace(): boolean {\r\n return this._generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(gammaSpace: boolean) {\r\n if (this._generateOutputInGammaSpace === gammaSpace) {\r\n return;\r\n }\r\n\r\n this._generateOutputInGammaSpace = gammaSpace;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _debug = false;\r\n\r\n public get debug(): boolean {\r\n return this._debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n if (this._debug === value) {\r\n return;\r\n }\r\n\r\n this._debug = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _reflectivityThreshold = 0.04;\r\n\r\n public get reflectivityThreshold() {\r\n return this._reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(threshold: number) {\r\n if (threshold === this._reflectivityThreshold) {\r\n return;\r\n }\r\n\r\n if ((threshold === 0 && this._reflectivityThreshold !== 0) || (threshold !== 0 && this._reflectivityThreshold === 0)) {\r\n this._reflectivityThreshold = threshold;\r\n this._updateEffectDefines();\r\n } else {\r\n this._reflectivityThreshold = threshold;\r\n }\r\n }\r\n\r\n private _normalsAreInWorldSpace = false;\r\n\r\n public get normalsAreInWorldSpace() {\r\n return this._normalsAreInWorldSpace;\r\n }\r\n\r\n public set normalsAreInWorldSpace(value: boolean) {\r\n if (this._normalsAreInWorldSpace === value) {\r\n return;\r\n }\r\n\r\n this._normalsAreInWorldSpace = value;\r\n this._updateEffectDefines();\r\n }\r\n\r\n private _normalsAreUnsigned = false;\r\n\r\n public get normalsAreUnsigned() {\r\n return this._normalsAreUnsigned;\r\n }\r\n\r\n public set normalsAreUnsigned(value: boolean) {\r\n if (this._normalsAreUnsigned === value) {\r\n return;\r\n }\r\n\r\n this._normalsAreUnsigned = value;\r\n this._updateEffectDefines();\r\n }\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(\"strength\", this.strength);\r\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\r\n effect.setFloat(\"reflectivityThreshold\", this.reflectivityThreshold);\r\n\r\n if (this.useFresnel && this.camera) {\r\n const projectionMatrix = this.camera.getProjectionMatrix();\r\n\r\n projectionMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n\r\n effect.setMatrix(\"projection\", projectionMatrix);\r\n effect.setMatrix(\"invProjectionMatrix\", TmpVectors.Matrix[0]);\r\n effect.setMatrix(\"view\", this.camera.getViewMatrix());\r\n\r\n if (this.useScreenspaceDepth) {\r\n effect.setFloat(\"nearPlaneZ\", this.camera.minZ);\r\n effect.setFloat(\"farPlaneZ\", this.camera.maxZ);\r\n }\r\n }\r\n }\r\n\r\n private _updateEffectDefines() {\r\n let defines = \"\";\r\n\r\n if (this._debug) {\r\n defines += \"#define SSRAYTRACE_DEBUG\\n\";\r\n }\r\n if (this._inputTextureColorIsInGammaSpace) {\r\n defines += \"#define SSR_INPUT_IS_GAMMA_SPACE\\n\";\r\n }\r\n if (this._generateOutputInGammaSpace) {\r\n defines += \"#define SSR_OUTPUT_IS_GAMMA_SPACE\\n\";\r\n }\r\n if (this._useFresnel) {\r\n defines += \"#define SSR_BLEND_WITH_FRESNEL\\n\";\r\n }\r\n if (this._useScreenspaceDepth) {\r\n defines += \"#define SSRAYTRACE_SCREENSPACE_DEPTH\\n\";\r\n }\r\n if (this._reflectivityThreshold === 0) {\r\n defines += \"#define SSR_DISABLE_REFLECTIVITY_TEST\\n\";\r\n }\r\n if (this._normalsAreInWorldSpace) {\r\n defines += \"#define SSR_NORMAL_IS_IN_WORLDSPACE\\n\";\r\n }\r\n if (this._normalsAreUnsigned) {\r\n defines += \"#define SSR_DECODE_NORMAL\\n\";\r\n }\r\n\r\n this.updateEffect(defines);\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
import { Vector2 } from "../Maths/math.vector.js";
|
|
4
4
|
/**
|
|
5
5
|
* @internal
|
|
@@ -18,7 +18,7 @@ export class ThinSSRBlurPostProcess extends EffectWrapper {
|
|
|
18
18
|
super({
|
|
19
19
|
...options,
|
|
20
20
|
name,
|
|
21
|
-
engine: engine ||
|
|
21
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
22
22
|
useShaderStore: true,
|
|
23
23
|
useAsPostProcess: true,
|
|
24
24
|
fragmentShader: ThinSSRBlurPostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinSSRBlurPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSRBlurPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"thinSSRBlurPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSSRBlurPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAOlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAED,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,SAAmB,EAAE,YAAqB,EAAE,OAAsC;QACjJ,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;SAC5C,CAAC,CAAC;QAWA,iBAAY,GAAW,CAAC,CAAC;QAEzB,kBAAa,GAAW,CAAC,CAAC;QAE1B,cAAS,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9B,iBAAY,GAAG,IAAI,CAAC;QAfvB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;IACL,CAAC;IAUe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,SAAS,CAC/B,kBAAkB,EAClB,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAC9D,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAClE,CAAC;IACN,CAAC;;AApDsB,kCAAW,GAAG,4BAA4B,AAA/B,CAAgC;AAE3C,+BAAQ,GAAG,CAAC,kBAAkB,CAAC,AAAvB,CAAwB;AAEhC,+BAAQ,GAAG,CAAC,gBAAgB,CAAC,AAArB,CAAsB","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { Vector2 } from \"../Maths/math.vector\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class ThinSSRBlurPostProcess extends EffectWrapper {\r\n public static readonly FragmentUrl = \"screenSpaceReflection2Blur\";\r\n\r\n public static readonly Uniforms = [\"texelOffsetScale\"];\r\n\r\n public static readonly Samplers = [\"textureSampler\"];\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/screenSpaceReflection2Blur.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/screenSpaceReflection2Blur.fragment\"));\r\n }\r\n }\r\n\r\n constructor(name: string, engine: Nullable<AbstractEngine> = null, direction?: Vector2, blurStrength?: number, options?: EffectWrapperCreationOptions) {\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSSRBlurPostProcess.FragmentUrl,\r\n uniforms: ThinSSRBlurPostProcess.Uniforms,\r\n samplers: ThinSSRBlurPostProcess.Samplers,\r\n });\r\n\r\n if (direction !== undefined) {\r\n this.direction = direction;\r\n }\r\n\r\n if (blurStrength !== undefined) {\r\n this.blurStrength = blurStrength;\r\n }\r\n }\r\n\r\n public textureWidth: number = 0;\r\n\r\n public textureHeight: number = 0;\r\n\r\n public direction = new Vector2(1, 0);\r\n\r\n public blurStrength = 0.03;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n\r\n this._drawWrapper.effect!.setFloat2(\r\n \"texelOffsetScale\",\r\n (1 / this.textureWidth) * this.direction.x * this.blurStrength,\r\n (1 / this.textureHeight) * this.direction.y * this.blurStrength\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
/**
|
|
4
4
|
* Post process used to apply a screen space curvature post process
|
|
5
5
|
*/
|
|
@@ -23,7 +23,7 @@ export class ThinScreenSpaceCurvaturePostProcess extends EffectWrapper {
|
|
|
23
23
|
super({
|
|
24
24
|
...options,
|
|
25
25
|
name,
|
|
26
|
-
engine: engine ||
|
|
26
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
27
27
|
useShaderStore: true,
|
|
28
28
|
useAsPostProcess: true,
|
|
29
29
|
fragmentShader: ThinScreenSpaceCurvaturePostProcess.FragmentUrl,
|
|
@@ -1 +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,
|
|
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,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;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,WAAW,CAAC,iBAAkB;YAChD,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 { EngineStore } from \"../Engines/engineStore\";\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 || EngineStore.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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
/**
|
|
4
4
|
* Post process used to apply a sharpen effect
|
|
5
5
|
*/
|
|
@@ -23,7 +23,7 @@ export class ThinSharpenPostProcess extends EffectWrapper {
|
|
|
23
23
|
super({
|
|
24
24
|
...options,
|
|
25
25
|
name,
|
|
26
|
-
engine: engine ||
|
|
26
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
27
27
|
useShaderStore: true,
|
|
28
28
|
useAsPostProcess: true,
|
|
29
29
|
fragmentShader: ThinSharpenPostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinSharpenPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSharpenPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"thinSharpenPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinSharpenPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,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,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;SAC5C,CAAC,CAAC;QAGP;;WAEG;QACI,gBAAW,GAAW,GAAG,CAAC;QACjC;;WAEG;QACI,eAAU,GAAW,GAAG,CAAC;QAEhC;;WAEG;QACI,iBAAY,GAAW,CAAC,CAAC;QAEhC;;WAEG;QACI,kBAAa,GAAW,CAAC,CAAC;IAnBjC,CAAC;IAqBe,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,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC;;AA/DD;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,AAArC,CAAsC","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/**\r\n * Post process used to apply a sharpen effect\r\n */\r\nexport class ThinSharpenPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"sharpen\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"sharpnessAmounts\", \"screenSize\"];\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/sharpen.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/sharpen.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new sharpen 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 || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinSharpenPostProcess.FragmentUrl,\r\n uniforms: ThinSharpenPostProcess.Uniforms,\r\n });\r\n }\r\n\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 public colorAmount: number = 1.0;\r\n /**\r\n * How much sharpness should be applied (default: 0.3)\r\n */\r\n public edgeAmount: number = 0.3;\r\n\r\n /**\r\n * The width of the source texture\r\n */\r\n public textureWidth: number = 0;\r\n\r\n /**\r\n * The height of the source texture\r\n */\r\n public textureHeight: number = 0;\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.setFloat2(\"screenSize\", this.textureWidth, this.textureHeight);\r\n effect.setFloat2(\"sharpnessAmounts\", this.edgeAmount, this.colorAmount);\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EffectWrapper } from "../Materials/effectRenderer.js";
|
|
2
|
-
import {
|
|
2
|
+
import { EngineStore } from "../Engines/engineStore.js";
|
|
3
3
|
/** Defines operator used for tonemapping */
|
|
4
4
|
export var TonemappingOperator;
|
|
5
5
|
(function (TonemappingOperator) {
|
|
@@ -49,7 +49,7 @@ export class ThinTonemapPostProcess extends EffectWrapper {
|
|
|
49
49
|
super({
|
|
50
50
|
...options,
|
|
51
51
|
name,
|
|
52
|
-
engine: engine ||
|
|
52
|
+
engine: engine || EngineStore.LastCreatedEngine,
|
|
53
53
|
useShaderStore: true,
|
|
54
54
|
useAsPostProcess: true,
|
|
55
55
|
fragmentShader: ThinTonemapPostProcess.FragmentUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinTonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTonemapPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"thinTonemapPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/thinTonemapPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,4CAA4C;AAC5C,MAAM,CAAN,IAAkB,mBASjB;AATD,WAAkB,mBAAmB;IACjC,YAAY;IACZ,+DAAS,CAAA;IACT,eAAe;IACf,qEAAY,CAAA;IACZ,iBAAiB;IACjB,yEAAc,CAAA;IACd,mBAAmB;IACnB,6EAAgB,CAAA;AACpB,CAAC,EATiB,mBAAmB,KAAnB,mBAAmB,QASpC;AAcD;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IAWlC,cAAc,CAAC,SAAkB,EAAE,IAAoB;QACtE,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACrD,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,YAAY,IAAY,EAAE,SAAmC,IAAI,EAAE,OAAuC;QACtG,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,wCAAgC,CAAC;QAEnE,IAAI,OAAO,GAAG,UAAU,CAAC;QAEzB,IAAI,QAAQ,sCAA8B,EAAE,CAAC;YACzC,OAAO,IAAI,mBAAmB,CAAC;QACnC,CAAC;aAAM,IAAI,QAAQ,yCAAiC,EAAE,CAAC;YACnD,OAAO,IAAI,sBAAsB,CAAC;QACtC,CAAC;aAAM,IAAI,QAAQ,2CAAmC,EAAE,CAAC;YACrD,OAAO,IAAI,kCAAkC,CAAC;QAClD,CAAC;aAAM,IAAI,QAAQ,6CAAqC,EAAE,CAAC;YACvD,OAAO,IAAI,0BAA0B,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC;YACF,GAAG,OAAO;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC,iBAAkB;YAChD,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,sBAAsB,CAAC,WAAW;YAClD,QAAQ,EAAE,sBAAsB,CAAC,QAAQ;YACzC,OAAO;SACV,CAAC,CAAC;QAMP;;WAEG;QACa,aAAQ,wCAAqD;QAE7E;;WAEG;QACI,uBAAkB,GAAG,CAAC,CAAC;QAZ1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,IAAI,CAAC,CAAC;IAC/D,CAAC;IAYe,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC1C,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAO,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvF,CAAC;;AApED;;GAEG;AACoB,kCAAW,GAAG,SAAS,AAAZ,CAAa;AAE/C;;GAEG;AACoB,+BAAQ,GAAG,CAAC,qBAAqB,CAAC,AAA1B,CAA2B","sourcesContent":["import type { Nullable, AbstractEngine, EffectWrapperCreationOptions } from \"core/index\";\r\nimport { EffectWrapper } from \"../Materials/effectRenderer\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\n/** Defines operator used for tonemapping */\r\nexport const enum TonemappingOperator {\r\n /** Hable */\r\n Hable = 0,\r\n /** Reinhard */\r\n Reinhard = 1,\r\n /** HejiDawson */\r\n HejiDawson = 2,\r\n /** Photographic */\r\n Photographic = 3,\r\n}\r\n\r\n/**\r\n * Options used to create a ThinTonemapPostProcess.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport interface ThinTonemapPostProcessOptions extends EffectWrapperCreationOptions {\r\n /** Defines the operator to use (default: Reinhard) */\r\n operator?: TonemappingOperator;\r\n\r\n /** Defines the required exposure adjustment (default: 1.0) */\r\n exposureAdjustment?: number;\r\n}\r\n\r\n/**\r\n * Post process used to apply a tone mapping operator\r\n */\r\nexport class ThinTonemapPostProcess extends EffectWrapper {\r\n /**\r\n * The fragment shader url\r\n */\r\n public static readonly FragmentUrl = \"tonemap\";\r\n\r\n /**\r\n * The list of uniforms used by the effect\r\n */\r\n public static readonly Uniforms = [\"_ExposureAdjustment\"];\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/tonemap.fragment\"));\r\n } else {\r\n list.push(import(\"../Shaders/tonemap.fragment\"));\r\n }\r\n }\r\n\r\n /**\r\n * Constructs a new tone mapping 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?: ThinTonemapPostProcessOptions) {\r\n const operator = options?.operator ?? TonemappingOperator.Reinhard;\r\n\r\n let defines = \"#define \";\r\n\r\n if (operator === TonemappingOperator.Hable) {\r\n defines += \"HABLE_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Reinhard) {\r\n defines += \"REINHARD_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.HejiDawson) {\r\n defines += \"OPTIMIZED_HEJIDAWSON_TONEMAPPING\";\r\n } else if (operator === TonemappingOperator.Photographic) {\r\n defines += \"PHOTOGRAPHIC_TONEMAPPING\";\r\n }\r\n\r\n super({\r\n ...options,\r\n name,\r\n engine: engine || EngineStore.LastCreatedEngine!,\r\n useShaderStore: true,\r\n useAsPostProcess: true,\r\n fragmentShader: ThinTonemapPostProcess.FragmentUrl,\r\n uniforms: ThinTonemapPostProcess.Uniforms,\r\n defines,\r\n });\r\n\r\n this.operator = operator;\r\n this.exposureAdjustment = options?.exposureAdjustment ?? 1;\r\n }\r\n\r\n /**\r\n * Gets the operator to use (default: Reinhard)\r\n */\r\n public readonly operator: TonemappingOperator = TonemappingOperator.Reinhard;\r\n\r\n /**\r\n * Defines the required exposure adjustment (default: 1.0)\r\n */\r\n public exposureAdjustment = 1;\r\n\r\n public override bind(noDefaultBindings = false) {\r\n super.bind(noDefaultBindings);\r\n this._drawWrapper.effect!.setFloat(\"_ExposureAdjustment\", this.exposureAdjustment);\r\n }\r\n}\r\n"]}
|
|
@@ -13,7 +13,6 @@ import { PostProcessRenderEffect } from "../../PostProcesses/RenderPipeline/post
|
|
|
13
13
|
import { GeometryBufferRenderer } from "../geometryBufferRenderer.js";
|
|
14
14
|
import { RawTexture } from "../../Materials/Textures/rawTexture.js";
|
|
15
15
|
import { RawTexture3D } from "../../Materials/Textures/rawTexture3D.js";
|
|
16
|
-
import { Engine } from "../../Engines/engine.js";
|
|
17
16
|
import { IBLShadowsPluginMaterial } from "./iblShadowsPluginMaterial.js";
|
|
18
17
|
import { PBRBaseMaterial } from "../../Materials/PBR/pbrBaseMaterial.js";
|
|
19
18
|
import { StandardMaterial } from "../../Materials/standardMaterial.js";
|
|
@@ -623,8 +622,8 @@ export class IblShadowsRenderPipeline extends PostProcessRenderPipeline {
|
|
|
623
622
|
this._cameras = cameras || [scene.activeCamera];
|
|
624
623
|
// Create the dummy textures to be used when the pipeline is not ready
|
|
625
624
|
const blackPixels = new Uint8Array([0, 0, 0, 255]);
|
|
626
|
-
this._dummyTexture2d = new RawTexture(blackPixels, 1, 1,
|
|
627
|
-
this._dummyTexture3d = new RawTexture3D(blackPixels, 1, 1, 1,
|
|
625
|
+
this._dummyTexture2d = new RawTexture(blackPixels, 1, 1, 5, scene, false);
|
|
626
|
+
this._dummyTexture3d = new RawTexture3D(blackPixels, 1, 1, 1, 5, scene, false);
|
|
628
627
|
// Setup the geometry buffer target formats
|
|
629
628
|
const textureTypesAndFormats = {};
|
|
630
629
|
textureTypesAndFormats[GeometryBufferRenderer.SCREENSPACE_DEPTH_TEXTURE_TYPE] = { textureFormat: 6, textureType: 1 };
|