@fps-games/editor-deployment 0.2.3-beta.3
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/bin/fps-editor-prepare.mjs +5 -0
- package/bin/fps-editor-server.mjs +2 -0
- package/licenses/THIRD_PARTY_NOTICES.txt +7 -0
- package/manifest.json +2685 -0
- package/npm-shrinkwrap.json +19 -0
- package/package.json +38 -0
- package/public/assets/abstractAudioBus-DKeLA-55.js +1 -0
- package/public/assets/animation-DY4Gs-Pw.js +1 -0
- package/public/assets/animation-DY4Gs-Pw.js.br +0 -0
- package/public/assets/animation-DY4Gs-Pw.js.gz +0 -0
- package/public/assets/animationGroup-BN6ExD_I.js +1 -0
- package/public/assets/animationGroup-BN6ExD_I.js.br +0 -0
- package/public/assets/animationGroup-BN6ExD_I.js.gz +0 -0
- package/public/assets/arcRotateCamera-BrOEThh0.js +1 -0
- package/public/assets/arcRotateCamera-BrOEThh0.js.br +0 -0
- package/public/assets/arcRotateCamera-BrOEThh0.js.gz +0 -0
- package/public/assets/babylon-core-BiQ_mrkl.js +1 -0
- package/public/assets/babylon-core-BiQ_mrkl.js.br +0 -0
- package/public/assets/babylon-core-BiQ_mrkl.js.gz +0 -0
- package/public/assets/babylon-core-DygJEuf6.js +13882 -0
- package/public/assets/babylon-core-DygJEuf6.js.br +0 -0
- package/public/assets/babylon-core-DygJEuf6.js.gz +0 -0
- package/public/assets/basisTextureLoader-BWwwG7Gw.js +1 -0
- package/public/assets/basisTextureLoader-BWwwG7Gw.js.br +0 -0
- package/public/assets/basisTextureLoader-BWwwG7Gw.js.gz +0 -0
- package/public/assets/bumpVertex-CzYtMFbI.js +177 -0
- package/public/assets/bumpVertex-CzYtMFbI.js.br +0 -0
- package/public/assets/bumpVertex-CzYtMFbI.js.gz +0 -0
- package/public/assets/bumpVertex-DIMp0NiU.js +173 -0
- package/public/assets/bumpVertex-DIMp0NiU.js.br +0 -0
- package/public/assets/bumpVertex-DIMp0NiU.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-BJhO9WeA.js +7 -0
- package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.br +0 -0
- package/public/assets/chromaticAberration.fragment-BJhO9WeA.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-DEAEmyJy.js +6 -0
- package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.br +0 -0
- package/public/assets/chromaticAberration.fragment-DEAEmyJy.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-DGnleQIE.js +17 -0
- package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.br +0 -0
- package/public/assets/circleOfConfusion.fragment-DGnleQIE.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js +17 -0
- package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.br +0 -0
- package/public/assets/circleOfConfusion.fragment-DqQcLT7C.js.gz +0 -0
- package/public/assets/clipPlaneFragment-Da_1RMjt.js +46 -0
- package/public/assets/clipPlaneFragment-Da_1RMjt.js.br +0 -0
- package/public/assets/clipPlaneFragment-Da_1RMjt.js.gz +0 -0
- package/public/assets/clipPlaneVertex-B8PIfZU_.js +177 -0
- package/public/assets/clipPlaneVertex-B8PIfZU_.js.br +0 -0
- package/public/assets/clipPlaneVertex-B8PIfZU_.js.gz +0 -0
- package/public/assets/color.fragment-Bf62ouS6.js +20 -0
- package/public/assets/color.fragment-Bf62ouS6.js.br +0 -0
- package/public/assets/color.fragment-Bf62ouS6.js.gz +0 -0
- package/public/assets/color.fragment-DtJC5xR0.js +21 -0
- package/public/assets/color.fragment-DtJC5xR0.js.br +0 -0
- package/public/assets/color.fragment-DtJC5xR0.js.gz +0 -0
- package/public/assets/color.vertex-DYnzh3f-.js +39 -0
- package/public/assets/color.vertex-DYnzh3f-.js.br +0 -0
- package/public/assets/color.vertex-DYnzh3f-.js.gz +0 -0
- package/public/assets/color.vertex-foaAsgqw.js +32 -0
- package/public/assets/color.vertex-foaAsgqw.js.br +0 -0
- package/public/assets/color.vertex-foaAsgqw.js.gz +0 -0
- package/public/assets/dds-CbA4nCCq.js +1 -0
- package/public/assets/dds-CbA4nCCq.js.br +0 -0
- package/public/assets/dds-CbA4nCCq.js.gz +0 -0
- package/public/assets/ddsTextureLoader-Bwa3u-Gp.js +1 -0
- package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.br +0 -0
- package/public/assets/ddsTextureLoader-Bwa3u-Gp.js.gz +0 -0
- package/public/assets/default.fragment-BKaVVFYF.js +526 -0
- package/public/assets/default.fragment-BKaVVFYF.js.br +0 -0
- package/public/assets/default.fragment-BKaVVFYF.js.gz +0 -0
- package/public/assets/default.fragment-DjNCicws.js +468 -0
- package/public/assets/default.fragment-DjNCicws.js.br +0 -0
- package/public/assets/default.fragment-DjNCicws.js.gz +0 -0
- package/public/assets/default.vertex-CKOvcJ54.js +193 -0
- package/public/assets/default.vertex-CKOvcJ54.js.br +0 -0
- package/public/assets/default.vertex-CKOvcJ54.js.gz +0 -0
- package/public/assets/default.vertex-DyPOsib0.js +181 -0
- package/public/assets/default.vertex-DyPOsib0.js.br +0 -0
- package/public/assets/default.vertex-DyPOsib0.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-ChgZa3Dv.js +5 -0
- package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.br +0 -0
- package/public/assets/defaultUboDeclaration-ChgZa3Dv.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-Dzd2ch6X.js +7 -0
- package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.br +0 -0
- package/public/assets/defaultUboDeclaration-Dzd2ch6X.js.gz +0 -0
- package/public/assets/depth.fragment-B9FDfPgW.js +40 -0
- package/public/assets/depth.fragment-B9FDfPgW.js.br +2 -0
- package/public/assets/depth.fragment-B9FDfPgW.js.gz +0 -0
- package/public/assets/depth.vertex-DXkbiW3p.js +57 -0
- package/public/assets/depth.vertex-DXkbiW3p.js.br +0 -0
- package/public/assets/depth.vertex-DXkbiW3p.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js +6 -0
- package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.br +0 -0
- package/public/assets/depthBoxBlur.fragment-BlgJGCM0.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-DUm61npj.js +5 -0
- package/public/assets/depthBoxBlur.fragment-DUm61npj.js.br +0 -0
- package/public/assets/depthBoxBlur.fragment-DUm61npj.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js +21 -0
- package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.br +0 -0
- package/public/assets/depthOfFieldMerge.fragment-25hKWM62.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js +26 -0
- package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.br +0 -0
- package/public/assets/depthOfFieldMerge.fragment-_d6h2qdf.js.gz +0 -0
- package/public/assets/easing-BkcTAuOI.js +1 -0
- package/public/assets/easing-BkcTAuOI.js.br +0 -0
- package/public/assets/easing-BkcTAuOI.js.gz +0 -0
- package/public/assets/editor-core-plugin-host-c2002442.js +1 -0
- package/public/assets/editor-core-plugin-host-c2002442.js.br +0 -0
- package/public/assets/editor-core-plugin-host-c2002442.js.gz +0 -0
- package/public/assets/exrTextureLoader-DD6CMgpF.js +1 -0
- package/public/assets/exrTextureLoader-DD6CMgpF.js.br +0 -0
- package/public/assets/exrTextureLoader-DD6CMgpF.js.gz +0 -0
- package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js +1 -0
- package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.br +0 -0
- package/public/assets/flowGraphArrayIndexBlock-DAsvnV45.js.gz +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js +1 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.br +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-_sVLfNt3.js.gz +0 -0
- package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js +1 -0
- package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.br +0 -0
- package/public/assets/flowGraphBinaryOperationBlock-D9lz9r7e.js.gz +0 -0
- package/public/assets/flowGraphBranchBlock-BMgiYImb.js +1 -0
- package/public/assets/flowGraphBranchBlock-BMgiYImb.js.br +0 -0
- package/public/assets/flowGraphBranchBlock-BMgiYImb.js.gz +0 -0
- package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js +1 -0
- package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.br +0 -0
- package/public/assets/flowGraphCachedOperationBlock-CDf6OBvO.js.gz +0 -0
- package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js +1 -0
- package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.br +0 -0
- package/public/assets/flowGraphCancelDelayBlock-BbyDVz48.js.gz +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js +1 -0
- package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.br +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-fMRePVwn.js.gz +0 -0
- package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js +1 -0
- package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.br +0 -0
- package/public/assets/flowGraphConditionalDataBlock-Db9HPH7K.js.gz +0 -0
- package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js +1 -0
- package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.br +0 -0
- package/public/assets/flowGraphConsoleLogBlock-U9fcEDaX.js.gz +0 -0
- package/public/assets/flowGraphConstantBlock-CN1Myhpi.js +1 -0
- package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.br +0 -0
- package/public/assets/flowGraphConstantBlock-CN1Myhpi.js.gz +0 -0
- package/public/assets/flowGraphContextBlock-BbRTNgI4.js +1 -0
- package/public/assets/flowGraphContextBlock-BbRTNgI4.js.br +0 -0
- package/public/assets/flowGraphContextBlock-BbRTNgI4.js.gz +0 -0
- package/public/assets/flowGraphCounterBlock-DTqShVsi.js +1 -0
- package/public/assets/flowGraphCounterBlock-DTqShVsi.js.br +0 -0
- package/public/assets/flowGraphCounterBlock-DTqShVsi.js.gz +0 -0
- package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js +1 -0
- package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.br +0 -0
- package/public/assets/flowGraphDataSwitchBlock-BtEqygYT.js.gz +0 -0
- package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js +1 -0
- package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.br +0 -0
- package/public/assets/flowGraphDebounceBlock-CNHFUJ8N.js.gz +0 -0
- package/public/assets/flowGraphDoNBlock-DfiUsh6W.js +1 -0
- package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.br +0 -0
- package/public/assets/flowGraphDoNBlock-DfiUsh6W.js.gz +0 -0
- package/public/assets/flowGraphEasingBlock-BQz5MDh1.js +1 -0
- package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.br +0 -0
- package/public/assets/flowGraphEasingBlock-BQz5MDh1.js.gz +0 -0
- package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js +1 -0
- package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.br +0 -0
- package/public/assets/flowGraphFlipFlopBlock-FFeDrjtF.js.gz +0 -0
- package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js +1 -0
- package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.br +0 -0
- package/public/assets/flowGraphForLoopBlock-CjPa-aIl.js.gz +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js +1 -0
- package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.br +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-CUUBvJaO.js.gz +0 -0
- package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js +1 -0
- package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.br +0 -0
- package/public/assets/flowGraphGetAssetBlock-CuKntTUp.js.gz +0 -0
- package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js +1 -0
- package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.br +0 -0
- package/public/assets/flowGraphGetPropertyBlock-r3I5d5Pw.js.gz +0 -0
- package/public/assets/flowGraphGetVariableBlock-ByAhPias.js +1 -0
- package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.br +0 -0
- package/public/assets/flowGraphGetVariableBlock-ByAhPias.js.gz +0 -0
- package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js +1 -0
- package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.br +0 -0
- package/public/assets/flowGraphIndexOfBlock-kKyrBvN9.js.gz +0 -0
- package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js +1 -0
- package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.br +0 -0
- package/public/assets/flowGraphInterpolationBlock-C1KggJs6.js.gz +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js +1 -0
- package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.br +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-Cq1Nm55u.js.gz +0 -0
- package/public/assets/flowGraphMathBlocks-DyKkUJIM.js +1 -0
- package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.br +0 -0
- package/public/assets/flowGraphMathBlocks-DyKkUJIM.js.gz +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js +1 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.br +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-DWLx9Jo-.js.gz +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js +1 -0
- package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.br +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-CEbyv5Ky.js.gz +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js +1 -0
- package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.br +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-DBaLM4_x.js.gz +0 -0
- package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js +1 -0
- package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.br +0 -0
- package/public/assets/flowGraphMultiGateBlock-0zKVRfwg.js.gz +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js +1 -0
- package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.br +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-Cj1qZ8KL.js.gz +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js +1 -0
- package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.br +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-CmNlz0tC.js.gz +0 -0
- package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js +1 -0
- package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.br +4 -0
- package/public/assets/flowGraphPointerOutEventBlock-CksX91Wf.js.gz +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js +1 -0
- package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.br +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-BAzWo2rO.js.gz +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js +1 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.br +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-DodatkWu.js.gz +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js +1 -0
- package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.br +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-CdZZEJxf.js.gz +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js +1 -0
- package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.br +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-BO5xEA0D.js.gz +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js +1 -0
- package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.br +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-BSbW6X-n.js.gz +0 -0
- package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js +1 -0
- package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.br +0 -0
- package/public/assets/flowGraphSequenceBlock-Ppc6pXve.js.gz +0 -0
- package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js +1 -0
- package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.br +0 -0
- package/public/assets/flowGraphSetDelayBlock-Ckikj9nw.js.gz +0 -0
- package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js +1 -0
- package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.br +0 -0
- package/public/assets/flowGraphSetPropertyBlock-BgUzizbV.js.gz +0 -0
- package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js +1 -0
- package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.br +0 -0
- package/public/assets/flowGraphSetVariableBlock-BdpCJTDy.js.gz +0 -0
- package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js +1 -0
- package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.br +0 -0
- package/public/assets/flowGraphStopAnimationBlock-NXtDyWkx.js.gz +0 -0
- package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js +1 -0
- package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.br +0 -0
- package/public/assets/flowGraphSwitchBlock-BtAbN5pw.js.gz +0 -0
- package/public/assets/flowGraphThrottleBlock-DouJgya1.js +1 -0
- package/public/assets/flowGraphThrottleBlock-DouJgya1.js.br +0 -0
- package/public/assets/flowGraphThrottleBlock-DouJgya1.js.gz +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js +1 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.br +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-DnCim8eo.js.gz +0 -0
- package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js +1 -0
- package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.br +4 -0
- package/public/assets/flowGraphTypeToTypeBlocks-DvTPkHj8.js.gz +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js +1 -0
- package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.br +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-DfKZLa84.js.gz +0 -0
- package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js +1 -0
- package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.br +0 -0
- package/public/assets/flowGraphVectorMathBlocks-BQCEcK0m.js.gz +0 -0
- package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js +1 -0
- package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.br +0 -0
- package/public/assets/flowGraphWaitAllBlock-ClqfM5vn.js.gz +0 -0
- package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js +1 -0
- package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.br +0 -0
- package/public/assets/flowGraphWhileLoopBlock-DkTf5x3Z.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js +22 -0
- package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.br +0 -0
- package/public/assets/fogFragmentDeclaration-CJgnG_Ui.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js +23 -0
- package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.br +0 -0
- package/public/assets/fogFragmentDeclaration-Dk_KLGI0.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js +7 -0
- package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.br +0 -0
- package/public/assets/glowBlurPostProcess.fragment-BmoPp0DJ.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js +7 -0
- package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.br +0 -0
- package/public/assets/glowBlurPostProcess.fragment-DSvlweiI.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-BmCna86b.js +63 -0
- package/public/assets/glowMapGeneration.fragment-BmCna86b.js.br +0 -0
- package/public/assets/glowMapGeneration.fragment-BmCna86b.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-Bx0somqR.js +63 -0
- package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.br +0 -0
- package/public/assets/glowMapGeneration.fragment-Bx0somqR.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js +75 -0
- package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.br +0 -0
- package/public/assets/glowMapGeneration.vertex-C_K1FVYg.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js +75 -0
- package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.br +0 -0
- package/public/assets/glowMapGeneration.vertex-Fp7OnH6p.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-0u_W2SCj.js +25 -0
- package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.br +0 -0
- package/public/assets/glowMapMerge.fragment-0u_W2SCj.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-DbrUnHjm.js +23 -0
- package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.br +0 -0
- package/public/assets/glowMapMerge.fragment-DbrUnHjm.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-CuTJKa7K.js +7 -0
- package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.br +0 -0
- package/public/assets/glowMapMerge.vertex-CuTJKa7K.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-DAvXVsHl.js +8 -0
- package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.br +0 -0
- package/public/assets/glowMapMerge.vertex-DAvXVsHl.js.gz +0 -0
- package/public/assets/grain.fragment-6VtM1VfQ.js +6 -0
- package/public/assets/grain.fragment-6VtM1VfQ.js.br +0 -0
- package/public/assets/grain.fragment-6VtM1VfQ.js.gz +0 -0
- package/public/assets/grain.fragment-DDSnqVVY.js +5 -0
- package/public/assets/grain.fragment-DDSnqVVY.js.br +4 -1
- package/public/assets/grain.fragment-DDSnqVVY.js.gz +0 -0
- package/public/assets/harmonicsFunctions-BKiAKdWL.js +189 -0
- package/public/assets/harmonicsFunctions-BKiAKdWL.js.br +0 -0
- package/public/assets/harmonicsFunctions-BKiAKdWL.js.gz +0 -0
- package/public/assets/harmonicsFunctions-BdFr0SEn.js +192 -0
- package/public/assets/harmonicsFunctions-BdFr0SEn.js.br +0 -0
- package/public/assets/harmonicsFunctions-BdFr0SEn.js.gz +0 -0
- package/public/assets/hdrTextureLoader-BZMtuzrh.js +2 -0
- package/public/assets/hdrTextureLoader-BZMtuzrh.js.br +0 -0
- package/public/assets/hdrTextureLoader-BZMtuzrh.js.gz +0 -0
- package/public/assets/hemisphericLight-BF-Si7a7.js +1 -0
- package/public/assets/hemisphericLight-BF-Si7a7.js.br +0 -0
- package/public/assets/hemisphericLight-BF-Si7a7.js.gz +0 -0
- package/public/assets/iesTextureLoader-CfjtMyLq.js +2 -0
- package/public/assets/iesTextureLoader-CfjtMyLq.js.br +0 -0
- package/public/assets/iesTextureLoader-CfjtMyLq.js.gz +0 -0
- package/public/assets/index-Bc_2vm3Z.js +4 -0
- package/public/assets/index-Bc_2vm3Z.js.br +0 -0
- package/public/assets/index-Bc_2vm3Z.js.gz +0 -0
- package/public/assets/index-DKM_mvsP.js +1 -0
- package/public/assets/index-DKM_mvsP.js.br +0 -0
- package/public/assets/index-DKM_mvsP.js.gz +0 -0
- package/public/assets/instancesDeclaration-DpE3Y0C1.js +23 -0
- package/public/assets/instancesDeclaration-DpE3Y0C1.js.br +0 -0
- package/public/assets/instancesDeclaration-DpE3Y0C1.js.gz +0 -0
- package/public/assets/ktxTextureLoader-7eTZtvh5.js +1 -0
- package/public/assets/ktxTextureLoader-7eTZtvh5.js.br +0 -0
- package/public/assets/ktxTextureLoader-7eTZtvh5.js.gz +0 -0
- package/public/assets/lazy-BcZCe0kL.js +2 -0
- package/public/assets/lazy-BcZCe0kL.js.br +0 -0
- package/public/assets/lazy-BcZCe0kL.js.gz +0 -0
- package/public/assets/lod.fragment-CEfFyCdU.js +3 -0
- package/public/assets/lod.fragment-CEfFyCdU.js.br +0 -0
- package/public/assets/lod.fragment-CEfFyCdU.js.gz +0 -0
- package/public/assets/lod.fragment-DT0r7jVm.js +3 -0
- package/public/assets/lod.fragment-DT0r7jVm.js.br +0 -0
- package/public/assets/lod.fragment-DT0r7jVm.js.gz +0 -0
- package/public/assets/lodCube.fragment-BP5e9OXG.js +22 -0
- package/public/assets/lodCube.fragment-BP5e9OXG.js.br +0 -0
- package/public/assets/lodCube.fragment-BP5e9OXG.js.gz +0 -0
- package/public/assets/lodCube.fragment-mh7W3FpN.js +22 -0
- package/public/assets/lodCube.fragment-mh7W3FpN.js.br +0 -0
- package/public/assets/lodCube.fragment-mh7W3FpN.js.gz +0 -0
- package/public/assets/logDepthDeclaration-DapB3ji1.js +4 -0
- package/public/assets/logDepthDeclaration-_-FceU2g.js +4 -0
- package/public/assets/logDepthFragment-BowlR5UY.js +4 -0
- package/public/assets/logDepthFragment-D1ov0i96.js +4 -0
- package/public/assets/logDepthFragment-D1ov0i96.js.br +0 -0
- package/public/assets/logDepthFragment-D1ov0i96.js.gz +0 -0
- package/public/assets/logDepthVertex-dEn2jB_d.js +4 -0
- package/public/assets/logDepthVertex-dEn2jB_d.js.br +2 -0
- package/public/assets/logDepthVertex-dEn2jB_d.js.gz +0 -0
- package/public/assets/logDepthVertex-jWY57236.js +4 -0
- package/public/assets/logDepthVertex-jWY57236.js.br +3 -0
- package/public/assets/logDepthVertex-jWY57236.js.gz +0 -0
- package/public/assets/mainUVVaryingDeclaration-B-lJcjME.js +4 -0
- package/public/assets/mainUVVaryingDeclaration-D1LMmumw.js +4 -0
- package/public/assets/mesh.vertexData.functions-BXkNVxNr.js +1 -0
- package/public/assets/mesh.vertexData.functions-BXkNVxNr.js.br +0 -0
- package/public/assets/mesh.vertexData.functions-BXkNVxNr.js.gz +0 -0
- package/public/assets/meshUboDeclaration-B5FWJmqY.js +13 -0
- package/public/assets/meshUboDeclaration-B5FWJmqY.js.br +1 -0
- package/public/assets/meshUboDeclaration-B5FWJmqY.js.gz +0 -0
- package/public/assets/meshUboDeclaration-DthvNL2q.js +13 -0
- package/public/assets/meshUboDeclaration-DthvNL2q.js.br +0 -0
- package/public/assets/meshUboDeclaration-DthvNL2q.js.gz +0 -0
- package/public/assets/morphTargetsVertex-DHRA_mKb.js +100 -0
- package/public/assets/morphTargetsVertex-DHRA_mKb.js.br +0 -0
- package/public/assets/morphTargetsVertex-DHRA_mKb.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js +2 -0
- package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.br +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-BDN2XF0x.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js +3 -0
- package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.br +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-C5RtcXZE.js.gz +0 -0
- package/public/assets/oitFragment-CAXGfgFH.js +1202 -0
- package/public/assets/oitFragment-CAXGfgFH.js.br +0 -0
- package/public/assets/oitFragment-CAXGfgFH.js.gz +0 -0
- package/public/assets/oitFragment-ay081Wsi.js +1077 -0
- package/public/assets/oitFragment-ay081Wsi.js.br +0 -0
- package/public/assets/oitFragment-ay081Wsi.js.gz +0 -0
- package/public/assets/openpbrMaterial-KVtjwf0K.js +2 -0
- package/public/assets/openpbrMaterial-KVtjwf0K.js.br +0 -0
- package/public/assets/openpbrMaterial-KVtjwf0K.js.gz +0 -0
- package/public/assets/outline.fragment-BanVWYIB.js +21 -0
- package/public/assets/outline.fragment-BanVWYIB.js.br +0 -0
- package/public/assets/outline.fragment-BanVWYIB.js.gz +0 -0
- package/public/assets/outline.fragment-CFKJOJ3l.js +18 -0
- package/public/assets/outline.fragment-CFKJOJ3l.js.br +0 -0
- package/public/assets/outline.fragment-CFKJOJ3l.js.gz +0 -0
- package/public/assets/outline.vertex-1q1i1Z0k.js +47 -0
- package/public/assets/outline.vertex-1q1i1Z0k.js.br +0 -0
- package/public/assets/outline.vertex-1q1i1Z0k.js.gz +0 -0
- package/public/assets/outline.vertex-yrM712o1.js +47 -0
- package/public/assets/outline.vertex-yrM712o1.js.br +0 -0
- package/public/assets/outline.vertex-yrM712o1.js.gz +0 -0
- package/public/assets/passCube.fragment-4x9m1yB9.js +23 -0
- package/public/assets/passCube.fragment-4x9m1yB9.js.br +0 -0
- package/public/assets/passCube.fragment-4x9m1yB9.js.gz +0 -0
- package/public/assets/passCube.fragment-j0YEcfrM.js +23 -0
- package/public/assets/passCube.fragment-j0YEcfrM.js.br +3 -0
- package/public/assets/passCube.fragment-j0YEcfrM.js.gz +0 -0
- package/public/assets/pbr.fragment-D4c9Imut.js +3277 -0
- package/public/assets/pbr.fragment-D4c9Imut.js.br +0 -0
- package/public/assets/pbr.fragment-D4c9Imut.js.gz +0 -0
- package/public/assets/pbr.fragment-qKZeRSsL.js +3327 -0
- package/public/assets/pbr.fragment-qKZeRSsL.js.br +0 -0
- package/public/assets/pbr.fragment-qKZeRSsL.js.gz +0 -0
- package/public/assets/pbr.vertex-CNWuYREY.js +227 -0
- package/public/assets/pbr.vertex-CNWuYREY.js.br +0 -0
- package/public/assets/pbr.vertex-CNWuYREY.js.gz +0 -0
- package/public/assets/pbr.vertex-joJmxK7Z.js +357 -0
- package/public/assets/pbr.vertex-joJmxK7Z.js.br +0 -0
- package/public/assets/pbr.vertex-joJmxK7Z.js.gz +0 -0
- package/public/assets/playable-local-editor-entry-BpT9asOr.js +4 -0
- package/public/assets/playable-local-editor-entry-BpT9asOr.js.br +0 -0
- package/public/assets/playable-local-editor-entry-BpT9asOr.js.gz +0 -0
- package/public/assets/playable-sdk-CrJqCMfO.js +5074 -0
- package/public/assets/playable-sdk-CrJqCMfO.js.br +0 -0
- package/public/assets/playable-sdk-CrJqCMfO.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-DVQvgSkR.js +5 -0
- package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.br +0 -0
- package/public/assets/rgbdDecode.fragment-DVQvgSkR.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-jfF24wPs.js +5 -0
- package/public/assets/rgbdDecode.fragment-jfF24wPs.js.br +0 -0
- package/public/assets/rgbdDecode.fragment-jfF24wPs.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-AWVgflWm.js +5 -0
- package/public/assets/rgbdEncode.fragment-AWVgflWm.js.br +0 -0
- package/public/assets/rgbdEncode.fragment-AWVgflWm.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-DZGlem9k.js +5 -0
- package/public/assets/rgbdEncode.fragment-DZGlem9k.js.br +0 -0
- package/public/assets/rgbdEncode.fragment-DZGlem9k.js.gz +0 -0
- package/public/assets/sceneLoader-BJz_3O1N.js +1 -0
- package/public/assets/sceneLoader-BJz_3O1N.js.br +0 -0
- package/public/assets/sceneLoader-BJz_3O1N.js.gz +0 -0
- package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js +15 -0
- package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.br +0 -0
- package/public/assets/screenSpaceCurvature.fragment-B-CUjGj1.js.gz +0 -0
- package/public/assets/selection.fragment-G8Edn4iI.js +35 -0
- package/public/assets/selection.fragment-G8Edn4iI.js.br +0 -0
- package/public/assets/selection.fragment-G8Edn4iI.js.gz +0 -0
- package/public/assets/selection.fragment-lxotM05-.js +35 -0
- package/public/assets/selection.fragment-lxotM05-.js.br +0 -0
- package/public/assets/selection.fragment-lxotM05-.js.gz +0 -0
- package/public/assets/selection.vertex-BXV_f7Y2.js +74 -0
- package/public/assets/selection.vertex-BXV_f7Y2.js.br +0 -0
- package/public/assets/selection.vertex-BXV_f7Y2.js.gz +0 -0
- package/public/assets/selection.vertex-N4uHCMNz.js +73 -0
- package/public/assets/selection.vertex-N4uHCMNz.js.br +0 -0
- package/public/assets/selection.vertex-N4uHCMNz.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-GI37GIN9.js +48 -0
- package/public/assets/selectionOutline.fragment-GI37GIN9.js.br +0 -0
- package/public/assets/selectionOutline.fragment-GI37GIN9.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js +47 -0
- package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.br +0 -0
- package/public/assets/selectionOutline.fragment-Hvq4J9-Z.js.gz +0 -0
- package/public/assets/shadowMap.fragment-Bc5HgWvg.js +79 -0
- package/public/assets/shadowMap.fragment-Bc5HgWvg.js.br +0 -0
- package/public/assets/shadowMap.fragment-Bc5HgWvg.js.gz +0 -0
- package/public/assets/shadowMap.fragment-C43vlUxN.js +78 -0
- package/public/assets/shadowMap.fragment-C43vlUxN.js.br +0 -0
- package/public/assets/shadowMap.fragment-C43vlUxN.js.gz +0 -0
- package/public/assets/shadowMap.vertex-CneYEevu.js +119 -0
- package/public/assets/shadowMap.vertex-CneYEevu.js.br +0 -0
- package/public/assets/shadowMap.vertex-CneYEevu.js.gz +0 -0
- package/public/assets/shadowMap.vertex-DCmGPxPg.js +109 -0
- package/public/assets/shadowMap.vertex-DCmGPxPg.js.br +0 -0
- package/public/assets/shadowMap.vertex-DCmGPxPg.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js +4 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.br +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-20DchIFl.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js +4 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.br +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CcyAwByw.js.gz +0 -0
- package/public/assets/sharpen.fragment-u0Zk00IW.js +8 -0
- package/public/assets/sharpen.fragment-u0Zk00IW.js.br +0 -0
- package/public/assets/sharpen.fragment-u0Zk00IW.js.gz +0 -0
- package/public/assets/standardMaterial-CgDYhl-K.js +1329 -0
- package/public/assets/standardMaterial-CgDYhl-K.js.br +0 -0
- package/public/assets/standardMaterial-CgDYhl-K.js.gz +0 -0
- package/public/assets/textureMerger.fragment-Bb06oGwL.js +84 -0
- package/public/assets/textureMerger.fragment-Bb06oGwL.js.br +0 -0
- package/public/assets/textureMerger.fragment-Bb06oGwL.js.gz +0 -0
- package/public/assets/textureMerger.fragment-yYgn-A7X.js +76 -0
- package/public/assets/textureMerger.fragment-yYgn-A7X.js.br +0 -0
- package/public/assets/textureMerger.fragment-yYgn-A7X.js.gz +0 -0
- package/public/assets/tgaTextureLoader-BD8cHb3T.js +1 -0
- package/public/assets/tgaTextureLoader-BD8cHb3T.js.br +0 -0
- package/public/assets/tgaTextureLoader-BD8cHb3T.js.gz +0 -0
- package/public/assets/vertexColorMixing-31u6kp3A.js +24 -0
- package/public/assets/vertexColorMixing-31u6kp3A.js.br +1 -0
- package/public/assets/vertexColorMixing-31u6kp3A.js.gz +0 -0
- package/public/assets/vertexColorMixing-CWKPQGdm.js +20 -0
- package/public/assets/vertexColorMixing-CWKPQGdm.js.br +0 -0
- package/public/assets/vertexColorMixing-CWKPQGdm.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js +11 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.br +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-9wHUWZ30.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js +12 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.br +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-N-9p72Fm.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js +15 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DJkHTox8.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js +13 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-uuHa0TVJ.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js +4 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DR3E2COu.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js +5 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.br +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-DhGKqZWW.js.gz +0 -0
- package/public/assets/webAudioBus-uR5af0TN.js +1 -0
- package/public/assets/webAudioBus-uR5af0TN.js.br +0 -0
- package/public/assets/webAudioBus-uR5af0TN.js.gz +0 -0
- package/public/assets/webAudioMainBus-B4JHk1VB.js +1 -0
- package/public/assets/webAudioMainBus-B4JHk1VB.js.br +0 -0
- package/public/assets/webAudioMainBus-B4JHk1VB.js.gz +0 -0
- package/public/assets/workerPool-H9Ji3mCo.js +1 -0
- package/public/assets/workerPool-H9Ji3mCo.js.br +2 -0
- package/public/assets/workerPool-H9Ji3mCo.js.gz +0 -0
- package/public/index.html +19 -0
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/runtime/editor-control-plane.mjs +5 -0
- package/worker/editor-service-worker.mjs +1 -0
|
@@ -0,0 +1,1202 @@
|
|
|
1
|
+
import{fp as e}from"./standardMaterial-CgDYhl-K.js";const d="clusteredLightingFunctions",T=`struct ClusteredLight {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;vec4 vLightDirection;vec4 vLightFalloff;};
|
|
2
|
+
#define inline
|
|
3
|
+
ClusteredLight getClusteredLight(sampler2D lightDataTexture,int index) {return ClusteredLight(
|
|
4
|
+
texelFetch(lightDataTexture,ivec2(0,index),0),
|
|
5
|
+
texelFetch(lightDataTexture,ivec2(1,index),0),
|
|
6
|
+
texelFetch(lightDataTexture,ivec2(2,index),0),
|
|
7
|
+
texelFetch(lightDataTexture,ivec2(3,index),0),
|
|
8
|
+
texelFetch(lightDataTexture,ivec2(4,index),0)
|
|
9
|
+
);}
|
|
10
|
+
int getClusteredSliceIndex(vec2 sliceData,float viewDepth) {return int(log(viewDepth)*sliceData.x+sliceData.y);}
|
|
11
|
+
`;e.IncludesShadersStore[d]||(e.IncludesShadersStore[d]=T);const t="reflectionFunction",g=`vec3 computeFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
|
|
12
|
+
{float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0); }
|
|
13
|
+
vec3 computeMirroredFixedEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 direction)
|
|
14
|
+
{float lon=atan(direction.z,direction.x);float lat=acos(direction.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(1.0-s,t,0); }
|
|
15
|
+
vec3 computeEquirectangularCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
16
|
+
{vec3 cameraToVertex=normalize(worldPos.xyz-eyePosition);vec3 r=normalize(reflect(cameraToVertex,worldNormal));r=vec3(reflectionMatrix*vec4(r,0));float lon=atan(r.z,r.x);float lat=acos(r.y);vec2 sphereCoords=vec2(lon,lat)*RECIPROCAL_PI2*2.0;float s=sphereCoords.x*0.5+0.5;float t=sphereCoords.y;return vec3(s,t,0);}
|
|
17
|
+
vec3 computeSphericalCoords(vec4 worldPos,vec3 worldNormal,mat4 view,mat4 reflectionMatrix)
|
|
18
|
+
{vec3 viewDir=normalize(vec3(view*worldPos));vec3 viewNormal=normalize(vec3(view*vec4(worldNormal,0.0)));vec3 r=reflect(viewDir,viewNormal);r=vec3(reflectionMatrix*vec4(r,0));r.z=r.z-1.0;float m=2.0*length(r);return vec3(r.x/m+0.5,1.0-r.y/m-0.5,0);}
|
|
19
|
+
vec3 computePlanarCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
20
|
+
{vec3 viewDir=worldPos.xyz-eyePosition;vec3 coords=normalize(reflect(viewDir,worldNormal));return vec3(reflectionMatrix*vec4(coords,1));}
|
|
21
|
+
vec3 computeCubicCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix)
|
|
22
|
+
{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=vec3(reflectionMatrix*vec4(coords,0));
|
|
23
|
+
#ifdef INVERTCUBICMAP
|
|
24
|
+
coords.y*=-1.0;
|
|
25
|
+
#endif
|
|
26
|
+
return coords;}
|
|
27
|
+
vec3 computeCubicLocalCoords(vec4 worldPos,vec3 worldNormal,vec3 eyePosition,mat4 reflectionMatrix,vec3 reflectionSize,vec3 reflectionPosition)
|
|
28
|
+
{vec3 viewDir=normalize(worldPos.xyz-eyePosition);vec3 coords=reflect(viewDir,worldNormal);coords=parallaxCorrectNormal(worldPos.xyz,coords,reflectionSize,reflectionPosition);coords=vec3(reflectionMatrix*vec4(coords,0));
|
|
29
|
+
#ifdef INVERTCUBICMAP
|
|
30
|
+
coords.y*=-1.0;
|
|
31
|
+
#endif
|
|
32
|
+
return coords;}
|
|
33
|
+
vec3 computeProjectionCoords(vec4 worldPos,mat4 view,mat4 reflectionMatrix)
|
|
34
|
+
{return vec3(reflectionMatrix*(view*worldPos));}
|
|
35
|
+
vec3 computeSkyBoxCoords(vec3 positionW,mat4 reflectionMatrix)
|
|
36
|
+
{return vec3(reflectionMatrix*vec4(positionW,1.));}
|
|
37
|
+
#ifdef REFLECTION
|
|
38
|
+
vec3 computeReflectionCoords(vec4 worldPos,vec3 worldNormal)
|
|
39
|
+
{
|
|
40
|
+
#ifdef REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED
|
|
41
|
+
vec3 direction=normalize(vDirectionW);return computeMirroredFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
42
|
+
#endif
|
|
43
|
+
#ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
|
|
44
|
+
vec3 direction=normalize(vDirectionW);return computeFixedEquirectangularCoords(worldPos,worldNormal,direction);
|
|
45
|
+
#endif
|
|
46
|
+
#ifdef REFLECTIONMAP_EQUIRECTANGULAR
|
|
47
|
+
return computeEquirectangularCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
|
|
48
|
+
#endif
|
|
49
|
+
#ifdef REFLECTIONMAP_SPHERICAL
|
|
50
|
+
return computeSphericalCoords(worldPos,worldNormal,view,reflectionMatrix);
|
|
51
|
+
#endif
|
|
52
|
+
#ifdef REFLECTIONMAP_PLANAR
|
|
53
|
+
return computePlanarCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
|
|
54
|
+
#endif
|
|
55
|
+
#ifdef REFLECTIONMAP_CUBIC
|
|
56
|
+
#ifdef USE_LOCAL_REFLECTIONMAP_CUBIC
|
|
57
|
+
return computeCubicLocalCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix,vReflectionSize,vReflectionPosition);
|
|
58
|
+
#else
|
|
59
|
+
return computeCubicCoords(worldPos,worldNormal,vEyePosition.xyz,reflectionMatrix);
|
|
60
|
+
#endif
|
|
61
|
+
#endif
|
|
62
|
+
#ifdef REFLECTIONMAP_PROJECTION
|
|
63
|
+
return computeProjectionCoords(worldPos,view,reflectionMatrix);
|
|
64
|
+
#endif
|
|
65
|
+
#ifdef REFLECTIONMAP_SKYBOX
|
|
66
|
+
return computeSkyBoxCoords(vPositionUVW,reflectionMatrix);
|
|
67
|
+
#endif
|
|
68
|
+
#ifdef REFLECTIONMAP_EXPLICIT
|
|
69
|
+
return vec3(0,0,0);
|
|
70
|
+
#endif
|
|
71
|
+
}
|
|
72
|
+
#endif
|
|
73
|
+
`;e.IncludesShadersStore[t]||(e.IncludesShadersStore[t]=g);const I={name:t,shader:g},G=Object.freeze(Object.defineProperty({__proto__:null,reflectionFunction:I},Symbol.toStringTag,{value:"Module"})),i="lightFragmentDeclaration",w=`#ifdef LIGHT{X}
|
|
74
|
+
uniform vec4 vLightData{X};uniform vec4 vLightDiffuse{X};
|
|
75
|
+
#ifdef SPECULARTERM
|
|
76
|
+
uniform vec4 vLightSpecular{X};
|
|
77
|
+
#else
|
|
78
|
+
vec4 vLightSpecular{X}=vec4(0.);
|
|
79
|
+
#endif
|
|
80
|
+
#ifdef SHADOW{X}
|
|
81
|
+
#ifdef SHADOWCSM{X}
|
|
82
|
+
uniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];uniform float viewFrustumZ{X}[SHADOWCSMNUM_CASCADES{X}];uniform float frustumLengths{X}[SHADOWCSMNUM_CASCADES{X}];uniform float cascadeBlendFactor{X};varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};
|
|
83
|
+
#if defined(SHADOWPCSS{X})
|
|
84
|
+
uniform highp sampler2DArrayShadow shadowTexture{X};uniform highp sampler2DArray depthTexture{X};uniform vec2 lightSizeUVCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float depthCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float penumbraDarkness{X};
|
|
85
|
+
#elif defined(SHADOWPCF{X})
|
|
86
|
+
uniform highp sampler2DArrayShadow shadowTexture{X};
|
|
87
|
+
#else
|
|
88
|
+
uniform highp sampler2DArray shadowTexture{X};
|
|
89
|
+
#endif
|
|
90
|
+
#ifdef SHADOWCSMDEBUG{X}
|
|
91
|
+
const vec3 vCascadeColorsMultiplier{X}[8]=vec3[8]
|
|
92
|
+
(
|
|
93
|
+
vec3 ( 1.5,0.0,0.0 ),
|
|
94
|
+
vec3 ( 0.0,1.5,0.0 ),
|
|
95
|
+
vec3 ( 0.0,0.0,5.5 ),
|
|
96
|
+
vec3 ( 1.5,0.0,5.5 ),
|
|
97
|
+
vec3 ( 1.5,1.5,0.0 ),
|
|
98
|
+
vec3 ( 1.0,1.0,1.0 ),
|
|
99
|
+
vec3 ( 0.0,1.0,5.5 ),
|
|
100
|
+
vec3 ( 0.5,3.5,0.75 )
|
|
101
|
+
);vec3 shadowDebug{X};
|
|
102
|
+
#endif
|
|
103
|
+
#ifdef SHADOWCSMUSESHADOWMAXZ{X}
|
|
104
|
+
int index{X}=-1;
|
|
105
|
+
#else
|
|
106
|
+
int index{X}=SHADOWCSMNUM_CASCADES{X}-1;
|
|
107
|
+
#endif
|
|
108
|
+
float diff{X}=0.;
|
|
109
|
+
#elif defined(SHADOWCUBE{X})
|
|
110
|
+
uniform samplerCube shadowTexture{X};
|
|
111
|
+
#else
|
|
112
|
+
varying vec4 vPositionFromLight{X};varying float vDepthMetric{X};
|
|
113
|
+
#if defined(SHADOWPCSS{X})
|
|
114
|
+
uniform highp sampler2DShadow shadowTexture{X};uniform highp sampler2D depthTexture{X};
|
|
115
|
+
#elif defined(SHADOWPCF{X})
|
|
116
|
+
uniform highp sampler2DShadow shadowTexture{X};
|
|
117
|
+
#else
|
|
118
|
+
uniform sampler2D shadowTexture{X};
|
|
119
|
+
#endif
|
|
120
|
+
uniform mat4 lightMatrix{X};
|
|
121
|
+
#endif
|
|
122
|
+
uniform vec4 shadowsInfo{X};uniform vec2 depthValues{X};
|
|
123
|
+
#endif
|
|
124
|
+
#ifdef SPOTLIGHT{X}
|
|
125
|
+
uniform vec4 vLightDirection{X};uniform vec4 vLightFalloff{X};
|
|
126
|
+
#elif defined(POINTLIGHT{X})
|
|
127
|
+
uniform vec4 vLightFalloff{X};
|
|
128
|
+
#elif defined(HEMILIGHT{X})
|
|
129
|
+
uniform vec3 vLightGround{X};
|
|
130
|
+
#endif
|
|
131
|
+
#ifdef AREALIGHT{X}
|
|
132
|
+
uniform vec4 vLightWidth{X};uniform vec4 vLightHeight{X};
|
|
133
|
+
#ifdef RECTAREALIGHTEMISSIONTEXTURE{X}
|
|
134
|
+
uniform sampler2D rectAreaLightEmissionTexture{X};
|
|
135
|
+
#endif
|
|
136
|
+
#endif
|
|
137
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
138
|
+
uniform sampler2D iesLightTexture{X};
|
|
139
|
+
#endif
|
|
140
|
+
#ifdef PROJECTEDLIGHTTEXTURE{X}
|
|
141
|
+
uniform mat4 textureProjectionMatrix{X};uniform sampler2D projectionLightTexture{X};
|
|
142
|
+
#endif
|
|
143
|
+
#ifdef CLUSTLIGHT{X}
|
|
144
|
+
uniform vec2 vSliceData{X};uniform vec2 vSliceRanges{X}[CLUSTLIGHT_SLICES];uniform sampler2D lightDataTexture{X};uniform highp sampler2D tileMaskTexture{X};
|
|
145
|
+
#endif
|
|
146
|
+
#endif
|
|
147
|
+
`;e.IncludesShadersStore[i]||(e.IncludesShadersStore[i]=w);const A={name:i,shader:w},B=Object.freeze(Object.defineProperty({__proto__:null,lightFragmentDeclaration:A},Symbol.toStringTag,{value:"Module"})),o="lightUboDeclaration",D=`#ifdef LIGHT{X}
|
|
148
|
+
uniform Light{X}
|
|
149
|
+
{vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular;
|
|
150
|
+
#ifdef SPOTLIGHT{X}
|
|
151
|
+
vec4 vLightDirection;vec4 vLightFalloff;
|
|
152
|
+
#elif defined(POINTLIGHT{X})
|
|
153
|
+
vec4 vLightFalloff;
|
|
154
|
+
#elif defined(HEMILIGHT{X})
|
|
155
|
+
vec3 vLightGround;
|
|
156
|
+
#elif defined(CLUSTLIGHT{X})
|
|
157
|
+
vec2 vSliceData;vec2 vSliceRanges[CLUSTLIGHT_SLICES];
|
|
158
|
+
#endif
|
|
159
|
+
#if defined(AREALIGHT{X}) && defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
|
|
160
|
+
vec4 vLightWidth;vec4 vLightHeight;
|
|
161
|
+
#endif
|
|
162
|
+
vec4 shadowsInfo;vec2 depthValues;} light{X};
|
|
163
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
164
|
+
uniform sampler2D iesLightTexture{X};
|
|
165
|
+
#endif
|
|
166
|
+
#ifdef RECTAREALIGHTEMISSIONTEXTURE{X}
|
|
167
|
+
uniform sampler2D rectAreaLightEmissionTexture{X};
|
|
168
|
+
#endif
|
|
169
|
+
#ifdef PROJECTEDLIGHTTEXTURE{X}
|
|
170
|
+
uniform mat4 textureProjectionMatrix{X};uniform sampler2D projectionLightTexture{X};
|
|
171
|
+
#endif
|
|
172
|
+
#ifdef CLUSTLIGHT{X}
|
|
173
|
+
uniform sampler2D lightDataTexture{X};uniform highp sampler2D tileMaskTexture{X};
|
|
174
|
+
#endif
|
|
175
|
+
#ifdef SHADOW{X}
|
|
176
|
+
#ifdef SHADOWCSM{X}
|
|
177
|
+
uniform mat4 lightMatrix{X}[SHADOWCSMNUM_CASCADES{X}];uniform float viewFrustumZ{X}[SHADOWCSMNUM_CASCADES{X}];uniform float frustumLengths{X}[SHADOWCSMNUM_CASCADES{X}];uniform float cascadeBlendFactor{X};varying vec4 vPositionFromLight{X}[SHADOWCSMNUM_CASCADES{X}];varying float vDepthMetric{X}[SHADOWCSMNUM_CASCADES{X}];varying vec4 vPositionFromCamera{X};
|
|
178
|
+
#if defined(SHADOWPCSS{X})
|
|
179
|
+
uniform highp sampler2DArrayShadow shadowTexture{X};uniform highp sampler2DArray depthTexture{X};uniform vec2 lightSizeUVCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float depthCorrection{X}[SHADOWCSMNUM_CASCADES{X}];uniform float penumbraDarkness{X};
|
|
180
|
+
#elif defined(SHADOWPCF{X})
|
|
181
|
+
uniform highp sampler2DArrayShadow shadowTexture{X};
|
|
182
|
+
#else
|
|
183
|
+
uniform highp sampler2DArray shadowTexture{X};
|
|
184
|
+
#endif
|
|
185
|
+
#ifdef SHADOWCSMDEBUG{X}
|
|
186
|
+
const vec3 vCascadeColorsMultiplier{X}[8]=vec3[8]
|
|
187
|
+
(
|
|
188
|
+
vec3 ( 1.5,0.0,0.0 ),
|
|
189
|
+
vec3 ( 0.0,1.5,0.0 ),
|
|
190
|
+
vec3 ( 0.0,0.0,5.5 ),
|
|
191
|
+
vec3 ( 1.5,0.0,5.5 ),
|
|
192
|
+
vec3 ( 1.5,1.5,0.0 ),
|
|
193
|
+
vec3 ( 1.0,1.0,1.0 ),
|
|
194
|
+
vec3 ( 0.0,1.0,5.5 ),
|
|
195
|
+
vec3 ( 0.5,3.5,0.75 )
|
|
196
|
+
);vec3 shadowDebug{X};
|
|
197
|
+
#endif
|
|
198
|
+
#ifdef SHADOWCSMUSESHADOWMAXZ{X}
|
|
199
|
+
int index{X}=-1;
|
|
200
|
+
#else
|
|
201
|
+
int index{X}=SHADOWCSMNUM_CASCADES{X}-1;
|
|
202
|
+
#endif
|
|
203
|
+
float diff{X}=0.;
|
|
204
|
+
#elif defined(SHADOWCUBE{X})
|
|
205
|
+
uniform samplerCube shadowTexture{X};
|
|
206
|
+
#else
|
|
207
|
+
varying vec4 vPositionFromLight{X};varying float vDepthMetric{X};
|
|
208
|
+
#if defined(SHADOWPCSS{X})
|
|
209
|
+
uniform highp sampler2DShadow shadowTexture{X};uniform highp sampler2D depthTexture{X};
|
|
210
|
+
#elif defined(SHADOWPCF{X})
|
|
211
|
+
uniform highp sampler2DShadow shadowTexture{X};
|
|
212
|
+
#else
|
|
213
|
+
uniform sampler2D shadowTexture{X};
|
|
214
|
+
#endif
|
|
215
|
+
uniform mat4 lightMatrix{X};
|
|
216
|
+
#endif
|
|
217
|
+
#endif
|
|
218
|
+
#endif
|
|
219
|
+
`;e.IncludesShadersStore[o]||(e.IncludesShadersStore[o]=D);const P={name:o,shader:D},Y=Object.freeze(Object.defineProperty({__proto__:null,lightUboDeclaration:P},Symbol.toStringTag,{value:"Module"})),f="ltcHelperFunctions",F=`vec2 LTCUv( const in vec3 N,const in vec3 V,const in float roughness ) {const float LUTSIZE=64.0;const float LUTSCALE=( LUTSIZE-1.0 )/LUTSIZE;const float LUTBIAS=0.5/LUTSIZE;float dotNV=saturate( dot( N,V ) );vec2 uv=vec2( roughness,sqrt( 1.0-dotNV ) );uv=uv*LUTSCALE+LUTBIAS;return uv;}
|
|
220
|
+
float LTCClippedSphereFormFactor( const in vec3 f ) {float l=length( f );return max( ( l*l+f.z )/( l+1.0 ),0.0 );}
|
|
221
|
+
vec3 LTCEdgeVectorFormFactor( const in vec3 v1,const in vec3 v2 ) {float x=dot( v1,v2 );float y=abs( x );float a=0.8543985+( 0.4965155+0.0145206*y )*y;float b=3.4175940+( 4.1616724+y )*y;float v=a/b;float thetaSintheta=0.0;if( x>0.0 )
|
|
222
|
+
{thetaSintheta=v;}
|
|
223
|
+
else
|
|
224
|
+
{thetaSintheta=0.5*inversesqrt( max( 1.0-x*x,1e-7 ) )-v;}
|
|
225
|
+
return cross( v1,v2 )*thetaSintheta;}
|
|
226
|
+
vec3 LTCEvaluate( const in vec3 N,const in vec3 V,const in vec3 P,const in mat3 mInv,const in vec3 rectCoords[ 4 ] ) {vec3 v1=rectCoords[ 1 ]-rectCoords[ 0 ];vec3 v2=rectCoords[ 3 ]-rectCoords[ 0 ];vec3 lightNormal=cross( v1,v2 );if( dot( lightNormal,P-rectCoords[ 0 ] )<0.0 ) return vec3( 0.0 );vec3 T1,T2;T1=normalize( V-N*dot( V,N ) );T2=- cross( N,T1 );
|
|
227
|
+
mat3 mat=mInv*transposeMat3( mat3( T1,T2,N ) );vec3 coords[ 4 ];coords[ 0 ]=mat*( rectCoords[ 0 ]-P );coords[ 1 ]=mat*( rectCoords[ 1 ]-P );coords[ 2 ]=mat*( rectCoords[ 2 ]-P );coords[ 3 ]=mat*( rectCoords[ 3 ]-P );coords[ 0 ]=normalize( coords[ 0 ] );coords[ 1 ]=normalize( coords[ 1 ] );coords[ 2 ]=normalize( coords[ 2 ] );coords[ 3 ]=normalize( coords[ 3 ] );vec3 vectorFormFactor=vec3( 0.0 );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 0 ],coords[ 1 ] );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 1 ],coords[ 2 ] );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 2 ],coords[ 3 ] );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 3 ],coords[ 0 ] );float result=LTCClippedSphereFormFactor( vectorFormFactor );return vec3( result );}
|
|
228
|
+
vec3 FetchDiffuseFilteredTexture(sampler2D texLightFiltered,vec3 p1_,vec3 p2_,vec3 p3_,vec3 p4_)
|
|
229
|
+
{vec3 V1=p2_-p1_;vec3 V2=p4_-p1_;vec3 planeOrtho=(cross(V1,V2));float planeAreaSquared=dot(planeOrtho,planeOrtho);float planeDistxPlaneArea=dot(planeOrtho,p1_);vec3 P=planeDistxPlaneArea*planeOrtho/planeAreaSquared-p1_;float dot_V1_V2=dot(V1,V2);float inv_dot_V1_V1=1.0/dot(V1,V1);vec3 V2_=V2-V1*dot_V1_V2*inv_dot_V1_V1;vec2 Puv;Puv.y=dot(V2_,P)/dot(V2_,V2_);Puv.x=dot(V1,P)*inv_dot_V1_V1-dot_V1_V2*inv_dot_V1_V1*Puv.y ;float d=abs(planeDistxPlaneArea)/pow(planeAreaSquared,0.75);float sampleLOD=log(2048.0*d)/log(3.0);vec2 sampleUV=vec2(0.125,0.125)+(vec2(0.75)*Puv);sampleUV.x=1.0-sampleUV.x;return texture2DLodEXT(texLightFiltered,sampleUV,sampleLOD).rgb;}
|
|
230
|
+
vec3 LTCEvaluateWithEmission( const in vec3 N,const in vec3 V,const in vec3 P,const in mat3 mInv,const in vec3 rectCoords[ 4 ],const in sampler2D texFilteredMap ) {vec3 v1=rectCoords[ 1 ]-rectCoords[ 0 ];vec3 v2=rectCoords[ 3 ]-rectCoords[ 0 ];vec3 lightNormal=cross( v1,v2 );if( dot( lightNormal,P-rectCoords[ 0 ] )<0.0 ) return vec3( 0.0 );vec3 T1,T2;T1=normalize( V-N*dot( V,N ) );T2=- cross( N,T1 );
|
|
231
|
+
mat3 mat=mInv*transposeMat3( mat3( T1,T2,N ) );vec3 coords[ 4 ];coords[ 0 ]=mat*( rectCoords[ 0 ]-P );coords[ 1 ]=mat*( rectCoords[ 1 ]-P );coords[ 2 ]=mat*( rectCoords[ 2 ]-P );coords[ 3 ]=mat*( rectCoords[ 3 ]-P );vec3 textureLight=FetchDiffuseFilteredTexture(texFilteredMap,coords[0],coords[1],coords[2],coords[3]);coords[ 0 ]=normalize( coords[ 0 ] );coords[ 1 ]=normalize( coords[ 1 ] );coords[ 2 ]=normalize( coords[ 2 ] );coords[ 3 ]=normalize( coords[ 3 ] );vec3 vectorFormFactor=vec3( 0.0 );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 0 ],coords[ 1 ] );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 1 ],coords[ 2 ] );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 2 ],coords[ 3 ] );vectorFormFactor+=LTCEdgeVectorFormFactor( coords[ 3 ],coords[ 0 ] );float result=LTCClippedSphereFormFactor( vectorFormFactor );return vec3( result )*textureLight;}
|
|
232
|
+
struct areaLightData
|
|
233
|
+
{vec3 Diffuse;vec3 Specular;vec4 Fresnel;};
|
|
234
|
+
#define inline
|
|
235
|
+
areaLightData computeAreaLightSpecularDiffuseFresnel(const in sampler2D ltc1,const in sampler2D ltc2,const in vec3 viewDir,const in vec3 normal,const in vec3 position,const in vec3 lightPos,const in vec3 halfWidth,const in vec3 halfHeight,const in float roughness)
|
|
236
|
+
{areaLightData result;vec3 rectCoords[ 4 ];rectCoords[ 0 ]=lightPos+halfWidth-halfHeight;
|
|
237
|
+
rectCoords[ 1 ]=lightPos-halfWidth-halfHeight;rectCoords[ 2 ]=lightPos-halfWidth+halfHeight;rectCoords[ 3 ]=lightPos+halfWidth+halfHeight;
|
|
238
|
+
#ifdef SPECULARTERM
|
|
239
|
+
vec2 uv=LTCUv( normal,viewDir,roughness );vec4 t1=texture2D( ltc1,uv );vec4 t2=texture2D( ltc2,uv );mat3 mInv=mat3(
|
|
240
|
+
vec3( t1.x,0,t1.y ),
|
|
241
|
+
vec3( 0,1, 0 ),
|
|
242
|
+
vec3( t1.z,0,t1.w )
|
|
243
|
+
);result.Specular=LTCEvaluate( normal,viewDir,position,mInv,rectCoords );result.Fresnel=t2;
|
|
244
|
+
#endif
|
|
245
|
+
result.Diffuse=LTCEvaluate( normal,viewDir,position,mat3( 1.0 ),rectCoords );return result;}
|
|
246
|
+
#define inline
|
|
247
|
+
areaLightData computeAreaLightSpecularDiffuseFresnelWithEmission(const in sampler2D ltc1,const in sampler2D ltc2,const in sampler2D texFilteredMap,const in vec3 viewDir,const in vec3 normal,const in vec3 position,const in vec3 lightPos,const in vec3 halfWidth,const in vec3 halfHeight,const in float roughness)
|
|
248
|
+
{areaLightData result;vec3 rectCoords[ 4 ];rectCoords[ 0 ]=lightPos+halfWidth-halfHeight;
|
|
249
|
+
rectCoords[ 1 ]=lightPos-halfWidth-halfHeight;rectCoords[ 2 ]=lightPos-halfWidth+halfHeight;rectCoords[ 3 ]=lightPos+halfWidth+halfHeight;
|
|
250
|
+
#ifdef SPECULARTERM
|
|
251
|
+
vec2 uv=LTCUv( normal,viewDir,roughness );vec4 t1=texture2D( ltc1,uv );vec4 t2=texture2D( ltc2,uv );mat3 mInv=mat3(
|
|
252
|
+
vec3( t1.x,0,t1.y ),
|
|
253
|
+
vec3( 0,1, 0 ),
|
|
254
|
+
vec3( t1.z,0,t1.w )
|
|
255
|
+
);result.Specular=LTCEvaluateWithEmission( normal,viewDir,position,mInv,rectCoords,texFilteredMap );result.Fresnel=t2;
|
|
256
|
+
#endif
|
|
257
|
+
result.Diffuse=LTCEvaluateWithEmission( normal,viewDir,position,mat3( 1.0 ),rectCoords,texFilteredMap );return result;}`;e.IncludesShadersStore[f]||(e.IncludesShadersStore[f]=F);const a="shadowsFragmentFunctions",L=`#ifdef SHADOWS
|
|
258
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
259
|
+
#define TEXTUREFUNC(s,c,l) texture2DLodEXT(s,c,l)
|
|
260
|
+
#else
|
|
261
|
+
#define TEXTUREFUNC(s,c,b) texture2D(s,c,b)
|
|
262
|
+
#endif
|
|
263
|
+
#ifndef SHADOWFLOAT
|
|
264
|
+
float unpack(vec4 color)
|
|
265
|
+
{const vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}
|
|
266
|
+
#endif
|
|
267
|
+
float computeFallOff(float value,vec2 clipSpace,float frustumEdgeFalloff)
|
|
268
|
+
{float mask=smoothstep(1.0-frustumEdgeFalloff,1.00000012,clamp(dot(clipSpace,clipSpace),0.,1.));return mix(value,1.0,mask);}
|
|
269
|
+
#define inline
|
|
270
|
+
float computeShadowCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float darkness,vec2 depthValues)
|
|
271
|
+
{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);depth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;
|
|
272
|
+
#ifndef SHADOWFLOAT
|
|
273
|
+
float shadow=unpack(textureCube(shadowSampler,directionToLight));
|
|
274
|
+
#else
|
|
275
|
+
float shadow=textureCube(shadowSampler,directionToLight).x;
|
|
276
|
+
#endif
|
|
277
|
+
return depth>shadow ? darkness : 1.0;}
|
|
278
|
+
#define inline
|
|
279
|
+
float computeShadowWithPoissonSamplingCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float mapSize,float darkness,vec2 depthValues)
|
|
280
|
+
{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);depth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;float visibility=1.;vec3 poissonDisk[4];poissonDisk[0]=vec3(-1.0,1.0,-1.0);poissonDisk[1]=vec3(1.0,-1.0,-1.0);poissonDisk[2]=vec3(-1.0,-1.0,-1.0);poissonDisk[3]=vec3(1.0,-1.0,1.0);
|
|
281
|
+
#ifndef SHADOWFLOAT
|
|
282
|
+
if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[0]*mapSize))<depth) visibility-=0.25;if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[1]*mapSize))<depth) visibility-=0.25;if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[2]*mapSize))<depth) visibility-=0.25;if (unpack(textureCube(shadowSampler,directionToLight+poissonDisk[3]*mapSize))<depth) visibility-=0.25;
|
|
283
|
+
#else
|
|
284
|
+
if (textureCube(shadowSampler,directionToLight+poissonDisk[0]*mapSize).x<depth) visibility-=0.25;if (textureCube(shadowSampler,directionToLight+poissonDisk[1]*mapSize).x<depth) visibility-=0.25;if (textureCube(shadowSampler,directionToLight+poissonDisk[2]*mapSize).x<depth) visibility-=0.25;if (textureCube(shadowSampler,directionToLight+poissonDisk[3]*mapSize).x<depth) visibility-=0.25;
|
|
285
|
+
#endif
|
|
286
|
+
return min(1.0,visibility+darkness);}
|
|
287
|
+
#define inline
|
|
288
|
+
float computeShadowWithESMCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float darkness,float depthScale,vec2 depthValues)
|
|
289
|
+
{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);float shadowPixelDepth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;
|
|
290
|
+
#ifndef SHADOWFLOAT
|
|
291
|
+
float shadowMapSample=unpack(textureCube(shadowSampler,directionToLight));
|
|
292
|
+
#else
|
|
293
|
+
float shadowMapSample=textureCube(shadowSampler,directionToLight).x;
|
|
294
|
+
#endif
|
|
295
|
+
float esm=1.0-clamp(exp(min(87.,depthScale*shadowPixelDepth))*shadowMapSample,0.,1.-darkness);return esm;}
|
|
296
|
+
#define inline
|
|
297
|
+
float computeShadowWithCloseESMCube(vec3 worldPos,vec3 lightPosition,samplerCube shadowSampler,float darkness,float depthScale,vec2 depthValues)
|
|
298
|
+
{vec3 directionToLight=worldPos-lightPosition;float depth=length(directionToLight);depth=(depth+depthValues.x)/(depthValues.y);float shadowPixelDepth=clamp(depth,0.,1.0);directionToLight=normalize(directionToLight);directionToLight.y=-directionToLight.y;
|
|
299
|
+
#ifndef SHADOWFLOAT
|
|
300
|
+
float shadowMapSample=unpack(textureCube(shadowSampler,directionToLight));
|
|
301
|
+
#else
|
|
302
|
+
float shadowMapSample=textureCube(shadowSampler,directionToLight).x;
|
|
303
|
+
#endif
|
|
304
|
+
float esm=clamp(exp(min(87.,-depthScale*(shadowPixelDepth-shadowMapSample))),darkness,1.);return esm;}
|
|
305
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
306
|
+
#define inline
|
|
307
|
+
float computeShadowCSM(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray shadowSampler,float darkness,float frustumEdgeFalloff)
|
|
308
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);vec3 uvLayer=vec3(uv.x,uv.y,layer);float shadowPixelDepth=clamp(depthMetric,0.,1.0);
|
|
309
|
+
#ifndef SHADOWFLOAT
|
|
310
|
+
float shadow=unpack(texture2D(shadowSampler,uvLayer));
|
|
311
|
+
#else
|
|
312
|
+
float shadow=texture2D(shadowSampler,uvLayer).x;
|
|
313
|
+
#endif
|
|
314
|
+
return shadowPixelDepth>shadow ? computeFallOff(darkness,clipSpace.xy,frustumEdgeFalloff) : 1.;}
|
|
315
|
+
#endif
|
|
316
|
+
#define inline
|
|
317
|
+
float computeShadow(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float darkness,float frustumEdgeFalloff)
|
|
318
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)
|
|
319
|
+
{return 1.0;}
|
|
320
|
+
else
|
|
321
|
+
{float shadowPixelDepth=clamp(depthMetric,0.,1.0);
|
|
322
|
+
#ifndef SHADOWFLOAT
|
|
323
|
+
float shadow=unpack(TEXTUREFUNC(shadowSampler,uv,0.));
|
|
324
|
+
#else
|
|
325
|
+
float shadow=TEXTUREFUNC(shadowSampler,uv,0.).x;
|
|
326
|
+
#endif
|
|
327
|
+
return shadowPixelDepth>shadow ? computeFallOff(darkness,clipSpace.xy,frustumEdgeFalloff) : 1.;}}
|
|
328
|
+
#define inline
|
|
329
|
+
float computeShadowWithPoissonSampling(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float mapSize,float darkness,float frustumEdgeFalloff)
|
|
330
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)
|
|
331
|
+
{return 1.0;}
|
|
332
|
+
else
|
|
333
|
+
{float shadowPixelDepth=clamp(depthMetric,0.,1.0);float visibility=1.;vec2 poissonDisk[4];poissonDisk[0]=vec2(-0.94201624,-0.39906216);poissonDisk[1]=vec2(0.94558609,-0.76890725);poissonDisk[2]=vec2(-0.094184101,-0.92938870);poissonDisk[3]=vec2(0.34495938,0.29387760);
|
|
334
|
+
#ifndef SHADOWFLOAT
|
|
335
|
+
if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[0]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[1]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[2]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;if (unpack(TEXTUREFUNC(shadowSampler,uv+poissonDisk[3]*mapSize,0.))<shadowPixelDepth) visibility-=0.25;
|
|
336
|
+
#else
|
|
337
|
+
if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[0]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[1]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[2]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;if (TEXTUREFUNC(shadowSampler,uv+poissonDisk[3]*mapSize,0.).x<shadowPixelDepth) visibility-=0.25;
|
|
338
|
+
#endif
|
|
339
|
+
return computeFallOff(min(1.0,visibility+darkness),clipSpace.xy,frustumEdgeFalloff);}}
|
|
340
|
+
#define inline
|
|
341
|
+
float computeShadowWithESM(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float darkness,float depthScale,float frustumEdgeFalloff)
|
|
342
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)
|
|
343
|
+
{return 1.0;}
|
|
344
|
+
else
|
|
345
|
+
{float shadowPixelDepth=clamp(depthMetric,0.,1.0);
|
|
346
|
+
#ifndef SHADOWFLOAT
|
|
347
|
+
float shadowMapSample=unpack(TEXTUREFUNC(shadowSampler,uv,0.));
|
|
348
|
+
#else
|
|
349
|
+
float shadowMapSample=TEXTUREFUNC(shadowSampler,uv,0.).x;
|
|
350
|
+
#endif
|
|
351
|
+
float esm=1.0-clamp(exp(min(87.,depthScale*shadowPixelDepth))*shadowMapSample,0.,1.-darkness);return computeFallOff(esm,clipSpace.xy,frustumEdgeFalloff);}}
|
|
352
|
+
#define inline
|
|
353
|
+
float computeShadowWithCloseESM(vec4 vPositionFromLight,float depthMetric,sampler2D shadowSampler,float darkness,float depthScale,float frustumEdgeFalloff)
|
|
354
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec2 uv=0.5*clipSpace.xy+vec2(0.5);if (uv.x<0. || uv.x>1.0 || uv.y<0. || uv.y>1.0)
|
|
355
|
+
{return 1.0;}
|
|
356
|
+
else
|
|
357
|
+
{float shadowPixelDepth=clamp(depthMetric,0.,1.0);
|
|
358
|
+
#ifndef SHADOWFLOAT
|
|
359
|
+
float shadowMapSample=unpack(TEXTUREFUNC(shadowSampler,uv,0.));
|
|
360
|
+
#else
|
|
361
|
+
float shadowMapSample=TEXTUREFUNC(shadowSampler,uv,0.).x;
|
|
362
|
+
#endif
|
|
363
|
+
float esm=clamp(exp(min(87.,-depthScale*(shadowPixelDepth-shadowMapSample))),darkness,1.);return computeFallOff(esm,clipSpace.xy,frustumEdgeFalloff);}}
|
|
364
|
+
#ifdef IS_NDC_HALF_ZRANGE
|
|
365
|
+
#define ZINCLIP clipSpace.z
|
|
366
|
+
#else
|
|
367
|
+
#define ZINCLIP uvDepth.z
|
|
368
|
+
#endif
|
|
369
|
+
#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE)
|
|
370
|
+
#define SMALLEST_ABOVE_ZERO 1.1754943508e-38
|
|
371
|
+
#define GREATEST_LESS_THAN_ONE 0.99999994
|
|
372
|
+
#define DISABLE_UNIFORMITY_ANALYSIS
|
|
373
|
+
#define inline
|
|
374
|
+
float computeShadowWithCSMPCF1(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArrayShadow shadowSampler,float darkness,float frustumEdgeFalloff)
|
|
375
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));
|
|
376
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
377
|
+
uvDepth.z=clamp(ZINCLIP,SMALLEST_ABOVE_ZERO,1.);
|
|
378
|
+
#else
|
|
379
|
+
uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);
|
|
380
|
+
#endif
|
|
381
|
+
vec4 uvDepthLayer=vec4(uvDepth.x,uvDepth.y,layer,uvDepth.z);float shadow=texture2D(shadowSampler,uvDepthLayer);shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}
|
|
382
|
+
#define inline
|
|
383
|
+
float computeShadowWithCSMPCF3(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArrayShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)
|
|
384
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));
|
|
385
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
386
|
+
uvDepth.z=clamp(ZINCLIP,SMALLEST_ABOVE_ZERO,1.);
|
|
387
|
+
#else
|
|
388
|
+
uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);
|
|
389
|
+
#endif
|
|
390
|
+
vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x;
|
|
391
|
+
uv+=0.5;
|
|
392
|
+
vec2 st=fract(uv);
|
|
393
|
+
vec2 base_uv=floor(uv)-0.5;
|
|
394
|
+
base_uv*=shadowMapSizeAndInverse.y;
|
|
395
|
+
vec2 uvw0=3.-2.*st;vec2 uvw1=1.+2.*st;vec2 u=vec2((2.-st.x)/uvw0.x-1.,st.x/uvw1.x+1.)*shadowMapSizeAndInverse.y;vec2 v=vec2((2.-st.y)/uvw0.y-1.,st.y/uvw1.y+1.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[0]),layer,uvDepth.z));shadow+=uvw1.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[0]),layer,uvDepth.z));shadow+=uvw0.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[1]),layer,uvDepth.z));shadow+=uvw1.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[1]),layer,uvDepth.z));shadow=shadow/16.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}
|
|
396
|
+
#define inline
|
|
397
|
+
float computeShadowWithCSMPCF5(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArrayShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)
|
|
398
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));
|
|
399
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
400
|
+
uvDepth.z=clamp(ZINCLIP,SMALLEST_ABOVE_ZERO,1.);
|
|
401
|
+
#else
|
|
402
|
+
uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);
|
|
403
|
+
#endif
|
|
404
|
+
vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x;
|
|
405
|
+
uv+=0.5;
|
|
406
|
+
vec2 st=fract(uv);
|
|
407
|
+
vec2 base_uv=floor(uv)-0.5;
|
|
408
|
+
base_uv*=shadowMapSizeAndInverse.y;
|
|
409
|
+
vec2 uvw0=4.-3.*st;vec2 uvw1=vec2(7.);vec2 uvw2=1.+3.*st;vec3 u=vec3((3.-2.*st.x)/uvw0.x-2.,(3.+st.x)/uvw1.x,st.x/uvw2.x+2.)*shadowMapSizeAndInverse.y;vec3 v=vec3((3.-2.*st.y)/uvw0.y-2.,(3.+st.y)/uvw1.y,st.y/uvw2.y+2.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[0]),layer,uvDepth.z));shadow+=uvw1.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[0]),layer,uvDepth.z));shadow+=uvw2.x*uvw0.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[2],v[0]),layer,uvDepth.z));shadow+=uvw0.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[1]),layer,uvDepth.z));shadow+=uvw1.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[1]),layer,uvDepth.z));shadow+=uvw2.x*uvw1.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[2],v[1]),layer,uvDepth.z));shadow+=uvw0.x*uvw2.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[0],v[2]),layer,uvDepth.z));shadow+=uvw1.x*uvw2.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[1],v[2]),layer,uvDepth.z));shadow+=uvw2.x*uvw2.y*texture2D(shadowSampler,vec4(base_uv.xy+vec2(u[2],v[2]),layer,uvDepth.z));shadow=shadow/144.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}
|
|
410
|
+
#define inline
|
|
411
|
+
float computeShadowWithPCF1(vec4 vPositionFromLight,float depthMetric,highp sampler2DShadow shadowSampler,float darkness,float frustumEdgeFalloff)
|
|
412
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;if (depthMetric<0.0 || depthMetric>1.0 || uvDepth.x<0. || uvDepth.x>1.0 || uvDepth.y<0. || uvDepth.y>1.0) {return 1.0;} else {float shadow=TEXTUREFUNC(shadowSampler,uvDepth,0.);shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}
|
|
413
|
+
#define inline
|
|
414
|
+
float computeShadowWithPCF3(vec4 vPositionFromLight,float depthMetric,highp sampler2DShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)
|
|
415
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;if (depthMetric<0.0 || depthMetric>1.0 || uvDepth.x<0. || uvDepth.x>1.0 || uvDepth.y<0. || uvDepth.y>1.0) {return 1.0;} else {vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x;
|
|
416
|
+
uv+=0.5;
|
|
417
|
+
vec2 st=fract(uv);
|
|
418
|
+
vec2 base_uv=floor(uv)-0.5;
|
|
419
|
+
base_uv*=shadowMapSizeAndInverse.y;
|
|
420
|
+
vec2 uvw0=3.-2.*st;vec2 uvw1=1.+2.*st;vec2 u=vec2((2.-st.x)/uvw0.x-1.,st.x/uvw1.x+1.)*shadowMapSizeAndInverse.y;vec2 v=vec2((2.-st.y)/uvw0.y-1.,st.y/uvw1.y+1.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[0]),uvDepth.z),0.);shadow+=uvw1.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[0]),uvDepth.z),0.);shadow+=uvw0.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[1]),uvDepth.z),0.);shadow+=uvw1.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[1]),uvDepth.z),0.);shadow=shadow/16.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}
|
|
421
|
+
#define inline
|
|
422
|
+
float computeShadowWithPCF5(vec4 vPositionFromLight,float depthMetric,highp sampler2DShadow shadowSampler,vec2 shadowMapSizeAndInverse,float darkness,float frustumEdgeFalloff)
|
|
423
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;if (depthMetric<0.0 || depthMetric>1.0 || uvDepth.x<0. || uvDepth.x>1.0 || uvDepth.y<0. || uvDepth.y>1.0) {return 1.0;} else {vec2 uv=uvDepth.xy*shadowMapSizeAndInverse.x;
|
|
424
|
+
uv+=0.5;
|
|
425
|
+
vec2 st=fract(uv);
|
|
426
|
+
vec2 base_uv=floor(uv)-0.5;
|
|
427
|
+
base_uv*=shadowMapSizeAndInverse.y;
|
|
428
|
+
vec2 uvw0=4.-3.*st;vec2 uvw1=vec2(7.);vec2 uvw2=1.+3.*st;vec3 u=vec3((3.-2.*st.x)/uvw0.x-2.,(3.+st.x)/uvw1.x,st.x/uvw2.x+2.)*shadowMapSizeAndInverse.y;vec3 v=vec3((3.-2.*st.y)/uvw0.y-2.,(3.+st.y)/uvw1.y,st.y/uvw2.y+2.)*shadowMapSizeAndInverse.y;float shadow=0.;shadow+=uvw0.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[0]),uvDepth.z),0.);shadow+=uvw1.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[0]),uvDepth.z),0.);shadow+=uvw2.x*uvw0.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[0]),uvDepth.z),0.);shadow+=uvw0.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[1]),uvDepth.z),0.);shadow+=uvw1.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[1]),uvDepth.z),0.);shadow+=uvw2.x*uvw1.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[1]),uvDepth.z),0.);shadow+=uvw0.x*uvw2.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[0],v[2]),uvDepth.z),0.);shadow+=uvw1.x*uvw2.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[1],v[2]),uvDepth.z),0.);shadow+=uvw2.x*uvw2.y*TEXTUREFUNC(shadowSampler,vec3(base_uv.xy+vec2(u[2],v[2]),uvDepth.z),0.);shadow=shadow/144.;shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}
|
|
429
|
+
const vec3 PoissonSamplers32[64]=vec3[64](
|
|
430
|
+
vec3(0.06407013,0.05409927,0.),
|
|
431
|
+
vec3(0.7366577,0.5789394,0.),
|
|
432
|
+
vec3(-0.6270542,-0.5320278,0.),
|
|
433
|
+
vec3(-0.4096107,0.8411095,0.),
|
|
434
|
+
vec3(0.6849564,-0.4990818,0.),
|
|
435
|
+
vec3(-0.874181,-0.04579735,0.),
|
|
436
|
+
vec3(0.9989998,0.0009880066,0.),
|
|
437
|
+
vec3(-0.004920578,-0.9151649,0.),
|
|
438
|
+
vec3(0.1805763,0.9747483,0.),
|
|
439
|
+
vec3(-0.2138451,0.2635818,0.),
|
|
440
|
+
vec3(0.109845,0.3884785,0.),
|
|
441
|
+
vec3(0.06876755,-0.3581074,0.),
|
|
442
|
+
vec3(0.374073,-0.7661266,0.),
|
|
443
|
+
vec3(0.3079132,-0.1216763,0.),
|
|
444
|
+
vec3(-0.3794335,-0.8271583,0.),
|
|
445
|
+
vec3(-0.203878,-0.07715034,0.),
|
|
446
|
+
vec3(0.5912697,0.1469799,0.),
|
|
447
|
+
vec3(-0.88069,0.3031784,0.),
|
|
448
|
+
vec3(0.5040108,0.8283722,0.),
|
|
449
|
+
vec3(-0.5844124,0.5494877,0.),
|
|
450
|
+
vec3(0.6017799,-0.1726654,0.),
|
|
451
|
+
vec3(-0.5554981,0.1559997,0.),
|
|
452
|
+
vec3(-0.3016369,-0.3900928,0.),
|
|
453
|
+
vec3(-0.5550632,-0.1723762,0.),
|
|
454
|
+
vec3(0.925029,0.2995041,0.),
|
|
455
|
+
vec3(-0.2473137,0.5538505,0.),
|
|
456
|
+
vec3(0.9183037,-0.2862392,0.),
|
|
457
|
+
vec3(0.2469421,0.6718712,0.),
|
|
458
|
+
vec3(0.3916397,-0.4328209,0.),
|
|
459
|
+
vec3(-0.03576927,-0.6220032,0.),
|
|
460
|
+
vec3(-0.04661255,0.7995201,0.),
|
|
461
|
+
vec3(0.4402924,0.3640312,0.),
|
|
462
|
+
vec3(0.),
|
|
463
|
+
vec3(0.),
|
|
464
|
+
vec3(0.),
|
|
465
|
+
vec3(0.),
|
|
466
|
+
vec3(0.),
|
|
467
|
+
vec3(0.),
|
|
468
|
+
vec3(0.),
|
|
469
|
+
vec3(0.),
|
|
470
|
+
vec3(0.),
|
|
471
|
+
vec3(0.),
|
|
472
|
+
vec3(0.),
|
|
473
|
+
vec3(0.),
|
|
474
|
+
vec3(0.),
|
|
475
|
+
vec3(0.),
|
|
476
|
+
vec3(0.),
|
|
477
|
+
vec3(0.),
|
|
478
|
+
vec3(0.),
|
|
479
|
+
vec3(0.),
|
|
480
|
+
vec3(0.),
|
|
481
|
+
vec3(0.),
|
|
482
|
+
vec3(0.),
|
|
483
|
+
vec3(0.),
|
|
484
|
+
vec3(0.),
|
|
485
|
+
vec3(0.),
|
|
486
|
+
vec3(0.),
|
|
487
|
+
vec3(0.),
|
|
488
|
+
vec3(0.),
|
|
489
|
+
vec3(0.),
|
|
490
|
+
vec3(0.),
|
|
491
|
+
vec3(0.),
|
|
492
|
+
vec3(0.),
|
|
493
|
+
vec3(0.)
|
|
494
|
+
);const vec3 PoissonSamplers64[64]=vec3[64](
|
|
495
|
+
vec3(-0.613392,0.617481,0.),
|
|
496
|
+
vec3(0.170019,-0.040254,0.),
|
|
497
|
+
vec3(-0.299417,0.791925,0.),
|
|
498
|
+
vec3(0.645680,0.493210,0.),
|
|
499
|
+
vec3(-0.651784,0.717887,0.),
|
|
500
|
+
vec3(0.421003,0.027070,0.),
|
|
501
|
+
vec3(-0.817194,-0.271096,0.),
|
|
502
|
+
vec3(-0.705374,-0.668203,0.),
|
|
503
|
+
vec3(0.977050,-0.108615,0.),
|
|
504
|
+
vec3(0.063326,0.142369,0.),
|
|
505
|
+
vec3(0.203528,0.214331,0.),
|
|
506
|
+
vec3(-0.667531,0.326090,0.),
|
|
507
|
+
vec3(-0.098422,-0.295755,0.),
|
|
508
|
+
vec3(-0.885922,0.215369,0.),
|
|
509
|
+
vec3(0.566637,0.605213,0.),
|
|
510
|
+
vec3(0.039766,-0.396100,0.),
|
|
511
|
+
vec3(0.751946,0.453352,0.),
|
|
512
|
+
vec3(0.078707,-0.715323,0.),
|
|
513
|
+
vec3(-0.075838,-0.529344,0.),
|
|
514
|
+
vec3(0.724479,-0.580798,0.),
|
|
515
|
+
vec3(0.222999,-0.215125,0.),
|
|
516
|
+
vec3(-0.467574,-0.405438,0.),
|
|
517
|
+
vec3(-0.248268,-0.814753,0.),
|
|
518
|
+
vec3(0.354411,-0.887570,0.),
|
|
519
|
+
vec3(0.175817,0.382366,0.),
|
|
520
|
+
vec3(0.487472,-0.063082,0.),
|
|
521
|
+
vec3(-0.084078,0.898312,0.),
|
|
522
|
+
vec3(0.488876,-0.783441,0.),
|
|
523
|
+
vec3(0.470016,0.217933,0.),
|
|
524
|
+
vec3(-0.696890,-0.549791,0.),
|
|
525
|
+
vec3(-0.149693,0.605762,0.),
|
|
526
|
+
vec3(0.034211,0.979980,0.),
|
|
527
|
+
vec3(0.503098,-0.308878,0.),
|
|
528
|
+
vec3(-0.016205,-0.872921,0.),
|
|
529
|
+
vec3(0.385784,-0.393902,0.),
|
|
530
|
+
vec3(-0.146886,-0.859249,0.),
|
|
531
|
+
vec3(0.643361,0.164098,0.),
|
|
532
|
+
vec3(0.634388,-0.049471,0.),
|
|
533
|
+
vec3(-0.688894,0.007843,0.),
|
|
534
|
+
vec3(0.464034,-0.188818,0.),
|
|
535
|
+
vec3(-0.440840,0.137486,0.),
|
|
536
|
+
vec3(0.364483,0.511704,0.),
|
|
537
|
+
vec3(0.034028,0.325968,0.),
|
|
538
|
+
vec3(0.099094,-0.308023,0.),
|
|
539
|
+
vec3(0.693960,-0.366253,0.),
|
|
540
|
+
vec3(0.678884,-0.204688,0.),
|
|
541
|
+
vec3(0.001801,0.780328,0.),
|
|
542
|
+
vec3(0.145177,-0.898984,0.),
|
|
543
|
+
vec3(0.062655,-0.611866,0.),
|
|
544
|
+
vec3(0.315226,-0.604297,0.),
|
|
545
|
+
vec3(-0.780145,0.486251,0.),
|
|
546
|
+
vec3(-0.371868,0.882138,0.),
|
|
547
|
+
vec3(0.200476,0.494430,0.),
|
|
548
|
+
vec3(-0.494552,-0.711051,0.),
|
|
549
|
+
vec3(0.612476,0.705252,0.),
|
|
550
|
+
vec3(-0.578845,-0.768792,0.),
|
|
551
|
+
vec3(-0.772454,-0.090976,0.),
|
|
552
|
+
vec3(0.504440,0.372295,0.),
|
|
553
|
+
vec3(0.155736,0.065157,0.),
|
|
554
|
+
vec3(0.391522,0.849605,0.),
|
|
555
|
+
vec3(-0.620106,-0.328104,0.),
|
|
556
|
+
vec3(0.789239,-0.419965,0.),
|
|
557
|
+
vec3(-0.545396,0.538133,0.),
|
|
558
|
+
vec3(-0.178564,-0.596057,0.)
|
|
559
|
+
);
|
|
560
|
+
#define inline
|
|
561
|
+
float computeShadowWithCSMPCSS(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,int searchTapCount,int pcfTapCount,vec3[64] poissonSamplers,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)
|
|
562
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));
|
|
563
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
564
|
+
uvDepth.z=clamp(ZINCLIP,SMALLEST_ABOVE_ZERO,1.);
|
|
565
|
+
#else
|
|
566
|
+
uvDepth.z=clamp(ZINCLIP,0.,GREATEST_LESS_THAN_ONE);
|
|
567
|
+
#endif
|
|
568
|
+
vec4 uvDepthLayer=vec4(uvDepth.x,uvDepth.y,layer,uvDepth.z);float blockerDepth=0.0;float sumBlockerDepth=0.0;float numBlocker=0.0;for (int i=0; i<searchTapCount; i ++) {blockerDepth=texture2D(depthSampler,vec3(uvDepth.xy+(lightSizeUV*lightSizeUVCorrection*shadowMapSizeInverse*PoissonSamplers32[i].xy),layer)).r;if (blockerDepth<depthMetric) {sumBlockerDepth+=blockerDepth;numBlocker++;}}
|
|
569
|
+
float avgBlockerDepth=sumBlockerDepth/numBlocker;float AAOffset=shadowMapSizeInverse*10.;float penumbraRatio=((depthMetric-avgBlockerDepth)*depthCorrection+AAOffset);vec4 filterRadius=vec4(penumbraRatio*lightSizeUV*lightSizeUVCorrection*shadowMapSizeInverse,0.,0.);float random=getRand(vPositionFromLight.xy);float rotationAngle=random*3.1415926;vec2 rotationVector=vec2(cos(rotationAngle),sin(rotationAngle));float shadow=0.;for (int i=0; i<pcfTapCount; i++) {vec4 offset=vec4(poissonSamplers[i],0.);offset=vec4(offset.x*rotationVector.x-offset.y*rotationVector.y,offset.y*rotationVector.x+offset.x*rotationVector.y,0.,0.);shadow+=texture2D(shadowSampler,uvDepthLayer+offset*filterRadius);}
|
|
570
|
+
shadow/=float(pcfTapCount);shadow=mix(shadow,1.,min((depthMetric-avgBlockerDepth)*depthCorrection*penumbraDarkness,1.));shadow=mix(darkness,1.,shadow);if (numBlocker<1.0) {return 1.0;}
|
|
571
|
+
else
|
|
572
|
+
{return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}
|
|
573
|
+
#define inline
|
|
574
|
+
float computeShadowWithPCSS(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,int searchTapCount,int pcfTapCount,vec3[64] poissonSamplers)
|
|
575
|
+
{vec3 clipSpace=vPositionFromLight.xyz/vPositionFromLight.w;vec3 uvDepth=vec3(0.5*clipSpace.xyz+vec3(0.5));uvDepth.z=ZINCLIP;if (depthMetric<0.0 || depthMetric>1.0 || uvDepth.x<0. || uvDepth.x>1.0 || uvDepth.y<0. || uvDepth.y>1.0) {return 1.0;} else {float blockerDepth=0.0;float sumBlockerDepth=0.0;float numBlocker=0.0;for (int i=0; i<searchTapCount; i ++) {blockerDepth=TEXTUREFUNC(depthSampler,uvDepth.xy+(lightSizeUV*shadowMapSizeInverse*PoissonSamplers32[i].xy),0.).r;if (blockerDepth<depthMetric) {sumBlockerDepth+=blockerDepth;numBlocker++;}}
|
|
576
|
+
if (numBlocker<1.0) {return 1.0;}
|
|
577
|
+
else
|
|
578
|
+
{float avgBlockerDepth=sumBlockerDepth/numBlocker;float AAOffset=shadowMapSizeInverse*10.;float penumbraRatio=((depthMetric-avgBlockerDepth)+AAOffset);float filterRadius=penumbraRatio*lightSizeUV*shadowMapSizeInverse;float random=getRand(vPositionFromLight.xy);float rotationAngle=random*3.1415926;vec2 rotationVector=vec2(cos(rotationAngle),sin(rotationAngle));float shadow=0.;for (int i=0; i<pcfTapCount; i++) {vec3 offset=poissonSamplers[i];offset=vec3(offset.x*rotationVector.x-offset.y*rotationVector.y,offset.y*rotationVector.x+offset.x*rotationVector.y,0.);shadow+=TEXTUREFUNC(shadowSampler,uvDepth+offset*filterRadius,0.);}
|
|
579
|
+
shadow/=float(pcfTapCount);shadow=mix(shadow,1.,depthMetric-avgBlockerDepth);shadow=mix(darkness,1.,shadow);return computeFallOff(shadow,clipSpace.xy,frustumEdgeFalloff);}}}
|
|
580
|
+
#define inline
|
|
581
|
+
float computeShadowWithPCSS16(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff)
|
|
582
|
+
{return computeShadowWithPCSS(vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,16,PoissonSamplers32);}
|
|
583
|
+
#define inline
|
|
584
|
+
float computeShadowWithPCSS32(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff)
|
|
585
|
+
{return computeShadowWithPCSS(vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,32,PoissonSamplers32);}
|
|
586
|
+
#define inline
|
|
587
|
+
float computeShadowWithPCSS64(vec4 vPositionFromLight,float depthMetric,sampler2D depthSampler,highp sampler2DShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff)
|
|
588
|
+
{return computeShadowWithPCSS(vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,32,64,PoissonSamplers64);}
|
|
589
|
+
#define inline
|
|
590
|
+
float computeShadowWithCSMPCSS16(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)
|
|
591
|
+
{return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,16,PoissonSamplers32,lightSizeUVCorrection,depthCorrection,penumbraDarkness);}
|
|
592
|
+
#define inline
|
|
593
|
+
float computeShadowWithCSMPCSS32(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)
|
|
594
|
+
{return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,16,32,PoissonSamplers32,lightSizeUVCorrection,depthCorrection,penumbraDarkness);}
|
|
595
|
+
#define inline
|
|
596
|
+
float computeShadowWithCSMPCSS64(float layer,vec4 vPositionFromLight,float depthMetric,highp sampler2DArray depthSampler,highp sampler2DArrayShadow shadowSampler,float shadowMapSizeInverse,float lightSizeUV,float darkness,float frustumEdgeFalloff,vec2 lightSizeUVCorrection,float depthCorrection,float penumbraDarkness)
|
|
597
|
+
{return computeShadowWithCSMPCSS(layer,vPositionFromLight,depthMetric,depthSampler,shadowSampler,shadowMapSizeInverse,lightSizeUV,darkness,frustumEdgeFalloff,32,64,PoissonSamplers64,lightSizeUVCorrection,depthCorrection,penumbraDarkness);}
|
|
598
|
+
#endif
|
|
599
|
+
#endif
|
|
600
|
+
`;e.IncludesShadersStore[a]||(e.IncludesShadersStore[a]=L);const y={name:a,shader:L},$=Object.freeze(Object.defineProperty({__proto__:null,shadowsFragmentFunctions:y},Symbol.toStringTag,{value:"Module"})),r="lightFragment",X=`#ifdef LIGHT{X}
|
|
601
|
+
#if defined(SHADOWONLY) || defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X})
|
|
602
|
+
#else
|
|
603
|
+
vec4 diffuse{X}=light{X}.vLightDiffuse;
|
|
604
|
+
#define CUSTOM_LIGHT{X}_COLOR
|
|
605
|
+
#if defined(PBR) && defined(CLUSTLIGHT{X}) && defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0
|
|
606
|
+
{int sliceIndex=min(getClusteredSliceIndex(light{X}.vSliceData,vViewDepth),CLUSTLIGHT_SLICES-1);info=computeClusteredLighting(
|
|
607
|
+
lightDataTexture{X},
|
|
608
|
+
tileMaskTexture{X},
|
|
609
|
+
light{X}.vLightData,
|
|
610
|
+
ivec2(light{X}.vSliceRanges[sliceIndex]),
|
|
611
|
+
viewDirectionW,
|
|
612
|
+
normalW,
|
|
613
|
+
vPositionW,
|
|
614
|
+
surfaceAlbedo,
|
|
615
|
+
reflectivityOut
|
|
616
|
+
#ifdef IRIDESCENCE
|
|
617
|
+
,iridescenceIntensity
|
|
618
|
+
#endif
|
|
619
|
+
#ifdef SS_TRANSLUCENCY
|
|
620
|
+
,subSurfaceOut
|
|
621
|
+
#endif
|
|
622
|
+
#ifdef SPECULARTERM
|
|
623
|
+
,AARoughnessFactors.x
|
|
624
|
+
#endif
|
|
625
|
+
#ifdef ANISOTROPIC
|
|
626
|
+
,anisotropicOut
|
|
627
|
+
#endif
|
|
628
|
+
#ifdef SHEEN
|
|
629
|
+
,sheenOut
|
|
630
|
+
#endif
|
|
631
|
+
#ifdef CLEARCOAT
|
|
632
|
+
,clearcoatOut
|
|
633
|
+
#endif
|
|
634
|
+
);}
|
|
635
|
+
#elif defined(PBR)
|
|
636
|
+
#ifdef SPOTLIGHT{X}
|
|
637
|
+
preInfo=computePointAndSpotPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW,vPositionW);
|
|
638
|
+
#elif defined(POINTLIGHT{X})
|
|
639
|
+
preInfo=computePointAndSpotPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW,vPositionW);
|
|
640
|
+
#elif defined(HEMILIGHT{X})
|
|
641
|
+
preInfo=computeHemisphericPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW);
|
|
642
|
+
#elif defined(DIRLIGHT{X})
|
|
643
|
+
preInfo=computeDirectionalPreLightingInfo(light{X}.vLightData,viewDirectionW,normalW);
|
|
644
|
+
#elif defined(AREALIGHT{X}) && defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
|
|
645
|
+
#if defined(RECTAREALIGHTEMISSIONTEXTURE{X})
|
|
646
|
+
preInfo=computeAreaPreLightingInfoWithTexture(areaLightsLTC1Sampler,areaLightsLTC2Sampler,rectAreaLightEmissionTexture{X},viewDirectionW,normalW,vPositionW,light{X}.vLightData,light{X}.vLightWidth.xyz,light{X}.vLightHeight.xyz,roughness);
|
|
647
|
+
#else
|
|
648
|
+
preInfo=computeAreaPreLightingInfo(areaLightsLTC1Sampler,areaLightsLTC2Sampler,viewDirectionW,normalW,vPositionW,light{X}.vLightData,light{X}.vLightWidth.xyz,light{X}.vLightHeight.xyz,roughness);
|
|
649
|
+
#endif
|
|
650
|
+
#endif
|
|
651
|
+
preInfo.NdotV=NdotV;
|
|
652
|
+
#ifdef SPOTLIGHT{X}
|
|
653
|
+
#ifdef LIGHT_FALLOFF_GLTF{X}
|
|
654
|
+
preInfo.attenuation=computeDistanceLightFalloff_GLTF(preInfo.lightDistanceSquared,light{X}.vLightFalloff.y);
|
|
655
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
656
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});
|
|
657
|
+
#else
|
|
658
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_GLTF(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightFalloff.z,light{X}.vLightFalloff.w);
|
|
659
|
+
#endif
|
|
660
|
+
#elif defined(LIGHT_FALLOFF_PHYSICAL{X})
|
|
661
|
+
preInfo.attenuation=computeDistanceLightFalloff_Physical(preInfo.lightDistanceSquared);
|
|
662
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
663
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});
|
|
664
|
+
#else
|
|
665
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_Physical(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w);
|
|
666
|
+
#endif
|
|
667
|
+
#elif defined(LIGHT_FALLOFF_STANDARD{X})
|
|
668
|
+
preInfo.attenuation=computeDistanceLightFalloff_Standard(preInfo.lightOffset,light{X}.vLightFalloff.x);
|
|
669
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
670
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});
|
|
671
|
+
#else
|
|
672
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_Standard(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w,light{X}.vLightData.w);
|
|
673
|
+
#endif
|
|
674
|
+
#else
|
|
675
|
+
preInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light{X}.vLightFalloff.x,light{X}.vLightFalloff.y);
|
|
676
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
677
|
+
preInfo.attenuation*=computeDirectionalLightFalloff_IES(light{X}.vLightDirection.xyz,preInfo.L,iesLightTexture{X});
|
|
678
|
+
#else
|
|
679
|
+
preInfo.attenuation*=computeDirectionalLightFalloff(light{X}.vLightDirection.xyz,preInfo.L,light{X}.vLightDirection.w,light{X}.vLightData.w,light{X}.vLightFalloff.z,light{X}.vLightFalloff.w);
|
|
680
|
+
#endif
|
|
681
|
+
#endif
|
|
682
|
+
#elif defined(POINTLIGHT{X})
|
|
683
|
+
#ifdef LIGHT_FALLOFF_GLTF{X}
|
|
684
|
+
preInfo.attenuation=computeDistanceLightFalloff_GLTF(preInfo.lightDistanceSquared,light{X}.vLightFalloff.y);
|
|
685
|
+
#elif defined(LIGHT_FALLOFF_PHYSICAL{X})
|
|
686
|
+
preInfo.attenuation=computeDistanceLightFalloff_Physical(preInfo.lightDistanceSquared);
|
|
687
|
+
#elif defined(LIGHT_FALLOFF_STANDARD{X})
|
|
688
|
+
preInfo.attenuation=computeDistanceLightFalloff_Standard(preInfo.lightOffset,light{X}.vLightFalloff.x);
|
|
689
|
+
#else
|
|
690
|
+
preInfo.attenuation=computeDistanceLightFalloff(preInfo.lightOffset,preInfo.lightDistanceSquared,light{X}.vLightFalloff.x,light{X}.vLightFalloff.y);
|
|
691
|
+
#endif
|
|
692
|
+
#else
|
|
693
|
+
preInfo.attenuation=1.0;
|
|
694
|
+
#endif
|
|
695
|
+
#if defined(HEMILIGHT{X})
|
|
696
|
+
preInfo.roughness=roughness;
|
|
697
|
+
#elif defined(AREALIGHT{X}) && defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
|
|
698
|
+
preInfo.roughness=roughness;
|
|
699
|
+
#else
|
|
700
|
+
preInfo.roughness=adjustRoughnessFromLightProperties(roughness,light{X}.vLightSpecular.a,preInfo.lightDistance);
|
|
701
|
+
#endif
|
|
702
|
+
preInfo.diffuseRoughness=diffuseRoughness;preInfo.surfaceAlbedo=surfaceAlbedo;
|
|
703
|
+
#ifdef IRIDESCENCE
|
|
704
|
+
preInfo.iridescenceIntensity=iridescenceIntensity;
|
|
705
|
+
#endif
|
|
706
|
+
#ifdef SS_TRANSLUCENCY
|
|
707
|
+
info.diffuseTransmission=vec3(0.0);
|
|
708
|
+
#endif
|
|
709
|
+
#ifdef HEMILIGHT{X}
|
|
710
|
+
info.diffuse=computeHemisphericDiffuseLighting(preInfo,diffuse{X}.rgb,light{X}.vLightGround);
|
|
711
|
+
#elif defined(AREALIGHT{X}) && defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
|
|
712
|
+
info.diffuse=computeAreaDiffuseLighting(preInfo,diffuse{X}.rgb);
|
|
713
|
+
#elif defined(SS_TRANSLUCENCY)
|
|
714
|
+
#ifndef SS_TRANSLUCENCY_LEGACY
|
|
715
|
+
info.diffuse=computeDiffuseLighting(preInfo,diffuse{X}.rgb)*(1.0-subSurfaceOut.translucencyIntensity);info.diffuseTransmission=computeDiffuseTransmittedLighting(preInfo,diffuse{X}.rgb,subSurfaceOut.transmittance);
|
|
716
|
+
#else
|
|
717
|
+
info.diffuse=computeDiffuseTransmittedLighting(preInfo,diffuse{X}.rgb,subSurfaceOut.transmittance);
|
|
718
|
+
#endif
|
|
719
|
+
#else
|
|
720
|
+
info.diffuse=computeDiffuseLighting(preInfo,diffuse{X}.rgb);
|
|
721
|
+
#endif
|
|
722
|
+
#ifdef SPECULARTERM
|
|
723
|
+
#if defined(AREALIGHT{X}) && defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
|
|
724
|
+
info.specular=computeAreaSpecularLighting(preInfo,light{X}.vLightSpecular.rgb,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90);
|
|
725
|
+
#else
|
|
726
|
+
#if (CONDUCTOR_SPECULAR_MODEL==CONDUCTOR_SPECULAR_MODEL_OPENPBR)
|
|
727
|
+
{vec3 metalFresnel=reflectivityOut.specularWeight*getF82Specular(preInfo.VdotH,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90,reflectivityOut.roughness);vec3 dielectricFresnel=fresnelSchlickGGX(preInfo.VdotH,reflectivityOut.dielectricColorF0,reflectivityOut.colorReflectanceF90);coloredFresnel=mix(dielectricFresnel,metalFresnel,reflectivityOut.metallic);}
|
|
728
|
+
#else
|
|
729
|
+
coloredFresnel=fresnelSchlickGGX(preInfo.VdotH,clearcoatOut.specularEnvironmentR0,reflectivityOut.colorReflectanceF90);
|
|
730
|
+
#endif
|
|
731
|
+
#ifndef LEGACY_SPECULAR_ENERGY_CONSERVATION
|
|
732
|
+
{float NdotH=dot(normalW,preInfo.H);vec3 fresnel=fresnelSchlickGGX(NdotH,vec3(reflectanceF0),specularEnvironmentR90);info.diffuse*=(vec3(1.0)-fresnel);}
|
|
733
|
+
#endif
|
|
734
|
+
#ifdef ANISOTROPIC
|
|
735
|
+
info.specular=computeAnisotropicSpecularLighting(preInfo,viewDirectionW,normalW,anisotropicOut.anisotropicTangent,anisotropicOut.anisotropicBitangent,anisotropicOut.anisotropy,clearcoatOut.specularEnvironmentR0,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);
|
|
736
|
+
#else
|
|
737
|
+
info.specular=computeSpecularLighting(preInfo,normalW,clearcoatOut.specularEnvironmentR0,coloredFresnel,AARoughnessFactors.x,diffuse{X}.rgb);
|
|
738
|
+
#endif
|
|
739
|
+
#endif
|
|
740
|
+
#endif
|
|
741
|
+
#ifndef AREALIGHT{X}
|
|
742
|
+
#ifdef SHEEN
|
|
743
|
+
#ifdef SHEEN_LINKWITHALBEDO
|
|
744
|
+
preInfo.roughness=sheenOut.sheenIntensity;
|
|
745
|
+
#else
|
|
746
|
+
#ifdef HEMILIGHT{X}
|
|
747
|
+
preInfo.roughness=sheenOut.sheenRoughness;
|
|
748
|
+
#else
|
|
749
|
+
preInfo.roughness=adjustRoughnessFromLightProperties(sheenOut.sheenRoughness,light{X}.vLightSpecular.a,preInfo.lightDistance);
|
|
750
|
+
#endif
|
|
751
|
+
#endif
|
|
752
|
+
info.sheen=computeSheenLighting(preInfo,normalW,sheenOut.sheenColor,specularEnvironmentR90,AARoughnessFactors.x,diffuse{X}.rgb);
|
|
753
|
+
#endif
|
|
754
|
+
#ifdef CLEARCOAT
|
|
755
|
+
#ifdef HEMILIGHT{X}
|
|
756
|
+
preInfo.roughness=clearcoatOut.clearCoatRoughness;
|
|
757
|
+
#else
|
|
758
|
+
preInfo.roughness=adjustRoughnessFromLightProperties(clearcoatOut.clearCoatRoughness,light{X}.vLightSpecular.a,preInfo.lightDistance);
|
|
759
|
+
#endif
|
|
760
|
+
info.clearCoat=computeClearCoatLighting(preInfo,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatAARoughnessFactors.x,clearcoatOut.clearCoatIntensity,diffuse{X}.rgb);
|
|
761
|
+
#ifdef CLEARCOAT_TINT
|
|
762
|
+
absorption=computeClearCoatLightingAbsorption(clearcoatOut.clearCoatNdotVRefract,preInfo.L,clearcoatOut.clearCoatNormalW,clearcoatOut.clearCoatColor,clearcoatOut.clearCoatThickness,clearcoatOut.clearCoatIntensity);info.diffuse*=absorption;
|
|
763
|
+
#ifdef SS_TRANSLUCENCY
|
|
764
|
+
info.diffuseTransmission*=absorption;
|
|
765
|
+
#endif
|
|
766
|
+
#ifdef SPECULARTERM
|
|
767
|
+
info.specular*=absorption;
|
|
768
|
+
#endif
|
|
769
|
+
#endif
|
|
770
|
+
info.diffuse*=info.clearCoat.w;
|
|
771
|
+
#ifdef SS_TRANSLUCENCY
|
|
772
|
+
info.diffuseTransmission*=info.clearCoat.w;
|
|
773
|
+
#endif
|
|
774
|
+
#ifdef SPECULARTERM
|
|
775
|
+
info.specular*=info.clearCoat.w;
|
|
776
|
+
#endif
|
|
777
|
+
#ifdef SHEEN
|
|
778
|
+
info.sheen*=info.clearCoat.w;
|
|
779
|
+
#endif
|
|
780
|
+
#endif
|
|
781
|
+
#endif
|
|
782
|
+
#else
|
|
783
|
+
#ifdef SPOTLIGHT{X}
|
|
784
|
+
#ifdef IESLIGHTTEXTURE{X}
|
|
785
|
+
info=computeIESSpotLighting(viewDirectionW,normalW,light{X}.vLightData,light{X}.vLightDirection,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness,iesLightTexture{X});
|
|
786
|
+
#else
|
|
787
|
+
info=computeSpotLighting(viewDirectionW,normalW,light{X}.vLightData,light{X}.vLightDirection,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness);
|
|
788
|
+
#endif
|
|
789
|
+
#elif defined(HEMILIGHT{X})
|
|
790
|
+
info=computeHemisphericLighting(viewDirectionW,normalW,light{X}.vLightData,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,light{X}.vLightGround,glossiness);
|
|
791
|
+
#elif defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})
|
|
792
|
+
info=computeLighting(viewDirectionW,normalW,light{X}.vLightData,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,diffuse{X}.a,glossiness);
|
|
793
|
+
#elif defined(AREALIGHT{X}) && defined(AREALIGHTUSED) && defined(AREALIGHTSUPPORTED)
|
|
794
|
+
#if defined(RECTAREALIGHTEMISSIONTEXTURE{X})
|
|
795
|
+
info=computeAreaLightingWithTexture(areaLightsLTC1Sampler,areaLightsLTC2Sampler,rectAreaLightEmissionTexture{X},viewDirectionW,normalW,vPositionW,light{X}.vLightData.xyz,light{X}.vLightWidth.rgb,light{X}.vLightHeight.rgb,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,
|
|
796
|
+
#ifdef AREALIGHTNOROUGHTNESS
|
|
797
|
+
0.5
|
|
798
|
+
#else
|
|
799
|
+
vReflectionInfos.y
|
|
800
|
+
#endif
|
|
801
|
+
#else
|
|
802
|
+
info=computeAreaLighting(areaLightsLTC1Sampler,areaLightsLTC2Sampler,viewDirectionW,normalW,vPositionW,light{X}.vLightData.xyz,light{X}.vLightWidth.rgb,light{X}.vLightHeight.rgb,diffuse{X}.rgb,light{X}.vLightSpecular.rgb,
|
|
803
|
+
#ifdef AREALIGHTNOROUGHTNESS
|
|
804
|
+
0.5
|
|
805
|
+
#else
|
|
806
|
+
vReflectionInfos.y
|
|
807
|
+
#endif
|
|
808
|
+
#endif
|
|
809
|
+
);
|
|
810
|
+
#elif defined(CLUSTLIGHT{X}) && CLUSTLIGHT_BATCH>0
|
|
811
|
+
{int sliceIndex=min(getClusteredSliceIndex(light{X}.vSliceData,vViewDepth),CLUSTLIGHT_SLICES-1);info=computeClusteredLighting(lightDataTexture{X},tileMaskTexture{X},viewDirectionW,normalW,light{X}.vLightData,ivec2(light{X}.vSliceRanges[sliceIndex]),glossiness);}
|
|
812
|
+
#endif
|
|
813
|
+
#endif
|
|
814
|
+
#ifdef PROJECTEDLIGHTTEXTURE{X}
|
|
815
|
+
info.diffuse*=computeProjectionTextureDiffuseLighting(projectionLightTexture{X},textureProjectionMatrix{X},vPositionW);
|
|
816
|
+
#endif
|
|
817
|
+
#endif
|
|
818
|
+
#ifdef SHADOW{X}
|
|
819
|
+
#ifdef SHADOWCSM{X}
|
|
820
|
+
for (int i=0; i<SHADOWCSMNUM_CASCADES{X}; i++)
|
|
821
|
+
{
|
|
822
|
+
#ifdef SHADOWCSM_RIGHTHANDED{X}
|
|
823
|
+
diff{X}=viewFrustumZ{X}[i]+vPositionFromCamera{X}.z;
|
|
824
|
+
#else
|
|
825
|
+
diff{X}=viewFrustumZ{X}[i]-vPositionFromCamera{X}.z;
|
|
826
|
+
#endif
|
|
827
|
+
if (diff{X}>=0.) {index{X}=i;break;}}
|
|
828
|
+
#ifdef SHADOWCSMUSESHADOWMAXZ{X}
|
|
829
|
+
if (index{X}>=0)
|
|
830
|
+
#endif
|
|
831
|
+
{
|
|
832
|
+
#if defined(SHADOWPCF{X})
|
|
833
|
+
#if defined(SHADOWLOWQUALITY{X})
|
|
834
|
+
shadow=computeShadowWithCSMPCF1(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
835
|
+
#elif defined(SHADOWMEDIUMQUALITY{X})
|
|
836
|
+
shadow=computeShadowWithCSMPCF3(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
837
|
+
#else
|
|
838
|
+
shadow=computeShadowWithCSMPCF5(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
839
|
+
#endif
|
|
840
|
+
#elif defined(SHADOWPCSS{X})
|
|
841
|
+
#if defined(SHADOWLOWQUALITY{X})
|
|
842
|
+
shadow=computeShadowWithCSMPCSS16(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});
|
|
843
|
+
#elif defined(SHADOWMEDIUMQUALITY{X})
|
|
844
|
+
shadow=computeShadowWithCSMPCSS32(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});
|
|
845
|
+
#else
|
|
846
|
+
shadow=computeShadowWithCSMPCSS64(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});
|
|
847
|
+
#endif
|
|
848
|
+
#else
|
|
849
|
+
shadow=computeShadowCSM(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
850
|
+
#endif
|
|
851
|
+
#ifdef SHADOWCSMDEBUG{X}
|
|
852
|
+
shadowDebug{X}=vec3(shadow)*vCascadeColorsMultiplier{X}[index{X}];
|
|
853
|
+
#endif
|
|
854
|
+
#ifndef SHADOWCSMNOBLEND{X}
|
|
855
|
+
float frustumLength=frustumLengths{X}[index{X}];float diffRatio=clamp(diff{X}/frustumLength,0.,1.)*cascadeBlendFactor{X};if (index{X}<(SHADOWCSMNUM_CASCADES{X}-1) && diffRatio<1.)
|
|
856
|
+
{index{X}+=1;float nextShadow=0.;
|
|
857
|
+
#if defined(SHADOWPCF{X})
|
|
858
|
+
#if defined(SHADOWLOWQUALITY{X})
|
|
859
|
+
nextShadow=computeShadowWithCSMPCF1(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
860
|
+
#elif defined(SHADOWMEDIUMQUALITY{X})
|
|
861
|
+
nextShadow=computeShadowWithCSMPCF3(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
862
|
+
#else
|
|
863
|
+
nextShadow=computeShadowWithCSMPCF5(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
864
|
+
#endif
|
|
865
|
+
#elif defined(SHADOWPCSS{X})
|
|
866
|
+
#if defined(SHADOWLOWQUALITY{X})
|
|
867
|
+
nextShadow=computeShadowWithCSMPCSS16(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});
|
|
868
|
+
#elif defined(SHADOWMEDIUMQUALITY{X})
|
|
869
|
+
nextShadow=computeShadowWithCSMPCSS32(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});
|
|
870
|
+
#else
|
|
871
|
+
nextShadow=computeShadowWithCSMPCSS64(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w,lightSizeUVCorrection{X}[index{X}],depthCorrection{X}[index{X}],penumbraDarkness{X});
|
|
872
|
+
#endif
|
|
873
|
+
#else
|
|
874
|
+
nextShadow=computeShadowCSM(float(index{X}),vPositionFromLight{X}[index{X}],vDepthMetric{X}[index{X}],shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
875
|
+
#endif
|
|
876
|
+
shadow=mix(nextShadow,shadow,diffRatio);
|
|
877
|
+
#ifdef SHADOWCSMDEBUG{X}
|
|
878
|
+
shadowDebug{X}=mix(vec3(nextShadow)*vCascadeColorsMultiplier{X}[index{X}],shadowDebug{X},diffRatio);
|
|
879
|
+
#endif
|
|
880
|
+
}
|
|
881
|
+
#endif
|
|
882
|
+
}
|
|
883
|
+
#elif defined(SHADOWCLOSEESM{X})
|
|
884
|
+
#if defined(SHADOWCUBE{X})
|
|
885
|
+
shadow=computeShadowWithCloseESMCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.depthValues);
|
|
886
|
+
#else
|
|
887
|
+
shadow=computeShadowWithCloseESM(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.shadowsInfo.w);
|
|
888
|
+
#endif
|
|
889
|
+
#elif defined(SHADOWESM{X})
|
|
890
|
+
#if defined(SHADOWCUBE{X})
|
|
891
|
+
shadow=computeShadowWithESMCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.depthValues);
|
|
892
|
+
#else
|
|
893
|
+
shadow=computeShadowWithESM(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.z,light{X}.shadowsInfo.w);
|
|
894
|
+
#endif
|
|
895
|
+
#elif defined(SHADOWPOISSON{X})
|
|
896
|
+
#if defined(SHADOWCUBE{X})
|
|
897
|
+
shadow=computeShadowWithPoissonSamplingCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.x,light{X}.depthValues);
|
|
898
|
+
#else
|
|
899
|
+
shadow=computeShadowWithPoissonSampling(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
900
|
+
#endif
|
|
901
|
+
#elif defined(SHADOWPCF{X})
|
|
902
|
+
#if defined(SHADOWLOWQUALITY{X})
|
|
903
|
+
shadow=computeShadowWithPCF1(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
904
|
+
#elif defined(SHADOWMEDIUMQUALITY{X})
|
|
905
|
+
shadow=computeShadowWithPCF3(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
906
|
+
#else
|
|
907
|
+
shadow=computeShadowWithPCF5(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.yz,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
908
|
+
#endif
|
|
909
|
+
#elif defined(SHADOWPCSS{X})
|
|
910
|
+
#if defined(SHADOWLOWQUALITY{X})
|
|
911
|
+
shadow=computeShadowWithPCSS16(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
912
|
+
#elif defined(SHADOWMEDIUMQUALITY{X})
|
|
913
|
+
shadow=computeShadowWithPCSS32(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
914
|
+
#else
|
|
915
|
+
shadow=computeShadowWithPCSS64(vPositionFromLight{X},vDepthMetric{X},depthTexture{X},shadowTexture{X},light{X}.shadowsInfo.y,light{X}.shadowsInfo.z,light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
916
|
+
#endif
|
|
917
|
+
#else
|
|
918
|
+
#if defined(SHADOWCUBE{X})
|
|
919
|
+
shadow=computeShadowCube(vPositionW,light{X}.vLightData.xyz,shadowTexture{X},light{X}.shadowsInfo.x,light{X}.depthValues);
|
|
920
|
+
#else
|
|
921
|
+
shadow=computeShadow(vPositionFromLight{X},vDepthMetric{X},shadowTexture{X},light{X}.shadowsInfo.x,light{X}.shadowsInfo.w);
|
|
922
|
+
#endif
|
|
923
|
+
#endif
|
|
924
|
+
#ifdef SHADOWONLY
|
|
925
|
+
#ifndef SHADOWINUSE
|
|
926
|
+
#define SHADOWINUSE
|
|
927
|
+
#endif
|
|
928
|
+
globalShadow+=shadow;shadowLightCount+=1.0;
|
|
929
|
+
#endif
|
|
930
|
+
#else
|
|
931
|
+
shadow=1.;
|
|
932
|
+
#endif
|
|
933
|
+
aggShadow+=shadow;numLights+=1.0;
|
|
934
|
+
#ifndef SHADOWONLY
|
|
935
|
+
#ifdef CUSTOMUSERLIGHTING
|
|
936
|
+
diffuseBase+=computeCustomDiffuseLighting(info,diffuseBase,shadow);
|
|
937
|
+
#ifdef SPECULARTERM
|
|
938
|
+
specularBase+=computeCustomSpecularLighting(info,specularBase,shadow);
|
|
939
|
+
#endif
|
|
940
|
+
#elif defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X})
|
|
941
|
+
diffuseBase+=lightmapColor.rgb*shadow;
|
|
942
|
+
#ifdef SPECULARTERM
|
|
943
|
+
#ifndef LIGHTMAPNOSPECULAR{X}
|
|
944
|
+
specularBase+=info.specular*shadow*lightmapColor.rgb;
|
|
945
|
+
#endif
|
|
946
|
+
#endif
|
|
947
|
+
#ifdef CLEARCOAT
|
|
948
|
+
#ifndef LIGHTMAPNOSPECULAR{X}
|
|
949
|
+
clearCoatBase+=info.clearCoat.rgb*shadow*lightmapColor.rgb;
|
|
950
|
+
#endif
|
|
951
|
+
#endif
|
|
952
|
+
#ifdef SHEEN
|
|
953
|
+
#ifndef LIGHTMAPNOSPECULAR{X}
|
|
954
|
+
sheenBase+=info.sheen.rgb*shadow;
|
|
955
|
+
#endif
|
|
956
|
+
#endif
|
|
957
|
+
#else
|
|
958
|
+
#ifdef SHADOWCSMDEBUG{X}
|
|
959
|
+
diffuseBase+=info.diffuse*shadowDebug{X};
|
|
960
|
+
#else
|
|
961
|
+
diffuseBase+=info.diffuse*shadow;
|
|
962
|
+
#endif
|
|
963
|
+
#ifdef SS_TRANSLUCENCY
|
|
964
|
+
diffuseTransmissionBase+=info.diffuseTransmission*shadow;
|
|
965
|
+
#endif
|
|
966
|
+
#ifdef SPECULARTERM
|
|
967
|
+
specularBase+=info.specular*shadow;
|
|
968
|
+
#endif
|
|
969
|
+
#ifdef CLEARCOAT
|
|
970
|
+
clearCoatBase+=info.clearCoat.rgb*shadow;
|
|
971
|
+
#endif
|
|
972
|
+
#ifdef SHEEN
|
|
973
|
+
sheenBase+=info.sheen.rgb*shadow;
|
|
974
|
+
#endif
|
|
975
|
+
#endif
|
|
976
|
+
#endif
|
|
977
|
+
#endif
|
|
978
|
+
`;e.IncludesShadersStore[r]||(e.IncludesShadersStore[r]=X);const M={name:r,shader:X},Z=Object.freeze(Object.defineProperty({__proto__:null,lightFragment:M},Symbol.toStringTag,{value:"Module"})),c="prePassDeclaration",O=`#ifdef PREPASS
|
|
979
|
+
#extension GL_EXT_draw_buffers : require
|
|
980
|
+
layout(location=0) out highp vec4 glFragData[{X}];highp vec4 gl_FragColor;
|
|
981
|
+
#ifdef PREPASS_LOCAL_POSITION
|
|
982
|
+
varying highp vec3 vPosition;
|
|
983
|
+
#endif
|
|
984
|
+
#ifdef PREPASS_DEPTH
|
|
985
|
+
varying highp vec3 vViewPos;
|
|
986
|
+
#endif
|
|
987
|
+
#ifdef PREPASS_NORMALIZED_VIEW_DEPTH
|
|
988
|
+
varying highp float vNormViewDepth;
|
|
989
|
+
#endif
|
|
990
|
+
#if defined(PREPASS_VELOCITY) || defined(PREPASS_VELOCITY_LINEAR)
|
|
991
|
+
varying highp vec4 vCurrentPosition;varying highp vec4 vPreviousPosition;
|
|
992
|
+
#endif
|
|
993
|
+
#endif
|
|
994
|
+
`;e.IncludesShadersStore[c]||(e.IncludesShadersStore[c]=O);const h="oitDeclaration",N=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY
|
|
995
|
+
#extension GL_EXT_draw_buffers : require
|
|
996
|
+
layout(location=0) out vec2 depth;
|
|
997
|
+
layout(location=1) out vec4 frontColor;layout(location=2) out vec4 backColor;
|
|
998
|
+
#define MAX_DEPTH 99999.0
|
|
999
|
+
highp vec4 gl_FragColor;uniform sampler2D oitDepthSampler;uniform sampler2D oitFrontColorSampler;
|
|
1000
|
+
#endif
|
|
1001
|
+
`;e.IncludesShadersStore[h]||(e.IncludesShadersStore[h]=N);const v="decalFragmentDeclaration",R=`#ifdef DECAL
|
|
1002
|
+
uniform vec4 vDecalInfos;
|
|
1003
|
+
#endif
|
|
1004
|
+
`;e.IncludesShadersStore[v]||(e.IncludesShadersStore[v]=R);const u="samplerFragmentDeclaration",b=`#ifdef _DEFINENAME_
|
|
1005
|
+
#if _DEFINENAME_DIRECTUV==1
|
|
1006
|
+
#define v_VARYINGNAME_UV vMainUV1
|
|
1007
|
+
#elif _DEFINENAME_DIRECTUV==2
|
|
1008
|
+
#define v_VARYINGNAME_UV vMainUV2
|
|
1009
|
+
#elif _DEFINENAME_DIRECTUV==3
|
|
1010
|
+
#define v_VARYINGNAME_UV vMainUV3
|
|
1011
|
+
#elif _DEFINENAME_DIRECTUV==4
|
|
1012
|
+
#define v_VARYINGNAME_UV vMainUV4
|
|
1013
|
+
#elif _DEFINENAME_DIRECTUV==5
|
|
1014
|
+
#define v_VARYINGNAME_UV vMainUV5
|
|
1015
|
+
#elif _DEFINENAME_DIRECTUV==6
|
|
1016
|
+
#define v_VARYINGNAME_UV vMainUV6
|
|
1017
|
+
#else
|
|
1018
|
+
varying vec2 v_VARYINGNAME_UV;
|
|
1019
|
+
#endif
|
|
1020
|
+
uniform sampler2D _SAMPLERNAME_Sampler;
|
|
1021
|
+
#endif
|
|
1022
|
+
`;e.IncludesShadersStore[u]||(e.IncludesShadersStore[u]=b);const n="bumpFragmentMainFunctions",x=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL)
|
|
1023
|
+
#if defined(TANGENT) && defined(NORMAL)
|
|
1024
|
+
varying mat3 vTBN;
|
|
1025
|
+
#endif
|
|
1026
|
+
#ifdef OBJECTSPACE_NORMALMAP
|
|
1027
|
+
uniform mat4 normalMatrix;
|
|
1028
|
+
#if defined(WEBGL2) || defined(WEBGPU)
|
|
1029
|
+
mat4 toNormalMatrix(mat4 wMatrix)
|
|
1030
|
+
{mat4 ret=inverse(wMatrix);ret=transpose(ret);ret[0][3]=0.;ret[1][3]=0.;ret[2][3]=0.;ret[3]=vec4(0.,0.,0.,1.);return ret;}
|
|
1031
|
+
#else
|
|
1032
|
+
mat4 toNormalMatrix(mat4 m)
|
|
1033
|
+
{float
|
|
1034
|
+
a00=m[0][0],a01=m[0][1],a02=m[0][2],a03=m[0][3],
|
|
1035
|
+
a10=m[1][0],a11=m[1][1],a12=m[1][2],a13=m[1][3],
|
|
1036
|
+
a20=m[2][0],a21=m[2][1],a22=m[2][2],a23=m[2][3],
|
|
1037
|
+
a30=m[3][0],a31=m[3][1],a32=m[3][2],a33=m[3][3],
|
|
1038
|
+
b00=a00*a11-a01*a10,
|
|
1039
|
+
b01=a00*a12-a02*a10,
|
|
1040
|
+
b02=a00*a13-a03*a10,
|
|
1041
|
+
b03=a01*a12-a02*a11,
|
|
1042
|
+
b04=a01*a13-a03*a11,
|
|
1043
|
+
b05=a02*a13-a03*a12,
|
|
1044
|
+
b06=a20*a31-a21*a30,
|
|
1045
|
+
b07=a20*a32-a22*a30,
|
|
1046
|
+
b08=a20*a33-a23*a30,
|
|
1047
|
+
b09=a21*a32-a22*a31,
|
|
1048
|
+
b10=a21*a33-a23*a31,
|
|
1049
|
+
b11=a22*a33-a23*a32,
|
|
1050
|
+
det=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06;mat4 mi=mat4(
|
|
1051
|
+
a11*b11-a12*b10+a13*b09,
|
|
1052
|
+
a02*b10-a01*b11-a03*b09,
|
|
1053
|
+
a31*b05-a32*b04+a33*b03,
|
|
1054
|
+
a22*b04-a21*b05-a23*b03,
|
|
1055
|
+
a12*b08-a10*b11-a13*b07,
|
|
1056
|
+
a00*b11-a02*b08+a03*b07,
|
|
1057
|
+
a32*b02-a30*b05-a33*b01,
|
|
1058
|
+
a20*b05-a22*b02+a23*b01,
|
|
1059
|
+
a10*b10-a11*b08+a13*b06,
|
|
1060
|
+
a01*b08-a00*b10-a03*b06,
|
|
1061
|
+
a30*b04-a31*b02+a33*b00,
|
|
1062
|
+
a21*b02-a20*b04-a23*b00,
|
|
1063
|
+
a11*b07-a10*b09-a12*b06,
|
|
1064
|
+
a00*b09-a01*b07+a02*b06,
|
|
1065
|
+
a31*b01-a30*b03-a32*b00,
|
|
1066
|
+
a20*b03-a21*b01+a22*b00)/det;return mat4(mi[0][0],mi[1][0],mi[2][0],mi[3][0],
|
|
1067
|
+
mi[0][1],mi[1][1],mi[2][1],mi[3][1],
|
|
1068
|
+
mi[0][2],mi[1][2],mi[2][2],mi[3][2],
|
|
1069
|
+
mi[0][3],mi[1][3],mi[2][3],mi[3][3]);}
|
|
1070
|
+
#endif
|
|
1071
|
+
#endif
|
|
1072
|
+
vec3 perturbNormalBase(mat3 cotangentFrame,vec3 normal,float scale)
|
|
1073
|
+
{
|
|
1074
|
+
#ifdef NORMALXYSCALE
|
|
1075
|
+
normal=normalize(normal*vec3(scale,scale,1.0));
|
|
1076
|
+
#endif
|
|
1077
|
+
return normalize(cotangentFrame*normal);}
|
|
1078
|
+
vec3 perturbNormal(mat3 cotangentFrame,vec3 textureSample,float scale)
|
|
1079
|
+
{return perturbNormalBase(cotangentFrame,textureSample*2.0-1.0,scale);}
|
|
1080
|
+
mat3 cotangent_frame(vec3 normal,vec3 p,vec2 uv,vec2 tangentSpaceParams)
|
|
1081
|
+
{vec3 dp1=dFdx(p);vec3 dp2=dFdy(p);vec2 duv1=dFdx(uv);vec2 duv2=dFdy(uv);vec3 dp2perp=cross(dp2,normal);vec3 dp1perp=cross(normal,dp1);vec3 tangent=dp2perp*duv1.x+dp1perp*duv2.x;vec3 bitangent=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;float det=max(dot(tangent,tangent),dot(bitangent,bitangent));float invmax=det==0.0 ? 0.0 : inversesqrt(det);return mat3(tangent*invmax,bitangent*invmax,normal);}
|
|
1082
|
+
#endif
|
|
1083
|
+
`;e.IncludesShadersStore[n]||(e.IncludesShadersStore[n]=x);const _={name:n,shader:x},j=Object.freeze(Object.defineProperty({__proto__:null,bumpFragmentMainFunctions:_},Symbol.toStringTag,{value:"Module"})),s="bumpFragmentFunctions",E=`#if defined(BUMP)
|
|
1084
|
+
#include<samplerFragmentDeclaration>(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump)
|
|
1085
|
+
#endif
|
|
1086
|
+
#if defined(DETAIL)
|
|
1087
|
+
#include<samplerFragmentDeclaration>(_DEFINENAME_,DETAIL,_VARYINGNAME_,Detail,_SAMPLERNAME_,detail)
|
|
1088
|
+
#endif
|
|
1089
|
+
#if defined(BUMP) && defined(PARALLAX)
|
|
1090
|
+
const float minSamples=4.;const float maxSamples=15.;const int iMaxSamples=15;vec2 parallaxOcclusion(vec3 vViewDirCoT,vec3 vNormalCoT,vec2 texCoord,float parallaxScale) {float parallaxLimit=length(vViewDirCoT.xy)/vViewDirCoT.z;parallaxLimit*=parallaxScale;vec2 vOffsetDir=normalize(vViewDirCoT.xy);vec2 vMaxOffset=vOffsetDir*parallaxLimit;float numSamples=maxSamples+(dot(vViewDirCoT,vNormalCoT)*(minSamples-maxSamples));float stepSize=1.0/numSamples;float currRayHeight=1.0;vec2 vCurrOffset=vec2(0,0);vec2 vLastOffset=vec2(0,0);float lastSampledHeight=1.0;float currSampledHeight=1.0;bool keepWorking=true;for (int i=0; i<iMaxSamples; i++)
|
|
1091
|
+
{currSampledHeight=texture2D(bumpSampler,texCoord+vCurrOffset).w;if (!keepWorking)
|
|
1092
|
+
{}
|
|
1093
|
+
else if (currSampledHeight>currRayHeight)
|
|
1094
|
+
{float delta1=currSampledHeight-currRayHeight;float delta2=(currRayHeight+stepSize)-lastSampledHeight;float ratio=delta1/(delta1+delta2);vCurrOffset=(ratio)* vLastOffset+(1.0-ratio)*vCurrOffset;keepWorking=false;}
|
|
1095
|
+
else
|
|
1096
|
+
{currRayHeight-=stepSize;vLastOffset=vCurrOffset;
|
|
1097
|
+
#ifdef PARALLAX_RHS
|
|
1098
|
+
vCurrOffset-=stepSize*vMaxOffset;
|
|
1099
|
+
#else
|
|
1100
|
+
vCurrOffset+=stepSize*vMaxOffset;
|
|
1101
|
+
#endif
|
|
1102
|
+
lastSampledHeight=currSampledHeight;}}
|
|
1103
|
+
return vCurrOffset;}
|
|
1104
|
+
vec2 parallaxOffset(vec3 viewDir,float heightScale)
|
|
1105
|
+
{float height=texture2D(bumpSampler,vBumpUV).w;vec2 texCoordOffset=heightScale*viewDir.xy*height;
|
|
1106
|
+
#ifdef PARALLAX_RHS
|
|
1107
|
+
return texCoordOffset;
|
|
1108
|
+
#else
|
|
1109
|
+
return -texCoordOffset;
|
|
1110
|
+
#endif
|
|
1111
|
+
}
|
|
1112
|
+
#endif
|
|
1113
|
+
`;e.IncludesShadersStore[s]||(e.IncludesShadersStore[s]=E);const U={name:s,shader:E},q=Object.freeze(Object.defineProperty({__proto__:null,bumpFragmentFunctions:U},Symbol.toStringTag,{value:"Module"})),p="decalFragment",z=`#ifdef DECAL
|
|
1114
|
+
#ifdef GAMMADECAL
|
|
1115
|
+
decalColor.rgb=toLinearSpace(decalColor.rgb);
|
|
1116
|
+
#endif
|
|
1117
|
+
#ifdef DECAL_SMOOTHALPHA
|
|
1118
|
+
decalColor.a*=decalColor.a;
|
|
1119
|
+
#endif
|
|
1120
|
+
surfaceAlbedo.rgb=mix(surfaceAlbedo.rgb,decalColor.rgb,decalColor.a);
|
|
1121
|
+
#endif
|
|
1122
|
+
`;e.IncludesShadersStore[p]||(e.IncludesShadersStore[p]=z);const l="bumpFragment",C=`vec2 uvOffset=vec2(0.0,0.0);
|
|
1123
|
+
#if defined(BUMP) || defined(PARALLAX) || defined(DETAIL)
|
|
1124
|
+
#ifdef NORMALXYSCALE
|
|
1125
|
+
float normalScale=1.0;
|
|
1126
|
+
#elif defined(BUMP)
|
|
1127
|
+
float normalScale=vBumpInfos.y;
|
|
1128
|
+
#else
|
|
1129
|
+
float normalScale=1.0;
|
|
1130
|
+
#endif
|
|
1131
|
+
#if defined(TANGENT) && defined(NORMAL)
|
|
1132
|
+
mat3 TBN=vTBN;
|
|
1133
|
+
#elif defined(BUMP)
|
|
1134
|
+
vec2 TBNUV=gl_FrontFacing ? vBumpUV : -vBumpUV;mat3 TBN=cotangent_frame(normalW*normalScale,vPositionW,TBNUV,vTangentSpaceParams);
|
|
1135
|
+
#else
|
|
1136
|
+
vec2 TBNUV=gl_FrontFacing ? vDetailUV : -vDetailUV;mat3 TBN=cotangent_frame(normalW*normalScale,vPositionW,TBNUV,vec2(1.,1.));
|
|
1137
|
+
#endif
|
|
1138
|
+
#elif defined(ANISOTROPIC)
|
|
1139
|
+
#if defined(TANGENT) && defined(NORMAL)
|
|
1140
|
+
mat3 TBN=vTBN;
|
|
1141
|
+
#else
|
|
1142
|
+
vec2 TBNUV=gl_FrontFacing ? vMainUV1 : -vMainUV1;mat3 TBN=cotangent_frame(normalW,vPositionW,TBNUV,vec2(1.,1.));
|
|
1143
|
+
#endif
|
|
1144
|
+
#endif
|
|
1145
|
+
#ifdef PARALLAX
|
|
1146
|
+
mat3 invTBN=transposeMat3(TBN);
|
|
1147
|
+
#ifdef PARALLAXOCCLUSION
|
|
1148
|
+
uvOffset=parallaxOcclusion(invTBN*-viewDirectionW,invTBN*normalW,vBumpUV,vBumpInfos.z);
|
|
1149
|
+
#else
|
|
1150
|
+
uvOffset=parallaxOffset(invTBN*viewDirectionW,vBumpInfos.z);
|
|
1151
|
+
#endif
|
|
1152
|
+
#endif
|
|
1153
|
+
#ifdef DETAIL
|
|
1154
|
+
vec4 detailColor=texture2D(detailSampler,vDetailUV+uvOffset);vec2 detailNormalRG=detailColor.wy*2.0-1.0;float detailNormalB=sqrt(1.-saturate(dot(detailNormalRG,detailNormalRG)));vec3 detailNormal=vec3(detailNormalRG,detailNormalB);
|
|
1155
|
+
#endif
|
|
1156
|
+
#ifdef BUMP
|
|
1157
|
+
#ifdef OBJECTSPACE_NORMALMAP
|
|
1158
|
+
#define CUSTOM_FRAGMENT_BUMP_FRAGMENT
|
|
1159
|
+
normalW=normalize(texture2D(bumpSampler,vBumpUV).xyz *2.0-1.0);normalW=normalize(mat3(normalMatrix)*normalW);
|
|
1160
|
+
#elif !defined(DETAIL)
|
|
1161
|
+
normalW=perturbNormal(TBN,texture2D(bumpSampler,vBumpUV+uvOffset).xyz,vBumpInfos.y);
|
|
1162
|
+
#else
|
|
1163
|
+
vec3 bumpNormal=texture2D(bumpSampler,vBumpUV+uvOffset).xyz*2.0-1.0;
|
|
1164
|
+
#if DETAIL_NORMALBLENDMETHOD==0
|
|
1165
|
+
detailNormal.xy*=vDetailInfos.z;vec3 blendedNormal=normalize(vec3(bumpNormal.xy+detailNormal.xy,bumpNormal.z*detailNormal.z));
|
|
1166
|
+
#elif DETAIL_NORMALBLENDMETHOD==1
|
|
1167
|
+
detailNormal.xy*=vDetailInfos.z;bumpNormal+=vec3(0.0,0.0,1.0);detailNormal*=vec3(-1.0,-1.0,1.0);vec3 blendedNormal=bumpNormal*dot(bumpNormal,detailNormal)/bumpNormal.z-detailNormal;
|
|
1168
|
+
#endif
|
|
1169
|
+
normalW=perturbNormalBase(TBN,blendedNormal,vBumpInfos.y);
|
|
1170
|
+
#endif
|
|
1171
|
+
#elif defined(DETAIL)
|
|
1172
|
+
detailNormal.xy*=vDetailInfos.z;normalW=perturbNormalBase(TBN,detailNormal,vDetailInfos.z);
|
|
1173
|
+
#endif
|
|
1174
|
+
`;e.IncludesShadersStore[l]||(e.IncludesShadersStore[l]=C);const H={name:l,shader:C},Q=Object.freeze(Object.defineProperty({__proto__:null,bumpFragment:H},Symbol.toStringTag,{value:"Module"})),m="depthPrePass",W=`#ifdef DEPTHPREPASS
|
|
1175
|
+
gl_FragColor=vec4(0.,0.,0.,1.0);return;
|
|
1176
|
+
#endif
|
|
1177
|
+
`;e.IncludesShadersStore[m]||(e.IncludesShadersStore[m]=W);const S="oitFragment",V=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY
|
|
1178
|
+
float fragDepth=gl_FragCoord.z;
|
|
1179
|
+
#ifdef ORDER_INDEPENDENT_TRANSPARENCY_16BITS
|
|
1180
|
+
uint halfFloat=packHalf2x16(vec2(fragDepth));vec2 full=unpackHalf2x16(halfFloat);fragDepth=full.x;
|
|
1181
|
+
#endif
|
|
1182
|
+
ivec2 fragCoord=ivec2(gl_FragCoord.xy);vec2 lastDepth=texelFetch(oitDepthSampler,fragCoord,0).rg;vec4 lastFrontColor=texelFetch(oitFrontColorSampler,fragCoord,0);depth.rg=vec2(-MAX_DEPTH);frontColor=lastFrontColor;backColor=vec4(0.0);
|
|
1183
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
1184
|
+
float furthestDepth=-lastDepth.x;float nearestDepth=lastDepth.y;
|
|
1185
|
+
#else
|
|
1186
|
+
float nearestDepth=-lastDepth.x;float furthestDepth=lastDepth.y;
|
|
1187
|
+
#endif
|
|
1188
|
+
float alphaMultiplier=1.0-lastFrontColor.a;
|
|
1189
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
1190
|
+
if (fragDepth>nearestDepth || fragDepth<furthestDepth) {
|
|
1191
|
+
#else
|
|
1192
|
+
if (fragDepth<nearestDepth || fragDepth>furthestDepth) {
|
|
1193
|
+
#endif
|
|
1194
|
+
return;}
|
|
1195
|
+
#ifdef USE_REVERSE_DEPTHBUFFER
|
|
1196
|
+
if (fragDepth<nearestDepth && fragDepth>furthestDepth) {
|
|
1197
|
+
#else
|
|
1198
|
+
if (fragDepth>nearestDepth && fragDepth<furthestDepth) {
|
|
1199
|
+
#endif
|
|
1200
|
+
depth.rg=vec2(-fragDepth,fragDepth);return;}
|
|
1201
|
+
#endif
|
|
1202
|
+
`;e.IncludesShadersStore[S]||(e.IncludesShadersStore[S]=V);export{Q as a,H as b,U as c,q as d,_ as e,j as f,Z as g,A as h,B as i,P as j,Y as k,M as l,G as m,$ as n,I as r,y as s};
|