csyjk 1.2.2 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. package/{dist/app.js → app.js} +0 -0
  2. package/{dist/index.html → index.html} +0 -0
  3. package/package.json +5 -40
  4. package/{dist/style.css → style.css} +0 -0
  5. package/.babelrc +0 -7
  6. package/.idea/modules.xml +0 -8
  7. package/.idea/xx.iml +0 -12
  8. package/public/gltf.js +0 -2241
  9. package/public/index.html +0 -10
  10. package/src/index.js +0 -3
  11. package/src/lib/gltf/assets/check.jpg +0 -0
  12. package/src/lib/gltf/assets/iconfont/iconfont.css +0 -358
  13. package/src/lib/gltf/assets/iconfont/iconfont.eot +0 -0
  14. package/src/lib/gltf/assets/iconfont/iconfont.js +0 -1
  15. package/src/lib/gltf/assets/iconfont/iconfont.json +0 -604
  16. package/src/lib/gltf/assets/iconfont/iconfont.svg +0 -189
  17. package/src/lib/gltf/assets/iconfont/iconfont.ttf +0 -0
  18. package/src/lib/gltf/assets/iconfont/iconfont.woff +0 -0
  19. package/src/lib/gltf/assets/iconfont/iconfont.woff2 +0 -0
  20. package/src/lib/gltf/assets/yjkkit-sdk/index.js +0 -0
  21. package/src/lib/gltf/assets/yjkkit-sdk/package.json +0 -15
  22. package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/ContextMenu.js +0 -863
  23. package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/index.js +0 -1
  24. package/src/lib/gltf/assets/yjkkit-sdk/src/extras/index.js +0 -1
  25. package/src/lib/gltf/assets/yjkkit-sdk/src/index.js +0 -3
  26. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +0 -462
  27. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +0 -279
  28. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +0 -262
  29. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/index.js +0 -1
  30. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/Annotation.js +0 -362
  31. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +0 -575
  32. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/index.js +0 -1
  33. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +0 -333
  34. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/index.js +0 -1
  35. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +0 -777
  36. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/index.js +0 -1
  37. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +0 -525
  38. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +0 -242
  39. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +0 -297
  40. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/index.js +0 -1
  41. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js +0 -345
  42. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/index.js +0 -1
  43. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +0 -122
  44. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +0 -462
  45. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js +0 -508
  46. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js +0 -922
  47. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/index.js +0 -2
  48. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/CubeTextureCanvas.js +0 -273
  49. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/NavCubePlugin.js +0 -687
  50. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/index.js +0 -1
  51. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +0 -145
  52. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +0 -777
  53. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/index.js +0 -1
  54. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +0 -33
  55. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +0 -273
  56. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +0 -313
  57. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/index.js +0 -2
  58. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Control.js +0 -1328
  59. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Overview.js +0 -249
  60. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Plane.js +0 -169
  61. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +0 -403
  62. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/index.js +0 -1
  63. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +0 -134
  64. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/index.js +0 -1
  65. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +0 -77
  66. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/Storey.js +0 -61
  67. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyMap.js +0 -57
  68. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +0 -822
  69. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/index.js +0 -1
  70. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/ModelTreeView.js +0 -888
  71. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewNode.js +0 -88
  72. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewPlugin.js +0 -624
  73. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/index.js +0 -1
  74. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/modelValidation.js +0 -87
  75. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/ViewCullPlugin.js +0 -295
  76. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/index.js +0 -1
  77. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +0 -78
  78. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +0 -847
  79. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/index.js +0 -2
  80. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +0 -167
  81. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +0 -228
  82. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +0 -220
  83. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +0 -279
  84. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +0 -244
  85. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +0 -301
  86. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +0 -426
  87. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +0 -479
  88. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +0 -6818
  89. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +0 -238
  90. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +0 -1279
  91. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/index.js +0 -1
  92. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +0 -11
  93. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +0 -2060
  94. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +0 -2155
  95. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +0 -1002
  96. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +0 -64
  97. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +0 -153
  98. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +0 -267
  99. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +0 -553
  100. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +0 -991
  101. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +0 -49
  102. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/index.js +0 -17
  103. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/culling/ObjectCullStates.js +0 -205
  104. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Dot.js +0 -78
  105. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Label.js +0 -97
  106. package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Wire.js +0 -95
  107. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Plugin.js +0 -112
  108. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Viewer.js +0 -372
  109. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/index.js +0 -3
  110. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaultColors.js +0 -162
  111. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaults.js +0 -39
  112. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaModel.js +0 -145
  113. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaObject.js +0 -215
  114. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaScene.js +0 -311
  115. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/CameraControl.js +0 -1669
  116. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/cc.js +0 -0
  117. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/CameraUpdater.js +0 -312
  118. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PanController.js +0 -112
  119. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PickController.js +0 -193
  120. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +0 -289
  121. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/cu.js +0 -0
  122. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +0 -122
  123. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +0 -186
  124. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +0 -68
  125. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +0 -439
  126. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +0 -361
  127. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +0 -258
  128. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +0 -197
  129. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/mouspan.js +0 -498
  130. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Component.js +0 -908
  131. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Entity.js +0 -475
  132. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/ImagePlane.js +0 -570
  133. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/index.js +0 -1
  134. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/PerformanceModel.js +0 -2623
  135. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/index.js +0 -1
  136. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js +0 -21
  137. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js +0 -262
  138. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js +0 -697
  139. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js +0 -34
  140. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js +0 -63
  141. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/compression.js +0 -183
  142. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js +0 -33
  143. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js +0 -736
  144. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js +0 -68
  145. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js +0 -295
  146. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +0 -327
  147. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js +0 -698
  148. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js +0 -68
  149. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js +0 -364
  150. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +0 -356
  151. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js +0 -33
  152. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js +0 -776
  153. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js +0 -113
  154. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js +0 -340
  155. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +0 -312
  156. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +0 -343
  157. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +0 -331
  158. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js +0 -242
  159. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +0 -348
  160. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js +0 -737
  161. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js +0 -143
  162. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js +0 -373
  163. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +0 -366
  164. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +0 -370
  165. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +0 -386
  166. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +0 -376
  167. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +0 -293
  168. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +0 -382
  169. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js +0 -37
  170. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js +0 -1017
  171. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js +0 -246
  172. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js +0 -809
  173. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +0 -504
  174. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +0 -297
  175. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +0 -300
  176. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +0 -322
  177. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +0 -311
  178. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +0 -291
  179. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +0 -319
  180. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +0 -305
  181. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +0 -300
  182. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +0 -242
  183. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +0 -323
  184. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js +0 -969
  185. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js +0 -246
  186. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js +0 -859
  187. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +0 -557
  188. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +0 -341
  189. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +0 -338
  190. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +0 -356
  191. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +0 -354
  192. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +0 -329
  193. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +0 -358
  194. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +0 -349
  195. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +0 -363
  196. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +0 -284
  197. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +0 -354
  198. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Camera.js +0 -880
  199. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraFlightAnimation.js +0 -669
  200. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPath.js +0 -194
  201. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPathAnimation.js +0 -326
  202. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CustomProjection.js +0 -149
  203. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Frustum.js +0 -316
  204. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Ortho.js +0 -286
  205. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Perspective.js +0 -302
  206. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/index.js +0 -2
  207. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Canvas.js +0 -464
  208. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Spinner.js +0 -323
  209. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/core.js +0 -234
  210. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/Geometry.js +0 -33
  211. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/ReadableGeometry.js +0 -689
  212. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/VBOGeometry.js +0 -327
  213. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxGeometry.js +0 -238
  214. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +0 -106
  215. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +0 -271
  216. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildGridGeometry.js +0 -102
  217. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +0 -168
  218. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildSphereGeometry.js +0 -161
  219. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildTorusGeometry.js +0 -172
  220. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +0 -1721
  221. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/index.js +0 -8
  222. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/index.js +0 -4
  223. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/index.js +0 -2
  224. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/load3DSGeometry.js +0 -103
  225. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +0 -130
  226. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/index.js +0 -18
  227. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/input/Input.js +0 -1475
  228. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/canvas2image.js +0 -218
  229. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/k3d.js +0 -1032
  230. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/AmbientLight.js +0 -175
  231. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/CubeTexture.js +0 -156
  232. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/DirLight.js +0 -314
  233. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Light.js +0 -29
  234. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/LightMap.js +0 -77
  235. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/PointLight.js +0 -395
  236. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/ReflectionMap.js +0 -79
  237. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Shadow.js +0 -138
  238. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/index.js +0 -5
  239. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/Marker.js +0 -382
  240. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/index.js +0 -1
  241. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EdgeMaterial.js +0 -359
  242. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EmphasisMaterial.js +0 -577
  243. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Fresnel.js +0 -222
  244. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LambertMaterial.js +0 -378
  245. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LinesMaterial.js +0 -169
  246. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Material.js +0 -39
  247. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/MetallicMaterial.js +0 -820
  248. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PhongMaterial.js +0 -860
  249. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PointsMaterial.js +0 -320
  250. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/SpecularMaterial.js +0 -807
  251. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Texture.js +0 -522
  252. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/index.js +0 -8
  253. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/Frustum.js +0 -118
  254. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/buildEdgeIndices.js +0 -162
  255. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/geometryCompressionUtils.js +0 -353
  256. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/index.js +0 -1
  257. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/math.js +0 -5302
  258. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/rtcCoords.js +0 -132
  259. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/CameraMemento.js +0 -200
  260. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ModelMemento.js +0 -272
  261. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ObjectsMemento.js +0 -259
  262. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/index.js +0 -3
  263. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/Mesh.js +0 -2165
  264. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -978
  265. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawShaderSource.js +0 -1566
  266. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -249
  267. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -163
  268. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -276
  269. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -269
  270. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/index.js +0 -1
  271. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -207
  272. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +0 -156
  273. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -210
  274. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +0 -146
  275. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -186
  276. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +0 -120
  277. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
  278. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +0 -96
  279. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/metriqs/Metriqs.js +0 -259
  280. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/Node.js +0 -1356
  281. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/index.js +0 -1
  282. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/CubicBezierCurve.js +0 -194
  283. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Curve.js +0 -183
  284. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Path.js +0 -239
  285. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/QuadraticBezierCurve.js +0 -161
  286. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/SplineCurve.js +0 -133
  287. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/index.js +0 -5
  288. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/postfx/SAO.js +0 -547
  289. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/scene/Scene.js +0 -2481
  290. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/SectionPlane.js +0 -194
  291. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/index.js +0 -1
  292. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/Skybox.js +0 -119
  293. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/index.js +0 -1
  294. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/stats.js +0 -45
  295. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Map.js +0 -45
  296. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Queue.js +0 -56
  297. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/index.js +0 -2
  298. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils.js +0 -452
  299. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/viewport/Viewport.js +0 -212
  300. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/ArrayBuf.js +0 -121
  301. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Attribute.js +0 -23
  302. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Drawable.js +0 -270
  303. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/FrameContext.js +0 -259
  304. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/PickResult.js +0 -317
  305. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Pickable.js +0 -69
  306. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Program.js +0 -179
  307. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderBuffer.js +0 -315
  308. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderFlags.js +0 -203
  309. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderState.js +0 -40
  310. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Renderer.js +0 -1300
  311. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Sampler.js +0 -18
  312. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Shader.js +0 -49
  313. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Texture2D.js +0 -217
  314. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +0 -214
  315. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionTester.js +0 -432
  316. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -326
  317. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -375
  318. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/webglEnums.js +0 -61
  319. package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webglInfo.js +0 -48
  320. package/src/lib/gltf/gltf.css +0 -392
  321. package/src/lib/gltf/gltf.js +0 -2241
  322. 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};