@babylonjs/core 5.0.4 → 5.3.0
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/Audio/audioSceneComponent.d.ts +2 -0
- package/Audio/audioSceneComponent.js +9 -7
- package/Audio/audioSceneComponent.js.map +1 -1
- package/Behaviors/Meshes/pointerDragBehavior.js +1 -0
- package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
- package/Bones/skeleton.js +2 -0
- package/Bones/skeleton.js.map +1 -1
- package/Cameras/arcRotateCamera.d.ts +5 -0
- package/Cameras/arcRotateCamera.js +5 -0
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/camera.d.ts +5 -1
- package/Cameras/camera.js +7 -7
- package/Cameras/camera.js.map +1 -1
- package/Debug/debugLayer.d.ts +5 -0
- package/Debug/debugLayer.js +24 -0
- package/Debug/debugLayer.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.js +14 -3
- package/DeviceInput/Helpers/eventFactory.js.map +1 -1
- package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
- package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
- package/DeviceInput/InputDevices/nativeDeviceInputSystem.js +2 -8
- package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -1
- package/Engines/Processors/shaderCodeCursor.js +5 -0
- package/Engines/Processors/shaderCodeCursor.js.map +1 -1
- package/Engines/constants.d.ts +25 -1
- package/Engines/constants.js +25 -1
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +1 -1
- package/Engines/engine.js +2 -1
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -1
- package/Engines/nativeEngine.js +7 -8
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +4 -0
- package/Engines/webgpuEngine.js +2 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Gizmos/axisScaleGizmo.js +3 -2
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.js +11 -11
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Gizmos/gizmo.d.ts +5 -0
- package/Gizmos/gizmo.js +11 -4
- package/Gizmos/gizmo.js.map +1 -1
- package/Gizmos/planeRotationGizmo.js +3 -3
- package/Gizmos/planeRotationGizmo.js.map +1 -1
- package/Inputs/scene.inputManager.js +7 -1
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +9 -0
- package/Lights/Shadows/shadowGenerator.js +25 -3
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +10 -8
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +4 -0
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js +19 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +54 -0
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js +135 -0
- package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +4 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +42 -24
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/PBR/index.d.ts +1 -0
- package/Materials/PBR/index.js +1 -0
- package/Materials/PBR/index.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +5 -0
- package/Materials/PBR/pbrBaseMaterial.js +2 -0
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +102 -0
- package/Materials/PBR/pbrIridescenceConfiguration.js +257 -0
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -0
- package/Materials/Textures/Loaders/ktxTextureLoader.js +31 -0
- package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
- package/Materials/Textures/videoTexture.js +12 -12
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/materialFlags.d.ts +6 -0
- package/Materials/materialFlags.js +18 -0
- package/Materials/materialFlags.js.map +1 -1
- package/Materials/materialPluginFactoryExport.d.ts +6 -0
- package/Materials/materialPluginFactoryExport.js +12 -0
- package/Materials/materialPluginFactoryExport.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +2 -1
- package/Materials/uniformBuffer.js +2 -1
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +1 -1
- package/Meshes/abstractMesh.js +5 -2
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +2 -2
- package/Meshes/mesh.js +11 -3
- package/Meshes/mesh.js.map +1 -1
- package/Misc/khronosTextureContainer.js +1 -1
- package/Misc/khronosTextureContainer.js.map +1 -1
- package/Misc/screenshotTools.js +6 -6
- package/Misc/screenshotTools.js.map +1 -1
- package/Physics/physicsImpostor.js +1 -1
- package/Physics/physicsImpostor.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js +6 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/Rendering/boundingBoxRenderer.js +4 -4
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +1 -1
- package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockIridescence.d.ts +5 -0
- package/Shaders/ShadersInclude/pbrBlockIridescence.js +9 -0
- package/Shaders/ShadersInclude/pbrBlockIridescence.js.map +1 -0
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
- package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
- package/Shaders/pbr.fragment.d.ts +1 -0
- package/Shaders/pbr.fragment.js +2 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/pbr.vertex.js +1 -1
- package/Shaders/pbr.vertex.js.map +1 -1
- package/Shaders/spriteMap.fragment.js +1 -1
- package/Shaders/spriteMap.fragment.js.map +1 -1
- package/XR/features/WebXRImageTracking.d.ts +0 -5
- package/XR/features/WebXRImageTracking.js +5 -8
- package/XR/features/WebXRImageTracking.js.map +1 -1
- package/XR/native/nativeXRFrame.d.ts +2 -1
- package/XR/native/nativeXRFrame.js +5 -1
- package/XR/native/nativeXRFrame.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +4 -0
- package/scene.js +4 -0
- package/scene.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearCoatBlock.js","sourceRoot":"","sources":["../../../../../../../../lts/core/generated/Materials/Node/Blocks/PBR/clearCoatBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAG1G,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AAUxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE7F;;GAEG;AACH;IAAoC,kCAAiB;IAGjD;;;OAGG;IACH,wBAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,SAoBjD;QAED;;WAEG;QAEI,8BAAwB,GAAY,IAAI,CAAC;QAxB5C,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,qCAAqC,CAAC,KAAK,EAAE,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACvH,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACtH,KAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC9H,KAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC5H,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,qCAAqC,CAAC,OAAO,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACjH,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,qCAAqC,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACvH,KAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC3H,KAAI,CAAC,aAAa,CAAC,eAAe,EAAE,qCAAqC,CAAC,KAAK,EAAE,IAAI,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC1H,KAAI,CAAC,aAAa,CAAC,cAAc,EAAE,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAExF,KAAI,CAAC,cAAc,CACf,WAAW,EACX,qCAAqC,CAAC,MAAM,EAC5C,wBAAwB,CAAC,QAAQ,EACjC,IAAI,uCAAuC,CAAC,WAAW,EAAE,KAAI,EAAE,oCAAoC,CAAC,MAAM,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAChJ,CAAC;;IACN,CAAC;IAQD;;;OAGG;IACI,mCAAU,GAAjB,UAAkB,KAA6B;QAC3C,KAAK,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAC3C,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QAC/C,KAAK,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;QACnD,KAAK,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;QACzD,KAAK,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,qCAAY,GAAnB;QACI,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAKD,sBAAW,qCAAS;QAHpB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,qCAAS;QAHpB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,6CAAiB;QAH5B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,0CAAc;QAHzB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,8BAAE;QAHb;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,qCAAS;QAHpB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,0CAAc;QAHzB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,yCAAa;QAHxB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,wCAAY;QAHvB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,qCAAS;QAHpB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAEM,sCAAa,GAApB;QACI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC7B,IAAM,cAAc,GAAG,IAAI,UAAU,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,QAAQ,EAAE,qCAAqC,CAAC,KAAK,CAAC,CAAC;YAC7I,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;YACzB,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACnD;IACL,CAAC;IAEM,uCAAc,GAArB,UAAsB,IAAkB,EAAE,YAA0B,EAAE,OAA4B;QAC9F,iBAAM,cAAc,YAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAElD,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,QAAQ,CAAC,0CAA0C,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC1I,OAAO,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC1E,OAAO,CAAC,QAAQ,CACZ,sBAAsB,EACtB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAkB,CAAC,KAAK,KAAK,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,EACnJ,IAAI,CACP,CAAC;QACF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAEM,6BAAI,GAAX,UAAY,MAAc,EAAE,YAA0B,EAAE,IAAW;;QAC/D,iBAAM,IAAI,YAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;QAEvC,+BAA+B;QAC/B,IAAM,iBAAiB,GAAG,MAAA,MAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,0CAAE,KAAK,mCAAI,yBAAyB,CAAC,yBAAyB,CAAC;QAEjI,IAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC;QAChC,IAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC;QAChC,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,4FAA4F;QAC5H,IAAM,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC;QAElC,MAAM,CAAC,SAAS,CAAC,4BAA4B,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9D,kCAAkC;QAClC,IAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAwC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChI,IAAM,oBAAoB,GAAG,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,eAAe,CAAC,WAAW,EAAC,CAAC,CAAE,YAAY,CAAC,eAAe,CAAC,cAAe,CAAC,UAAiC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEhK,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE;YACrC,MAAM,CAAC,SAAS,CAAC,8BAA8B,EAAE,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC5I;aAAM;YACH,MAAM,CAAC,SAAS,CAAC,8BAA8B,EAAE,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,OAAO,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC5I;IACL,CAAC;IAEO,0CAAiB,GAAzB,UAA0B,KAA6B,EAAE,oBAA4B,EAAE,kBAA0B;QAC7G,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAM,QAAQ,GAAG,YAAK,IAAI,CAAC,IAAI,CAAE,CAAC;QAClC,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEvC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,iDAAiD,CAAC,CAAC;QAEvF,IAAM,oBAAoB,GAAG,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAE3I,IAAI,YAAY,CAAC,WAAW,EAAE;YAC1B,IAAI,IAAI,qCAA8B,kBAAkB,eAAY,CAAC;YACrE,IAAI,IAAI,sCAA+B,YAAY,CAAC,sBAAsB,eAAY,CAAC;YACvF,IAAI,IAAI,uDAAuD,CAAC;YAChE,IAAI,IAAI,4DAA4D,CAAC;SACxE;QAED,KAAK,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,QAAQ,EAAE;YAClE,cAAc,EAAE,CAAC,oBAAoB,CAAC;SACzC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;OAUG;IACW,sBAAO,GAArB,UACI,KAA6B,EAC7B,OAAiC,EACjC,eAA0C,EAC1C,eAAuB,EACvB,gBAAyB,EACzB,aAAsB,EACtB,kBAA0B;QAE1B,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAM,SAAS,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,IAAM,SAAS,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,IAAM,cAAc,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC;QACxH,IAAM,EAAE,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC;QAEpF,IAAM,SAAS,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC;QACzG,IAAM,aAAa,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/G,IAAM,cAAc,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAC,WAAW,EAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;QAClH,IAAM,WAAW,GAAG,UAAU,CAAC;QAE/B,IAAI,OAAO,EAAE;YACT,KAAK,CAAC,sBAAsB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;YACnE,KAAK,CAAC,sBAAsB,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;SACxE;QAED,IAAI,gBAAgB,IAAI,OAAO,EAAE;YAC7B,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC;YAC9E,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;SACpD;QAED,IAAI,IAAI,iHAG2B,SAAS,eAAK,SAAS,8DACnB,SAAS,eAAK,aAAa,gEAGxD,eAAe,kVAUf,cAAc,gIAGV,WAAW,mJAKV,cAAc,qCACnB,EAAE,4CACU,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,6bAahD,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,iCAAiC,gCAClD,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,qBAAqB,gCACtC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,eAAe,4EAEzB,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,aAAa,mCACjC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,gBAAgB,2DAEjC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,iHAGxB,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,aAAa,uCACjC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,gBAAgB,wCACjC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,gBAAgB,mEAEjC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,wCAC/B,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,cAAc,6IAIF,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,iBAAiB,saAYtE,CAAC;QAEZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,oCAAW,GAArB,UAAsB,KAA6B;QAC/C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QAErC,IAAI,KAAK,CAAC,MAAM,KAAK,wBAAwB,CAAC,QAAQ,EAAE;YACpD,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjD;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,4CAAmB,GAA7B;QACI,IAAI,UAAU,GAAG,iBAAM,mBAAmB,WAAE,CAAC;QAE7C,UAAU,IAAI,UAAG,IAAI,CAAC,iBAAiB,yCAA+B,IAAI,CAAC,wBAAwB,UAAO,CAAC;QAE3G,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,kCAAS,GAAhB;QACI,IAAM,mBAAmB,GAAG,iBAAM,SAAS,WAAE,CAAC;QAE9C,mBAAmB,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAE7E,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEM,qCAAY,GAAnB,UAAoB,mBAAwB,EAAE,KAAY,EAAE,OAAe;;QACvE,iBAAM,YAAY,YAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAExD,IAAI,CAAC,wBAAwB,GAAG,MAAA,mBAAmB,CAAC,wBAAwB,mCAAI,IAAI,CAAC;IACzF,CAAC;IAzTD;QADC,sBAAsB,CAAC,8BAA8B,EAAE,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC;oEACnD;IA0TpD,qBAAC;CAAA,AA5VD,CAAoC,iBAAiB,GA4VpD;SA5VY,cAAc;AA8V3B,aAAa,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { ReflectionBlock } from \"./reflectionBlock\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { PBRMetallicRoughnessBlock } from \"./pbrMetallicRoughnessBlock\";\r\nimport type { PerturbNormalBlock } from \"../Fragment/perturbNormalBlock\";\r\nimport { PBRClearCoatConfiguration } from \"../../../PBR/pbrClearCoatConfiguration\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\n\r\n/**\r\n * Block used to implement the clear coat module of the PBR material\r\n */\r\nexport class ClearCoatBlock extends NodeMaterialBlock {\r\n private _scene: Scene;\r\n\r\n /**\r\n * Create a new ClearCoatBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"intensity\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"roughness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"normalMapColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintAtDistance\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintThickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"worldTangent\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n\r\n this.registerOutput(\r\n \"clearcoat\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"clearcoat\", this, NodeMaterialConnectionPointDirection.Output, ClearCoatBlock, \"ClearCoatBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Defines if the F0 value should be remapped to account for the interface change in the material.\r\n */\r\n @editableInPropertyPage(\"Remap F0 on interface change\", PropertyTypeForEdition.Boolean, \"ADVANCED\")\r\n public remapF0OnInterfaceChange: boolean = true;\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"clearcoatOut\");\r\n state._excludeVariableName(\"vClearCoatParams\");\r\n state._excludeVariableName(\"vClearCoatTintParams\");\r\n state._excludeVariableName(\"vClearCoatRefractionParams\");\r\n state._excludeVariableName(\"vClearCoatTangentSpaceParams\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ClearCoatBlock\";\r\n }\r\n\r\n /**\r\n * Gets the intensity input component\r\n */\r\n public get intensity(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the roughness input component\r\n */\r\n public get roughness(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the ior input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the bump texture input component\r\n */\r\n public get normalMapColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the tint color input component\r\n */\r\n public get tintColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the tint \"at distance\" input component\r\n */\r\n public get tintAtDistance(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the tint thickness input component\r\n */\r\n public get tintThickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the world tangent input component\r\n */\r\n public get worldTangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\r\n }\r\n\r\n /**\r\n * Gets the clear coat object output component\r\n */\r\n public get clearcoat(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public autoConfigure() {\r\n if (!this.intensity.isConnected) {\r\n const intensityInput = new InputBlock(\"ClearCoat intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n super.prepareDefines(mesh, nodeMaterial, defines);\r\n\r\n defines.setValue(\"CLEARCOAT\", true);\r\n defines.setValue(\"CLEARCOAT_TEXTURE\", false, true);\r\n defines.setValue(\"CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE\", true, true);\r\n defines.setValue(\"CLEARCOAT_TINT\", this.tintColor.isConnected || this.tintThickness.isConnected || this.tintAtDistance.isConnected, true);\r\n defines.setValue(\"CLEARCOAT_BUMP\", this.normalMapColor.isConnected, true);\r\n defines.setValue(\r\n \"CLEARCOAT_DEFAULTIOR\",\r\n this.indexOfRefraction.isConnected ? this.indexOfRefraction.connectInputBlock!.value === PBRClearCoatConfiguration._DefaultIndexOfRefraction : true,\r\n true\r\n );\r\n defines.setValue(\"CLEARCOAT_REMAP_F0\", this.remapF0OnInterfaceChange, true);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n super.bind(effect, nodeMaterial, mesh);\r\n\r\n // Clear Coat Refraction params\r\n const indexOfRefraction = this.indexOfRefraction.connectInputBlock?.value ?? PBRClearCoatConfiguration._DefaultIndexOfRefraction;\r\n\r\n const a = 1 - indexOfRefraction;\r\n const b = 1 + indexOfRefraction;\r\n const f0 = Math.pow(-a / b, 2); // Schlicks approx: (ior1 - ior2) / (ior1 + ior2) where ior2 for air is close to vacuum = 1.\r\n const eta = 1 / indexOfRefraction;\r\n\r\n effect.setFloat4(\"vClearCoatRefractionParams\", f0, eta, a, b);\r\n\r\n // Clear Coat tangent space params\r\n const mainPBRBlock = this.clearcoat.hasEndpoints ? (this.clearcoat.endpoints[0].ownerBlock as PBRMetallicRoughnessBlock) : null;\r\n const perturbedNormalBlock = mainPBRBlock?.perturbedNormal.isConnected ? (mainPBRBlock.perturbedNormal.connectedPoint!.ownerBlock as PerturbNormalBlock) : null;\r\n\r\n if (this._scene._mirroredCameraPosition) {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? 1.0 : -1.0, perturbedNormalBlock?.invertY ? 1.0 : -1.0);\r\n } else {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? -1.0 : 1.0, perturbedNormalBlock?.invertY ? -1.0 : 1.0);\r\n }\r\n }\r\n\r\n private _generateTBNSpace(state: NodeMaterialBuildState, worldPositionVarName: string, worldNormalVarName: string) {\r\n let code = \"\";\r\n\r\n const comments = `//${this.name}`;\r\n const worldTangent = this.worldTangent;\r\n\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n\r\n const tangentReplaceString = { search: /defined\\(TANGENT\\)/g, replace: worldTangent.isConnected ? \"defined(TANGENT)\" : \"defined(IGNORE)\" };\r\n\r\n if (worldTangent.isConnected) {\r\n code += `vec3 tbnNormal = normalize(${worldNormalVarName}.xyz);\\r\\n`;\r\n code += `vec3 tbnTangent = normalize(${worldTangent.associatedVariableName}.xyz);\\r\\n`;\r\n code += `vec3 tbnBitangent = cross(tbnNormal, tbnTangent);\\r\\n`;\r\n code += `mat3 vTBN = mat3(tbnTangent, tbnBitangent, tbnNormal);\\r\\n`;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentMainFunctions\", comments, {\r\n replaceStrings: [tangentReplaceString],\r\n });\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param state current state of the node material building\r\n * @param ccBlock instance of a ClearCoatBlock or null if the code must be generated without an active clear coat module\r\n * @param reflectionBlock instance of a ReflectionBlock null if the code must be generated without an active reflection module\r\n * @param worldPosVarName name of the variable holding the world position\r\n * @param generateTBNSpace if true, the code needed to create the TBN coordinate space is generated\r\n * @param vTBNAvailable indicate that the vTBN variable is already existing because it has already been generated by another block (PerturbNormal or Anisotropy)\r\n * @param worldNormalVarName name of the variable holding the world normal\r\n * @returns the shader code\r\n */\r\n public static GetCode(\r\n state: NodeMaterialBuildState,\r\n ccBlock: Nullable<ClearCoatBlock>,\r\n reflectionBlock: Nullable<ReflectionBlock>,\r\n worldPosVarName: string,\r\n generateTBNSpace: boolean,\r\n vTBNAvailable: boolean,\r\n worldNormalVarName: string\r\n ): string {\r\n let code = \"\";\r\n\r\n const intensity = ccBlock?.intensity.isConnected ? ccBlock.intensity.associatedVariableName : \"1.\";\r\n const roughness = ccBlock?.roughness.isConnected ? ccBlock.roughness.associatedVariableName : \"0.\";\r\n const normalMapColor = ccBlock?.normalMapColor.isConnected ? ccBlock.normalMapColor.associatedVariableName : \"vec3(0.)\";\r\n const uv = ccBlock?.uv.isConnected ? ccBlock.uv.associatedVariableName : \"vec2(0.)\";\r\n\r\n const tintColor = ccBlock?.tintColor.isConnected ? ccBlock.tintColor.associatedVariableName : \"vec3(1.)\";\r\n const tintThickness = ccBlock?.tintThickness.isConnected ? ccBlock.tintThickness.associatedVariableName : \"1.\";\r\n const tintAtDistance = ccBlock?.tintAtDistance.isConnected ? ccBlock.tintAtDistance.associatedVariableName : \"1.\";\r\n const tintTexture = \"vec4(0.)\";\r\n\r\n if (ccBlock) {\r\n state._emitUniformFromString(\"vClearCoatRefractionParams\", \"vec4\");\r\n state._emitUniformFromString(\"vClearCoatTangentSpaceParams\", \"vec2\");\r\n }\r\n\r\n if (generateTBNSpace && ccBlock) {\r\n code += ccBlock._generateTBNSpace(state, worldPosVarName, worldNormalVarName);\r\n vTBNAvailable = ccBlock.worldTangent.isConnected;\r\n }\r\n\r\n code += `clearcoatOutParams clearcoatOut;\r\n\r\n #ifdef CLEARCOAT\r\n vec2 vClearCoatParams = vec2(${intensity}, ${roughness});\r\n vec4 vClearCoatTintParams = vec4(${tintColor}, ${tintThickness});\r\n\r\n clearcoatBlock(\r\n ${worldPosVarName}.xyz,\r\n geometricNormalW,\r\n viewDirectionW,\r\n vClearCoatParams,\r\n specularEnvironmentR0,\r\n #ifdef CLEARCOAT_TEXTURE\r\n vec2(0.),\r\n #endif\r\n #ifdef CLEARCOAT_TINT\r\n vClearCoatTintParams,\r\n ${tintAtDistance},\r\n vClearCoatRefractionParams,\r\n #ifdef CLEARCOAT_TINT_TEXTURE\r\n ${tintTexture},\r\n #endif\r\n #endif\r\n #ifdef CLEARCOAT_BUMP\r\n vec2(0., 1.),\r\n vec4(${normalMapColor}, 0.),\r\n ${uv},\r\n #if defined(${vTBNAvailable ? \"TANGENT\" : \"IGNORE\"}) && defined(NORMAL)\r\n vTBN,\r\n #else\r\n vClearCoatTangentSpaceParams,\r\n #endif\r\n #ifdef OBJECTSPACE_NORMALMAP\r\n normalMatrix,\r\n #endif\r\n #endif\r\n #if defined(FORCENORMALFORWARD) && defined(NORMAL)\r\n faceNormal,\r\n #endif\r\n #ifdef REFLECTION\r\n ${reflectionBlock?._vReflectionMicrosurfaceInfosName},\r\n ${reflectionBlock?._vReflectionInfosName},\r\n ${reflectionBlock?.reflectionColor},\r\n vLightingIntensity,\r\n #ifdef ${reflectionBlock?._define3DName}\r\n ${reflectionBlock?._cubeSamplerName},\r\n #else\r\n ${reflectionBlock?._2DSamplerName},\r\n #endif\r\n #ifndef LODBASEDMICROSFURACE\r\n #ifdef ${reflectionBlock?._define3DName}\r\n ${reflectionBlock?._cubeSamplerName},\r\n ${reflectionBlock?._cubeSamplerName},\r\n #else\r\n ${reflectionBlock?._2DSamplerName},\r\n ${reflectionBlock?._2DSamplerName},\r\n #endif\r\n #endif\r\n #endif\r\n #if defined(ENVIRONMENTBRDF) && !defined(${reflectionBlock?._defineSkyboxName})\r\n #ifdef RADIANCEOCCLUSION\r\n ambientMonochrome,\r\n #endif\r\n #endif\r\n #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\r\n (gl_FrontFacing ? 1. : -1.),\r\n #endif\r\n clearcoatOut\r\n );\r\n #else\r\n clearcoatOut.specularEnvironmentR0 = specularEnvironmentR0;\r\n #endif\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n this._scene = state.sharedData.scene;\r\n\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.remapF0OnInterfaceChange = ${this.remapF0OnInterfaceChange};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.remapF0OnInterfaceChange = this.remapF0OnInterfaceChange;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.remapF0OnInterfaceChange = serializationObject.remapF0OnInterfaceChange ?? true;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ClearCoatBlock\", ClearCoatBlock);\r\n"]}
|
|
1
|
+
{"version":3,"file":"clearCoatBlock.js","sourceRoot":"","sources":["../../../../../../../../lts/core/generated/Materials/Node/Blocks/PBR/clearCoatBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { ReflectionBlock } from \"./reflectionBlock\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { PBRMetallicRoughnessBlock } from \"./pbrMetallicRoughnessBlock\";\r\nimport type { PerturbNormalBlock } from \"../Fragment/perturbNormalBlock\";\r\nimport { PBRClearCoatConfiguration } from \"../../../PBR/pbrClearCoatConfiguration\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../nodeMaterialDecorator\";\r\n\r\n/**\r\n * Block used to implement the clear coat module of the PBR material\r\n */\r\nexport class ClearCoatBlock extends NodeMaterialBlock {\r\n private _scene: Scene;\r\n\r\n /**\r\n * Create a new ClearCoatBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"intensity\", NodeMaterialBlockConnectionPointTypes.Float, false, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"roughness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"normalMapColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintColor\", NodeMaterialBlockConnectionPointTypes.Color3, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintAtDistance\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"tintThickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"worldTangent\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.registerInput(\"worldNormal\", NodeMaterialBlockConnectionPointTypes.Vector4, true);\r\n this.worldNormal.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n\r\n this.registerOutput(\r\n \"clearcoat\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"clearcoat\", this, NodeMaterialConnectionPointDirection.Output, ClearCoatBlock, \"ClearCoatBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Defines if the F0 value should be remapped to account for the interface change in the material.\r\n */\r\n @editableInPropertyPage(\"Remap F0 on interface change\", PropertyTypeForEdition.Boolean, \"ADVANCED\")\r\n public remapF0OnInterfaceChange: boolean = true;\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"clearcoatOut\");\r\n state._excludeVariableName(\"vClearCoatParams\");\r\n state._excludeVariableName(\"vClearCoatTintParams\");\r\n state._excludeVariableName(\"vClearCoatRefractionParams\");\r\n state._excludeVariableName(\"vClearCoatTangentSpaceParams\");\r\n state._excludeVariableName(\"vGeometricNormaClearCoatW\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"ClearCoatBlock\";\r\n }\r\n\r\n /**\r\n * Gets the intensity input component\r\n */\r\n public get intensity(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the roughness input component\r\n */\r\n public get roughness(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the ior input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the bump texture input component\r\n */\r\n public get normalMapColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the uv input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the tint color input component\r\n */\r\n public get tintColor(): NodeMaterialConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the tint \"at distance\" input component\r\n */\r\n public get tintAtDistance(): NodeMaterialConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n /**\r\n * Gets the tint thickness input component\r\n */\r\n public get tintThickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[7];\r\n }\r\n\r\n /**\r\n * Gets the world tangent input component\r\n */\r\n public get worldTangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[8];\r\n }\r\n\r\n /**\r\n * Gets the world normal input component\r\n */\r\n public get worldNormal(): NodeMaterialConnectionPoint {\r\n return this._inputs[9];\r\n }\r\n\r\n /**\r\n * Gets the clear coat object output component\r\n */\r\n public get clearcoat(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public autoConfigure() {\r\n if (!this.intensity.isConnected) {\r\n const intensityInput = new InputBlock(\"ClearCoat intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n super.prepareDefines(mesh, nodeMaterial, defines);\r\n\r\n defines.setValue(\"CLEARCOAT\", true);\r\n defines.setValue(\"CLEARCOAT_TEXTURE\", false, true);\r\n defines.setValue(\"CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE\", true, true);\r\n defines.setValue(\"CLEARCOAT_TINT\", this.tintColor.isConnected || this.tintThickness.isConnected || this.tintAtDistance.isConnected, true);\r\n defines.setValue(\"CLEARCOAT_BUMP\", this.normalMapColor.isConnected, true);\r\n defines.setValue(\r\n \"CLEARCOAT_DEFAULTIOR\",\r\n this.indexOfRefraction.isConnected ? this.indexOfRefraction.connectInputBlock!.value === PBRClearCoatConfiguration._DefaultIndexOfRefraction : true,\r\n true\r\n );\r\n defines.setValue(\"CLEARCOAT_REMAP_F0\", this.remapF0OnInterfaceChange, true);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n super.bind(effect, nodeMaterial, mesh);\r\n\r\n // Clear Coat Refraction params\r\n const indexOfRefraction = this.indexOfRefraction.connectInputBlock?.value ?? PBRClearCoatConfiguration._DefaultIndexOfRefraction;\r\n\r\n const a = 1 - indexOfRefraction;\r\n const b = 1 + indexOfRefraction;\r\n const f0 = Math.pow(-a / b, 2); // Schlicks approx: (ior1 - ior2) / (ior1 + ior2) where ior2 for air is close to vacuum = 1.\r\n const eta = 1 / indexOfRefraction;\r\n\r\n effect.setFloat4(\"vClearCoatRefractionParams\", f0, eta, a, b);\r\n\r\n // Clear Coat tangent space params\r\n const mainPBRBlock = this.clearcoat.hasEndpoints ? (this.clearcoat.endpoints[0].ownerBlock as PBRMetallicRoughnessBlock) : null;\r\n const perturbedNormalBlock = mainPBRBlock?.perturbedNormal.isConnected ? (mainPBRBlock.perturbedNormal.connectedPoint!.ownerBlock as PerturbNormalBlock) : null;\r\n\r\n if (this._scene._mirroredCameraPosition) {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? 1.0 : -1.0, perturbedNormalBlock?.invertY ? 1.0 : -1.0);\r\n } else {\r\n effect.setFloat2(\"vClearCoatTangentSpaceParams\", perturbedNormalBlock?.invertX ? -1.0 : 1.0, perturbedNormalBlock?.invertY ? -1.0 : 1.0);\r\n }\r\n }\r\n\r\n private _generateTBNSpace(state: NodeMaterialBuildState, worldPositionVarName: string, worldNormalVarName: string) {\r\n let code = \"\";\r\n\r\n const comments = `//${this.name}`;\r\n const worldTangent = this.worldTangent;\r\n\r\n state._emitExtension(\"derivatives\", \"#extension GL_OES_standard_derivatives : enable\");\r\n\r\n const tangentReplaceString = { search: /defined\\(TANGENT\\)/g, replace: worldTangent.isConnected ? \"defined(TANGENT)\" : \"defined(IGNORE)\" };\r\n\r\n if (worldTangent.isConnected) {\r\n code += `vec3 tbnNormal = normalize(${worldNormalVarName}.xyz);\\r\\n`;\r\n code += `vec3 tbnTangent = normalize(${worldTangent.associatedVariableName}.xyz);\\r\\n`;\r\n code += `vec3 tbnBitangent = cross(tbnNormal, tbnTangent);\\r\\n`;\r\n code += `mat3 vTBN = mat3(tbnTangent, tbnBitangent, tbnNormal);\\r\\n`;\r\n }\r\n\r\n state._emitFunctionFromInclude(\"bumpFragmentMainFunctions\", comments, {\r\n replaceStrings: [tangentReplaceString],\r\n });\r\n\r\n return code;\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param state current state of the node material building\r\n * @param ccBlock instance of a ClearCoatBlock or null if the code must be generated without an active clear coat module\r\n * @param reflectionBlock instance of a ReflectionBlock null if the code must be generated without an active reflection module\r\n * @param worldPosVarName name of the variable holding the world position\r\n * @param generateTBNSpace if true, the code needed to create the TBN coordinate space is generated\r\n * @param vTBNAvailable indicate that the vTBN variable is already existing because it has already been generated by another block (PerturbNormal or Anisotropy)\r\n * @param worldNormalVarName name of the variable holding the world normal\r\n * @returns the shader code\r\n */\r\n public static GetCode(\r\n state: NodeMaterialBuildState,\r\n ccBlock: Nullable<ClearCoatBlock>,\r\n reflectionBlock: Nullable<ReflectionBlock>,\r\n worldPosVarName: string,\r\n generateTBNSpace: boolean,\r\n vTBNAvailable: boolean,\r\n worldNormalVarName: string\r\n ): string {\r\n let code = \"\";\r\n\r\n const intensity = ccBlock?.intensity.isConnected ? ccBlock.intensity.associatedVariableName : \"1.\";\r\n const roughness = ccBlock?.roughness.isConnected ? ccBlock.roughness.associatedVariableName : \"0.\";\r\n const normalMapColor = ccBlock?.normalMapColor.isConnected ? ccBlock.normalMapColor.associatedVariableName : \"vec3(0.)\";\r\n const uv = ccBlock?.uv.isConnected ? ccBlock.uv.associatedVariableName : \"vec2(0.)\";\r\n\r\n const tintColor = ccBlock?.tintColor.isConnected ? ccBlock.tintColor.associatedVariableName : \"vec3(1.)\";\r\n const tintThickness = ccBlock?.tintThickness.isConnected ? ccBlock.tintThickness.associatedVariableName : \"1.\";\r\n const tintAtDistance = ccBlock?.tintAtDistance.isConnected ? ccBlock.tintAtDistance.associatedVariableName : \"1.\";\r\n const tintTexture = \"vec4(0.)\";\r\n\r\n if (ccBlock) {\r\n state._emitUniformFromString(\"vClearCoatRefractionParams\", \"vec4\");\r\n state._emitUniformFromString(\"vClearCoatTangentSpaceParams\", \"vec2\");\r\n\r\n const normalShading = ccBlock.worldNormal;\r\n code += `vec3 vGeometricNormaClearCoatW = ${normalShading.isConnected ? \"normalize(\" + normalShading.associatedVariableName + \".xyz)\" : \"geometricNormalW\"};\\r\\n`;\r\n } else {\r\n code += `vec3 vGeometricNormaClearCoatW = geometricNormalW;\\r\\n`;\r\n }\r\n\r\n if (generateTBNSpace && ccBlock) {\r\n code += ccBlock._generateTBNSpace(state, worldPosVarName, worldNormalVarName);\r\n vTBNAvailable = ccBlock.worldTangent.isConnected;\r\n }\r\n\r\n code += `clearcoatOutParams clearcoatOut;\r\n\r\n #ifdef CLEARCOAT\r\n vec2 vClearCoatParams = vec2(${intensity}, ${roughness});\r\n vec4 vClearCoatTintParams = vec4(${tintColor}, ${tintThickness});\r\n\r\n clearcoatBlock(\r\n ${worldPosVarName}.xyz,\r\n vGeometricNormaClearCoatW,\r\n viewDirectionW,\r\n vClearCoatParams,\r\n specularEnvironmentR0,\r\n #ifdef CLEARCOAT_TEXTURE\r\n vec2(0.),\r\n #endif\r\n #ifdef CLEARCOAT_TINT\r\n vClearCoatTintParams,\r\n ${tintAtDistance},\r\n vClearCoatRefractionParams,\r\n #ifdef CLEARCOAT_TINT_TEXTURE\r\n ${tintTexture},\r\n #endif\r\n #endif\r\n #ifdef CLEARCOAT_BUMP\r\n vec2(0., 1.),\r\n vec4(${normalMapColor}, 0.),\r\n ${uv},\r\n #if defined(${vTBNAvailable ? \"TANGENT\" : \"IGNORE\"}) && defined(NORMAL)\r\n vTBN,\r\n #else\r\n vClearCoatTangentSpaceParams,\r\n #endif\r\n #ifdef OBJECTSPACE_NORMALMAP\r\n normalMatrix,\r\n #endif\r\n #endif\r\n #if defined(FORCENORMALFORWARD) && defined(NORMAL)\r\n faceNormal,\r\n #endif\r\n #ifdef REFLECTION\r\n ${reflectionBlock?._vReflectionMicrosurfaceInfosName},\r\n ${reflectionBlock?._vReflectionInfosName},\r\n ${reflectionBlock?.reflectionColor},\r\n vLightingIntensity,\r\n #ifdef ${reflectionBlock?._define3DName}\r\n ${reflectionBlock?._cubeSamplerName},\r\n #else\r\n ${reflectionBlock?._2DSamplerName},\r\n #endif\r\n #ifndef LODBASEDMICROSFURACE\r\n #ifdef ${reflectionBlock?._define3DName}\r\n ${reflectionBlock?._cubeSamplerName},\r\n ${reflectionBlock?._cubeSamplerName},\r\n #else\r\n ${reflectionBlock?._2DSamplerName},\r\n ${reflectionBlock?._2DSamplerName},\r\n #endif\r\n #endif\r\n #endif\r\n #if defined(ENVIRONMENTBRDF) && !defined(${reflectionBlock?._defineSkyboxName})\r\n #ifdef RADIANCEOCCLUSION\r\n ambientMonochrome,\r\n #endif\r\n #endif\r\n #if defined(CLEARCOAT_BUMP) || defined(TWOSIDEDLIGHTING)\r\n (gl_FrontFacing ? 1. : -1.),\r\n #endif\r\n clearcoatOut\r\n );\r\n #else\r\n clearcoatOut.specularEnvironmentR0 = specularEnvironmentR0;\r\n #endif\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n this._scene = state.sharedData.scene;\r\n\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected _dumpPropertiesCode() {\r\n let codeString = super._dumpPropertiesCode();\r\n\r\n codeString += `${this._codeVariableName}.remapF0OnInterfaceChange = ${this.remapF0OnInterfaceChange};\\r\\n`;\r\n\r\n return codeString;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.remapF0OnInterfaceChange = this.remapF0OnInterfaceChange;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n\r\n this.remapF0OnInterfaceChange = serializationObject.remapF0OnInterfaceChange ?? true;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ClearCoatBlock\", ClearCoatBlock);\r\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { NodeMaterialBlock } from "../../nodeMaterialBlock";
|
|
2
|
+
import type { NodeMaterialBuildState } from "../../nodeMaterialBuildState";
|
|
3
|
+
import type { NodeMaterialConnectionPoint } from "../../nodeMaterialBlockConnectionPoint";
|
|
4
|
+
import type { NodeMaterial, NodeMaterialDefines } from "../../nodeMaterial";
|
|
5
|
+
import type { AbstractMesh } from "../../../../Meshes/abstractMesh";
|
|
6
|
+
import type { Scene } from "../../../../scene";
|
|
7
|
+
import type { Nullable } from "../../../../types";
|
|
8
|
+
/**
|
|
9
|
+
* Block used to implement the iridescence module of the PBR material
|
|
10
|
+
*/
|
|
11
|
+
export declare class IridescenceBlock extends NodeMaterialBlock {
|
|
12
|
+
/**
|
|
13
|
+
* Create a new IridescenceBlock
|
|
14
|
+
* @param name defines the block name
|
|
15
|
+
*/
|
|
16
|
+
constructor(name: string);
|
|
17
|
+
/**
|
|
18
|
+
* Initialize the block and prepare the context for build
|
|
19
|
+
* @param state defines the state that will be used for the build
|
|
20
|
+
*/
|
|
21
|
+
initialize(state: NodeMaterialBuildState): void;
|
|
22
|
+
/**
|
|
23
|
+
* Gets the current class name
|
|
24
|
+
* @returns the class name
|
|
25
|
+
*/
|
|
26
|
+
getClassName(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Gets the intensity input component
|
|
29
|
+
*/
|
|
30
|
+
get intensity(): NodeMaterialConnectionPoint;
|
|
31
|
+
/**
|
|
32
|
+
* Gets the indexOfRefraction input component
|
|
33
|
+
*/
|
|
34
|
+
get indexOfRefraction(): NodeMaterialConnectionPoint;
|
|
35
|
+
/**
|
|
36
|
+
* Gets the thickness input component
|
|
37
|
+
*/
|
|
38
|
+
get thickness(): NodeMaterialConnectionPoint;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the iridescence object output component
|
|
41
|
+
*/
|
|
42
|
+
get iridescence(): NodeMaterialConnectionPoint;
|
|
43
|
+
autoConfigure(): void;
|
|
44
|
+
prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines): void;
|
|
45
|
+
/**
|
|
46
|
+
* Gets the main code of the block (fragment side)
|
|
47
|
+
* @param iridescenceBlock instance of a IridescenceBlock or null if the code must be generated without an active iridescence module
|
|
48
|
+
* @returns the shader code
|
|
49
|
+
*/
|
|
50
|
+
static GetCode(iridescenceBlock: Nullable<IridescenceBlock>): string;
|
|
51
|
+
protected _buildBlock(state: NodeMaterialBuildState): this;
|
|
52
|
+
serialize(): any;
|
|
53
|
+
_deserialize(serializationObject: any, scene: Scene, rootUrl: string): void;
|
|
54
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { __extends } from "tslib";
|
|
2
|
+
import { NodeMaterialBlock } from "../../nodeMaterialBlock.js";
|
|
3
|
+
import { NodeMaterialBlockConnectionPointTypes } from "../../Enums/nodeMaterialBlockConnectionPointTypes.js";
|
|
4
|
+
import { NodeMaterialConnectionPointDirection } from "../../nodeMaterialBlockConnectionPoint.js";
|
|
5
|
+
import { NodeMaterialBlockTargets } from "../../Enums/nodeMaterialBlockTargets.js";
|
|
6
|
+
import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
7
|
+
import { InputBlock } from "../Input/inputBlock.js";
|
|
8
|
+
import { NodeMaterialConnectionPointCustomObject } from "../../nodeMaterialConnectionPointCustomObject.js";
|
|
9
|
+
import { PBRIridescenceConfiguration } from "../../../../Materials/PBR/pbrIridescenceConfiguration.js";
|
|
10
|
+
/**
|
|
11
|
+
* Block used to implement the iridescence module of the PBR material
|
|
12
|
+
*/
|
|
13
|
+
var IridescenceBlock = /** @class */ (function (_super) {
|
|
14
|
+
__extends(IridescenceBlock, _super);
|
|
15
|
+
/**
|
|
16
|
+
* Create a new IridescenceBlock
|
|
17
|
+
* @param name defines the block name
|
|
18
|
+
*/
|
|
19
|
+
function IridescenceBlock(name) {
|
|
20
|
+
var _this = _super.call(this, name, NodeMaterialBlockTargets.Fragment) || this;
|
|
21
|
+
_this._isUnique = true;
|
|
22
|
+
_this.registerInput("intensity", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);
|
|
23
|
+
_this.registerInput("indexOfRefraction", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);
|
|
24
|
+
_this.registerInput("thickness", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);
|
|
25
|
+
_this.registerOutput("iridescence", NodeMaterialBlockConnectionPointTypes.Object, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject("iridescence", _this, NodeMaterialConnectionPointDirection.Output, IridescenceBlock, "IridescenceBlock"));
|
|
26
|
+
return _this;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Initialize the block and prepare the context for build
|
|
30
|
+
* @param state defines the state that will be used for the build
|
|
31
|
+
*/
|
|
32
|
+
IridescenceBlock.prototype.initialize = function (state) {
|
|
33
|
+
state._excludeVariableName("iridescenceOut");
|
|
34
|
+
state._excludeVariableName("vIridescenceParams");
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Gets the current class name
|
|
38
|
+
* @returns the class name
|
|
39
|
+
*/
|
|
40
|
+
IridescenceBlock.prototype.getClassName = function () {
|
|
41
|
+
return "IridescenceBlock";
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(IridescenceBlock.prototype, "intensity", {
|
|
44
|
+
/**
|
|
45
|
+
* Gets the intensity input component
|
|
46
|
+
*/
|
|
47
|
+
get: function () {
|
|
48
|
+
return this._inputs[0];
|
|
49
|
+
},
|
|
50
|
+
enumerable: false,
|
|
51
|
+
configurable: true
|
|
52
|
+
});
|
|
53
|
+
Object.defineProperty(IridescenceBlock.prototype, "indexOfRefraction", {
|
|
54
|
+
/**
|
|
55
|
+
* Gets the indexOfRefraction input component
|
|
56
|
+
*/
|
|
57
|
+
get: function () {
|
|
58
|
+
return this._inputs[1];
|
|
59
|
+
},
|
|
60
|
+
enumerable: false,
|
|
61
|
+
configurable: true
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(IridescenceBlock.prototype, "thickness", {
|
|
64
|
+
/**
|
|
65
|
+
* Gets the thickness input component
|
|
66
|
+
*/
|
|
67
|
+
get: function () {
|
|
68
|
+
return this._inputs[2];
|
|
69
|
+
},
|
|
70
|
+
enumerable: false,
|
|
71
|
+
configurable: true
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(IridescenceBlock.prototype, "iridescence", {
|
|
74
|
+
/**
|
|
75
|
+
* Gets the iridescence object output component
|
|
76
|
+
*/
|
|
77
|
+
get: function () {
|
|
78
|
+
return this._outputs[0];
|
|
79
|
+
},
|
|
80
|
+
enumerable: false,
|
|
81
|
+
configurable: true
|
|
82
|
+
});
|
|
83
|
+
IridescenceBlock.prototype.autoConfigure = function () {
|
|
84
|
+
if (!this.intensity.isConnected) {
|
|
85
|
+
var intensityInput = new InputBlock("Iridescence intensity", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);
|
|
86
|
+
intensityInput.value = 1;
|
|
87
|
+
intensityInput.output.connectTo(this.intensity);
|
|
88
|
+
var indexOfRefractionInput = new InputBlock("Iridescence ior", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);
|
|
89
|
+
indexOfRefractionInput.value = 1.3;
|
|
90
|
+
indexOfRefractionInput.output.connectTo(this.indexOfRefraction);
|
|
91
|
+
var thicknessInput = new InputBlock("Iridescence thickness", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);
|
|
92
|
+
thicknessInput.value = 400;
|
|
93
|
+
thicknessInput.output.connectTo(this.thickness);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
IridescenceBlock.prototype.prepareDefines = function (mesh, nodeMaterial, defines) {
|
|
97
|
+
_super.prototype.prepareDefines.call(this, mesh, nodeMaterial, defines);
|
|
98
|
+
defines.setValue("IRIDESCENCE", true, true);
|
|
99
|
+
defines.setValue("IRIDESCENCE_TEXTURE", false, true);
|
|
100
|
+
defines.setValue("IRIDESCENCE_THICKNESS_TEXTURE", false, true);
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Gets the main code of the block (fragment side)
|
|
104
|
+
* @param iridescenceBlock instance of a IridescenceBlock or null if the code must be generated without an active iridescence module
|
|
105
|
+
* @returns the shader code
|
|
106
|
+
*/
|
|
107
|
+
IridescenceBlock.GetCode = function (iridescenceBlock) {
|
|
108
|
+
var code = "";
|
|
109
|
+
var intensityName = (iridescenceBlock === null || iridescenceBlock === void 0 ? void 0 : iridescenceBlock.intensity.isConnected) ? iridescenceBlock.intensity.associatedVariableName : "1.";
|
|
110
|
+
var indexOfRefraction = (iridescenceBlock === null || iridescenceBlock === void 0 ? void 0 : iridescenceBlock.indexOfRefraction.isConnected)
|
|
111
|
+
? iridescenceBlock.indexOfRefraction.associatedVariableName
|
|
112
|
+
: PBRIridescenceConfiguration._DefaultIndexOfRefraction;
|
|
113
|
+
var thickness = (iridescenceBlock === null || iridescenceBlock === void 0 ? void 0 : iridescenceBlock.thickness.isConnected) ? iridescenceBlock.thickness.associatedVariableName : PBRIridescenceConfiguration._DefaultMaximumThickness;
|
|
114
|
+
code += "iridescenceOutParams iridescenceOut;\n\n #ifdef IRIDESCENCE\n iridescenceBlock(\n vec4(".concat(intensityName, ", ").concat(indexOfRefraction, ", 1., ").concat(thickness, "),\n NdotV,\n specularEnvironmentR0,\n #ifdef CLEARCOAT\n NdotVUnclamped,\n #endif\n iridescenceOut\n );\n\n float iridescenceIntensity = iridescenceOut.iridescenceIntensity;\n specularEnvironmentR0 = iridescenceOut.specularEnvironmentR0;\n #endif\r\n");
|
|
115
|
+
return code;
|
|
116
|
+
};
|
|
117
|
+
IridescenceBlock.prototype._buildBlock = function (state) {
|
|
118
|
+
if (state.target === NodeMaterialBlockTargets.Fragment) {
|
|
119
|
+
state.sharedData.bindableBlocks.push(this);
|
|
120
|
+
state.sharedData.blocksWithDefines.push(this);
|
|
121
|
+
}
|
|
122
|
+
return this;
|
|
123
|
+
};
|
|
124
|
+
IridescenceBlock.prototype.serialize = function () {
|
|
125
|
+
var serializationObject = _super.prototype.serialize.call(this);
|
|
126
|
+
return serializationObject;
|
|
127
|
+
};
|
|
128
|
+
IridescenceBlock.prototype._deserialize = function (serializationObject, scene, rootUrl) {
|
|
129
|
+
_super.prototype._deserialize.call(this, serializationObject, scene, rootUrl);
|
|
130
|
+
};
|
|
131
|
+
return IridescenceBlock;
|
|
132
|
+
}(NodeMaterialBlock));
|
|
133
|
+
export { IridescenceBlock };
|
|
134
|
+
RegisterClass("BABYLON.IridescenceBlock", IridescenceBlock);
|
|
135
|
+
//# sourceMappingURL=iridescenceBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iridescenceBlock.js","sourceRoot":"","sources":["../../../../../../../../lts/core/generated/Materials/Node/Blocks/PBR/iridescenceBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialConnectionPointDirection } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { NodeMaterialConnectionPointCustomObject } from \"../../nodeMaterialConnectionPointCustomObject\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { Scene } from \"../../../../scene\";\r\nimport type { Nullable } from \"../../../../types\";\r\nimport { PBRIridescenceConfiguration } from \"../../../../Materials/PBR/pbrIridescenceConfiguration\";\r\n\r\n/**\r\n * Block used to implement the iridescence module of the PBR material\r\n */\r\nexport class IridescenceBlock extends NodeMaterialBlock {\r\n /**\r\n * Create a new IridescenceBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Fragment);\r\n\r\n this._isUnique = true;\r\n\r\n this.registerInput(\"intensity\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"indexOfRefraction\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n this.registerInput(\"thickness\", NodeMaterialBlockConnectionPointTypes.Float, true, NodeMaterialBlockTargets.Fragment);\r\n\r\n this.registerOutput(\r\n \"iridescence\",\r\n NodeMaterialBlockConnectionPointTypes.Object,\r\n NodeMaterialBlockTargets.Fragment,\r\n new NodeMaterialConnectionPointCustomObject(\"iridescence\", this, NodeMaterialConnectionPointDirection.Output, IridescenceBlock, \"IridescenceBlock\")\r\n );\r\n }\r\n\r\n /**\r\n * Initialize the block and prepare the context for build\r\n * @param state defines the state that will be used for the build\r\n */\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"iridescenceOut\");\r\n state._excludeVariableName(\"vIridescenceParams\");\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public getClassName() {\r\n return \"IridescenceBlock\";\r\n }\r\n\r\n /**\r\n * Gets the intensity input component\r\n */\r\n public get intensity(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the indexOfRefraction input component\r\n */\r\n public get indexOfRefraction(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the thickness input component\r\n */\r\n public get thickness(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the iridescence object output component\r\n */\r\n public get iridescence(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n public autoConfigure() {\r\n if (!this.intensity.isConnected) {\r\n const intensityInput = new InputBlock(\"Iridescence intensity\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n intensityInput.value = 1;\r\n intensityInput.output.connectTo(this.intensity);\r\n\r\n const indexOfRefractionInput = new InputBlock(\"Iridescence ior\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n indexOfRefractionInput.value = 1.3;\r\n indexOfRefractionInput.output.connectTo(this.indexOfRefraction);\r\n\r\n const thicknessInput = new InputBlock(\"Iridescence thickness\", NodeMaterialBlockTargets.Fragment, NodeMaterialBlockConnectionPointTypes.Float);\r\n thicknessInput.value = 400;\r\n thicknessInput.output.connectTo(this.thickness);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n super.prepareDefines(mesh, nodeMaterial, defines);\r\n\r\n defines.setValue(\"IRIDESCENCE\", true, true);\r\n defines.setValue(\"IRIDESCENCE_TEXTURE\", false, true);\r\n defines.setValue(\"IRIDESCENCE_THICKNESS_TEXTURE\", false, true);\r\n }\r\n\r\n /**\r\n * Gets the main code of the block (fragment side)\r\n * @param iridescenceBlock instance of a IridescenceBlock or null if the code must be generated without an active iridescence module\r\n * @returns the shader code\r\n */\r\n public static GetCode(iridescenceBlock: Nullable<IridescenceBlock>): string {\r\n let code = \"\";\r\n\r\n const intensityName = iridescenceBlock?.intensity.isConnected ? iridescenceBlock.intensity.associatedVariableName : \"1.\";\r\n const indexOfRefraction = iridescenceBlock?.indexOfRefraction.isConnected\r\n ? iridescenceBlock.indexOfRefraction.associatedVariableName\r\n : PBRIridescenceConfiguration._DefaultIndexOfRefraction;\r\n const thickness = iridescenceBlock?.thickness.isConnected ? iridescenceBlock.thickness.associatedVariableName : PBRIridescenceConfiguration._DefaultMaximumThickness;\r\n\r\n code += `iridescenceOutParams iridescenceOut;\r\n\r\n #ifdef IRIDESCENCE\r\n iridescenceBlock(\r\n vec4(${intensityName}, ${indexOfRefraction}, 1., ${thickness}),\r\n NdotV,\r\n specularEnvironmentR0,\r\n #ifdef CLEARCOAT\r\n NdotVUnclamped,\r\n #endif\r\n iridescenceOut\r\n );\r\n\r\n float iridescenceIntensity = iridescenceOut.iridescenceIntensity;\r\n specularEnvironmentR0 = iridescenceOut.specularEnvironmentR0;\r\n #endif\\r\\n`;\r\n\r\n return code;\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n if (state.target === NodeMaterialBlockTargets.Fragment) {\r\n state.sharedData.bindableBlocks.push(this);\r\n state.sharedData.blocksWithDefines.push(this);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n return serializationObject;\r\n }\r\n\r\n public _deserialize(serializationObject: any, scene: Scene, rootUrl: string) {\r\n super._deserialize(serializationObject, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.IridescenceBlock\", IridescenceBlock);\r\n"]}
|
|
@@ -203,6 +203,10 @@ export declare class PBRMetallicRoughnessBlock extends NodeMaterialBlock {
|
|
|
203
203
|
* Gets the anisotropy object parameters
|
|
204
204
|
*/
|
|
205
205
|
get anisotropy(): NodeMaterialConnectionPoint;
|
|
206
|
+
/**
|
|
207
|
+
* Gets the iridescence object parameters
|
|
208
|
+
*/
|
|
209
|
+
get iridescence(): NodeMaterialConnectionPoint;
|
|
206
210
|
/**
|
|
207
211
|
* Gets the ambient output component
|
|
208
212
|
*/
|
|
@@ -16,6 +16,7 @@ import { MaterialFlags } from "../../../materialFlags.js";
|
|
|
16
16
|
import { AnisotropyBlock } from "./anisotropyBlock.js";
|
|
17
17
|
import { ReflectionBlock } from "./reflectionBlock.js";
|
|
18
18
|
import { ClearCoatBlock } from "./clearCoatBlock.js";
|
|
19
|
+
import { IridescenceBlock } from "./iridescenceBlock.js";
|
|
19
20
|
import { SubSurfaceBlock } from "./subSurfaceBlock.js";
|
|
20
21
|
|
|
21
22
|
import { Color3, TmpColors } from "../../../../Maths/math.color.js";
|
|
@@ -161,6 +162,7 @@ var PBRMetallicRoughnessBlock = /** @class */ (function (_super) {
|
|
|
161
162
|
_this.registerInput("sheen", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject("sheen", _this, NodeMaterialConnectionPointDirection.Input, SheenBlock, "SheenBlock"));
|
|
162
163
|
_this.registerInput("subsurface", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject("subsurface", _this, NodeMaterialConnectionPointDirection.Input, SubSurfaceBlock, "SubSurfaceBlock"));
|
|
163
164
|
_this.registerInput("anisotropy", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject("anisotropy", _this, NodeMaterialConnectionPointDirection.Input, AnisotropyBlock, "AnisotropyBlock"));
|
|
165
|
+
_this.registerInput("iridescence", NodeMaterialBlockConnectionPointTypes.Object, true, NodeMaterialBlockTargets.Fragment, new NodeMaterialConnectionPointCustomObject("iridescence", _this, NodeMaterialConnectionPointDirection.Input, IridescenceBlock, "IridescenceBlock"));
|
|
164
166
|
_this.registerOutput("ambientClr", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);
|
|
165
167
|
_this.registerOutput("diffuseDir", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);
|
|
166
168
|
_this.registerOutput("specularDir", NodeMaterialBlockConnectionPointTypes.Color3, NodeMaterialBlockTargets.Fragment);
|
|
@@ -393,6 +395,16 @@ var PBRMetallicRoughnessBlock = /** @class */ (function (_super) {
|
|
|
393
395
|
enumerable: false,
|
|
394
396
|
configurable: true
|
|
395
397
|
});
|
|
398
|
+
Object.defineProperty(PBRMetallicRoughnessBlock.prototype, "iridescence", {
|
|
399
|
+
/**
|
|
400
|
+
* Gets the iridescence object parameters
|
|
401
|
+
*/
|
|
402
|
+
get: function () {
|
|
403
|
+
return this._inputs[17];
|
|
404
|
+
},
|
|
405
|
+
enumerable: false,
|
|
406
|
+
configurable: true
|
|
407
|
+
});
|
|
396
408
|
Object.defineProperty(PBRMetallicRoughnessBlock.prototype, "ambientClr", {
|
|
397
409
|
/**
|
|
398
410
|
* Gets the ambient output component
|
|
@@ -768,7 +780,7 @@ var PBRMetallicRoughnessBlock = /** @class */ (function (_super) {
|
|
|
768
780
|
return code;
|
|
769
781
|
};
|
|
770
782
|
PBRMetallicRoughnessBlock.prototype._buildBlock = function (state) {
|
|
771
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15;
|
|
783
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16;
|
|
772
784
|
_super.prototype._buildBlock.call(this, state);
|
|
773
785
|
this._scene = state.sharedData.scene;
|
|
774
786
|
if (!this._environmentBRDFTexture) {
|
|
@@ -926,39 +938,45 @@ var PBRMetallicRoughnessBlock = /** @class */ (function (_super) {
|
|
|
926
938
|
{ search: /LINEARSPECULARREFLECTION/g, replace: (_s = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineLinearSpecularReflection) !== null && _s !== void 0 ? _s : "LINEARSPECULARREFLECTION" },
|
|
927
939
|
],
|
|
928
940
|
});
|
|
941
|
+
// _____________________________ Iridescence _______________________________
|
|
942
|
+
var iridescenceBlock = this.iridescence.isConnected ? (_t = this.iridescence.connectedPoint) === null || _t === void 0 ? void 0 : _t.ownerBlock : null;
|
|
943
|
+
state.compilationString += IridescenceBlock.GetCode(iridescenceBlock);
|
|
944
|
+
state._emitFunctionFromInclude("pbrBlockIridescence", comments, {
|
|
945
|
+
replaceStrings: [],
|
|
946
|
+
});
|
|
929
947
|
// _____________________________ Clear Coat ____________________________
|
|
930
|
-
var clearcoatBlock = this.clearcoat.isConnected ? (
|
|
948
|
+
var clearcoatBlock = this.clearcoat.isConnected ? (_u = this.clearcoat.connectedPoint) === null || _u === void 0 ? void 0 : _u.ownerBlock : null;
|
|
931
949
|
var generateTBNSpace = !this.perturbedNormal.isConnected && !this.anisotropy.isConnected;
|
|
932
|
-
var isTangentConnectedToPerturbNormal = this.perturbedNormal.isConnected && ((
|
|
933
|
-
var isTangentConnectedToAnisotropy = this.anisotropy.isConnected && ((
|
|
950
|
+
var isTangentConnectedToPerturbNormal = this.perturbedNormal.isConnected && ((_w = ((_v = this.perturbedNormal.connectedPoint) === null || _v === void 0 ? void 0 : _v.ownerBlock).worldTangent) === null || _w === void 0 ? void 0 : _w.isConnected);
|
|
951
|
+
var isTangentConnectedToAnisotropy = this.anisotropy.isConnected && ((_x = this.anisotropy.connectedPoint) === null || _x === void 0 ? void 0 : _x.ownerBlock).worldTangent.isConnected;
|
|
934
952
|
var vTBNAvailable = isTangentConnectedToPerturbNormal || (!this.perturbedNormal.isConnected && isTangentConnectedToAnisotropy);
|
|
935
953
|
state.compilationString += ClearCoatBlock.GetCode(state, clearcoatBlock, reflectionBlock, worldPosVarName, generateTBNSpace, vTBNAvailable, this.worldNormal.associatedVariableName);
|
|
936
954
|
if (generateTBNSpace) {
|
|
937
|
-
vTBNAvailable = (
|
|
955
|
+
vTBNAvailable = (_y = clearcoatBlock === null || clearcoatBlock === void 0 ? void 0 : clearcoatBlock.worldTangent.isConnected) !== null && _y !== void 0 ? _y : false;
|
|
938
956
|
}
|
|
939
957
|
state._emitFunctionFromInclude("pbrBlockClearcoat", comments, {
|
|
940
958
|
replaceStrings: [
|
|
941
959
|
{ search: /computeReflectionCoords/g, replace: "computeReflectionCoordsPBR" },
|
|
942
|
-
{ search: /REFLECTIONMAP_3D/g, replace: (
|
|
943
|
-
{ search: /REFLECTIONMAP_OPPOSITEZ/g, replace: (
|
|
944
|
-
{ search: /REFLECTIONMAP_PROJECTION/g, replace: (
|
|
945
|
-
{ search: /REFLECTIONMAP_SKYBOX/g, replace: (
|
|
946
|
-
{ search: /LODINREFLECTIONALPHA/g, replace: (
|
|
947
|
-
{ search: /LINEARSPECULARREFLECTION/g, replace: (
|
|
960
|
+
{ search: /REFLECTIONMAP_3D/g, replace: (_z = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._define3DName) !== null && _z !== void 0 ? _z : "REFLECTIONMAP_3D" },
|
|
961
|
+
{ search: /REFLECTIONMAP_OPPOSITEZ/g, replace: (_0 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineOppositeZ) !== null && _0 !== void 0 ? _0 : "REFLECTIONMAP_OPPOSITEZ" },
|
|
962
|
+
{ search: /REFLECTIONMAP_PROJECTION/g, replace: (_1 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineProjectionName) !== null && _1 !== void 0 ? _1 : "REFLECTIONMAP_PROJECTION" },
|
|
963
|
+
{ search: /REFLECTIONMAP_SKYBOX/g, replace: (_2 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineSkyboxName) !== null && _2 !== void 0 ? _2 : "REFLECTIONMAP_SKYBOX" },
|
|
964
|
+
{ search: /LODINREFLECTIONALPHA/g, replace: (_3 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineLODReflectionAlpha) !== null && _3 !== void 0 ? _3 : "LODINREFLECTIONALPHA" },
|
|
965
|
+
{ search: /LINEARSPECULARREFLECTION/g, replace: (_4 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineLinearSpecularReflection) !== null && _4 !== void 0 ? _4 : "LINEARSPECULARREFLECTION" },
|
|
948
966
|
{ search: /defined\(TANGENT\)/g, replace: vTBNAvailable ? "defined(TANGENT)" : "defined(IGNORE)" },
|
|
949
967
|
],
|
|
950
968
|
});
|
|
951
969
|
// _________________________ Specular Environment Reflectance __________________________
|
|
952
970
|
state.compilationString += state._emitCodeFromInclude("pbrBlockReflectance", comments, {
|
|
953
971
|
replaceStrings: [
|
|
954
|
-
{ search: /REFLECTIONMAP_SKYBOX/g, replace: (
|
|
955
|
-
{ search: /REFLECTIONMAP_3D/g, replace: (
|
|
972
|
+
{ search: /REFLECTIONMAP_SKYBOX/g, replace: (_5 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineSkyboxName) !== null && _5 !== void 0 ? _5 : "REFLECTIONMAP_SKYBOX" },
|
|
973
|
+
{ search: /REFLECTIONMAP_3D/g, replace: (_6 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._define3DName) !== null && _6 !== void 0 ? _6 : "REFLECTIONMAP_3D" },
|
|
956
974
|
],
|
|
957
975
|
});
|
|
958
976
|
// ___________________________________ SubSurface ______________________________________
|
|
959
|
-
var subsurfaceBlock = this.subsurface.isConnected ? (
|
|
977
|
+
var subsurfaceBlock = this.subsurface.isConnected ? (_7 = this.subsurface.connectedPoint) === null || _7 === void 0 ? void 0 : _7.ownerBlock : null;
|
|
960
978
|
var refractionBlock = this.subsurface.isConnected
|
|
961
|
-
? (
|
|
979
|
+
? (_9 = ((_8 = this.subsurface.connectedPoint) === null || _8 === void 0 ? void 0 : _8.ownerBlock).refraction.connectedPoint) === null || _9 === void 0 ? void 0 : _9.ownerBlock
|
|
962
980
|
: null;
|
|
963
981
|
if (refractionBlock) {
|
|
964
982
|
refractionBlock.viewConnectionPoint = this.view;
|
|
@@ -967,13 +985,13 @@ var PBRMetallicRoughnessBlock = /** @class */ (function (_super) {
|
|
|
967
985
|
state.compilationString += SubSurfaceBlock.GetCode(state, subsurfaceBlock, reflectionBlock, worldPosVarName);
|
|
968
986
|
state._emitFunctionFromInclude("pbrBlockSubSurface", comments, {
|
|
969
987
|
replaceStrings: [
|
|
970
|
-
{ search: /REFLECTIONMAP_3D/g, replace: (
|
|
971
|
-
{ search: /REFLECTIONMAP_OPPOSITEZ/g, replace: (
|
|
972
|
-
{ search: /REFLECTIONMAP_PROJECTION/g, replace: (
|
|
973
|
-
{ search: /SS_REFRACTIONMAP_3D/g, replace: (
|
|
974
|
-
{ search: /SS_LODINREFRACTIONALPHA/g, replace: (
|
|
975
|
-
{ search: /SS_LINEARSPECULARREFRACTION/g, replace: (
|
|
976
|
-
{ search: /SS_REFRACTIONMAP_OPPOSITEZ/g, replace: (
|
|
988
|
+
{ search: /REFLECTIONMAP_3D/g, replace: (_10 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._define3DName) !== null && _10 !== void 0 ? _10 : "REFLECTIONMAP_3D" },
|
|
989
|
+
{ search: /REFLECTIONMAP_OPPOSITEZ/g, replace: (_11 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineOppositeZ) !== null && _11 !== void 0 ? _11 : "REFLECTIONMAP_OPPOSITEZ" },
|
|
990
|
+
{ search: /REFLECTIONMAP_PROJECTION/g, replace: (_12 = reflectionBlock === null || reflectionBlock === void 0 ? void 0 : reflectionBlock._defineProjectionName) !== null && _12 !== void 0 ? _12 : "REFLECTIONMAP_PROJECTION" },
|
|
991
|
+
{ search: /SS_REFRACTIONMAP_3D/g, replace: (_13 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._define3DName) !== null && _13 !== void 0 ? _13 : "SS_REFRACTIONMAP_3D" },
|
|
992
|
+
{ search: /SS_LODINREFRACTIONALPHA/g, replace: (_14 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._defineLODRefractionAlpha) !== null && _14 !== void 0 ? _14 : "SS_LODINREFRACTIONALPHA" },
|
|
993
|
+
{ search: /SS_LINEARSPECULARREFRACTION/g, replace: (_15 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._defineLinearSpecularRefraction) !== null && _15 !== void 0 ? _15 : "SS_LINEARSPECULARREFRACTION" },
|
|
994
|
+
{ search: /SS_REFRACTIONMAP_OPPOSITEZ/g, replace: (_16 = refractionBlock === null || refractionBlock === void 0 ? void 0 : refractionBlock._defineOppositeZ) !== null && _16 !== void 0 ? _16 : "SS_REFRACTIONMAP_OPPOSITEZ" },
|
|
977
995
|
],
|
|
978
996
|
});
|
|
979
997
|
// _____________________________ Direct Lighting Info __________________________________
|
|
@@ -1022,8 +1040,8 @@ var PBRMetallicRoughnessBlock = /** @class */ (function (_super) {
|
|
|
1022
1040
|
],
|
|
1023
1041
|
});
|
|
1024
1042
|
// _____________________________ Generate end points ________________________
|
|
1025
|
-
for (var _i = 0,
|
|
1026
|
-
var output =
|
|
1043
|
+
for (var _i = 0, _17 = this._outputs; _i < _17.length; _i++) {
|
|
1044
|
+
var output = _17[_i];
|
|
1027
1045
|
if (output.hasEndpoints) {
|
|
1028
1046
|
var remap = mapOutputToVariable[output.name];
|
|
1029
1047
|
if (remap) {
|