@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/LICENSE +73 -0
  2. package/README.md +3 -0
  3. package/dist/RenderingEngine.d.ts +296 -0
  4. package/dist/RenderingEngine.d.ts.map +1 -0
  5. package/dist/RenderingEngine.js +1079 -0
  6. package/dist/RenderingEngine.js.map +1 -0
  7. package/dist/index.d.ts +12 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +47 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/injectors/Tag3dGeometryCreationInjector.d.ts +11 -0
  12. package/dist/injectors/Tag3dGeometryCreationInjector.d.ts.map +1 -0
  13. package/dist/injectors/Tag3dGeometryCreationInjector.js +169 -0
  14. package/dist/injectors/Tag3dGeometryCreationInjector.js.map +1 -0
  15. package/dist/injectors/TextureUnifierInjector.d.ts +14 -0
  16. package/dist/injectors/TextureUnifierInjector.d.ts.map +1 -0
  17. package/dist/injectors/TextureUnifierInjector.js +227 -0
  18. package/dist/injectors/TextureUnifierInjector.js.map +1 -0
  19. package/dist/interfaces/ILoader.d.ts +4 -0
  20. package/dist/interfaces/ILoader.d.ts.map +1 -0
  21. package/dist/interfaces/ILoader.js +3 -0
  22. package/dist/interfaces/ILoader.js.map +1 -0
  23. package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts +307 -0
  24. package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts.map +1 -0
  25. package/dist/interfaces/IPostProcessingEffectDefinitions.js +31 -0
  26. package/dist/interfaces/IPostProcessingEffectDefinitions.js.map +1 -0
  27. package/dist/interfaces/IRenderingEngine.d.ts +43 -0
  28. package/dist/interfaces/IRenderingEngine.d.ts.map +1 -0
  29. package/dist/interfaces/IRenderingEngine.js +3 -0
  30. package/dist/interfaces/IRenderingEngine.js.map +1 -0
  31. package/dist/loaders/EnvironmentMapLoader.d.ts +98 -0
  32. package/dist/loaders/EnvironmentMapLoader.d.ts.map +1 -0
  33. package/dist/loaders/EnvironmentMapLoader.js +348 -0
  34. package/dist/loaders/EnvironmentMapLoader.js.map +1 -0
  35. package/dist/loaders/GeometryLoader.d.ts +38 -0
  36. package/dist/loaders/GeometryLoader.d.ts.map +1 -0
  37. package/dist/loaders/GeometryLoader.js +505 -0
  38. package/dist/loaders/GeometryLoader.js.map +1 -0
  39. package/dist/loaders/HTMLElementAnchorLoader.d.ts +17 -0
  40. package/dist/loaders/HTMLElementAnchorLoader.d.ts.map +1 -0
  41. package/dist/loaders/HTMLElementAnchorLoader.js +84 -0
  42. package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -0
  43. package/dist/loaders/LightLoader.d.ts +19 -0
  44. package/dist/loaders/LightLoader.d.ts.map +1 -0
  45. package/dist/loaders/LightLoader.js +152 -0
  46. package/dist/loaders/LightLoader.js.map +1 -0
  47. package/dist/loaders/MaterialLoader.d.ts +99 -0
  48. package/dist/loaders/MaterialLoader.d.ts.map +1 -0
  49. package/dist/loaders/MaterialLoader.js +1175 -0
  50. package/dist/loaders/MaterialLoader.js.map +1 -0
  51. package/dist/managers/CameraManager.d.ts +20 -0
  52. package/dist/managers/CameraManager.d.ts.map +1 -0
  53. package/dist/managers/CameraManager.js +195 -0
  54. package/dist/managers/CameraManager.js.map +1 -0
  55. package/dist/managers/EnvironmentGeometryManager.d.ts +43 -0
  56. package/dist/managers/EnvironmentGeometryManager.d.ts.map +1 -0
  57. package/dist/managers/EnvironmentGeometryManager.js +210 -0
  58. package/dist/managers/EnvironmentGeometryManager.js.map +1 -0
  59. package/dist/managers/PostProcessingManager.d.ts +1014 -0
  60. package/dist/managers/PostProcessingManager.d.ts.map +1 -0
  61. package/dist/managers/PostProcessingManager.js +1013 -0
  62. package/dist/managers/PostProcessingManager.js.map +1 -0
  63. package/dist/managers/RenderingManager.d.ts +83 -0
  64. package/dist/managers/RenderingManager.d.ts.map +1 -0
  65. package/dist/managers/RenderingManager.js +567 -0
  66. package/dist/managers/RenderingManager.js.map +1 -0
  67. package/dist/managers/SceneTracingManager.d.ts +26 -0
  68. package/dist/managers/SceneTracingManager.d.ts.map +1 -0
  69. package/dist/managers/SceneTracingManager.js +122 -0
  70. package/dist/managers/SceneTracingManager.js.map +1 -0
  71. package/dist/managers/SceneTreeManager.d.ts +55 -0
  72. package/dist/managers/SceneTreeManager.d.ts.map +1 -0
  73. package/dist/managers/SceneTreeManager.js +501 -0
  74. package/dist/managers/SceneTreeManager.js.map +1 -0
  75. package/dist/managers/postprocessing/GodRaysManager.d.ts +13 -0
  76. package/dist/managers/postprocessing/GodRaysManager.d.ts.map +1 -0
  77. package/dist/managers/postprocessing/GodRaysManager.js +64 -0
  78. package/dist/managers/postprocessing/GodRaysManager.js.map +1 -0
  79. package/dist/managers/postprocessing/OutlineManager.d.ts +15 -0
  80. package/dist/managers/postprocessing/OutlineManager.d.ts.map +1 -0
  81. package/dist/managers/postprocessing/OutlineManager.js +67 -0
  82. package/dist/managers/postprocessing/OutlineManager.js.map +1 -0
  83. package/dist/managers/postprocessing/SSAARenderPass.d.ts +54 -0
  84. package/dist/managers/postprocessing/SSAARenderPass.d.ts.map +1 -0
  85. package/dist/managers/postprocessing/SSAARenderPass.js +234 -0
  86. package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -0
  87. package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +15 -0
  88. package/dist/managers/postprocessing/SelectiveBloomManager.d.ts.map +1 -0
  89. package/dist/managers/postprocessing/SelectiveBloomManager.js +67 -0
  90. package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -0
  91. package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +47 -0
  92. package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts.map +1 -0
  93. package/dist/managers/postprocessing/ao/ao/AOEffect.js +134 -0
  94. package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -0
  95. package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +13 -0
  96. package/dist/managers/postprocessing/ao/ao/AOPass.d.ts.map +1 -0
  97. package/dist/managers/postprocessing/ao/ao/AOPass.js +78 -0
  98. package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -0
  99. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +2 -0
  100. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts.map +1 -0
  101. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +23 -0
  102. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js.map +1 -0
  103. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +15 -0
  104. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts.map +1 -0
  105. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +25 -0
  106. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js.map +1 -0
  107. package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +2 -0
  108. package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts.map +1 -0
  109. package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +102 -0
  110. package/dist/managers/postprocessing/ao/hbao/shader/hbao.js.map +1 -0
  111. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +2 -0
  112. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +1 -0
  113. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +99 -0
  114. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +1 -0
  115. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +37 -0
  116. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts.map +1 -0
  117. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +171 -0
  118. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -0
  119. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +2 -0
  120. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts.map +1 -0
  121. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +131 -0
  122. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js.map +1 -0
  123. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +15 -0
  124. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts.map +1 -0
  125. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +76 -0
  126. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -0
  127. package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +2 -0
  128. package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts.map +1 -0
  129. package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +134 -0
  130. package/dist/managers/postprocessing/ao/ssao/shader/ssao.js.map +1 -0
  131. package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +2 -0
  132. package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts.map +1 -0
  133. package/dist/managers/postprocessing/ao/utils/shader/basic.js +12 -0
  134. package/dist/managers/postprocessing/ao/utils/shader/basic.js.map +1 -0
  135. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +2 -0
  136. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts.map +1 -0
  137. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +42 -0
  138. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js.map +1 -0
  139. package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +38 -0
  140. package/dist/managers/postprocessing/utils/CopyMaterial.d.ts.map +1 -0
  141. package/dist/managers/postprocessing/utils/CopyMaterial.js +106 -0
  142. package/dist/managers/postprocessing/utils/CopyMaterial.js.map +1 -0
  143. package/dist/managers/postprocessing/utils/CopyShader.d.ts +14 -0
  144. package/dist/managers/postprocessing/utils/CopyShader.d.ts.map +1 -0
  145. package/dist/managers/postprocessing/utils/CopyShader.js +36 -0
  146. package/dist/managers/postprocessing/utils/CopyShader.js.map +1 -0
  147. package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +10 -0
  148. package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts.map +1 -0
  149. package/dist/managers/postprocessing/utils/FullScreenQuad.js +29 -0
  150. package/dist/managers/postprocessing/utils/FullScreenQuad.js.map +1 -0
  151. package/dist/managers/postprocessing/utils/NormalPass.d.ts +88 -0
  152. package/dist/managers/postprocessing/utils/NormalPass.d.ts.map +1 -0
  153. package/dist/managers/postprocessing/utils/NormalPass.js +157 -0
  154. package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -0
  155. package/dist/managers/postprocessing/utils/RenderPass.d.ts +115 -0
  156. package/dist/managers/postprocessing/utils/RenderPass.d.ts.map +1 -0
  157. package/dist/managers/postprocessing/utils/RenderPass.js +251 -0
  158. package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -0
  159. package/dist/materials/GemMaterial.d.ts +38 -0
  160. package/dist/materials/GemMaterial.d.ts.map +1 -0
  161. package/dist/materials/GemMaterial.js +253 -0
  162. package/dist/materials/GemMaterial.js.map +1 -0
  163. package/dist/materials/MeshUnlitMaterialParameters.d.ts +4 -0
  164. package/dist/materials/MeshUnlitMaterialParameters.d.ts.map +1 -0
  165. package/dist/materials/MeshUnlitMaterialParameters.js +3 -0
  166. package/dist/materials/MeshUnlitMaterialParameters.js.map +1 -0
  167. package/dist/materials/MultiPointsMaterial.d.ts +94 -0
  168. package/dist/materials/MultiPointsMaterial.d.ts.map +1 -0
  169. package/dist/materials/MultiPointsMaterial.js +567 -0
  170. package/dist/materials/MultiPointsMaterial.js.map +1 -0
  171. package/dist/materials/SpecularGlossinessMaterial.d.ts +14 -0
  172. package/dist/materials/SpecularGlossinessMaterial.d.ts.map +1 -0
  173. package/dist/materials/SpecularGlossinessMaterial.js +162 -0
  174. package/dist/materials/SpecularGlossinessMaterial.js.map +1 -0
  175. package/dist/objects/SDBone.d.ts +13 -0
  176. package/dist/objects/SDBone.d.ts.map +1 -0
  177. package/dist/objects/SDBone.js +75 -0
  178. package/dist/objects/SDBone.js.map +1 -0
  179. package/dist/objects/SDColor.d.ts +17 -0
  180. package/dist/objects/SDColor.d.ts.map +1 -0
  181. package/dist/objects/SDColor.js +49 -0
  182. package/dist/objects/SDColor.js.map +1 -0
  183. package/dist/objects/SDData.d.ts +19 -0
  184. package/dist/objects/SDData.d.ts.map +1 -0
  185. package/dist/objects/SDData.js +48 -0
  186. package/dist/objects/SDData.js.map +1 -0
  187. package/dist/objects/SDObject.d.ts +14 -0
  188. package/dist/objects/SDObject.d.ts.map +1 -0
  189. package/dist/objects/SDObject.js +81 -0
  190. package/dist/objects/SDObject.js.map +1 -0
  191. package/dist/shaders/PCSS.d.ts +3 -0
  192. package/dist/shaders/PCSS.d.ts.map +1 -0
  193. package/dist/shaders/PCSS.js +127 -0
  194. package/dist/shaders/PCSS.js.map +1 -0
  195. package/dist/shaders/gem.d.ts +3 -0
  196. package/dist/shaders/gem.d.ts.map +1 -0
  197. package/dist/shaders/gem.js +578 -0
  198. package/dist/shaders/gem.js.map +1 -0
  199. package/dist/shaders/multi_points.d.ts +3 -0
  200. package/dist/shaders/multi_points.d.ts.map +1 -0
  201. package/dist/shaders/multi_points.js +294 -0
  202. package/dist/shaders/multi_points.js.map +1 -0
  203. package/dist/styling/viewport-css.d.ts +2 -0
  204. package/dist/styling/viewport-css.d.ts.map +1 -0
  205. package/dist/styling/viewport-css.js +117 -0
  206. package/dist/styling/viewport-css.js.map +1 -0
  207. package/dist/three/font.d.ts +2365 -0
  208. package/dist/three/font.d.ts.map +1 -0
  209. package/dist/three/font.js +6 -0
  210. package/dist/three/font.js.map +1 -0
  211. package/dist/three/geometries/TextGeometry.d.ts +22 -0
  212. package/dist/three/geometries/TextGeometry.d.ts.map +1 -0
  213. package/dist/three/geometries/TextGeometry.js +45 -0
  214. package/dist/three/geometries/TextGeometry.js.map +1 -0
  215. package/dist/three/loaders/FontLoader.d.ts +15 -0
  216. package/dist/three/loaders/FontLoader.d.ts.map +1 -0
  217. package/dist/three/loaders/FontLoader.js +118 -0
  218. package/dist/three/loaders/FontLoader.js.map +1 -0
  219. package/dist/three/loaders/RGBELoader.d.ts +24 -0
  220. package/dist/three/loaders/RGBELoader.d.ts.map +1 -0
  221. package/dist/three/loaders/RGBELoader.js +299 -0
  222. package/dist/three/loaders/RGBELoader.js.map +1 -0
  223. package/dist/types/IThreejsData.d.ts +7 -0
  224. package/dist/types/IThreejsData.d.ts.map +1 -0
  225. package/dist/types/IThreejsData.js +3 -0
  226. package/dist/types/IThreejsData.js.map +1 -0
  227. package/dist/types/ThreejsData.d.ts +11 -0
  228. package/dist/types/ThreejsData.d.ts.map +1 -0
  229. package/dist/types/ThreejsData.js +42 -0
  230. package/dist/types/ThreejsData.js.map +1 -0
  231. package/package.json +65 -0
  232. package/src/RenderingEngine.ts +1342 -0
  233. package/src/index.ts +23 -0
  234. package/src/injectors/Tag3dGeometryCreationInjector.ts +170 -0
  235. package/src/injectors/TextureUnifierInjector.ts +224 -0
  236. package/src/interfaces/ILoader.ts +3 -0
  237. package/src/interfaces/IPostProcessingEffectDefinitions.ts +402 -0
  238. package/src/interfaces/IRenderingEngine.ts +48 -0
  239. package/src/loaders/EnvironmentMapLoader.ts +355 -0
  240. package/src/loaders/GeometryLoader.ts +565 -0
  241. package/src/loaders/HTMLElementAnchorLoader.ts +107 -0
  242. package/src/loaders/LightLoader.ts +171 -0
  243. package/src/loaders/MaterialLoader.ts +1418 -0
  244. package/src/managers/CameraManager.ts +178 -0
  245. package/src/managers/EnvironmentGeometryManager.ts +224 -0
  246. package/src/managers/PostProcessingManager.ts +1169 -0
  247. package/src/managers/RenderingManager.ts +657 -0
  248. package/src/managers/SceneTracingManager.ts +120 -0
  249. package/src/managers/SceneTreeManager.ts +569 -0
  250. package/src/managers/postprocessing/GodRaysManager.ts +52 -0
  251. package/src/managers/postprocessing/OutlineManager.ts +58 -0
  252. package/src/managers/postprocessing/SSAARenderPass.ts +339 -0
  253. package/src/managers/postprocessing/SelectiveBloomManager.ts +58 -0
  254. package/src/managers/postprocessing/ao/ao/AOEffect.ts +180 -0
  255. package/src/managers/postprocessing/ao/ao/AOPass.ts +128 -0
  256. package/src/managers/postprocessing/ao/ao/shader/ao_compose.glsl +17 -0
  257. package/src/managers/postprocessing/ao/ao/shader/ao_compose.ts +19 -0
  258. package/src/managers/postprocessing/ao/hbao/HBAOEffect.ts +41 -0
  259. package/src/managers/postprocessing/ao/hbao/shader/hbao.glsl +96 -0
  260. package/src/managers/postprocessing/ao/hbao/shader/hbao.ts +98 -0
  261. package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.glsl +92 -0
  262. package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts +95 -0
  263. package/src/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.ts +245 -0
  264. package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.glsl +125 -0
  265. package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.ts +127 -0
  266. package/src/managers/postprocessing/ao/ssao/SSAOEffect.ts +106 -0
  267. package/src/managers/postprocessing/ao/ssao/shader/ssao.glsl +128 -0
  268. package/src/managers/postprocessing/ao/ssao/shader/ssao.ts +130 -0
  269. package/src/managers/postprocessing/ao/utils/shader/basic.glsl +6 -0
  270. package/src/managers/postprocessing/ao/utils/shader/basic.ts +8 -0
  271. package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.glsl +36 -0
  272. package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.ts +38 -0
  273. package/src/managers/postprocessing/utils/CopyMaterial.ts +130 -0
  274. package/src/managers/postprocessing/utils/CopyShader.ts +39 -0
  275. package/src/managers/postprocessing/utils/FullScreenQuad.ts +47 -0
  276. package/src/managers/postprocessing/utils/NormalPass.ts +222 -0
  277. package/src/managers/postprocessing/utils/RenderPass.ts +366 -0
  278. package/src/materials/GemMaterial.ts +268 -0
  279. package/src/materials/MeshUnlitMaterialParameters.ts +4 -0
  280. package/src/materials/MultiPointsMaterial.ts +646 -0
  281. package/src/materials/SpecularGlossinessMaterial.ts +182 -0
  282. package/src/objects/SDBone.ts +51 -0
  283. package/src/objects/SDColor.ts +54 -0
  284. package/src/objects/SDData.ts +44 -0
  285. package/src/objects/SDObject.ts +58 -0
  286. package/src/shaders/PCSS.ts +124 -0
  287. package/src/shaders/gem.ts +575 -0
  288. package/src/shaders/gem_frag.glsl +517 -0
  289. package/src/shaders/gem_vert.glsl +53 -0
  290. package/src/shaders/multi_points.ts +291 -0
  291. package/src/shaders/multi_points_frag.glsl +166 -0
  292. package/src/shaders/multi_points_vert.glsl +120 -0
  293. package/src/styling/viewport-css.ts +113 -0
  294. package/src/styling/viewport.css +111 -0
  295. package/src/three/font.ts +2 -0
  296. package/src/three/geometries/TextGeometry.ts +58 -0
  297. package/src/three/loaders/FontLoader.ts +205 -0
  298. package/src/three/loaders/RGBELoader.ts +496 -0
  299. package/src/types/IThreejsData.ts +16 -0
  300. package/src/types/ThreejsData.ts +43 -0
  301. package/tsconfig.json +20 -0
@@ -0,0 +1,517 @@
1
+ #define STANDARD
2
+ #ifdef PHYSICAL
3
+ #define IOR
4
+ #define SPECULAR
5
+ #endif
6
+
7
+ // CUSTOM START
8
+ #ifdef USE_IMPURITYMAP
9
+ uniform sampler2D impurityMap;
10
+ #endif
11
+ // CUSTOM END
12
+
13
+ uniform vec3 diffuse;
14
+ uniform vec3 emissive;
15
+ uniform float roughness;
16
+ uniform float metalness;
17
+ uniform float opacity;
18
+ #ifdef IOR
19
+ uniform float ior;
20
+ #endif
21
+ #ifdef SPECULAR
22
+ uniform float specularIntensity;
23
+ uniform vec3 specularColor;
24
+ #ifdef USE_SPECULARINTENSITYMAP
25
+ uniform sampler2D specularIntensityMap;
26
+ #endif
27
+ #ifdef USE_SPECULARCOLORMAP
28
+ uniform sampler2D specularColorMap;
29
+ #endif
30
+ #endif
31
+ #ifdef USE_CLEARCOAT
32
+ uniform float clearcoat;
33
+ uniform float clearcoatRoughness;
34
+ #endif
35
+ #ifdef USE_IRIDESCENCE
36
+ uniform float iridescence;
37
+ uniform float iridescenceIOR;
38
+ uniform float iridescenceThicknessMinimum;
39
+ uniform float iridescenceThicknessMaximum;
40
+ #endif
41
+ #ifdef USE_SHEEN
42
+ uniform vec3 sheenColor;
43
+ uniform float sheenRoughness;
44
+ #ifdef USE_SHEENCOLORMAP
45
+ uniform sampler2D sheenColorMap;
46
+ #endif
47
+ #ifdef USE_SHEENROUGHNESSMAP
48
+ uniform sampler2D sheenRoughnessMap;
49
+ #endif
50
+ #endif
51
+ varying vec3 vViewPosition;
52
+ #include <common>
53
+ #include <packing>
54
+ #include <dithering_pars_fragment>
55
+ #include <color_pars_fragment>
56
+ #include <uv_pars_fragment>
57
+ #include <map_pars_fragment>
58
+ #include <alphamap_pars_fragment>
59
+ #include <alphatest_pars_fragment>
60
+ #include <aomap_pars_fragment>
61
+ #include <lightmap_pars_fragment>
62
+ #include <emissivemap_pars_fragment>
63
+ #include <bsdfs>
64
+ #include <iridescence_fragment>
65
+ #include <cube_uv_reflection_fragment>
66
+ #include <envmap_common_pars_fragment>
67
+ #include <envmap_physical_pars_fragment>
68
+ #include <fog_pars_fragment>
69
+ #include <lights_pars_begin>
70
+ #include <normal_pars_fragment>
71
+ #include <lights_physical_pars_fragment>
72
+ #include <transmission_pars_fragment>
73
+ #include <shadowmap_pars_fragment>
74
+ #include <bumpmap_pars_fragment>
75
+ #include <normalmap_pars_fragment>
76
+ #include <clearcoat_pars_fragment>
77
+ #include <iridescence_pars_fragment>
78
+ #include <roughnessmap_pars_fragment>
79
+ #include <metalnessmap_pars_fragment>
80
+ #include <logdepthbuf_pars_fragment>
81
+ #include <clipping_planes_pars_fragment>
82
+
83
+
84
+
85
+ // CUSTOM START
86
+
87
+ varying vec4 initialPosition;
88
+ varying vec3 initialNormal;
89
+
90
+ varying vec3 frag_position;
91
+ varying vec3 frag_normal;
92
+
93
+ uniform vec3 center;
94
+ uniform float radius;
95
+ uniform samplerCube sphericalNormalMap;
96
+ uniform mat3 normalMatrix;
97
+ uniform mat4 modelMatrix;
98
+
99
+ uniform float impurityScale;
100
+ uniform vec3 colorTransferBegin;
101
+ uniform vec3 colorTransferEnd;
102
+ uniform float refractionIndex;
103
+ uniform float gamma;
104
+ uniform float contrast;
105
+ uniform float brightness;
106
+ uniform float dispersion;
107
+ uniform float tracingOpacity;
108
+
109
+
110
+ vec3 getIBLRadianceVariation( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
111
+ #if defined( ENVMAP_TYPE_CUBE_UV )
112
+ vec3 reflectVec = reflect( - viewDir, normal );
113
+ // Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
114
+ reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
115
+ reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
116
+ vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
117
+ return min(envMapColor.rgb * envMapIntensity, vec3(1.0));
118
+ #else
119
+ return vec3( 0.0 );
120
+ #endif
121
+ }
122
+
123
+ vec3 calculateReflectedLight(vec3 position, vec3 normal, vec3 viewDir, PhysicalMaterial material, int depth) {
124
+
125
+ GeometricContext currentGeometry;
126
+ currentGeometry.position = (modelMatrix * vec4(position, 1.0)).xyz;
127
+
128
+ mat3 normalMatrix;
129
+ normalMatrix[0] = normalize(modelMatrix[0].xyz);
130
+ normalMatrix[1] = normalize(modelMatrix[1].xyz);
131
+ normalMatrix[2] = normalize(modelMatrix[2].xyz);
132
+
133
+ // Calculate the normal vector in world space
134
+ currentGeometry.normal = normalize(normalMatrix * normal);
135
+
136
+ // Calculate the view direction vector in world space
137
+ currentGeometry.viewDir = normalize(normalMatrix * -viewDir);
138
+
139
+ #ifdef USE_CLEARCOAT
140
+ currentGeometry.clearcoatNormal = clearcoatNormal;
141
+ #endif
142
+
143
+ ReflectedLight rLight;
144
+ IncidentLight dLight;
145
+
146
+ float temp = material.roughness;
147
+ material.roughness = 0.5;
148
+
149
+ #if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
150
+
151
+ PointLight pointLight;
152
+ #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
153
+ PointLightShadow pointLightShadow;
154
+ #endif
155
+
156
+ #pragma unroll_loop_start
157
+ for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
158
+ pointLight = pointLights[ i ];
159
+ getPointLightInfo( pointLight, currentGeometry, dLight );
160
+ #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
161
+ pointLightShadow = pointLightShadows[ i ];
162
+ dLight.color *= all( bvec2( dLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
163
+ #endif
164
+ RE_Direct( dLight, currentGeometry, material, rLight );
165
+ }
166
+ #pragma unroll_loop_end
167
+ #endif
168
+ #if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
169
+ SpotLight spotLight;
170
+ #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
171
+ SpotLightShadow spotLightShadow;
172
+ #endif
173
+ #pragma unroll_loop_start
174
+ for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
175
+ spotLight = spotLights[ i ];
176
+ getSpotLightInfo( spotLight, currentGeometry, dLight );
177
+ #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
178
+ spotLightShadow = spotLightShadows[ i ];
179
+ dLight.color *= all( bvec2( dLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
180
+ #endif
181
+ RE_Direct( dLight, currentGeometry, material, rLight );
182
+ }
183
+ #pragma unroll_loop_end
184
+ #endif
185
+
186
+ #if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
187
+ DirectionalLight directionalLight;
188
+ #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
189
+ DirectionalLightShadow directionalLightShadow;
190
+ #endif
191
+ #pragma unroll_loop_start
192
+ for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
193
+ directionalLight = directionalLights[ i ];
194
+ getDirectionalLightInfo( directionalLight, currentGeometry, dLight );
195
+ #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
196
+ directionalLightShadow = directionalLightShadows[ i ];
197
+ dLight.color *= all( bvec2( dLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
198
+ #endif
199
+ RE_Direct( dLight, currentGeometry, material, rLight );
200
+ }
201
+ #pragma unroll_loop_end
202
+ #endif
203
+ material.roughness = temp;
204
+
205
+ #if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
206
+ RectAreaLight rectAreaLight;
207
+ #pragma unroll_loop_start
208
+ for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
209
+ rectAreaLight = rectAreaLights[ i ];
210
+ RE_Direct_RectArea( rectAreaLight, currentGeometry, material, rLight );
211
+ }
212
+ #pragma unroll_loop_end
213
+ #endif
214
+ #if defined( RE_IndirectDiffuse )
215
+ vec3 iblIrradiance = vec3( 0.0 );
216
+ vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
217
+ irradiance += getLightProbeIrradiance( lightProbe, currentGeometry.normal );
218
+ #if ( NUM_HEMI_LIGHTS > 0 )
219
+ #pragma unroll_loop_start
220
+ for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
221
+ irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], currentGeometry.normal );
222
+ }
223
+ #pragma unroll_loop_end
224
+ #endif
225
+ #endif
226
+ #if defined( RE_IndirectSpecular )
227
+ vec3 radiance = vec3( 0.0 );
228
+ vec3 clearcoatRadiance = vec3( 0.0 );
229
+ #endif
230
+
231
+
232
+ #if defined( RE_IndirectDiffuse )
233
+ #ifdef USE_LIGHTMAP
234
+ vec4 lightMapTexel = texture2D( lightMap, vUv2 );
235
+ vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
236
+ irradiance += lightMapIrradiance;
237
+ #endif
238
+ #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
239
+ iblIrradiance += getIBLIrradiance( currentGeometry.normal );
240
+ #endif
241
+ #endif
242
+ #if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
243
+ radiance += getIBLRadianceVariation( currentGeometry.viewDir, currentGeometry.normal, material.roughness );
244
+ #ifdef USE_CLEARCOAT
245
+ clearcoatRadiance += getIBLRadianceVariation( currentGeometry.viewDir, currentGeometry.clearcoatNormal, material.clearcoatRoughness );
246
+ #endif
247
+ #endif
248
+
249
+ #if defined( RE_IndirectDiffuse )
250
+ RE_IndirectDiffuse( irradiance, currentGeometry, material, rLight );
251
+ #endif
252
+ #if defined( RE_IndirectSpecular )
253
+ RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, currentGeometry, material, rLight );
254
+ #endif
255
+
256
+ if(depth >= 0) {
257
+ float frac = float(depth) / float(TRACING_DEPTH);
258
+ vec3 colorTransfer = (1.0-frac) * colorTransferBegin + frac * colorTransferEnd;
259
+ rLight.indirectSpecular *= colorTransfer;
260
+ rLight.directSpecular *= colorTransfer;
261
+ }
262
+
263
+ vec3 color = rLight.indirectSpecular + rLight.directSpecular + rLight.indirectDiffuse + rLight.directDiffuse;
264
+
265
+ // gamma
266
+ color = pow(color, vec3(1.0/gamma));
267
+
268
+ // contrast
269
+ color.rgb = ((color.rgb - 0.5) * max(contrast, 0.0)) + 0.5;
270
+
271
+ // brightness
272
+ color.r = min(max(color.r + brightness, 0.0), 1.0);
273
+ color.g = min(max(color.g + brightness, 0.0), 1.0);
274
+ color.b = min(max(color.b + brightness, 0.0), 1.0);
275
+
276
+ return color;
277
+ }
278
+
279
+ vec3 normalLookUp(vec3 dir) {
280
+ vec4 s = textureCube(sphericalNormalMap, dir);
281
+ if(s.a < 1.0/256.0) {
282
+ return normalize(vec3(-s.x, -s.y, -s.z));
283
+ } else if(s.a < 3.0/256.0) {
284
+ return normalize(vec3(-s.x, -s.y, s.z));
285
+ } else if(s.a < 5.0/256.0) {
286
+ return normalize(vec3(-s.x, s.y, -s.z));
287
+ } else if(s.a < 7.0/256.0) {
288
+ return normalize(vec3(s.x, -s.y, -s.z));
289
+ } else if(s.a < 9.0/256.0) {
290
+ return normalize(vec3(-s.x, s.y, s.z));
291
+ } else if(s.a < 11.0/256.0) {
292
+ return normalize(vec3(s.x, -s.y, s.z));
293
+ } else if(s.a < 13.0/256.0) {
294
+ return normalize(vec3(s.x, s.y, -s.z));
295
+ } else {
296
+ return normalize(s.xyz);
297
+ }
298
+ }
299
+
300
+ #ifdef USE_IMPURITYMAP
301
+ float impurityLookUp(vec3 dir) {
302
+ vec3 c = textureCube(impurityMap, dir.xy).rgb;
303
+ return (c.x + c.y + c.z) / 3.0;
304
+ }
305
+ #endif
306
+
307
+ vec3 raySphereIntersection(vec3 o, vec3 d) {
308
+
309
+ vec3 oc = o - center;
310
+ float a = dot(d, d);
311
+ float b = 2.0 * dot(oc, d);
312
+ float c = dot(oc,oc) - radius*radius;
313
+ float discriminant = b*b - 4.0*a*c;
314
+ if(discriminant < 0.0){
315
+ return vec3(0.0);
316
+ }
317
+ else{
318
+ return o +( (-b + sqrt(discriminant)) / (2.0*a)) * d;
319
+ }
320
+ }
321
+
322
+ vec3 hueToSaturatedColor(float hue) {
323
+ float r,g,b;
324
+ if (hue < 0.25){
325
+ float t = 1.0 - (hue / 0.25);
326
+ r = 1.0;
327
+ g = 1.0;
328
+ b = t;
329
+ } else if (hue < 0.5){
330
+ float t = 1.0 - (hue - 0.25 / 0.25);
331
+ r = 1.0;
332
+ g = t;
333
+ b = 0.0;
334
+ } else if (hue < 0.75){
335
+ float t = 1.0 - (hue - 0.5 / 0.25);
336
+ r = t;
337
+ g = 0.0;
338
+ b = 1.0 - t;
339
+ } else {
340
+ float t = hue - 0.75 / 0.25;
341
+ r = t;
342
+ g = t;
343
+ b = 1.0;
344
+ }
345
+ return vec3(r, g, b) / 0.5 + 0.5;
346
+ }
347
+ // CUSTOM END
348
+
349
+ void main() {
350
+ // CUSTOM START
351
+ vec3 frag_normal_normalized = frag_normal;
352
+ // CUSTOM END
353
+ #include <clipping_planes_fragment>
354
+ vec4 diffuseColor = vec4( diffuse, opacity );
355
+ ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
356
+ vec3 totalEmissiveRadiance = emissive;
357
+ #include <logdepthbuf_fragment>
358
+ #include <map_fragment>
359
+ #include <color_fragment>
360
+ #include <alphamap_fragment>
361
+ #include <alphatest_fragment>
362
+ #include <roughnessmap_fragment>
363
+ #include <metalnessmap_fragment>
364
+ #include <normal_fragment_begin>
365
+ #include <normal_fragment_maps>
366
+ #include <clearcoat_normal_fragment_begin>
367
+ #include <clearcoat_normal_fragment_maps>
368
+ #include <emissivemap_fragment>
369
+ #include <lights_physical_fragment>
370
+ #include <lights_fragment_begin>
371
+ #include <lights_fragment_maps>
372
+ #include <lights_fragment_end>
373
+ #include <aomap_fragment>
374
+ vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
375
+ vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
376
+ #include <transmission_fragment>
377
+ vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
378
+ #ifdef USE_SHEEN
379
+ float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
380
+ outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;
381
+ #endif
382
+ #ifdef USE_CLEARCOAT
383
+ float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
384
+ vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
385
+ outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
386
+ #endif
387
+ #include <output_fragment>
388
+
389
+ // CUSTOM START
390
+
391
+ // Extract the translation part of the model matrix
392
+ vec3 translation = modelMatrix[3].xyz;
393
+
394
+ // Extract the rotation part of the model matrix (3x3 upper-left submatrix)
395
+ mat3 rotationMatrix = mat3(modelMatrix);
396
+
397
+ // Calculate the inverse of the rotation matrix (transpose since it's orthogonal)
398
+ mat3 inverseRotationMatrix;
399
+ inverseRotationMatrix[0] = vec3(rotationMatrix[0].x, rotationMatrix[1].x, rotationMatrix[2].x);
400
+ inverseRotationMatrix[1] = vec3(rotationMatrix[0].y, rotationMatrix[1].y, rotationMatrix[2].y);
401
+ inverseRotationMatrix[2] = vec3(rotationMatrix[0].z, rotationMatrix[1].z, rotationMatrix[2].z);
402
+
403
+ // Calculate the camera position in model space
404
+ vec3 cameraPositionInModelSpace = inverseRotationMatrix * (cameraPosition - translation);
405
+
406
+ // Calculate the initial direction
407
+ vec3 initialDirection = normalize(frag_position.xyz - cameraPositionInModelSpace);
408
+
409
+ vec4 outgoingLight2;
410
+ float r_0 = (1.0-refractionIndex)/(1.0+refractionIndex);
411
+ r_0 = r_0*r_0;
412
+
413
+ float cos_theta_0 = -dot(initialDirection, frag_normal_normalized);
414
+ float r_0_outside = (refractionIndex-1.0)/(refractionIndex+1.0);
415
+ r_0_outside = r_0_outside*r_0_outside;
416
+ float initialProbability = r_0_outside + (1.0 - r_0_outside)*pow(1.0 - cos_theta_0, 5.0);
417
+
418
+ outgoingLight2 = vec4(calculateReflectedLight(frag_position, frag_normal_normalized, initialDirection, material, -1), 1.0);
419
+ // gl_FragColor = outgoingLight2;
420
+ // return;
421
+ if(TRACING_DEPTH > 0)
422
+ outgoingLight2 *= initialProbability;
423
+
424
+ vec3 tempColor;
425
+
426
+ #ifdef DISPERSION
427
+ const int loop = 3;
428
+ vec3 dispersionColor;
429
+ #else
430
+ const int loop = 1;
431
+ #endif
432
+ #pragma unroll_loop_start
433
+ for(int j = 0; j < loop; j++){
434
+ vec3 refractedDirection = refract(initialDirection, frag_normal_normalized, 1.0/refractionIndex + float(j)*dispersion * 0.025);
435
+ vec3 newPosition = raySphereIntersection(frag_position, refractedDirection);
436
+ vec3 lookUpVector = normalize(newPosition - center);
437
+ vec3 newNormal = normalLookUp(lookUpVector);
438
+ vec3 newDirection = reflect(refractedDirection, newNormal);
439
+
440
+ float currentProbability = 1.0;
441
+
442
+ #ifdef USE_IMPURITYMAP
443
+ float impurityProbability = impurityLookUp(lookUpVector);
444
+ currentProbability -= impurityProbability * impurityScale;
445
+ // gl_FragColor = vec4(vec3(impurityProbability), 1.0);
446
+ // return;
447
+ #endif
448
+
449
+ // if(0 == TRACING_DEPTH) {
450
+ // gl_FragColor = vec4(0.5 * newNormal + 0.5, 1.0);
451
+ // return;
452
+ // }
453
+
454
+ tempColor = vec3(0.0);
455
+ #pragma unroll_loop_start
456
+ for(int i = 0; i < TRACING_DEPTH; i++) {
457
+ // small position correction to avoid artefacts
458
+ newPosition = newPosition - lookUpVector * 1e-6;
459
+ newPosition = raySphereIntersection(newPosition, newDirection);
460
+ lookUpVector = normalize(newPosition - center);
461
+ newNormal = normalLookUp(lookUpVector);
462
+
463
+ float cos_theta = dot(newDirection, newNormal);
464
+ float ratio;
465
+ if(cos_theta > 0.0) {
466
+ ratio = refractionIndex;
467
+ } else {
468
+ cos_theta = -cos_theta;
469
+ ratio = 1.0 / refractionIndex;
470
+ }
471
+ float cos_theta_2 = 1.0 - ratio*ratio * (1.0 - cos_theta*cos_theta);
472
+ float probability = r_0 + (1.0 - r_0)*pow(1.0 - cos_theta, 5.0);
473
+ if(cos_theta_2 < 0.0) probability = 0.0;
474
+
475
+ vec3 refracted = refract(newDirection, newNormal*-1.0, 1.0/refractionIndex);
476
+ tempColor += probability * currentProbability * calculateReflectedLight(newPosition, newNormal*-1.0, reflect(refracted, newNormal), material, i);
477
+ if(i+1 == TRACING_DEPTH)
478
+ tempColor += (1.0 - probability) * currentProbability * calculateReflectedLight(newPosition, newNormal, newDirection, material, i);
479
+
480
+ newDirection = reflect(newDirection, newNormal);
481
+
482
+ // if(i+1 == TRACING_DEPTH) {
483
+ // gl_FragColor = vec4(0.5 * newNormal + 0.5, 1.0);
484
+ // return;
485
+ // }
486
+
487
+ currentProbability *= (1.0 - probability);
488
+ }
489
+ #pragma unroll_loop_end
490
+
491
+ #ifdef DISPERSION
492
+ if(j == 0) {
493
+ dispersionColor.r = tempColor.r;
494
+ } else if(j == 1) {
495
+ dispersionColor.g = tempColor.g;
496
+ } else if(j == 2) {
497
+ dispersionColor.b = tempColor.b;
498
+ }
499
+ tempColor = dispersionColor;
500
+ #endif
501
+ }
502
+ #pragma unroll_loop_end
503
+
504
+ if(TRACING_DEPTH > 0)
505
+ outgoingLight2.rgb += (1.0 - initialProbability) * tempColor;
506
+
507
+ float alpha = (1.0 - initialProbability) + initialProbability*tracingOpacity;
508
+ gl_FragColor = vec4(outgoingLight2.rgb, alpha*diffuseColor.a);
509
+
510
+ // CUSTOM END
511
+
512
+ #include <tonemapping_fragment>
513
+ #include <encodings_fragment>
514
+ #include <fog_fragment>
515
+ #include <premultiplied_alpha_fragment>
516
+ #include <dithering_fragment>
517
+ }
@@ -0,0 +1,53 @@
1
+ #define STANDARD
2
+ varying vec3 vViewPosition;
3
+ #ifdef USE_TRANSMISSION
4
+ varying vec3 vWorldPosition;
5
+ #endif
6
+ #include <common>
7
+ #include <uv_pars_vertex>
8
+ #include <displacementmap_pars_vertex>
9
+ #include <color_pars_vertex>
10
+ #include <fog_pars_vertex>
11
+ #include <normal_pars_vertex>
12
+ #include <morphtarget_pars_vertex>
13
+ #include <skinning_pars_vertex>
14
+ #include <shadowmap_pars_vertex>
15
+ #include <logdepthbuf_pars_vertex>
16
+ #include <clipping_planes_pars_vertex>
17
+
18
+ // CUSTOM START
19
+ varying vec3 frag_position;
20
+ varying vec3 frag_normal;
21
+ // CUSTOM END
22
+
23
+ void main() {
24
+ #include <uv_vertex>
25
+ #include <uv2_vertex>
26
+ #include <color_vertex>
27
+ #include <morphcolor_vertex>
28
+ #include <beginnormal_vertex>
29
+ #include <morphnormal_vertex>
30
+ #include <skinbase_vertex>
31
+ #include <skinnormal_vertex>
32
+ #include <defaultnormal_vertex>
33
+ #include <normal_vertex>
34
+ #include <begin_vertex>
35
+ #include <morphtarget_vertex>
36
+ #include <skinning_vertex>
37
+ #include <displacementmap_vertex>
38
+ #include <project_vertex>
39
+ #include <logdepthbuf_vertex>
40
+ #include <clipping_planes_vertex>
41
+ vViewPosition = - mvPosition.xyz;
42
+ #include <worldpos_vertex>
43
+ #include <shadowmap_vertex>
44
+ #include <fog_vertex>
45
+ #ifdef USE_TRANSMISSION
46
+ vWorldPosition = worldPosition.xyz;
47
+ #endif
48
+
49
+ // CUSTOM START
50
+ frag_position = position;
51
+ frag_normal = objectNormal;
52
+ // CUSTOM END
53
+ }