@zephyr3d/scene 0.9.6 → 0.9.7

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 (203) hide show
  1. package/dist/animation/joint_dynamics/controller.js +92 -32
  2. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
  6. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  7. package/dist/animation/joint_dynamics/solver.js +71 -27
  8. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  9. package/dist/animation/joint_dynamics_modifier.js +21 -20
  10. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  11. package/dist/animation/skeleton.js +7 -10
  12. package/dist/animation/skeleton.js.map +1 -1
  13. package/dist/app/engine.js +134 -140
  14. package/dist/app/engine.js.map +1 -1
  15. package/dist/app/scriptregistry.js +47 -16
  16. package/dist/app/scriptregistry.js.map +1 -1
  17. package/dist/asset/assetmanager.js +3 -1
  18. package/dist/asset/assetmanager.js.map +1 -1
  19. package/dist/asset/model.js +346 -7
  20. package/dist/asset/model.js.map +1 -1
  21. package/dist/avatar/wardrobe.js +20 -16
  22. package/dist/avatar/wardrobe.js.map +1 -1
  23. package/dist/camera/camera.js +416 -210
  24. package/dist/camera/camera.js.map +1 -1
  25. package/dist/index.d.ts +1349 -621
  26. package/dist/index.js +6 -11
  27. package/dist/index.js.map +1 -1
  28. package/dist/material/blinn.js +1 -1
  29. package/dist/material/blinn.js.map +1 -1
  30. package/dist/material/lambert.js +1 -1
  31. package/dist/material/lambert.js.map +1 -1
  32. package/dist/material/material.js +23 -1
  33. package/dist/material/material.js.map +1 -1
  34. package/dist/material/meshmaterial.js +178 -23
  35. package/dist/material/meshmaterial.js.map +1 -1
  36. package/dist/material/mixins/albedocolor.js +4 -4
  37. package/dist/material/mixins/albedocolor.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
  39. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/lambert.js +2 -1
  41. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  42. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
  43. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  44. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
  45. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  46. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
  47. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  48. package/dist/material/mixins/lit.js +1 -1
  49. package/dist/material/mixins/lit.js.map +1 -1
  50. package/dist/material/mixins/pbr/common.js +276 -65
  51. package/dist/material/mixins/pbr/common.js.map +1 -1
  52. package/dist/material/mixins/texture.js +3 -3
  53. package/dist/material/mixins/texture.js.map +1 -1
  54. package/dist/material/mixins/vertexcolor.js +2 -2
  55. package/dist/material/mixins/vertexcolor.js.map +1 -1
  56. package/dist/material/mtoon.js +574 -0
  57. package/dist/material/mtoon.js.map +1 -0
  58. package/dist/material/pbrblueprint.js +499 -336
  59. package/dist/material/pbrblueprint.js.map +1 -1
  60. package/dist/material/pbrmr.js +118 -100
  61. package/dist/material/pbrmr.js.map +1 -1
  62. package/dist/material/pbrsg.js +1 -1
  63. package/dist/material/pbrsg.js.map +1 -1
  64. package/dist/material/shader/helper.js +324 -294
  65. package/dist/material/shader/helper.js.map +1 -1
  66. package/dist/material/subsurfaceprofile.js +812 -0
  67. package/dist/material/subsurfaceprofile.js.map +1 -0
  68. package/dist/material/unlit.js +1 -1
  69. package/dist/material/unlit.js.map +1 -1
  70. package/dist/posteffect/compositor.js +46 -11
  71. package/dist/posteffect/compositor.js.map +1 -1
  72. package/dist/posteffect/ssr.js +422 -96
  73. package/dist/posteffect/ssr.js.map +1 -1
  74. package/dist/posteffect/sss.js +1053 -0
  75. package/dist/posteffect/sss.js.map +1 -0
  76. package/dist/posteffect/taa.js +61 -60
  77. package/dist/posteffect/taa.js.map +1 -1
  78. package/dist/render/abuffer_oit.js +63 -12
  79. package/dist/render/abuffer_oit.js.map +1 -1
  80. package/dist/render/cluster_light.js +6 -5
  81. package/dist/render/cluster_light.js.map +1 -1
  82. package/dist/render/drawable.js +1 -5
  83. package/dist/render/drawable.js.map +1 -1
  84. package/dist/render/drawable_mixin.js +2 -1
  85. package/dist/render/drawable_mixin.js.map +1 -1
  86. package/dist/render/fbm_wavegenerator.js +2 -1
  87. package/dist/render/fbm_wavegenerator.js.map +1 -1
  88. package/dist/render/gerstner_wavegenerator.js +2 -1
  89. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  90. package/dist/render/globalbindgroup_allocator.js +2 -1
  91. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  92. package/dist/render/lightpass.js +110 -23
  93. package/dist/render/lightpass.js.map +1 -1
  94. package/dist/render/render_queue.js +51 -8
  95. package/dist/render/render_queue.js.map +1 -1
  96. package/dist/render/renderer.js +80 -66
  97. package/dist/render/renderer.js.map +1 -1
  98. package/dist/render/rendergraph/device_pool_allocator.js +8 -0
  99. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  100. package/dist/render/rendergraph/forward_plus_builder.js +481 -95
  101. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  102. package/dist/render/rendergraph/history_resource_manager.js +55 -0
  103. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  104. package/dist/render/rendergraph/history_resources.js +3 -1
  105. package/dist/render/rendergraph/history_resources.js.map +1 -1
  106. package/dist/render/rendergraph/types.js.map +1 -1
  107. package/dist/render/renderpass.js +10 -4
  108. package/dist/render/renderpass.js.map +1 -1
  109. package/dist/render/sky.js +31 -1
  110. package/dist/render/sky.js.map +1 -1
  111. package/dist/render/weightedblended_oit.js +23 -5
  112. package/dist/render/weightedblended_oit.js.map +1 -1
  113. package/dist/scene/basesprite.js +4 -2
  114. package/dist/scene/basesprite.js.map +1 -1
  115. package/dist/scene/batchgroup.js +3 -1
  116. package/dist/scene/batchgroup.js.map +1 -1
  117. package/dist/scene/environment.js +11 -1
  118. package/dist/scene/environment.js.map +1 -1
  119. package/dist/scene/light.js +21 -3
  120. package/dist/scene/light.js.map +1 -1
  121. package/dist/scene/mesh.js +29 -14
  122. package/dist/scene/mesh.js.map +1 -1
  123. package/dist/scene/meshdrawable.js +6 -0
  124. package/dist/scene/meshdrawable.js.map +1 -1
  125. package/dist/scene/msdftext.js +5 -2
  126. package/dist/scene/msdftext.js.map +1 -1
  127. package/dist/scene/msdftextsprite.js +5 -3
  128. package/dist/scene/msdftextsprite.js.map +1 -1
  129. package/dist/scene/particlesys.js +3 -1
  130. package/dist/scene/particlesys.js.map +1 -1
  131. package/dist/scene/scene.js +6 -5
  132. package/dist/scene/scene.js.map +1 -1
  133. package/dist/scene/terrain-cm/grass.js +4 -2
  134. package/dist/scene/terrain-cm/grass.js.map +1 -1
  135. package/dist/scene/terrain-cm/grassmaterial.js +2 -1
  136. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  137. package/dist/scene/terrain-cm/terrain-cm.js +4 -2
  138. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  139. package/dist/scene/water.js +4 -2
  140. package/dist/scene/water.js.map +1 -1
  141. package/dist/shaders/shadow.js +26 -393
  142. package/dist/shaders/shadow.js.map +1 -1
  143. package/dist/shadow/esm.js +112 -12
  144. package/dist/shadow/esm.js.map +1 -1
  145. package/dist/shadow/pcf_opt.js +2 -2
  146. package/dist/shadow/pcf_opt.js.map +1 -1
  147. package/dist/shadow/pcf_pd.js +19 -10
  148. package/dist/shadow/pcf_pd.js.map +1 -1
  149. package/dist/shadow/shader.js +58 -7
  150. package/dist/shadow/shader.js.map +1 -1
  151. package/dist/shadow/shadow_impl.js +6 -0
  152. package/dist/shadow/shadow_impl.js.map +1 -1
  153. package/dist/shadow/shadow_region.js +229 -0
  154. package/dist/shadow/shadow_region.js.map +1 -0
  155. package/dist/shadow/shadowmapper.js +67 -59
  156. package/dist/shadow/shadowmapper.js.map +1 -1
  157. package/dist/shadow/vsm.js +45 -19
  158. package/dist/shadow/vsm.js.map +1 -1
  159. package/dist/utility/blueprint/common/constants.js +8 -8
  160. package/dist/utility/blueprint/common/constants.js.map +1 -1
  161. package/dist/utility/blueprint/material/pbr.js +31 -4
  162. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  163. package/dist/utility/blueprint/material/texture.js +1 -17
  164. package/dist/utility/blueprint/material/texture.js.map +1 -1
  165. package/dist/utility/serialization/manager.js +327 -359
  166. package/dist/utility/serialization/manager.js.map +1 -1
  167. package/dist/utility/serialization/scene/animation.js +5 -2
  168. package/dist/utility/serialization/scene/animation.js.map +1 -1
  169. package/dist/utility/serialization/scene/batch.js +4 -1
  170. package/dist/utility/serialization/scene/batch.js.map +1 -1
  171. package/dist/utility/serialization/scene/camera.js +249 -54
  172. package/dist/utility/serialization/scene/camera.js.map +1 -1
  173. package/dist/utility/serialization/scene/common.js +37 -1
  174. package/dist/utility/serialization/scene/common.js.map +1 -1
  175. package/dist/utility/serialization/scene/light.js +42 -3
  176. package/dist/utility/serialization/scene/light.js.map +1 -1
  177. package/dist/utility/serialization/scene/material.js +1112 -646
  178. package/dist/utility/serialization/scene/material.js.map +1 -1
  179. package/dist/utility/serialization/scene/mesh.js +7 -4
  180. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  181. package/dist/utility/serialization/scene/node.js +31 -12
  182. package/dist/utility/serialization/scene/node.js.map +1 -1
  183. package/dist/utility/serialization/scene/particle.js +4 -1
  184. package/dist/utility/serialization/scene/particle.js.map +1 -1
  185. package/dist/utility/serialization/scene/primitive.js +3 -1
  186. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  187. package/dist/utility/serialization/scene/scene.js +18 -0
  188. package/dist/utility/serialization/scene/scene.js.map +1 -1
  189. package/dist/utility/serialization/scene/sprite.js +6 -3
  190. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  191. package/dist/utility/serialization/scene/terrain.js +5 -2
  192. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  193. package/dist/utility/serialization/scene/text.js +3 -1
  194. package/dist/utility/serialization/scene/text.js.map +1 -1
  195. package/dist/utility/serialization/scene/water.js +4 -1
  196. package/dist/utility/serialization/scene/water.js.map +1 -1
  197. package/dist/utility/textures/ltcdata.js +6 -0
  198. package/dist/utility/textures/ltcdata.js.map +1 -0
  199. package/dist/utility/textures/ltclut.js +61 -0
  200. package/dist/utility/textures/ltclut.js.map +1 -0
  201. package/dist/values.js +9 -1
  202. package/dist/values.js.map +1 -1
  203. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"vsm.js","sources":["../../src/shadow/vsm.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n TextureFormat,\r\n PBShaderExp,\r\n PBInsideFunctionScope,\r\n PBGlobalScope,\r\n FrameBuffer\r\n} from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport type { BlitType } from '../blitter';\r\nimport { Blitter } from '../blitter';\r\nimport { computeShadowMapDepth, filterShadowVSM } from '../shaders/shadow';\r\nimport type { ShadowMapParams, ShadowMapType } from './shadowmapper';\r\nimport { decode2HalfFromRGBA, decodeNormalizedFloatFromRGBA, encode2HalfToRGBA } from '../shaders/misc';\r\nimport { LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT } from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\nimport { getDevice } from '../app/api';\r\nimport type { Nullable } from '@zephyr3d/base';\r\n\r\ntype VSMImplData = {\r\n blurFramebuffer: FrameBuffer;\r\n blurFramebuffer2: FrameBuffer;\r\n};\r\n\r\nclass VSMBlitter extends Blitter {\r\n protected _phase: 'horizonal' | 'vertical';\r\n protected _packFloat: boolean;\r\n protected _blurSize: number;\r\n protected _kernelSize: number;\r\n constructor(phase: 'horizonal' | 'vertical', kernelSize: number, blurSize: number, packFloat: boolean) {\r\n super();\r\n this._phase = phase;\r\n this._blurSize = blurSize;\r\n this._kernelSize = kernelSize;\r\n this._packFloat = packFloat;\r\n }\r\n get blurSize() {\r\n return this._blurSize;\r\n }\r\n set blurSize(val) {\r\n this._blurSize = val;\r\n }\r\n get kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n if (val !== this._kernelSize) {\r\n this._kernelSize = val;\r\n this.invalidateHash();\r\n }\r\n }\r\n get packFloat() {\r\n return this._packFloat;\r\n }\r\n set packFloat(b) {\r\n if (this._packFloat !== !!b) {\r\n this._packFloat = !!b;\r\n this.invalidateHash();\r\n }\r\n }\r\n setup(scope: PBGlobalScope, type: BlitType) {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind === 'fragment') {\r\n scope.blurSize = pb.float().uniform(0);\r\n scope.blurMultiplyVec =\r\n type === 'cube'\r\n ? this._phase === 'horizonal'\r\n ? pb.vec3(1, 0, 0)\r\n : pb.vec3(0, 1, 0)\r\n : this._phase === 'horizonal'\r\n ? pb.vec2(1, 0)\r\n : pb.vec2(0, 1);\r\n scope.numBlurPixelsPerSide = pb.float((this._kernelSize + 1) / 2);\r\n scope.weight = pb.float(1 / (this._kernelSize * this._kernelSize));\r\n }\r\n }\r\n setUniforms(bindGroup: BindGroup) {\r\n bindGroup.setValue('blurSize', this._blurSize);\r\n }\r\n readTexel(\r\n scope: PBInsideFunctionScope,\r\n type: BlitType,\r\n srcTex: PBShaderExp,\r\n srcUV: PBShaderExp,\r\n srcLayer: PBShaderExp,\r\n sampleType: 'float' | 'int' | 'uint'\r\n ) {\r\n const pb = scope.$builder;\r\n const texel = super.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n if (this._packFloat) {\r\n if (this._phase === 'horizonal') {\r\n return pb.vec4(decodeNormalizedFloatFromRGBA(scope, texel));\r\n } else {\r\n return pb.vec4(decode2HalfFromRGBA(scope, texel), 0, 0);\r\n }\r\n } else {\r\n return texel;\r\n }\r\n }\r\n writeTexel(scope: PBInsideFunctionScope, type: BlitType, srcUV: PBShaderExp, texel: PBShaderExp) {\r\n const outTexel = super.writeTexel(scope, type, srcUV, texel);\r\n if (this._packFloat) {\r\n return encode2HalfToRGBA(scope, outTexel.x, outTexel.y);\r\n } else {\r\n return outTexel;\r\n }\r\n }\r\n filter(\r\n scope: PBInsideFunctionScope,\r\n type: BlitType,\r\n srcTex: PBShaderExp,\r\n srcUV: PBShaderExp,\r\n srcLayer: PBShaderExp,\r\n sampleType: 'int' | 'float' | 'uint'\r\n ) {\r\n const that = this;\r\n const pb = scope.$builder;\r\n scope.d0 = that.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n scope.mean = pb.float(0);\r\n scope.squaredMean = pb.float(0);\r\n scope.$for(pb.float('i'), 1, scope.numBlurPixelsPerSide, function () {\r\n this.d1 = that.readTexel(\r\n this,\r\n type,\r\n srcTex,\r\n pb.sub(srcUV, pb.mul(this.blurMultiplyVec, this.blurSize, this.i)),\r\n srcLayer,\r\n sampleType\r\n );\r\n this.d2 = that.readTexel(\r\n this,\r\n type,\r\n srcTex,\r\n pb.add(srcUV, pb.mul(this.blurMultiplyVec, this.blurSize, this.i)),\r\n srcLayer,\r\n sampleType\r\n );\r\n this.mean = pb.add(this.mean, this.d1.x);\r\n this.mean = pb.add(this.mean, this.d2.x);\r\n if (that._phase === 'horizonal') {\r\n this.squaredMean = pb.add(this.squaredMean, pb.mul(this.d1.x, this.d1.x));\r\n this.squaredMean = pb.add(this.squaredMean, pb.mul(this.d2.x, this.d2.x));\r\n } else {\r\n this.squaredMean = pb.add(this.squaredMean, pb.dot(this.d1.xy, this.d1.xy));\r\n this.squaredMean = pb.add(this.squaredMean, pb.dot(this.d2.xy, this.d2.xy));\r\n }\r\n });\r\n scope.mean = pb.div(scope.mean, that._kernelSize);\r\n scope.squaredMean = pb.div(scope.squaredMean, that._kernelSize);\r\n scope.stdDev = pb.sqrt(pb.max(0, pb.sub(scope.squaredMean, pb.mul(scope.mean, scope.mean))));\r\n return pb.vec4(scope.mean, scope.stdDev, 0, 1);\r\n }\r\n protected calcHash() {\r\n return `${this._phase}-${this._kernelSize}-${Number(this._packFloat)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class VSM extends ShadowImpl {\r\n /** @internal */\r\n protected _blur: boolean;\r\n /** @internal */\r\n protected _kernelSize: number;\r\n /** @internal */\r\n protected _blurSize: number;\r\n /** @internal */\r\n protected _blitterH: VSMBlitter;\r\n /** @internal */\r\n protected _blitterV: VSMBlitter;\r\n /** @internal */\r\n protected _mipmap: boolean;\r\n /** @internal */\r\n protected _darkness: number;\r\n constructor(kernelSize?: number, blurSize?: number, darkness?: number) {\r\n super();\r\n this._blur = true;\r\n this._kernelSize = kernelSize ?? 5;\r\n this._blurSize = blurSize ?? 1;\r\n this._darkness = darkness ?? 0;\r\n this._mipmap = true;\r\n this._blitterH = new VSMBlitter('horizonal', this._kernelSize, 1 / 1024, false);\r\n this._blitterV = new VSMBlitter('vertical', this._kernelSize, 1 / 1024, false);\r\n }\r\n resourceDirty() {\r\n return this._resourceDirty;\r\n }\r\n get blur() {\r\n return this._blur;\r\n }\r\n set blur(val) {\r\n if (this._blur !== !!val) {\r\n this._blur = !!val;\r\n this._resourceDirty = true;\r\n }\r\n }\r\n get mipmap() {\r\n return this._mipmap;\r\n }\r\n set mipmap(b) {\r\n if (this._mipmap !== !!b) {\r\n this._mipmap = !!b;\r\n if (this._blur) {\r\n this._resourceDirty = true;\r\n }\r\n }\r\n }\r\n get kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n this._kernelSize = val;\r\n }\r\n get blurSize() {\r\n return this._blurSize;\r\n }\r\n set blurSize(val) {\r\n this._blurSize = val;\r\n }\r\n getDepthScale() {\r\n return this._darkness;\r\n }\r\n setDepthScale(val: number) {\r\n this._darkness = val;\r\n }\r\n getType() {\r\n return 'vsm' as const;\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams) {\r\n return this._blur ? Math.ceil(((this._kernelSize + 1) / 2) * this._blurSize) : 0;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams) {\r\n const implData = shadowMapParams.implData as VSMImplData;\r\n return (\r\n implData\r\n ? implData.blurFramebuffer2.getColorAttachments()[0]\r\n : shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0]\r\n ) as ShadowMapType;\r\n }\r\n /** @internal */\r\n fetchTemporalFramebuffer(\r\n autoRelease: boolean,\r\n lightType: number,\r\n numCascades: number,\r\n width: number,\r\n height: number,\r\n colorFormat: TextureFormat,\r\n depthFormat: Nullable<TextureFormat>,\r\n mipmapping?: boolean\r\n ) {\r\n const device = getDevice();\r\n const useTextureArray = numCascades > 1 && device.type !== 'webgl';\r\n const colorAttachments = colorFormat\r\n ? useTextureArray\r\n ? [\r\n device.pool.fetchTemporalTexture2DArray(\r\n false,\r\n colorFormat,\r\n width,\r\n height,\r\n numCascades,\r\n mipmapping\r\n )\r\n ]\r\n : lightType === LIGHT_TYPE_POINT\r\n ? [device.pool.fetchTemporalTextureCube(false, colorFormat, width, mipmapping)]\r\n : [device.pool.fetchTemporalTexture2D(false, colorFormat, width, height, mipmapping)]\r\n : null;\r\n const depthAttachment = depthFormat\r\n ? useTextureArray\r\n ? device.pool.fetchTemporalTexture2DArray(false, depthFormat, width, height, numCascades, false)\r\n : device.type !== 'webgl' && lightType === LIGHT_TYPE_POINT\r\n ? device.pool.fetchTemporalTextureCube(false, depthFormat, width, false)\r\n : device.pool.fetchTemporalTexture2D(false, depthFormat, width, height, false)\r\n : null;\r\n const fb = device.pool.createTemporalFramebuffer(autoRelease, colorAttachments!, depthAttachment);\r\n if (colorAttachments) {\r\n device.pool.releaseTexture(colorAttachments[0]);\r\n }\r\n if (depthAttachment) {\r\n device.pool.releaseTexture(depthAttachment);\r\n }\r\n return fb;\r\n }\r\n doUpdateResources(shadowMapParams: ShadowMapParams) {\r\n const colorFormat = this.getShadowMapColorFormat(shadowMapParams)!;\r\n //const target = shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0].target;\r\n const shadowMapWidth = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].width;\r\n const shadowMapHeight = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].height;\r\n if (this._blur) {\r\n shadowMapParams.implData = {\r\n blurFramebuffer: this.fetchTemporalFramebuffer(\r\n true,\r\n shadowMapParams.lightType,\r\n shadowMapParams.numShadowCascades,\r\n shadowMapWidth,\r\n shadowMapHeight,\r\n colorFormat,\r\n null,\r\n false\r\n ),\r\n blurFramebuffer2: this.fetchTemporalFramebuffer(\r\n true,\r\n shadowMapParams.lightType,\r\n shadowMapParams.numShadowCascades,\r\n shadowMapWidth,\r\n shadowMapHeight,\r\n colorFormat,\r\n null,\r\n this._mipmap\r\n )\r\n };\r\n }\r\n shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);\r\n shadowMapParams.shadowMapSampler = shadowMapParams.shadowMap?.getDefaultSampler(false) ?? null;\r\n }\r\n postRenderShadowMap(shadowMapParams: ShadowMapParams) {\r\n if (this._blur) {\r\n const implData = shadowMapParams.implData as VSMImplData;\r\n this._blitterH.blurSize = this._blurSize / shadowMapParams.shadowMap!.width;\r\n this._blitterH.kernelSize = this._kernelSize;\r\n this._blitterH.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterV.blurSize = this._blurSize / shadowMapParams.shadowMap!.height;\r\n this._blitterV.kernelSize = this._kernelSize;\r\n this._blitterV.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterH.blit(\r\n shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer\r\n );\r\n this._blitterV.blit(\r\n implData.blurFramebuffer.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer2\r\n );\r\n }\r\n }\r\n getShaderHash() {\r\n return '';\r\n }\r\n getShadowMapColorFormat(_shadowMapParams: ShadowMapParams) {\r\n const device = getDevice();\r\n return device.getDeviceCaps().textureCaps.supportFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearFloatTexture\r\n ? device.type === 'webgl'\r\n ? 'rgba32f'\r\n : 'rg32f'\r\n : device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearHalfFloatTexture\r\n ? device.type === 'webgl'\r\n ? 'rgba16f'\r\n : 'rg16f'\r\n : 'rgba8unorm';\r\n }\r\n getShadowMapDepthFormat(_shadowMapParams: ShadowMapParams) {\r\n return 'd24s8' as const;\r\n }\r\n computeShadowMapDepth(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp\r\n ) {\r\n return computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap!.format);\r\n }\r\n computeShadowCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n ) {\r\n const funcNameComputeShadowCSM = 'lib_computeShadowCSM';\r\n const pb = scope.$builder;\r\n pb.func(\r\n funcNameComputeShadowCSM,\r\n [pb.vec4('shadowVertex'), pb.float('NdotL'), pb.int('split')],\r\n function () {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord,\r\n this.split\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split) as PBShaderExp;\r\n }\r\n computeShadow(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp\r\n ) {\r\n const funcNameComputeShadow = 'lib_computeShadow';\r\n const pb = scope.$builder;\r\n pb.func(funcNameComputeShadow, [pb.vec4('shadowVertex'), pb.float('NdotL')], function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {\r\n this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);\r\n this.$l.distance = pb.div(\r\n pb.length(this.dir),\r\n ShaderHelper.getLightPositionAndRangeForShadow(this).w\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.distance,\r\n this.NdotL,\r\n true\r\n );\r\n this.$l.coord = pb.vec4(this.dir, pb.sub(this.distance, this.shadowBias));\r\n this.$return(\r\n filterShadowVSM(this, shadowMapParams.lightType, shadowMapParams.shadowMap!.format, this.coord)\r\n );\r\n } else {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$if(this.inShadow, function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_SPOT) {\r\n this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;\r\n this.shadowCoord.z = ShaderHelper.nonLinearDepthToLinearNormalized(\r\n this,\r\n this.shadowCoord.z,\r\n this.nearFar\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n true\r\n );\r\n } else {\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n false\r\n );\r\n }\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL) as PBShaderExp;\r\n }\r\n useNativeShadowMap(_shadowMapParams: ShadowMapParams) {\r\n return false;\r\n }\r\n}\r\n"],"names":["VSMBlitter","Blitter","_phase","_packFloat","_blurSize","_kernelSize","phase","kernelSize","blurSize","packFloat","val","invalidateHash","b","setup","scope","type","pb","$builder","shaderKind","float","uniform","blurMultiplyVec","vec3","vec2","numBlurPixelsPerSide","weight","setUniforms","bindGroup","setValue","readTexel","srcTex","srcUV","srcLayer","sampleType","texel","vec4","decodeNormalizedFloatFromRGBA","decode2HalfFromRGBA","writeTexel","outTexel","encode2HalfToRGBA","x","y","filter","that","d0","mean","squaredMean","$for","d1","sub","mul","i","d2","add","dot","xy","div","stdDev","sqrt","max","calcHash","Number","VSM","ShadowImpl","darkness","_blur","_darkness","_mipmap","_blitterH","_blitterV","resourceDirty","_resourceDirty","blur","mipmap","getDepthScale","setDepthScale","getType","getShadowMapBorder","_shadowMapParams","Math","ceil","getShadowMap","shadowMapParams","implData","blurFramebuffer2","getColorAttachments","shadowMapFramebuffer","fetchTemporalFramebuffer","autoRelease","lightType","numCascades","width","height","colorFormat","depthFormat","mipmapping","device","getDevice","useTextureArray","colorAttachments","pool","fetchTemporalTexture2DArray","LIGHT_TYPE_POINT","fetchTemporalTextureCube","fetchTemporalTexture2D","depthAttachment","fb","createTemporalFramebuffer","releaseTexture","doUpdateResources","getShadowMapColorFormat","shadowMapWidth","shadowMapHeight","blurFramebuffer","numShadowCascades","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","format","blit","getShaderHash","getDeviceCaps","textureCaps","supportFloatColorBuffer","supportLinearFloatTexture","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","getShadowMapDepthFormat","computeShadowMapDepth","worldPos","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","func","int","$l","shadowCoord","w","inShadow","all","bvec2","bvec4","greaterThanEqual","lessThanEqual","z","shadow","$if","shadowBias","computeShadowBiasCSM","filterShadowVSM","$return","getGlobalScope","computeShadow","funcNameComputeShadow","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","distance","length","computeShadowBias","coord","LIGHT_TYPE_SPOT","nearFar","getShadowCameraParams","nonLinearDepthToLinearNormalized","useNativeShadowMap"],"mappings":"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"}
1
+ {"version":3,"file":"vsm.js","sources":["../../src/shadow/vsm.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n TextureFormat,\r\n PBShaderExp,\r\n PBInsideFunctionScope,\r\n PBGlobalScope,\r\n FrameBuffer\r\n} from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport type { BlitType } from '../blitter';\r\nimport { Blitter } from '../blitter';\r\nimport { computeShadowMapDepth, filterShadowVSM } from '../shaders/shadow';\r\nimport type { ShadowMapParams, ShadowMapType } from './shadowmapper';\r\nimport { decode2HalfFromRGBA, decodeNormalizedFloatFromRGBA, encode2HalfToRGBA } from '../shaders/misc';\r\nimport { LIGHT_TYPE_POINT, LIGHT_TYPE_SPOT } from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\nimport { getDevice } from '../app/api';\r\nimport { Vector4, type Nullable } from '@zephyr3d/base';\r\n\r\ntype VSMImplData = {\r\n blurFramebuffer: FrameBuffer;\r\n blurFramebuffer2: FrameBuffer;\r\n};\r\n\r\nclass VSMBlitter extends Blitter {\r\n protected _phase: 'horizonal' | 'vertical';\r\n protected _packFloat: boolean;\r\n protected _blurSize: number;\r\n protected _kernelSize: number;\r\n constructor(phase: 'horizonal' | 'vertical', kernelSize: number, blurSize: number, packFloat: boolean) {\r\n super();\r\n this._phase = phase;\r\n this._blurSize = blurSize;\r\n this._kernelSize = kernelSize;\r\n this._packFloat = packFloat;\r\n }\r\n get blurSize() {\r\n return this._blurSize;\r\n }\r\n set blurSize(val) {\r\n this._blurSize = val;\r\n }\r\n get kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n if (val !== this._kernelSize) {\r\n this._kernelSize = val;\r\n this.invalidateHash();\r\n }\r\n }\r\n get packFloat() {\r\n return this._packFloat;\r\n }\r\n set packFloat(b) {\r\n if (this._packFloat !== !!b) {\r\n this._packFloat = !!b;\r\n this.invalidateHash();\r\n }\r\n }\r\n setup(scope: PBGlobalScope, type: BlitType) {\r\n const pb = scope.$builder;\r\n if (pb.shaderKind === 'fragment') {\r\n scope.blurSize = pb.float().uniform(0);\r\n scope.blurMultiplyVec =\r\n type === 'cube'\r\n ? this._phase === 'horizonal'\r\n ? pb.vec3(1, 0, 0)\r\n : pb.vec3(0, 1, 0)\r\n : this._phase === 'horizonal'\r\n ? pb.vec2(1, 0)\r\n : pb.vec2(0, 1);\r\n scope.numBlurPixelsPerSide = pb.float((this._kernelSize + 1) / 2);\r\n scope.blurStep = pb.float(2 / (this._kernelSize - 1));\r\n }\r\n }\r\n setUniforms(bindGroup: BindGroup) {\r\n bindGroup.setValue('blurSize', this._blurSize);\r\n }\r\n readTexel(\r\n scope: PBInsideFunctionScope,\r\n type: BlitType,\r\n srcTex: PBShaderExp,\r\n srcUV: PBShaderExp,\r\n srcLayer: PBShaderExp,\r\n sampleType: 'float' | 'int' | 'uint'\r\n ) {\r\n const pb = scope.$builder;\r\n const texel = super.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n if (this._packFloat) {\r\n if (this._phase === 'horizonal') {\r\n return pb.vec4(decodeNormalizedFloatFromRGBA(scope, texel));\r\n } else {\r\n return pb.vec4(decode2HalfFromRGBA(scope, texel), 0, 0);\r\n }\r\n } else {\r\n return texel;\r\n }\r\n }\r\n writeTexel(scope: PBInsideFunctionScope, type: BlitType, srcUV: PBShaderExp, texel: PBShaderExp) {\r\n const outTexel = super.writeTexel(scope, type, srcUV, texel);\r\n if (this._packFloat) {\r\n return encode2HalfToRGBA(scope, outTexel.x, outTexel.y);\r\n } else {\r\n return outTexel;\r\n }\r\n }\r\n filter(\r\n scope: PBInsideFunctionScope,\r\n type: BlitType,\r\n srcTex: PBShaderExp,\r\n srcUV: PBShaderExp,\r\n srcLayer: PBShaderExp,\r\n sampleType: 'int' | 'float' | 'uint'\r\n ) {\r\n const that = this;\r\n const pb = scope.$builder;\r\n scope.d0 = that.readTexel(scope, type, srcTex, srcUV, srcLayer, sampleType);\r\n if (that._packFloat) {\r\n scope.moment1 = scope.d0.x;\r\n scope.moment2 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.d0.x) : scope.d0.y;\r\n } else {\r\n scope.moment1 = that._phase === 'horizonal' ? pb.mul(scope.d0.x, scope.d0.z) : scope.d0.x;\r\n scope.moment2 = that._phase === 'horizonal' ? pb.mul(scope.d0.y, scope.d0.z) : scope.d0.y;\r\n scope.coverage = scope.d0.z;\r\n }\r\n scope.$for(pb.float('i'), 1, scope.numBlurPixelsPerSide, function () {\r\n this.$l.blurOffset = pb.mul(this.blurMultiplyVec, this.blurSize, this.blurStep, this.i);\r\n this.d1 = that.readTexel(this, type, srcTex, pb.sub(srcUV, this.blurOffset), srcLayer, sampleType);\r\n this.d2 = that.readTexel(this, type, srcTex, pb.add(srcUV, this.blurOffset), srcLayer, sampleType);\r\n if (that._packFloat) {\r\n this.moment1 = pb.add(this.moment1, this.d1.x);\r\n this.moment1 = pb.add(this.moment1, this.d2.x);\r\n if (that._phase === 'horizonal') {\r\n this.moment2 = pb.add(this.moment2, pb.mul(this.d1.x, this.d1.x));\r\n this.moment2 = pb.add(this.moment2, pb.mul(this.d2.x, this.d2.x));\r\n } else {\r\n this.moment2 = pb.add(this.moment2, this.d1.y);\r\n this.moment2 = pb.add(this.moment2, this.d2.y);\r\n }\r\n } else {\r\n this.moment1 = pb.add(\r\n this.moment1,\r\n that._phase === 'horizonal' ? pb.mul(this.d1.x, this.d1.z) : this.d1.x\r\n );\r\n this.moment1 = pb.add(\r\n this.moment1,\r\n that._phase === 'horizonal' ? pb.mul(this.d2.x, this.d2.z) : this.d2.x\r\n );\r\n this.moment2 = pb.add(\r\n this.moment2,\r\n that._phase === 'horizonal' ? pb.mul(this.d1.y, this.d1.z) : this.d1.y\r\n );\r\n this.moment2 = pb.add(\r\n this.moment2,\r\n that._phase === 'horizonal' ? pb.mul(this.d2.y, this.d2.z) : this.d2.y\r\n );\r\n this.coverage = pb.add(this.coverage, this.d1.z);\r\n this.coverage = pb.add(this.coverage, this.d2.z);\r\n }\r\n });\r\n scope.moment1 = pb.div(scope.moment1, that._kernelSize);\r\n scope.moment2 = pb.div(scope.moment2, that._kernelSize);\r\n if (that._packFloat) {\r\n return pb.vec4(scope.moment1, scope.moment2, 0, 1);\r\n } else {\r\n scope.coverage = pb.div(scope.coverage, that._kernelSize);\r\n return pb.vec4(scope.moment1, scope.moment2, scope.coverage, 1);\r\n }\r\n }\r\n protected calcHash() {\r\n return `${this._phase}-${this._kernelSize}-${Number(this._packFloat)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class VSM extends ShadowImpl {\r\n /** @internal */\r\n protected _blur: boolean;\r\n /** @internal */\r\n protected _kernelSize: number;\r\n /** @internal */\r\n protected _blurSize: number;\r\n /** @internal */\r\n protected _blitterH: VSMBlitter;\r\n /** @internal */\r\n protected _blitterV: VSMBlitter;\r\n /** @internal */\r\n protected _mipmap: boolean;\r\n /** @internal */\r\n protected _darkness: number;\r\n constructor(kernelSize?: number, blurSize?: number, darkness?: number) {\r\n super();\r\n this._blur = true;\r\n this._kernelSize = kernelSize ?? 5;\r\n this._blurSize = blurSize ?? 1;\r\n this._darkness = darkness ?? 0;\r\n this._mipmap = true;\r\n this._blitterH = new VSMBlitter('horizonal', this._kernelSize, 1 / 1024, false);\r\n this._blitterV = new VSMBlitter('vertical', this._kernelSize, 1 / 1024, false);\r\n }\r\n resourceDirty() {\r\n return this._resourceDirty;\r\n }\r\n get blur() {\r\n return this._blur;\r\n }\r\n set blur(val) {\r\n if (this._blur !== !!val) {\r\n this._blur = !!val;\r\n this._resourceDirty = true;\r\n }\r\n }\r\n get mipmap() {\r\n return this._mipmap;\r\n }\r\n set mipmap(b) {\r\n if (this._mipmap !== !!b) {\r\n this._mipmap = !!b;\r\n if (this._blur) {\r\n this._resourceDirty = true;\r\n }\r\n }\r\n }\r\n get kernelSize() {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val) {\r\n this._kernelSize = val;\r\n }\r\n get blurSize() {\r\n return this._blurSize;\r\n }\r\n set blurSize(val) {\r\n this._blurSize = val;\r\n }\r\n getDepthScale() {\r\n return this._darkness;\r\n }\r\n setDepthScale(val: number) {\r\n this._darkness = val;\r\n }\r\n getType() {\r\n return 'vsm' as const;\r\n }\r\n getShadowMapClearColor(_shadowMapParams: ShadowMapParams) {\r\n return new Vector4(0, 0, 0, 1);\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams) {\r\n return this._blur ? Math.ceil(this._blurSize) + 1 : 0;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams) {\r\n const implData = shadowMapParams.implData as VSMImplData;\r\n return (\r\n implData\r\n ? implData.blurFramebuffer2.getColorAttachments()[0]\r\n : shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0]\r\n ) as ShadowMapType;\r\n }\r\n /** @internal */\r\n fetchTemporalFramebuffer(\r\n autoRelease: boolean,\r\n lightType: number,\r\n numCascades: number,\r\n width: number,\r\n height: number,\r\n colorFormat: TextureFormat,\r\n depthFormat: Nullable<TextureFormat>,\r\n mipmapping?: boolean\r\n ) {\r\n const device = getDevice();\r\n const useTextureArray = numCascades > 1 && device.type !== 'webgl';\r\n const colorAttachments = colorFormat\r\n ? useTextureArray\r\n ? [\r\n device.pool.fetchTemporalTexture2DArray(\r\n false,\r\n colorFormat,\r\n width,\r\n height,\r\n numCascades,\r\n mipmapping\r\n )\r\n ]\r\n : lightType === LIGHT_TYPE_POINT\r\n ? [device.pool.fetchTemporalTextureCube(false, colorFormat, width, mipmapping)]\r\n : [device.pool.fetchTemporalTexture2D(false, colorFormat, width, height, mipmapping)]\r\n : null;\r\n const depthAttachment = depthFormat\r\n ? useTextureArray\r\n ? device.pool.fetchTemporalTexture2DArray(false, depthFormat, width, height, numCascades, false)\r\n : device.type !== 'webgl' && lightType === LIGHT_TYPE_POINT\r\n ? device.pool.fetchTemporalTextureCube(false, depthFormat, width, false)\r\n : device.pool.fetchTemporalTexture2D(false, depthFormat, width, height, false)\r\n : null;\r\n const fb = device.pool.createTemporalFramebuffer(autoRelease, colorAttachments!, depthAttachment);\r\n if (colorAttachments) {\r\n device.pool.releaseTexture(colorAttachments[0]);\r\n }\r\n if (depthAttachment) {\r\n device.pool.releaseTexture(depthAttachment);\r\n }\r\n return fb;\r\n }\r\n doUpdateResources(shadowMapParams: ShadowMapParams) {\r\n const colorFormat = this.getShadowMapColorFormat(shadowMapParams)!;\r\n //const target = shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0].target;\r\n const shadowMapWidth = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].width;\r\n const shadowMapHeight = shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0].height;\r\n if (this._blur) {\r\n shadowMapParams.implData = {\r\n blurFramebuffer: this.fetchTemporalFramebuffer(\r\n true,\r\n shadowMapParams.lightType,\r\n shadowMapParams.numShadowCascades,\r\n shadowMapWidth,\r\n shadowMapHeight,\r\n colorFormat,\r\n null,\r\n false\r\n ),\r\n blurFramebuffer2: this.fetchTemporalFramebuffer(\r\n true,\r\n shadowMapParams.lightType,\r\n shadowMapParams.numShadowCascades,\r\n shadowMapWidth,\r\n shadowMapHeight,\r\n colorFormat,\r\n null,\r\n this._mipmap\r\n )\r\n };\r\n }\r\n shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);\r\n shadowMapParams.shadowMapSampler = shadowMapParams.shadowMap?.getDefaultSampler(false) ?? null;\r\n }\r\n postRenderShadowMap(shadowMapParams: ShadowMapParams) {\r\n if (this._blur) {\r\n const implData = shadowMapParams.implData as VSMImplData;\r\n this._blitterH.blurSize = this._blurSize / shadowMapParams.shadowMap!.width;\r\n this._blitterH.kernelSize = this._kernelSize;\r\n this._blitterH.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterV.blurSize = this._blurSize / shadowMapParams.shadowMap!.height;\r\n this._blitterV.kernelSize = this._kernelSize;\r\n this._blitterV.packFloat = shadowMapParams.shadowMap!.format === 'rgba8unorm';\r\n this._blitterH.blit(\r\n shadowMapParams.shadowMapFramebuffer!.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer\r\n );\r\n this._blitterV.blit(\r\n implData.blurFramebuffer.getColorAttachments()[0] as any,\r\n implData.blurFramebuffer2\r\n );\r\n }\r\n }\r\n getShaderHash() {\r\n return '';\r\n }\r\n getShadowMapColorFormat(_shadowMapParams: ShadowMapParams) {\r\n const device = getDevice();\r\n return device.getDeviceCaps().textureCaps.supportFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearFloatTexture\r\n ? 'rgba32f'\r\n : device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer &&\r\n device.getDeviceCaps().textureCaps.supportLinearHalfFloatTexture\r\n ? 'rgba16f'\r\n : 'rgba8unorm';\r\n }\r\n getShadowMapDepthFormat(_shadowMapParams: ShadowMapParams) {\r\n return 'd24s8' as const;\r\n }\r\n computeShadowMapDepth(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const depth = computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap!.format);\r\n return shadowMapParams.shadowMap!.format === 'rgba8unorm'\r\n ? depth\r\n : pb.vec4(depth.x, pb.mul(depth.x, depth.x), 1, 1);\r\n }\r\n computeShadowCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n ) {\r\n const funcNameComputeShadowCSM = 'lib_computeShadowCSM';\r\n const pb = scope.$builder;\r\n pb.func(\r\n funcNameComputeShadowCSM,\r\n [pb.vec4('shadowVertex'), pb.float('NdotL'), pb.int('split')],\r\n function () {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord,\r\n this.split\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split) as PBShaderExp;\r\n }\r\n computeShadow(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp\r\n ) {\r\n const funcNameComputeShadow = 'lib_computeShadow';\r\n const pb = scope.$builder;\r\n pb.func(funcNameComputeShadow, [pb.vec4('shadowVertex'), pb.float('NdotL')], function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {\r\n this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);\r\n this.$l.distance = pb.div(\r\n pb.length(this.dir),\r\n ShaderHelper.getLightPositionAndRangeForShadow(this).w\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.distance,\r\n this.NdotL,\r\n true\r\n );\r\n this.$l.coord = pb.vec4(this.dir, pb.sub(this.distance, this.shadowBias));\r\n this.$return(\r\n filterShadowVSM(this, shadowMapParams.lightType, shadowMapParams.shadowMap!.format, this.coord)\r\n );\r\n } else {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$if(this.inShadow, function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_SPOT) {\r\n this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;\r\n this.shadowCoord.z = ShaderHelper.nonLinearDepthToLinearNormalized(\r\n this,\r\n this.shadowCoord.z,\r\n this.nearFar\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n true\r\n );\r\n } else {\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n false\r\n );\r\n }\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowVSM(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap!.format,\r\n this.shadowCoord\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL) as PBShaderExp;\r\n }\r\n useNativeShadowMap(_shadowMapParams: ShadowMapParams) {\r\n return false;\r\n }\r\n}\r\n"],"names":["VSMBlitter","Blitter","_phase","_packFloat","_blurSize","_kernelSize","phase","kernelSize","blurSize","packFloat","val","invalidateHash","b","setup","scope","type","pb","$builder","shaderKind","float","uniform","blurMultiplyVec","vec3","vec2","numBlurPixelsPerSide","blurStep","setUniforms","bindGroup","setValue","readTexel","srcTex","srcUV","srcLayer","sampleType","texel","vec4","decodeNormalizedFloatFromRGBA","decode2HalfFromRGBA","writeTexel","outTexel","encode2HalfToRGBA","x","y","filter","that","d0","moment1","moment2","mul","z","coverage","$for","$l","blurOffset","i","d1","sub","d2","add","div","calcHash","Number","VSM","ShadowImpl","darkness","_blur","_darkness","_mipmap","_blitterH","_blitterV","resourceDirty","_resourceDirty","blur","mipmap","getDepthScale","setDepthScale","getType","getShadowMapClearColor","_shadowMapParams","Vector4","getShadowMapBorder","Math","ceil","getShadowMap","shadowMapParams","implData","blurFramebuffer2","getColorAttachments","shadowMapFramebuffer","fetchTemporalFramebuffer","autoRelease","lightType","numCascades","width","height","colorFormat","depthFormat","mipmapping","device","getDevice","useTextureArray","colorAttachments","pool","fetchTemporalTexture2DArray","LIGHT_TYPE_POINT","fetchTemporalTextureCube","fetchTemporalTexture2D","depthAttachment","fb","createTemporalFramebuffer","releaseTexture","doUpdateResources","getShadowMapColorFormat","shadowMapWidth","shadowMapHeight","blurFramebuffer","numShadowCascades","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","format","blit","getShaderHash","getDeviceCaps","textureCaps","supportFloatColorBuffer","supportLinearFloatTexture","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","getShadowMapDepthFormat","computeShadowMapDepth","worldPos","depth","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","func","int","shadowCoord","w","inShadow","all","bvec2","bvec4","greaterThanEqual","lessThanEqual","shadow","$if","shadowBias","computeShadowBiasCSM","filterShadowVSM","$return","getGlobalScope","computeShadow","funcNameComputeShadow","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","distance","length","computeShadowBias","coord","LIGHT_TYPE_SPOT","nearFar","getShadowCameraParams","xy","nonLinearDepthToLinearNormalized","useNativeShadowMap"],"mappings":"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"}
@@ -18,8 +18,8 @@ import { BaseGraphNode } from '../node.js';
18
18
  */ constructor(){
19
19
  super();
20
20
  this._value = 0;
21
- this._isUniform = false;
22
- this._paramName = '';
21
+ this._isUniform = true;
22
+ this._paramName = getParamName();
23
23
  this._outputs = [
24
24
  {
25
25
  id: 1,
@@ -250,8 +250,8 @@ import { BaseGraphNode } from '../node.js';
250
250
  0,
251
251
  0
252
252
  ];
253
- this._isUniform = false;
254
- this._paramName = '';
253
+ this._isUniform = true;
254
+ this._paramName = getParamName();
255
255
  this._outputs = [
256
256
  {
257
257
  id: 1,
@@ -549,8 +549,8 @@ import { BaseGraphNode } from '../node.js';
549
549
  0,
550
550
  0
551
551
  ];
552
- this._isUniform = false;
553
- this._paramName = '';
552
+ this._isUniform = true;
553
+ this._paramName = getParamName();
554
554
  this._outputs = [
555
555
  {
556
556
  id: 1,
@@ -918,8 +918,8 @@ import { BaseGraphNode } from '../node.js';
918
918
  0,
919
919
  0
920
920
  ];
921
- this._isUniform = false;
922
- this._paramName = '';
921
+ this._isUniform = true;
922
+ this._paramName = getParamName();
923
923
  this._outputs = [
924
924
  {
925
925
  id: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/utility/blueprint/common/constants.ts"],"sourcesContent":["import { defineProps } from '../../serialization/types';\r\nimport { getParamName } from '../common';\r\nimport { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * Constant scalar (float) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantScalarNode extends BaseGraphNode {\r\n /** The scalar float value */\r\n private _value: number;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant scalar node\r\n *\r\n * @remarks\r\n * Initializes with a value of 0 and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = 0;\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform ? this._paramName : `${Math.round(this._value * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantScalarNode,\r\n name: 'ConstantScalarNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantScalarNode, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantScalarNode, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantScalarNode, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.x = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: number) {\r\n if (val !== this._value) {\r\n this._value = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'float' for scalar output\r\n */\r\n protected getType() {\r\n return 'float';\r\n }\r\n}\r\n\r\n/**\r\n * Constant scalar (bool) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBooleanNode extends BaseGraphNode {\r\n /** The scalar boolean value */\r\n private _value: boolean;\r\n /**\r\n * Creates a new constant boolean node\r\n *\r\n * @remarks\r\n * Initializes with a value of false and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = false;\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return String(this._value);\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBooleanNode,\r\n name: 'ConstantBooleanNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBooleanNode, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBooleanNode, value) {\r\n this.x = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value) {\r\n this._value = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'bool' for scalar output\r\n */\r\n protected getType() {\r\n return 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D vector (vec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec2 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0];\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec2Node,\r\n name: 'ConstantVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec2Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec2Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.y = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D boolean vector (bvec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec2 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec2Node,\r\n name: 'ConstantBVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D vector (vec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec3 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0];\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n }`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec3Node,\r\n name: 'ConstantVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec3Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec3Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgb',\r\n type: 'rgb',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D boolean vector (bvec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec3 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(this._value[2])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec3Node,\r\n name: 'ConstantBVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D vector (vec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: number[];\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0, 0];\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n },${Math.round(this._value[3] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: number) {\r\n if (val !== this._value[3]) {\r\n this._value[3] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec4Node,\r\n name: 'ConstantVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec4Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec4Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.w = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgba',\r\n type: 'rgba',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n value.num[3] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n this.w = value.num[3];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec4';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D boolean vector (bvec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(\r\n this._value[2]\r\n )},${String(this._value[3])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: boolean) {\r\n if (!!val !== this._value[3]) {\r\n this._value[3] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec4Node,\r\n name: 'ConstantBVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.w;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.w = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec4';\r\n }\r\n}\r\n"],"names":["ConstantScalarNode","BaseGraphNode","_value","_isUniform","_paramName","_outputs","id","name","toString","Math","round","getSerializationCls","ctor","getProps","defineProps","type","get","value","bool","isUniform","set","str","paramName","slice","test","console","log","num","x","val","getParamName","dispatchEvent","ConstantBooleanNode","String","ConstantVec2Node","swizzle","y","getType","ConstantBVec2Node","ConstantVec3Node","z","ConstantBVec3Node","ConstantVec4Node","w","ConstantBVec4Node"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/utility/blueprint/common/constants.ts"],"sourcesContent":["import { defineProps } from '../../serialization/types';\r\nimport { getParamName } from '../common';\r\nimport { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * Constant scalar (float) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantScalarNode extends BaseGraphNode {\r\n /** The scalar float value */\r\n private _value: number;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant scalar node\r\n *\r\n * @remarks\r\n * Initializes with a value of 0 and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = 0;\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform ? this._paramName : `${Math.round(this._value * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantScalarNode,\r\n name: 'ConstantScalarNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantScalarNode, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantScalarNode, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantScalarNode, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.x = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: number) {\r\n if (val !== this._value) {\r\n this._value = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'float' for scalar output\r\n */\r\n protected getType() {\r\n return 'float';\r\n }\r\n}\r\n\r\n/**\r\n * Constant scalar (bool) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBooleanNode extends BaseGraphNode {\r\n /** The scalar boolean value */\r\n private _value: boolean;\r\n /**\r\n * Creates a new constant boolean node\r\n *\r\n * @remarks\r\n * Initializes with a value of false and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = false;\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return String(this._value);\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBooleanNode,\r\n name: 'ConstantBooleanNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBooleanNode, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBooleanNode, value) {\r\n this.x = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value) {\r\n this._value = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'bool' for scalar output\r\n */\r\n protected getType() {\r\n return 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D vector (vec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec2 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0];\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec2Node,\r\n name: 'ConstantVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec2Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec2Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.y = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D boolean vector (bvec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec2 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec2Node,\r\n name: 'ConstantBVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D vector (vec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec3 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0];\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n }`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec3Node,\r\n name: 'ConstantVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec3Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec3Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgb',\r\n type: 'rgb',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D boolean vector (bvec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec3 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(this._value[2])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec3Node,\r\n name: 'ConstantBVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D vector (vec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: number[];\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0, 0];\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n },${Math.round(this._value[3] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: number) {\r\n if (val !== this._value[3]) {\r\n this._value[3] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec4Node,\r\n name: 'ConstantVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec4Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec4Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.w = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgba',\r\n type: 'rgba',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n value.num[3] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n this.w = value.num[3];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec4';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D boolean vector (bvec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(\r\n this._value[2]\r\n )},${String(this._value[3])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: boolean) {\r\n if (!!val !== this._value[3]) {\r\n this._value[3] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec4Node,\r\n name: 'ConstantBVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.w;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.w = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec4';\r\n }\r\n}\r\n"],"names":["ConstantScalarNode","BaseGraphNode","_value","_isUniform","_paramName","getParamName","_outputs","id","name","toString","Math","round","getSerializationCls","ctor","getProps","defineProps","type","get","value","bool","isUniform","set","str","paramName","slice","test","console","log","num","x","val","dispatchEvent","ConstantBooleanNode","String","ConstantVec2Node","swizzle","y","getType","ConstantBVec2Node","ConstantVec3Node","z","ConstantBVec3Node","ConstantVec4Node","w","ConstantBVec4Node"],"mappings":"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"}