@onerjs/materials 8.23.1

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 (231) hide show
  1. package/cell/cell.fragment.d.ts +19 -0
  2. package/cell/cell.fragment.js +100 -0
  3. package/cell/cell.fragment.js.map +1 -0
  4. package/cell/cell.vertex.d.ts +21 -0
  5. package/cell/cell.vertex.js +96 -0
  6. package/cell/cell.vertex.js.map +1 -0
  7. package/cell/cellMaterial.d.ts +37 -0
  8. package/cell/cellMaterial.js +312 -0
  9. package/cell/cellMaterial.js.map +1 -0
  10. package/cell/index.d.ts +1 -0
  11. package/cell/index.js +2 -0
  12. package/cell/index.js.map +1 -0
  13. package/custom/customMaterial.d.ts +280 -0
  14. package/custom/customMaterial.js +355 -0
  15. package/custom/customMaterial.js.map +1 -0
  16. package/custom/index.d.ts +2 -0
  17. package/custom/index.js +3 -0
  18. package/custom/index.js.map +1 -0
  19. package/custom/pbrCustomMaterial.d.ts +299 -0
  20. package/custom/pbrCustomMaterial.js +397 -0
  21. package/custom/pbrCustomMaterial.js.map +1 -0
  22. package/fire/fire.fragment.d.ts +13 -0
  23. package/fire/fire.fragment.js +65 -0
  24. package/fire/fire.fragment.js.map +1 -0
  25. package/fire/fire.vertex.d.ts +18 -0
  26. package/fire/fire.vertex.js +80 -0
  27. package/fire/fire.vertex.js.map +1 -0
  28. package/fire/fireMaterial.d.ts +38 -0
  29. package/fire/fireMaterial.js +342 -0
  30. package/fire/fireMaterial.js.map +1 -0
  31. package/fire/index.d.ts +1 -0
  32. package/fire/index.js +2 -0
  33. package/fire/index.js.map +1 -0
  34. package/fur/fur.fragment.d.ts +19 -0
  35. package/fur/fur.fragment.js +94 -0
  36. package/fur/fur.fragment.js.map +1 -0
  37. package/fur/fur.vertex.d.ts +21 -0
  38. package/fur/fur.vertex.js +126 -0
  39. package/fur/fur.vertex.js.map +1 -0
  40. package/fur/furMaterial.d.ts +57 -0
  41. package/fur/furMaterial.js +505 -0
  42. package/fur/furMaterial.js.map +1 -0
  43. package/fur/index.d.ts +1 -0
  44. package/fur/index.js +2 -0
  45. package/fur/index.js.map +1 -0
  46. package/gradient/gradient.fragment.d.ts +19 -0
  47. package/gradient/gradient.fragment.js +80 -0
  48. package/gradient/gradient.fragment.js.map +1 -0
  49. package/gradient/gradient.vertex.d.ts +21 -0
  50. package/gradient/gradient.vertex.js +87 -0
  51. package/gradient/gradient.vertex.js.map +1 -0
  52. package/gradient/gradientMaterial.d.ts +37 -0
  53. package/gradient/gradientMaterial.js +283 -0
  54. package/gradient/gradientMaterial.js.map +1 -0
  55. package/gradient/index.d.ts +1 -0
  56. package/gradient/index.js +2 -0
  57. package/gradient/index.js.map +1 -0
  58. package/grid/grid.fragment.d.ts +12 -0
  59. package/grid/grid.fragment.js +79 -0
  60. package/grid/grid.fragment.js.map +1 -0
  61. package/grid/grid.vertex.d.ts +15 -0
  62. package/grid/grid.vertex.js +60 -0
  63. package/grid/grid.vertex.js.map +1 -0
  64. package/grid/gridMaterial.d.ts +85 -0
  65. package/grid/gridMaterial.js +308 -0
  66. package/grid/gridMaterial.js.map +1 -0
  67. package/grid/index.d.ts +1 -0
  68. package/grid/index.js +2 -0
  69. package/grid/index.js.map +1 -0
  70. package/index.d.ts +15 -0
  71. package/index.js +17 -0
  72. package/index.js.map +1 -0
  73. package/lava/index.d.ts +1 -0
  74. package/lava/index.js +2 -0
  75. package/lava/index.js.map +1 -0
  76. package/lava/lava.fragment.d.ts +19 -0
  77. package/lava/lava.fragment.js +89 -0
  78. package/lava/lava.fragment.js.map +1 -0
  79. package/lava/lava.vertex.d.ts +21 -0
  80. package/lava/lava.vertex.js +113 -0
  81. package/lava/lava.vertex.js.map +1 -0
  82. package/lava/lavaMaterial.d.ts +45 -0
  83. package/lava/lavaMaterial.js +402 -0
  84. package/lava/lavaMaterial.js.map +1 -0
  85. package/legacy/legacy-cell.d.ts +1 -0
  86. package/legacy/legacy-cell.js +14 -0
  87. package/legacy/legacy-cell.js.map +1 -0
  88. package/legacy/legacy-custom.d.ts +1 -0
  89. package/legacy/legacy-custom.js +14 -0
  90. package/legacy/legacy-custom.js.map +1 -0
  91. package/legacy/legacy-fire.d.ts +1 -0
  92. package/legacy/legacy-fire.js +14 -0
  93. package/legacy/legacy-fire.js.map +1 -0
  94. package/legacy/legacy-fur.d.ts +1 -0
  95. package/legacy/legacy-fur.js +14 -0
  96. package/legacy/legacy-fur.js.map +1 -0
  97. package/legacy/legacy-gradient.d.ts +1 -0
  98. package/legacy/legacy-gradient.js +14 -0
  99. package/legacy/legacy-gradient.js.map +1 -0
  100. package/legacy/legacy-grid.d.ts +1 -0
  101. package/legacy/legacy-grid.js +14 -0
  102. package/legacy/legacy-grid.js.map +1 -0
  103. package/legacy/legacy-lava.d.ts +1 -0
  104. package/legacy/legacy-lava.js +14 -0
  105. package/legacy/legacy-lava.js.map +1 -0
  106. package/legacy/legacy-mix.d.ts +1 -0
  107. package/legacy/legacy-mix.js +14 -0
  108. package/legacy/legacy-mix.js.map +1 -0
  109. package/legacy/legacy-normal.d.ts +1 -0
  110. package/legacy/legacy-normal.js +14 -0
  111. package/legacy/legacy-normal.js.map +1 -0
  112. package/legacy/legacy-shadowOnly.d.ts +1 -0
  113. package/legacy/legacy-shadowOnly.js +14 -0
  114. package/legacy/legacy-shadowOnly.js.map +1 -0
  115. package/legacy/legacy-simple.d.ts +1 -0
  116. package/legacy/legacy-simple.js +14 -0
  117. package/legacy/legacy-simple.js.map +1 -0
  118. package/legacy/legacy-sky.d.ts +1 -0
  119. package/legacy/legacy-sky.js +14 -0
  120. package/legacy/legacy-sky.js.map +1 -0
  121. package/legacy/legacy-terrain.d.ts +1 -0
  122. package/legacy/legacy-terrain.js +14 -0
  123. package/legacy/legacy-terrain.js.map +1 -0
  124. package/legacy/legacy-triPlanar.d.ts +1 -0
  125. package/legacy/legacy-triPlanar.js +14 -0
  126. package/legacy/legacy-triPlanar.js.map +1 -0
  127. package/legacy/legacy-water.d.ts +1 -0
  128. package/legacy/legacy-water.js +14 -0
  129. package/legacy/legacy-water.js.map +1 -0
  130. package/legacy/legacy.d.ts +1 -0
  131. package/legacy/legacy.js +17 -0
  132. package/legacy/legacy.js.map +1 -0
  133. package/license.md +71 -0
  134. package/mix/index.d.ts +1 -0
  135. package/mix/index.js +2 -0
  136. package/mix/index.js.map +1 -0
  137. package/mix/mix.fragment.d.ts +19 -0
  138. package/mix/mix.fragment.js +106 -0
  139. package/mix/mix.fragment.js.map +1 -0
  140. package/mix/mix.vertex.d.ts +21 -0
  141. package/mix/mix.vertex.js +96 -0
  142. package/mix/mix.vertex.js.map +1 -0
  143. package/mix/mixMaterial.d.ts +65 -0
  144. package/mix/mixMaterial.js +508 -0
  145. package/mix/mixMaterial.js.map +1 -0
  146. package/normal/index.d.ts +1 -0
  147. package/normal/index.js +2 -0
  148. package/normal/index.js.map +1 -0
  149. package/normal/normal.fragment.d.ts +19 -0
  150. package/normal/normal.fragment.js +85 -0
  151. package/normal/normal.fragment.js.map +1 -0
  152. package/normal/normal.vertex.d.ts +20 -0
  153. package/normal/normal.vertex.js +88 -0
  154. package/normal/normal.vertex.js.map +1 -0
  155. package/normal/normalMaterial.d.ts +36 -0
  156. package/normal/normalMaterial.js +345 -0
  157. package/normal/normalMaterial.js.map +1 -0
  158. package/package.json +47 -0
  159. package/readme.md +30 -0
  160. package/shadowOnly/index.d.ts +1 -0
  161. package/shadowOnly/index.js +2 -0
  162. package/shadowOnly/index.js.map +1 -0
  163. package/shadowOnly/shadowOnly.fragment.d.ts +20 -0
  164. package/shadowOnly/shadowOnly.fragment.js +60 -0
  165. package/shadowOnly/shadowOnly.fragment.js.map +1 -0
  166. package/shadowOnly/shadowOnly.vertex.d.ts +22 -0
  167. package/shadowOnly/shadowOnly.vertex.js +69 -0
  168. package/shadowOnly/shadowOnly.vertex.js.map +1 -0
  169. package/shadowOnly/shadowOnlyMaterial.d.ts +30 -0
  170. package/shadowOnly/shadowOnlyMaterial.js +243 -0
  171. package/shadowOnly/shadowOnlyMaterial.js.map +1 -0
  172. package/simple/index.d.ts +1 -0
  173. package/simple/index.js +2 -0
  174. package/simple/index.js.map +1 -0
  175. package/simple/simple.fragment.d.ts +19 -0
  176. package/simple/simple.fragment.js +81 -0
  177. package/simple/simple.fragment.js.map +1 -0
  178. package/simple/simple.vertex.d.ts +21 -0
  179. package/simple/simple.vertex.js +96 -0
  180. package/simple/simple.vertex.js.map +1 -0
  181. package/simple/simpleMaterial.d.ts +35 -0
  182. package/simple/simpleMaterial.js +303 -0
  183. package/simple/simpleMaterial.js.map +1 -0
  184. package/sky/index.d.ts +1 -0
  185. package/sky/index.js +2 -0
  186. package/sky/index.js.map +1 -0
  187. package/sky/sky.fragment.d.ts +13 -0
  188. package/sky/sky.fragment.js +81 -0
  189. package/sky/sky.fragment.js.map +1 -0
  190. package/sky/sky.vertex.d.ts +11 -0
  191. package/sky/sky.vertex.js +47 -0
  192. package/sky/sky.vertex.js.map +1 -0
  193. package/sky/skyMaterial.d.ts +151 -0
  194. package/sky/skyMaterial.js +367 -0
  195. package/sky/skyMaterial.js.map +1 -0
  196. package/terrain/index.d.ts +1 -0
  197. package/terrain/index.js +2 -0
  198. package/terrain/index.js.map +1 -0
  199. package/terrain/terrain.fragment.d.ts +19 -0
  200. package/terrain/terrain.fragment.js +110 -0
  201. package/terrain/terrain.fragment.js.map +1 -0
  202. package/terrain/terrain.vertex.d.ts +21 -0
  203. package/terrain/terrain.vertex.js +96 -0
  204. package/terrain/terrain.vertex.js.map +1 -0
  205. package/terrain/terrainMaterial.d.ts +50 -0
  206. package/terrain/terrainMaterial.js +445 -0
  207. package/terrain/terrainMaterial.js.map +1 -0
  208. package/triPlanar/index.d.ts +1 -0
  209. package/triPlanar/index.js +2 -0
  210. package/triPlanar/index.js.map +1 -0
  211. package/triPlanar/triPlanarMaterial.d.ts +49 -0
  212. package/triPlanar/triPlanarMaterial.js +421 -0
  213. package/triPlanar/triPlanarMaterial.js.map +1 -0
  214. package/triPlanar/triplanar.fragment.d.ts +19 -0
  215. package/triPlanar/triplanar.fragment.js +126 -0
  216. package/triPlanar/triplanar.fragment.js.map +1 -0
  217. package/triPlanar/triplanar.vertex.d.ts +22 -0
  218. package/triPlanar/triplanar.vertex.js +101 -0
  219. package/triPlanar/triplanar.vertex.js.map +1 -0
  220. package/water/index.d.ts +1 -0
  221. package/water/index.js +2 -0
  222. package/water/index.js.map +1 -0
  223. package/water/water.fragment.d.ts +19 -0
  224. package/water/water.fragment.js +160 -0
  225. package/water/water.fragment.js.map +1 -0
  226. package/water/water.vertex.d.ts +21 -0
  227. package/water/water.vertex.js +125 -0
  228. package/water/water.vertex.js.map +1 -0
  229. package/water/waterMaterial.d.ts +141 -0
  230. package/water/waterMaterial.js +729 -0
  231. package/water/waterMaterial.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalMaterial.js","sourceRoot":"","sources":["../../../../dev/materials/src/normal/normalMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serializeAsTexture, serialize, expandToProperty, serializeAsColor3 } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport type { IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { MaterialFlags } from \"core/Materials/materialFlags\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\nimport \"./normal.fragment\";\r\nimport \"./normal.vertex\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { AddClipPlaneUniforms, BindClipPlane } from \"core/Materials/clipPlaneMaterialHelper\";\r\nimport {\r\n BindBonesParameters,\r\n BindFogParameters,\r\n BindLights,\r\n BindLogDepth,\r\n HandleFallbacksForShadows,\r\n PrepareAttributesForBones,\r\n PrepareAttributesForInstances,\r\n PrepareDefinesForAttributes,\r\n PrepareDefinesForFrameBoundValues,\r\n PrepareDefinesForLights,\r\n PrepareDefinesForMisc,\r\n PrepareUniformsAndSamplersList,\r\n} from \"core/Materials/materialHelper.functions\";\r\n\r\nclass NormalMaterialDefines extends MaterialDefines {\r\n public DIFFUSE = false;\r\n public CLIPPLANE = false;\r\n public CLIPPLANE2 = false;\r\n public CLIPPLANE3 = false;\r\n public CLIPPLANE4 = false;\r\n public CLIPPLANE5 = false;\r\n public CLIPPLANE6 = false;\r\n public ALPHATEST = false;\r\n public DEPTHPREPASS = false;\r\n public POINTSIZE = false;\r\n public FOG = false;\r\n public LIGHT0 = false;\r\n public LIGHT1 = false;\r\n public LIGHT2 = false;\r\n public LIGHT3 = false;\r\n public SPOTLIGHT0 = false;\r\n public SPOTLIGHT1 = false;\r\n public SPOTLIGHT2 = false;\r\n public SPOTLIGHT3 = false;\r\n public HEMILIGHT0 = false;\r\n public HEMILIGHT1 = false;\r\n public HEMILIGHT2 = false;\r\n public HEMILIGHT3 = false;\r\n public DIRLIGHT0 = false;\r\n public DIRLIGHT1 = false;\r\n public DIRLIGHT2 = false;\r\n public DIRLIGHT3 = false;\r\n public POINTLIGHT0 = false;\r\n public POINTLIGHT1 = false;\r\n public POINTLIGHT2 = false;\r\n public POINTLIGHT3 = false;\r\n public SHADOW0 = false;\r\n public SHADOW1 = false;\r\n public SHADOW2 = false;\r\n public SHADOW3 = false;\r\n public SHADOWS = false;\r\n public SHADOWESM0 = false;\r\n public SHADOWESM1 = false;\r\n public SHADOWESM2 = false;\r\n public SHADOWESM3 = false;\r\n public SHADOWPOISSON0 = false;\r\n public SHADOWPOISSON1 = false;\r\n public SHADOWPOISSON2 = false;\r\n public SHADOWPOISSON3 = false;\r\n public SHADOWPCF0 = false;\r\n public SHADOWPCF1 = false;\r\n public SHADOWPCF2 = false;\r\n public SHADOWPCF3 = false;\r\n public SHADOWPCSS0 = false;\r\n public SHADOWPCSS1 = false;\r\n public SHADOWPCSS2 = false;\r\n public SHADOWPCSS3 = false;\r\n public NORMAL = false;\r\n public UV1 = false;\r\n public UV2 = false;\r\n public NUM_BONE_INFLUENCERS = 0;\r\n public BonesPerMesh = 0;\r\n public INSTANCES = false;\r\n public THIN_INSTANCES = false;\r\n public LIGHTING = false;\r\n public IMAGEPROCESSINGPOSTPROCESS = false;\r\n public SKIPFINALCOLORCLAMP = false;\r\n public LOGARITHMICDEPTH = false;\r\n public AREALIGHTSUPPORTED = true;\r\n public AREALIGHTNOROUGHTNESS = true;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\nexport class NormalMaterial extends PushMaterial {\r\n @serializeAsTexture(\"diffuseTexture\")\r\n private _diffuseTexture: BaseTexture;\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public diffuseTexture: BaseTexture;\r\n\r\n @serializeAsColor3()\r\n public diffuseColor = new Color3(1, 1, 1);\r\n\r\n @serialize(\"disableLighting\")\r\n private _disableLighting = false;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public disableLighting: boolean;\r\n\r\n @serialize(\"maxSimultaneousLights\")\r\n private _maxSimultaneousLights = 4;\r\n @expandToProperty(\"_markAllSubMeshesAsLightsDirty\")\r\n public maxSimultaneousLights: number;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return this.alpha < 1.0;\r\n }\r\n\r\n public override needAlphaBlendingForMesh(mesh: AbstractMesh): boolean {\r\n return this.needAlphaBlending() || mesh.visibility < 1.0;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new NormalMaterialDefines();\r\n }\r\n\r\n const defines = <NormalMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Textures\r\n if (defines._areTexturesDirty) {\r\n defines._needUVs = false;\r\n if (scene.texturesEnabled) {\r\n if (this._diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n if (!this._diffuseTexture.isReady()) {\r\n return false;\r\n } else {\r\n defines._needUVs = true;\r\n defines.DIFFUSE = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Misc.\r\n PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, this.needAlphaTestingForMesh(mesh), defines);\r\n\r\n // Lights\r\n defines._needNormals = true;\r\n PrepareDefinesForLights(scene, mesh, defines, false, this._maxSimultaneousLights, this._disableLighting);\r\n\r\n // Values that need to be evaluated on every frame\r\n PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false, null, subMesh.getRenderingMesh().hasThinInstances);\r\n\r\n defines.LIGHTING = !this._disableLighting;\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, true);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n if (defines.NUM_BONE_INFLUENCERS > 0) {\r\n fallbacks.addCPUSkinningFallback(0, mesh);\r\n }\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n PrepareAttributesForBones(attribs, mesh, defines, fallbacks);\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n const shaderName = \"normal\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"view\",\r\n \"viewProjection\",\r\n \"vEyePosition\",\r\n \"vLightsType\",\r\n \"vDiffuseColor\",\r\n \"vFogInfos\",\r\n \"vFogColor\",\r\n \"pointSize\",\r\n \"vDiffuseInfos\",\r\n \"mBones\",\r\n \"diffuseMatrix\",\r\n \"logarithmicDepthConstant\",\r\n ];\r\n const samplers = [\"diffuseSampler\", \"areaLightsLTC1Sampler\", \"areaLightsLTC2Sampler\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n AddClipPlaneUniforms(uniforms);\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n // Check if Area Lights have LTC texture.\r\n if (defines[\"AREALIGHTUSED\"]) {\r\n for (let index = 0; index < mesh.lightSources.length; index++) {\r\n if (!mesh.lightSources[index]._isReady()) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n drawWrapper._wasPreviouslyUsingInstances = !!useInstances;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <NormalMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n // Bones\r\n BindBonesParameters(mesh, this._activeEffect);\r\n\r\n if (this._mustRebind(scene, effect, subMesh)) {\r\n // Textures\r\n if (this.diffuseTexture && MaterialFlags.DiffuseTextureEnabled) {\r\n this._activeEffect.setTexture(\"diffuseSampler\", this.diffuseTexture);\r\n\r\n this._activeEffect.setFloat2(\"vDiffuseInfos\", this.diffuseTexture.coordinatesIndex, this.diffuseTexture.level);\r\n this._activeEffect.setMatrix(\"diffuseMatrix\", this.diffuseTexture.getTextureMatrix());\r\n }\r\n // Clip plane\r\n BindClipPlane(effect, this, scene);\r\n\r\n // Point size\r\n if (this.pointsCloud) {\r\n this._activeEffect.setFloat(\"pointSize\", this.pointSize);\r\n }\r\n\r\n // Log. depth\r\n if (this._useLogarithmicDepth) {\r\n BindLogDepth(defines, effect, scene);\r\n }\r\n\r\n scene.bindEyePosition(effect);\r\n }\r\n\r\n this._activeEffect.setColor4(\"vDiffuseColor\", this.diffuseColor, this.alpha * mesh.visibility);\r\n\r\n // Lights\r\n if (scene.lightsEnabled && !this.disableLighting) {\r\n BindLights(scene, mesh, this._activeEffect, defines);\r\n }\r\n\r\n // View\r\n if (scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) {\r\n this._activeEffect.setMatrix(\"view\", scene.getViewMatrix());\r\n }\r\n\r\n // Fog\r\n BindFogParameters(scene, mesh, this._activeEffect);\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n public override getAnimatables(): IAnimatable[] {\r\n const results = [];\r\n\r\n if (this.diffuseTexture && this.diffuseTexture.animations && this.diffuseTexture.animations.length > 0) {\r\n results.push(this.diffuseTexture);\r\n }\r\n\r\n return results;\r\n }\r\n\r\n public override getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n if (this._diffuseTexture) {\r\n activeTextures.push(this._diffuseTexture);\r\n }\r\n\r\n return activeTextures;\r\n }\r\n\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n if (this.diffuseTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n if (this.diffuseTexture) {\r\n this.diffuseTexture.dispose();\r\n }\r\n\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): NormalMaterial {\r\n return SerializationHelper.Clone(() => new NormalMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.NormalMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"NormalMaterial\";\r\n }\r\n\r\n // Statics\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): NormalMaterial {\r\n return SerializationHelper.Parse(() => new NormalMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.NormalMaterial\", NormalMaterial);\r\n"]}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@onerjs/materials",
3
+ "version": "8.23.1",
4
+ "main": "index.js",
5
+ "module": "index.js",
6
+ "types": "index.d.ts",
7
+ "files": [
8
+ "**/*.js",
9
+ "**/*.d.ts",
10
+ "**/*.map",
11
+ "readme.md",
12
+ "license.md"
13
+ ],
14
+ "scripts": {
15
+ "build": "npm run clean && npm run compile",
16
+ "clean": "rimraf dist && rimraf *.tsbuildinfo -g && rimraf \"./**/*.!(md|json|build.json|lts.json)\" -g",
17
+ "compile": "tsc -b tsconfig.build.json && tsc -b tsconfig.lts.json",
18
+ "postcompile": "build-tools -c add-js-to-es6"
19
+ },
20
+ "devDependencies": {
21
+ "@onerjs/core": "^8.23.1",
22
+ "@dev/build-tools": "^1.0.0",
23
+ "@lts/materials": "^1.0.0"
24
+ },
25
+ "peerDependencies": {
26
+ "@onerjs/core": "^8.6.0"
27
+ },
28
+ "keywords": [
29
+ "3D",
30
+ "javascript",
31
+ "html5",
32
+ "webgl",
33
+ "babylon.js"
34
+ ],
35
+ "license": "Apache-2.0",
36
+ "esnext": "index.js",
37
+ "type": "module",
38
+ "sideEffects": true,
39
+ "homepage": "https://www.babylonjs.com",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/BabylonJS/Babylon.js.git"
43
+ },
44
+ "bugs": {
45
+ "url": "https://github.com/BabylonJS/Babylon.js/issues"
46
+ }
47
+ }
package/readme.md ADDED
@@ -0,0 +1,30 @@
1
+ Babylon.js Materials Library
2
+ =====================
3
+
4
+ For usage documentation please visit https://doc.babylonjs.com/extensions and choose "materials library".
5
+
6
+ # Installation instructions
7
+
8
+ To install using npm :
9
+
10
+ ```
11
+ npm install --save @babylonjs/core @babylonjs/materials
12
+ ```
13
+
14
+ # How to use
15
+
16
+ Afterwards it can be imported to your project using:
17
+
18
+ ```
19
+ import { GridMaterial } from '@babylonjs/materials/Grid';
20
+ ```
21
+
22
+ And used as usual:
23
+
24
+ ```
25
+ // Some awesome code
26
+ let gridMaterial = new GridMaterial("gridMaterial", scene);
27
+ // Some more awesome code
28
+ ```
29
+
30
+ For more information you can have a look at our [ES6 dedicated documentation](https://doc.babylonjs.com/features/es6_support).
@@ -0,0 +1 @@
1
+ export * from "./shadowOnlyMaterial.js";
@@ -0,0 +1,2 @@
1
+ export * from "./shadowOnlyMaterial.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/materials/src/shadowOnly/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC","sourcesContent":["export * from \"./shadowOnlyMaterial\";\r\n"]}
@@ -0,0 +1,20 @@
1
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneFragmentDeclaration.js";
2
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
3
+ import "@babylonjs/core/Shaders/ShadersInclude/helperFunctions.js";
4
+ import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration.js";
5
+ import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration.js";
6
+ import "@babylonjs/core/Shaders/ShadersInclude/lightsFragmentFunctions.js";
7
+ import "@babylonjs/core/Shaders/ShadersInclude/shadowsFragmentFunctions.js";
8
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
9
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
10
+ import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
11
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
12
+ import "@babylonjs/core/Shaders/ShadersInclude/lightFragment.js";
13
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthFragment.js";
14
+ import "@babylonjs/core/Shaders/ShadersInclude/fogFragment.js";
15
+ import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
16
+ /** @internal */
17
+ export declare const shadowOnlyPixelShader: {
18
+ name: string;
19
+ shader: string;
20
+ };
@@ -0,0 +1,60 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
3
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneFragmentDeclaration.js";
4
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
5
+ import "@babylonjs/core/Shaders/ShadersInclude/helperFunctions.js";
6
+ import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration.js";
7
+ import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration.js";
8
+ import "@babylonjs/core/Shaders/ShadersInclude/lightsFragmentFunctions.js";
9
+ import "@babylonjs/core/Shaders/ShadersInclude/shadowsFragmentFunctions.js";
10
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration.js";
11
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
12
+ import "@babylonjs/core/Shaders/ShadersInclude/fogFragmentDeclaration.js";
13
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneFragment.js";
14
+ import "@babylonjs/core/Shaders/ShadersInclude/lightFragment.js";
15
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthFragment.js";
16
+ import "@babylonjs/core/Shaders/ShadersInclude/fogFragment.js";
17
+ import "@babylonjs/core/Shaders/ShadersInclude/imageProcessingCompatibility.js";
18
+ const name = "shadowOnlyPixelShader";
19
+ const shader = `precision highp float;
20
+ #include<__decl__sceneFragment>
21
+ uniform float alpha;uniform vec3 shadowColor;varying vec3 vPositionW;
22
+ #ifdef NORMAL
23
+ varying vec3 vNormalW;
24
+ #endif
25
+ #include<helperFunctions>
26
+ #include<__decl__lightFragment>[0..maxSimultaneousLights]
27
+ #include<lightsFragmentFunctions>
28
+ #include<shadowsFragmentFunctions>
29
+ #include<clipPlaneFragmentDeclaration>
30
+ #ifdef LOGARITHMICDEPTH
31
+ #extension GL_EXT_frag_depth : enable
32
+ #endif
33
+ #include<logDepthDeclaration>
34
+ #include<fogFragmentDeclaration>
35
+ #define CUSTOM_FRAGMENT_DEFINITIONS
36
+ void main(void) {
37
+ #define CUSTOM_FRAGMENT_MAIN_BEGIN
38
+ #include<clipPlaneFragment>
39
+ vec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);
40
+ #ifdef NORMAL
41
+ vec3 normalW=normalize(vNormalW);
42
+ #else
43
+ vec3 normalW=vec3(1.0,1.0,1.0);
44
+ #endif
45
+ vec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;float glossiness=0.;float aggShadow=0.;float numLights=0.;
46
+ #include<lightFragment>[0..1]
47
+ vec4 color=vec4(shadowColor,(1.0-clamp(shadow,0.,1.))*alpha);
48
+ #include<logDepthFragment>
49
+ #include<fogFragment>
50
+ gl_FragColor=color;
51
+ #include<imageProcessingCompatibility>
52
+ #define CUSTOM_FRAGMENT_MAIN_END
53
+ }`;
54
+ // Sideeffect
55
+ if (!ShaderStore.ShadersStore[name]) {
56
+ ShaderStore.ShadersStore[name] = shader;
57
+ }
58
+ /** @internal */
59
+ export const shadowOnlyPixelShader = { name, shader };
60
+ //# sourceMappingURL=shadowOnly.fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadowOnly.fragment.js","sourceRoot":"","sources":["../../../../dev/materials/src/shadowOnly/shadowOnly.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,4EAA8D;AAC9D,uEAAyD;AACzD,mEAAqD;AACrD,4EAA8D;AAC9D,uEAAyD;AACzD,2EAA6D;AAC7D,4EAA8D;AAC9D,gFAAkE;AAClE,uEAAyD;AACzD,0EAA4D;AAC5D,qEAAuD;AACvD,iEAAmD;AACnD,oEAAsD;AACtD,+DAAiD;AACjD,gFAAkE;AAElE,MAAM,IAAI,GAAG,uBAAuB,CAAC;AACrC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCb,CAAC;AACH,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/sceneFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/sceneUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/helperFunctions\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/shadowsFragmentFunctions\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneFragment\";\nimport \"core/Shaders/ShadersInclude/lightFragment\";\nimport \"core/Shaders/ShadersInclude/logDepthFragment\";\nimport \"core/Shaders/ShadersInclude/fogFragment\";\nimport \"core/Shaders/ShadersInclude/imageProcessingCompatibility\";\n\nconst name = \"shadowOnlyPixelShader\";\nconst shader = `precision highp float;\n#include<__decl__sceneFragment>\nuniform float alpha;uniform vec3 shadowColor;varying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#include<helperFunctions>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#include<lightsFragmentFunctions>\n#include<shadowsFragmentFunctions>\n#include<clipPlaneFragmentDeclaration>\n#ifdef LOGARITHMICDEPTH\n#extension GL_EXT_frag_depth : enable\n#endif\n#include<logDepthDeclaration>\n#include<fogFragmentDeclaration>\n#define CUSTOM_FRAGMENT_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_FRAGMENT_MAIN_BEGIN\n#include<clipPlaneFragment>\nvec3 viewDirectionW=normalize(vEyePosition.xyz-vPositionW);\n#ifdef NORMAL\nvec3 normalW=normalize(vNormalW);\n#else\nvec3 normalW=vec3(1.0,1.0,1.0);\n#endif\nvec3 diffuseBase=vec3(0.,0.,0.);lightingInfo info;float shadow=1.;float glossiness=0.;float aggShadow=0.;float numLights=0.;\n#include<lightFragment>[0..1]\nvec4 color=vec4(shadowColor,(1.0-clamp(shadow,0.,1.))*alpha);\n#include<logDepthFragment>\n#include<fogFragment>\ngl_FragColor=color;\n#include<imageProcessingCompatibility>\n#define CUSTOM_FRAGMENT_MAIN_END\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const shadowOnlyPixelShader = { name, shader };\n"]}
@@ -0,0 +1,22 @@
1
+ import "@babylonjs/core/Shaders/ShadersInclude/bonesDeclaration.js";
2
+ import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js";
3
+ import "@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
4
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneVertexDeclaration.js";
5
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
6
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
7
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
8
+ import "@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
9
+ import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration.js";
10
+ import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration.js";
11
+ import "@babylonjs/core/Shaders/ShadersInclude/instancesVertex.js";
12
+ import "@babylonjs/core/Shaders/ShadersInclude/bonesVertex.js";
13
+ import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimation.js";
14
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
15
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthVertex.js";
16
+ import "@babylonjs/core/Shaders/ShadersInclude/fogVertex.js";
17
+ import "@babylonjs/core/Shaders/ShadersInclude/shadowsVertex.js";
18
+ /** @internal */
19
+ export declare const shadowOnlyVertexShader: {
20
+ name: string;
21
+ shader: string;
22
+ };
@@ -0,0 +1,69 @@
1
+ // Do not edit.
2
+ import { ShaderStore } from "@babylonjs/core/Engines/shaderStore.js";
3
+ import "@babylonjs/core/Shaders/ShadersInclude/bonesDeclaration.js";
4
+ import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js";
5
+ import "@babylonjs/core/Shaders/ShadersInclude/instancesDeclaration.js";
6
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneVertexDeclaration.js";
7
+ import "@babylonjs/core/Shaders/ShadersInclude/sceneUboDeclaration.js";
8
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertexDeclaration.js";
9
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthDeclaration.js";
10
+ import "@babylonjs/core/Shaders/ShadersInclude/fogVertexDeclaration.js";
11
+ import "@babylonjs/core/Shaders/ShadersInclude/lightFragmentDeclaration.js";
12
+ import "@babylonjs/core/Shaders/ShadersInclude/lightUboDeclaration.js";
13
+ import "@babylonjs/core/Shaders/ShadersInclude/instancesVertex.js";
14
+ import "@babylonjs/core/Shaders/ShadersInclude/bonesVertex.js";
15
+ import "@babylonjs/core/Shaders/ShadersInclude/bakedVertexAnimation.js";
16
+ import "@babylonjs/core/Shaders/ShadersInclude/clipPlaneVertex.js";
17
+ import "@babylonjs/core/Shaders/ShadersInclude/logDepthVertex.js";
18
+ import "@babylonjs/core/Shaders/ShadersInclude/fogVertex.js";
19
+ import "@babylonjs/core/Shaders/ShadersInclude/shadowsVertex.js";
20
+ const name = "shadowOnlyVertexShader";
21
+ const shader = `precision highp float;attribute vec3 position;
22
+ #ifdef NORMAL
23
+ attribute vec3 normal;
24
+ #endif
25
+ #include<bonesDeclaration>
26
+ #include<bakedVertexAnimationDeclaration>
27
+ #include<instancesDeclaration>
28
+ #include<__decl__sceneVertex>
29
+ #ifdef POINTSIZE
30
+ uniform float pointSize;
31
+ #endif
32
+ varying vec3 vPositionW;
33
+ #ifdef NORMAL
34
+ varying vec3 vNormalW;
35
+ #endif
36
+ #ifdef VERTEXCOLOR
37
+ varying vec4 vColor;
38
+ #endif
39
+ #include<clipPlaneVertexDeclaration>
40
+ #include<logDepthDeclaration>
41
+ #include<fogVertexDeclaration>
42
+ #include<__decl__lightFragment>[0..maxSimultaneousLights]
43
+ #define CUSTOM_VERTEX_DEFINITIONS
44
+ void main(void) {
45
+ #define CUSTOM_VERTEX_MAIN_BEGIN
46
+ #include<instancesVertex>
47
+ #include<bonesVertex>
48
+ #include<bakedVertexAnimation>
49
+ vec4 worldPos=finalWorld*vec4(position,1.0);gl_Position=viewProjection*worldPos;vPositionW=vec3(worldPos);
50
+ #ifdef NORMAL
51
+ vNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));
52
+ #endif
53
+ #include<clipPlaneVertex>
54
+ #include<logDepthVertex>
55
+ #include<fogVertex>
56
+ #include<shadowsVertex>[0..maxSimultaneousLights]
57
+ #if defined(POINTSIZE) && !defined(WEBGPU)
58
+ gl_PointSize=pointSize;
59
+ #endif
60
+ #define CUSTOM_VERTEX_MAIN_END
61
+ }
62
+ `;
63
+ // Sideeffect
64
+ if (!ShaderStore.ShadersStore[name]) {
65
+ ShaderStore.ShadersStore[name] = shader;
66
+ }
67
+ /** @internal */
68
+ export const shadowOnlyVertexShader = { name, shader };
69
+ //# sourceMappingURL=shadowOnly.vertex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadowOnly.vertex.js","sourceRoot":"","sources":["../../../../dev/materials/src/shadowOnly/shadowOnly.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AACvD,oEAAsD;AACtD,mFAAqE;AACrE,wEAA0D;AAC1D,0EAA4D;AAC5D,uEAAyD;AACzD,8EAAgE;AAChE,uEAAyD;AACzD,wEAA0D;AAC1D,4EAA8D;AAC9D,uEAAyD;AACzD,mEAAqD;AACrD,+DAAiD;AACjD,wEAA0D;AAC1D,mEAAqD;AACrD,kEAAoD;AACpD,6DAA+C;AAC/C,iEAAmD;AAEnD,MAAM,IAAI,GAAG,wBAAwB,CAAC;AACtC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAC5C,CAAC;AACD,gBAAgB;AAChB,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\nimport \"core/Shaders/ShadersInclude/bonesDeclaration\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimationDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesDeclaration\";\nimport \"core/Shaders/ShadersInclude/sceneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/sceneUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/logDepthDeclaration\";\nimport \"core/Shaders/ShadersInclude/fogVertexDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightFragmentDeclaration\";\nimport \"core/Shaders/ShadersInclude/lightUboDeclaration\";\nimport \"core/Shaders/ShadersInclude/instancesVertex\";\nimport \"core/Shaders/ShadersInclude/bonesVertex\";\nimport \"core/Shaders/ShadersInclude/bakedVertexAnimation\";\nimport \"core/Shaders/ShadersInclude/clipPlaneVertex\";\nimport \"core/Shaders/ShadersInclude/logDepthVertex\";\nimport \"core/Shaders/ShadersInclude/fogVertex\";\nimport \"core/Shaders/ShadersInclude/shadowsVertex\";\n\nconst name = \"shadowOnlyVertexShader\";\nconst shader = `precision highp float;attribute vec3 position;\n#ifdef NORMAL\nattribute vec3 normal;\n#endif\n#include<bonesDeclaration>\n#include<bakedVertexAnimationDeclaration>\n#include<instancesDeclaration>\n#include<__decl__sceneVertex>\n#ifdef POINTSIZE\nuniform float pointSize;\n#endif\nvarying vec3 vPositionW;\n#ifdef NORMAL\nvarying vec3 vNormalW;\n#endif\n#ifdef VERTEXCOLOR\nvarying vec4 vColor;\n#endif\n#include<clipPlaneVertexDeclaration>\n#include<logDepthDeclaration>\n#include<fogVertexDeclaration>\n#include<__decl__lightFragment>[0..maxSimultaneousLights]\n#define CUSTOM_VERTEX_DEFINITIONS\nvoid main(void) {\n#define CUSTOM_VERTEX_MAIN_BEGIN\n#include<instancesVertex>\n#include<bonesVertex>\n#include<bakedVertexAnimation>\nvec4 worldPos=finalWorld*vec4(position,1.0);gl_Position=viewProjection*worldPos;vPositionW=vec3(worldPos);\n#ifdef NORMAL\nvNormalW=normalize(vec3(finalWorld*vec4(normal,0.0)));\n#endif\n#include<clipPlaneVertex>\n#include<logDepthVertex>\n#include<fogVertex>\n#include<shadowsVertex>[0..maxSimultaneousLights]\n#if defined(POINTSIZE) && !defined(WEBGPU)\ngl_PointSize=pointSize;\n#endif\n#define CUSTOM_VERTEX_MAIN_END\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStore[name]) {\n ShaderStore.ShadersStore[name] = shader;\n}\n/** @internal */\nexport const shadowOnlyVertexShader = { name, shader };\n"]}
@@ -0,0 +1,30 @@
1
+ import type { Nullable } from "@babylonjs/core/types.js";
2
+ import type { Matrix } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
4
+ import type { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture.js";
5
+ import type { IShadowLight } from "@babylonjs/core/Lights/shadowLight.js";
6
+ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
7
+ import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
8
+ import type { SubMesh } from "@babylonjs/core/Meshes/subMesh.js";
9
+ import type { Mesh } from "@babylonjs/core/Meshes/mesh.js";
10
+ import { Scene } from "@babylonjs/core/scene.js";
11
+ import "./shadowOnly.fragment.js";
12
+ import "./shadowOnly.vertex.js";
13
+ export declare class ShadowOnlyMaterial extends PushMaterial {
14
+ private _activeLight;
15
+ private _needAlphaBlending;
16
+ constructor(name: string, scene?: Scene);
17
+ shadowColor: Color3;
18
+ needAlphaBlending(): boolean;
19
+ needAlphaTesting(): boolean;
20
+ getAlphaTestTexture(): Nullable<BaseTexture>;
21
+ get activeLight(): IShadowLight;
22
+ set activeLight(light: IShadowLight);
23
+ private _getFirstShadowLightForMesh;
24
+ isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean;
25
+ bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
26
+ clone(name: string): ShadowOnlyMaterial;
27
+ serialize(): any;
28
+ getClassName(): string;
29
+ static Parse(source: any, scene: Scene, rootUrl: string): ShadowOnlyMaterial;
30
+ }
@@ -0,0 +1,243 @@
1
+ import { SerializationHelper } from "@babylonjs/core/Misc/decorators.serialization.js";
2
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
3
+ import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
4
+ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
5
+ import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
6
+ import { Scene } from "@babylonjs/core/scene.js";
7
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
8
+ import "./shadowOnly.fragment.js";
9
+ import "./shadowOnly.vertex.js";
10
+ import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
11
+ import { AddClipPlaneUniforms, BindClipPlane } from "@babylonjs/core/Materials/clipPlaneMaterialHelper.js";
12
+ import { BindBonesParameters, BindFogParameters, BindLights, BindLogDepth, HandleFallbacksForShadows, PrepareAttributesForBones, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForLights, PrepareDefinesForMisc, PrepareUniformsAndSamplersList, } from "@babylonjs/core/Materials/materialHelper.functions.js";
13
+ class ShadowOnlyMaterialDefines extends MaterialDefines {
14
+ constructor() {
15
+ super();
16
+ this.CLIPPLANE = false;
17
+ this.CLIPPLANE2 = false;
18
+ this.CLIPPLANE3 = false;
19
+ this.CLIPPLANE4 = false;
20
+ this.CLIPPLANE5 = false;
21
+ this.CLIPPLANE6 = false;
22
+ this.POINTSIZE = false;
23
+ this.FOG = false;
24
+ this.NORMAL = false;
25
+ this.NUM_BONE_INFLUENCERS = 0;
26
+ this.BonesPerMesh = 0;
27
+ this.INSTANCES = false;
28
+ this.IMAGEPROCESSINGPOSTPROCESS = false;
29
+ this.SKIPFINALCOLORCLAMP = false;
30
+ this.LOGARITHMICDEPTH = false;
31
+ this.rebuild();
32
+ }
33
+ }
34
+ export class ShadowOnlyMaterial extends PushMaterial {
35
+ constructor(name, scene) {
36
+ super(name, scene);
37
+ this._needAlphaBlending = true;
38
+ this.shadowColor = Color3.Black();
39
+ }
40
+ needAlphaBlending() {
41
+ return this._needAlphaBlending;
42
+ }
43
+ needAlphaTesting() {
44
+ return false;
45
+ }
46
+ getAlphaTestTexture() {
47
+ return null;
48
+ }
49
+ get activeLight() {
50
+ return this._activeLight;
51
+ }
52
+ set activeLight(light) {
53
+ this._activeLight = light;
54
+ }
55
+ _getFirstShadowLightForMesh(mesh) {
56
+ for (const light of mesh.lightSources) {
57
+ if (light.shadowEnabled) {
58
+ return light;
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+ // Methods
64
+ isReadyForSubMesh(mesh, subMesh, useInstances) {
65
+ const drawWrapper = subMesh._drawWrapper;
66
+ if (this.isFrozen) {
67
+ if (drawWrapper.effect && drawWrapper._wasPreviouslyReady && drawWrapper._wasPreviouslyUsingInstances === useInstances) {
68
+ return true;
69
+ }
70
+ }
71
+ if (!subMesh.materialDefines) {
72
+ subMesh.materialDefines = new ShadowOnlyMaterialDefines();
73
+ }
74
+ const defines = subMesh.materialDefines;
75
+ const scene = this.getScene();
76
+ if (this._isReadyForSubMesh(subMesh)) {
77
+ return true;
78
+ }
79
+ const engine = scene.getEngine();
80
+ // Ensure that active light is the first shadow light
81
+ if (this._activeLight) {
82
+ for (const light of mesh.lightSources) {
83
+ if (light.shadowEnabled) {
84
+ if (this._activeLight === light) {
85
+ break; // We are good
86
+ }
87
+ const lightPosition = mesh.lightSources.indexOf(this._activeLight);
88
+ if (lightPosition !== -1) {
89
+ mesh.lightSources.splice(lightPosition, 1);
90
+ mesh.lightSources.splice(0, 0, this._activeLight);
91
+ }
92
+ break;
93
+ }
94
+ }
95
+ }
96
+ PrepareDefinesForFrameBoundValues(scene, engine, this, defines, useInstances ? true : false);
97
+ PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, this.needAlphaTestingForMesh(mesh), defines);
98
+ defines._needNormals = PrepareDefinesForLights(scene, mesh, defines, false, 1);
99
+ const shadowGenerator = this._getFirstShadowLightForMesh(mesh)?.getShadowGenerator();
100
+ this._needAlphaBlending = true;
101
+ if (shadowGenerator && shadowGenerator.getClassName && shadowGenerator.getClassName() === "CascadedShadowGenerator") {
102
+ const csg = shadowGenerator;
103
+ this._needAlphaBlending = !csg.autoCalcDepthBounds;
104
+ }
105
+ // Attribs
106
+ PrepareDefinesForAttributes(mesh, defines, false, true);
107
+ // Get correct effect
108
+ if (defines.isDirty) {
109
+ defines.markAsProcessed();
110
+ scene.resetCachedMaterial();
111
+ // Fallbacks
112
+ const fallbacks = new EffectFallbacks();
113
+ if (defines.FOG) {
114
+ fallbacks.addFallback(1, "FOG");
115
+ }
116
+ HandleFallbacksForShadows(defines, fallbacks, 1);
117
+ if (defines.NUM_BONE_INFLUENCERS > 0) {
118
+ fallbacks.addCPUSkinningFallback(0, mesh);
119
+ }
120
+ defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
121
+ //Attributes
122
+ const attribs = [VertexBuffer.PositionKind];
123
+ if (defines.NORMAL) {
124
+ attribs.push(VertexBuffer.NormalKind);
125
+ }
126
+ PrepareAttributesForBones(attribs, mesh, defines, fallbacks);
127
+ PrepareAttributesForInstances(attribs, defines);
128
+ const shaderName = "shadowOnly";
129
+ const join = defines.toString();
130
+ const uniforms = [
131
+ "world",
132
+ "view",
133
+ "viewProjection",
134
+ "vEyePosition",
135
+ "vLightsType",
136
+ "vFogInfos",
137
+ "vFogColor",
138
+ "pointSize",
139
+ "alpha",
140
+ "shadowColor",
141
+ "mBones",
142
+ "logarithmicDepthConstant",
143
+ ];
144
+ const samplers = [];
145
+ const uniformBuffers = ["Scene"];
146
+ AddClipPlaneUniforms(uniforms);
147
+ PrepareUniformsAndSamplersList({
148
+ uniformsNames: uniforms,
149
+ uniformBuffersNames: uniformBuffers,
150
+ samplers: samplers,
151
+ defines: defines,
152
+ maxSimultaneousLights: 1,
153
+ });
154
+ subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
155
+ attributes: attribs,
156
+ uniformsNames: uniforms,
157
+ uniformBuffersNames: uniformBuffers,
158
+ samplers: samplers,
159
+ defines: join,
160
+ fallbacks: fallbacks,
161
+ onCompiled: this.onCompiled,
162
+ onError: this.onError,
163
+ indexParameters: { maxSimultaneousLights: 1 },
164
+ }, engine), defines, this._materialContext);
165
+ }
166
+ if (!subMesh.effect || !subMesh.effect.isReady()) {
167
+ return false;
168
+ }
169
+ defines._renderId = scene.getRenderId();
170
+ drawWrapper._wasPreviouslyReady = true;
171
+ drawWrapper._wasPreviouslyUsingInstances = !!useInstances;
172
+ return true;
173
+ }
174
+ bindForSubMesh(world, mesh, subMesh) {
175
+ const scene = this.getScene();
176
+ const defines = subMesh.materialDefines;
177
+ if (!defines) {
178
+ return;
179
+ }
180
+ const effect = subMesh.effect;
181
+ if (!effect) {
182
+ return;
183
+ }
184
+ this._activeEffect = effect;
185
+ // Matrices
186
+ this.bindOnlyWorldMatrix(world);
187
+ this.bindViewProjection(effect);
188
+ // Bones
189
+ BindBonesParameters(mesh, this._activeEffect);
190
+ if (this._mustRebind(scene, effect, subMesh)) {
191
+ // Clip plane
192
+ BindClipPlane(effect, this, scene);
193
+ // Point size
194
+ if (this.pointsCloud) {
195
+ this._activeEffect.setFloat("pointSize", this.pointSize);
196
+ }
197
+ this._activeEffect.setFloat("alpha", this.alpha);
198
+ this._activeEffect.setColor3("shadowColor", this.shadowColor);
199
+ // Log. depth
200
+ if (this._useLogarithmicDepth) {
201
+ BindLogDepth(defines, effect, scene);
202
+ }
203
+ scene.bindEyePosition(effect);
204
+ }
205
+ // Lights
206
+ if (scene.lightsEnabled) {
207
+ BindLights(scene, mesh, this._activeEffect, defines, 1);
208
+ const light = this._getFirstShadowLightForMesh(mesh);
209
+ if (light) {
210
+ // Make sure the uniforms for this light will be rebound for other materials using this light when rendering the current frame.
211
+ // Indeed, there is an optimization in Light that binds the light uniforms only once per frame for a given light (if using ubo).
212
+ // Doing this way assumes that all uses of this light are the same, meaning all parameters passed to Light._bindLlight
213
+ // are the same, notably useSpecular. However, isReadyForSubMesh (see above) is passing false for this parameter, which may not be
214
+ // the value the other materials may pass.
215
+ light._renderId = -1;
216
+ }
217
+ }
218
+ // View
219
+ if ((scene.fogEnabled && mesh.applyFog && scene.fogMode !== Scene.FOGMODE_NONE) || defines["SHADOWCSM0"]) {
220
+ this.bindView(effect);
221
+ }
222
+ // Fog
223
+ BindFogParameters(scene, mesh, this._activeEffect);
224
+ this._afterBind(mesh, this._activeEffect, subMesh);
225
+ }
226
+ clone(name) {
227
+ return SerializationHelper.Clone(() => new ShadowOnlyMaterial(name, this.getScene()), this);
228
+ }
229
+ serialize() {
230
+ const serializationObject = super.serialize();
231
+ serializationObject.customType = "BABYLON.ShadowOnlyMaterial";
232
+ return serializationObject;
233
+ }
234
+ getClassName() {
235
+ return "ShadowOnlyMaterial";
236
+ }
237
+ // Statics
238
+ static Parse(source, scene, rootUrl) {
239
+ return SerializationHelper.Parse(() => new ShadowOnlyMaterial(source.name, scene), source, scene, rootUrl);
240
+ }
241
+ }
242
+ RegisterClass("BABYLON.ShadowOnlyMaterial", ShadowOnlyMaterial);
243
+ //# sourceMappingURL=shadowOnlyMaterial.js.map