@babylonjs/core 5.5.6 → 5.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"morphTargetsBlock.js","sourceRoot":"","sources":["../../../../../../../../lts/core/generated/Materials/Node/Blocks/Vertex/morphTargetsBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAE1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMhF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,kEAAkE,CAAC;AAC1E,OAAO,wEAAwE,CAAC;AAEhF;;GAEG;AACH;IAAuC,qCAAiB;IAGpD;;;OAGG;IACH,2BAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,SAW/C;QATG,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC9E,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC5E,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC7E,KAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC9F,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACxE,KAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACrF,KAAI,CAAC,cAAc,CAAC,cAAc,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACnF,KAAI,CAAC,cAAc,CAAC,eAAe,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACpF,KAAI,CAAC,cAAc,CAAC,UAAU,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;;IACnF,CAAC;IAED;;;OAGG;IACI,wCAAY,GAAnB;QACI,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAKD,sBAAW,uCAAQ;QAHnB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,qCAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,sCAAO;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,iCAAE;QAHb;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,6CAAc;QAHzB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,2CAAY;QAHvB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,4CAAa;QAHxB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,uCAAQ;QAHnB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAEM,sCAAU,GAAjB,UAAkB,KAA6B;QAC3C,KAAK,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;IACxD,CAAC;IAEM,yCAAa,GAApB,UAAqB,QAAsB;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC5B,IAAI,aAAa,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAtC,CAAsC,CAAC,CAAC;YAErG,IAAI,CAAC,aAAa,EAAE;gBAChB,aAAa,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3C,aAAa,CAAC,cAAc,EAAE,CAAC;aAClC;YACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC1B,IAAI,WAAW,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAApC,CAAoC,CAAC,CAAC;YAEjG,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aACxC;YACD,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3B,IAAI,YAAY,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAArC,CAAqC,CAAC,CAAC;YAEnG,IAAI,CAAC,YAAY,EAAE;gBACf,YAAY,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBACzC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAC1C;YACD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YACtB,IAAI,OAAO,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAhC,CAAgC,CAAC,CAAC;YAEzF,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAChC;YACD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACrC;IACL,CAAC;IAEM,0CAAc,GAArB,UAAsB,IAAkB,EAAE,YAA0B,EAAE,OAA4B;QAC9F,IAAW,IAAK,CAAC,kBAAkB,EAAE;YACjC,IAAM,kBAAkB,GAAU,IAAK,CAAC,kBAAkB,CAAC;YAE3D,IAAI,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,wBAAwB,KAAI,kBAAkB,CAAC,cAAc,KAAK,OAAO,CAAC,uBAAuB,CAAC,EAAE;gBACxH,OAAO,CAAC,qBAAqB,EAAE,CAAC;aACnC;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YAC9B,OAAO;SACV;QAED,cAAc,CAAC,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,gCAAI,GAAX,UAAY,MAAc,EAAE,YAA0B,EAAE,IAAW;QAC/D,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,CAAC,EAAE;YAC/E,cAAc,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEvD,IAAI,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE;gBAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACzC;SACJ;IACL,CAAC;IAEM,oDAAwB,GAA/B,UAAgC,iBAAyC,EAAE,mBAA2C,EAAE,IAAkB,EAAE,OAA4B;QACpK,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,KAAK,GAAG,iBAAiB,CAAC;QAChC,IAAM,WAAW,GAAG,OAAO,CAAC,qBAA+B,CAAC;QAE5D,IAAM,OAAO,GAAU,IAAK,CAAC,kBAAkB,CAAC;QAChD,IAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAM,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,KAAI,WAAW,GAAG,CAAC,EAAE;YACtD,aAAa,IAAI,qBAAqB,CAAC;SAC1C;QAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;YAC9C,aAAa,IAAI,yBAAyB,CAAC;YAC3C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;gBACnC,aAAa,IAAI,+DAA+D,CAAC;gBACjF,aAAa,IAAI,UAAG,cAAc,CAAC,sBAAsB,4CAAkC,KAAK,2BAAiB,QAAQ,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;gBAC3L,aAAa,IAAI,sBAAsB,CAAC;aAC3C;iBAAM;gBACH,aAAa,IAAI,UAAG,cAAc,CAAC,sBAAsB,0BAAgB,KAAK,gBAAM,QAAQ,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;aACjK;YAED,IAAI,UAAU,EAAE;gBACZ,aAAa,IAAI,gCAAgC,CAAC;gBAClD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;oBACnC,aAAa,IAAI,UAAG,YAAY,CAAC,sBAAsB,4CAAkC,KAAK,2BAAiB,MAAM,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;oBACvL,aAAa,IAAI,sBAAsB,CAAC;iBAC3C;qBAAM;oBACH,aAAa,IAAI,UAAG,YAAY,CAAC,sBAAsB,wBAAc,KAAK,gBAAM,MAAM,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;iBAC3J;gBACD,aAAa,IAAI,YAAY,CAAC;aACjC;YAED,IAAI,MAAM,EAAE;gBACR,aAAa,IAAI,4BAA4B,CAAC;gBAC9C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;oBACnC,aAAa,IAAI,UAAG,QAAQ,CAAC,sBAAsB,4CAAkC,KAAK,8BAAoB,EAAE,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;oBAClL,aAAa,IAAI,sBAAsB,CAAC;iBAC3C;qBAAM;oBACH,aAAa,IAAI,UAAG,QAAQ,CAAC,sBAAsB,wBAAc,KAAK,gBAAM,EAAE,CAAC,sBAAsB,0CAAgC,KAAK,WAAQ,CAAC;iBACtJ;gBACD,aAAa,IAAI,YAAY,CAAC;aACjC;YAED,IAAI,WAAW,EAAE;gBACb,aAAa,IAAI,iCAAiC,CAAC;gBACnD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;oBACnC,aAAa,IAAI,UAAG,aAAa,CAAC,sBAAsB,4CAAkC,KAAK,2BAAiB,OAAO,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;iBAC5L;qBAAM;oBACH,aAAa,IAAI,UAAG,aAAa,CAAC,sBAAsB,6BAAmB,KAAK,gBAAM,OAAO,CAAC,sBAAsB,2CAAiC,KAAK,WAAQ,CAAC;iBACtK;gBACD,aAAa,IAAI,YAAY,CAAC;aACjC;YAED,aAAa,IAAI,YAAY,CAAC;SACjC;QAED,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAExG,IAAI,WAAW,GAAG,CAAC,EAAE;YACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;gBAC9C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;gBAEzD,IAAI,UAAU,EAAE;oBACZ,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;iBAC1D;gBAED,IAAI,WAAW,EAAE;oBACb,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;iBAC3D;gBAED,IAAI,MAAM,EAAE;oBACR,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;iBAC5D;aACJ;SACJ;IACL,CAAC;IAES,uCAAW,GAArB,UAAsB,KAA6B;QAC/C,iBAAM,WAAW,YAAC,KAAK,CAAC,CAAC;QAEzB,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,6CAA6C;QAC7C,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,YAAY;QACZ,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,QAAQ,GAAG,YAAK,IAAI,CAAC,IAAI,CAAE,CAAC;QAElC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpC,KAAK,CAAC,wBAAwB,CAAC,qCAAqC,EAAE,QAAQ,CAAC,CAAC;QAChF,KAAK,CAAC,wBAAwB,CAAC,+BAA+B,EAAE,QAAQ,EAAE;YACtE,SAAS,EAAE,6BAA6B;SAC3C,CAAC,CAAC;QAEH,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,gBAAM,QAAQ,CAAC,sBAAsB,UAAO,CAAC;QACrH,KAAK,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;QAC/C,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAM,MAAM,CAAC,sBAAsB,UAAO,CAAC;QACjH,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,6BAA0B,CAAC;QACjG,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QACxC,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,CAAC;QAChD,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,gBAAM,OAAO,CAAC,sBAAsB,UAAO,CAAC;QACnH,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,6BAA0B,CAAC;QAClG,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QACxC,KAAK,CAAC,iBAAiB,IAAI,gBAAgB,CAAC;QAC5C,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAM,EAAE,CAAC,sBAAsB,UAAO,CAAC;QACzG,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,yBAAsB,CAAC;QACzF,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QAExC,qBAAqB;QACrB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,CAAC;QAC/D,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,CAAC;QAEzD,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,wBAAC;AAAD,CAAC,AA3SD,CAAuC,iBAAiB,GA2SvD;;AAED,aAAa,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { MaterialHelper } from \"../../../materialHelper\";\r\nimport { VertexBuffer } from \"../../../../Buffers/buffer\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/morphTargetsVertexDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration\";\r\n\r\n/**\r\n * Block used to add morph targets support to vertex shader\r\n */\r\nexport class MorphTargetsBlock extends NodeMaterialBlock {\r\n private _repeatableContentAnchor: string;\r\n\r\n /**\r\n * Create a new MorphTargetsBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"tangent\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.tangent.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"positionOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"normalOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"tangentOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"uvOutput\", NodeMaterialBlockConnectionPointTypes.Vector2);\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 \"MorphTargetsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get tangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the position output component\r\n */\r\n public get positionOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal output component\r\n */\r\n public get normalOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get tangentOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get uvOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"morphTargetInfluences\");\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\");\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n if (!this.normal.isConnected) {\r\n let normalInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"normal\");\r\n\r\n if (!normalInput) {\r\n normalInput = new InputBlock(\"normal\");\r\n normalInput.setAsAttribute(\"normal\");\r\n }\r\n normalInput.output.connectTo(this.normal);\r\n }\r\n if (!this.tangent.isConnected) {\r\n let tangentInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"tangent\");\r\n\r\n if (!tangentInput) {\r\n tangentInput = new InputBlock(\"tangent\");\r\n tangentInput.setAsAttribute(\"tangent\");\r\n }\r\n tangentInput.output.connectTo(this.tangent);\r\n }\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\");\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute(\"uv\");\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if ((<Mesh>mesh).morphTargetManager) {\r\n const morphTargetManager = (<Mesh>mesh).morphTargetManager;\r\n\r\n if (morphTargetManager?.isUsingTextureForTargets && morphTargetManager.numInfluencers !== defines[\"NUM_MORPH_INFLUENCERS\"]) {\r\n defines.markAsAttributesDirty();\r\n }\r\n }\r\n\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n\r\n MaterialHelper.PrepareDefinesForMorphTargets(mesh, defines);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (mesh && mesh.morphTargetManager && mesh.morphTargetManager.numInfluencers > 0) {\r\n MaterialHelper.BindMorphTargetParameters(mesh, effect);\r\n\r\n if (mesh.morphTargetManager.isUsingTextureForTargets) {\r\n mesh.morphTargetManager._bind(effect);\r\n }\r\n }\r\n }\r\n\r\n public replaceRepeatableContent(vertexShaderState: NodeMaterialBuildState, fragmentShaderState: NodeMaterialBuildState, mesh: AbstractMesh, defines: NodeMaterialDefines) {\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const state = vertexShaderState;\r\n const repeatCount = defines.NUM_MORPH_INFLUENCERS as number;\r\n\r\n const manager = (<Mesh>mesh).morphTargetManager;\r\n const hasNormals = manager && manager.supportsNormals && defines[\"NORMAL\"];\r\n const hasTangents = manager && manager.supportsTangents && defines[\"TANGENT\"];\r\n const hasUVs = manager && manager.supportsUVs && defines[\"UV1\"];\r\n\r\n let injectionCode = \"\";\r\n\r\n if (manager?.isUsingTextureForTargets && repeatCount > 0) {\r\n injectionCode += `float vertexID;\\r\\n`;\r\n }\r\n\r\n for (let index = 0; index < repeatCount; index++) {\r\n injectionCode += `#ifdef MORPHTARGETS\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `vertexID = float(gl_VertexID) * morphTargetTextureInfo.x;\\r\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID) - ${position.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n injectionCode += `vertexID += 1.0;\\r\\n`;\r\n } else {\r\n injectionCode += `${positionOutput.associatedVariableName} += (position${index} - ${position.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n\r\n if (hasNormals) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `${normalOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID) - ${normal.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n injectionCode += `vertexID += 1.0;\\r\\n`;\r\n } else {\r\n injectionCode += `${normalOutput.associatedVariableName} += (normal${index} - ${normal.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n if (hasUVs) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `${uvOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID).xy - ${uv.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n injectionCode += `vertexID += 1.0;\\r\\n`;\r\n } else {\r\n injectionCode += `${uvOutput.associatedVariableName}.xy += (uv_${index} - ${uv.associatedVariableName}.xy) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n if (hasTangents) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `${tangentOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID) - ${tangent.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (tangent${index} - ${tangent.associatedVariableName}.xyz) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n state.compilationString = state.compilationString.replace(this._repeatableContentAnchor, injectionCode);\r\n\r\n if (repeatCount > 0) {\r\n for (let index = 0; index < repeatCount; index++) {\r\n state.attributes.push(VertexBuffer.PositionKind + index);\r\n\r\n if (hasNormals) {\r\n state.attributes.push(VertexBuffer.NormalKind + index);\r\n }\r\n\r\n if (hasTangents) {\r\n state.attributes.push(VertexBuffer.TangentKind + index);\r\n }\r\n\r\n if (hasUVs) {\r\n state.attributes.push(VertexBuffer.UVKind + \"_\" + index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Register for repeatable content generation\r\n state.sharedData.repeatableContentBlocks.push(this);\r\n\r\n // Emit code\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const comments = `//${this.name}`;\r\n\r\n state.uniforms.push(\"morphTargetInfluences\");\r\n state.uniforms.push(\"morphTargetTextureInfo\");\r\n state.uniforms.push(\"morphTargetTextureIndices\");\r\n state.samplers.push(\"morphTargets\");\r\n\r\n state._emitFunctionFromInclude(\"morphTargetsVertexGlobalDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"morphTargetsVertexDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousMorphTargets\",\r\n });\r\n\r\n state.compilationString += `${this._declareOutput(positionOutput, state)} = ${position.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#ifdef NORMAL\\r\\n`;\r\n state.compilationString += `${this._declareOutput(normalOutput, state)} = ${normal.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(normalOutput, state)} = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n state.compilationString += `#ifdef TANGENT\\r\\n`;\r\n state.compilationString += `${this._declareOutput(tangentOutput, state)} = ${tangent.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(tangentOutput, state)} = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n state.compilationString += `#ifdef UV1\\r\\n`;\r\n state.compilationString += `${this._declareOutput(uvOutput, state)} = ${uv.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(uvOutput, state)} = vec2(0., 0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n // Repeatable content\r\n this._repeatableContentAnchor = state._repeatableContentAnchor;\r\n state.compilationString += this._repeatableContentAnchor;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MorphTargetsBlock\", MorphTargetsBlock);\r\n"]}
1
+ {"version":3,"file":"morphTargetsBlock.js","sourceRoot":"","sources":["../../../../../../../../lts/core/generated/Materials/Node/Blocks/Vertex/morphTargetsBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,qCAAqC,EAAE,MAAM,mDAAmD,CAAC;AAE1G,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAMhF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,kEAAkE,CAAC;AAC1E,OAAO,wEAAwE,CAAC;AAEhF;;GAEG;AACH;IAAuC,qCAAiB;IAGpD;;;OAGG;IACH,2BAAmB,IAAY;QAA/B,YACI,kBAAM,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,SAW/C;QATG,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC9E,KAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC5E,KAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC7E,KAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC9F,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACxE,KAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACrF,KAAI,CAAC,cAAc,CAAC,cAAc,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACnF,KAAI,CAAC,cAAc,CAAC,eAAe,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QACpF,KAAI,CAAC,cAAc,CAAC,UAAU,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;;IACnF,CAAC;IAED;;;OAGG;IACI,wCAAY,GAAnB;QACI,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAKD,sBAAW,uCAAQ;QAHnB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,qCAAM;QAHjB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,sCAAO;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,iCAAE;QAHb;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;;;OAAA;IAKD,sBAAW,6CAAc;QAHzB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,2CAAY;QAHvB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,4CAAa;QAHxB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAKD,sBAAW,uCAAQ;QAHnB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;;;OAAA;IAEM,sCAAU,GAAjB,UAAkB,KAA6B;QAC3C,KAAK,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;IACxD,CAAC;IAEM,yCAAa,GAApB,UAAqB,QAAsB;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC5B,IAAI,aAAa,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAtC,CAAsC,CAAC,CAAC;YAErG,IAAI,CAAC,aAAa,EAAE;gBAChB,aAAa,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC3C,aAAa,CAAC,cAAc,EAAE,CAAC;aAClC;YACD,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC1B,IAAI,WAAW,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAApC,CAAoC,CAAC,CAAC;YAEjG,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;aACxC;YACD,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC3B,IAAI,YAAY,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAArC,CAAqC,CAAC,CAAC;YAEnG,IAAI,CAAC,YAAY,EAAE;gBACf,YAAY,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;gBACzC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAC1C;YACD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;YACtB,IAAI,OAAO,GAAG,QAAQ,CAAC,wBAAwB,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAhC,CAAgC,CAAC,CAAC;YAEzF,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aAChC;YACD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACrC;IACL,CAAC;IAEM,0CAAc,GAArB,UAAsB,IAAkB,EAAE,YAA0B,EAAE,OAA4B;QAC9F,IAAW,IAAK,CAAC,kBAAkB,EAAE;YACjC,IAAM,kBAAkB,GAAU,IAAK,CAAC,kBAAkB,CAAC;YAE3D,IAAI,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,wBAAwB,KAAI,kBAAkB,CAAC,cAAc,KAAK,OAAO,CAAC,uBAAuB,CAAC,EAAE;gBACxH,OAAO,CAAC,qBAAqB,EAAE,CAAC;aACnC;SACJ;QAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YAC9B,OAAO;SACV;QAED,cAAc,CAAC,6BAA6B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,gCAAI,GAAX,UAAY,MAAc,EAAE,YAA0B,EAAE,IAAW;QAC/D,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,CAAC,EAAE;YAC/E,cAAc,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEvD,IAAI,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE;gBAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACzC;SACJ;IACL,CAAC;IAEM,oDAAwB,GAA/B,UAAgC,iBAAyC,EAAE,mBAA2C,EAAE,IAAkB,EAAE,OAA4B;QACpK,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,KAAK,GAAG,iBAAiB,CAAC;QAChC,IAAM,WAAW,GAAG,OAAO,CAAC,qBAA+B,CAAC;QAE5D,IAAM,OAAO,GAAU,IAAK,CAAC,kBAAkB,CAAC;QAChD,IAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAM,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,KAAI,WAAW,GAAG,CAAC,EAAE;YACtD,aAAa,IAAI,qBAAqB,CAAC;SAC1C;QAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;YAC9C,aAAa,IAAI,yBAAyB,CAAC;YAC3C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;gBACnC,aAAa,IAAI,+DAA+D,CAAC;gBACjF,aAAa,IAAI,UAAG,cAAc,CAAC,sBAAsB,4CAAkC,KAAK,2BAAiB,QAAQ,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;gBAC3L,aAAa,IAAI,sBAAsB,CAAC;aAC3C;iBAAM;gBACH,aAAa,IAAI,UAAG,cAAc,CAAC,sBAAsB,0BAAgB,KAAK,gBAAM,QAAQ,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;aACjK;YAED,IAAI,UAAU,EAAE;gBACZ,aAAa,IAAI,gCAAgC,CAAC;gBAClD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;oBACnC,aAAa,IAAI,UAAG,YAAY,CAAC,sBAAsB,4CAAkC,KAAK,2BAAiB,MAAM,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;oBACvL,aAAa,IAAI,sBAAsB,CAAC;iBAC3C;qBAAM;oBACH,aAAa,IAAI,UAAG,YAAY,CAAC,sBAAsB,wBAAc,KAAK,gBAAM,MAAM,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;iBAC3J;gBACD,aAAa,IAAI,YAAY,CAAC;aACjC;YAED,IAAI,MAAM,EAAE;gBACR,aAAa,IAAI,4BAA4B,CAAC;gBAC9C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;oBACnC,aAAa,IAAI,UAAG,QAAQ,CAAC,sBAAsB,4CAAkC,KAAK,8BAAoB,EAAE,CAAC,sBAAsB,uCAA6B,KAAK,WAAQ,CAAC;oBAClL,aAAa,IAAI,sBAAsB,CAAC;iBAC3C;qBAAM;oBACH,aAAa,IAAI,UAAG,QAAQ,CAAC,sBAAsB,wBAAc,KAAK,gBAAM,EAAE,CAAC,sBAAsB,0CAAgC,KAAK,WAAQ,CAAC;iBACtJ;gBACD,aAAa,IAAI,YAAY,CAAC;aACjC;YAED,IAAI,WAAW,EAAE;gBACb,aAAa,IAAI,iCAAiC,CAAC;gBACnD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,wBAAwB,EAAE;oBACnC,aAAa,IAAI,UAAG,aAAa,CAAC,sBAAsB,gDAAsC,KAAK,2BAAiB,OAAO,CAAC,sBAAsB,2CAAiC,KAAK,WAAQ,CAAC;iBACpM;qBAAM;oBACH,aAAa,IAAI,UAAG,aAAa,CAAC,sBAAsB,6BAAmB,KAAK,gBAAM,OAAO,CAAC,sBAAsB,2CAAiC,KAAK,WAAQ,CAAC;iBACtK;gBAED,IAAI,OAAO,CAAC,IAAI,KAAK,qCAAqC,CAAC,OAAO,EAAE;oBAChE,aAAa,IAAI,UAAG,aAAa,CAAC,sBAAsB,kBAAQ,OAAO,CAAC,sBAAsB,YAAS,CAAC;iBAC3G;qBAAM;oBACH,aAAa,IAAI,UAAG,aAAa,CAAC,sBAAsB,iBAAc,CAAC;iBAC1E;gBACD,aAAa,IAAI,YAAY,CAAC;aACjC;YAED,aAAa,IAAI,YAAY,CAAC;SACjC;QAED,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAExG,IAAI,WAAW,GAAG,CAAC,EAAE;YACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE;gBAC9C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;gBAEzD,IAAI,UAAU,EAAE;oBACZ,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;iBAC1D;gBAED,IAAI,WAAW,EAAE;oBACb,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;iBAC3D;gBAED,IAAI,MAAM,EAAE;oBACR,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;iBAC5D;aACJ;SACJ;IACL,CAAC;IAES,uCAAW,GAArB,UAAsB,KAA6B;QAC/C,iBAAM,WAAW,YAAC,KAAK,CAAC,CAAC;QAEzB,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9C,uBAAuB;QACvB,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,6CAA6C;QAC7C,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,YAAY;QACZ,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAM,QAAQ,GAAG,YAAK,IAAI,CAAC,IAAI,CAAE,CAAC;QAElC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEpC,KAAK,CAAC,wBAAwB,CAAC,qCAAqC,EAAE,QAAQ,CAAC,CAAC;QAChF,KAAK,CAAC,wBAAwB,CAAC,+BAA+B,EAAE,QAAQ,EAAE;YACtE,SAAS,EAAE,6BAA6B;SAC3C,CAAC,CAAC;QAEH,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,gBAAM,QAAQ,CAAC,sBAAsB,UAAO,CAAC;QACrH,KAAK,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;QAC/C,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,gBAAM,MAAM,CAAC,sBAAsB,UAAO,CAAC;QACjH,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,6BAA0B,CAAC;QACjG,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QACxC,KAAK,CAAC,iBAAiB,IAAI,oBAAoB,CAAC;QAChD,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,gBAAM,OAAO,CAAC,sBAAsB,UAAO,CAAC;QACnH,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC,iCAA8B,CAAC;QACtG,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QACxC,KAAK,CAAC,iBAAiB,IAAI,gBAAgB,CAAC;QAC5C,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAM,EAAE,CAAC,sBAAsB,UAAO,CAAC;QACzG,KAAK,CAAC,iBAAiB,IAAI,WAAW,CAAC;QACvC,KAAK,CAAC,iBAAiB,IAAI,UAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,yBAAsB,CAAC;QACzF,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC;QAExC,qBAAqB;QACrB,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,wBAAwB,CAAC;QAC/D,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,CAAC;QAEzD,OAAO,IAAI,CAAC;IAChB,CAAC;IACL,wBAAC;AAAD,CAAC,AAjTD,CAAuC,iBAAiB,GAiTvD;;AAED,aAAa,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import { NodeMaterialBlock } from \"../../nodeMaterialBlock\";\r\nimport { NodeMaterialBlockConnectionPointTypes } from \"../../Enums/nodeMaterialBlockConnectionPointTypes\";\r\nimport type { NodeMaterialBuildState } from \"../../nodeMaterialBuildState\";\r\nimport { NodeMaterialBlockTargets } from \"../../Enums/nodeMaterialBlockTargets\";\r\nimport type { NodeMaterialConnectionPoint } from \"../../nodeMaterialBlockConnectionPoint\";\r\nimport type { AbstractMesh } from \"../../../../Meshes/abstractMesh\";\r\nimport type { NodeMaterial, NodeMaterialDefines } from \"../../nodeMaterial\";\r\nimport type { Effect } from \"../../../effect\";\r\nimport type { Mesh } from \"../../../../Meshes/mesh\";\r\nimport { MaterialHelper } from \"../../../materialHelper\";\r\nimport { VertexBuffer } from \"../../../../Buffers/buffer\";\r\nimport { InputBlock } from \"../Input/inputBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\nimport \"../../../../Shaders/ShadersInclude/morphTargetsVertexDeclaration\";\r\nimport \"../../../../Shaders/ShadersInclude/morphTargetsVertexGlobalDeclaration\";\r\n\r\n/**\r\n * Block used to add morph targets support to vertex shader\r\n */\r\nexport class MorphTargetsBlock extends NodeMaterialBlock {\r\n private _repeatableContentAnchor: string;\r\n\r\n /**\r\n * Create a new MorphTargetsBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name, NodeMaterialBlockTargets.Vertex);\r\n\r\n this.registerInput(\"position\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"normal\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"tangent\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.tangent.acceptedConnectionPointTypes.push(NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerInput(\"uv\", NodeMaterialBlockConnectionPointTypes.Vector2);\r\n this.registerOutput(\"positionOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"normalOutput\", NodeMaterialBlockConnectionPointTypes.Vector3);\r\n this.registerOutput(\"tangentOutput\", NodeMaterialBlockConnectionPointTypes.Vector4);\r\n this.registerOutput(\"uvOutput\", NodeMaterialBlockConnectionPointTypes.Vector2);\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 \"MorphTargetsBlock\";\r\n }\r\n\r\n /**\r\n * Gets the position input component\r\n */\r\n public get position(): NodeMaterialConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal input component\r\n */\r\n public get normal(): NodeMaterialConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get tangent(): NodeMaterialConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the tangent input component\r\n */\r\n public get uv(): NodeMaterialConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the position output component\r\n */\r\n public get positionOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Gets the normal output component\r\n */\r\n public get normalOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[1];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get tangentOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[2];\r\n }\r\n\r\n /**\r\n * Gets the tangent output component\r\n */\r\n public get uvOutput(): NodeMaterialConnectionPoint {\r\n return this._outputs[3];\r\n }\r\n\r\n public initialize(state: NodeMaterialBuildState) {\r\n state._excludeVariableName(\"morphTargetInfluences\");\r\n }\r\n\r\n public autoConfigure(material: NodeMaterial) {\r\n if (!this.position.isConnected) {\r\n let positionInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"position\");\r\n\r\n if (!positionInput) {\r\n positionInput = new InputBlock(\"position\");\r\n positionInput.setAsAttribute();\r\n }\r\n positionInput.output.connectTo(this.position);\r\n }\r\n if (!this.normal.isConnected) {\r\n let normalInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"normal\");\r\n\r\n if (!normalInput) {\r\n normalInput = new InputBlock(\"normal\");\r\n normalInput.setAsAttribute(\"normal\");\r\n }\r\n normalInput.output.connectTo(this.normal);\r\n }\r\n if (!this.tangent.isConnected) {\r\n let tangentInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"tangent\");\r\n\r\n if (!tangentInput) {\r\n tangentInput = new InputBlock(\"tangent\");\r\n tangentInput.setAsAttribute(\"tangent\");\r\n }\r\n tangentInput.output.connectTo(this.tangent);\r\n }\r\n if (!this.uv.isConnected) {\r\n let uvInput = material.getInputBlockByPredicate((b) => b.isAttribute && b.name === \"uv\");\r\n\r\n if (!uvInput) {\r\n uvInput = new InputBlock(\"uv\");\r\n uvInput.setAsAttribute(\"uv\");\r\n }\r\n uvInput.output.connectTo(this.uv);\r\n }\r\n }\r\n\r\n public prepareDefines(mesh: AbstractMesh, nodeMaterial: NodeMaterial, defines: NodeMaterialDefines) {\r\n if ((<Mesh>mesh).morphTargetManager) {\r\n const morphTargetManager = (<Mesh>mesh).morphTargetManager;\r\n\r\n if (morphTargetManager?.isUsingTextureForTargets && morphTargetManager.numInfluencers !== defines[\"NUM_MORPH_INFLUENCERS\"]) {\r\n defines.markAsAttributesDirty();\r\n }\r\n }\r\n\r\n if (!defines._areAttributesDirty) {\r\n return;\r\n }\r\n\r\n MaterialHelper.PrepareDefinesForMorphTargets(mesh, defines);\r\n }\r\n\r\n public bind(effect: Effect, nodeMaterial: NodeMaterial, mesh?: Mesh) {\r\n if (mesh && mesh.morphTargetManager && mesh.morphTargetManager.numInfluencers > 0) {\r\n MaterialHelper.BindMorphTargetParameters(mesh, effect);\r\n\r\n if (mesh.morphTargetManager.isUsingTextureForTargets) {\r\n mesh.morphTargetManager._bind(effect);\r\n }\r\n }\r\n }\r\n\r\n public replaceRepeatableContent(vertexShaderState: NodeMaterialBuildState, fragmentShaderState: NodeMaterialBuildState, mesh: AbstractMesh, defines: NodeMaterialDefines) {\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const state = vertexShaderState;\r\n const repeatCount = defines.NUM_MORPH_INFLUENCERS as number;\r\n\r\n const manager = (<Mesh>mesh).morphTargetManager;\r\n const hasNormals = manager && manager.supportsNormals && defines[\"NORMAL\"];\r\n const hasTangents = manager && manager.supportsTangents && defines[\"TANGENT\"];\r\n const hasUVs = manager && manager.supportsUVs && defines[\"UV1\"];\r\n\r\n let injectionCode = \"\";\r\n\r\n if (manager?.isUsingTextureForTargets && repeatCount > 0) {\r\n injectionCode += `float vertexID;\\r\\n`;\r\n }\r\n\r\n for (let index = 0; index < repeatCount; index++) {\r\n injectionCode += `#ifdef MORPHTARGETS\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `vertexID = float(gl_VertexID) * morphTargetTextureInfo.x;\\r\\n`;\r\n injectionCode += `${positionOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID) - ${position.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n injectionCode += `vertexID += 1.0;\\r\\n`;\r\n } else {\r\n injectionCode += `${positionOutput.associatedVariableName} += (position${index} - ${position.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n\r\n if (hasNormals) {\r\n injectionCode += `#ifdef MORPHTARGETS_NORMAL\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `${normalOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID) - ${normal.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n injectionCode += `vertexID += 1.0;\\r\\n`;\r\n } else {\r\n injectionCode += `${normalOutput.associatedVariableName} += (normal${index} - ${normal.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n if (hasUVs) {\r\n injectionCode += `#ifdef MORPHTARGETS_UV\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `${uvOutput.associatedVariableName} += (readVector3FromRawSampler(${index}, vertexID).xy - ${uv.associatedVariableName}) * morphTargetInfluences[${index}];\\r\\n`;\r\n injectionCode += `vertexID += 1.0;\\r\\n`;\r\n } else {\r\n injectionCode += `${uvOutput.associatedVariableName}.xy += (uv_${index} - ${uv.associatedVariableName}.xy) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n if (hasTangents) {\r\n injectionCode += `#ifdef MORPHTARGETS_TANGENT\\r\\n`;\r\n if (manager?.isUsingTextureForTargets) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (readVector3FromRawSampler(${index}, vertexID) - ${tangent.associatedVariableName}.xyz) * morphTargetInfluences[${index}];\\r\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.xyz += (tangent${index} - ${tangent.associatedVariableName}.xyz) * morphTargetInfluences[${index}];\\r\\n`;\r\n }\r\n\r\n if (tangent.type === NodeMaterialBlockConnectionPointTypes.Vector4) {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = ${tangent.associatedVariableName}.w;\\r\\n`;\r\n } else {\r\n injectionCode += `${tangentOutput.associatedVariableName}.w = 1.;\\r\\n`;\r\n }\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n injectionCode += `#endif\\r\\n`;\r\n }\r\n\r\n state.compilationString = state.compilationString.replace(this._repeatableContentAnchor, injectionCode);\r\n\r\n if (repeatCount > 0) {\r\n for (let index = 0; index < repeatCount; index++) {\r\n state.attributes.push(VertexBuffer.PositionKind + index);\r\n\r\n if (hasNormals) {\r\n state.attributes.push(VertexBuffer.NormalKind + index);\r\n }\r\n\r\n if (hasTangents) {\r\n state.attributes.push(VertexBuffer.TangentKind + index);\r\n }\r\n\r\n if (hasUVs) {\r\n state.attributes.push(VertexBuffer.UVKind + \"_\" + index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected _buildBlock(state: NodeMaterialBuildState) {\r\n super._buildBlock(state);\r\n\r\n // Register for defines\r\n state.sharedData.blocksWithDefines.push(this);\r\n\r\n // Register for binding\r\n state.sharedData.bindableBlocks.push(this);\r\n\r\n // Register for repeatable content generation\r\n state.sharedData.repeatableContentBlocks.push(this);\r\n\r\n // Emit code\r\n const position = this.position;\r\n const normal = this.normal;\r\n const tangent = this.tangent;\r\n const uv = this.uv;\r\n const positionOutput = this.positionOutput;\r\n const normalOutput = this.normalOutput;\r\n const tangentOutput = this.tangentOutput;\r\n const uvOutput = this.uvOutput;\r\n const comments = `//${this.name}`;\r\n\r\n state.uniforms.push(\"morphTargetInfluences\");\r\n state.uniforms.push(\"morphTargetTextureInfo\");\r\n state.uniforms.push(\"morphTargetTextureIndices\");\r\n state.samplers.push(\"morphTargets\");\r\n\r\n state._emitFunctionFromInclude(\"morphTargetsVertexGlobalDeclaration\", comments);\r\n state._emitFunctionFromInclude(\"morphTargetsVertexDeclaration\", comments, {\r\n repeatKey: \"maxSimultaneousMorphTargets\",\r\n });\r\n\r\n state.compilationString += `${this._declareOutput(positionOutput, state)} = ${position.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#ifdef NORMAL\\r\\n`;\r\n state.compilationString += `${this._declareOutput(normalOutput, state)} = ${normal.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(normalOutput, state)} = vec3(0., 0., 0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n state.compilationString += `#ifdef TANGENT\\r\\n`;\r\n state.compilationString += `${this._declareOutput(tangentOutput, state)} = ${tangent.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(tangentOutput, state)} = vec4(0., 0., 0., 0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n state.compilationString += `#ifdef UV1\\r\\n`;\r\n state.compilationString += `${this._declareOutput(uvOutput, state)} = ${uv.associatedVariableName};\\r\\n`;\r\n state.compilationString += `#else\\r\\n`;\r\n state.compilationString += `${this._declareOutput(uvOutput, state)} = vec2(0., 0.);\\r\\n`;\r\n state.compilationString += `#endif\\r\\n`;\r\n\r\n // Repeatable content\r\n this._repeatableContentAnchor = state._repeatableContentAnchor;\r\n state.compilationString += this._repeatableContentAnchor;\r\n\r\n return this;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.MorphTargetsBlock\", MorphTargetsBlock);\r\n"]}
@@ -418,6 +418,9 @@ var SSAO2RenderingPipeline = /** @class */ (function (_super) {
418
418
  effect.setTexture("randomSampler", _this._randomTexture);
419
419
  };
420
420
  this._ssaoPostProcess.samples = this.textureSamples;
421
+ if (!this._forceGeometryBuffer) {
422
+ this._ssaoPostProcess._prePassEffectConfiguration = new SSAO2Configuration();
423
+ }
421
424
  };
422
425
  SSAO2RenderingPipeline.prototype._createSSAOCombinePostProcess = function (ratio, textureType) {
423
426
  var _this = this;
@@ -428,9 +431,6 @@ var SSAO2RenderingPipeline = /** @class */ (function (_super) {
428
431
  effect.setTextureFromPostProcessOutput("originalColor", _this._originalColorPostProcess);
429
432
  };
430
433
  this._ssaoCombinePostProcess.samples = this.textureSamples;
431
- if (!this._forceGeometryBuffer) {
432
- this._ssaoCombinePostProcess._prePassEffectConfiguration = new SSAO2Configuration();
433
- }
434
434
  };
435
435
  SSAO2RenderingPipeline.prototype._createRandomTexture = function () {
436
436
  var size = 128;
@@ -1 +1 @@
1
- {"version":3,"file":"ssao2RenderingPipeline.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { serialize, SerializationHelper } from \"../../../Misc/decorators\";\r\nimport { Vector3, TmpVectors } from \"../../../Maths/math.vector\";\r\nimport { Camera } from \"../../../Cameras/camera\";\r\nimport type { Effect } from \"../../../Materials/effect\";\r\nimport { Texture } from \"../../../Materials/Textures/texture\";\r\nimport { DynamicTexture } from \"../../../Materials/Textures/dynamicTexture\";\r\nimport { PostProcess } from \"../../../PostProcesses/postProcess\";\r\nimport { PostProcessRenderPipeline } from \"../../../PostProcesses/RenderPipeline/postProcessRenderPipeline\";\r\nimport { PostProcessRenderEffect } from \"../../../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { PassPostProcess } from \"../../../PostProcesses/passPostProcess\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { SSAO2Configuration } from \"../../../Rendering/ssao2Configuration\";\r\nimport type { PrePassRenderer } from \"../../../Rendering/prePassRenderer\";\r\nimport type { GeometryBufferRenderer } from \"../../../Rendering/geometryBufferRenderer\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport type { Nullable } from \"../../../types\";\r\n\r\nimport \"../../../PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent\";\r\n\r\nimport \"../../../Shaders/ssao2.fragment\";\r\nimport \"../../../Shaders/ssaoCombine.fragment\";\r\n\r\n/**\r\n * Render pipeline to produce ssao effect\r\n */\r\nexport class SSAO2RenderingPipeline extends PostProcessRenderPipeline {\r\n // Members\r\n\r\n /**\r\n * @ignore\r\n * The PassPostProcess id in the pipeline that contains the original scene color\r\n */\r\n public SSAOOriginalSceneColorEffect: string = \"SSAOOriginalSceneColorEffect\";\r\n /**\r\n * @ignore\r\n * The SSAO PostProcess id in the pipeline\r\n */\r\n public SSAORenderEffect: string = \"SSAORenderEffect\";\r\n /**\r\n * @ignore\r\n * The horizontal blur PostProcess id in the pipeline\r\n */\r\n public SSAOBlurHRenderEffect: string = \"SSAOBlurHRenderEffect\";\r\n /**\r\n * @ignore\r\n * The vertical blur PostProcess id in the pipeline\r\n */\r\n public SSAOBlurVRenderEffect: string = \"SSAOBlurVRenderEffect\";\r\n /**\r\n * @ignore\r\n * The PostProcess id in the pipeline that combines the SSAO-Blur output with the original scene color (SSAOOriginalSceneColorEffect)\r\n */\r\n public SSAOCombineRenderEffect: string = \"SSAOCombineRenderEffect\";\r\n\r\n /**\r\n * The output strength of the SSAO post-process. Default value is 1.0.\r\n */\r\n @serialize()\r\n public totalStrength: number = 1.0;\r\n\r\n /**\r\n * Maximum depth value to still render AO. A smooth falloff makes the dimming more natural, so there will be no abrupt shading change.\r\n */\r\n @serialize()\r\n public maxZ: number = 100.0;\r\n\r\n /**\r\n * In order to save performances, SSAO radius is clamped on close geometry. This ratio changes by how much\r\n */\r\n @serialize()\r\n public minZAspect: number = 0.2;\r\n\r\n @serialize(\"samples\")\r\n private _samples: number = 8;\r\n /**\r\n * Number of samples used for the SSAO calculations. Default value is 8\r\n */\r\n public set samples(n: number) {\r\n this._samples = n;\r\n this._ssaoPostProcess.updateEffect(this._getDefinesForSSAO());\r\n this._sampleSphere = this._generateHemisphere();\r\n }\r\n public get samples(): number {\r\n return this._samples;\r\n }\r\n\r\n @serialize(\"textureSamples\")\r\n private _textureSamples: number = 1;\r\n /**\r\n * Number of samples to use for antialiasing\r\n */\r\n public set textureSamples(n: number) {\r\n this._textureSamples = n;\r\n\r\n if (this._prePassRenderer) {\r\n this._prePassRenderer.samples = n;\r\n } else {\r\n this._originalColorPostProcess.samples = n;\r\n }\r\n }\r\n public get textureSamples(): number {\r\n return this._textureSamples;\r\n }\r\n\r\n /**\r\n * Force rendering the geometry through geometry buffer\r\n */\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n return this._scene.prePassRenderer;\r\n }\r\n /**\r\n * Ratio object used for SSAO ratio and blur ratio\r\n */\r\n @serialize()\r\n private _ratio: any;\r\n\r\n /**\r\n * Dynamically generated sphere sampler.\r\n */\r\n private _sampleSphere: number[];\r\n\r\n /**\r\n * Blur filter offsets\r\n */\r\n private _samplerOffsets: number[];\r\n\r\n @serialize(\"expensiveBlur\")\r\n private _expensiveBlur: boolean = true;\r\n /**\r\n * If bilateral blur should be used\r\n */\r\n public set expensiveBlur(b: boolean) {\r\n this._blurHPostProcess.updateEffect(\"#define BILATERAL_BLUR\\n#define BILATERAL_BLUR_H\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (b ? \"1\" : \"0\") + \"\\n\", null, [\r\n \"textureSampler\",\r\n \"depthSampler\",\r\n ]);\r\n this._blurVPostProcess.updateEffect(\"#define BILATERAL_BLUR\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (b ? \"1\" : \"0\") + \"\\n\", null, [\"textureSampler\", \"depthSampler\"]);\r\n this._expensiveBlur = b;\r\n }\r\n\r\n public get expensiveBlur(): boolean {\r\n return this._expensiveBlur;\r\n }\r\n\r\n /**\r\n * The radius around the analyzed pixel used by the SSAO post-process. Default value is 2.0\r\n */\r\n @serialize()\r\n public radius: number = 2.0;\r\n\r\n /**\r\n * The base color of the SSAO post-process\r\n * The final result is \"base + ssao\" between [0, 1]\r\n */\r\n @serialize()\r\n public base: number = 0;\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n return engine._features.supportSSAO2;\r\n }\r\n\r\n private _scene: Scene;\r\n private _randomTexture: DynamicTexture;\r\n private _originalColorPostProcess: PassPostProcess;\r\n private _ssaoPostProcess: PostProcess;\r\n private _blurHPostProcess: PostProcess;\r\n private _blurVPostProcess: PostProcess;\r\n private _ssaoCombinePostProcess: PostProcess;\r\n\r\n /**\r\n * Gets active scene\r\n */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * @constructor\r\n * @param name The rendering pipeline name\r\n * @param scene The scene linked to this pipeline\r\n * @param ratio The size of the postprocesses. Can be a number shared between passes or an object for more precision: { ssaoRatio: 0.5, blurRatio: 1.0 }\r\n * @param cameras The array of cameras that the rendering pipeline will be attached to\r\n * @param forceGeometryBuffer Set to true if you want to use the legacy geometry buffer renderer\r\n * @param textureType The texture type used by the different post processes created by SSAO (default: Constants.TEXTURETYPE_UNSIGNED_INT)\r\n */\r\n constructor(name: string, scene: Scene, ratio: any, cameras?: Camera[], forceGeometryBuffer = false, textureType = Constants.TEXTURETYPE_UNSIGNED_INT) {\r\n super(scene.getEngine(), name);\r\n\r\n this._scene = scene;\r\n this._ratio = ratio;\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n if (!this.isSupported) {\r\n Logger.Error(\"The current engine does not support SSAO 2.\");\r\n return;\r\n }\r\n\r\n const ssaoRatio = this._ratio.ssaoRatio || ratio;\r\n const blurRatio = this._ratio.blurRatio || ratio;\r\n\r\n // Set up assets\r\n if (this._forceGeometryBuffer) {\r\n scene.enableGeometryBufferRenderer();\r\n } else {\r\n scene.enablePrePassRenderer();\r\n }\r\n\r\n this._createRandomTexture();\r\n\r\n this._originalColorPostProcess = new PassPostProcess(\"SSAOOriginalSceneColor\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), undefined, textureType);\r\n this._originalColorPostProcess.samples = this.textureSamples;\r\n this._createSSAOPostProcess(1.0, textureType);\r\n this._createBlurPostProcess(ssaoRatio, blurRatio, textureType);\r\n this._createSSAOCombinePostProcess(blurRatio, textureType);\r\n\r\n // Set up pipeline\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOOriginalSceneColorEffect,\r\n () => {\r\n return this._originalColorPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAORenderEffect,\r\n () => {\r\n return this._ssaoPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOBlurHRenderEffect,\r\n () => {\r\n return this._blurHPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOBlurVRenderEffect,\r\n () => {\r\n return this._blurVPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOCombineRenderEffect,\r\n () => {\r\n return this._ssaoCombinePostProcess;\r\n },\r\n true\r\n )\r\n );\r\n\r\n // Finish\r\n scene.postProcessRenderPipelineManager.addPipeline(this);\r\n if (cameras) {\r\n scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(name, cameras);\r\n }\r\n }\r\n\r\n // Public Methods\r\n\r\n /**\r\n * Get the class name\r\n * @returns \"SSAO2RenderingPipeline\"\r\n */\r\n public getClassName(): string {\r\n return \"SSAO2RenderingPipeline\";\r\n }\r\n\r\n /**\r\n * Removes the internal pipeline assets and detaches the pipeline from the scene cameras\r\n * @param disableGeometryBufferRenderer\r\n */\r\n public dispose(disableGeometryBufferRenderer: boolean = false): void {\r\n for (let i = 0; i < this._scene.cameras.length; i++) {\r\n const camera = this._scene.cameras[i];\r\n\r\n this._originalColorPostProcess.dispose(camera);\r\n this._ssaoPostProcess.dispose(camera);\r\n this._blurHPostProcess.dispose(camera);\r\n this._blurVPostProcess.dispose(camera);\r\n this._ssaoCombinePostProcess.dispose(camera);\r\n }\r\n\r\n this._randomTexture.dispose();\r\n\r\n if (disableGeometryBufferRenderer) {\r\n this._scene.disableGeometryBufferRenderer();\r\n }\r\n\r\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._scene.cameras);\r\n\r\n super.dispose();\r\n }\r\n\r\n // Private Methods\r\n private _createBlurPostProcess(ssaoRatio: number, blurRatio: number, textureType: number): void {\r\n this._samplerOffsets = [];\r\n const expensive = this.expensiveBlur;\r\n\r\n for (let i = -8; i < 8; i++) {\r\n this._samplerOffsets.push(i * 2 + 0.5);\r\n }\r\n\r\n this._blurHPostProcess = new PostProcess(\r\n \"BlurH\",\r\n \"ssao2\",\r\n [\"outSize\", \"samplerOffsets\", \"near\", \"far\", \"radius\"],\r\n [\"depthSampler\"],\r\n ssaoRatio,\r\n null,\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n \"#define BILATERAL_BLUR\\n#define BILATERAL_BLUR_H\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (expensive ? \"1\" : \"0\") + \"\\n\",\r\n textureType\r\n );\r\n this._blurHPostProcess.onApply = (effect: Effect) => {\r\n if (!this._scene.activeCamera) {\r\n return;\r\n }\r\n\r\n effect.setFloat(\"outSize\", this._ssaoCombinePostProcess.width > 0 ? this._ssaoCombinePostProcess.width : this._originalColorPostProcess.width);\r\n effect.setFloat(\"near\", this._scene.activeCamera.minZ);\r\n effect.setFloat(\"far\", this._scene.activeCamera.maxZ);\r\n effect.setFloat(\"radius\", this.radius);\r\n if (this._geometryBufferRenderer) {\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[0]);\r\n } else if (this._prePassRenderer) {\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n effect.setArray(\"samplerOffsets\", this._samplerOffsets);\r\n };\r\n\r\n this._blurVPostProcess = new PostProcess(\r\n \"BlurV\",\r\n \"ssao2\",\r\n [\"outSize\", \"samplerOffsets\", \"near\", \"far\", \"radius\"],\r\n [\"depthSampler\"],\r\n blurRatio,\r\n null,\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n \"#define BILATERAL_BLUR\\n#define BILATERAL_BLUR_V\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (expensive ? \"1\" : \"0\") + \"\\n\",\r\n textureType\r\n );\r\n this._blurVPostProcess.onApply = (effect: Effect) => {\r\n if (!this._scene.activeCamera) {\r\n return;\r\n }\r\n\r\n effect.setFloat(\"outSize\", this._ssaoCombinePostProcess.height > 0 ? this._ssaoCombinePostProcess.height : this._originalColorPostProcess.height);\r\n effect.setFloat(\"near\", this._scene.activeCamera.minZ);\r\n effect.setFloat(\"far\", this._scene.activeCamera.maxZ);\r\n effect.setFloat(\"radius\", this.radius);\r\n if (this._geometryBufferRenderer) {\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[0]);\r\n } else if (this._prePassRenderer) {\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n effect.setArray(\"samplerOffsets\", this._samplerOffsets);\r\n };\r\n\r\n this._blurHPostProcess.samples = this.textureSamples;\r\n this._blurVPostProcess.samples = this.textureSamples;\r\n }\r\n\r\n /** @hidden */\r\n public _rebuild() {\r\n super._rebuild();\r\n }\r\n\r\n private _bits = new Uint32Array(1);\r\n\r\n //Van der Corput radical inverse\r\n private _radicalInverse_VdC(i: number) {\r\n this._bits[0] = i;\r\n this._bits[0] = ((this._bits[0] << 16) | (this._bits[0] >> 16)) >>> 0;\r\n this._bits[0] = ((this._bits[0] & 0x55555555) << 1) | (((this._bits[0] & 0xaaaaaaaa) >>> 1) >>> 0);\r\n this._bits[0] = ((this._bits[0] & 0x33333333) << 2) | (((this._bits[0] & 0xcccccccc) >>> 2) >>> 0);\r\n this._bits[0] = ((this._bits[0] & 0x0f0f0f0f) << 4) | (((this._bits[0] & 0xf0f0f0f0) >>> 4) >>> 0);\r\n this._bits[0] = ((this._bits[0] & 0x00ff00ff) << 8) | (((this._bits[0] & 0xff00ff00) >>> 8) >>> 0);\r\n return this._bits[0] * 2.3283064365386963e-10; // / 0x100000000 or / 4294967296\r\n }\r\n\r\n private _hammersley(i: number, n: number) {\r\n return [i / n, this._radicalInverse_VdC(i)];\r\n }\r\n\r\n private _hemisphereSample_uniform(u: number, v: number): Vector3 {\r\n const phi = v * 2.0 * Math.PI;\r\n // rejecting samples that are close to tangent plane to avoid z-fighting artifacts\r\n const cosTheta = 1.0 - (u * 0.85 + 0.15);\r\n const sinTheta = Math.sqrt(1.0 - cosTheta * cosTheta);\r\n return new Vector3(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta);\r\n }\r\n\r\n private _generateHemisphere(): number[] {\r\n const numSamples = this.samples;\r\n const result = [];\r\n let vector;\r\n\r\n let i = 0;\r\n while (i < numSamples) {\r\n if (numSamples < 16) {\r\n vector = this._hemisphereSample_uniform(Math.random(), Math.random());\r\n } else {\r\n const rand = this._hammersley(i, numSamples);\r\n vector = this._hemisphereSample_uniform(rand[0], rand[1]);\r\n }\r\n\r\n result.push(vector.x, vector.y, vector.z);\r\n i++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private _getDefinesForSSAO() {\r\n const defines = \"#define SAMPLES \" + this.samples + \"\\n#define SSAO\";\r\n\r\n return defines;\r\n }\r\n\r\n private static readonly ORTHO_DEPTH_PROJECTION = [1, 0, 0, 0, 1, 0, 0, 0, 1];\r\n\r\n private static readonly PERSPECTIVE_DEPTH_PROJECTION = [0, 0, 0, 0, 0, 0, 1, 1, 1];\r\n\r\n private _createSSAOPostProcess(ratio: number, textureType: number): void {\r\n this._sampleSphere = this._generateHemisphere();\r\n\r\n const defines = this._getDefinesForSSAO();\r\n const samplers = [\"randomSampler\", \"depthSampler\", \"normalSampler\"];\r\n\r\n this._ssaoPostProcess = new PostProcess(\r\n \"ssao2\",\r\n \"ssao2\",\r\n [\r\n \"sampleSphere\",\r\n \"samplesFactor\",\r\n \"randTextureTiles\",\r\n \"totalStrength\",\r\n \"radius\",\r\n \"base\",\r\n \"range\",\r\n \"projection\",\r\n \"near\",\r\n \"far\",\r\n \"texelSize\",\r\n \"xViewport\",\r\n \"yViewport\",\r\n \"maxZ\",\r\n \"minZAspect\",\r\n \"depthProjection\",\r\n ],\r\n samplers,\r\n ratio,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n defines,\r\n textureType\r\n );\r\n\r\n this._ssaoPostProcess.onApply = (effect: Effect) => {\r\n if (!this._scene.activeCamera) {\r\n return;\r\n }\r\n\r\n effect.setArray3(\"sampleSphere\", this._sampleSphere);\r\n effect.setFloat(\"randTextureTiles\", 32.0);\r\n effect.setFloat(\"samplesFactor\", 1 / this.samples);\r\n effect.setFloat(\"totalStrength\", this.totalStrength);\r\n effect.setFloat2(\"texelSize\", 1 / this._ssaoPostProcess.width, 1 / this._ssaoPostProcess.height);\r\n effect.setFloat(\"radius\", this.radius);\r\n effect.setFloat(\"maxZ\", this.maxZ);\r\n effect.setFloat(\"minZAspect\", this.minZAspect);\r\n effect.setFloat(\"base\", this.base);\r\n effect.setFloat(\"near\", this._scene.activeCamera.minZ);\r\n effect.setFloat(\"far\", this._scene.activeCamera.maxZ);\r\n if (this._scene.activeCamera.mode === Camera.PERSPECTIVE_CAMERA) {\r\n effect.setMatrix3x3(\"depthProjection\", SSAO2RenderingPipeline.PERSPECTIVE_DEPTH_PROJECTION);\r\n effect.setFloat(\"xViewport\", Math.tan(this._scene.activeCamera.fov / 2) * this._scene.getEngine().getAspectRatio(this._scene.activeCamera, true));\r\n effect.setFloat(\"yViewport\", Math.tan(this._scene.activeCamera.fov / 2));\r\n } else {\r\n const halfWidth = this._scene.getEngine().getRenderWidth() / 2.0;\r\n const halfHeight = this._scene.getEngine().getRenderHeight() / 2.0;\r\n const orthoLeft = this._scene.activeCamera.orthoLeft ?? -halfWidth;\r\n const orthoRight = this._scene.activeCamera.orthoRight ?? halfWidth;\r\n const orthoBottom = this._scene.activeCamera.orthoBottom ?? -halfHeight;\r\n const orthoTop = this._scene.activeCamera.orthoTop ?? halfHeight;\r\n effect.setMatrix3x3(\"depthProjection\", SSAO2RenderingPipeline.ORTHO_DEPTH_PROJECTION);\r\n effect.setFloat(\"xViewport\", (orthoRight - orthoLeft) * 0.5);\r\n effect.setFloat(\"yViewport\", (orthoTop - orthoBottom) * 0.5);\r\n }\r\n effect.setMatrix(\"projection\", this._scene.getProjectionMatrix());\r\n\r\n if (this._geometryBufferRenderer) {\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[0]);\r\n effect.setTexture(\"normalSampler\", this._geometryBufferRenderer.getGBuffer().textures[1]);\r\n } else if (this._prePassRenderer) {\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n effect.setTexture(\"normalSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_NORMAL_TEXTURE_TYPE)]);\r\n }\r\n effect.setTexture(\"randomSampler\", this._randomTexture);\r\n };\r\n this._ssaoPostProcess.samples = this.textureSamples;\r\n }\r\n\r\n private _createSSAOCombinePostProcess(ratio: number, textureType: number): void {\r\n this._ssaoCombinePostProcess = new PostProcess(\r\n \"ssaoCombine\",\r\n \"ssaoCombine\",\r\n [],\r\n [\"originalColor\", \"viewport\"],\r\n ratio,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n undefined,\r\n textureType\r\n );\r\n\r\n this._ssaoCombinePostProcess.onApply = (effect: Effect) => {\r\n const viewport = this._scene.activeCamera!.viewport;\r\n effect.setVector4(\"viewport\", TmpVectors.Vector4[0].copyFromFloats(viewport.x, viewport.y, viewport.width, viewport.height));\r\n effect.setTextureFromPostProcessOutput(\"originalColor\", this._originalColorPostProcess);\r\n };\r\n this._ssaoCombinePostProcess.samples = this.textureSamples;\r\n\r\n if (!this._forceGeometryBuffer) {\r\n this._ssaoCombinePostProcess._prePassEffectConfiguration = new SSAO2Configuration();\r\n }\r\n }\r\n\r\n private _createRandomTexture(): void {\r\n const size = 128;\r\n\r\n this._randomTexture = new DynamicTexture(\"SSAORandomTexture\", size, this._scene, false, Texture.TRILINEAR_SAMPLINGMODE);\r\n this._randomTexture.wrapU = Texture.WRAP_ADDRESSMODE;\r\n this._randomTexture.wrapV = Texture.WRAP_ADDRESSMODE;\r\n\r\n const context = this._randomTexture.getContext();\r\n\r\n const rand = (min: number, max: number) => {\r\n return Math.random() * (max - min) + min;\r\n };\r\n\r\n const randVector = Vector3.Zero();\r\n\r\n for (let x = 0; x < size; x++) {\r\n for (let y = 0; y < size; y++) {\r\n randVector.x = rand(0.0, 1.0);\r\n randVector.y = rand(0.0, 1.0);\r\n randVector.z = 0.0;\r\n\r\n randVector.normalize();\r\n\r\n randVector.scaleInPlace(255);\r\n randVector.x = Math.floor(randVector.x);\r\n randVector.y = Math.floor(randVector.y);\r\n\r\n context.fillStyle = \"rgb(\" + randVector.x + \", \" + randVector.y + \", \" + randVector.z + \")\";\r\n context.fillRect(x, y, 1, 1);\r\n }\r\n }\r\n\r\n this._randomTexture.update(false);\r\n }\r\n\r\n /**\r\n * Serialize the rendering pipeline (Used when exporting)\r\n * @returns the serialized object\r\n */\r\n public serialize(): any {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"SSAO2RenderingPipeline\";\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Parse the serialized pipeline\r\n * @param source Source pipeline.\r\n * @param scene The scene to load the pipeline to.\r\n * @param rootUrl The URL of the serialized pipeline.\r\n * @returns An instantiated pipeline from the serialized object.\r\n */\r\n public static Parse(source: any, scene: Scene, rootUrl: string): SSAO2RenderingPipeline {\r\n return SerializationHelper.Parse(() => new SSAO2RenderingPipeline(source._name, scene, source._ratio), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SSAO2RenderingPipeline\", SSAO2RenderingPipeline);\r\n"]}
1
+ {"version":3,"file":"ssao2RenderingPipeline.js","sourceRoot":"","sources":["../../../../../../../lts/core/generated/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { serialize, SerializationHelper } from \"../../../Misc/decorators\";\r\nimport { Vector3, TmpVectors } from \"../../../Maths/math.vector\";\r\nimport { Camera } from \"../../../Cameras/camera\";\r\nimport type { Effect } from \"../../../Materials/effect\";\r\nimport { Texture } from \"../../../Materials/Textures/texture\";\r\nimport { DynamicTexture } from \"../../../Materials/Textures/dynamicTexture\";\r\nimport { PostProcess } from \"../../../PostProcesses/postProcess\";\r\nimport { PostProcessRenderPipeline } from \"../../../PostProcesses/RenderPipeline/postProcessRenderPipeline\";\r\nimport { PostProcessRenderEffect } from \"../../../PostProcesses/RenderPipeline/postProcessRenderEffect\";\r\nimport { PassPostProcess } from \"../../../PostProcesses/passPostProcess\";\r\nimport type { Scene } from \"../../../scene\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { EngineStore } from \"../../../Engines/engineStore\";\r\nimport { SSAO2Configuration } from \"../../../Rendering/ssao2Configuration\";\r\nimport type { PrePassRenderer } from \"../../../Rendering/prePassRenderer\";\r\nimport type { GeometryBufferRenderer } from \"../../../Rendering/geometryBufferRenderer\";\r\nimport { Constants } from \"../../../Engines/constants\";\r\nimport type { Nullable } from \"../../../types\";\r\n\r\nimport \"../../../PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent\";\r\n\r\nimport \"../../../Shaders/ssao2.fragment\";\r\nimport \"../../../Shaders/ssaoCombine.fragment\";\r\n\r\n/**\r\n * Render pipeline to produce ssao effect\r\n */\r\nexport class SSAO2RenderingPipeline extends PostProcessRenderPipeline {\r\n // Members\r\n\r\n /**\r\n * @ignore\r\n * The PassPostProcess id in the pipeline that contains the original scene color\r\n */\r\n public SSAOOriginalSceneColorEffect: string = \"SSAOOriginalSceneColorEffect\";\r\n /**\r\n * @ignore\r\n * The SSAO PostProcess id in the pipeline\r\n */\r\n public SSAORenderEffect: string = \"SSAORenderEffect\";\r\n /**\r\n * @ignore\r\n * The horizontal blur PostProcess id in the pipeline\r\n */\r\n public SSAOBlurHRenderEffect: string = \"SSAOBlurHRenderEffect\";\r\n /**\r\n * @ignore\r\n * The vertical blur PostProcess id in the pipeline\r\n */\r\n public SSAOBlurVRenderEffect: string = \"SSAOBlurVRenderEffect\";\r\n /**\r\n * @ignore\r\n * The PostProcess id in the pipeline that combines the SSAO-Blur output with the original scene color (SSAOOriginalSceneColorEffect)\r\n */\r\n public SSAOCombineRenderEffect: string = \"SSAOCombineRenderEffect\";\r\n\r\n /**\r\n * The output strength of the SSAO post-process. Default value is 1.0.\r\n */\r\n @serialize()\r\n public totalStrength: number = 1.0;\r\n\r\n /**\r\n * Maximum depth value to still render AO. A smooth falloff makes the dimming more natural, so there will be no abrupt shading change.\r\n */\r\n @serialize()\r\n public maxZ: number = 100.0;\r\n\r\n /**\r\n * In order to save performances, SSAO radius is clamped on close geometry. This ratio changes by how much\r\n */\r\n @serialize()\r\n public minZAspect: number = 0.2;\r\n\r\n @serialize(\"samples\")\r\n private _samples: number = 8;\r\n /**\r\n * Number of samples used for the SSAO calculations. Default value is 8\r\n */\r\n public set samples(n: number) {\r\n this._samples = n;\r\n this._ssaoPostProcess.updateEffect(this._getDefinesForSSAO());\r\n this._sampleSphere = this._generateHemisphere();\r\n }\r\n public get samples(): number {\r\n return this._samples;\r\n }\r\n\r\n @serialize(\"textureSamples\")\r\n private _textureSamples: number = 1;\r\n /**\r\n * Number of samples to use for antialiasing\r\n */\r\n public set textureSamples(n: number) {\r\n this._textureSamples = n;\r\n\r\n if (this._prePassRenderer) {\r\n this._prePassRenderer.samples = n;\r\n } else {\r\n this._originalColorPostProcess.samples = n;\r\n }\r\n }\r\n public get textureSamples(): number {\r\n return this._textureSamples;\r\n }\r\n\r\n /**\r\n * Force rendering the geometry through geometry buffer\r\n */\r\n private _forceGeometryBuffer: boolean = false;\r\n private get _geometryBufferRenderer(): Nullable<GeometryBufferRenderer> {\r\n if (!this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n return this._scene.geometryBufferRenderer;\r\n }\r\n private get _prePassRenderer(): Nullable<PrePassRenderer> {\r\n if (this._forceGeometryBuffer) {\r\n return null;\r\n }\r\n return this._scene.prePassRenderer;\r\n }\r\n /**\r\n * Ratio object used for SSAO ratio and blur ratio\r\n */\r\n @serialize()\r\n private _ratio: any;\r\n\r\n /**\r\n * Dynamically generated sphere sampler.\r\n */\r\n private _sampleSphere: number[];\r\n\r\n /**\r\n * Blur filter offsets\r\n */\r\n private _samplerOffsets: number[];\r\n\r\n @serialize(\"expensiveBlur\")\r\n private _expensiveBlur: boolean = true;\r\n /**\r\n * If bilateral blur should be used\r\n */\r\n public set expensiveBlur(b: boolean) {\r\n this._blurHPostProcess.updateEffect(\"#define BILATERAL_BLUR\\n#define BILATERAL_BLUR_H\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (b ? \"1\" : \"0\") + \"\\n\", null, [\r\n \"textureSampler\",\r\n \"depthSampler\",\r\n ]);\r\n this._blurVPostProcess.updateEffect(\"#define BILATERAL_BLUR\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (b ? \"1\" : \"0\") + \"\\n\", null, [\"textureSampler\", \"depthSampler\"]);\r\n this._expensiveBlur = b;\r\n }\r\n\r\n public get expensiveBlur(): boolean {\r\n return this._expensiveBlur;\r\n }\r\n\r\n /**\r\n * The radius around the analyzed pixel used by the SSAO post-process. Default value is 2.0\r\n */\r\n @serialize()\r\n public radius: number = 2.0;\r\n\r\n /**\r\n * The base color of the SSAO post-process\r\n * The final result is \"base + ssao\" between [0, 1]\r\n */\r\n @serialize()\r\n public base: number = 0;\r\n\r\n /**\r\n * Support test.\r\n */\r\n public static get IsSupported(): boolean {\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (!engine) {\r\n return false;\r\n }\r\n return engine._features.supportSSAO2;\r\n }\r\n\r\n private _scene: Scene;\r\n private _randomTexture: DynamicTexture;\r\n private _originalColorPostProcess: PassPostProcess;\r\n private _ssaoPostProcess: PostProcess;\r\n private _blurHPostProcess: PostProcess;\r\n private _blurVPostProcess: PostProcess;\r\n private _ssaoCombinePostProcess: PostProcess;\r\n\r\n /**\r\n * Gets active scene\r\n */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /**\r\n * @constructor\r\n * @param name The rendering pipeline name\r\n * @param scene The scene linked to this pipeline\r\n * @param ratio The size of the postprocesses. Can be a number shared between passes or an object for more precision: { ssaoRatio: 0.5, blurRatio: 1.0 }\r\n * @param cameras The array of cameras that the rendering pipeline will be attached to\r\n * @param forceGeometryBuffer Set to true if you want to use the legacy geometry buffer renderer\r\n * @param textureType The texture type used by the different post processes created by SSAO (default: Constants.TEXTURETYPE_UNSIGNED_INT)\r\n */\r\n constructor(name: string, scene: Scene, ratio: any, cameras?: Camera[], forceGeometryBuffer = false, textureType = Constants.TEXTURETYPE_UNSIGNED_INT) {\r\n super(scene.getEngine(), name);\r\n\r\n this._scene = scene;\r\n this._ratio = ratio;\r\n this._forceGeometryBuffer = forceGeometryBuffer;\r\n\r\n if (!this.isSupported) {\r\n Logger.Error(\"The current engine does not support SSAO 2.\");\r\n return;\r\n }\r\n\r\n const ssaoRatio = this._ratio.ssaoRatio || ratio;\r\n const blurRatio = this._ratio.blurRatio || ratio;\r\n\r\n // Set up assets\r\n if (this._forceGeometryBuffer) {\r\n scene.enableGeometryBufferRenderer();\r\n } else {\r\n scene.enablePrePassRenderer();\r\n }\r\n\r\n this._createRandomTexture();\r\n\r\n this._originalColorPostProcess = new PassPostProcess(\"SSAOOriginalSceneColor\", 1.0, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), undefined, textureType);\r\n this._originalColorPostProcess.samples = this.textureSamples;\r\n this._createSSAOPostProcess(1.0, textureType);\r\n this._createBlurPostProcess(ssaoRatio, blurRatio, textureType);\r\n this._createSSAOCombinePostProcess(blurRatio, textureType);\r\n\r\n // Set up pipeline\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOOriginalSceneColorEffect,\r\n () => {\r\n return this._originalColorPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAORenderEffect,\r\n () => {\r\n return this._ssaoPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOBlurHRenderEffect,\r\n () => {\r\n return this._blurHPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOBlurVRenderEffect,\r\n () => {\r\n return this._blurVPostProcess;\r\n },\r\n true\r\n )\r\n );\r\n this.addEffect(\r\n new PostProcessRenderEffect(\r\n scene.getEngine(),\r\n this.SSAOCombineRenderEffect,\r\n () => {\r\n return this._ssaoCombinePostProcess;\r\n },\r\n true\r\n )\r\n );\r\n\r\n // Finish\r\n scene.postProcessRenderPipelineManager.addPipeline(this);\r\n if (cameras) {\r\n scene.postProcessRenderPipelineManager.attachCamerasToRenderPipeline(name, cameras);\r\n }\r\n }\r\n\r\n // Public Methods\r\n\r\n /**\r\n * Get the class name\r\n * @returns \"SSAO2RenderingPipeline\"\r\n */\r\n public getClassName(): string {\r\n return \"SSAO2RenderingPipeline\";\r\n }\r\n\r\n /**\r\n * Removes the internal pipeline assets and detaches the pipeline from the scene cameras\r\n * @param disableGeometryBufferRenderer\r\n */\r\n public dispose(disableGeometryBufferRenderer: boolean = false): void {\r\n for (let i = 0; i < this._scene.cameras.length; i++) {\r\n const camera = this._scene.cameras[i];\r\n\r\n this._originalColorPostProcess.dispose(camera);\r\n this._ssaoPostProcess.dispose(camera);\r\n this._blurHPostProcess.dispose(camera);\r\n this._blurVPostProcess.dispose(camera);\r\n this._ssaoCombinePostProcess.dispose(camera);\r\n }\r\n\r\n this._randomTexture.dispose();\r\n\r\n if (disableGeometryBufferRenderer) {\r\n this._scene.disableGeometryBufferRenderer();\r\n }\r\n\r\n this._scene.postProcessRenderPipelineManager.detachCamerasFromRenderPipeline(this._name, this._scene.cameras);\r\n\r\n super.dispose();\r\n }\r\n\r\n // Private Methods\r\n private _createBlurPostProcess(ssaoRatio: number, blurRatio: number, textureType: number): void {\r\n this._samplerOffsets = [];\r\n const expensive = this.expensiveBlur;\r\n\r\n for (let i = -8; i < 8; i++) {\r\n this._samplerOffsets.push(i * 2 + 0.5);\r\n }\r\n\r\n this._blurHPostProcess = new PostProcess(\r\n \"BlurH\",\r\n \"ssao2\",\r\n [\"outSize\", \"samplerOffsets\", \"near\", \"far\", \"radius\"],\r\n [\"depthSampler\"],\r\n ssaoRatio,\r\n null,\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n \"#define BILATERAL_BLUR\\n#define BILATERAL_BLUR_H\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (expensive ? \"1\" : \"0\") + \"\\n\",\r\n textureType\r\n );\r\n this._blurHPostProcess.onApply = (effect: Effect) => {\r\n if (!this._scene.activeCamera) {\r\n return;\r\n }\r\n\r\n effect.setFloat(\"outSize\", this._ssaoCombinePostProcess.width > 0 ? this._ssaoCombinePostProcess.width : this._originalColorPostProcess.width);\r\n effect.setFloat(\"near\", this._scene.activeCamera.minZ);\r\n effect.setFloat(\"far\", this._scene.activeCamera.maxZ);\r\n effect.setFloat(\"radius\", this.radius);\r\n if (this._geometryBufferRenderer) {\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[0]);\r\n } else if (this._prePassRenderer) {\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n effect.setArray(\"samplerOffsets\", this._samplerOffsets);\r\n };\r\n\r\n this._blurVPostProcess = new PostProcess(\r\n \"BlurV\",\r\n \"ssao2\",\r\n [\"outSize\", \"samplerOffsets\", \"near\", \"far\", \"radius\"],\r\n [\"depthSampler\"],\r\n blurRatio,\r\n null,\r\n Texture.TRILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n \"#define BILATERAL_BLUR\\n#define BILATERAL_BLUR_V\\n#define SAMPLES 16\\n#define EXPENSIVE \" + (expensive ? \"1\" : \"0\") + \"\\n\",\r\n textureType\r\n );\r\n this._blurVPostProcess.onApply = (effect: Effect) => {\r\n if (!this._scene.activeCamera) {\r\n return;\r\n }\r\n\r\n effect.setFloat(\"outSize\", this._ssaoCombinePostProcess.height > 0 ? this._ssaoCombinePostProcess.height : this._originalColorPostProcess.height);\r\n effect.setFloat(\"near\", this._scene.activeCamera.minZ);\r\n effect.setFloat(\"far\", this._scene.activeCamera.maxZ);\r\n effect.setFloat(\"radius\", this.radius);\r\n if (this._geometryBufferRenderer) {\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[0]);\r\n } else if (this._prePassRenderer) {\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n }\r\n effect.setArray(\"samplerOffsets\", this._samplerOffsets);\r\n };\r\n\r\n this._blurHPostProcess.samples = this.textureSamples;\r\n this._blurVPostProcess.samples = this.textureSamples;\r\n }\r\n\r\n /** @hidden */\r\n public _rebuild() {\r\n super._rebuild();\r\n }\r\n\r\n private _bits = new Uint32Array(1);\r\n\r\n //Van der Corput radical inverse\r\n private _radicalInverse_VdC(i: number) {\r\n this._bits[0] = i;\r\n this._bits[0] = ((this._bits[0] << 16) | (this._bits[0] >> 16)) >>> 0;\r\n this._bits[0] = ((this._bits[0] & 0x55555555) << 1) | (((this._bits[0] & 0xaaaaaaaa) >>> 1) >>> 0);\r\n this._bits[0] = ((this._bits[0] & 0x33333333) << 2) | (((this._bits[0] & 0xcccccccc) >>> 2) >>> 0);\r\n this._bits[0] = ((this._bits[0] & 0x0f0f0f0f) << 4) | (((this._bits[0] & 0xf0f0f0f0) >>> 4) >>> 0);\r\n this._bits[0] = ((this._bits[0] & 0x00ff00ff) << 8) | (((this._bits[0] & 0xff00ff00) >>> 8) >>> 0);\r\n return this._bits[0] * 2.3283064365386963e-10; // / 0x100000000 or / 4294967296\r\n }\r\n\r\n private _hammersley(i: number, n: number) {\r\n return [i / n, this._radicalInverse_VdC(i)];\r\n }\r\n\r\n private _hemisphereSample_uniform(u: number, v: number): Vector3 {\r\n const phi = v * 2.0 * Math.PI;\r\n // rejecting samples that are close to tangent plane to avoid z-fighting artifacts\r\n const cosTheta = 1.0 - (u * 0.85 + 0.15);\r\n const sinTheta = Math.sqrt(1.0 - cosTheta * cosTheta);\r\n return new Vector3(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta);\r\n }\r\n\r\n private _generateHemisphere(): number[] {\r\n const numSamples = this.samples;\r\n const result = [];\r\n let vector;\r\n\r\n let i = 0;\r\n while (i < numSamples) {\r\n if (numSamples < 16) {\r\n vector = this._hemisphereSample_uniform(Math.random(), Math.random());\r\n } else {\r\n const rand = this._hammersley(i, numSamples);\r\n vector = this._hemisphereSample_uniform(rand[0], rand[1]);\r\n }\r\n\r\n result.push(vector.x, vector.y, vector.z);\r\n i++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private _getDefinesForSSAO() {\r\n const defines = \"#define SAMPLES \" + this.samples + \"\\n#define SSAO\";\r\n\r\n return defines;\r\n }\r\n\r\n private static readonly ORTHO_DEPTH_PROJECTION = [1, 0, 0, 0, 1, 0, 0, 0, 1];\r\n\r\n private static readonly PERSPECTIVE_DEPTH_PROJECTION = [0, 0, 0, 0, 0, 0, 1, 1, 1];\r\n\r\n private _createSSAOPostProcess(ratio: number, textureType: number): void {\r\n this._sampleSphere = this._generateHemisphere();\r\n\r\n const defines = this._getDefinesForSSAO();\r\n const samplers = [\"randomSampler\", \"depthSampler\", \"normalSampler\"];\r\n\r\n this._ssaoPostProcess = new PostProcess(\r\n \"ssao2\",\r\n \"ssao2\",\r\n [\r\n \"sampleSphere\",\r\n \"samplesFactor\",\r\n \"randTextureTiles\",\r\n \"totalStrength\",\r\n \"radius\",\r\n \"base\",\r\n \"range\",\r\n \"projection\",\r\n \"near\",\r\n \"far\",\r\n \"texelSize\",\r\n \"xViewport\",\r\n \"yViewport\",\r\n \"maxZ\",\r\n \"minZAspect\",\r\n \"depthProjection\",\r\n ],\r\n samplers,\r\n ratio,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n defines,\r\n textureType\r\n );\r\n\r\n this._ssaoPostProcess.onApply = (effect: Effect) => {\r\n if (!this._scene.activeCamera) {\r\n return;\r\n }\r\n\r\n effect.setArray3(\"sampleSphere\", this._sampleSphere);\r\n effect.setFloat(\"randTextureTiles\", 32.0);\r\n effect.setFloat(\"samplesFactor\", 1 / this.samples);\r\n effect.setFloat(\"totalStrength\", this.totalStrength);\r\n effect.setFloat2(\"texelSize\", 1 / this._ssaoPostProcess.width, 1 / this._ssaoPostProcess.height);\r\n effect.setFloat(\"radius\", this.radius);\r\n effect.setFloat(\"maxZ\", this.maxZ);\r\n effect.setFloat(\"minZAspect\", this.minZAspect);\r\n effect.setFloat(\"base\", this.base);\r\n effect.setFloat(\"near\", this._scene.activeCamera.minZ);\r\n effect.setFloat(\"far\", this._scene.activeCamera.maxZ);\r\n if (this._scene.activeCamera.mode === Camera.PERSPECTIVE_CAMERA) {\r\n effect.setMatrix3x3(\"depthProjection\", SSAO2RenderingPipeline.PERSPECTIVE_DEPTH_PROJECTION);\r\n effect.setFloat(\"xViewport\", Math.tan(this._scene.activeCamera.fov / 2) * this._scene.getEngine().getAspectRatio(this._scene.activeCamera, true));\r\n effect.setFloat(\"yViewport\", Math.tan(this._scene.activeCamera.fov / 2));\r\n } else {\r\n const halfWidth = this._scene.getEngine().getRenderWidth() / 2.0;\r\n const halfHeight = this._scene.getEngine().getRenderHeight() / 2.0;\r\n const orthoLeft = this._scene.activeCamera.orthoLeft ?? -halfWidth;\r\n const orthoRight = this._scene.activeCamera.orthoRight ?? halfWidth;\r\n const orthoBottom = this._scene.activeCamera.orthoBottom ?? -halfHeight;\r\n const orthoTop = this._scene.activeCamera.orthoTop ?? halfHeight;\r\n effect.setMatrix3x3(\"depthProjection\", SSAO2RenderingPipeline.ORTHO_DEPTH_PROJECTION);\r\n effect.setFloat(\"xViewport\", (orthoRight - orthoLeft) * 0.5);\r\n effect.setFloat(\"yViewport\", (orthoTop - orthoBottom) * 0.5);\r\n }\r\n effect.setMatrix(\"projection\", this._scene.getProjectionMatrix());\r\n\r\n if (this._geometryBufferRenderer) {\r\n effect.setTexture(\"depthSampler\", this._geometryBufferRenderer.getGBuffer().textures[0]);\r\n effect.setTexture(\"normalSampler\", this._geometryBufferRenderer.getGBuffer().textures[1]);\r\n } else if (this._prePassRenderer) {\r\n effect.setTexture(\"depthSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_DEPTH_TEXTURE_TYPE)]);\r\n effect.setTexture(\"normalSampler\", this._prePassRenderer.getRenderTarget().textures[this._prePassRenderer.getIndex(Constants.PREPASS_NORMAL_TEXTURE_TYPE)]);\r\n }\r\n effect.setTexture(\"randomSampler\", this._randomTexture);\r\n };\r\n this._ssaoPostProcess.samples = this.textureSamples;\r\n\r\n if (!this._forceGeometryBuffer) {\r\n this._ssaoPostProcess._prePassEffectConfiguration = new SSAO2Configuration();\r\n }\r\n }\r\n\r\n private _createSSAOCombinePostProcess(ratio: number, textureType: number): void {\r\n this._ssaoCombinePostProcess = new PostProcess(\r\n \"ssaoCombine\",\r\n \"ssaoCombine\",\r\n [],\r\n [\"originalColor\", \"viewport\"],\r\n ratio,\r\n null,\r\n Texture.BILINEAR_SAMPLINGMODE,\r\n this._scene.getEngine(),\r\n false,\r\n undefined,\r\n textureType\r\n );\r\n\r\n this._ssaoCombinePostProcess.onApply = (effect: Effect) => {\r\n const viewport = this._scene.activeCamera!.viewport;\r\n effect.setVector4(\"viewport\", TmpVectors.Vector4[0].copyFromFloats(viewport.x, viewport.y, viewport.width, viewport.height));\r\n effect.setTextureFromPostProcessOutput(\"originalColor\", this._originalColorPostProcess);\r\n };\r\n this._ssaoCombinePostProcess.samples = this.textureSamples;\r\n }\r\n\r\n private _createRandomTexture(): void {\r\n const size = 128;\r\n\r\n this._randomTexture = new DynamicTexture(\"SSAORandomTexture\", size, this._scene, false, Texture.TRILINEAR_SAMPLINGMODE);\r\n this._randomTexture.wrapU = Texture.WRAP_ADDRESSMODE;\r\n this._randomTexture.wrapV = Texture.WRAP_ADDRESSMODE;\r\n\r\n const context = this._randomTexture.getContext();\r\n\r\n const rand = (min: number, max: number) => {\r\n return Math.random() * (max - min) + min;\r\n };\r\n\r\n const randVector = Vector3.Zero();\r\n\r\n for (let x = 0; x < size; x++) {\r\n for (let y = 0; y < size; y++) {\r\n randVector.x = rand(0.0, 1.0);\r\n randVector.y = rand(0.0, 1.0);\r\n randVector.z = 0.0;\r\n\r\n randVector.normalize();\r\n\r\n randVector.scaleInPlace(255);\r\n randVector.x = Math.floor(randVector.x);\r\n randVector.y = Math.floor(randVector.y);\r\n\r\n context.fillStyle = \"rgb(\" + randVector.x + \", \" + randVector.y + \", \" + randVector.z + \")\";\r\n context.fillRect(x, y, 1, 1);\r\n }\r\n }\r\n\r\n this._randomTexture.update(false);\r\n }\r\n\r\n /**\r\n * Serialize the rendering pipeline (Used when exporting)\r\n * @returns the serialized object\r\n */\r\n public serialize(): any {\r\n const serializationObject = SerializationHelper.Serialize(this);\r\n serializationObject.customType = \"SSAO2RenderingPipeline\";\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Parse the serialized pipeline\r\n * @param source Source pipeline.\r\n * @param scene The scene to load the pipeline to.\r\n * @param rootUrl The URL of the serialized pipeline.\r\n * @returns An instantiated pipeline from the serialized object.\r\n */\r\n public static Parse(source: any, scene: Scene, rootUrl: string): SSAO2RenderingPipeline {\r\n return SerializationHelper.Parse(() => new SSAO2RenderingPipeline(source._name, scene, source._ratio), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SSAO2RenderingPipeline\", SSAO2RenderingPipeline);\r\n"]}
@@ -101,7 +101,7 @@ export interface IWebXRHandTrackingOptions {
101
101
  /**
102
102
  * Parts of the hands divided to writs and finger names
103
103
  */
104
- export declare const enum HandPart {
104
+ export declare enum HandPart {
105
105
  /**
106
106
  * HandPart - Wrist
107
107
  */
@@ -131,7 +131,7 @@ export declare const enum HandPart {
131
131
  * Joints of the hand as defined by the WebXR specification.
132
132
  * https://immersive-web.github.io/webxr-hand-input/#skeleton-joints-section
133
133
  */
134
- export declare const enum XRHandJoint {
134
+ export declare enum XRHandJoint {
135
135
  /** Wrist */
136
136
  WRIST = "wrist",
137
137
  /** Thumb near wrist */