csyjk 1.2.2 → 2.2.2
Sign up to get free protection for your applications and to get access to all the features.
- package/{dist/app.js → app.js} +0 -0
- package/{dist/index.html → index.html} +0 -0
- package/package.json +5 -40
- package/{dist/style.css → style.css} +0 -0
- package/.babelrc +0 -7
- package/.idea/modules.xml +0 -8
- package/.idea/xx.iml +0 -12
- package/public/gltf.js +0 -2241
- package/public/index.html +0 -10
- package/src/index.js +0 -3
- package/src/lib/gltf/assets/check.jpg +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.css +0 -358
- package/src/lib/gltf/assets/iconfont/iconfont.eot +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.js +0 -1
- package/src/lib/gltf/assets/iconfont/iconfont.json +0 -604
- package/src/lib/gltf/assets/iconfont/iconfont.svg +0 -189
- package/src/lib/gltf/assets/iconfont/iconfont.ttf +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.woff +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.woff2 +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/index.js +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/package.json +0 -15
- package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/ContextMenu.js +0 -863
- package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/extras/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/index.js +0 -3
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +0 -462
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +0 -279
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +0 -262
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/Annotation.js +0 -362
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +0 -575
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +0 -333
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +0 -777
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +0 -525
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +0 -242
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +0 -297
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js +0 -345
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +0 -122
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +0 -462
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js +0 -508
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js +0 -922
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/CubeTextureCanvas.js +0 -273
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/NavCubePlugin.js +0 -687
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +0 -145
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +0 -777
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +0 -273
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +0 -313
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Control.js +0 -1328
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Overview.js +0 -249
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Plane.js +0 -169
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +0 -403
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +0 -134
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +0 -77
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/Storey.js +0 -61
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyMap.js +0 -57
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +0 -822
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/ModelTreeView.js +0 -888
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewNode.js +0 -88
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewPlugin.js +0 -624
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/modelValidation.js +0 -87
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/ViewCullPlugin.js +0 -295
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +0 -78
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +0 -847
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +0 -167
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +0 -228
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +0 -220
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +0 -279
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +0 -244
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +0 -301
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +0 -426
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +0 -479
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +0 -6818
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +0 -238
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +0 -1279
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +0 -11
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +0 -2060
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +0 -2155
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +0 -1002
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +0 -64
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +0 -153
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +0 -267
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +0 -553
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +0 -991
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +0 -49
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/index.js +0 -17
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/culling/ObjectCullStates.js +0 -205
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Dot.js +0 -78
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Label.js +0 -97
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Wire.js +0 -95
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Plugin.js +0 -112
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Viewer.js +0 -372
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/index.js +0 -3
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaultColors.js +0 -162
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaults.js +0 -39
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaModel.js +0 -145
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaObject.js +0 -215
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaScene.js +0 -311
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/CameraControl.js +0 -1669
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/cc.js +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/CameraUpdater.js +0 -312
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PanController.js +0 -112
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PickController.js +0 -193
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +0 -289
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/cu.js +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +0 -122
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +0 -186
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +0 -68
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +0 -439
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +0 -361
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +0 -258
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +0 -197
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/mouspan.js +0 -498
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Component.js +0 -908
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Entity.js +0 -475
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/ImagePlane.js +0 -570
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/PerformanceModel.js +0 -2623
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js +0 -21
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js +0 -262
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js +0 -697
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js +0 -34
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js +0 -63
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/compression.js +0 -183
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js +0 -736
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js +0 -68
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js +0 -295
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +0 -327
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js +0 -698
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js +0 -68
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js +0 -364
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +0 -356
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js +0 -776
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js +0 -113
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js +0 -340
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +0 -312
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +0 -343
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +0 -331
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js +0 -242
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +0 -348
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js +0 -737
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js +0 -143
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js +0 -373
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +0 -366
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +0 -370
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +0 -386
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +0 -376
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +0 -293
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +0 -382
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js +0 -37
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js +0 -1017
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js +0 -246
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js +0 -809
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +0 -504
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +0 -297
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +0 -300
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +0 -322
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +0 -311
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +0 -291
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +0 -319
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +0 -305
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +0 -300
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +0 -242
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +0 -323
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js +0 -969
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js +0 -246
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js +0 -859
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +0 -557
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +0 -341
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +0 -338
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +0 -356
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +0 -354
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +0 -329
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +0 -358
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +0 -349
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +0 -363
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +0 -284
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +0 -354
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Camera.js +0 -880
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraFlightAnimation.js +0 -669
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPath.js +0 -194
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPathAnimation.js +0 -326
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CustomProjection.js +0 -149
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Frustum.js +0 -316
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Ortho.js +0 -286
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Perspective.js +0 -302
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Canvas.js +0 -464
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Spinner.js +0 -323
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/core.js +0 -234
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/Geometry.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/ReadableGeometry.js +0 -689
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/VBOGeometry.js +0 -327
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxGeometry.js +0 -238
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +0 -106
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +0 -271
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildGridGeometry.js +0 -102
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +0 -168
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildSphereGeometry.js +0 -161
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildTorusGeometry.js +0 -172
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +0 -1721
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/index.js +0 -8
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/index.js +0 -4
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/load3DSGeometry.js +0 -103
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +0 -130
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/index.js +0 -18
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/input/Input.js +0 -1475
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/canvas2image.js +0 -218
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/k3d.js +0 -1032
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/AmbientLight.js +0 -175
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/CubeTexture.js +0 -156
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/DirLight.js +0 -314
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Light.js +0 -29
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/LightMap.js +0 -77
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/PointLight.js +0 -395
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/ReflectionMap.js +0 -79
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Shadow.js +0 -138
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/index.js +0 -5
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/Marker.js +0 -382
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EdgeMaterial.js +0 -359
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EmphasisMaterial.js +0 -577
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Fresnel.js +0 -222
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LambertMaterial.js +0 -378
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LinesMaterial.js +0 -169
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Material.js +0 -39
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/MetallicMaterial.js +0 -820
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PhongMaterial.js +0 -860
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PointsMaterial.js +0 -320
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/SpecularMaterial.js +0 -807
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Texture.js +0 -522
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/index.js +0 -8
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/Frustum.js +0 -118
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/buildEdgeIndices.js +0 -162
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/geometryCompressionUtils.js +0 -353
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/math.js +0 -5302
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/rtcCoords.js +0 -132
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/CameraMemento.js +0 -200
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ModelMemento.js +0 -272
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ObjectsMemento.js +0 -259
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/index.js +0 -3
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/Mesh.js +0 -2165
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -978
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawShaderSource.js +0 -1566
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -249
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -163
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -276
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -269
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -207
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +0 -156
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -210
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +0 -146
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -186
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +0 -120
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +0 -96
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/metriqs/Metriqs.js +0 -259
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/Node.js +0 -1356
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/CubicBezierCurve.js +0 -194
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Curve.js +0 -183
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Path.js +0 -239
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/QuadraticBezierCurve.js +0 -161
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/SplineCurve.js +0 -133
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/index.js +0 -5
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/postfx/SAO.js +0 -547
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/scene/Scene.js +0 -2481
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/SectionPlane.js +0 -194
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/Skybox.js +0 -119
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/stats.js +0 -45
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Map.js +0 -45
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Queue.js +0 -56
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils.js +0 -452
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/viewport/Viewport.js +0 -212
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/ArrayBuf.js +0 -121
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Attribute.js +0 -23
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Drawable.js +0 -270
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/FrameContext.js +0 -259
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/PickResult.js +0 -317
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Pickable.js +0 -69
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Program.js +0 -179
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderBuffer.js +0 -315
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderFlags.js +0 -203
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderState.js +0 -40
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Renderer.js +0 -1300
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Sampler.js +0 -18
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Shader.js +0 -49
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Texture2D.js +0 -217
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +0 -214
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionTester.js +0 -432
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -326
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -375
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/webglEnums.js +0 -61
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webglInfo.js +0 -48
- package/src/lib/gltf/gltf.css +0 -392
- package/src/lib/gltf/gltf.js +0 -2241
- package/webpack.config.js +0 -70
@@ -1,1566 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @private
|
3
|
-
*/
|
4
|
-
const DrawShaderSource = function (mesh) {
|
5
|
-
if (mesh._material._state.type === "LambertMaterial") {
|
6
|
-
this.vertex = buildVertexLambert(mesh);
|
7
|
-
this.fragment = buildFragmentLambert(mesh);
|
8
|
-
} else {
|
9
|
-
this.vertex = buildVertexDraw(mesh);
|
10
|
-
this.fragment = buildFragmentDraw(mesh);
|
11
|
-
}
|
12
|
-
};
|
13
|
-
|
14
|
-
const TEXTURE_DECODE_FUNCS = {
|
15
|
-
"linear": "linearToLinear",
|
16
|
-
"sRGB": "sRGBToLinear",
|
17
|
-
"gamma": "gammaToLinear"
|
18
|
-
};
|
19
|
-
|
20
|
-
function getReceivesShadow(mesh) {
|
21
|
-
if (!mesh.receivesShadow) {
|
22
|
-
return false;
|
23
|
-
}
|
24
|
-
const lights = mesh.scene._lightsState.lights;
|
25
|
-
if (!lights || lights.length === 0) {
|
26
|
-
return false;
|
27
|
-
}
|
28
|
-
for (let i = 0, len = lights.length; i < len; i++) {
|
29
|
-
if (lights[i].castsShadow) {
|
30
|
-
return true;
|
31
|
-
}
|
32
|
-
}
|
33
|
-
return false;
|
34
|
-
}
|
35
|
-
|
36
|
-
function hasTextures(mesh) {
|
37
|
-
if (!mesh._geometry._state.uvBuf) {
|
38
|
-
return false;
|
39
|
-
}
|
40
|
-
const material = mesh._material;
|
41
|
-
return !!(material._ambientMap ||
|
42
|
-
material._occlusionMap ||
|
43
|
-
material._baseColorMap ||
|
44
|
-
material._diffuseMap ||
|
45
|
-
material._alphaMap ||
|
46
|
-
material._specularMap ||
|
47
|
-
material._glossinessMap ||
|
48
|
-
material._specularGlossinessMap ||
|
49
|
-
material._emissiveMap ||
|
50
|
-
material._metallicMap ||
|
51
|
-
material._roughnessMap ||
|
52
|
-
material._metallicRoughnessMap ||
|
53
|
-
material._reflectivityMap ||
|
54
|
-
material._normalMap);
|
55
|
-
}
|
56
|
-
|
57
|
-
function hasNormals(mesh) {
|
58
|
-
const primitive = mesh._geometry._state.primitiveName;
|
59
|
-
if ((mesh._geometry._state.autoVertexNormals || mesh._geometry._state.normalsBuf) && (primitive === "triangles" || primitive === "triangle-strip" || primitive === "triangle-fan")) {
|
60
|
-
return true;
|
61
|
-
}
|
62
|
-
return false;
|
63
|
-
}
|
64
|
-
|
65
|
-
function buildVertexLambert(mesh) {
|
66
|
-
|
67
|
-
const scene = mesh.scene;
|
68
|
-
const sectionPlanesState = mesh.scene._sectionPlanesState;
|
69
|
-
const lightsState = mesh.scene._lightsState;
|
70
|
-
const geometryState = mesh._geometry._state;
|
71
|
-
const billboard = mesh._state.billboard;
|
72
|
-
const stationary = mesh._state.stationary;
|
73
|
-
const clipping = sectionPlanesState.sectionPlanes.length > 0;
|
74
|
-
const quantizedGeometry = !!geometryState.compressGeometry;
|
75
|
-
|
76
|
-
const src = [];
|
77
|
-
src.push("// Lambertian drawing vertex shader");
|
78
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
79
|
-
src.push("#extension GL_EXT_frag_depth : enable");
|
80
|
-
}
|
81
|
-
src.push("attribute vec3 position;");
|
82
|
-
src.push("uniform mat4 modelMatrix;");
|
83
|
-
src.push("uniform mat4 viewMatrix;");
|
84
|
-
src.push("uniform mat4 projMatrix;");
|
85
|
-
src.push("uniform vec4 colorize;");
|
86
|
-
src.push("uniform vec3 offset;");
|
87
|
-
if (quantizedGeometry) {
|
88
|
-
src.push("uniform mat4 positionsDecodeMatrix;");
|
89
|
-
}
|
90
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
91
|
-
src.push("uniform float logDepthBufFC;");
|
92
|
-
src.push("varying float vFragDepth;");
|
93
|
-
}
|
94
|
-
if (clipping) {
|
95
|
-
src.push("varying vec4 vWorldPosition;");
|
96
|
-
}
|
97
|
-
src.push("uniform vec4 lightAmbient;");
|
98
|
-
src.push("uniform vec4 materialColor;");
|
99
|
-
src.push("uniform vec3 materialEmissive;");
|
100
|
-
if (geometryState.normalsBuf) {
|
101
|
-
src.push("attribute vec3 normal;");
|
102
|
-
src.push("uniform mat4 modelNormalMatrix;");
|
103
|
-
src.push("uniform mat4 viewNormalMatrix;");
|
104
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) {
|
105
|
-
const light = lightsState.lights[i];
|
106
|
-
if (light.type === "ambient") {
|
107
|
-
continue;
|
108
|
-
}
|
109
|
-
src.push("uniform vec4 lightColor" + i + ";");
|
110
|
-
if (light.type === "dir") {
|
111
|
-
src.push("uniform vec3 lightDir" + i + ";");
|
112
|
-
}
|
113
|
-
if (light.type === "point") {
|
114
|
-
src.push("uniform vec3 lightPos" + i + ";");
|
115
|
-
}
|
116
|
-
if (light.type === "spot") {
|
117
|
-
src.push("uniform vec3 lightPos" + i + ";");
|
118
|
-
src.push("uniform vec3 lightDir" + i + ";");
|
119
|
-
}
|
120
|
-
}
|
121
|
-
if (quantizedGeometry) {
|
122
|
-
src.push("vec3 octDecode(vec2 oct) {");
|
123
|
-
src.push(" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));");
|
124
|
-
src.push(" if (v.z < 0.0) {");
|
125
|
-
src.push(" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);");
|
126
|
-
src.push(" }");
|
127
|
-
src.push(" return normalize(v);");
|
128
|
-
src.push("}");
|
129
|
-
}
|
130
|
-
}
|
131
|
-
src.push("varying vec4 vColor;");
|
132
|
-
if (geometryState.primitiveName === "points") {
|
133
|
-
src.push("uniform float pointSize;");
|
134
|
-
}
|
135
|
-
if (billboard === "spherical" || billboard === "cylindrical") {
|
136
|
-
src.push("void billboard(inout mat4 mat) {");
|
137
|
-
src.push(" mat[0][0] = 1.0;");
|
138
|
-
src.push(" mat[0][1] = 0.0;");
|
139
|
-
src.push(" mat[0][2] = 0.0;");
|
140
|
-
if (billboard === "spherical") {
|
141
|
-
src.push(" mat[1][0] = 0.0;");
|
142
|
-
src.push(" mat[1][1] = 1.0;");
|
143
|
-
src.push(" mat[1][2] = 0.0;");
|
144
|
-
}
|
145
|
-
src.push(" mat[2][0] = 0.0;");
|
146
|
-
src.push(" mat[2][1] = 0.0;");
|
147
|
-
src.push(" mat[2][2] =1.0;");
|
148
|
-
src.push("}");
|
149
|
-
}
|
150
|
-
src.push("void main(void) {");
|
151
|
-
src.push("vec4 localPosition = vec4(position, 1.0); ");
|
152
|
-
src.push("vec4 worldPosition;");
|
153
|
-
if (quantizedGeometry) {
|
154
|
-
src.push("localPosition = positionsDecodeMatrix * localPosition;");
|
155
|
-
}
|
156
|
-
if (geometryState.normalsBuf) {
|
157
|
-
if (quantizedGeometry) {
|
158
|
-
src.push("vec4 localNormal = vec4(octDecode(normal.xy), 0.0); ");
|
159
|
-
} else {
|
160
|
-
src.push("vec4 localNormal = vec4(normal, 0.0); ");
|
161
|
-
}
|
162
|
-
src.push("mat4 modelNormalMatrix2 = modelNormalMatrix;");
|
163
|
-
src.push("mat4 viewNormalMatrix2 = viewNormalMatrix;");
|
164
|
-
}
|
165
|
-
src.push("mat4 viewMatrix2 = viewMatrix;");
|
166
|
-
src.push("mat4 modelMatrix2 = modelMatrix;");
|
167
|
-
if (stationary) {
|
168
|
-
src.push("viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;")
|
169
|
-
}
|
170
|
-
if (billboard === "spherical" || billboard === "cylindrical") {
|
171
|
-
src.push("mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;");
|
172
|
-
src.push("billboard(modelMatrix2);");
|
173
|
-
src.push("billboard(viewMatrix2);");
|
174
|
-
src.push("billboard(modelViewMatrix);");
|
175
|
-
if (geometryState.normalsBuf) {
|
176
|
-
src.push("mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;");
|
177
|
-
src.push("billboard(modelNormalMatrix2);");
|
178
|
-
src.push("billboard(viewNormalMatrix2);");
|
179
|
-
src.push("billboard(modelViewNormalMatrix);");
|
180
|
-
}
|
181
|
-
src.push("worldPosition = modelMatrix2 * localPosition;");
|
182
|
-
src.push("worldPosition.xyz = worldPosition.xyz + offset;");
|
183
|
-
src.push("vec4 viewPosition = modelViewMatrix * localPosition;");
|
184
|
-
} else {
|
185
|
-
src.push("worldPosition = modelMatrix2 * localPosition;");
|
186
|
-
src.push("worldPosition.xyz = worldPosition.xyz + offset;");
|
187
|
-
src.push("vec4 viewPosition = viewMatrix2 * worldPosition; ");
|
188
|
-
}
|
189
|
-
if (geometryState.normalsBuf) {
|
190
|
-
src.push("vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);");
|
191
|
-
}
|
192
|
-
src.push("vec3 reflectedColor = vec3(0.0, 0.0, 0.0);");
|
193
|
-
src.push("vec3 viewLightDir = vec3(0.0, 0.0, -1.0);");
|
194
|
-
src.push("float lambertian = 1.0;");
|
195
|
-
if (geometryState.normalsBuf) {
|
196
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) {
|
197
|
-
const light = lightsState.lights[i];
|
198
|
-
if (light.type === "ambient") {
|
199
|
-
continue;
|
200
|
-
}
|
201
|
-
if (light.type === "dir") {
|
202
|
-
if (light.space === "view") {
|
203
|
-
src.push("viewLightDir = normalize(lightDir" + i + ");");
|
204
|
-
} else {
|
205
|
-
src.push("viewLightDir = normalize((viewMatrix2 * vec4(lightDir" + i + ", 0.0)).xyz);");
|
206
|
-
}
|
207
|
-
} else if (light.type === "point") {
|
208
|
-
if (light.space === "view") {
|
209
|
-
src.push("viewLightDir = -normalize(lightPos" + i + " - viewPosition.xyz);");
|
210
|
-
} else {
|
211
|
-
src.push("viewLightDir = -normalize((viewMatrix2 * vec4(lightPos" + i + ", 0.0)).xyz);");
|
212
|
-
}
|
213
|
-
} else if (light.type === "spot") {
|
214
|
-
if (light.space === "view") {
|
215
|
-
src.push("viewLightDir = normalize(lightDir" + i + ");");
|
216
|
-
} else {
|
217
|
-
src.push("viewLightDir = normalize((viewMatrix2 * vec4(lightDir" + i + ", 0.0)).xyz);");
|
218
|
-
}
|
219
|
-
} else {
|
220
|
-
continue;
|
221
|
-
}
|
222
|
-
src.push("lambertian = max(dot(-viewNormal, viewLightDir), 0.0);");
|
223
|
-
src.push("reflectedColor += lambertian * (lightColor" + i + ".rgb * lightColor" + i + ".a);");
|
224
|
-
}
|
225
|
-
}
|
226
|
-
//src.push("vColor = vec4((reflectedColor * materialColor) + (lightAmbient.rgb * lightAmbient.a), 1.0) * colorize;");
|
227
|
-
src.push("vColor = vec4((lightAmbient.rgb * lightAmbient.a * materialColor.rgb) + materialEmissive.rgb + (reflectedColor * materialColor.rgb), materialColor.a) * colorize;"); // TODO: How to have ambient bright enough for canvas BG but not too bright for scene?
|
228
|
-
if (clipping) {
|
229
|
-
src.push("vWorldPosition = worldPosition;");
|
230
|
-
}
|
231
|
-
if (geometryState.primitiveName === "points") {
|
232
|
-
src.push("gl_PointSize = pointSize;");
|
233
|
-
}
|
234
|
-
src.push("vec4 clipPos = projMatrix * viewPosition;");
|
235
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
236
|
-
src.push("vFragDepth = 1.0 + clipPos.w;");
|
237
|
-
}
|
238
|
-
src.push("gl_Position = clipPos;");
|
239
|
-
src.push("}");
|
240
|
-
return src;
|
241
|
-
}
|
242
|
-
|
243
|
-
function buildFragmentLambert(mesh) {
|
244
|
-
const scene = mesh.scene;
|
245
|
-
const sectionPlanesState = scene._sectionPlanesState;
|
246
|
-
const materialState = mesh._material._state;
|
247
|
-
const geometryState = mesh._geometry._state;
|
248
|
-
const clipping = sectionPlanesState.sectionPlanes.length > 0;
|
249
|
-
const solid = false && materialState.backfaces;
|
250
|
-
const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.
|
251
|
-
const src = [];
|
252
|
-
src.push("// Lambertian drawing fragment shader");
|
253
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
254
|
-
src.push("#extension GL_EXT_frag_depth : enable");
|
255
|
-
}
|
256
|
-
src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH");
|
257
|
-
src.push("precision highp float;");
|
258
|
-
src.push("precision highp int;");
|
259
|
-
src.push("#else");
|
260
|
-
src.push("precision mediump float;");
|
261
|
-
src.push("precision mediump int;");
|
262
|
-
src.push("#endif");
|
263
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
264
|
-
src.push("uniform float logDepthBufFC;");
|
265
|
-
src.push("varying float vFragDepth;");
|
266
|
-
}
|
267
|
-
if (clipping) {
|
268
|
-
src.push("varying vec4 vWorldPosition;");
|
269
|
-
src.push("uniform bool clippable;");
|
270
|
-
for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {
|
271
|
-
src.push("uniform bool sectionPlaneActive" + i + ";");
|
272
|
-
src.push("uniform vec3 sectionPlanePos" + i + ";");
|
273
|
-
src.push("uniform vec3 sectionPlaneDir" + i + ";");
|
274
|
-
}
|
275
|
-
}
|
276
|
-
src.push("varying vec4 vColor;");
|
277
|
-
if (gammaOutput) {
|
278
|
-
src.push("uniform float gammaFactor;");
|
279
|
-
src.push(" vec4 linearToGamma( in vec4 value, in float gammaFactor ) {");
|
280
|
-
src.push(" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );");
|
281
|
-
src.push("}");
|
282
|
-
}
|
283
|
-
src.push("void main(void) {");
|
284
|
-
if (clipping) {
|
285
|
-
src.push("if (clippable) {");
|
286
|
-
src.push(" float dist = 0.0;");
|
287
|
-
for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {
|
288
|
-
src.push("if (sectionPlaneActive" + i + ") {");
|
289
|
-
src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);");
|
290
|
-
src.push("}");
|
291
|
-
}
|
292
|
-
src.push(" if (dist > 0.0) { discard; }");
|
293
|
-
if (solid) {
|
294
|
-
src.push(" if (gl_FrontFacing == false) {");
|
295
|
-
src.push(" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);");
|
296
|
-
src.push(" return;");
|
297
|
-
src.push(" }");
|
298
|
-
}
|
299
|
-
src.push("}");
|
300
|
-
}
|
301
|
-
if (geometryState.primitiveName === "points") {
|
302
|
-
src.push("vec2 cxy = 2.0 * gl_PointCoord - 1.0;");
|
303
|
-
src.push("float r = dot(cxy, cxy);");
|
304
|
-
src.push("if (r > 1.0) {");
|
305
|
-
src.push(" discard;");
|
306
|
-
src.push("}");
|
307
|
-
|
308
|
-
}
|
309
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
310
|
-
src.push("gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;");
|
311
|
-
}
|
312
|
-
if (gammaOutput) {
|
313
|
-
src.push("gl_FragColor = linearToGamma(vColor, gammaFactor);");
|
314
|
-
} else {
|
315
|
-
src.push("gl_FragColor = vColor;");
|
316
|
-
}
|
317
|
-
src.push("}");
|
318
|
-
return src;
|
319
|
-
}
|
320
|
-
|
321
|
-
function buildVertexDraw(mesh) {
|
322
|
-
const scene = mesh.scene;
|
323
|
-
const material = mesh._material;
|
324
|
-
const meshState = mesh._state;
|
325
|
-
const sectionPlanesState = scene._sectionPlanesState;
|
326
|
-
const geometryState = mesh._geometry._state;
|
327
|
-
const lightsState = scene._lightsState;
|
328
|
-
let i;
|
329
|
-
let len;
|
330
|
-
let light;
|
331
|
-
const billboard = meshState.billboard;
|
332
|
-
const stationary = meshState.stationary;
|
333
|
-
const texturing = hasTextures(mesh);
|
334
|
-
const normals = hasNormals(mesh);
|
335
|
-
const clipping = sectionPlanesState.sectionPlanes.length > 0;
|
336
|
-
const receivesShadow = getReceivesShadow(mesh);
|
337
|
-
const quantizedGeometry = !!geometryState.compressGeometry;
|
338
|
-
const src = [];
|
339
|
-
src.push("// Drawing vertex shader");
|
340
|
-
if (normals && material._normalMap) {
|
341
|
-
src.push("#extension GL_OES_standard_derivatives : enable");
|
342
|
-
}
|
343
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
344
|
-
src.push("#extension GL_EXT_frag_depth : enable");
|
345
|
-
}
|
346
|
-
src.push("attribute vec3 position;");
|
347
|
-
if (quantizedGeometry) {
|
348
|
-
src.push("uniform mat4 positionsDecodeMatrix;");
|
349
|
-
}
|
350
|
-
src.push("uniform mat4 modelMatrix;");
|
351
|
-
src.push("uniform mat4 viewMatrix;");
|
352
|
-
src.push("uniform mat4 projMatrix;");
|
353
|
-
src.push("varying vec3 vViewPosition;");
|
354
|
-
src.push("uniform vec3 offset;");
|
355
|
-
if (clipping) {
|
356
|
-
src.push("varying vec4 vWorldPosition;");
|
357
|
-
}
|
358
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
359
|
-
src.push("uniform float logDepthBufFC;");
|
360
|
-
src.push("varying float vFragDepth;");
|
361
|
-
}
|
362
|
-
if (lightsState.lightMaps.length > 0) {
|
363
|
-
src.push("varying vec3 vWorldNormal;");
|
364
|
-
}
|
365
|
-
if (normals) {
|
366
|
-
src.push("attribute vec3 normal;");
|
367
|
-
src.push("uniform mat4 modelNormalMatrix;");
|
368
|
-
src.push("uniform mat4 viewNormalMatrix;");
|
369
|
-
src.push("varying vec3 vViewNormal;");
|
370
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) {
|
371
|
-
light = lightsState.lights[i];
|
372
|
-
if (light.type === "ambient") {
|
373
|
-
continue;
|
374
|
-
}
|
375
|
-
if (light.type === "dir") {
|
376
|
-
src.push("uniform vec3 lightDir" + i + ";");
|
377
|
-
}
|
378
|
-
if (light.type === "point") {
|
379
|
-
src.push("uniform vec3 lightPos" + i + ";");
|
380
|
-
}
|
381
|
-
if (light.type === "spot") {
|
382
|
-
src.push("uniform vec3 lightPos" + i + ";");
|
383
|
-
src.push("uniform vec3 lightDir" + i + ";");
|
384
|
-
}
|
385
|
-
if (!(light.type === "dir" && light.space === "view")) {
|
386
|
-
src.push("varying vec4 vViewLightReverseDirAndDist" + i + ";");
|
387
|
-
}
|
388
|
-
}
|
389
|
-
if (quantizedGeometry) {
|
390
|
-
src.push("vec3 octDecode(vec2 oct) {");
|
391
|
-
src.push(" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));");
|
392
|
-
src.push(" if (v.z < 0.0) {");
|
393
|
-
src.push(" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);");
|
394
|
-
src.push(" }");
|
395
|
-
src.push(" return normalize(v);");
|
396
|
-
src.push("}");
|
397
|
-
}
|
398
|
-
}
|
399
|
-
if (texturing) {
|
400
|
-
src.push("attribute vec2 uv;");
|
401
|
-
src.push("varying vec2 vUV;");
|
402
|
-
if (quantizedGeometry) {
|
403
|
-
src.push("uniform mat3 uvDecodeMatrix;")
|
404
|
-
}
|
405
|
-
}
|
406
|
-
if (geometryState.colors) {
|
407
|
-
src.push("attribute vec4 color;");
|
408
|
-
src.push("varying vec4 vColor;");
|
409
|
-
}
|
410
|
-
if (geometryState.primitiveName === "points") {
|
411
|
-
src.push("uniform float pointSize;");
|
412
|
-
}
|
413
|
-
if (billboard === "spherical" || billboard === "cylindrical") {
|
414
|
-
src.push("void billboard(inout mat4 mat) {");
|
415
|
-
src.push(" mat[0][0] = 1.0;");
|
416
|
-
src.push(" mat[0][1] = 0.0;");
|
417
|
-
src.push(" mat[0][2] = 0.0;");
|
418
|
-
if (billboard === "spherical") {
|
419
|
-
src.push(" mat[1][0] = 0.0;");
|
420
|
-
src.push(" mat[1][1] = 1.0;");
|
421
|
-
src.push(" mat[1][2] = 0.0;");
|
422
|
-
}
|
423
|
-
src.push(" mat[2][0] = 0.0;");
|
424
|
-
src.push(" mat[2][1] = 0.0;");
|
425
|
-
src.push(" mat[2][2] =1.0;");
|
426
|
-
src.push("}");
|
427
|
-
}
|
428
|
-
if (receivesShadow) {
|
429
|
-
src.push("const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);");
|
430
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources
|
431
|
-
if (lightsState.lights[i].castsShadow) {
|
432
|
-
src.push("uniform mat4 shadowViewMatrix" + i + ";");
|
433
|
-
src.push("uniform mat4 shadowProjMatrix" + i + ";");
|
434
|
-
src.push("varying vec4 vShadowPosFromLight" + i + ";");
|
435
|
-
}
|
436
|
-
}
|
437
|
-
}
|
438
|
-
src.push("void main(void) {");
|
439
|
-
src.push("vec4 localPosition = vec4(position, 1.0); ");
|
440
|
-
src.push("vec4 worldPosition;");
|
441
|
-
if (quantizedGeometry) {
|
442
|
-
src.push("localPosition = positionsDecodeMatrix * localPosition;");
|
443
|
-
}
|
444
|
-
if (normals) {
|
445
|
-
if (quantizedGeometry) {
|
446
|
-
src.push("vec4 localNormal = vec4(octDecode(normal.xy), 0.0); ");
|
447
|
-
} else {
|
448
|
-
src.push("vec4 localNormal = vec4(normal, 0.0); ");
|
449
|
-
}
|
450
|
-
src.push("mat4 modelNormalMatrix2 = modelNormalMatrix;");
|
451
|
-
src.push("mat4 viewNormalMatrix2 = viewNormalMatrix;");
|
452
|
-
}
|
453
|
-
src.push("mat4 viewMatrix2 = viewMatrix;");
|
454
|
-
src.push("mat4 modelMatrix2 = modelMatrix;");
|
455
|
-
if (stationary) {
|
456
|
-
src.push("viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;")
|
457
|
-
}
|
458
|
-
if (billboard === "spherical" || billboard === "cylindrical") {
|
459
|
-
src.push("mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;");
|
460
|
-
src.push("billboard(modelMatrix2);");
|
461
|
-
src.push("billboard(viewMatrix2);");
|
462
|
-
src.push("billboard(modelViewMatrix);");
|
463
|
-
if (normals) {
|
464
|
-
src.push("mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;");
|
465
|
-
src.push("billboard(modelNormalMatrix2);");
|
466
|
-
src.push("billboard(viewNormalMatrix2);");
|
467
|
-
src.push("billboard(modelViewNormalMatrix);");
|
468
|
-
}
|
469
|
-
src.push("worldPosition = modelMatrix2 * localPosition;");
|
470
|
-
src.push("worldPosition.xyz = worldPosition.xyz + offset;");
|
471
|
-
src.push("vec4 viewPosition = modelViewMatrix * localPosition;");
|
472
|
-
} else {
|
473
|
-
src.push("worldPosition = modelMatrix2 * localPosition;");
|
474
|
-
src.push("worldPosition.xyz = worldPosition.xyz + offset;");
|
475
|
-
src.push("vec4 viewPosition = viewMatrix2 * worldPosition; ");
|
476
|
-
}
|
477
|
-
if (normals) {
|
478
|
-
src.push("vec3 worldNormal = (modelNormalMatrix2 * localNormal).xyz; ");
|
479
|
-
if (lightsState.lightMaps.length > 0) {
|
480
|
-
src.push("vWorldNormal = worldNormal;");
|
481
|
-
}
|
482
|
-
src.push("vViewNormal = normalize((viewNormalMatrix2 * vec4(worldNormal, 1.0)).xyz);");
|
483
|
-
src.push("vec3 tmpVec3;");
|
484
|
-
src.push("float lightDist;");
|
485
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Lights
|
486
|
-
light = lightsState.lights[i];
|
487
|
-
if (light.type === "ambient") {
|
488
|
-
continue;
|
489
|
-
}
|
490
|
-
if (light.type === "dir") {
|
491
|
-
if (light.space === "world") {
|
492
|
-
src.push("tmpVec3 = vec3(viewMatrix2 * vec4(lightDir" + i + ", 0.0) ).xyz;");
|
493
|
-
src.push("vViewLightReverseDirAndDist" + i + " = vec4(-tmpVec3, 0.0);");
|
494
|
-
}
|
495
|
-
}
|
496
|
-
if (light.type === "point") {
|
497
|
-
if (light.space === "world") {
|
498
|
-
src.push("tmpVec3 = (viewMatrix2 * vec4(lightPos" + i + ", 1.0)).xyz - viewPosition.xyz;");
|
499
|
-
src.push("lightDist = abs(length(tmpVec3));");
|
500
|
-
} else {
|
501
|
-
src.push("tmpVec3 = lightPos" + i + ".xyz - viewPosition.xyz;");
|
502
|
-
src.push("lightDist = abs(length(tmpVec3));");
|
503
|
-
}
|
504
|
-
src.push("vViewLightReverseDirAndDist" + i + " = vec4(tmpVec3, lightDist);");
|
505
|
-
}
|
506
|
-
}
|
507
|
-
}
|
508
|
-
if (texturing) {
|
509
|
-
if (quantizedGeometry) {
|
510
|
-
src.push("vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;");
|
511
|
-
} else {
|
512
|
-
src.push("vUV = uv;");
|
513
|
-
}
|
514
|
-
}
|
515
|
-
if (geometryState.colors) {
|
516
|
-
src.push("vColor = color;");
|
517
|
-
}
|
518
|
-
if (geometryState.primitiveName === "points") {
|
519
|
-
src.push("gl_PointSize = pointSize;");
|
520
|
-
}
|
521
|
-
if (clipping) {
|
522
|
-
src.push("vWorldPosition = worldPosition;");
|
523
|
-
}
|
524
|
-
src.push(" vViewPosition = viewPosition.xyz;");
|
525
|
-
src.push("vec4 clipPos = projMatrix * viewPosition;");
|
526
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
527
|
-
src.push("vFragDepth = 1.0 + clipPos.w;");
|
528
|
-
}
|
529
|
-
src.push("gl_Position = clipPos;");
|
530
|
-
if (receivesShadow) {
|
531
|
-
src.push("const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);");
|
532
|
-
src.push("vec4 tempx; ");
|
533
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources
|
534
|
-
if (lightsState.lights[i].castsShadow) {
|
535
|
-
src.push("vShadowPosFromLight" + i + " = texUnitConverter * shadowProjMatrix" + i + " * (shadowViewMatrix" + i + " * worldPosition); ");
|
536
|
-
}
|
537
|
-
}
|
538
|
-
}
|
539
|
-
src.push("}");
|
540
|
-
return src;
|
541
|
-
}
|
542
|
-
|
543
|
-
function buildFragmentDraw(mesh) {
|
544
|
-
|
545
|
-
const scene = mesh.scene;
|
546
|
-
const gl = scene.canvas.gl;
|
547
|
-
const material = mesh._material;
|
548
|
-
const geometryState = mesh._geometry._state;
|
549
|
-
const sectionPlanesState = mesh.scene._sectionPlanesState;
|
550
|
-
const lightsState = mesh.scene._lightsState;
|
551
|
-
const materialState = mesh._material._state;
|
552
|
-
const clipping = sectionPlanesState.sectionPlanes.length > 0;
|
553
|
-
const normals = hasNormals(mesh);
|
554
|
-
const uvs = geometryState.uvBuf;
|
555
|
-
const solid = false && materialState.backfaces;
|
556
|
-
const phongMaterial = (materialState.type === "PhongMaterial");
|
557
|
-
const metallicMaterial = (materialState.type === "MetallicMaterial");
|
558
|
-
const specularMaterial = (materialState.type === "SpecularMaterial");
|
559
|
-
const receivesShadow = getReceivesShadow(mesh);
|
560
|
-
const gammaInput = scene.gammaInput; // If set, then it expects that all textures and colors are premultiplied gamma. Default is false.
|
561
|
-
const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.
|
562
|
-
|
563
|
-
let light;
|
564
|
-
const src = [];
|
565
|
-
|
566
|
-
src.push("// Drawing fragment shader");
|
567
|
-
|
568
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
569
|
-
src.push("#extension GL_EXT_frag_depth : enable");
|
570
|
-
}
|
571
|
-
|
572
|
-
if (normals && material._normalMap) {
|
573
|
-
src.push("#extension GL_OES_standard_derivatives : enable");
|
574
|
-
}
|
575
|
-
|
576
|
-
src.push("#ifdef GL_FRAGMENT_PRECISION_HIGH");
|
577
|
-
src.push("precision highp float;");
|
578
|
-
src.push("precision highp int;");
|
579
|
-
src.push("#else");
|
580
|
-
src.push("precision mediump float;");
|
581
|
-
src.push("precision mediump int;");
|
582
|
-
src.push("#endif");
|
583
|
-
|
584
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
585
|
-
src.push("uniform float logDepthBufFC;");
|
586
|
-
src.push("varying float vFragDepth;");
|
587
|
-
}
|
588
|
-
|
589
|
-
if (receivesShadow) {
|
590
|
-
src.push("float unpackDepth (vec4 color) {");
|
591
|
-
src.push(" const vec4 bitShift = vec4(1.0, 1.0/256.0, 1.0/(256.0 * 256.0), 1.0/(256.0*256.0*256.0));");
|
592
|
-
src.push(" return dot(color, bitShift);");
|
593
|
-
src.push("}");
|
594
|
-
}
|
595
|
-
|
596
|
-
//--------------------------------------------------------------------------------
|
597
|
-
// GAMMA CORRECTION
|
598
|
-
//--------------------------------------------------------------------------------
|
599
|
-
|
600
|
-
src.push("uniform float gammaFactor;");
|
601
|
-
src.push("vec4 linearToLinear( in vec4 value ) {");
|
602
|
-
src.push(" return value;");
|
603
|
-
src.push("}");
|
604
|
-
src.push("vec4 sRGBToLinear( in vec4 value ) {");
|
605
|
-
src.push(" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );");
|
606
|
-
src.push("}");
|
607
|
-
src.push("vec4 gammaToLinear( in vec4 value) {");
|
608
|
-
src.push(" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );");
|
609
|
-
src.push("}");
|
610
|
-
if (gammaOutput) {
|
611
|
-
src.push("vec4 linearToGamma( in vec4 value, in float gammaFactor ) {");
|
612
|
-
src.push(" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );");
|
613
|
-
src.push("}");
|
614
|
-
}
|
615
|
-
|
616
|
-
//--------------------------------------------------------------------------------
|
617
|
-
// USER CLIP PLANES
|
618
|
-
//--------------------------------------------------------------------------------
|
619
|
-
|
620
|
-
if (clipping) {
|
621
|
-
src.push("varying vec4 vWorldPosition;");
|
622
|
-
src.push("uniform bool clippable;");
|
623
|
-
for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {
|
624
|
-
src.push("uniform bool sectionPlaneActive" + i + ";");
|
625
|
-
src.push("uniform vec3 sectionPlanePos" + i + ";");
|
626
|
-
src.push("uniform vec3 sectionPlaneDir" + i + ";");
|
627
|
-
}
|
628
|
-
}
|
629
|
-
|
630
|
-
if (normals) {
|
631
|
-
|
632
|
-
//--------------------------------------------------------------------------------
|
633
|
-
// LIGHT AND REFLECTION MAP INPUTS
|
634
|
-
// Define here so available globally to shader functions
|
635
|
-
//--------------------------------------------------------------------------------
|
636
|
-
|
637
|
-
if (lightsState.lightMaps.length > 0) {
|
638
|
-
src.push("uniform samplerCube lightMap;");
|
639
|
-
src.push("uniform mat4 viewNormalMatrix;");
|
640
|
-
}
|
641
|
-
if (lightsState.reflectionMaps.length > 0) {
|
642
|
-
src.push("uniform samplerCube reflectionMap;");
|
643
|
-
}
|
644
|
-
if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {
|
645
|
-
src.push("uniform mat4 viewMatrix;");
|
646
|
-
}
|
647
|
-
|
648
|
-
//--------------------------------------------------------------------------------
|
649
|
-
// SHADING FUNCTIONS
|
650
|
-
//--------------------------------------------------------------------------------
|
651
|
-
|
652
|
-
// CONSTANT DEFINITIONS
|
653
|
-
|
654
|
-
src.push("#define PI 3.14159265359");
|
655
|
-
src.push("#define RECIPROCAL_PI 0.31830988618");
|
656
|
-
src.push("#define RECIPROCAL_PI2 0.15915494");
|
657
|
-
src.push("#define EPSILON 1e-6");
|
658
|
-
|
659
|
-
src.push("#define saturate(a) clamp( a, 0.0, 1.0 )");
|
660
|
-
|
661
|
-
// UTILITY DEFINITIONS
|
662
|
-
|
663
|
-
src.push("vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {");
|
664
|
-
src.push(" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );");
|
665
|
-
src.push("}");
|
666
|
-
|
667
|
-
// STRUCTURES
|
668
|
-
|
669
|
-
src.push("struct IncidentLight {");
|
670
|
-
src.push(" vec3 color;");
|
671
|
-
src.push(" vec3 direction;");
|
672
|
-
src.push("};");
|
673
|
-
|
674
|
-
src.push("struct ReflectedLight {");
|
675
|
-
src.push(" vec3 diffuse;");
|
676
|
-
src.push(" vec3 specular;");
|
677
|
-
src.push("};");
|
678
|
-
|
679
|
-
src.push("struct Geometry {");
|
680
|
-
src.push(" vec3 position;");
|
681
|
-
src.push(" vec3 viewNormal;");
|
682
|
-
src.push(" vec3 worldNormal;");
|
683
|
-
src.push(" vec3 viewEyeDir;");
|
684
|
-
src.push("};");
|
685
|
-
|
686
|
-
src.push("struct Material {");
|
687
|
-
src.push(" vec3 diffuseColor;");
|
688
|
-
src.push(" float specularRoughness;");
|
689
|
-
src.push(" vec3 specularColor;");
|
690
|
-
src.push(" float shine;"); // Only used for Phong
|
691
|
-
src.push("};");
|
692
|
-
|
693
|
-
// COMMON UTILS
|
694
|
-
|
695
|
-
if (phongMaterial) {
|
696
|
-
|
697
|
-
if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {
|
698
|
-
|
699
|
-
src.push("void computePhongLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {");
|
700
|
-
|
701
|
-
if (lightsState.lightMaps.length > 0) {
|
702
|
-
src.push(" vec3 irradiance = " + TEXTURE_DECODE_FUNCS[lightsState.lightMaps[0].encoding] + "(textureCube(lightMap, geometry.worldNormal)).rgb;");
|
703
|
-
src.push(" irradiance *= PI;");
|
704
|
-
src.push(" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);");
|
705
|
-
src.push(" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;");
|
706
|
-
}
|
707
|
-
if (lightsState.reflectionMaps.length > 0) {
|
708
|
-
src.push(" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);");
|
709
|
-
src.push(" vec3 radiance = textureCube(reflectionMap, reflectVec).rgb * 0.2;");
|
710
|
-
src.push(" radiance *= PI;");
|
711
|
-
src.push(" reflectedLight.specular += radiance;");
|
712
|
-
}
|
713
|
-
src.push("}");
|
714
|
-
}
|
715
|
-
|
716
|
-
src.push("void computePhongLighting(const in IncidentLight directLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {");
|
717
|
-
src.push(" float dotNL = saturate(dot(geometry.viewNormal, directLight.direction));");
|
718
|
-
src.push(" vec3 irradiance = dotNL * directLight.color * PI;");
|
719
|
-
src.push(" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);");
|
720
|
-
src.push(" reflectedLight.specular += directLight.color * material.specularColor * pow(max(dot(reflect(-directLight.direction, -geometry.viewNormal), geometry.viewEyeDir), 0.0), material.shine);");
|
721
|
-
src.push("}");
|
722
|
-
}
|
723
|
-
|
724
|
-
if (metallicMaterial || specularMaterial) {
|
725
|
-
|
726
|
-
// IRRADIANCE EVALUATION
|
727
|
-
|
728
|
-
src.push("float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {");
|
729
|
-
src.push(" float r = ggxRoughness + 0.0001;");
|
730
|
-
src.push(" return (2.0 / (r * r) - 2.0);");
|
731
|
-
src.push("}");
|
732
|
-
|
733
|
-
src.push("float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {");
|
734
|
-
src.push(" float maxMIPLevelScalar = float( maxMIPLevel );");
|
735
|
-
src.push(" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );");
|
736
|
-
src.push(" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );");
|
737
|
-
src.push("}");
|
738
|
-
|
739
|
-
if (lightsState.reflectionMaps.length > 0) {
|
740
|
-
src.push("vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {");
|
741
|
-
src.push(" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);"); //TODO: a random factor - fix this
|
742
|
-
src.push(" vec3 envMapColor = " + TEXTURE_DECODE_FUNCS[lightsState.reflectionMaps[0].encoding] + "(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;");
|
743
|
-
src.push(" return envMapColor;");
|
744
|
-
src.push("}");
|
745
|
-
}
|
746
|
-
|
747
|
-
// SPECULAR BRDF EVALUATION
|
748
|
-
|
749
|
-
src.push("vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {");
|
750
|
-
src.push(" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );");
|
751
|
-
src.push(" return ( 1.0 - specularColor ) * fresnel + specularColor;");
|
752
|
-
src.push("}");
|
753
|
-
|
754
|
-
src.push("float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {");
|
755
|
-
src.push(" float a2 = ( alpha * alpha );");
|
756
|
-
src.push(" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );");
|
757
|
-
src.push(" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );");
|
758
|
-
src.push(" return 1.0 / ( gl * gv );");
|
759
|
-
src.push("}");
|
760
|
-
|
761
|
-
src.push("float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {");
|
762
|
-
src.push(" float a2 = ( alpha * alpha );");
|
763
|
-
src.push(" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );");
|
764
|
-
src.push(" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );");
|
765
|
-
src.push(" return 0.5 / max( gv + gl, EPSILON );");
|
766
|
-
src.push("}");
|
767
|
-
|
768
|
-
src.push("float D_GGX(const in float alpha, const in float dotNH) {");
|
769
|
-
src.push(" float a2 = ( alpha * alpha );");
|
770
|
-
src.push(" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;");
|
771
|
-
src.push(" return RECIPROCAL_PI * a2 / ( denom * denom);");
|
772
|
-
src.push("}");
|
773
|
-
|
774
|
-
src.push("vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {");
|
775
|
-
src.push(" float alpha = ( roughness * roughness );");
|
776
|
-
src.push(" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );");
|
777
|
-
src.push(" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );");
|
778
|
-
src.push(" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );");
|
779
|
-
src.push(" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );");
|
780
|
-
src.push(" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );");
|
781
|
-
src.push(" vec3 F = F_Schlick( specularColor, dotLH );");
|
782
|
-
src.push(" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );");
|
783
|
-
src.push(" float D = D_GGX( alpha, dotNH );");
|
784
|
-
src.push(" return F * (G * D);");
|
785
|
-
src.push("}");
|
786
|
-
|
787
|
-
src.push("vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {");
|
788
|
-
src.push(" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));");
|
789
|
-
src.push(" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);");
|
790
|
-
src.push(" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);");
|
791
|
-
src.push(" vec4 r = roughness * c0 + c1;");
|
792
|
-
src.push(" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;");
|
793
|
-
src.push(" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;");
|
794
|
-
src.push(" return specularColor * AB.x + AB.y;");
|
795
|
-
src.push("}");
|
796
|
-
|
797
|
-
if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {
|
798
|
-
|
799
|
-
src.push("void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {");
|
800
|
-
if (lightsState.lightMaps.length > 0) {
|
801
|
-
src.push(" vec3 irradiance = sRGBToLinear(textureCube(lightMap, geometry.worldNormal)).rgb;");
|
802
|
-
src.push(" irradiance *= PI;");
|
803
|
-
src.push(" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);");
|
804
|
-
src.push(" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;");
|
805
|
-
// src.push(" reflectedLight.diffuse = vec3(1.0, 0.0, 0.0);");
|
806
|
-
}
|
807
|
-
if (lightsState.reflectionMaps.length > 0) {
|
808
|
-
src.push(" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);");
|
809
|
-
src.push(" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);");
|
810
|
-
src.push(" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);");
|
811
|
-
src.push(" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);");
|
812
|
-
src.push(" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);");
|
813
|
-
src.push(" reflectedLight.specular += radiance * specularBRDFContrib;");
|
814
|
-
}
|
815
|
-
src.push("}");
|
816
|
-
}
|
817
|
-
|
818
|
-
// MAIN LIGHTING COMPUTATION FUNCTION
|
819
|
-
|
820
|
-
src.push("void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {");
|
821
|
-
src.push(" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));");
|
822
|
-
src.push(" vec3 irradiance = dotNL * incidentLight.color * PI;");
|
823
|
-
src.push(" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);");
|
824
|
-
src.push(" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);");
|
825
|
-
src.push("}");
|
826
|
-
|
827
|
-
} // (metallicMaterial || specularMaterial)
|
828
|
-
|
829
|
-
} // geometry.normals
|
830
|
-
|
831
|
-
//--------------------------------------------------------------------------------
|
832
|
-
// GEOMETRY INPUTS
|
833
|
-
//--------------------------------------------------------------------------------
|
834
|
-
|
835
|
-
src.push("varying vec3 vViewPosition;");
|
836
|
-
|
837
|
-
if (geometryState.colors) {
|
838
|
-
src.push("varying vec4 vColor;");
|
839
|
-
}
|
840
|
-
|
841
|
-
if (uvs &&
|
842
|
-
((normals && material._normalMap)
|
843
|
-
|| material._ambientMap
|
844
|
-
|| material._baseColorMap
|
845
|
-
|| material._diffuseMap
|
846
|
-
|| material._emissiveMap
|
847
|
-
|| material._metallicMap
|
848
|
-
|| material._roughnessMap
|
849
|
-
|| material._metallicRoughnessMap
|
850
|
-
|| material._specularMap
|
851
|
-
|| material._glossinessMap
|
852
|
-
|| material._specularGlossinessMap
|
853
|
-
|| material._occlusionMap
|
854
|
-
|| material._alphaMap)) {
|
855
|
-
src.push("varying vec2 vUV;");
|
856
|
-
}
|
857
|
-
|
858
|
-
if (normals) {
|
859
|
-
if (lightsState.lightMaps.length > 0) {
|
860
|
-
src.push("varying vec3 vWorldNormal;");
|
861
|
-
}
|
862
|
-
src.push("varying vec3 vViewNormal;");
|
863
|
-
}
|
864
|
-
|
865
|
-
//--------------------------------------------------------------------------------
|
866
|
-
// MATERIAL CHANNEL INPUTS
|
867
|
-
//--------------------------------------------------------------------------------
|
868
|
-
|
869
|
-
if (materialState.ambient) {
|
870
|
-
src.push("uniform vec3 materialAmbient;");
|
871
|
-
}
|
872
|
-
if (materialState.baseColor) {
|
873
|
-
src.push("uniform vec3 materialBaseColor;");
|
874
|
-
}
|
875
|
-
if (materialState.alpha !== undefined && materialState.alpha !== null) {
|
876
|
-
src.push("uniform vec4 materialAlphaModeCutoff;"); // [alpha, alphaMode, alphaCutoff]
|
877
|
-
}
|
878
|
-
if (materialState.emissive) {
|
879
|
-
src.push("uniform vec3 materialEmissive;");
|
880
|
-
}
|
881
|
-
if (materialState.diffuse) {
|
882
|
-
src.push("uniform vec3 materialDiffuse;");
|
883
|
-
}
|
884
|
-
if (materialState.glossiness !== undefined && materialState.glossiness !== null) {
|
885
|
-
src.push("uniform float materialGlossiness;");
|
886
|
-
}
|
887
|
-
if (materialState.shininess !== undefined && materialState.shininess !== null) {
|
888
|
-
src.push("uniform float materialShininess;"); // Phong channel
|
889
|
-
}
|
890
|
-
if (materialState.specular) {
|
891
|
-
src.push("uniform vec3 materialSpecular;");
|
892
|
-
}
|
893
|
-
if (materialState.metallic !== undefined && materialState.metallic !== null) {
|
894
|
-
src.push("uniform float materialMetallic;");
|
895
|
-
}
|
896
|
-
if (materialState.roughness !== undefined && materialState.roughness !== null) {
|
897
|
-
src.push("uniform float materialRoughness;");
|
898
|
-
}
|
899
|
-
if (materialState.specularF0 !== undefined && materialState.specularF0 !== null) {
|
900
|
-
src.push("uniform float materialSpecularF0;");
|
901
|
-
}
|
902
|
-
|
903
|
-
//--------------------------------------------------------------------------------
|
904
|
-
// MATERIAL TEXTURE INPUTS
|
905
|
-
//--------------------------------------------------------------------------------
|
906
|
-
|
907
|
-
if (uvs && material._ambientMap) {
|
908
|
-
src.push("uniform sampler2D ambientMap;");
|
909
|
-
if (material._ambientMap._state.matrix) {
|
910
|
-
src.push("uniform mat4 ambientMapMatrix;");
|
911
|
-
}
|
912
|
-
}
|
913
|
-
if (uvs && material._baseColorMap) {
|
914
|
-
src.push("uniform sampler2D baseColorMap;");
|
915
|
-
if (material._baseColorMap._state.matrix) {
|
916
|
-
src.push("uniform mat4 baseColorMapMatrix;");
|
917
|
-
}
|
918
|
-
}
|
919
|
-
if (uvs && material._diffuseMap) {
|
920
|
-
src.push("uniform sampler2D diffuseMap;");
|
921
|
-
if (material._diffuseMap._state.matrix) {
|
922
|
-
src.push("uniform mat4 diffuseMapMatrix;");
|
923
|
-
}
|
924
|
-
}
|
925
|
-
if (uvs && material._emissiveMap) {
|
926
|
-
src.push("uniform sampler2D emissiveMap;");
|
927
|
-
if (material._emissiveMap._state.matrix) {
|
928
|
-
src.push("uniform mat4 emissiveMapMatrix;");
|
929
|
-
}
|
930
|
-
}
|
931
|
-
if (normals && uvs && material._metallicMap) {
|
932
|
-
src.push("uniform sampler2D metallicMap;");
|
933
|
-
if (material._metallicMap._state.matrix) {
|
934
|
-
src.push("uniform mat4 metallicMapMatrix;");
|
935
|
-
}
|
936
|
-
}
|
937
|
-
if (normals && uvs && material._roughnessMap) {
|
938
|
-
src.push("uniform sampler2D roughnessMap;");
|
939
|
-
if (material._roughnessMap._state.matrix) {
|
940
|
-
src.push("uniform mat4 roughnessMapMatrix;");
|
941
|
-
}
|
942
|
-
}
|
943
|
-
if (normals && uvs && material._metallicRoughnessMap) {
|
944
|
-
src.push("uniform sampler2D metallicRoughnessMap;");
|
945
|
-
if (material._metallicRoughnessMap._state.matrix) {
|
946
|
-
src.push("uniform mat4 metallicRoughnessMapMatrix;");
|
947
|
-
}
|
948
|
-
}
|
949
|
-
if (normals && material._normalMap) {
|
950
|
-
src.push("uniform sampler2D normalMap;");
|
951
|
-
if (material._normalMap._state.matrix) {
|
952
|
-
src.push("uniform mat4 normalMapMatrix;");
|
953
|
-
}
|
954
|
-
src.push("vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {");
|
955
|
-
src.push(" vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );");
|
956
|
-
src.push(" vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );");
|
957
|
-
src.push(" vec2 st0 = dFdx( uv.st );");
|
958
|
-
src.push(" vec2 st1 = dFdy( uv.st );");
|
959
|
-
src.push(" vec3 S = normalize( q0 * st1.t - q1 * st0.t );");
|
960
|
-
src.push(" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );");
|
961
|
-
src.push(" vec3 N = normalize( surf_norm );");
|
962
|
-
src.push(" vec3 mapN = texture2D( normalMap, uv ).xyz * 2.0 - 1.0;");
|
963
|
-
src.push(" mat3 tsn = mat3( S, T, N );");
|
964
|
-
// src.push(" mapN *= 3.0;");
|
965
|
-
src.push(" return normalize( tsn * mapN );");
|
966
|
-
src.push("}");
|
967
|
-
}
|
968
|
-
if (uvs && material._occlusionMap) {
|
969
|
-
src.push("uniform sampler2D occlusionMap;");
|
970
|
-
if (material._occlusionMap._state.matrix) {
|
971
|
-
src.push("uniform mat4 occlusionMapMatrix;");
|
972
|
-
}
|
973
|
-
}
|
974
|
-
if (uvs && material._alphaMap) {
|
975
|
-
src.push("uniform sampler2D alphaMap;");
|
976
|
-
if (material._alphaMap._state.matrix) {
|
977
|
-
src.push("uniform mat4 alphaMapMatrix;");
|
978
|
-
}
|
979
|
-
}
|
980
|
-
if (normals && uvs && material._specularMap) {
|
981
|
-
src.push("uniform sampler2D specularMap;");
|
982
|
-
if (material._specularMap._state.matrix) {
|
983
|
-
src.push("uniform mat4 specularMapMatrix;");
|
984
|
-
}
|
985
|
-
}
|
986
|
-
if (normals && uvs && material._glossinessMap) {
|
987
|
-
src.push("uniform sampler2D glossinessMap;");
|
988
|
-
if (material._glossinessMap._state.matrix) {
|
989
|
-
src.push("uniform mat4 glossinessMapMatrix;");
|
990
|
-
}
|
991
|
-
}
|
992
|
-
if (normals && uvs && material._specularGlossinessMap) {
|
993
|
-
src.push("uniform sampler2D materialSpecularGlossinessMap;");
|
994
|
-
if (material._specularGlossinessMap._state.matrix) {
|
995
|
-
src.push("uniform mat4 materialSpecularGlossinessMapMatrix;");
|
996
|
-
}
|
997
|
-
}
|
998
|
-
|
999
|
-
//--------------------------------------------------------------------------------
|
1000
|
-
// MATERIAL FRESNEL INPUTS
|
1001
|
-
//--------------------------------------------------------------------------------
|
1002
|
-
|
1003
|
-
if (normals && (material._diffuseFresnel ||
|
1004
|
-
material._specularFresnel ||
|
1005
|
-
material._alphaFresnel ||
|
1006
|
-
material._emissiveFresnel ||
|
1007
|
-
material._reflectivityFresnel)) {
|
1008
|
-
src.push("float fresnel(vec3 eyeDir, vec3 normal, float edgeBias, float centerBias, float power) {");
|
1009
|
-
src.push(" float fr = abs(dot(eyeDir, normal));");
|
1010
|
-
src.push(" float finalFr = clamp((fr - edgeBias) / (centerBias - edgeBias), 0.0, 1.0);");
|
1011
|
-
src.push(" return pow(finalFr, power);");
|
1012
|
-
src.push("}");
|
1013
|
-
if (material._diffuseFresnel) {
|
1014
|
-
src.push("uniform float diffuseFresnelCenterBias;");
|
1015
|
-
src.push("uniform float diffuseFresnelEdgeBias;");
|
1016
|
-
src.push("uniform float diffuseFresnelPower;");
|
1017
|
-
src.push("uniform vec3 diffuseFresnelCenterColor;");
|
1018
|
-
src.push("uniform vec3 diffuseFresnelEdgeColor;");
|
1019
|
-
}
|
1020
|
-
if (material._specularFresnel) {
|
1021
|
-
src.push("uniform float specularFresnelCenterBias;");
|
1022
|
-
src.push("uniform float specularFresnelEdgeBias;");
|
1023
|
-
src.push("uniform float specularFresnelPower;");
|
1024
|
-
src.push("uniform vec3 specularFresnelCenterColor;");
|
1025
|
-
src.push("uniform vec3 specularFresnelEdgeColor;");
|
1026
|
-
}
|
1027
|
-
if (material._alphaFresnel) {
|
1028
|
-
src.push("uniform float alphaFresnelCenterBias;");
|
1029
|
-
src.push("uniform float alphaFresnelEdgeBias;");
|
1030
|
-
src.push("uniform float alphaFresnelPower;");
|
1031
|
-
src.push("uniform vec3 alphaFresnelCenterColor;");
|
1032
|
-
src.push("uniform vec3 alphaFresnelEdgeColor;");
|
1033
|
-
}
|
1034
|
-
if (material._reflectivityFresnel) {
|
1035
|
-
src.push("uniform float materialSpecularF0FresnelCenterBias;");
|
1036
|
-
src.push("uniform float materialSpecularF0FresnelEdgeBias;");
|
1037
|
-
src.push("uniform float materialSpecularF0FresnelPower;");
|
1038
|
-
src.push("uniform vec3 materialSpecularF0FresnelCenterColor;");
|
1039
|
-
src.push("uniform vec3 materialSpecularF0FresnelEdgeColor;");
|
1040
|
-
}
|
1041
|
-
if (material._emissiveFresnel) {
|
1042
|
-
src.push("uniform float emissiveFresnelCenterBias;");
|
1043
|
-
src.push("uniform float emissiveFresnelEdgeBias;");
|
1044
|
-
src.push("uniform float emissiveFresnelPower;");
|
1045
|
-
src.push("uniform vec3 emissiveFresnelCenterColor;");
|
1046
|
-
src.push("uniform vec3 emissiveFresnelEdgeColor;");
|
1047
|
-
}
|
1048
|
-
}
|
1049
|
-
|
1050
|
-
//--------------------------------------------------------------------------------
|
1051
|
-
// LIGHT SOURCES
|
1052
|
-
//--------------------------------------------------------------------------------
|
1053
|
-
|
1054
|
-
src.push("uniform vec4 lightAmbient;");
|
1055
|
-
|
1056
|
-
if (normals) {
|
1057
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources
|
1058
|
-
const light = lightsState.lights[i];
|
1059
|
-
if (light.type === "ambient") {
|
1060
|
-
continue;
|
1061
|
-
}
|
1062
|
-
src.push("uniform vec4 lightColor" + i + ";");
|
1063
|
-
if (light.type === "point") {
|
1064
|
-
src.push("uniform vec3 lightAttenuation" + i + ";");
|
1065
|
-
}
|
1066
|
-
if (light.type === "dir" && light.space === "view") {
|
1067
|
-
src.push("uniform vec3 lightDir" + i + ";");
|
1068
|
-
}
|
1069
|
-
if (light.type === "point" && light.space === "view") {
|
1070
|
-
src.push("uniform vec3 lightPos" + i + ";");
|
1071
|
-
} else {
|
1072
|
-
src.push("varying vec4 vViewLightReverseDirAndDist" + i + ";");
|
1073
|
-
}
|
1074
|
-
}
|
1075
|
-
}
|
1076
|
-
|
1077
|
-
if (receivesShadow) {
|
1078
|
-
|
1079
|
-
// Variance castsShadow mapping filter
|
1080
|
-
|
1081
|
-
// src.push("float linstep(float low, float high, float v){");
|
1082
|
-
// src.push(" return clamp((v-low)/(high-low), 0.0, 1.0);");
|
1083
|
-
// src.push("}");
|
1084
|
-
//
|
1085
|
-
// src.push("float VSM(sampler2D depths, vec2 uv, float compare){");
|
1086
|
-
// src.push(" vec2 moments = texture2D(depths, uv).xy;");
|
1087
|
-
// src.push(" float p = smoothstep(compare-0.02, compare, moments.x);");
|
1088
|
-
// src.push(" float variance = max(moments.y - moments.x*moments.x, -0.001);");
|
1089
|
-
// src.push(" float d = compare - moments.x;");
|
1090
|
-
// src.push(" float p_max = linstep(0.2, 1.0, variance / (variance + d*d));");
|
1091
|
-
// src.push(" return clamp(max(p, p_max), 0.0, 1.0);");
|
1092
|
-
// src.push("}");
|
1093
|
-
|
1094
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources
|
1095
|
-
if (lightsState.lights[i].castsShadow) {
|
1096
|
-
src.push("varying vec4 vShadowPosFromLight" + i + ";");
|
1097
|
-
src.push("uniform sampler2D shadowMap" + i + ";");
|
1098
|
-
}
|
1099
|
-
}
|
1100
|
-
}
|
1101
|
-
|
1102
|
-
src.push("uniform vec4 colorize;");
|
1103
|
-
|
1104
|
-
//================================================================================
|
1105
|
-
// MAIN
|
1106
|
-
//================================================================================
|
1107
|
-
|
1108
|
-
src.push("void main(void) {");
|
1109
|
-
|
1110
|
-
if (clipping) {
|
1111
|
-
src.push("if (clippable) {");
|
1112
|
-
src.push(" float dist = 0.0;");
|
1113
|
-
for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {
|
1114
|
-
src.push("if (sectionPlaneActive" + i + ") {");
|
1115
|
-
src.push(" dist += clamp(dot(-sectionPlaneDir" + i + ".xyz, vWorldPosition.xyz - sectionPlanePos" + i + ".xyz), 0.0, 1000.0);");
|
1116
|
-
src.push("}");
|
1117
|
-
}
|
1118
|
-
src.push(" if (dist > 0.0) { discard; }");
|
1119
|
-
if (solid) {
|
1120
|
-
src.push(" if (gl_FrontFacing == false) {");
|
1121
|
-
src.push(" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);");
|
1122
|
-
src.push(" return;");
|
1123
|
-
src.push(" }");
|
1124
|
-
}
|
1125
|
-
src.push("}");
|
1126
|
-
}
|
1127
|
-
|
1128
|
-
if (geometryState.primitiveName === "points") {
|
1129
|
-
src.push("vec2 cxy = 2.0 * gl_PointCoord - 1.0;");
|
1130
|
-
src.push("float r = dot(cxy, cxy);");
|
1131
|
-
src.push("if (r > 1.0) {");
|
1132
|
-
src.push(" discard;");
|
1133
|
-
src.push("}");
|
1134
|
-
}
|
1135
|
-
|
1136
|
-
src.push("float occlusion = 1.0;");
|
1137
|
-
|
1138
|
-
if (materialState.ambient) {
|
1139
|
-
src.push("vec3 ambientColor = materialAmbient;");
|
1140
|
-
} else {
|
1141
|
-
src.push("vec3 ambientColor = vec3(1.0, 1.0, 1.0);");
|
1142
|
-
}
|
1143
|
-
|
1144
|
-
if (materialState.diffuse) {
|
1145
|
-
src.push("vec3 diffuseColor = materialDiffuse;");
|
1146
|
-
} else if (materialState.baseColor) {
|
1147
|
-
src.push("vec3 diffuseColor = materialBaseColor;");
|
1148
|
-
} else {
|
1149
|
-
src.push("vec3 diffuseColor = vec3(1.0, 1.0, 1.0);");
|
1150
|
-
}
|
1151
|
-
|
1152
|
-
if (geometryState.colors) {
|
1153
|
-
src.push("diffuseColor *= vColor.rgb;");
|
1154
|
-
}
|
1155
|
-
|
1156
|
-
if (materialState.emissive) {
|
1157
|
-
src.push("vec3 emissiveColor = materialEmissive;"); // Emissive default is (0,0,0), so initializing here
|
1158
|
-
} else {
|
1159
|
-
src.push("vec3 emissiveColor = vec3(0.0, 0.0, 0.0);");
|
1160
|
-
}
|
1161
|
-
|
1162
|
-
if (materialState.specular) {
|
1163
|
-
src.push("vec3 specular = materialSpecular;");
|
1164
|
-
} else {
|
1165
|
-
src.push("vec3 specular = vec3(1.0, 1.0, 1.0);");
|
1166
|
-
}
|
1167
|
-
|
1168
|
-
if (materialState.alpha !== undefined) {
|
1169
|
-
src.push("float alpha = materialAlphaModeCutoff[0];");
|
1170
|
-
} else {
|
1171
|
-
src.push("float alpha = 1.0;");
|
1172
|
-
}
|
1173
|
-
|
1174
|
-
if (geometryState.colors) {
|
1175
|
-
src.push("alpha *= vColor.a;");
|
1176
|
-
}
|
1177
|
-
|
1178
|
-
if (materialState.glossiness !== undefined) {
|
1179
|
-
src.push("float glossiness = materialGlossiness;");
|
1180
|
-
} else {
|
1181
|
-
src.push("float glossiness = 1.0;");
|
1182
|
-
}
|
1183
|
-
|
1184
|
-
if (materialState.metallic !== undefined) {
|
1185
|
-
src.push("float metallic = materialMetallic;");
|
1186
|
-
} else {
|
1187
|
-
src.push("float metallic = 1.0;");
|
1188
|
-
}
|
1189
|
-
|
1190
|
-
if (materialState.roughness !== undefined) {
|
1191
|
-
src.push("float roughness = materialRoughness;");
|
1192
|
-
} else {
|
1193
|
-
src.push("float roughness = 1.0;");
|
1194
|
-
}
|
1195
|
-
|
1196
|
-
if (materialState.specularF0 !== undefined) {
|
1197
|
-
src.push("float specularF0 = materialSpecularF0;");
|
1198
|
-
} else {
|
1199
|
-
src.push("float specularF0 = 1.0;");
|
1200
|
-
}
|
1201
|
-
|
1202
|
-
//--------------------------------------------------------------------------------
|
1203
|
-
// TEXTURING
|
1204
|
-
//--------------------------------------------------------------------------------
|
1205
|
-
|
1206
|
-
if (uvs && ((normals && material._normalMap)
|
1207
|
-
|| material._ambientMap
|
1208
|
-
|| material._baseColorMap
|
1209
|
-
|| material._diffuseMap
|
1210
|
-
|| material._occlusionMap
|
1211
|
-
|| material._emissiveMap
|
1212
|
-
|| material._metallicMap
|
1213
|
-
|| material._roughnessMap
|
1214
|
-
|| material._metallicRoughnessMap
|
1215
|
-
|| material._specularMap
|
1216
|
-
|| material._glossinessMap
|
1217
|
-
|| material._specularGlossinessMap
|
1218
|
-
|| material._alphaMap)) {
|
1219
|
-
src.push("vec4 texturePos = vec4(vUV.s, vUV.t, 1.0, 1.0);");
|
1220
|
-
src.push("vec2 textureCoord;");
|
1221
|
-
}
|
1222
|
-
|
1223
|
-
if (uvs && material._ambientMap) {
|
1224
|
-
if (material._ambientMap._state.matrix) {
|
1225
|
-
src.push("textureCoord = (ambientMapMatrix * texturePos).xy;");
|
1226
|
-
} else {
|
1227
|
-
src.push("textureCoord = texturePos.xy;");
|
1228
|
-
}
|
1229
|
-
src.push("vec4 ambientTexel = texture2D(ambientMap, textureCoord).rgb;");
|
1230
|
-
src.push("ambientTexel = " + TEXTURE_DECODE_FUNCS[material._ambientMap._state.encoding] + "(ambientTexel);");
|
1231
|
-
src.push("ambientColor *= ambientTexel.rgb;");
|
1232
|
-
}
|
1233
|
-
|
1234
|
-
if (uvs && material._diffuseMap) {
|
1235
|
-
if (material._diffuseMap._state.matrix) {
|
1236
|
-
src.push("textureCoord = (diffuseMapMatrix * texturePos).xy;");
|
1237
|
-
} else {
|
1238
|
-
src.push("textureCoord = texturePos.xy;");
|
1239
|
-
}
|
1240
|
-
src.push("vec4 diffuseTexel = texture2D(diffuseMap, textureCoord);");
|
1241
|
-
src.push("diffuseTexel = " + TEXTURE_DECODE_FUNCS[material._diffuseMap._state.encoding] + "(diffuseTexel);");
|
1242
|
-
src.push("diffuseColor *= diffuseTexel.rgb;");
|
1243
|
-
src.push("alpha *= diffuseTexel.a;");
|
1244
|
-
}
|
1245
|
-
|
1246
|
-
if (uvs && material._baseColorMap) {
|
1247
|
-
if (material._baseColorMap._state.matrix) {
|
1248
|
-
src.push("textureCoord = (baseColorMapMatrix * texturePos).xy;");
|
1249
|
-
} else {
|
1250
|
-
src.push("textureCoord = texturePos.xy;");
|
1251
|
-
}
|
1252
|
-
src.push("vec4 baseColorTexel = texture2D(baseColorMap, textureCoord);");
|
1253
|
-
src.push("baseColorTexel = " + TEXTURE_DECODE_FUNCS[material._baseColorMap._state.encoding] + "(baseColorTexel);");
|
1254
|
-
src.push("diffuseColor *= baseColorTexel.rgb;");
|
1255
|
-
src.push("alpha *= baseColorTexel.a;");
|
1256
|
-
}
|
1257
|
-
|
1258
|
-
if (uvs && material._emissiveMap) {
|
1259
|
-
if (material._emissiveMap._state.matrix) {
|
1260
|
-
src.push("textureCoord = (emissiveMapMatrix * texturePos).xy;");
|
1261
|
-
} else {
|
1262
|
-
src.push("textureCoord = texturePos.xy;");
|
1263
|
-
}
|
1264
|
-
src.push("vec4 emissiveTexel = texture2D(emissiveMap, textureCoord);");
|
1265
|
-
src.push("emissiveTexel = " + TEXTURE_DECODE_FUNCS[material._emissiveMap._state.encoding] + "(emissiveTexel);");
|
1266
|
-
src.push("emissiveColor = emissiveTexel.rgb;");
|
1267
|
-
}
|
1268
|
-
|
1269
|
-
if (uvs && material._alphaMap) {
|
1270
|
-
if (material._alphaMap._state.matrix) {
|
1271
|
-
src.push("textureCoord = (alphaMapMatrix * texturePos).xy;");
|
1272
|
-
} else {
|
1273
|
-
src.push("textureCoord = texturePos.xy;");
|
1274
|
-
}
|
1275
|
-
src.push("alpha *= texture2D(alphaMap, textureCoord).r;");
|
1276
|
-
}
|
1277
|
-
|
1278
|
-
if (uvs && material._occlusionMap) {
|
1279
|
-
if (material._occlusionMap._state.matrix) {
|
1280
|
-
src.push("textureCoord = (occlusionMapMatrix * texturePos).xy;");
|
1281
|
-
} else {
|
1282
|
-
src.push("textureCoord = texturePos.xy;");
|
1283
|
-
}
|
1284
|
-
src.push("occlusion *= texture2D(occlusionMap, textureCoord).r;");
|
1285
|
-
}
|
1286
|
-
|
1287
|
-
if (normals && ((lightsState.lights.length > 0) || lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {
|
1288
|
-
|
1289
|
-
//--------------------------------------------------------------------------------
|
1290
|
-
// SHADING
|
1291
|
-
//--------------------------------------------------------------------------------
|
1292
|
-
|
1293
|
-
if (uvs && material._normalMap) {
|
1294
|
-
if (material._normalMap._state.matrix) {
|
1295
|
-
src.push("textureCoord = (normalMapMatrix * texturePos).xy;");
|
1296
|
-
} else {
|
1297
|
-
src.push("textureCoord = texturePos.xy;");
|
1298
|
-
}
|
1299
|
-
src.push("vec3 viewNormal = perturbNormal2Arb( vViewPosition, normalize(vViewNormal), textureCoord );");
|
1300
|
-
} else {
|
1301
|
-
src.push("vec3 viewNormal = normalize(vViewNormal);");
|
1302
|
-
}
|
1303
|
-
|
1304
|
-
if (uvs && material._specularMap) {
|
1305
|
-
if (material._specularMap._state.matrix) {
|
1306
|
-
src.push("textureCoord = (specularMapMatrix * texturePos).xy;");
|
1307
|
-
} else {
|
1308
|
-
src.push("textureCoord = texturePos.xy;");
|
1309
|
-
}
|
1310
|
-
src.push("specular *= texture2D(specularMap, textureCoord).rgb;");
|
1311
|
-
}
|
1312
|
-
|
1313
|
-
if (uvs && material._glossinessMap) {
|
1314
|
-
if (material._glossinessMap._state.matrix) {
|
1315
|
-
src.push("textureCoord = (glossinessMapMatrix * texturePos).xy;");
|
1316
|
-
} else {
|
1317
|
-
src.push("textureCoord = texturePos.xy;");
|
1318
|
-
}
|
1319
|
-
src.push("glossiness *= texture2D(glossinessMap, textureCoord).r;");
|
1320
|
-
}
|
1321
|
-
|
1322
|
-
if (uvs && material._specularGlossinessMap) {
|
1323
|
-
if (material._specularGlossinessMap._state.matrix) {
|
1324
|
-
src.push("textureCoord = (materialSpecularGlossinessMapMatrix * texturePos).xy;");
|
1325
|
-
} else {
|
1326
|
-
src.push("textureCoord = texturePos.xy;");
|
1327
|
-
}
|
1328
|
-
src.push("vec4 specGlossRGB = texture2D(materialSpecularGlossinessMap, textureCoord).rgba;"); // TODO: what if only RGB texture?
|
1329
|
-
src.push("specular *= specGlossRGB.rgb;");
|
1330
|
-
src.push("glossiness *= specGlossRGB.a;");
|
1331
|
-
}
|
1332
|
-
|
1333
|
-
if (uvs && material._metallicMap) {
|
1334
|
-
if (material._metallicMap._state.matrix) {
|
1335
|
-
src.push("textureCoord = (metallicMapMatrix * texturePos).xy;");
|
1336
|
-
} else {
|
1337
|
-
src.push("textureCoord = texturePos.xy;");
|
1338
|
-
}
|
1339
|
-
src.push("metallic *= texture2D(metallicMap, textureCoord).r;");
|
1340
|
-
}
|
1341
|
-
|
1342
|
-
if (uvs && material._roughnessMap) {
|
1343
|
-
if (material._roughnessMap._state.matrix) {
|
1344
|
-
src.push("textureCoord = (roughnessMapMatrix * texturePos).xy;");
|
1345
|
-
} else {
|
1346
|
-
src.push("textureCoord = texturePos.xy;");
|
1347
|
-
}
|
1348
|
-
src.push("roughness *= texture2D(roughnessMap, textureCoord).r;");
|
1349
|
-
}
|
1350
|
-
|
1351
|
-
if (uvs && material._metallicRoughnessMap) {
|
1352
|
-
if (material._metallicRoughnessMap._state.matrix) {
|
1353
|
-
src.push("textureCoord = (metallicRoughnessMapMatrix * texturePos).xy;");
|
1354
|
-
} else {
|
1355
|
-
src.push("textureCoord = texturePos.xy;");
|
1356
|
-
}
|
1357
|
-
src.push("vec3 metalRoughRGB = texture2D(metallicRoughnessMap, textureCoord).rgb;");
|
1358
|
-
src.push("metallic *= metalRoughRGB.b;");
|
1359
|
-
src.push("roughness *= metalRoughRGB.g;");
|
1360
|
-
}
|
1361
|
-
|
1362
|
-
src.push("vec3 viewEyeDir = normalize(-vViewPosition);");
|
1363
|
-
|
1364
|
-
if (material._diffuseFresnel) {
|
1365
|
-
src.push("float diffuseFresnel = fresnel(viewEyeDir, viewNormal, diffuseFresnelEdgeBias, diffuseFresnelCenterBias, diffuseFresnelPower);");
|
1366
|
-
src.push("diffuseColor *= mix(diffuseFresnelEdgeColor, diffuseFresnelCenterColor, diffuseFresnel);");
|
1367
|
-
}
|
1368
|
-
if (material._specularFresnel) {
|
1369
|
-
src.push("float specularFresnel = fresnel(viewEyeDir, viewNormal, specularFresnelEdgeBias, specularFresnelCenterBias, specularFresnelPower);");
|
1370
|
-
src.push("specular *= mix(specularFresnelEdgeColor, specularFresnelCenterColor, specularFresnel);");
|
1371
|
-
}
|
1372
|
-
if (material._alphaFresnel) {
|
1373
|
-
src.push("float alphaFresnel = fresnel(viewEyeDir, viewNormal, alphaFresnelEdgeBias, alphaFresnelCenterBias, alphaFresnelPower);");
|
1374
|
-
src.push("alpha *= mix(alphaFresnelEdgeColor.r, alphaFresnelCenterColor.r, alphaFresnel);");
|
1375
|
-
}
|
1376
|
-
if (material._emissiveFresnel) {
|
1377
|
-
src.push("float emissiveFresnel = fresnel(viewEyeDir, viewNormal, emissiveFresnelEdgeBias, emissiveFresnelCenterBias, emissiveFresnelPower);");
|
1378
|
-
src.push("emissiveColor *= mix(emissiveFresnelEdgeColor, emissiveFresnelCenterColor, emissiveFresnel);");
|
1379
|
-
}
|
1380
|
-
|
1381
|
-
src.push("if (materialAlphaModeCutoff[1] == 1.0 && alpha < materialAlphaModeCutoff[2]) {"); // ie. (alphaMode == "mask" && alpha < alphaCutoff)
|
1382
|
-
src.push(" discard;"); // TODO: Discard earlier within this shader?
|
1383
|
-
src.push("}");
|
1384
|
-
|
1385
|
-
// PREPARE INPUTS FOR SHADER FUNCTIONS
|
1386
|
-
|
1387
|
-
src.push("IncidentLight light;");
|
1388
|
-
src.push("Material material;");
|
1389
|
-
src.push("Geometry geometry;");
|
1390
|
-
src.push("ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));");
|
1391
|
-
src.push("vec3 viewLightDir;");
|
1392
|
-
|
1393
|
-
if (phongMaterial) {
|
1394
|
-
src.push("material.diffuseColor = diffuseColor;");
|
1395
|
-
src.push("material.specularColor = specular;");
|
1396
|
-
src.push("material.shine = materialShininess;");
|
1397
|
-
}
|
1398
|
-
|
1399
|
-
if (specularMaterial) {
|
1400
|
-
src.push("float oneMinusSpecularStrength = 1.0 - max(max(specular.r, specular.g ),specular.b);"); // Energy conservation
|
1401
|
-
src.push("material.diffuseColor = diffuseColor * oneMinusSpecularStrength;");
|
1402
|
-
src.push("material.specularRoughness = clamp( 1.0 - glossiness, 0.04, 1.0 );");
|
1403
|
-
src.push("material.specularColor = specular;");
|
1404
|
-
}
|
1405
|
-
|
1406
|
-
if (metallicMaterial) {
|
1407
|
-
src.push("float dielectricSpecular = 0.16 * specularF0 * specularF0;");
|
1408
|
-
src.push("material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);");
|
1409
|
-
src.push("material.specularRoughness = clamp(roughness, 0.04, 1.0);");
|
1410
|
-
src.push("material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);");
|
1411
|
-
}
|
1412
|
-
|
1413
|
-
src.push("geometry.position = vViewPosition;");
|
1414
|
-
if (lightsState.lightMaps.length > 0) {
|
1415
|
-
src.push("geometry.worldNormal = normalize(vWorldNormal);");
|
1416
|
-
}
|
1417
|
-
src.push("geometry.viewNormal = viewNormal;");
|
1418
|
-
src.push("geometry.viewEyeDir = viewEyeDir;");
|
1419
|
-
|
1420
|
-
// ENVIRONMENT AND REFLECTION MAP SHADING
|
1421
|
-
|
1422
|
-
if ((phongMaterial) && (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {
|
1423
|
-
src.push("computePhongLightMapping(geometry, material, reflectedLight);");
|
1424
|
-
}
|
1425
|
-
|
1426
|
-
if ((specularMaterial || metallicMaterial) && (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {
|
1427
|
-
src.push("computePBRLightMapping(geometry, material, reflectedLight);");
|
1428
|
-
}
|
1429
|
-
|
1430
|
-
// LIGHT SOURCE SHADING
|
1431
|
-
|
1432
|
-
src.push("float shadow = 1.0;");
|
1433
|
-
|
1434
|
-
// if (receivesShadow) {
|
1435
|
-
//
|
1436
|
-
// src.push("float lightDepth2 = clamp(length(lightPos)/40.0, 0.0, 1.0);");
|
1437
|
-
// src.push("float illuminated = VSM(sLightDepth, lightUV, lightDepth2);");
|
1438
|
-
//
|
1439
|
-
src.push("float shadowAcneRemover = 0.007;");
|
1440
|
-
src.push("vec3 fragmentDepth;");
|
1441
|
-
src.push("float texelSize = 1.0 / 1024.0;");
|
1442
|
-
src.push("float amountInLight = 0.0;");
|
1443
|
-
src.push("vec3 shadowCoord;");
|
1444
|
-
src.push('vec4 rgbaDepth;');
|
1445
|
-
src.push("float depth;");
|
1446
|
-
// }
|
1447
|
-
|
1448
|
-
const numShadows = 0;
|
1449
|
-
for (let i = 0, len = lightsState.lights.length; i < len; i++) {
|
1450
|
-
|
1451
|
-
const light = lightsState.lights[i];
|
1452
|
-
|
1453
|
-
if (light.type === "ambient") {
|
1454
|
-
continue;
|
1455
|
-
}
|
1456
|
-
if (light.type === "dir" && light.space === "view") {
|
1457
|
-
src.push("viewLightDir = -normalize(lightDir" + i + ");");
|
1458
|
-
} else if (light.type === "point" && light.space === "view") {
|
1459
|
-
src.push("viewLightDir = normalize(lightPos" + i + " - vViewPosition);");
|
1460
|
-
//src.push("tmpVec3 = lightPos" + i + ".xyz - viewPosition.xyz;");
|
1461
|
-
//src.push("lightDist = abs(length(tmpVec3));");
|
1462
|
-
} else {
|
1463
|
-
src.push("viewLightDir = normalize(vViewLightReverseDirAndDist" + i + ".xyz);"); // If normal mapping, the fragment->light vector will be in tangent space
|
1464
|
-
}
|
1465
|
-
|
1466
|
-
if (receivesShadow && light.castsShadow) {
|
1467
|
-
|
1468
|
-
// if (true) {
|
1469
|
-
// src.push('shadowCoord = (vShadowPosFromLight' + i + '.xyz/vShadowPosFromLight' + i + '.w)/2.0 + 0.5;');
|
1470
|
-
// src.push("lightDepth2 = clamp(length(vec3[0.0, 20.0, 20.0])/40.0, 0.0, 1.0);");
|
1471
|
-
// src.push("castsShadow *= VSM(shadowMap' + i + ', shadowCoord, lightDepth2);");
|
1472
|
-
// }
|
1473
|
-
//
|
1474
|
-
// if (false) {
|
1475
|
-
//
|
1476
|
-
// PCF
|
1477
|
-
|
1478
|
-
src.push("shadow = 0.0;");
|
1479
|
-
|
1480
|
-
src.push("fragmentDepth = vShadowPosFromLight" + i + ".xyz;");
|
1481
|
-
src.push("fragmentDepth.z -= shadowAcneRemover;");
|
1482
|
-
src.push("for (int x = -3; x <= 3; x++) {");
|
1483
|
-
src.push(" for (int y = -3; y <= 3; y++) {");
|
1484
|
-
src.push(" float texelDepth = unpackDepth(texture2D(shadowMap" + i + ", fragmentDepth.xy + vec2(x, y) * texelSize));");
|
1485
|
-
src.push(" if (fragmentDepth.z < texelDepth) {");
|
1486
|
-
src.push(" shadow += 1.0;");
|
1487
|
-
src.push(" }");
|
1488
|
-
src.push(" }");
|
1489
|
-
src.push("}");
|
1490
|
-
|
1491
|
-
src.push("shadow = shadow / 9.0;");
|
1492
|
-
|
1493
|
-
src.push("light.color = lightColor" + i + ".rgb * (lightColor" + i + ".a * shadow);"); // a is intensity
|
1494
|
-
//
|
1495
|
-
// }
|
1496
|
-
//
|
1497
|
-
// if (false){
|
1498
|
-
//
|
1499
|
-
// src.push("shadow = 1.0;");
|
1500
|
-
//
|
1501
|
-
// src.push('shadowCoord = (vShadowPosFromLight' + i + '.xyz/vShadowPosFromLight' + i + '.w)/2.0 + 0.5;');
|
1502
|
-
//
|
1503
|
-
// src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( -0.94201624, -0.39906216 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');
|
1504
|
-
// src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( 0.94558609, -0.76890725 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');
|
1505
|
-
// src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( -0.094184101, -0.92938870 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');
|
1506
|
-
// src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( 0.34495938, 0.29387760 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');
|
1507
|
-
//
|
1508
|
-
// src.push("light.color = lightColor" + i + ".rgb * (lightColor" + i + ".a * shadow);");
|
1509
|
-
// }
|
1510
|
-
} else {
|
1511
|
-
src.push("light.color = lightColor" + i + ".rgb * (lightColor" + i + ".a );"); // a is intensity
|
1512
|
-
}
|
1513
|
-
|
1514
|
-
src.push("light.direction = viewLightDir;");
|
1515
|
-
|
1516
|
-
if (phongMaterial) {
|
1517
|
-
src.push("computePhongLighting(light, geometry, material, reflectedLight);");
|
1518
|
-
}
|
1519
|
-
|
1520
|
-
if (specularMaterial || metallicMaterial) {
|
1521
|
-
src.push("computePBRLighting(light, geometry, material, reflectedLight);");
|
1522
|
-
}
|
1523
|
-
}
|
1524
|
-
|
1525
|
-
if (numShadows > 0) {
|
1526
|
-
//src.push("shadow /= " + (9 * numShadows) + ".0;");
|
1527
|
-
}
|
1528
|
-
|
1529
|
-
//src.push("reflectedLight.diffuse *= shadow;");
|
1530
|
-
|
1531
|
-
// COMBINE TERMS
|
1532
|
-
|
1533
|
-
if (phongMaterial) {
|
1534
|
-
src.push("vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * diffuseColor) + ((occlusion * (( reflectedLight.diffuse + reflectedLight.specular)))) + emissiveColor;");
|
1535
|
-
|
1536
|
-
} else {
|
1537
|
-
src.push("vec3 outgoingLight = (occlusion * (reflectedLight.diffuse)) + (occlusion * reflectedLight.specular) + emissiveColor;");
|
1538
|
-
}
|
1539
|
-
|
1540
|
-
} else {
|
1541
|
-
|
1542
|
-
//--------------------------------------------------------------------------------
|
1543
|
-
// NO SHADING - EMISSIVE and AMBIENT ONLY
|
1544
|
-
//--------------------------------------------------------------------------------
|
1545
|
-
|
1546
|
-
src.push("ambientColor *= (lightAmbient.rgb * lightAmbient.a);");
|
1547
|
-
|
1548
|
-
src.push("vec3 outgoingLight = emissiveColor + ambientColor;");
|
1549
|
-
}
|
1550
|
-
|
1551
|
-
src.push("gl_FragColor = vec4(outgoingLight, alpha) * colorize;");
|
1552
|
-
|
1553
|
-
if (gammaOutput) {
|
1554
|
-
src.push("gl_FragColor = linearToGamma(gl_FragColor, gammaFactor);");
|
1555
|
-
}
|
1556
|
-
|
1557
|
-
if (scene.logarithmicDepthBufferEnabled) {
|
1558
|
-
src.push("gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;");
|
1559
|
-
}
|
1560
|
-
|
1561
|
-
src.push("}");
|
1562
|
-
|
1563
|
-
return src;
|
1564
|
-
}
|
1565
|
-
|
1566
|
-
export {DrawShaderSource};
|