@anov/3d-ability 0.0.4-alpha1 → 0.0.4-alpha3

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 (124) hide show
  1. package/dist/animation/grow/grow.d.ts +10 -0
  2. package/dist/animation/grow/grow.js +95 -0
  3. package/dist/animation/grow/grow.js.map +1 -0
  4. package/dist/animation/grow/growStyle.d.ts +2 -0
  5. package/dist/animation/grow/growStyle.js +3 -0
  6. package/dist/animation/grow/growStyle.js.map +1 -0
  7. package/dist/animation/grow/index.d.ts +2 -0
  8. package/dist/animation/grow/index.js +3 -0
  9. package/dist/animation/grow/index.js.map +1 -0
  10. package/dist/animation/grow/style_down.d.ts +11 -0
  11. package/dist/animation/grow/style_down.js +91 -0
  12. package/dist/animation/grow/style_down.js.map +1 -0
  13. package/dist/animation/grow/style_up.d.ts +11 -0
  14. package/dist/animation/grow/style_up.js +94 -0
  15. package/dist/animation/grow/style_up.js.map +1 -0
  16. package/dist/animation/grow/type.d.ts +45 -0
  17. package/dist/animation/grow/type.js +42 -0
  18. package/dist/animation/grow/type.js.map +1 -0
  19. package/dist/animation/index.d.ts +1 -0
  20. package/dist/animation/index.js +2 -0
  21. package/dist/animation/index.js.map +1 -0
  22. package/dist/city/flyinglead.js +2 -0
  23. package/dist/city/flyinglead.js.map +1 -0
  24. package/dist/city/radar.js +2 -0
  25. package/dist/city/radar.js.map +1 -0
  26. package/dist/city/scanning.js +2 -0
  27. package/dist/city/scanning.js.map +1 -0
  28. package/dist/city/surroundLine.js +2 -0
  29. package/dist/city/surroundLine.js.map +1 -0
  30. package/dist/core/mouseDrawe.js +2 -1
  31. package/dist/core/mouseDrawe.js.map +1 -0
  32. package/dist/environment/cloud/cloud.js +2 -1
  33. package/dist/environment/cloud/cloud.js.map +1 -0
  34. package/dist/environment/cloud/index.js +2 -1
  35. package/dist/environment/cloud/index.js.map +1 -0
  36. package/dist/environment/rain.js +2 -1
  37. package/dist/environment/rain.js.map +1 -0
  38. package/dist/environment/{rainShder → rainShader}/index.js +2 -1
  39. package/dist/environment/rainShader/index.js.map +1 -0
  40. package/dist/environment/{rainShder → rainShader}/shader.js +2 -1
  41. package/dist/environment/rainShader/shader.js.map +1 -0
  42. package/dist/environment/shaderCloud/cloudMaterial.js +2 -1
  43. package/dist/environment/shaderCloud/cloudMaterial.js.map +1 -0
  44. package/dist/environment/shaderCloud/index.js +2 -1
  45. package/dist/environment/shaderCloud/index.js.map +1 -0
  46. package/dist/environment/shaderCloud/shader.js +2 -1
  47. package/dist/environment/shaderCloud/shader.js.map +1 -0
  48. package/dist/environment/{showShder → showShader}/index.js +2 -1
  49. package/dist/environment/showShader/index.js.map +1 -0
  50. package/dist/environment/{showShder → showShader}/shader.js +2 -1
  51. package/dist/environment/showShader/shader.js.map +1 -0
  52. package/dist/environment/sky/index.js +2 -1
  53. package/dist/environment/sky/index.js.map +1 -0
  54. package/dist/environment/snow.js +2 -1
  55. package/dist/environment/snow.js.map +1 -0
  56. package/dist/environment/sun/index.js +2 -1
  57. package/dist/environment/sun/index.js.map +1 -0
  58. package/dist/environment/utils/points.js +2 -1
  59. package/dist/environment/utils/points.js.map +1 -0
  60. package/dist/environment/volumetricCloud/cloudMaterial.js +2 -1
  61. package/dist/environment/volumetricCloud/cloudMaterial.js.map +1 -0
  62. package/dist/environment/volumetricCloud/inex.js +2 -1
  63. package/dist/environment/volumetricCloud/inex.js.map +1 -0
  64. package/dist/helper/view/index.js +2 -1
  65. package/dist/helper/view/index.js.map +1 -0
  66. package/dist/helper/view/utils.js +2 -1
  67. package/dist/helper/view/utils.js.map +1 -0
  68. package/dist/index.d.ts +5 -3
  69. package/dist/index.js +7 -4
  70. package/dist/index.js.map +1 -0
  71. package/dist/material/pristineGridMaterial/index.js +2 -1
  72. package/dist/material/pristineGridMaterial/index.js.map +1 -0
  73. package/dist/material/pristineGridMaterial/shader/fragment.js +2 -1
  74. package/dist/material/pristineGridMaterial/shader/fragment.js.map +1 -0
  75. package/dist/material/pristineGridMaterial/shader/vertex.js +2 -1
  76. package/dist/material/pristineGridMaterial/shader/vertex.js.map +1 -0
  77. package/dist/poi/assets.d.ts +2 -0
  78. package/dist/poi/assets.js +3 -0
  79. package/dist/poi/assets.js.map +1 -0
  80. package/dist/poi/index.d.ts +28 -0
  81. package/dist/poi/index.js +75 -0
  82. package/dist/poi/index.js.map +1 -0
  83. package/dist/poi/poiDom.d.ts +2 -0
  84. package/dist/poi/poiDom.js +36 -0
  85. package/dist/poi/poiDom.js.map +1 -0
  86. package/dist/postEffects/bloomPass.js +2 -1
  87. package/dist/postEffects/bloomPass.js.map +1 -0
  88. package/dist/postEffects/index.js +2 -1
  89. package/dist/postEffects/index.js.map +1 -0
  90. package/dist/postEffects/outlinePass.js +2 -1
  91. package/dist/postEffects/outlinePass.js.map +1 -0
  92. package/dist/utils/index.js +2 -1
  93. package/dist/utils/index.js.map +1 -0
  94. package/package.json +2 -2
  95. package/dist/city/flyinglead.d.ts +0 -0
  96. package/dist/city/radar.d.ts +0 -0
  97. package/dist/city/scanning.d.ts +0 -0
  98. package/dist/city/surroundLine.d.ts +0 -0
  99. package/dist/core/mouseDrawe.d.ts +0 -2
  100. package/dist/environment/cloud/cloud.d.ts +0 -1
  101. package/dist/environment/cloud/index.d.ts +0 -7
  102. package/dist/environment/rain.d.ts +0 -20
  103. package/dist/environment/rainShder/index.d.ts +0 -8
  104. package/dist/environment/rainShder/shader.d.ts +0 -26
  105. package/dist/environment/shaderCloud/cloudMaterial.d.ts +0 -10
  106. package/dist/environment/shaderCloud/index.d.ts +0 -2
  107. package/dist/environment/shaderCloud/shader.d.ts +0 -5
  108. package/dist/environment/showShder/index.d.ts +0 -8
  109. package/dist/environment/showShder/shader.d.ts +0 -28
  110. package/dist/environment/sky/index.d.ts +0 -12
  111. package/dist/environment/snow.d.ts +0 -16
  112. package/dist/environment/sun/index.d.ts +0 -13
  113. package/dist/environment/utils/points.d.ts +0 -26
  114. package/dist/environment/volumetricCloud/cloudMaterial.d.ts +0 -3
  115. package/dist/environment/volumetricCloud/inex.d.ts +0 -8
  116. package/dist/helper/view/index.d.ts +0 -40
  117. package/dist/helper/view/utils.d.ts +0 -6
  118. package/dist/material/pristineGridMaterial/index.d.ts +0 -20
  119. package/dist/material/pristineGridMaterial/shader/fragment.d.ts +0 -2
  120. package/dist/material/pristineGridMaterial/shader/vertex.d.ts +0 -2
  121. package/dist/postEffects/bloomPass.d.ts +0 -5
  122. package/dist/postEffects/index.d.ts +0 -11
  123. package/dist/postEffects/outlinePass.d.ts +0 -16
  124. package/dist/utils/index.d.ts +0 -1
@@ -57,4 +57,5 @@ var createCloud = function createCloud(range) {
57
57
  group.add(mesh2);
58
58
  return group;
59
59
  };
60
- export default createCloud;
60
+ export default createCloud;
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BufferGeometryUtils","Fog","Group","LinearMipMapLinearFilter","Mesh","PlaneGeometry","ShaderMaterial","TextureLoader","cloudBase64","vertexShader","fragmentShader","createCloud","range","density","rangeX","rangeY","x","y","geometries","texture","load","magFilter","minFilter","fog","material","uniforms","map","value","fogColor","color","fogNear","near","fogFar","far","depthWrite","depthTest","transparent","i","plane","translate","Math","random","scale","push","group","mergedGeometry","mergeGeometries","mesh","add","mesh2","position","z"],"sources":["../../../src/environment/cloud/index.ts"],"sourcesContent":["import { BufferGeometryUtils, Fog, Group, LinearMipMapLinearFilter, Mesh, PlaneGeometry, ShaderMaterial, TextureLoader } from '@anov/3d-core'\nimport { cloudBase64 } from './cloud'\n\nconst vertexShader = `\n varying vec2 vUv; \n void main() { \n vUv = uv; \n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n`\n\nconst fragmentShader = `\n uniform sampler2D map; \n uniform vec3 fogColor; \n uniform float fogNear; \n uniform float fogFar; \n varying vec2 vUv; \n void main() {\n float depth = gl_FragCoord.z / gl_FragCoord.w; \n float fogFactor = smoothstep( fogNear, fogFar, depth ); gl_FragColor = texture2D(\n map, vUv ); \n gl_FragColor.w *= pow( gl_FragCoord.z, 20.0 ); \n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor ); \n }\n`\n\ninterface RangePrarams {\n x?: number\n y?: number\n}\n\nconst createCloud = (range?: RangePrarams, density = 8000) => {\n let rangeX = 1000\n let rangeY = 200\n\n if (range) {\n rangeX = (range.x ?? 1000)\n rangeY = (range.y ?? 200)\n }\n\n const geometries = []\n const texture = new TextureLoader().load(cloudBase64)\n\n // @ts-ignore\n texture.magFilter = LinearMipMapLinearFilter\n texture.minFilter = LinearMipMapLinearFilter\n\n const fog = new Fog(0x4584B4, -100, 3000)\n\n const material = new ShaderMaterial({\n uniforms: {\n map: {\n value: texture,\n },\n fogColor: {\n value: fog.color,\n },\n fogNear: {\n value: fog.near,\n },\n fogFar: {\n value: fog.far,\n },\n },\n vertexShader,\n fragmentShader,\n depthWrite: false,\n depthTest: false,\n transparent: true,\n })\n\n // cloud density\n for (let i = 0; i < density; i++) {\n const plane = new PlaneGeometry(64, 64)\n\n plane.translate(Math.random() * rangeX - 500, -Math.random() * Math.random() * rangeY - 15, i)\n // plane.rotateZ(Math.random() * Math.PI / 2)\n plane.scale(Math.random() * Math.random() * 1.1 + 0.5, Math.random() * Math.random() * 1.1 + 0.5, 1)\n geometries.push(plane)\n }\n\n const group = new Group()\n const mergedGeometry = BufferGeometryUtils.mergeGeometries(geometries, false)\n const mesh = new Mesh(mergedGeometry, material)\n group.add(mesh)\n\n const mesh2 = new Mesh(mergedGeometry, material)\n mesh.position.z = -1000\n group.add(mesh2)\n\n return group\n}\n\nexport default createCloud"],"mappings":"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"}
@@ -41,4 +41,5 @@ export var createRain = function createRain() {
41
41
  }
42
42
  };
43
43
  return [start, stop];
44
- };
44
+ };
45
+ //# sourceMappingURL=rain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createRain","size","range","speed","opacity","count","points","url","removeFrame","start","scene","add","point","animation","position","y","speedY","stop","remove"],"sources":["../../src/environment/rain.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateRainReturn = [\n () => void,\n () => void,\n]\n\nexport interface SpeedType {\n x?: number\n y?: number\n z?: number\n}\n\n/**\n * create rain\n * @param size 雨滴大小\n * @param range 降雨范围\n * @param speed 降雨速度\n * @param opacity 雨滴透明度\n * @param count 雨滴密度\n * @returns\n */\nexport const createRain = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n range,\n count,\n speed,\n url: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAOeSURBVHic7Zq9jxRlHMc/z8yz87K3nsCdmOMUuAMT9GJhYgyxk8IYG2sJMTQUUECBuU4aWhusoKUAEhttjH+AEopLLCxQCXLqeUi84y7L7t687lDMjsdL4Nh7npk1eeZbTZ7sfp9v9vns7/nNMyMYkRZu338ZYIeXzQEcnJ64Pooc1igm/T9JjmriA1Ot4wANS+wdDNUEjEJiVBP3gvi3PIDYAeB7cvcochhPQOU14Kc7a/sBfMd+AyAbjP++vLEPYHaP/0eVeWoCqp5wZtKbB8g2Fx+AiXH79ODybJV5jCeg8l0gTtIMQNqP//ZR0gfAbdiVZjKegMpqwHq7Mw9Pr3whR+bjK53oM4DJlnO5ilzGE1DZ/y2K0wigIa3G8z7XC9NFgDFPzlQQqyag9BrwoBudgq1XvlDTtfcD/PLX6kcAh16f+L60cNQElF8DekHcA/Bd6Q/zvW6Y3ARoeY23yshVyHgCSqsBq534LAy/8oXGXPtNgD9Xwk8A9k663+pLtynjCSitBoRx3vMXHd52tREm/wI0vUYpJ0bGE6C9Bqx1ogsAjrSK+30lynzHfgVgtROcAZhoeReUAj4h4wnQVgO++u6WC3Dyw9kAnn3Xt12l/RwoaVta61ZNgC6jdje4BNDynRMAQohSdpj1TnAeYOdL/jkdfjUBuoyeddanW0GUAOC7DS3ZjSdAuQ9YeRCdhPJXvpDn5JH/vt/7FGB6V/Oqil9NgKpBy7OO6AjyosqyvB/YOSY/HgzVBKhImQCBeFtHkBeeb9BeWMJ+T4dfTYAGjwMaPIaWEMzq8DGeAOVuKivK8oikes9hPAHKNaB4rq969jes4uKAQFE1AaoG/X52d3A5peo1jLJ+tqTDpyZA1UAI6+bgslIC+li/6vCpCVA1iNP0RwBH2h9AeWeBhYq+I4rjGzr8agJUDW4tta8BvHNw1xfqcbaWEHn3ut5LvtHhZzwB2v6v3SBZBGi69j5dno+qaPuCKF3O55HTOnyNJ0Db0+G1bvQ5QNP1vs5H9G4GYsDASntD69vkxhOgfc/uhfF1AK8hD8Nm1d6uin0/iPs3AJqufF8146MyngDtb4icurJ0BODi0ddWAVznv7fEhiUh7/iStJv7/lDK8wfjCSitb19Y7E4BzE27CwCetIu7xa3mzAA2wmQZ4M7d8F2AuZnWP2XkrAmoaqJ77XAeYNyVxwCkzWNPlJKUnwHaYXwZ4NVx78sqchlPwENsoeFfLBJUzgAAAABJRU5ErkJggg==',\n })\n\n let removeFrame: (() => void) | null = null\n\n const start = () => {\n globalObjectManage.scene!.add(points.point!)\n\n removeFrame = useframe(() => {\n points.animation(\n (position: AVector3) => {\n position.y -= position.speedY\n\n if (position.y <= 0)\n position.y = 1000 / 2\n },\n )\n })\n }\n\n const stop = () => {\n if (removeFrame) {\n removeFrame()\n globalObjectManage.scene!.remove(points.point!)\n }\n }\n\n return [\n start,\n stop,\n ] as CreateRainReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAEvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAahB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAA8E;EAAA,IAA1EC,IAAI,uEAAG,EAAE;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAAA,IAAEC,KAAiB;EAAA,IAAEC,OAAO,uEAAG,GAAG;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAC9F,IAAMC,MAAM,GAAG,IAAIR,iBAAiB,CAAC;IACnCG,IAAI,EAAJA,IAAI;IACJG,OAAO,EAAPA,OAAO;IACPF,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLF,KAAK,EAALA,KAAK;IACLI,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAE3C,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBb,kBAAkB,CAACc,KAAK,CAAEC,GAAG,CAACL,MAAM,CAACM,KAAK,CAAE;IAE5CJ,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACO,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAE7B,IAAIF,QAAQ,CAACC,CAAC,IAAI,CAAC,EACjBD,QAAQ,CAACC,CAAC,GAAG,IAAI,GAAG,CAAC;MACzB,CAAC,CACF;IACH,CAAC,CAAC;EACJ,CAAC;EAED,IAAME,IAAI,GAAG,SAAPA,IAAI,GAAS;IACjB,IAAIT,WAAW,EAAE;MACfA,WAAW,EAAE;MACbZ,kBAAkB,CAACc,KAAK,CAAEQ,MAAM,CAACZ,MAAM,CAACM,KAAK,CAAE;IACjD;EACF,CAAC;EAED,OAAO,CACLH,KAAK,EACLQ,IAAI,CACL;AACH,CAAC"}
@@ -67,4 +67,5 @@ var Snow = /*#__PURE__*/function () {
67
67
  }]);
68
68
  return Snow;
69
69
  }();
70
- export default Snow;
70
+ export default Snow;
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Mesh","PlaneGeometry","ShaderMaterial","Vector2","use","rainShader","Snow","initGeometry","useScene","scene","camera","Error","geometry","uniforms","iResolution","value","window","innerWidth","innerHeight","material","side","depthWrite","transparent","blending","vertexShader","fragmentShader","i","mesh","position","z","scale","x","Math","random","y","add","meshes","push","useframe","iTime","forEach","lookAt","visible"],"sources":["../../../src/environment/rainShader/index.ts"],"sourcesContent":["import { Mesh, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport rainShader from './shader'\n\nclass Snow {\n private meshes: Mesh[] = []\n\n constructor() {\n this.initGeometry()\n }\n\n private initGeometry() {\n const { scene, camera } = use.useScene()\n\n if (!scene && !camera)\n throw new Error('please init scene and camera first')\n\n const geometry = new PlaneGeometry(10000, 10000)\n\n // @ts-ignore\n rainShader.uniforms.iResolution.value = new Vector2(window.innerWidth, window.innerHeight)\n\n const material = new ShaderMaterial({\n uniforms: rainShader.uniforms,\n side: 2,\n depthWrite: false,\n transparent: true,\n blending: 2,\n vertexShader: rainShader.vertexShader,\n fragmentShader: rainShader.fragmentShader,\n })\n\n for (let i = 0; i < 10; i++) {\n const mesh = new Mesh(geometry, material)\n // const mesh = new Mesh(geometry, new MeshBasicMaterial({ color: new Color(Math.random() * 0xFFFFFF) }))\n mesh.position.z = -10000 + i * 1000\n mesh.scale.x = Math.random() * 0.5 + 1\n mesh.scale.y = Math.random() * 0.5 + 1\n\n scene!.add(mesh)\n\n this.meshes.push(mesh)\n }\n\n use.useframe(() => {\n rainShader.uniforms.iTime.value += 0.01\n\n this.meshes.forEach((mesh) => {\n mesh.lookAt(camera!.position.x, camera!.position.y * 0.1, camera!.position.z)\n })\n })\n }\n\n stop() {\n this.meshes.forEach((mesh) => {\n mesh.visible = false\n })\n }\n\n continue() {\n this.meshes.forEach((mesh) => {\n mesh.visible = true\n })\n }\n}\n\nexport default Snow"],"mappings":";;;;;;;AAAA,SAASA,IAAI,EAAEC,aAAa,EAAEC,cAAc,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AACjF,OAAOC,UAAU;AAAgB,IAE3BC,IAAI;EAGR,gBAAc;IAAA;IAAA,gCAFW,EAAE;IAGzB,IAAI,CAACC,YAAY,EAAE;EACrB;EAAC;IAAA;IAAA,OAED,wBAAuB;MAAA;MACrB,oBAA0BH,GAAG,CAACI,QAAQ,EAAE;QAAhCC,KAAK,iBAALA,KAAK;QAAEC,MAAM,iBAANA,MAAM;MAErB,IAAI,CAACD,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;MAEvD,IAAMC,QAAQ,GAAG,IAAIX,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;;MAEhD;MACAI,UAAU,CAACQ,QAAQ,CAACC,WAAW,CAACC,KAAK,GAAG,IAAIZ,OAAO,CAACa,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW,CAAC;MAE1F,IAAMC,QAAQ,GAAG,IAAIjB,cAAc,CAAC;QAClCW,QAAQ,EAAER,UAAU,CAACQ,QAAQ;QAC7BO,IAAI,EAAE,CAAC;QACPC,UAAU,EAAE,KAAK;QACjBC,WAAW,EAAE,IAAI;QACjBC,QAAQ,EAAE,CAAC;QACXC,YAAY,EAAEnB,UAAU,CAACmB,YAAY;QACrCC,cAAc,EAAEpB,UAAU,CAACoB;MAC7B,CAAC,CAAC;MAEF,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;QAC3B,IAAMC,IAAI,GAAG,IAAI3B,IAAI,CAACY,QAAQ,EAAEO,QAAQ,CAAC;QACzC;QACAQ,IAAI,CAACC,QAAQ,CAACC,CAAC,GAAG,CAAC,KAAK,GAAGH,CAAC,GAAG,IAAI;QACnCC,IAAI,CAACG,KAAK,CAACC,CAAC,GAAGC,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QACtCN,IAAI,CAACG,KAAK,CAACI,CAAC,GAAGF,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QAEtCxB,KAAK,CAAE0B,GAAG,CAACR,IAAI,CAAC;QAEhB,IAAI,CAACS,MAAM,CAACC,IAAI,CAACV,IAAI,CAAC;MACxB;MAEAvB,GAAG,CAACkC,QAAQ,CAAC,YAAM;QACjBjC,UAAU,CAACQ,QAAQ,CAAC0B,KAAK,CAACxB,KAAK,IAAI,IAAI;QAEvC,KAAI,CAACqB,MAAM,CAACI,OAAO,CAAC,UAACb,IAAI,EAAK;UAC5BA,IAAI,CAACc,MAAM,CAAC/B,MAAM,CAAEkB,QAAQ,CAACG,CAAC,EAAErB,MAAM,CAAEkB,QAAQ,CAACM,CAAC,GAAG,GAAG,EAAExB,MAAM,CAAEkB,QAAQ,CAACC,CAAC,CAAC;QAC/E,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,gBAAO;MACL,IAAI,CAACO,MAAM,CAACI,OAAO,CAAC,UAACb,IAAI,EAAK;QAC5BA,IAAI,CAACe,OAAO,GAAG,KAAK;MACtB,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAAW;MACT,IAAI,CAACN,MAAM,CAACI,OAAO,CAAC,UAACb,IAAI,EAAK;QAC5BA,IAAI,CAACe,OAAO,GAAG,IAAI;MACrB,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,eAAepC,IAAI"}
@@ -25,4 +25,5 @@ var rainShader = {
25
25
  vertexShader: /* glsl */"\n varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",
26
26
  fragmentShader: /* glsl */"\n\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float radian;\n uniform float rainSpeed;\n uniform vec3 rainColor;\n varying highp vec2 vUv;\n\n float random(float t){\n return fract(sin(t*745.523)*7894.552);\n }\n \n\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n\n //vec2 uv = gl_FragCoord.xy/iResolution.xy;\n vec2 uv =vUv;\n mat2 r=mat2(cos(radian),-sin(radian),sin(radian),cos(radian));\n uv*=r;\n uv.y += iTime*2.0*rainSpeed;\n uv.xy *= 500.0;///\u96E8\u70B9\u4E2A\u6570\n uv.y += random(floor(uv.x))*500.0;\n //vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.2)-1.7)), 0.0,1.0))*rainColor;///1.7\u90A3\u4E2A\u662F\u96E8\u70B9\u6D53\u5EA60.2\u90A3\u4E2A\u662F\u96E8\u6EF4\u957F\u5EA6\n vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.09)-1.90)), 0.0,1.0))*rainColor;\n gl_FragColor = vec4(col+rain,0.7);\n }"
27
27
  };
28
- export default rainShader;
28
+ export default rainShader;
29
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Color","rainShader","uniforms","tDiffuse","value","iResolution","iTime","radian","rainSpeed","rainColor","vertexShader","fragmentShader"],"sources":["../../../src/environment/rainShader/shader.ts"],"sourcesContent":["import { Color } from '@anov/3d-core'\n\n// source from https://www.shadertoy.com/view/wd2GDG\nconst rainShader = {\n uniforms: {\n tDiffuse: { value: null },\n iResolution: { value: null },\n iTime: { value: 0 },\n radian: { value: 0 },\n rainSpeed: { value: 0.1 },\n rainColor: { value: new Color(1, 1, 1) },\n },\n\n vertexShader: /* glsl */`\n varying highp vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }`,\n\n fragmentShader: /* glsl */`\n\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float radian;\n uniform float rainSpeed;\n uniform vec3 rainColor;\n varying highp vec2 vUv;\n\n float random(float t){\n return fract(sin(t*745.523)*7894.552);\n }\n \n\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n\n //vec2 uv = gl_FragCoord.xy/iResolution.xy;\n vec2 uv =vUv;\n mat2 r=mat2(cos(radian),-sin(radian),sin(radian),cos(radian));\n uv*=r;\n uv.y += iTime*2.0*rainSpeed;\n uv.xy *= 500.0;///雨点个数\n uv.y += random(floor(uv.x))*500.0;\n //vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.2)-1.7)), 0.0,1.0))*rainColor;///1.7那个是雨点浓度0.2那个是雨滴长度\n vec3 rain=vec3(clamp(1.0-length(vec2(cos(uv.x*3.1415 ), sin(uv.y*0.09)-1.90)), 0.0,1.0))*rainColor;\n gl_FragColor = vec4(col+rain,0.7);\n }`,\n\n}\nexport default rainShader\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,eAAe;;AAErC;AACA,IAAMC,UAAU,GAAG;EACjBC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IACzBC,WAAW,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IAC5BE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAE,CAAC;IACnBG,MAAM,EAAE;MAAEH,KAAK,EAAE;IAAE,CAAC;IACpBI,SAAS,EAAE;MAAEJ,KAAK,EAAE;IAAI,CAAC;IACzBK,SAAS,EAAE;MAAEL,KAAK,EAAE,IAAIJ,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAAE;EACzC,CAAC;EAEDU,YAAY,EAAE,yMAKN;EAERC,cAAc,EAAE;AA8BlB,CAAC;AACD,eAAeV,UAAU"}
@@ -36,4 +36,5 @@ var CloudMaterial = /*#__PURE__*/_createClass(function CloudMaterial(opts) {
36
36
  transparent: true
37
37
  });
38
38
  });
39
- export default CloudMaterial;
39
+ export default CloudMaterial;
40
+ //# sourceMappingURL=cloudMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ShaderMaterial","CloudShader","CloudMaterial","opts","material","uniforms","iResolution","value","iTime","cloudDensity","skyAlpha","opacity","cloudscale","density","side","vertexShader","fragmentShader","depthWrite","transparent"],"sources":["../../../src/environment/shaderCloud/cloudMaterial.ts"],"sourcesContent":["import { ShaderMaterial } from '@anov/3d-core'\nimport CloudShader from './shader'\n\ntype CloudMaterialOptions = {\n opacity?: number\n density?: number\n}\n\nclass CloudMaterial {\n public material: ShaderMaterial\n constructor(opts: CloudMaterialOptions) {\n this.material = new ShaderMaterial({\n uniforms: {\n iResolution: {\n value: null,\n },\n iTime: {\n value: 0,\n },\n cloudDensity: {\n value: 0.8,\n },\n skyAlpha: {\n value: opts.opacity ?? 0.0,\n },\n cloudscale: {\n value: opts.density ?? 5.4,\n },\n },\n side: 2,\n vertexShader: CloudShader.vertexShader,\n fragmentShader: CloudShader.fragmentShader,\n depthWrite: false,\n transparent: true,\n })\n }\n}\n\nexport default CloudMaterial"],"mappings":";;;;;;;AAAA,SAASA,cAAc,QAAQ,eAAe;AAC9C,OAAOC,WAAW;AAAgB,IAO5BC,aAAa,6BAEjB,uBAAYC,IAA0B,EAAE;EAAA;EAAA;EAAA;EACtC,IAAI,CAACC,QAAQ,GAAG,IAAIJ,cAAc,CAAC;IACjCK,QAAQ,EAAE;MACRC,WAAW,EAAE;QACXC,KAAK,EAAE;MACT,CAAC;MACDC,KAAK,EAAE;QACLD,KAAK,EAAE;MACT,CAAC;MACDE,YAAY,EAAE;QACZF,KAAK,EAAE;MACT,CAAC;MACDG,QAAQ,EAAE;QACRH,KAAK,mBAAEJ,IAAI,CAACQ,OAAO,yDAAI;MACzB,CAAC;MACDC,UAAU,EAAE;QACVL,KAAK,mBAAEJ,IAAI,CAACU,OAAO,yDAAI;MACzB;IACF,CAAC;IACDC,IAAI,EAAE,CAAC;IACPC,YAAY,EAAEd,WAAW,CAACc,YAAY;IACtCC,cAAc,EAAEf,WAAW,CAACe,cAAc;IAC1CC,UAAU,EAAE,KAAK;IACjBC,WAAW,EAAE;EACf,CAAC,CAAC;AACJ,CAAC;AAGH,eAAehB,aAAa"}
@@ -42,4 +42,5 @@ var createSkyCloud = function createSkyCloud(opacity, density) {
42
42
  };
43
43
  return [setCloudDensity, clear];
44
44
  };
45
- export default createSkyCloud;
45
+ export default createSkyCloud;
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ModelLoader","use","Materialcloud","loader","createSkyCloud","opacity","density","useScene","scene","isNeedUpdate","currentDensity","Error","cloudModel","loadGLTF","undefined","gltf","model","scale","set","children","material","add","useframe","uniforms","iTime","value","setCloudDensity","clear","removeFromParent"],"sources":["../../../src/environment/shaderCloud/index.ts"],"sourcesContent":["import type { Group } from '@anov/3d-core'\nimport { ModelLoader, use } from '@anov/3d-core'\nimport Materialcloud from './cloudMaterial'\n\nconst loader = new ModelLoader()\n\nconst createSkyCloud = (opacity?: number, density?: number) => {\n const { scene } = use.useScene()\n\n let isNeedUpdate = false\n let currentDensity = 5.4\n\n if (!scene)\n throw new Error('scene is not defined')\n\n let cloudModel: Group\n\n loader.loadGLTF('http://182.92.210.127:8009/image/skySphereMesh.glb', false, false, undefined,\n (gltf) => {\n const model = gltf.scene\n cloudModel = model as Group\n\n model.scale.set(10000, 15000, 10000)\n\n // @ts-ignore\n model.children[0].material = new Materialcloud({\n opacity: opacity ?? 0.6,\n density: density ?? 5.4,\n\n }).material\n\n scene.add(model)\n\n use.useframe(() => {\n isNeedUpdate && (\n // @ts-ignore\n model.children[0].material = new Materialcloud({\n opacity: opacity ?? 0.6,\n density: currentDensity,\n\n }).material\n )\n\n // @ts-ignore\n model.children[0].material.uniforms.iTime.value += 0.03\n\n isNeedUpdate = false\n })\n return gltf\n })\n\n const setCloudDensity = (density?: number) => {\n isNeedUpdate = true\n currentDensity = density ?? currentDensity\n }\n\n const clear = () => {\n cloudModel && cloudModel.removeFromParent()\n }\n\n return [setCloudDensity, clear] as [typeof setCloudDensity, typeof clear]\n}\n\nexport default createSkyCloud"],"mappings":"AACA,SAASA,WAAW,EAAEC,GAAG,QAAQ,eAAe;AAChD,OAAOC,aAAa;AAEpB,IAAMC,MAAM,GAAG,IAAIH,WAAW,EAAE;AAEhC,IAAMI,cAAc,GAAG,SAAjBA,cAAc,CAAIC,OAAgB,EAAEC,OAAgB,EAAK;EAC7D,oBAAkBL,GAAG,CAACM,QAAQ,EAAE;IAAxBC,KAAK,iBAALA,KAAK;EAEb,IAAIC,YAAY,GAAG,KAAK;EACxB,IAAIC,cAAc,GAAG,GAAG;EAExB,IAAI,CAACF,KAAK,EACR,MAAM,IAAIG,KAAK,CAAC,sBAAsB,CAAC;EAEzC,IAAIC,UAAiB;EAErBT,MAAM,CAACU,QAAQ,CAAC,oDAAoD,EAAE,KAAK,EAAE,KAAK,EAAEC,SAAS,EAC3F,UAACC,IAAI,EAAK;IACR,IAAMC,KAAK,GAAGD,IAAI,CAACP,KAAK;IACxBI,UAAU,GAAGI,KAAc;IAE3BA,KAAK,CAACC,KAAK,CAACC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;IAEpC;IACAF,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,GAAG,IAAIlB,aAAa,CAAC;MAC7CG,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,GAAG;MACvBC,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI;IAEtB,CAAC,CAAC,CAACc,QAAQ;IAEXZ,KAAK,CAACa,GAAG,CAACL,KAAK,CAAC;IAEhBf,GAAG,CAACqB,QAAQ,CAAC,YAAM;MACjBb,YAAY;MACV;MACAO,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,GAAG,IAAIlB,aAAa,CAAC;QAC7CG,OAAO,EAAEA,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,GAAG;QACvBC,OAAO,EAAEI;MAEX,CAAC,CAAC,CAACU,QAAQ,CACZ;;MAED;MACAJ,KAAK,CAACG,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACG,QAAQ,CAACC,KAAK,CAACC,KAAK,IAAI,IAAI;MAEvDhB,YAAY,GAAG,KAAK;IACtB,CAAC,CAAC;IACF,OAAOM,IAAI;EACb,CAAC,CAAC;EAEJ,IAAMW,eAAe,GAAG,SAAlBA,eAAe,CAAIpB,OAAgB,EAAK;IAC5CG,YAAY,GAAG,IAAI;IACnBC,cAAc,GAAGJ,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAII,cAAc;EAC5C,CAAC;EAED,IAAMiB,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBf,UAAU,IAAIA,UAAU,CAACgB,gBAAgB,EAAE;EAC7C,CAAC;EAED,OAAO,CAACF,eAAe,EAAEC,KAAK,CAAC;AACjC,CAAC;AAED,eAAevB,cAAc"}
@@ -3,4 +3,5 @@ var CloudShader = {
3
3
  vertexShader: /* glsl */"\n\n varying highp vec2 vUv;\n\n void main() {\n\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }",
4
4
  fragmentShader: /* glsl */"\nprecision highp float;\nuniform float skyAlpha;\nuniform float iTime;\nuniform float cloudDensity;\nuniform float cloudscale;\nconst float speed = 0.02;\nconst float clouddark = 0.5;\nconst float cloudlight = 0.3;\nconst float cloudcover = 0.2;\nconst float cloudalpha = 8.0;\nconst float skytint = 0.5;\nconst vec3 skycolour1 = vec3(0.2, 0.4, 0.6);\nconst vec3 skycolour2 = vec3(0.4, 0.7, 1.0);\n\nconst mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\nconst vec2 iResolution = vec2(0.001,0.001);\nvarying highp vec2 vUv;\n\nvec2 hash( vec2 p ) {\np = vec2(dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)));\nreturn -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p ) {\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\tvec2 i = floor(p + (p.x+p.y)*K1);\n vec2 a = p - i + (i.x+i.y)*K2;\n vec2 o = (a.x>a.y) ? vec2(1.0,0.0) : vec2(0.0,1.0); //vec2 of = 0.5 + 0.5*vec2(sign(a.x-a.y), sign(a.y-a.x));\n vec2 b = a - o + K2;\n\tvec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max(0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n\tvec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot(n, vec3(70.0));\n}\n\nfloat fbm(vec2 n) {\n\tfloat total = 0.0, amplitude = 0.1;\n\tfor (int i = 0; i < 7; i++) {\n\t\ttotal += noise(n) * amplitude;\n\t\tn = m * n;\n\t\tamplitude *= 0.4;\n\t}\n\treturn total*1.0;\n}\n\n// -----------------------------------------------\nfloat distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n}\nvoid mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n // vec2 p = fragCoord.xy / iResolution.xy;\n vec2 p = vUv*1.;\n\tvec2 uv = p*vec2(iResolution.x/iResolution.y,1.0);\n float time = iTime * speed;\n float q = fbm(uv * cloudscale * 0.5);\n////////\u538B\u8FB9\n float dis= max(max((p.x*51.-50.0), 1.-(p.x*51.)),max((p.y*3.-2.), 1.-(p.y*3.)));\n float sphere =pow(distanceTo(vec2(0.5,0.5),p),8.)*1000.;/////\u753B\u5706\u57082\n\n\n //ridged noise shape\n\tfloat r = 0.0;\n\tuv *= cloudscale;\n uv -= q - time;\n float weight = 0.8;\n for (int i=0; i<8; i++){\n\t\tr += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.7;\n }\n\n //noise shape\n\tfloat f = 0.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale;\n uv -= q - time;\n weight = 0.7;\n for (int i=0; i<8; i++){\n\t\tf += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n f *= r + f;\n\n //noise colour\n float c = 0.0;\n time = iTime * speed * 2.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*2.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n //noise ridge colour\n float c1 = 0.0;\n time = iTime * speed * 3.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*3.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc1 += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n c += c1;\n\n vec3 skycolour = mix(skycolour2, skycolour1, p.y)+sphere*0.3;\n vec3 cloudcolour = vec3(1.1, 1.1, 0.9) * clamp((clouddark + cloudlight*c), 0.0, 1.0);\n\n f = cloudcover + cloudalpha*f*r;\n\n float cloudIntensity = clamp(f + c, 0.0, 1.0) * (cloudDensity);\n\n vec3 result = mix(skycolour, clamp(skytint * skycolour + cloudcolour, 0.0, 1.0), cloudIntensity);\n\n\tfragColor = vec4(result, 0.5);\n //fragColor = vec4(sphere,0,0,1.); ////- clamp(dis,0.,1.)\n}\n\nvoid main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n}\n"
5
5
  };
6
- export default CloudShader;
6
+ export default CloudShader;
7
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CloudShader","vertexShader","fragmentShader"],"sources":["../../../src/environment/shaderCloud/shader.ts"],"sourcesContent":["/* eslint-disable no-tabs */\nconst CloudShader = {\n vertexShader: /* glsl */ `\n\n varying highp vec2 vUv;\n\n void main() {\n\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }`,\n\n fragmentShader: /* glsl */ `\nprecision highp float;\nuniform float skyAlpha;\nuniform float iTime;\nuniform float cloudDensity;\nuniform float cloudscale;\nconst float speed = 0.02;\nconst float clouddark = 0.5;\nconst float cloudlight = 0.3;\nconst float cloudcover = 0.2;\nconst float cloudalpha = 8.0;\nconst float skytint = 0.5;\nconst vec3 skycolour1 = vec3(0.2, 0.4, 0.6);\nconst vec3 skycolour2 = vec3(0.4, 0.7, 1.0);\n\nconst mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\nconst vec2 iResolution = vec2(0.001,0.001);\nvarying highp vec2 vUv;\n\nvec2 hash( vec2 p ) {\np = vec2(dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)));\nreturn -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p ) {\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\tvec2 i = floor(p + (p.x+p.y)*K1);\n vec2 a = p - i + (i.x+i.y)*K2;\n vec2 o = (a.x>a.y) ? vec2(1.0,0.0) : vec2(0.0,1.0); //vec2 of = 0.5 + 0.5*vec2(sign(a.x-a.y), sign(a.y-a.x));\n vec2 b = a - o + K2;\n\tvec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max(0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n\tvec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot(n, vec3(70.0));\n}\n\nfloat fbm(vec2 n) {\n\tfloat total = 0.0, amplitude = 0.1;\n\tfor (int i = 0; i < 7; i++) {\n\t\ttotal += noise(n) * amplitude;\n\t\tn = m * n;\n\t\tamplitude *= 0.4;\n\t}\n\treturn total*1.0;\n}\n\n// -----------------------------------------------\nfloat distanceTo(vec2 src, vec2 dst) {\n float dx = src.x - dst.x;\n float dy = src.y - dst.y;\n float dv = dx * dx + dy * dy;\n return sqrt(dv);\n}\nvoid mainImage( out vec4 fragColor, in vec2 fragCoord ) {\n // vec2 p = fragCoord.xy / iResolution.xy;\n vec2 p = vUv*1.;\n\tvec2 uv = p*vec2(iResolution.x/iResolution.y,1.0);\n float time = iTime * speed;\n float q = fbm(uv * cloudscale * 0.5);\n////////压边\n float dis= max(max((p.x*51.-50.0), 1.-(p.x*51.)),max((p.y*3.-2.), 1.-(p.y*3.)));\n float sphere =pow(distanceTo(vec2(0.5,0.5),p),8.)*1000.;/////画圆圈2\n\n\n //ridged noise shape\n\tfloat r = 0.0;\n\tuv *= cloudscale;\n uv -= q - time;\n float weight = 0.8;\n for (int i=0; i<8; i++){\n\t\tr += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.7;\n }\n\n //noise shape\n\tfloat f = 0.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale;\n uv -= q - time;\n weight = 0.7;\n for (int i=0; i<8; i++){\n\t\tf += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n f *= r + f;\n\n //noise colour\n float c = 0.0;\n time = iTime * speed * 2.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*2.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc += weight*noise( uv );\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n //noise ridge colour\n float c1 = 0.0;\n time = iTime * speed * 3.0;\n uv = p*vec2(iResolution.x/iResolution.y,1.0);\n\tuv *= cloudscale*3.0;\n uv -= q - time;\n weight = 0.4;\n for (int i=0; i<7; i++){\n\t\tc1 += abs(weight*noise( uv ));\n uv = m*uv + time;\n\t\tweight *= 0.6;\n }\n\n c += c1;\n\n vec3 skycolour = mix(skycolour2, skycolour1, p.y)+sphere*0.3;\n vec3 cloudcolour = vec3(1.1, 1.1, 0.9) * clamp((clouddark + cloudlight*c), 0.0, 1.0);\n\n f = cloudcover + cloudalpha*f*r;\n\n float cloudIntensity = clamp(f + c, 0.0, 1.0) * (cloudDensity);\n\n vec3 result = mix(skycolour, clamp(skytint * skycolour + cloudcolour, 0.0, 1.0), cloudIntensity);\n\n\tfragColor = vec4(result, 0.5);\n //fragColor = vec4(sphere,0,0,1.); ////- clamp(dis,0.,1.)\n}\n\nvoid main() {\n vec2 fragCoord = gl_FragCoord.xy;\n mainImage(gl_FragColor, fragCoord);\n}\n`,\n}\n\nexport default CloudShader\n"],"mappings":"AAAA;AACA,IAAMA,WAAW,GAAG;EAClBC,YAAY,EAAE,iNASN;EAERC,cAAc,EAAE;AAwIlB,CAAC;AAED,eAAeF,WAAW"}
@@ -70,4 +70,5 @@ var Snow = /*#__PURE__*/function () {
70
70
  }]);
71
71
  return Snow;
72
72
  }();
73
- export default Snow;
73
+ export default Snow;
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Mesh","PlaneGeometry","ShaderMaterial","Vector2","use","snowShader","Snow","initGeometry","useScene","scene","camera","Error","geometry","uniforms","iResolution","value","window","innerWidth","innerHeight","material","side","transparent","depthTest","blending","vertexShader","fragmentShader","i","mesh","position","z","scale","x","Math","random","y","add","meshes","push","useframe","iTime","snowSpeed","forEach","lookAt","visible"],"sources":["../../../src/environment/showShader/index.ts"],"sourcesContent":["import { Mesh, PlaneGeometry, ShaderMaterial, Vector2, use } from '@anov/3d-core'\nimport snowShader from './shader'\n\n// todo: merge rain\nclass Snow {\n private meshes: Mesh[] = []\n\n constructor() {\n this.initGeometry()\n }\n\n private initGeometry() {\n const { scene, camera } = use.useScene()\n\n if (!scene && !camera)\n throw new Error('please init scene and camera first')\n\n const geometry = new PlaneGeometry(10000, 10000)\n\n // @ts-ignore\n snowShader.uniforms.iResolution.value = new Vector2(window.innerWidth, window.innerHeight)\n\n const material = new ShaderMaterial({\n uniforms: snowShader.uniforms,\n side: 2,\n transparent: true,\n depthTest: false,\n blending: 2,\n vertexShader: snowShader.vertexShader,\n fragmentShader: snowShader.fragmentShader,\n })\n\n for (let i = 0; i < 10; i++) {\n const mesh = new Mesh(geometry, material)\n // const mesh = new Mesh(geometry, new MeshBasicMaterial({ color: new Color(Math.random() * 0xFFFFFF) }))\n mesh.position.z = -10000 + i * 1000\n mesh.scale.x = Math.random() * 0.5 + 1\n mesh.scale.y = Math.random() * 0.5 + 1\n\n scene!.add(mesh)\n\n this.meshes.push(mesh)\n }\n\n use.useframe(() => {\n snowShader.uniforms.iTime.value += 0.01\n snowShader.uniforms.snowSpeed.value = 1\n\n this.meshes.forEach((mesh) => {\n mesh.lookAt(camera!.position.x, camera!.position.y * 0.1, camera!.position.z)\n })\n })\n }\n\n stop() {\n this.meshes.forEach((mesh) => {\n mesh.visible = false\n })\n }\n\n continue() {\n this.meshes.forEach((mesh) => {\n mesh.visible = true\n })\n }\n}\n\nexport default Snow"],"mappings":";;;;;;;AAAA,SAASA,IAAI,EAAEC,aAAa,EAAEC,cAAc,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AACjF,OAAOC,UAAU;;AAEjB;AAAA,IACMC,IAAI;EAGR,gBAAc;IAAA;IAAA,gCAFW,EAAE;IAGzB,IAAI,CAACC,YAAY,EAAE;EACrB;EAAC;IAAA;IAAA,OAED,wBAAuB;MAAA;MACrB,oBAA0BH,GAAG,CAACI,QAAQ,EAAE;QAAhCC,KAAK,iBAALA,KAAK;QAAEC,MAAM,iBAANA,MAAM;MAErB,IAAI,CAACD,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAIC,KAAK,CAAC,oCAAoC,CAAC;MAEvD,IAAMC,QAAQ,GAAG,IAAIX,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;;MAEhD;MACAI,UAAU,CAACQ,QAAQ,CAACC,WAAW,CAACC,KAAK,GAAG,IAAIZ,OAAO,CAACa,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW,CAAC;MAE1F,IAAMC,QAAQ,GAAG,IAAIjB,cAAc,CAAC;QAClCW,QAAQ,EAAER,UAAU,CAACQ,QAAQ;QAC7BO,IAAI,EAAE,CAAC;QACPC,WAAW,EAAE,IAAI;QACjBC,SAAS,EAAE,KAAK;QAChBC,QAAQ,EAAE,CAAC;QACXC,YAAY,EAAEnB,UAAU,CAACmB,YAAY;QACrCC,cAAc,EAAEpB,UAAU,CAACoB;MAC7B,CAAC,CAAC;MAEF,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;QAC3B,IAAMC,IAAI,GAAG,IAAI3B,IAAI,CAACY,QAAQ,EAAEO,QAAQ,CAAC;QACzC;QACAQ,IAAI,CAACC,QAAQ,CAACC,CAAC,GAAG,CAAC,KAAK,GAAGH,CAAC,GAAG,IAAI;QACnCC,IAAI,CAACG,KAAK,CAACC,CAAC,GAAGC,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QACtCN,IAAI,CAACG,KAAK,CAACI,CAAC,GAAGF,IAAI,CAACC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;QAEtCxB,KAAK,CAAE0B,GAAG,CAACR,IAAI,CAAC;QAEhB,IAAI,CAACS,MAAM,CAACC,IAAI,CAACV,IAAI,CAAC;MACxB;MAEAvB,GAAG,CAACkC,QAAQ,CAAC,YAAM;QACjBjC,UAAU,CAACQ,QAAQ,CAAC0B,KAAK,CAACxB,KAAK,IAAI,IAAI;QACvCV,UAAU,CAACQ,QAAQ,CAAC2B,SAAS,CAACzB,KAAK,GAAG,CAAC;QAEvC,KAAI,CAACqB,MAAM,CAACK,OAAO,CAAC,UAACd,IAAI,EAAK;UAC5BA,IAAI,CAACe,MAAM,CAAChC,MAAM,CAAEkB,QAAQ,CAACG,CAAC,EAAErB,MAAM,CAAEkB,QAAQ,CAACM,CAAC,GAAG,GAAG,EAAExB,MAAM,CAAEkB,QAAQ,CAACC,CAAC,CAAC;QAC/E,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,gBAAO;MACL,IAAI,CAACO,MAAM,CAACK,OAAO,CAAC,UAACd,IAAI,EAAK;QAC5BA,IAAI,CAACgB,OAAO,GAAG,KAAK;MACtB,CAAC,CAAC;IACJ;EAAC;IAAA;IAAA,OAED,qBAAW;MACT,IAAI,CAACP,MAAM,CAACK,OAAO,CAAC,UAACd,IAAI,EAAK;QAC5BA,IAAI,CAACgB,OAAO,GAAG,IAAI;MACrB,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA;AAGH,eAAerC,IAAI"}
@@ -29,4 +29,5 @@ var snowShader = {
29
29
  vertexShader: /* glsl */"\n varying highp vec2 vUv;\n varying vec3 vPosition;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",
30
30
  fragmentShader: /* glsl */"\n #define PI 3.14159265359\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float size;\n uniform float density;\n uniform float snowSpeed;\n uniform float camVert;\n varying highp vec2 vUv;\n\n float ball(vec2 p) {\n float d = distance(vec2(.5), p);\n return smoothstep(size,size - .05, d);\n }\n float N11(float n) {\n return fract(sin(n * 871.213) * 3134.422);\n }\n float N21(vec2 uv) {\n return N11(N11(uv.x) + uv.y);\n }\n \n float snow(vec2 uv, float t) {\n vec2 org_uv = vec2(uv.x, uv.y);\n float z = 10.;\n uv.y += t * .5;\n vec2 gv = fract(uv*z);\n vec2 id = floor(uv*z); \n gv.x += (sin(N21(id) * 128. + t) * .4);\n gv.y += (sin(N11(N21(id)) * 128. + t) * .4);\n float dots = ball(gv);\n return dots;\n }\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n vec2 uv= vUv;\n float t = iTime * .3*snowSpeed;\n vec2 gh_uv = uv;\n vec3 colSnow = vec3(0.);\n float m = 0.;\n \n for(float i =0.; i <= .5; i += 1. / (16.*density)) {\n float z = mix(1., .5 , i);\n vec2 offset = vec2(N11(i), N11(N11(i)));\n m += snow((uv + offset) * z, t) * .3;\n }\n \n\n colSnow = vec3(m)*1.2;\n gl_FragColor = vec4(colSnow,colSnow.x);\n }"
31
31
  };
32
- export default snowShader;
32
+ export default snowShader;
33
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["snowShader","uniforms","tDiffuse","value","iResolution","iTime","size","density","snowSpeed","camVert","vertexShader","fragmentShader"],"sources":["../../../src/environment/showShader/shader.ts"],"sourcesContent":["// source from https://www.shadertoy.com/view/wt3GWH\nconst snowShader = {\n uniforms: {\n tDiffuse: { value: null },\n iResolution: { value: null },\n iTime: { value: 0 },\n size: { value: 0.032 }, // 0.05\n density: { value: 1.0 }, // 1.0\n snowSpeed: { value: 0.1 }, // 1.0\n camVert: { value: 1.0 },\n },\n\n vertexShader: /* glsl */`\n varying highp vec2 vUv;\n varying vec3 vPosition;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }`,\n\n fragmentShader: /* glsl */`\n #define PI 3.14159265359\n uniform sampler2D tDiffuse;\n uniform vec2 iResolution;\n uniform float iTime;\n uniform float size;\n uniform float density;\n uniform float snowSpeed;\n uniform float camVert;\n varying highp vec2 vUv;\n\n float ball(vec2 p) {\n float d = distance(vec2(.5), p);\n return smoothstep(size,size - .05, d);\n }\n float N11(float n) {\n return fract(sin(n * 871.213) * 3134.422);\n }\n float N21(vec2 uv) {\n return N11(N11(uv.x) + uv.y);\n }\n \n float snow(vec2 uv, float t) {\n vec2 org_uv = vec2(uv.x, uv.y);\n float z = 10.;\n uv.y += t * .5;\n vec2 gv = fract(uv*z);\n vec2 id = floor(uv*z); \n gv.x += (sin(N21(id) * 128. + t) * .4);\n gv.y += (sin(N11(N21(id)) * 128. + t) * .4);\n float dots = ball(gv);\n return dots;\n }\n void main(){\n vec3 col=texture(tDiffuse,vUv).rgb;\n vec2 uv= vUv;\n float t = iTime * .3*snowSpeed;\n vec2 gh_uv = uv;\n vec3 colSnow = vec3(0.);\n float m = 0.;\n \n for(float i =0.; i <= .5; i += 1. / (16.*density)) {\n float z = mix(1., .5 , i);\n vec2 offset = vec2(N11(i), N11(N11(i)));\n m += snow((uv + offset) * z, t) * .3;\n }\n \n\n colSnow = vec3(m)*1.2;\n gl_FragColor = vec4(colSnow,colSnow.x);\n }`,\n\n}\nexport default snowShader\n"],"mappings":"AAAA;AACA,IAAMA,UAAU,GAAG;EACjBC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;IACzBC,WAAW,EAAE;MAAED,KAAK,EAAE;IAAK,CAAC;IAC5BE,KAAK,EAAE;MAAEF,KAAK,EAAE;IAAE,CAAC;IACnBG,IAAI,EAAE;MAAEH,KAAK,EAAE;IAAM,CAAC;IAAE;IACxBI,OAAO,EAAE;MAAEJ,KAAK,EAAE;IAAI,CAAC;IAAE;IACzBK,SAAS,EAAE;MAAEL,KAAK,EAAE;IAAI,CAAC;IAAE;IAC3BM,OAAO,EAAE;MAAEN,KAAK,EAAE;IAAI;EACxB,CAAC;EAEDO,YAAY,EAAE,0OAMN;EAERC,cAAc,EAAE;AAoDlB,CAAC;AACD,eAAeX,UAAU"}
@@ -113,4 +113,5 @@ var createSkySystem = function createSkySystem(date, latitude, longitude) {
113
113
  };
114
114
  return [setDate, skyGroup, sky];
115
115
  };
116
- export default createSkySystem;
116
+ export default createSkySystem;
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DirectionalLight","Group","MathUtils","Vector3","lib","use","getLastValue","getSunPosition","Sky","initsSkySystem","options","sky","position","useScene","renderer","scale","setScalar","effectController","turbidity","rayleigh","mieCoefficient","mieDirectionalG","elevation","azimuth","exposure","toneMappingExposure","uniforms","material","value","phi","degToRad","theta","setFromSphericalCoords","sunPosition","copy","initSunLight","opts","sunLight","color","intensity","castShadow","shadow","bias","mapSize","set","cam","camera","createSkySystem","date","latitude","longitude","sunRadius","scene","Error","skyGroup","add","move","altitude","radToDeg","x","Math","cos","z","sin","y","setDate","currentDate"],"sources":["../../../src/environment/sky/index.ts"],"sourcesContent":["import { DirectionalLight, Group, MathUtils, Vector3, lib, use } from '@anov/3d-core'\nimport { getLastValue } from '../../utils'\nimport { getSunPosition } from '../sun'\n\nconst Sky = lib.Sky\n\ntype SkySystemOption = {\n scalarCoefficient?: number\n turbidity?: number\n rayleigh?: number\n mieCoefficient?: number\n mieDirectionalG?: number\n elevation?: number\n azimuth?: number\n exposure?: number\n}\n\n/**\n * 天空盒 shader\n */\nconst initsSkySystem = (options?: SkySystemOption) => {\n const sky = new Sky()\n const position = new Vector3()\n const { renderer } = use.useScene()\n\n sky.scale.setScalar(450000)\n\n const effectController = {\n turbidity: 10,\n rayleigh: 3,\n mieCoefficient: 0.005,\n mieDirectionalG: 0.7,\n elevation: 2,\n azimuth: 180,\n exposure: renderer!.toneMappingExposure,\n }\n // @ts-ignore\n const uniforms = sky.material.uniforms\n uniforms.turbidity.value = effectController.turbidity\n uniforms.rayleigh.value = effectController.rayleigh\n uniforms.mieCoefficient.value = effectController.mieCoefficient\n uniforms.mieDirectionalG.value = effectController.mieDirectionalG\n\n const phi = MathUtils.degToRad(90 - effectController.elevation)\n const theta = MathUtils.degToRad(effectController.azimuth)\n\n position.setFromSphericalCoords(1, phi, theta)\n uniforms.sunPosition.value.copy(position)\n\n return [sky, position, uniforms] as [typeof sky, typeof position, typeof uniforms]\n}\n\ntype SunLightOption = {\n color?: string\n intensity?: number\n bias?: number\n mapSize?: [number, number]\n\n near?: number\n far?: number\n left?: number\n right?: number\n top?: number\n bottom?: number\n}\n\n/**\n * create sun light\n * @param options\n * @returns\n */\nconst initSunLight = (options?: SunLightOption) => {\n const opts = options || {}\n\n const sunLight = new DirectionalLight(getLastValue(opts.color, 'white'), getLastValue(opts.intensity, 1))\n sunLight.castShadow = true\n\n sunLight.shadow.bias = getLastValue(opts.bias, -0.005)\n sunLight.shadow.mapSize.set(getLastValue(opts.mapSize?.[0], 1024 * 2), getLastValue(opts.mapSize?.[1], 1024 * 2))\n\n const cam = sunLight.shadow.camera\n // cam.near = getLastValue(opts.near, 0.1)\n // cam.far = getLastValue(opts.far, 10000)\n // cam.left = getLastValue(opts.left, -10000)\n // cam.right = getLastValue(opts.right, 10000)\n // cam.top = getLastValue(opts.top, 10000)\n // cam.bottom = getLastValue(opts.bottom, -10000)\n\n return sunLight\n}\n\n/**\n * create sky system\n * @param date\n * @param latitude\n * @param longitude\n * @returns\n */\nconst createSkySystem = (date: Date, latitude: number, longitude: number, sunRadius = 300) => {\n const { renderer, scene } = use.useScene()\n\n if (!renderer && !scene)\n throw new Error('renderer or scene is not exist')\n\n const [sky, position, uniforms] = initsSkySystem()\n const sunLight = initSunLight()\n const skyGroup = new Group() as (Group & { sunPosition: Vector3 })\n\n scene!.add(sky)\n skyGroup.add(sunLight)\n scene!.add(skyGroup)\n\n const move = (altitude: number, azimuth: number) => {\n position.setFromSphericalCoords(sunRadius, MathUtils.degToRad(90 - MathUtils.radToDeg(altitude)), azimuth)\n uniforms.sunPosition.value.copy(position)\n\n const x = sunRadius * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = sunRadius * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = sunRadius * (Math.sin(altitude))\n\n const sunPosition = new Vector3(x, y, z)\n skyGroup.sunPosition = sunPosition\n skyGroup.position.copy(position)\n\n return sunPosition\n }\n\n const { altitude, azimuth } = getSunPosition(date, latitude, longitude)\n move(altitude, azimuth)\n\n /**\n * set date\n * @param currentDate\n * @returns\n */\n const setDate = (currentDate?: Date) => {\n const { altitude, azimuth } = getSunPosition(currentDate || date, latitude, longitude)\n return move(altitude, azimuth)\n }\n\n return [setDate, skyGroup, sky] as [typeof setDate, Group & { sunPosition: Vector3 }, any]\n}\n\nexport default createSkySystem\n"],"mappings":"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"}
@@ -42,4 +42,5 @@ export var createSnow = function createSnow() {
42
42
  }
43
43
  };
44
44
  return [start, stop];
45
- };
45
+ };
46
+ //# sourceMappingURL=snow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["globalObjectManage","use","EnvironmentPoints","useframe","createSnow","size","range","speed","opacity","count","points","url","removeFrame","isBoundaryJudgment","start","scene","add","point","animation","position","y","speedY","stop","remove"],"sources":["../../src/environment/snow.ts"],"sourcesContent":["import { globalObjectManage, use } from '@anov/3d-core'\nimport type { SpeedType } from './rain'\nimport type { AVector3 } from './utils/points'\nimport EnvironmentPoints from './utils/points'\n\nconst { useframe } = use\n\ntype CreateSnowReturn = [\n () => void,\n () => void,\n]\n\n/**\n * create snow\n * @param size 雪花大小\n * @param range 降雪范围\n * @param speed 降雪速度\n * @param opacity 雪花透明度\n * @param count 雪花密度\n * @returns\n */\nexport const createSnow = (size = 10, range = 100, speed?: SpeedType, opacity = 0.6, count = 100) => {\n const points = new EnvironmentPoints({\n size,\n opacity,\n speed,\n range,\n count,\n url: 'data:image/png;base64,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',\n })\n\n let removeFrame: (() => void) | null = null\n const isBoundaryJudgment = true\n\n const start = () => {\n globalObjectManage.scene!.add(points.point!)\n\n removeFrame = useframe(() => {\n points.animation(\n (position: AVector3) => {\n position.y -= position.speedY\n\n if (position.y <= 0 && isBoundaryJudgment)\n position.y = 1000 / 2\n },\n )\n })\n }\n\n const stop = () => {\n if (removeFrame) {\n removeFrame()\n globalObjectManage.scene!.remove(points.point!)\n }\n }\n\n return [\n start,\n stop,\n ] as CreateSnowReturn\n}"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,GAAG,QAAQ,eAAe;AAGvD,OAAOC,iBAAiB;AAExB,IAAQC,QAAQ,GAAKF,GAAG,CAAhBE,QAAQ;AAOhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAA8E;EAAA,IAA1EC,IAAI,uEAAG,EAAE;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAAA,IAAEC,KAAiB;EAAA,IAAEC,OAAO,uEAAG,GAAG;EAAA,IAAEC,KAAK,uEAAG,GAAG;EAC9F,IAAMC,MAAM,GAAG,IAAIR,iBAAiB,CAAC;IACnCG,IAAI,EAAJA,IAAI;IACJG,OAAO,EAAPA,OAAO;IACPD,KAAK,EAALA,KAAK;IACLD,KAAK,EAALA,KAAK;IACLG,KAAK,EAALA,KAAK;IACLE,GAAG,EAAE;EACP,CAAC,CAAC;EAEF,IAAIC,WAAgC,GAAG,IAAI;EAC3C,IAAMC,kBAAkB,GAAG,IAAI;EAE/B,IAAMC,KAAK,GAAG,SAARA,KAAK,GAAS;IAClBd,kBAAkB,CAACe,KAAK,CAAEC,GAAG,CAACN,MAAM,CAACO,KAAK,CAAE;IAE5CL,WAAW,GAAGT,QAAQ,CAAC,YAAM;MAC3BO,MAAM,CAACQ,SAAS,CACd,UAACC,QAAkB,EAAK;QACtBA,QAAQ,CAACC,CAAC,IAAID,QAAQ,CAACE,MAAM;QAE7B,IAAIF,QAAQ,CAACC,CAAC,IAAI,CAAC,IAAIP,kBAAkB,EACvCM,QAAQ,CAACC,CAAC,GAAG,IAAI,GAAG,CAAC;MACzB,CAAC,CACF;IACH,CAAC,CAAC;EACJ,CAAC;EAED,IAAME,IAAI,GAAG,SAAPA,IAAI,GAAS;IACjB,IAAIV,WAAW,EAAE;MACfA,WAAW,EAAE;MACbZ,kBAAkB,CAACe,KAAK,CAAEQ,MAAM,CAACb,MAAM,CAACO,KAAK,CAAE;IACjD;EACF,CAAC;EAED,OAAO,CACLH,KAAK,EACLQ,IAAI,CACL;AACH,CAAC"}
@@ -73,4 +73,5 @@ export var createSun = function createSun(date, latitude, longitude) {
73
73
  return [group, updateSunPosition, function (currentDate) {
74
74
  return getSunPosition(currentDate || date, latitude, longitude);
75
75
  }];
76
- };
76
+ };
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DirectionalLight","Group","Mesh","MeshBasicMaterial","SphereGeometry","Vector3","getPosition","getThreePosition","date","latitude","longitude","distance","altitude","azimuth","x","Math","cos","z","sin","y","getSunPosition","createSunEntity","box","mater","color","mesh","createSunLight","sunLight","castShadow","shadow","bias","mapSize","set","createSun","autoUpdate","position","group","add","lookAt","updateSunPosition","currentPosition","currentDate"],"sources":["../../../src/environment/sun/index.ts"],"sourcesContent":["import { DirectionalLight, Group, Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from '@anov/3d-core'\nimport { getPosition } from 'suncalc'\n\n/**\n * 获取当前笛卡尔坐标\n * @param date\n * @param latitude\n * @param longitude\n */\nconst getThreePosition = (date: Date, latitude: number, longitude: number, distance: number) => {\n const { altitude, azimuth } = getPosition(date, latitude, longitude)\n\n const x = distance * (Math.cos(altitude)) * (Math.cos(azimuth))\n const z = distance * (Math.cos(altitude)) * (Math.sin(azimuth))\n const y = distance * (Math.sin(altitude))\n\n return new Vector3(x, y, z)\n}\n\nexport const getSunPosition = (date: Date, latitude: number, longitude: number) => {\n const { altitude, azimuth } = getPosition(date, latitude, longitude)\n\n return {\n altitude,\n azimuth,\n }\n}\n\n/**\n * entity\n * @returns\n */\nconst createSunEntity = () => {\n const box = new SphereGeometry(1)\n const mater = new MeshBasicMaterial({ color: 'yellow' })\n const mesh = new Mesh(box, mater)\n\n return mesh\n}\n\n/**\n * sun light\n * @returns\n */\nconst createSunLight = () => {\n const sunLight = new DirectionalLight('white', 8)\n sunLight.castShadow = true\n sunLight.shadow.bias = -0.005\n sunLight.shadow.mapSize.set(1024, 1024)\n\n return sunLight\n}\n\n/**\n * create init\n * @param date\n * @param latitude\n * @param longitude\n * @param distance\n */\nexport const createSun = (date: Date, latitude: number, longitude: number, distance = 1000, autoUpdate = true) => {\n const position = getThreePosition(date, latitude, longitude, distance)\n const group = new Group()\n\n group.add(\n createSunEntity(),\n createSunLight(),\n )\n\n group.position.set(position.x, position.y, position.z)\n group.lookAt(0, 0, 0)\n\n const updateSunPosition = (date: Date, latitude: number, longitude: number) => {\n const currentPosition = getThreePosition(date, latitude, longitude, distance)\n group.position.set(currentPosition.x, currentPosition.y, currentPosition.z)\n }\n\n return [group, updateSunPosition, (currentDate?: Date) => {\n return getSunPosition(currentDate || date, latitude, longitude)\n }]\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAEC,cAAc,EAAEC,OAAO,QAAQ,eAAe;AACzG,SAASC,WAAW,QAAQ,SAAS;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIC,IAAU,EAAEC,QAAgB,EAAEC,SAAiB,EAAEC,QAAgB,EAAK;EAC9F,mBAA8BL,WAAW,CAACE,IAAI,EAAEC,QAAQ,EAAEC,SAAS,CAAC;IAA5DE,QAAQ,gBAARA,QAAQ;IAAEC,OAAO,gBAAPA,OAAO;EAEzB,IAAMC,CAAC,GAAGH,QAAQ,GAAII,IAAI,CAACC,GAAG,CAACJ,QAAQ,CAAE,GAAIG,IAAI,CAACC,GAAG,CAACH,OAAO,CAAE;EAC/D,IAAMI,CAAC,GAAGN,QAAQ,GAAII,IAAI,CAACC,GAAG,CAACJ,QAAQ,CAAE,GAAIG,IAAI,CAACG,GAAG,CAACL,OAAO,CAAE;EAC/D,IAAMM,CAAC,GAAGR,QAAQ,GAAII,IAAI,CAACG,GAAG,CAACN,QAAQ,CAAE;EAEzC,OAAO,IAAIP,OAAO,CAACS,CAAC,EAAEK,CAAC,EAAEF,CAAC,CAAC;AAC7B,CAAC;AAED,OAAO,IAAMG,cAAc,GAAG,SAAjBA,cAAc,CAAIZ,IAAU,EAAEC,QAAgB,EAAEC,SAAiB,EAAK;EACjF,oBAA8BJ,WAAW,CAACE,IAAI,EAAEC,QAAQ,EAAEC,SAAS,CAAC;IAA5DE,QAAQ,iBAARA,QAAQ;IAAEC,OAAO,iBAAPA,OAAO;EAEzB,OAAO;IACLD,QAAQ,EAARA,QAAQ;IACRC,OAAO,EAAPA;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAMQ,eAAe,GAAG,SAAlBA,eAAe,GAAS;EAC5B,IAAMC,GAAG,GAAG,IAAIlB,cAAc,CAAC,CAAC,CAAC;EACjC,IAAMmB,KAAK,GAAG,IAAIpB,iBAAiB,CAAC;IAAEqB,KAAK,EAAE;EAAS,CAAC,CAAC;EACxD,IAAMC,IAAI,GAAG,IAAIvB,IAAI,CAACoB,GAAG,EAAEC,KAAK,CAAC;EAEjC,OAAOE,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAc,GAAS;EAC3B,IAAMC,QAAQ,GAAG,IAAI3B,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;EACjD2B,QAAQ,CAACC,UAAU,GAAG,IAAI;EAC1BD,QAAQ,CAACE,MAAM,CAACC,IAAI,GAAG,CAAC,KAAK;EAC7BH,QAAQ,CAACE,MAAM,CAACE,OAAO,CAACC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;EAEvC,OAAOL,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMM,SAAS,GAAG,SAAZA,SAAS,CAAIzB,IAAU,EAAEC,QAAgB,EAAEC,SAAiB,EAAyC;EAAA,IAAvCC,QAAQ,uEAAG,IAAI;EAAA,IAAEuB,UAAU,uEAAG,IAAI;EAC3G,IAAMC,QAAQ,GAAG5B,gBAAgB,CAACC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,CAAC;EACtE,IAAMyB,KAAK,GAAG,IAAInC,KAAK,EAAE;EAEzBmC,KAAK,CAACC,GAAG,CACPhB,eAAe,EAAE,EACjBK,cAAc,EAAE,CACjB;EAEDU,KAAK,CAACD,QAAQ,CAACH,GAAG,CAACG,QAAQ,CAACrB,CAAC,EAAEqB,QAAQ,CAAChB,CAAC,EAAEgB,QAAQ,CAAClB,CAAC,CAAC;EACtDmB,KAAK,CAACE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAErB,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiB,CAAI/B,IAAU,EAAEC,QAAgB,EAAEC,SAAiB,EAAK;IAC7E,IAAM8B,eAAe,GAAGjC,gBAAgB,CAACC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,CAAC;IAC7EyB,KAAK,CAACD,QAAQ,CAACH,GAAG,CAACQ,eAAe,CAAC1B,CAAC,EAAE0B,eAAe,CAACrB,CAAC,EAAEqB,eAAe,CAACvB,CAAC,CAAC;EAC7E,CAAC;EAED,OAAO,CAACmB,KAAK,EAAEG,iBAAiB,EAAE,UAACE,WAAkB,EAAK;IACxD,OAAOrB,cAAc,CAACqB,WAAW,IAAIjC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,CAAC;EACjE,CAAC,CAAC;AACJ,CAAC"}
@@ -52,4 +52,5 @@ var EnvironmentPoints = /*#__PURE__*/function () {
52
52
  }]);
53
53
  return EnvironmentPoints;
54
54
  }();
55
- export default EnvironmentPoints;
55
+ export default EnvironmentPoints;
56
+ //# sourceMappingURL=points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BufferGeometry","Points","PointsMaterial","TextureLoader","Vector3","EnvironmentPoints","opts","createEnvPoints","material","size","map","load","url","transparent","opacity","depthTest","geometry","range","i","count","position","Math","random","speedX","speed","x","speedY","speedZ","points","push","setFromPoints","point","handlefn","forEach"],"sources":["../../../src/environment/utils/points.ts"],"sourcesContent":["import { BufferGeometry, Points, PointsMaterial, TextureLoader, Vector3 } from '@anov/3d-core'\nimport type { SpeedType } from '../rain'\n\ninterface EnvPointsOptions {\n range?: number\n count?: number\n opacity?: number\n url: string\n size?: number\n speed?: SpeedType\n}\n\nexport type AVector3 = Vector3 & {\n speedX: number\n speedY: number\n speedZ: number\n}\n\nclass EnvironmentPoints {\n private opts: EnvPointsOptions = {} as EnvPointsOptions\n public points: AVector3[] = []\n\n public material: PointsMaterial | null = null\n public geometry: BufferGeometry | null = null\n public point: Points | null = null\n\n constructor(opts: EnvPointsOptions) {\n this.opts = opts\n\n this.createEnvPoints()\n }\n\n private createEnvPoints() {\n this.material = new PointsMaterial({\n size: this.opts.size || 1,\n map: new TextureLoader().load(this.opts.url),\n transparent: true,\n opacity: this.opts.opacity,\n depthTest: false,\n })\n\n this.geometry = new BufferGeometry()\n\n const range = this.opts.range ?? 1000\n\n for (let i = 0; i < (this.opts.count || 500); i++) {\n const position = new Vector3(\n Math.random() * range - range / 2,\n Math.random() * range,\n Math.random() * range - range / 2,\n ) as AVector3\n\n position.speedX = this.opts.speed?.x || 0\n position.speedY = this.opts.speed?.x || 10\n position.speedZ = this.opts.speed?.x || 0\n\n this.points.push(position)\n }\n this.geometry.setFromPoints(this.points)\n\n this.point = new Points(this.geometry, this.material)\n }\n\n public animation(handlefn: (position: AVector3) => void) {\n this.points.forEach((position) => {\n handlefn(position)\n })\n\n this.point!.geometry.setFromPoints(this.points)\n }\n}\n\nexport default EnvironmentPoints"],"mappings":";;;;;;;AAAA,SAASA,cAAc,EAAEC,MAAM,EAAEC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,eAAe;AAAA,IAkBxFC,iBAAiB;EAQrB,2BAAYC,IAAsB,EAAE;IAAA;IAAA,8BAPH,CAAC,CAAC;IAAA,gCACP,EAAE;IAAA,kCAEW,IAAI;IAAA,kCACJ,IAAI;IAAA,+BACf,IAAI;IAGhC,IAAI,CAACA,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACC,eAAe,EAAE;EACxB;EAAC;IAAA;IAAA,OAED,2BAA0B;MAAA;MACxB,IAAI,CAACC,QAAQ,GAAG,IAAIN,cAAc,CAAC;QACjCO,IAAI,EAAE,IAAI,CAACH,IAAI,CAACG,IAAI,IAAI,CAAC;QACzBC,GAAG,EAAE,IAAIP,aAAa,EAAE,CAACQ,IAAI,CAAC,IAAI,CAACL,IAAI,CAACM,GAAG,CAAC;QAC5CC,WAAW,EAAE,IAAI;QACjBC,OAAO,EAAE,IAAI,CAACR,IAAI,CAACQ,OAAO;QAC1BC,SAAS,EAAE;MACb,CAAC,CAAC;MAEF,IAAI,CAACC,QAAQ,GAAG,IAAIhB,cAAc,EAAE;MAEpC,IAAMiB,KAAK,uBAAG,IAAI,CAACX,IAAI,CAACW,KAAK,+DAAI,IAAI;MAErC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,IAAI,CAACZ,IAAI,CAACa,KAAK,IAAI,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;QAAA;QACjD,IAAME,SAAQ,GAAG,IAAIhB,OAAO,CAC1BiB,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,EACjCI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,EACrBI,IAAI,CAACC,MAAM,EAAE,GAAGL,KAAK,GAAGA,KAAK,GAAG,CAAC,CACtB;QAEbG,SAAQ,CAACG,MAAM,GAAG,yBAAI,CAACjB,IAAI,CAACkB,KAAK,qDAAf,iBAAiBC,CAAC,KAAI,CAAC;QACzCL,SAAQ,CAACM,MAAM,GAAG,0BAAI,CAACpB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBC,CAAC,KAAI,EAAE;QAC1CL,SAAQ,CAACO,MAAM,GAAG,0BAAI,CAACrB,IAAI,CAACkB,KAAK,sDAAf,kBAAiBC,CAAC,KAAI,CAAC;QAEzC,IAAI,CAACG,MAAM,CAACC,IAAI,CAACT,SAAQ,CAAC;MAC5B;MACA,IAAI,CAACJ,QAAQ,CAACc,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;MAExC,IAAI,CAACG,KAAK,GAAG,IAAI9B,MAAM,CAAC,IAAI,CAACe,QAAQ,EAAE,IAAI,CAACR,QAAQ,CAAC;IACvD;EAAC;IAAA;IAAA,OAED,mBAAiBwB,QAAsC,EAAE;MACvD,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,UAACb,QAAQ,EAAK;QAChCY,QAAQ,CAACZ,QAAQ,CAAC;MACpB,CAAC,CAAC;MAEF,IAAI,CAACW,KAAK,CAAEf,QAAQ,CAACc,aAAa,CAAC,IAAI,CAACF,MAAM,CAAC;IACjD;EAAC;EAAA;AAAA;AAGH,eAAevB,iBAAiB"}
@@ -57,4 +57,5 @@ var cloudMaterial = new RawShaderMaterial({
57
57
  side: BackSide,
58
58
  transparent: true
59
59
  });
60
- export default cloudMaterial;
60
+ export default cloudMaterial;
61
+ //# sourceMappingURL=cloudMaterial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BackSide","Color","Data3DTexture","GLSL3","LinearFilter","RawShaderMaterial","RedFormat","Vector3","lib","size","data","Uint8Array","i","scale","perlin","ImprovedNoise","vector","z","y","x","d","set","subScalar","divideScalar","length","noise","texture","format","minFilter","magFilter","unpackAlignment","needsUpdate","vertexShader","fragmentShader","cloudMaterial","glslVersion","uniforms","base","value","map","cameraPos","threshold","opacity","range","steps","frame","side","transparent"],"sources":["../../../src/environment/volumetricCloud/cloudMaterial.ts"],"sourcesContent":["import { BackSide, Color, Data3DTexture, GLSL3, LinearFilter, RawShaderMaterial, RedFormat, Vector3, lib } from '@anov/3d-core'\n\nconst size = 128\nconst data = new Uint8Array(size * size * size)\n\nlet i = 0\nconst scale = 0.05\nconst perlin = new lib.ImprovedNoise()\nconst vector = new Vector3()\n\nfor (let z = 0; z < size; z++) {\n for (let y = 0; y < size; y++) {\n for (let x = 0; x < size; x++) {\n const d = 1.0 - vector.set(x, y, z).subScalar(size / 2).divideScalar(size).length()\n data[i] = (128 + 128 * perlin.noise(x * scale / 1.5, y * scale, z * scale / 1.5)) * d * d\n i++\n }\n }\n}\n\nconst texture = new Data3DTexture(data, size, size, size)\ntexture.format = RedFormat\ntexture.minFilter = LinearFilter\ntexture.magFilter = LinearFilter\ntexture.unpackAlignment = 1\ntexture.needsUpdate = true\n\n// Material\nconst vertexShader = /* glsl */`\nin vec3 position;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPos;\nout vec3 vOrigin;\nout vec3 vDirection;\nvoid main() {\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n vOrigin = vec3(inverse(modelMatrix) * vec4(cameraPos, 1.0)).xyz;\n vDirection = position - vOrigin;\n gl_Position = projectionMatrix * mvPosition;\n}\n`\n\nconst fragmentShader = /* glsl */`\n\n\nprecision highp float;\nprecision highp sampler3D;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nin vec3 vOrigin;\nin vec3 vDirection;\n\nout vec4 color;\n\nuniform vec3 base;\nuniform sampler3D map;\n\nuniform float threshold;\nuniform float range;\nuniform float opacity;\nuniform float steps;\nuniform float frame;\n\nuint wang_hash(uint seed) {\n seed = (seed ^ 61u) ^ (seed >> 16u);\n seed *= 9u;\n seed = seed ^ (seed >> 4u);\n seed *= 0x27d4eb2du;\n seed = seed ^ (seed >> 15u);\n return seed;\n}\n\nfloat randomFloat(inout uint seed) {\n return float(wang_hash(seed)) / 4294967296.;\n}\n\nvec2 hitBox(vec3 orig, vec3 dir) {\n const vec3 box_min = vec3(-0.5);\n const vec3 box_max = vec3(0.5);\n vec3 inv_dir = 1.0 / dir;\n vec3 tmin_tmp = (box_min - orig) * inv_dir;\n vec3 tmax_tmp = (box_max - orig) * inv_dir;\n vec3 tmin = min(tmin_tmp, tmax_tmp);\n vec3 tmax = max(tmin_tmp, tmax_tmp);\n float t0 = max(tmin.x, max(tmin.y, tmin.z));\n float t1 = min(tmax.x, min(tmax.y, tmax.z));\n return vec2(t0, t1);\n}\n\nfloat sample1(vec3 p) {\n return texture(map, p).r;\n}\n\nfloat shading(vec3 coord) {\n float step = 0.01;\n return sample1(coord + vec3(-step)) - sample1(coord + vec3(step));\n}\n\nvec4 linearToSRGB(in vec4 value) {\n return vec4(mix(pow(value.rgb, vec3(0.41666)) * 1.055 - vec3(0.055), value.rgb * 12.92, vec3(lessThanEqual(value.rgb, vec3(0.0031308)))), value.a);\n}\n\nvoid main() {\n vec3 rayDir = normalize(vDirection);\n vec2 bounds = hitBox(vOrigin, rayDir);\n\n if(bounds.x > bounds.y)\n discard;\n\n bounds.x = max(bounds.x, 0.0);\n\n vec3 p = vOrigin + bounds.x * rayDir;\n vec3 inc = 1.0 / abs(rayDir);\n float delta = min(inc.x, min(inc.y, inc.z));\n delta /= steps;\n\n// Jitter\n// Nice little seed from\n// https://blog.demofox.org/2020/05/25/casual-shadertoy-path-tracing-1-basic-camera-diffuse-emissive/\n uint seed = uint(gl_FragCoord.x) * uint(1973) + uint(gl_FragCoord.y) * uint(9277) + uint(frame) * uint(26699);\n vec3 size = vec3(textureSize(map, 0));\n float randNum = randomFloat(seed) * 2.0 - 1.0;\n p += rayDir * randNum * (1.0 / size);\n\n vec4 ac = vec4(base, 0.0);\n\n for(float t = bounds.x; t < bounds.y; t += delta) {\n\n float d = sample1(p + 0.5);\n\n d = smoothstep(threshold - range, threshold + range, d) * opacity;\n\n float col = shading(p + 0.5) * 3.0 + ((p.x + p.y) * 0.25) + 0.2;\n\n ac.rgb += (1.0 - ac.a) * d * col;\n\n ac.a += (1.0 - ac.a) * d;\n\n if(ac.a >= 0.95)\n break;\n\n p += rayDir * delta;\n\n }\n\n color = linearToSRGB(ac);\n\n if(color.a == 0.0)\n discard;\n\n}\n\n`\n\nconst cloudMaterial = new RawShaderMaterial({\n glslVersion: GLSL3,\n uniforms: {\n base: { value: new Color(0x798AA0) },\n map: { value: texture },\n cameraPos: { value: new Vector3() },\n threshold: { value: 0.25 },\n opacity: { value: 0.25 },\n range: { value: 0.1 },\n steps: { value: 100 },\n frame: { value: 0 },\n },\n vertexShader,\n fragmentShader,\n side: BackSide,\n transparent: true,\n})\n\nexport default cloudMaterial"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,aAAa,EAAEC,KAAK,EAAEC,YAAY,EAAEC,iBAAiB,EAAEC,SAAS,EAAEC,OAAO,EAAEC,GAAG,QAAQ,eAAe;AAE/H,IAAMC,IAAI,GAAG,GAAG;AAChB,IAAMC,IAAI,GAAG,IAAIC,UAAU,CAACF,IAAI,GAAGA,IAAI,GAAGA,IAAI,CAAC;AAE/C,IAAIG,CAAC,GAAG,CAAC;AACT,IAAMC,KAAK,GAAG,IAAI;AAClB,IAAMC,MAAM,GAAG,IAAIN,GAAG,CAACO,aAAa,EAAE;AACtC,IAAMC,MAAM,GAAG,IAAIT,OAAO,EAAE;AAE5B,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGR,IAAI,EAAEQ,CAAC,EAAE,EAAE;EAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,IAAI,EAAES,CAAC,EAAE,EAAE;IAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGV,IAAI,EAAEU,CAAC,EAAE,EAAE;MAC7B,IAAMC,CAAC,GAAG,GAAG,GAAGJ,MAAM,CAACK,GAAG,CAACF,CAAC,EAAED,CAAC,EAAED,CAAC,CAAC,CAACK,SAAS,CAACb,IAAI,GAAG,CAAC,CAAC,CAACc,YAAY,CAACd,IAAI,CAAC,CAACe,MAAM,EAAE;MACnFd,IAAI,CAACE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAGE,MAAM,CAACW,KAAK,CAACN,CAAC,GAAGN,KAAK,GAAG,GAAG,EAAEK,CAAC,GAAGL,KAAK,EAAEI,CAAC,GAAGJ,KAAK,GAAG,GAAG,CAAC,IAAIO,CAAC,GAAGA,CAAC;MACzFR,CAAC,EAAE;IACL;EACF;AACF;AAEA,IAAMc,OAAO,GAAG,IAAIxB,aAAa,CAACQ,IAAI,EAAED,IAAI,EAAEA,IAAI,EAAEA,IAAI,CAAC;AACzDiB,OAAO,CAACC,MAAM,GAAGrB,SAAS;AAC1BoB,OAAO,CAACE,SAAS,GAAGxB,YAAY;AAChCsB,OAAO,CAACG,SAAS,GAAGzB,YAAY;AAChCsB,OAAO,CAACI,eAAe,GAAG,CAAC;AAC3BJ,OAAO,CAACK,WAAW,GAAG,IAAI;;AAE1B;AACA,IAAMC,YAAY,GAAG,6aAepB;AAED,IAAMC,cAAc,GAAG,utFAgHtB;AAED,IAAMC,aAAa,GAAG,IAAI7B,iBAAiB,CAAC;EAC1C8B,WAAW,EAAEhC,KAAK;EAClBiC,QAAQ,EAAE;IACRC,IAAI,EAAE;MAAEC,KAAK,EAAE,IAAIrC,KAAK,CAAC,QAAQ;IAAE,CAAC;IACpCsC,GAAG,EAAE;MAAED,KAAK,EAAEZ;IAAQ,CAAC;IACvBc,SAAS,EAAE;MAAEF,KAAK,EAAE,IAAI/B,OAAO;IAAG,CAAC;IACnCkC,SAAS,EAAE;MAAEH,KAAK,EAAE;IAAK,CAAC;IAC1BI,OAAO,EAAE;MAAEJ,KAAK,EAAE;IAAK,CAAC;IACxBK,KAAK,EAAE;MAAEL,KAAK,EAAE;IAAI,CAAC;IACrBM,KAAK,EAAE;MAAEN,KAAK,EAAE;IAAI,CAAC;IACrBO,KAAK,EAAE;MAAEP,KAAK,EAAE;IAAE;EACpB,CAAC;EACDN,YAAY,EAAZA,YAAY;EACZC,cAAc,EAAdA,cAAc;EACda,IAAI,EAAE9C,QAAQ;EACd+C,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,eAAeb,aAAa"}
@@ -39,4 +39,5 @@ var createVolumetricCloud = function createVolumetricCloud() {
39
39
  scene.add(cloudGroup);
40
40
  return cloudGroup;
41
41
  };
42
- export default createVolumetricCloud;
42
+ export default createVolumetricCloud;
43
+ //# sourceMappingURL=inex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BoxGeometry","Mesh","use","cloudMaterial","VolumetricCloud","box","cloudGroup","useScene","camera","useframe","createVolumetricCloud","scene","Error","add"],"sources":["../../../src/environment/volumetricCloud/inex.ts"],"sourcesContent":["import { BoxGeometry, BufferGeometryUtils, Mesh, use } from '@anov/3d-core'\nimport cloudMaterial from './cloudMaterial'\n\nexport class VolumetricCloud {\n private geometries: BoxGeometry[] = []\n public cloudGroup: Mesh\n\n constructor() {\n // cloud density\n // for (let i = 0; i < 100; i++) {\n // const cloud = new BoxGeometry(100, 100, 100)\n\n // cloud.translate(Math.random() * 1000 - 500, -Math.random() * Math.random() * 200 - 15, i)\n // // cloud.rotateZ(Math.random() * Math.PI / 2)\n // cloud.scale(Math.random() * Math.random() * 1.1 + 0.5, Math.random() * Math.random() * 1.1 + 0.5, 1)\n // this.geometries.push(cloud)\n // }\n\n const box = new BoxGeometry(100, 100, 100)\n // const mergedGeometry = BufferGeometryUtils.mergeGeometries(this.geometries, false)\n this.cloudGroup = new Mesh(box, cloudMaterial)\n\n const { camera } = use.useScene()\n\n use.useframe(() => {\n // @ts-ignore\n // this.cloudGroup.material.uniforms.cameraPos.value.copy(camera!.position)\n })\n }\n}\n\nconst createVolumetricCloud = () => {\n const { scene } = use.useScene()\n const cloudGroup = new VolumetricCloud().cloudGroup\n\n if (!scene)\n throw new Error('scene is not defined')\n\n scene.add(cloudGroup)\n\n return cloudGroup\n}\n\nexport default createVolumetricCloud"],"mappings":";;;;;;;AAAA,SAASA,WAAW,EAAuBC,IAAI,EAAEC,GAAG,QAAQ,eAAe;AAC3E,OAAOC,aAAa;AAEpB,WAAaC,eAAe,6BAI1B,2BAAc;EAAA;EAAA,oCAHsB,EAAE;EAAA;EAIpC;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA,IAAMC,GAAG,GAAG,IAAIL,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC1C;EACA,IAAI,CAACM,UAAU,GAAG,IAAIL,IAAI,CAACI,GAAG,EAAEF,aAAa,CAAC;EAE9C,oBAAmBD,GAAG,CAACK,QAAQ,EAAE;IAAzBC,MAAM,iBAANA,MAAM;EAEdN,GAAG,CAACO,QAAQ,CAAC,YAAM;IACjB;IACA;EAAA,CACD,CAAC;AACJ,CAAC;AAGH,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAqB,GAAS;EAClC,qBAAkBR,GAAG,CAACK,QAAQ,EAAE;IAAxBI,KAAK,kBAALA,KAAK;EACb,IAAML,UAAU,GAAG,IAAIF,eAAe,EAAE,CAACE,UAAU;EAEnD,IAAI,CAACK,KAAK,EACR,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EAEzCD,KAAK,CAACE,GAAG,CAACP,UAAU,CAAC;EAErB,OAAOA,UAAU;AACnB,CAAC;AAED,eAAeI,qBAAqB"}
@@ -382,4 +382,5 @@ function updateSpritesOpacity(sprites, camera) {
382
382
  function clamp(num, min, max) {
383
383
  return Math.min(Math.max(num, min), max);
384
384
  }
385
- export default ViewHelper;
385
+ export default ViewHelper;
386
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BackSide","Clock","Euler","Mesh","MeshBasicMaterial","Object3D","OrthographicCamera","Quaternion","Raycaster","SphereGeometry","Vector2","Vector3","Vector4","getAxesLines","getAxesSpritePoints","getDomContainer","Array","fill","map","_","i","POS_X","POS_Y","POS_Z","NEG_X","NEG_Y","NEG_Z","clock","targetPosition","targetQuaternion","euler","q1","q2","point","dim","turnRate","Math","PI","raycaster","mouse","mouseStart","mouseAngle","dummy","radius","ViewHelper","camera","renderer","placement","size","domElement","orthoCamera","position","set","backgroundSphere","getBackgroundSphere","axesLines","spritePoints","domContainer","parentElement","appendChild","domRect","getBoundingClientRect","startListening","controlsChangeEvent","listener","updateOrientation","update","add","onpointerdown","e","onPointerDown","onpointermove","onPointerMove","onpointerleave","onPointerLeave","drag","dragging","isClick","resetSprites","clientX","clientY","sub","multiplyScalar","width","rotation","x","clamp","rotationStart","y","updateMatrixWorld","copy","quaternion","invert","applyQuaternion","target","setFromQuaternion","endDrag","document","removeEventListener","handleClick","animating","preventDefault","setRadius","addEventListener","material","opacity","handleHover","style","cursor","object","getIntersectionObject","setOrientation","userData","type","offset","scale","controls","delta","getDelta","animate","height","autoClear","setViewport","render","viewport","fromCamera","updateSpritesOpacity","offsetHeight","getViewport","step","rotateTowards","angleTo","orientation","prepareAnimationData","geometry","dispose","forEach","sprite","remove","sphere","color","side","transparent","depthTest","focusPoint","axis","setFromEuler","console","error","prepareQuaternions","distanceTo","lookAt","updatePointer","left","top","setFromCamera","startCoords","threshold","abs","event","intersectionObjects","intersects","intersectObjects","length","intersection","sprites","z","num","min","max"],"sources":["../../../src/helper/view/index.ts"],"sourcesContent":["import type {\n Camera,\n LineSegments,\n Material,\n OrbitControls,\n PerspectiveCamera,\n Sprite,\n WebGLRenderer,\n lib,\n} from '@anov/3d-core'\n\nimport {\n BackSide,\n Clock,\n Euler,\n Mesh,\n MeshBasicMaterial,\n Object3D,\n OrthographicCamera,\n Quaternion,\n Raycaster,\n SphereGeometry,\n Vector2,\n Vector3,\n Vector4,\n use,\n} from '@anov/3d-core'\nimport { getAxesLines, getAxesSpritePoints, getDomContainer } from './utils'\n\nconst [POS_X, POS_Y, POS_Z, NEG_X, NEG_Y, NEG_Z] = Array(6)\n .fill(0)\n .map((_, i) => i)\n\nconst clock = new Clock()\nconst targetPosition = new Vector3()\nconst targetQuaternion = new Quaternion()\nconst euler = new Euler()\nconst q1 = new Quaternion()\nconst q2 = new Quaternion()\nconst point = new Vector3()\nconst dim = 128\nconst turnRate = 2 * Math.PI\nconst raycaster = new Raycaster()\nconst mouse = new Vector2()\nconst mouseStart = new Vector2()\nconst mouseAngle = new Vector2()\nconst dummy = new Object3D()\nlet radius = 0\n\ntype GizmoOrientation = '+x' | '-x' | '+y' | '-y' | '+z' | '-z'\n\nexport type DomPlacement =\n | 'top-left'\n | 'top-right'\n | 'top-center'\n | 'center-right'\n | 'center-left'\n | 'center-center'\n | 'bottom-left'\n | 'bottom-right'\n | 'bottom-center'\n\nclass ViewHelper extends Object3D {\n camera: OrthographicCamera | PerspectiveCamera\n orthoCamera = new OrthographicCamera(-1.8, 1.8, 1.8, -1.8, 0, 4)\n isViewHelper = true\n animating = false\n target = new Vector3()\n backgroundSphere: Mesh\n axesLines: LineSegments\n spritePoints: Sprite[]\n domElement: HTMLElement\n domContainer: HTMLElement\n domRect: DOMRect\n dragging = false\n renderer: WebGLRenderer\n controls?: OrbitControls | lib.TrackballControls\n controlsChangeEvent: { listener: () => void }\n viewport: Vector4 = new Vector4()\n offsetHeight = 0\n\n constructor(\n camera: PerspectiveCamera | OrthographicCamera,\n renderer: WebGLRenderer,\n placement: DomPlacement = 'bottom-right',\n size = 128,\n ) {\n super()\n\n this.renderer = renderer\n this.camera = camera\n this.domElement = renderer.domElement\n this.orthoCamera.position.set(0, 0, 2)\n\n this.backgroundSphere = getBackgroundSphere()\n this.axesLines = getAxesLines()\n this.spritePoints = getAxesSpritePoints()\n this.domContainer = getDomContainer(placement, size)\n\n // This may cause confusion if the parent isn't the body and doesn't have a `position:relative`\n this.domElement.parentElement!.appendChild(this.domContainer)\n this.domRect = this.domContainer.getBoundingClientRect()\n this.startListening()\n\n this.controlsChangeEvent = { listener: () => this.updateOrientation() }\n this.update()\n this.updateOrientation()\n\n this.add(this.backgroundSphere, this.axesLines, ...this.spritePoints)\n }\n\n startListening() {\n this.domContainer.onpointerdown = e => this.onPointerDown(e)\n this.domContainer.onpointermove = e => this.onPointerMove(e)\n this.domContainer.onpointerleave = () => this.onPointerLeave()\n }\n\n onPointerDown(e: PointerEvent) {\n const drag = (e: PointerEvent) => {\n if (!this.dragging && isClick(e, mouseStart))\n return\n if (!this.dragging) {\n resetSprites(this.spritePoints)\n this.dragging = true\n }\n\n mouseAngle\n .set(e.clientX, e.clientY)\n .sub(mouseStart)\n .multiplyScalar((1 / this.domRect.width) * Math.PI)\n\n this.rotation.x = clamp(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n rotationStart.x + mouseAngle.y,\n Math.PI / -2 + 0.001,\n Math.PI / 2 - 0.001,\n )\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n this.rotation.y = rotationStart.y + mouseAngle.x\n this.updateMatrixWorld()\n\n q1.copy(this.quaternion).invert()\n\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n this.camera.rotation.setFromQuaternion(q1)\n\n this.updateOrientation(false)\n }\n const endDrag = () => {\n document.removeEventListener('pointermove', drag, false)\n document.removeEventListener('pointerup', endDrag, false)\n\n if (!this.dragging) {\n this.handleClick(e)\n return\n }\n\n this.dragging = false\n }\n\n if (this.animating === true)\n return\n e.preventDefault()\n\n mouseStart.set(e.clientX, e.clientY)\n\n const rotationStart = euler.copy(this.rotation)\n\n setRadius(this.camera, this.target)\n\n document.addEventListener('pointermove', drag, false)\n document.addEventListener('pointerup', endDrag, false)\n }\n\n onPointerMove(e: PointerEvent) {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0.2\n this.handleHover(e)\n }\n\n onPointerLeave() {\n if (this.dragging)\n return;\n (this.backgroundSphere.material as Material).opacity = 0\n resetSprites(this.spritePoints)\n this.domContainer.style.cursor = ''\n }\n\n handleClick(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n if (!object)\n return\n\n this.setOrientation(object.userData.type)\n }\n\n handleHover(e: PointerEvent) {\n const object = getIntersectionObject(\n e,\n this.domRect,\n this.orthoCamera,\n this.spritePoints,\n )\n\n resetSprites(this.spritePoints)\n\n if (!object) {\n this.domContainer.style.cursor = ''\n }\n else {\n object.material.map!.offset.x = 0.5\n object.scale.multiplyScalar(1.2)\n this.domContainer.style.cursor = 'pointer'\n }\n }\n\n setControls(controls?: OrbitControls | lib.TrackballControls) {\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n this.target = new Vector3()\n }\n\n if (!controls)\n return\n\n this.controls = controls\n controls.addEventListener('change', this.controlsChangeEvent.listener)\n this.target = controls.target\n }\n\n render() {\n const delta = clock.getDelta()\n if (this.animating)\n this.animate(delta)\n\n const { width, height } = this.domElement.getBoundingClientRect()\n const autoClear = this.renderer.autoClear\n\n this.renderer.autoClear = false\n this.renderer.setViewport(width - dim, height - dim, dim, dim)\n this.renderer.render(this, this.orthoCamera)\n this.renderer.setViewport(this.viewport)\n this.renderer.autoClear = autoClear\n }\n\n updateOrientation(fromCamera = true) {\n if (fromCamera) {\n this.quaternion.copy(this.camera.quaternion).invert()\n this.updateMatrixWorld()\n }\n\n updateSpritesOpacity(this.spritePoints, this.camera)\n }\n\n update() {\n this.domRect = this.domContainer.getBoundingClientRect()\n this.offsetHeight = this.domElement.offsetHeight\n setRadius(this.camera, this.target)\n this.renderer.getViewport(this.viewport)\n\n this.updateOrientation()\n }\n\n animate(delta: number) {\n const step = delta * turnRate\n\n // animate position by doing a slerp and then scaling the position on the unit sphere\n\n q1.rotateTowards(q2, step)\n this.camera.position\n .set(0, 0, 1)\n .applyQuaternion(q1)\n .multiplyScalar(radius)\n .add(this.target)\n\n // animate orientation\n\n this.camera.quaternion.rotateTowards(targetQuaternion, step)\n\n this.updateOrientation()\n\n if (q1.angleTo(q2) === 0)\n this.animating = false\n }\n\n setOrientation(orientation: GizmoOrientation) {\n prepareAnimationData(this.camera, this.target, orientation)\n this.animating = true\n }\n\n dispose() {\n this.axesLines.geometry.dispose();\n (this.axesLines.material as Material).dispose()\n\n this.backgroundSphere.geometry.dispose();\n (this.backgroundSphere.material as Material).dispose()\n\n this.spritePoints.forEach((sprite) => {\n sprite.material.map!.dispose()\n sprite.material.dispose()\n })\n\n this.domContainer.remove()\n\n if (this.controls) {\n this.controls.removeEventListener(\n 'change',\n this.controlsChangeEvent.listener,\n )\n }\n }\n}\n\nfunction getBackgroundSphere() {\n const geometry = new SphereGeometry(1.6)\n const sphere = new Mesh(\n geometry,\n new MeshBasicMaterial({\n color: 0xFFFFFF,\n side: BackSide,\n transparent: true,\n opacity: 0,\n depthTest: false,\n }),\n )\n\n return sphere\n}\n\nfunction prepareAnimationData(\n camera: OrthographicCamera | PerspectiveCamera,\n focusPoint: Vector3,\n axis: GizmoOrientation,\n) {\n switch (axis) {\n case '+x':\n targetPosition.set(1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI * 0.5, 0))\n break\n\n case '+y':\n targetPosition.set(0, 1, 0)\n targetQuaternion.setFromEuler(new Euler(-Math.PI * 0.5, 0, 0))\n break\n\n case '+z':\n targetPosition.set(0, 0, 1)\n targetQuaternion.setFromEuler(new Euler())\n break\n\n case '-x':\n targetPosition.set(-1, 0, 0)\n targetQuaternion.setFromEuler(new Euler(0, -Math.PI * 0.5, 0))\n break\n\n case '-y':\n targetPosition.set(0, -1, 0)\n targetQuaternion.setFromEuler(new Euler(Math.PI * 0.5, 0, 0))\n break\n\n case '-z':\n targetPosition.set(0, 0, -1)\n targetQuaternion.setFromEuler(new Euler(0, Math.PI, 0))\n break\n\n default:\n console.error('ViewHelper: Invalid axis.')\n }\n\n setRadius(camera, focusPoint)\n prepareQuaternions(camera, focusPoint)\n}\n\nfunction setRadius(camera: Camera, focusPoint: Vector3) {\n radius = camera.position.distanceTo(focusPoint)\n}\n\nfunction prepareQuaternions(camera: Camera, focusPoint: Vector3) {\n targetPosition.multiplyScalar(radius).add(focusPoint)\n\n dummy.position.copy(focusPoint)\n\n dummy.lookAt(camera.position)\n q1.copy(dummy.quaternion)\n\n dummy.lookAt(targetPosition)\n q2.copy(dummy.quaternion)\n}\n\nfunction updatePointer(\n e: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n) {\n mouse.x = ((e.clientX - domRect.left) / domRect.width) * 2 - 1\n mouse.y = -((e.clientY - domRect.top) / domRect.height) * 2 + 1\n\n raycaster.setFromCamera(mouse, orthoCamera)\n}\n\nfunction isClick(\n e: PointerEvent,\n startCoords: Vector2,\n threshold = 10,\n) {\n return (\n Math.abs(e.clientX - startCoords.x) < threshold\n && Math.abs(e.clientY - startCoords.y) < threshold\n )\n}\n\nfunction getIntersectionObject(\n event: PointerEvent,\n domRect: DOMRect,\n orthoCamera: OrthographicCamera,\n intersectionObjects: Sprite[],\n) {\n updatePointer(event, domRect, orthoCamera)\n\n const intersects = raycaster.intersectObjects(intersectionObjects)\n\n if (!intersects.length)\n return null\n\n const intersection = intersects[0]\n return intersection.object as Sprite\n}\n\nfunction resetSprites(sprites: Sprite[]) {\n let i = sprites.length\n\n while (i--) {\n const scale = i < 3 ? 0.6 : 0.4\n sprites[i].scale.set(scale, scale, scale)\n sprites[i].material.map!.offset.x = 1\n }\n // sprites.forEach((sprite) => (sprite.material.map!.offset.x = 1));\n}\n\nfunction updateSpritesOpacity(sprites: Sprite[], camera: Camera) {\n point.set(0, 0, 1)\n point.applyQuaternion(camera.quaternion)\n\n if (point.x >= 0) {\n sprites[POS_X].material.opacity = 1\n sprites[NEG_X].material.opacity = 0.5\n }\n else {\n sprites[POS_X].material.opacity = 0.5\n sprites[NEG_X].material.opacity = 1\n }\n\n if (point.y >= 0) {\n sprites[POS_Y].material.opacity = 1\n sprites[NEG_Y].material.opacity = 0.5\n }\n else {\n sprites[POS_Y].material.opacity = 0.5\n sprites[NEG_Y].material.opacity = 1\n }\n\n if (point.z >= 0) {\n sprites[POS_Z].material.opacity = 1\n sprites[NEG_Z].material.opacity = 0.5\n }\n else {\n sprites[POS_Z].material.opacity = 0.5\n sprites[NEG_Z].material.opacity = 1\n }\n}\n\nfunction clamp(num: number, min: number, max: number) {\n return Math.min(Math.max(num, min), max)\n}\n\nexport default ViewHelper\n"],"mappings":"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"}
@@ -88,4 +88,5 @@ export var getAxesSpritePoints = function getAxesSpritePoints() {
88
88
  sprite.renderOrder = 1;
89
89
  return sprite;
90
90
  });
91
- };
91
+ };
92
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BufferAttribute","BufferGeometry","CanvasTexture","Color","LineBasicMaterial","LineSegments","RepeatWrapping","Sprite","SpriteMaterial","axesColors","getDomContainer","placement","size","div","document","createElement","style","height","width","borderRadius","position","split","y","x","transform","left","right","top","bottom","getAxesLines","distance","Array","fill","map","_","i","flat","color","toArray","geometry","setAttribute","Float32Array","linewidth","vertexColors","getSpriteMaterial","text","canvas","context","getContext","beginPath","arc","Math","PI","closePath","fillStyle","getStyle","font","textAlign","fillText","toUpperCase","texture","wrapS","wrapT","repeat","toneMapped","transparent","getAxesSpritePoints","axes","isPositive","sign","axis","sprite","userData","type","scale","setScalar","renderOrder"],"sources":["../../../src/helper/view/utils.ts"],"sourcesContent":["import { BufferAttribute, BufferGeometry, CanvasTexture, Color, LineBasicMaterial, LineSegments, RepeatWrapping, Sprite, SpriteMaterial } from '@anov/3d-core'\nimport type { DomPlacement } from './index'\n\nconst axesColors = [\n new Color(0xFF3653),\n new Color(0x8ADB00),\n new Color(0x2C8FFF),\n]\n\nexport const getDomContainer = (placement: DomPlacement, size: number) => {\n const div = document.createElement('div')\n const style = div.style\n\n style.height = `${size}px`\n style.width = `${size}px`\n style.borderRadius = '100%'\n style.position = 'absolute'\n\n const [y, x] = placement.split('-')\n\n style.transform = ''\n style.left = x === 'left' ? '0' : x === 'center' ? '50%' : ''\n style.right = x === 'right' ? '0' : ''\n style.transform += x === 'center' ? 'translateX(-50%)' : ''\n style.top = y === 'top' ? '0' : y === 'bottom' ? '' : '50%'\n style.bottom = y === 'bottom' ? '0' : ''\n style.transform += y === 'center' ? 'translateY(-50%)' : ''\n\n return div\n}\n\nexport const getAxesLines = () => {\n const distance = 0.9\n const position = Array(3)\n .fill(0)\n .map((_, i) => [\n !i ? distance : 0,\n i === 1 ? distance : 0,\n i === 2 ? distance : 0,\n 0,\n 0,\n 0,\n ])\n .flat()\n const color = Array(6)\n .fill(0)\n .map((_, i) =>\n i < 2\n ? axesColors[0].toArray()\n : i < 4\n ? axesColors[1].toArray()\n : axesColors[2].toArray(),\n )\n .flat()\n\n const geometry = new BufferGeometry()\n geometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(position), 3),\n )\n geometry.setAttribute(\n 'color',\n new BufferAttribute(new Float32Array(color), 3),\n )\n\n return new LineSegments(\n geometry,\n new LineBasicMaterial({\n linewidth: 3,\n vertexColors: true,\n }),\n )\n}\n\nexport const getSpriteMaterial = (color: Color, text: 'x' | 'y' | 'z' | null = null) => {\n const canvas = document.createElement('canvas')\n canvas.width = 128\n canvas.height = 64\n\n const context = canvas.getContext('2d') as CanvasRenderingContext2D\n context.beginPath()\n context.arc(32, 32, 32, 0, 2 * Math.PI)\n context.closePath()\n context.fillStyle = color.getStyle()\n context.fill()\n\n context.beginPath()\n context.arc(96, 32, 32, 0, 2 * Math.PI)\n context.closePath()\n context.fillStyle = '#FFF'\n context.fill()\n\n if (text !== null) {\n context.font = 'bold 48px Arial'\n context.textAlign = 'center'\n context.fillStyle = '#000'\n context.fillText(text.toUpperCase(), 32, 48)\n context.fillText(text.toUpperCase(), 96, 48)\n }\n\n const texture = new CanvasTexture(canvas)\n texture.wrapS = texture.wrapT = RepeatWrapping\n texture.repeat.x = 0.5\n\n return new SpriteMaterial({\n map: texture,\n toneMapped: false,\n transparent: true,\n })\n}\n\nexport const getAxesSpritePoints = () => {\n const axes = ['x', 'y', 'z'] as const\n return Array(6)\n .fill(0)\n .map((_, i) => {\n const isPositive = i < 3\n const sign = isPositive ? '+' : '-'\n const axis = axes[i % 3]\n const color = axesColors[i % 3]\n\n const sprite = new Sprite(\n getSpriteMaterial(color, isPositive ? axis : null),\n )\n sprite.userData.type = `${sign}${axis}`\n sprite.scale.setScalar(isPositive ? 0.6 : 0.4)\n sprite.position[axis] = isPositive ? 1.2 : -1.2\n sprite.renderOrder = 1\n\n return sprite\n })\n}"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,8 +11,10 @@ import ViewHelper from './helper/view';
11
11
  import createSkySystem from './environment/sky';
12
12
  import createVolumetricCloud from './environment/volumetricCloud/inex';
13
13
  import createSkyCloud from './environment/shaderCloud/index';
14
- import Snow from './environment/showShder';
15
- import Rain from './environment/rainShder';
14
+ import Snow from './environment/showShader';
15
+ import Rain from './environment/rainShader';
16
+ import Poi from './poi/index';
17
+ export * from './animation';
16
18
  export { SceneControl, // todo remove
17
- mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, initPostEffects, // effect
19
+ mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, initPostEffects, // effect
18
20
  createHighSelectedTool, GridMaterial, ViewHelper, };
package/dist/index.js CHANGED
@@ -11,10 +11,13 @@ import ViewHelper from "./helper/view";
11
11
  import createSkySystem from "./environment/sky";
12
12
  import createVolumetricCloud from "./environment/volumetricCloud/inex";
13
13
  import createSkyCloud from "./environment/shaderCloud/index";
14
- import Snow from "./environment/showShder";
15
- import Rain from "./environment/rainShder";
14
+ import Snow from "./environment/showShader";
15
+ import Rain from "./environment/rainShader";
16
+ import Poi from "./poi/index";
17
+ export * from "./animation";
16
18
  export { SceneControl,
17
19
  // todo remove
18
- mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, initPostEffects,
20
+ mouseDraweLine, createRain, createSnow, createCloud, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Poi, initPostEffects,
19
21
  // effect
20
- createHighSelectedTool, GridMaterial, ViewHelper };
22
+ createHighSelectedTool, GridMaterial, ViewHelper };
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SceneControl","mouseDraweLine","createSnow","createRain","createCloud","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Poi"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { mouseDraweLine } from './core/mouseDrawe'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport createCloud from './environment/cloud'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport Poi from './poi/index'\n\nexport * from './animation'\n\nexport {\n SceneControl, // todo remove\n mouseDraweLine,\n createRain,\n createSnow,\n createCloud,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n Poi,\n initPostEffects, // effect\n createHighSelectedTool,\n\n GridMaterial,\n\n ViewHelper,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,cAAc;AACvB,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,OAAOC,WAAW;AAClB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,OAAOC,GAAG;AAEV;AAEA,SACEf,YAAY;AAAE;AACdC,cAAc,EACdE,UAAU,EACVD,UAAU,EACVE,WAAW,EACXG,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,GAAG,EACHV,eAAe;AAAE;AACjBC,sBAAsB,EAEtBE,YAAY,EAEZC,UAAU"}
@@ -99,4 +99,5 @@ var GridMaterial = /*#__PURE__*/function (_THREE$Material) {
99
99
  }
100
100
  return _createClass(GridMaterial);
101
101
  }(THREE.Material);
102
- export default GridMaterial;
102
+ export default GridMaterial;
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["THREE","vertexShader","fragmentShader","GridMaterial","options","side","transparent","theme","majorLineWidth","minorLineWidth","axisLineWidth","name","majorGridDiv","gridDiv","majorLineColor","minorLineColor","xAxisColor","zAxisColor","_majorLineWidth","_minorLineWidth","_axisLineWidth","_majorGridDiv","_gridDiv","_majorLineColor","Color","_minorLineColor","_xAxisColor","_zAxisColor","ShaderMaterial","DoubleSide","glslVersion","GLSL3","uniforms","u_baseAlpha","value","u_majorLineWidth","u_minorLineWidth","u_axisLineWidth","u_majorGridDiv","u_gridDiv","u_majorLineColor","u_minorLineColor","u_baseColor","u_xAxisColor","u_zAxisColor","Material"],"sources":["../../../src/material/pristineGridMaterial/index.ts"],"sourcesContent":["import * as THREE from '@anov/3d-core'\nimport vertexShader from './shader/vertex'\nimport fragmentShader from './shader/fragment'\n\ntype GridMaterialParameters = {\n name?: string\n side?: THREE.Side\n transparent?: boolean\n theme?: THREE.Color\n majorLineWidth?: number\n minorLineWidth?: number\n axisLineWidth?: number\n majorGridDiv?: number\n gridDiv?: number\n majorLineColor?: THREE.Color\n minorLineColor?: THREE.Color\n xAxisColor?: THREE.Color\n zAxisColor?: THREE.Color\n}\n\nclass GridMaterial extends THREE.Material {\n constructor(options?: GridMaterialParameters) {\n super()\n\n const { side, transparent, theme, majorLineWidth, minorLineWidth, axisLineWidth, name, majorGridDiv, gridDiv, majorLineColor, minorLineColor, xAxisColor, zAxisColor } = options || {}\n const _majorLineWidth = majorLineWidth ?? 0.04\n const _minorLineWidth = minorLineWidth ?? 0.01\n const _axisLineWidth = axisLineWidth ?? 0.15\n const _majorGridDiv = majorGridDiv ?? 10.0\n const _gridDiv = gridDiv ?? 4.0\n const _majorLineColor = majorLineColor ?? new THREE.Color()\n const _minorLineColor = minorLineColor ?? new THREE.Color()\n const _xAxisColor = xAxisColor ?? new THREE.Color(1, 0.3, 0.3)\n const _zAxisColor = zAxisColor ?? new THREE.Color(0.3, 0.3, 1)\n\n return new THREE.ShaderMaterial({\n side: side ?? THREE.DoubleSide,\n glslVersion: THREE.GLSL3,\n transparent: transparent ?? true,\n name: name ?? 'GridMaterial',\n vertexShader,\n fragmentShader,\n uniforms: {\n u_baseAlpha: { value: 0.5 },\n u_majorLineWidth: { value: _majorLineWidth }, // Example default value , 大网格线宽\n u_minorLineWidth: { value: _minorLineWidth }, // Example default value ,小网格线宽\n u_axisLineWidth: { value: _axisLineWidth }, // Example default value ,坐标轴线宽\n u_majorGridDiv: { value: _majorGridDiv }, // Example default value, 大网格间隔\n u_gridDiv: { value: _gridDiv }, // Example default value, 小网格间隔\n u_majorLineColor: { value: _majorLineColor }, // White color\n u_minorLineColor: { value: _minorLineColor }, // White color\n u_baseColor: { value: theme ?? new THREE.Color('#707070') }, // Black color\n u_xAxisColor: { value: _xAxisColor }, // Red color\n u_zAxisColor: { value: _zAxisColor }, // Blue color\n },\n })\n }\n}\n\nexport default GridMaterial\n"],"mappings":"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"}
@@ -1 +1,2 @@
1
- export default /* glsl */"\nprecision highp float;\n\n// Varyings from the vertex shader\nin vec2 v_uv;\nin vec2 v_worldPos;\n\n// Uniforms\nuniform float u_majorLineWidth, u_minorLineWidth, u_axisLineWidth;\nuniform vec3 u_majorLineColor, u_minorLineColor, u_baseColor;\nuniform vec3 u_xAxisColor, u_zAxisColor;\nuniform float u_majorGridDiv, u_baseAlpha;\nuniform vec2 u_resolution;\n\n// Output color\nout vec4 gColor;\n\nfloat saturate(float value) {\nreturn clamp(value, 0.0, 1.0);\n}\n\nvoid main() {\n // Calculate derivatives for anti-aliasing\nvec4 uvDDXY = vec4(dFdx(v_uv), dFdy(v_uv));\nvec2 uvDeriv = vec2(length(uvDDXY.xz), length(uvDDXY.yw));\n\nvec4 worldPosDDXY = vec4(dFdx(v_worldPos), dFdy(v_worldPos));\nvec2 worldPosDeriv = vec2(length(worldPosDDXY.xz), length(worldPosDDXY.yw));\n\n // Axis lines calculation\nfloat axisLineWidth = max(u_majorLineWidth, u_axisLineWidth);\n\nvec2 axisDrawWidth = vec2(axisLineWidth) + worldPosDeriv * 0.5; // Adjust for AA\nvec2 axisLineAA = worldPosDeriv * 1.5;\nvec2 axisLines2 = smoothstep(axisDrawWidth + axisLineAA, axisDrawWidth - axisLineAA, abs(v_worldPos.xy * 2.0));\naxisLines2 *= (axisLineWidth / axisDrawWidth);\n\n // Major grid lines\nfloat div = max(2.0, round(u_majorGridDiv));\nvec2 majorUVDeriv = worldPosDeriv / div;\nfloat majorLineWidth = u_majorLineWidth / div;\nvec2 majorDrawWidth = clamp(vec2(majorLineWidth), majorUVDeriv, vec2(0.5));\nvec2 majorLineAA = majorUVDeriv * 1.5;\nvec2 majorGridUV = 1.0 - abs(fract(v_worldPos.xy / div) * 2.0 - 1.0);\nvec2 majorGrid2 = smoothstep(majorDrawWidth + majorLineAA, majorDrawWidth - majorLineAA, majorGridUV);\nmajorGrid2 *= (majorLineWidth / majorDrawWidth);\n\n // Minor grid lines\nfloat minorLineWidth = u_minorLineWidth;\nbool minorInvertLine = minorLineWidth > 0.5;\nfloat minorTargetWidth = minorInvertLine ? 1.0 - minorLineWidth : minorLineWidth;\nvec2 minorDrawWidth = clamp(vec2(minorTargetWidth), uvDeriv, vec2(0.5));\nvec2 minorLineAA = uvDeriv * 1.5;\nvec2 minorGridUV = abs(fract(v_uv) * 2.0 - 1.0);\nminorGridUV = minorInvertLine ? minorGridUV : 1.0 - minorGridUV;\nvec2 minorGrid2 = smoothstep(minorDrawWidth + minorLineAA, minorDrawWidth - minorLineAA, minorGridUV);\nminorGrid2 *= (minorTargetWidth / minorDrawWidth);\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\n // If we're drawing axis lines, don't draw grid lines on axis\nmajorGrid2 = vec2(0.);\nminorGrid2 = vec2(0.);\n}\n\n // Combine minor and major grid lines\nfloat minorGrid = mix(minorGrid2.x, 1.0, minorGrid2.y);\nfloat majorGrid = mix(majorGrid2.x, 1.0, majorGrid2.y);\n\n // Final color calculations for grid\nvec3 gridColor = mix(u_baseColor, u_minorLineColor, minorGrid);\ngridColor = mix(gridColor, u_majorLineColor, majorGrid);\nfloat gridAlpha = u_baseAlpha;\n\n // Apply base alpha to the grid lines\nif(minorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, minorGrid));\n}\nif(majorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, majorGrid));\n}\n\n // Apply axis color to the axis lines\nvec3 axisColor = mix(vec3(1.), u_xAxisColor, step(0.5, abs(v_worldPos.x)));\naxisColor = mix(axisColor, u_zAxisColor, step(0.5, abs(v_worldPos.y)));\n\nvec3 finalColor = mix(gridColor, axisColor, max(axisLines2.x, axisLines2.y));\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, max(axisLines2.x, axisLines2.y)));\n}\n\n // Set the final fragment color\ngColor = vec4(finalColor, gridAlpha);\n}\n";
1
+ export default /* glsl */"\nprecision highp float;\n\n// Varyings from the vertex shader\nin vec2 v_uv;\nin vec2 v_worldPos;\n\n// Uniforms\nuniform float u_majorLineWidth, u_minorLineWidth, u_axisLineWidth;\nuniform vec3 u_majorLineColor, u_minorLineColor, u_baseColor;\nuniform vec3 u_xAxisColor, u_zAxisColor;\nuniform float u_majorGridDiv, u_baseAlpha;\nuniform vec2 u_resolution;\n\n// Output color\nout vec4 gColor;\n\nfloat saturate(float value) {\nreturn clamp(value, 0.0, 1.0);\n}\n\nvoid main() {\n // Calculate derivatives for anti-aliasing\nvec4 uvDDXY = vec4(dFdx(v_uv), dFdy(v_uv));\nvec2 uvDeriv = vec2(length(uvDDXY.xz), length(uvDDXY.yw));\n\nvec4 worldPosDDXY = vec4(dFdx(v_worldPos), dFdy(v_worldPos));\nvec2 worldPosDeriv = vec2(length(worldPosDDXY.xz), length(worldPosDDXY.yw));\n\n // Axis lines calculation\nfloat axisLineWidth = max(u_majorLineWidth, u_axisLineWidth);\n\nvec2 axisDrawWidth = vec2(axisLineWidth) + worldPosDeriv * 0.5; // Adjust for AA\nvec2 axisLineAA = worldPosDeriv * 1.5;\nvec2 axisLines2 = smoothstep(axisDrawWidth + axisLineAA, axisDrawWidth - axisLineAA, abs(v_worldPos.xy * 2.0));\naxisLines2 *= (axisLineWidth / axisDrawWidth);\n\n // Major grid lines\nfloat div = max(2.0, round(u_majorGridDiv));\nvec2 majorUVDeriv = worldPosDeriv / div;\nfloat majorLineWidth = u_majorLineWidth / div;\nvec2 majorDrawWidth = clamp(vec2(majorLineWidth), majorUVDeriv, vec2(0.5));\nvec2 majorLineAA = majorUVDeriv * 1.5;\nvec2 majorGridUV = 1.0 - abs(fract(v_worldPos.xy / div) * 2.0 - 1.0);\nvec2 majorGrid2 = smoothstep(majorDrawWidth + majorLineAA, majorDrawWidth - majorLineAA, majorGridUV);\nmajorGrid2 *= (majorLineWidth / majorDrawWidth);\n\n // Minor grid lines\nfloat minorLineWidth = u_minorLineWidth;\nbool minorInvertLine = minorLineWidth > 0.5;\nfloat minorTargetWidth = minorInvertLine ? 1.0 - minorLineWidth : minorLineWidth;\nvec2 minorDrawWidth = clamp(vec2(minorTargetWidth), uvDeriv, vec2(0.5));\nvec2 minorLineAA = uvDeriv * 1.5;\nvec2 minorGridUV = abs(fract(v_uv) * 2.0 - 1.0);\nminorGridUV = minorInvertLine ? minorGridUV : 1.0 - minorGridUV;\nvec2 minorGrid2 = smoothstep(minorDrawWidth + minorLineAA, minorDrawWidth - minorLineAA, minorGridUV);\nminorGrid2 *= (minorTargetWidth / minorDrawWidth);\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\n // If we're drawing axis lines, don't draw grid lines on axis\nmajorGrid2 = vec2(0.);\nminorGrid2 = vec2(0.);\n}\n\n // Combine minor and major grid lines\nfloat minorGrid = mix(minorGrid2.x, 1.0, minorGrid2.y);\nfloat majorGrid = mix(majorGrid2.x, 1.0, majorGrid2.y);\n\n // Final color calculations for grid\nvec3 gridColor = mix(u_baseColor, u_minorLineColor, minorGrid);\ngridColor = mix(gridColor, u_majorLineColor, majorGrid);\nfloat gridAlpha = u_baseAlpha;\n\n // Apply base alpha to the grid lines\nif(minorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, minorGrid));\n}\nif(majorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, majorGrid));\n}\n\n // Apply axis color to the axis lines\nvec3 axisColor = mix(vec3(1.), u_xAxisColor, step(0.5, abs(v_worldPos.x)));\naxisColor = mix(axisColor, u_zAxisColor, step(0.5, abs(v_worldPos.y)));\n\nvec3 finalColor = mix(gridColor, axisColor, max(axisLines2.x, axisLines2.y));\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, max(axisLines2.x, axisLines2.y)));\n}\n\n // Set the final fragment color\ngColor = vec4(finalColor, gridAlpha);\n}\n";
2
+ //# sourceMappingURL=fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/material/pristineGridMaterial/shader/fragment.ts"],"sourcesContent":["export default /* glsl */ `\nprecision highp float;\n\n// Varyings from the vertex shader\nin vec2 v_uv;\nin vec2 v_worldPos;\n\n// Uniforms\nuniform float u_majorLineWidth, u_minorLineWidth, u_axisLineWidth;\nuniform vec3 u_majorLineColor, u_minorLineColor, u_baseColor;\nuniform vec3 u_xAxisColor, u_zAxisColor;\nuniform float u_majorGridDiv, u_baseAlpha;\nuniform vec2 u_resolution;\n\n// Output color\nout vec4 gColor;\n\nfloat saturate(float value) {\nreturn clamp(value, 0.0, 1.0);\n}\n\nvoid main() {\n // Calculate derivatives for anti-aliasing\nvec4 uvDDXY = vec4(dFdx(v_uv), dFdy(v_uv));\nvec2 uvDeriv = vec2(length(uvDDXY.xz), length(uvDDXY.yw));\n\nvec4 worldPosDDXY = vec4(dFdx(v_worldPos), dFdy(v_worldPos));\nvec2 worldPosDeriv = vec2(length(worldPosDDXY.xz), length(worldPosDDXY.yw));\n\n // Axis lines calculation\nfloat axisLineWidth = max(u_majorLineWidth, u_axisLineWidth);\n\nvec2 axisDrawWidth = vec2(axisLineWidth) + worldPosDeriv * 0.5; // Adjust for AA\nvec2 axisLineAA = worldPosDeriv * 1.5;\nvec2 axisLines2 = smoothstep(axisDrawWidth + axisLineAA, axisDrawWidth - axisLineAA, abs(v_worldPos.xy * 2.0));\naxisLines2 *= (axisLineWidth / axisDrawWidth);\n\n // Major grid lines\nfloat div = max(2.0, round(u_majorGridDiv));\nvec2 majorUVDeriv = worldPosDeriv / div;\nfloat majorLineWidth = u_majorLineWidth / div;\nvec2 majorDrawWidth = clamp(vec2(majorLineWidth), majorUVDeriv, vec2(0.5));\nvec2 majorLineAA = majorUVDeriv * 1.5;\nvec2 majorGridUV = 1.0 - abs(fract(v_worldPos.xy / div) * 2.0 - 1.0);\nvec2 majorGrid2 = smoothstep(majorDrawWidth + majorLineAA, majorDrawWidth - majorLineAA, majorGridUV);\nmajorGrid2 *= (majorLineWidth / majorDrawWidth);\n\n // Minor grid lines\nfloat minorLineWidth = u_minorLineWidth;\nbool minorInvertLine = minorLineWidth > 0.5;\nfloat minorTargetWidth = minorInvertLine ? 1.0 - minorLineWidth : minorLineWidth;\nvec2 minorDrawWidth = clamp(vec2(minorTargetWidth), uvDeriv, vec2(0.5));\nvec2 minorLineAA = uvDeriv * 1.5;\nvec2 minorGridUV = abs(fract(v_uv) * 2.0 - 1.0);\nminorGridUV = minorInvertLine ? minorGridUV : 1.0 - minorGridUV;\nvec2 minorGrid2 = smoothstep(minorDrawWidth + minorLineAA, minorDrawWidth - minorLineAA, minorGridUV);\nminorGrid2 *= (minorTargetWidth / minorDrawWidth);\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\n // If we're drawing axis lines, don't draw grid lines on axis\nmajorGrid2 = vec2(0.);\nminorGrid2 = vec2(0.);\n}\n\n // Combine minor and major grid lines\nfloat minorGrid = mix(minorGrid2.x, 1.0, minorGrid2.y);\nfloat majorGrid = mix(majorGrid2.x, 1.0, majorGrid2.y);\n\n // Final color calculations for grid\nvec3 gridColor = mix(u_baseColor, u_minorLineColor, minorGrid);\ngridColor = mix(gridColor, u_majorLineColor, majorGrid);\nfloat gridAlpha = u_baseAlpha;\n\n // Apply base alpha to the grid lines\nif(minorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, minorGrid));\n}\nif(majorGrid > 0.0) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, majorGrid));\n}\n\n // Apply axis color to the axis lines\nvec3 axisColor = mix(vec3(1.), u_xAxisColor, step(0.5, abs(v_worldPos.x)));\naxisColor = mix(axisColor, u_zAxisColor, step(0.5, abs(v_worldPos.y)));\n\nvec3 finalColor = mix(gridColor, axisColor, max(axisLines2.x, axisLines2.y));\n\nif(max(axisLines2.x, axisLines2.y) > 0.) {\ngridAlpha = saturate(mix(gridAlpha, 1.0, max(axisLines2.x, axisLines2.y)));\n}\n\n // Set the final fragment color\ngColor = vec4(finalColor, gridAlpha);\n}\n`"],"mappings":"AAAA,eAAe"}
@@ -1 +1,2 @@
1
- export default /* glsl */"\n\nprecision highp float;\n\n// Uniforms\nuniform float u_majorGridDiv;\nuniform float u_gridDiv;\n\nout vec2 v_uv; // Passed to the fragment shader\nout vec2 v_worldPos;\nvoid main() {\n vec4 transformed = vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformed;\n\n vec3 worldPosition = (modelMatrix * transformed).xyz;\n\n v_worldPos = worldPosition.xz * u_gridDiv;\n\n // Use local position for grid calculations\n vec3 localPos = transformed.xyz;\n vec3 cameraCenteringOffset = floor(cameraPosition);\n vec3 cameraSnappedWorldPos = worldPosition.xyz - cameraCenteringOffset;\n v_uv = cameraSnappedWorldPos.xz * u_gridDiv;\n\n}\n";
1
+ export default /* glsl */"\n\nprecision highp float;\n\n// Uniforms\nuniform float u_majorGridDiv;\nuniform float u_gridDiv;\n\nout vec2 v_uv; // Passed to the fragment shader\nout vec2 v_worldPos;\nvoid main() {\n vec4 transformed = vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformed;\n\n vec3 worldPosition = (modelMatrix * transformed).xyz;\n\n v_worldPos = worldPosition.xz * u_gridDiv;\n\n // Use local position for grid calculations\n vec3 localPos = transformed.xyz;\n vec3 cameraCenteringOffset = floor(cameraPosition);\n vec3 cameraSnappedWorldPos = worldPosition.xyz - cameraCenteringOffset;\n v_uv = cameraSnappedWorldPos.xz * u_gridDiv;\n\n}\n";
2
+ //# sourceMappingURL=vertex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/material/pristineGridMaterial/shader/vertex.ts"],"sourcesContent":["export default /* glsl */ `\n\nprecision highp float;\n\n// Uniforms\nuniform float u_majorGridDiv;\nuniform float u_gridDiv;\n\nout vec2 v_uv; // Passed to the fragment shader\nout vec2 v_worldPos;\nvoid main() {\n vec4 transformed = vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * transformed;\n\n vec3 worldPosition = (modelMatrix * transformed).xyz;\n\n v_worldPos = worldPosition.xz * u_gridDiv;\n\n // Use local position for grid calculations\n vec3 localPos = transformed.xyz;\n vec3 cameraCenteringOffset = floor(cameraPosition);\n vec3 cameraSnappedWorldPos = worldPosition.xyz - cameraCenteringOffset;\n v_uv = cameraSnappedWorldPos.xz * u_gridDiv;\n\n}\n`"],"mappings":"AAAA,eAAe"}