Browse Source

Some changes, to deploy to github.

Simon 1 year ago
parent
commit
c6d911b13f
46 changed files with 423 additions and 66 deletions
  1. 390 6
      package-lock.json
  2. 4 1
      package.json
  3. 0 0
      public/characters/README.txt
  4. 0 0
      public/characters/guard.glb
  5. 0 0
      public/characters/paladin.glb
  6. 0 0
      public/characters/ybot.glb
  7. 0 0
      public/models/README.txt
  8. 0 0
      public/models/mountain.glb
  9. 0 0
      public/shaders/bugs-lighting-model-fsh.glsl
  10. 0 0
      public/shaders/bugs-lighting-model-vsh.glsl
  11. 0 0
      public/shaders/common.glsl
  12. 0 0
      public/shaders/grass-lighting-model-fsh.glsl
  13. 0 0
      public/shaders/grass-lighting-model-vsh.glsl
  14. 0 0
      public/shaders/header.glsl
  15. 0 0
      public/shaders/lighting-model-fsh.glsl
  16. 0 0
      public/shaders/lighting-model-vsh.glsl
  17. 0 0
      public/shaders/noise.glsl
  18. 0 0
      public/shaders/oklab.glsl
  19. 0 0
      public/shaders/phong-lighting-model-fsh.glsl
  20. 0 0
      public/shaders/phong-lighting-model-vsh.glsl
  21. 0 0
      public/shaders/sky-lighting-model-fsh.glsl
  22. 0 0
      public/shaders/sky-lighting-model-vsh.glsl
  23. 0 0
      public/shaders/sky.glsl
  24. 0 0
      public/shaders/terrain-lighting-model-fsh.glsl
  25. 0 0
      public/shaders/terrain-lighting-model-vsh.glsl
  26. 0 0
      public/shaders/water-lighting-model-fsh.glsl
  27. 0 0
      public/shaders/water-lighting-model-vsh.glsl
  28. 0 0
      public/shaders/water-texture-fsh.glsl
  29. 0 0
      public/shaders/water-texture-vsh.glsl
  30. 0 0
      public/shaders/wind-lighting-model-fsh.glsl
  31. 0 0
      public/shaders/wind-lighting-model-vsh.glsl
  32. 0 0
      public/textures/butterfly.png
  33. 0 0
      public/textures/dust.png
  34. 0 0
      public/textures/grass.png
  35. 0 0
      public/textures/grid.png
  36. 0 0
      public/textures/moth.png
  37. 0 0
      public/textures/terrain.png
  38. 0 0
      public/textures/whitesquare.png
  39. 0 28
      src/base/load-controller.js
  40. 1 1
      src/base/render/bugs-component.js
  41. 3 3
      src/base/render/terrain-component.js
  42. 1 1
      src/base/render/wind-component.js
  43. 3 6
      src/base/threejs-component.js
  44. 1 1
      src/demo-builder.js
  45. 17 17
      src/game/render/shaders.js
  46. 3 2
      vite.config.js

+ 390 - 6
package-lock.json

@@ -11,13 +11,13 @@
         "@dimforge/rapier3d": "^0.11.2",
         "@dimforge/rapier3d": "^0.11.2",
         "mersenne-twister": "^1.1.0",
         "mersenne-twister": "^1.1.0",
         "n8ao": "^1.6.8",
         "n8ao": "^1.6.8",
-        "stats.js": "^0.17.0",
         "three": "^0.156.0",
         "three": "^0.156.0",
         "vite-plugin-solid": "^2.7.0",
         "vite-plugin-solid": "^2.7.0",
         "vite-plugin-top-level-await": "^1.3.0",
         "vite-plugin-top-level-await": "^1.3.0",
         "vite-plugin-wasm": "^3.2.2"
         "vite-plugin-wasm": "^3.2.2"
       },
       },
       "devDependencies": {
       "devDependencies": {
+        "gh-pages": "^6.0.0",
         "gltf-pipeline": "^4.1.0",
         "gltf-pipeline": "^4.1.0",
         "vite": "^4.4.9"
         "vite": "^4.4.9"
       }
       }
@@ -1237,6 +1237,33 @@
         "node": ">=4"
         "node": ">=4"
       }
       }
     },
     },
+    "node_modules/array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+      "dev": true,
+      "dependencies": {
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/async": {
+      "version": "3.2.5",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+      "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+      "dev": true
+    },
     "node_modules/autolinker": {
     "node_modules/autolinker": {
       "version": "4.0.0",
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-4.0.0.tgz",
       "resolved": "https://registry.npmjs.org/autolinker/-/autolinker-4.0.0.tgz",
@@ -1283,6 +1310,12 @@
         "@babel/core": "^7.0.0"
         "@babel/core": "^7.0.0"
       }
       }
     },
     },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
     "node_modules/bitmap-sdf": {
     "node_modules/bitmap-sdf": {
       "version": "1.0.4",
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
       "resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
@@ -1295,6 +1328,16 @@
       "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
       "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
     "node_modules/browserslist": {
     "node_modules/browserslist": {
       "version": "4.21.10",
       "version": "4.21.10",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz",
@@ -1404,6 +1447,18 @@
       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+      "dev": true
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "dev": true
+    },
     "node_modules/convert-source-map": {
     "node_modules/convert-source-map": {
       "version": "1.9.0",
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
@@ -1454,6 +1509,12 @@
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz",
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz",
       "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw=="
       "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw=="
     },
     },
+    "node_modules/email-addresses": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz",
+      "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==",
+      "dev": true
+    },
     "node_modules/emoji-regex": {
     "node_modules/emoji-regex": {
       "version": "8.0.0",
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -1512,6 +1573,62 @@
         "node": ">=0.8.0"
         "node": ">=0.8.0"
       }
       }
     },
     },
+    "node_modules/filename-reserved-regex": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
+      "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/filenamify": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz",
+      "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==",
+      "dev": true,
+      "dependencies": {
+        "filename-reserved-regex": "^2.0.0",
+        "strip-outer": "^1.0.1",
+        "trim-repeated": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/find-cache-dir": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+      "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+      "dev": true,
+      "dependencies": {
+        "commondir": "^1.0.1",
+        "make-dir": "^3.0.2",
+        "pkg-dir": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/fs-extra": {
     "node_modules/fs-extra": {
       "version": "11.1.1",
       "version": "11.1.1",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
@@ -1526,6 +1643,12 @@
         "node": ">=14.14"
         "node": ">=14.14"
       }
       }
     },
     },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "dev": true
+    },
     "node_modules/fsevents": {
     "node_modules/fsevents": {
       "version": "2.3.3",
       "version": "2.3.3",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -1556,6 +1679,57 @@
         "node": "6.* || 8.* || >= 10.*"
         "node": "6.* || 8.* || >= 10.*"
       }
       }
     },
     },
+    "node_modules/gh-pages": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.0.0.tgz",
+      "integrity": "sha512-FXZWJRsvP/fK2HJGY+Di6FRNHvqFF6gOIELaopDjXXgjeOYSNURcuYwEO/6bwuq6koP5Lnkvnr5GViXzuOB89g==",
+      "dev": true,
+      "dependencies": {
+        "async": "^3.2.4",
+        "commander": "^11.0.0",
+        "email-addresses": "^5.0.0",
+        "filenamify": "^4.3.0",
+        "find-cache-dir": "^3.3.1",
+        "fs-extra": "^11.1.1",
+        "globby": "^6.1.0"
+      },
+      "bin": {
+        "gh-pages": "bin/gh-pages.js",
+        "gh-pages-clean": "bin/gh-pages-clean.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/gh-pages/node_modules/commander": {
+      "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+      "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=16"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/globals": {
     "node_modules/globals": {
       "version": "11.12.0",
       "version": "11.12.0",
       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
       "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
@@ -1564,6 +1738,22 @@
         "node": ">=4"
         "node": ">=4"
       }
       }
     },
     },
+    "node_modules/globby": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+      "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
+      "dev": true,
+      "dependencies": {
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/gltf-pipeline": {
     "node_modules/gltf-pipeline": {
       "version": "4.1.0",
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/gltf-pipeline/-/gltf-pipeline-4.1.0.tgz",
       "resolved": "https://registry.npmjs.org/gltf-pipeline/-/gltf-pipeline-4.1.0.tgz",
@@ -1610,6 +1800,22 @@
       "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
       "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz",
       "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="
       "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="
     },
     },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
     "node_modules/is-fullwidth-code-point": {
     "node_modules/is-fullwidth-code-point": {
       "version": "3.0.0",
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -1696,6 +1902,18 @@
       "integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==",
       "integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/long": {
     "node_modules/long": {
       "version": "5.2.3",
       "version": "5.2.3",
       "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
       "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
@@ -1710,6 +1928,21 @@
         "yallist": "^3.0.2"
         "yallist": "^3.0.2"
       }
       }
     },
     },
+    "node_modules/make-dir": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+      "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/merge-anything": {
     "node_modules/merge-anything": {
       "version": "5.1.7",
       "version": "5.1.7",
       "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.7.tgz",
       "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.7.tgz",
@@ -1747,6 +1980,18 @@
         "node": ">=10.0.0"
         "node": ">=10.0.0"
       }
       }
     },
     },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/ms": {
     "node_modules/ms": {
       "version": "2.1.2",
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -1789,6 +2034,15 @@
       "integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==",
       "integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/object-hash": {
     "node_modules/object-hash": {
       "version": "3.0.0",
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
       "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
@@ -1798,17 +2052,122 @@
         "node": ">= 6"
         "node": ">= 6"
       }
       }
     },
     },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/pako": {
     "node_modules/pako": {
       "version": "2.1.0",
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
       "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
       "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
       "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/picocolors": {
     "node_modules/picocolors": {
       "version": "1.0.0",
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
       "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
       "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
     },
     },
+    "node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+      "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+      "dev": true,
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
     "node_modules/postcss": {
     "node_modules/postcss": {
       "version": "8.4.29",
       "version": "8.4.29",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
@@ -1959,11 +2318,6 @@
         "node": ">=0.10.0"
         "node": ">=0.10.0"
       }
       }
     },
     },
-    "node_modules/stats.js": {
-      "version": "0.17.0",
-      "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz",
-      "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw=="
-    },
     "node_modules/string-width": {
     "node_modules/string-width": {
       "version": "4.2.3",
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -1990,6 +2344,18 @@
         "node": ">=8"
         "node": ">=8"
       }
       }
     },
     },
+    "node_modules/strip-outer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
+      "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/supports-color": {
     "node_modules/supports-color": {
       "version": "5.5.0",
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -2028,6 +2394,18 @@
         "topoquantize": "bin/topoquantize"
         "topoquantize": "bin/topoquantize"
       }
       }
     },
     },
+    "node_modules/trim-repeated": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
+      "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
+      "dev": true,
+      "dependencies": {
+        "escape-string-regexp": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/tslib": {
     "node_modules/tslib": {
       "version": "2.6.2",
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
@@ -2247,6 +2625,12 @@
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "dev": true
       "dev": true
     },
     },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "dev": true
+    },
     "node_modules/y18n": {
     "node_modules/y18n": {
       "version": "5.0.8",
       "version": "5.0.8",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",

+ 4 - 1
package.json

@@ -3,12 +3,16 @@
   "private": true,
   "private": true,
   "version": "0.0.0",
   "version": "0.0.0",
   "type": "module",
   "type": "module",
+  "homepage": "https://simondevyoutube.github.io/Quick_Grass/",
   "scripts": {
   "scripts": {
+    "predeploy" : "npm run build",
+    "deploy" : "gh-pages -d dist",
     "dev": "vite",
     "dev": "vite",
     "build": "vite build",
     "build": "vite build",
     "preview": "vite preview"
     "preview": "vite preview"
   },
   },
   "devDependencies": {
   "devDependencies": {
+    "gh-pages": "^6.0.0",
     "gltf-pipeline": "^4.1.0",
     "gltf-pipeline": "^4.1.0",
     "vite": "^4.4.9"
     "vite": "^4.4.9"
   },
   },
@@ -16,7 +20,6 @@
     "@dimforge/rapier3d": "^0.11.2",
     "@dimforge/rapier3d": "^0.11.2",
     "mersenne-twister": "^1.1.0",
     "mersenne-twister": "^1.1.0",
     "n8ao": "^1.6.8",
     "n8ao": "^1.6.8",
-    "stats.js": "^0.17.0",
     "three": "^0.156.0",
     "three": "^0.156.0",
     "vite-plugin-solid": "^2.7.0",
     "vite-plugin-solid": "^2.7.0",
     "vite-plugin-top-level-await": "^1.3.0",
     "vite-plugin-top-level-await": "^1.3.0",

+ 0 - 0
resources/characters/README.txt → public/characters/README.txt


+ 0 - 0
resources/characters/guard.glb → public/characters/guard.glb


+ 0 - 0
resources/characters/paladin.glb → public/characters/paladin.glb


+ 0 - 0
resources/characters/ybot.glb → public/characters/ybot.glb


+ 0 - 0
resources/models/README.txt → public/models/README.txt


+ 0 - 0
resources/models/mountain.glb → public/models/mountain.glb


+ 0 - 0
resources/shaders/bugs-lighting-model-fsh.glsl → public/shaders/bugs-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/bugs-lighting-model-vsh.glsl → public/shaders/bugs-lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/common.glsl → public/shaders/common.glsl


+ 0 - 0
resources/shaders/grass-lighting-model-fsh.glsl → public/shaders/grass-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/grass-lighting-model-vsh.glsl → public/shaders/grass-lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/header.glsl → public/shaders/header.glsl


+ 0 - 0
resources/shaders/lighting-model-fsh.glsl → public/shaders/lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/lighting-model-vsh.glsl → public/shaders/lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/noise.glsl → public/shaders/noise.glsl


+ 0 - 0
resources/shaders/oklab.glsl → public/shaders/oklab.glsl


+ 0 - 0
resources/shaders/phong-lighting-model-fsh.glsl → public/shaders/phong-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/phong-lighting-model-vsh.glsl → public/shaders/phong-lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/sky-lighting-model-fsh.glsl → public/shaders/sky-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/sky-lighting-model-vsh.glsl → public/shaders/sky-lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/sky.glsl → public/shaders/sky.glsl


+ 0 - 0
resources/shaders/terrain-lighting-model-fsh.glsl → public/shaders/terrain-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/terrain-lighting-model-vsh.glsl → public/shaders/terrain-lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/water-lighting-model-fsh.glsl → public/shaders/water-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/water-lighting-model-vsh.glsl → public/shaders/water-lighting-model-vsh.glsl


+ 0 - 0
resources/shaders/water-texture-fsh.glsl → public/shaders/water-texture-fsh.glsl


+ 0 - 0
resources/shaders/water-texture-vsh.glsl → public/shaders/water-texture-vsh.glsl


+ 0 - 0
resources/shaders/wind-lighting-model-fsh.glsl → public/shaders/wind-lighting-model-fsh.glsl


+ 0 - 0
resources/shaders/wind-lighting-model-vsh.glsl → public/shaders/wind-lighting-model-vsh.glsl


+ 0 - 0
resources/textures/butterfly.png → public/textures/butterfly.png


+ 0 - 0
resources/textures/dust.png → public/textures/dust.png


+ 0 - 0
resources/textures/grass.png → public/textures/grass.png


+ 0 - 0
resources/textures/grid.png → public/textures/grid.png


+ 0 - 0
resources/textures/moth.png → public/textures/moth.png


+ 0 - 0
resources/textures/terrain.png → public/textures/terrain.png


+ 0 - 0
resources/textures/whitesquare.png → public/textures/whitesquare.png


+ 0 - 28
src/base/load-controller.js

@@ -45,34 +45,6 @@ export const load_controller = (() => {
       return this.textures_[name].texture;
       return this.textures_[name].texture;
     }
     }
 
 
-    LoadSound(path, name, onLoad) {
-      if (!(name in this.sounds_)) {
-        const loader = new THREE.AudioLoader();
-        loader.setPath(path);
-
-        loader.load(name, (buf) => {
-          this.sounds_[name] = {
-            buffer: buf
-          };
-          const threejs = this.FindEntity('threejs').GetComponent('ThreeJSController');
-          const s = new THREE.PositionalAudio(threejs.listener_);
-          s.setBuffer(buf);
-          s.setRefDistance(10);
-          s.setMaxDistance(500);
-          onLoad(s);
-          this.playing_.push(s);
-        });
-      } else {
-        const threejs = this.FindEntity('threejs').GetComponent('ThreeJSController');
-        const s = new THREE.PositionalAudio(threejs.listener_);
-        s.setBuffer(this.sounds_[name].buffer);
-        s.setRefDistance(25);
-        s.setMaxDistance(1000);
-        onLoad(s);
-        this.playing_.push(s);
-      }
-    }
-
     #FinalizeLoad_(group) {
     #FinalizeLoad_(group) {
       const threejsController = this.FindEntity('threejs').GetComponent('ThreeJSController');
       const threejsController = this.FindEntity('threejs').GetComponent('ThreeJSController');
 
 

+ 1 - 1
src/base/render/bugs-component.js

@@ -91,7 +91,7 @@ export class BugsComponent extends entity.Component {
     this.#geometry_ = this.#CreateGeometry_();
     this.#geometry_ = this.#CreateGeometry_();
 
 
     const textureLoader = new THREE.TextureLoader();
     const textureLoader = new THREE.TextureLoader();
-    const albedo = textureLoader.load('./resources/textures/' + 'moth.png');
+    const albedo = textureLoader.load('./textures/' + 'moth.png');
     albedo.colorSpace = THREE.SRGBColorSpace;
     albedo.colorSpace = THREE.SRGBColorSpace;
 
 
     // // this.#grassMaterialLow_.setVec4('grassDraw', new THREE.Vector4(
     // // this.#grassMaterialLow_.setVec4('grassDraw', new THREE.Vector4(

+ 3 - 3
src/base/render/terrain-component.js

@@ -113,7 +113,7 @@ export class TerrainComponent extends entity.Component {
 
 
     const textureLoader = new THREE.TextureLoader();
     const textureLoader = new THREE.TextureLoader();
     textureLoader.load(
     textureLoader.load(
-        './resources/textures/' + 'terrain.png',
+        './textures/' + 'terrain.png',
         (heightmapTexture) => {
         (heightmapTexture) => {
       const heightmapGenerator = new Heightmap({
       const heightmapGenerator = new Heightmap({
           dimensions: new THREE.Vector2(1.0, 1.0),
           dimensions: new THREE.Vector2(1.0, 1.0),
@@ -147,7 +147,7 @@ export class TerrainComponent extends entity.Component {
       heightmapTexture.colorSpace = THREE.LinearSRGBColorSpace;
       heightmapTexture.colorSpace = THREE.LinearSRGBColorSpace;
 
 
       const LOAD_ = (name) => {
       const LOAD_ = (name) => {
-        const albedo = textureLoader.load('./resources/textures/' + name);
+        const albedo = textureLoader.load('./textures/' + name);
         albedo.magFilter = THREE.LinearFilter;
         albedo.magFilter = THREE.LinearFilter;
         albedo.minFilter = THREE.LinearMipMapLinearFilter;
         albedo.minFilter = THREE.LinearMipMapLinearFilter;
         albedo.wrapS = THREE.RepeatWrapping;
         albedo.wrapS = THREE.RepeatWrapping;
@@ -182,7 +182,7 @@ export class TerrainComponent extends entity.Component {
       
       
       const mountain = new entity.Entity();
       const mountain = new entity.Entity();
       mountain.AddComponent(new render_component.RenderComponent({
       mountain.AddComponent(new render_component.RenderComponent({
-        resourcePath: './resources/models/',
+        resourcePath: './models/',
         resourceName: 'mountain.glb',
         resourceName: 'mountain.glb',
         scale: new THREE.Vector3(1, 1, 1),
         scale: new THREE.Vector3(1, 1, 1),
         emissive: new THREE.Color(0x000000),
         emissive: new THREE.Color(0x000000),

+ 1 - 1
src/base/render/wind-component.js

@@ -78,7 +78,7 @@ export class WindComponent extends entity.Component {
     this.#geometry_ = this.#CreateGeometry_();
     this.#geometry_ = this.#CreateGeometry_();
 
 
     const textureLoader = new THREE.TextureLoader();
     const textureLoader = new THREE.TextureLoader();
-    const albedo = textureLoader.load('./resources/textures/' + 'dust.png');
+    const albedo = textureLoader.load('./textures/' + 'dust.png');
     albedo.colorSpace = THREE.SRGBColorSpace;
     albedo.colorSpace = THREE.SRGBColorSpace;
 
 
     this.#material_ = new shaders.ShaderMaterial('WIND', {
     this.#material_ = new shaders.ShaderMaterial('WIND', {

+ 3 - 6
src/base/threejs-component.js

@@ -1,7 +1,7 @@
 import { THREE, RenderPass, ShaderPass, FXAAShader, ACESFilmicToneMappingShader } from './three-defs.js';
 import { THREE, RenderPass, ShaderPass, FXAAShader, ACESFilmicToneMappingShader } from './three-defs.js';
 import {N8AOPass} from "n8ao";
 import {N8AOPass} from "n8ao";
 
 
-import * as Stats from 'stats.js';
+import Stats from 'three/examples/jsm/libs/stats.module.js';
 
 
 import * as entity from "./entity.js";
 import * as entity from "./entity.js";
 import * as light_component from './render/light-component.js';
 import * as light_component from './render/light-component.js';
@@ -209,9 +209,6 @@ export const threejs_component = (() => {
       this.#transparentCamera_ = new THREE.PerspectiveCamera(fov, aspect, near, far);
       this.#transparentCamera_ = new THREE.PerspectiveCamera(fov, aspect, near, far);
       this.#transparentScene_.add(this.#transparentCamera_);
       this.#transparentScene_.add(this.#transparentCamera_);
 
 
-      this.listener_ = new THREE.AudioListener();
-      this.#opaqueCamera_.add(this.listener_);
-
       this.uiCamera_ = new THREE.OrthographicCamera(
       this.uiCamera_ = new THREE.OrthographicCamera(
           -1, 1, 1, -1, 1, 1000);
           -1, 1, 1, -1, 1, 1000);
       this.uiScene_ = new THREE.Scene();
       this.uiScene_ = new THREE.Scene();
@@ -342,8 +339,8 @@ export const threejs_component = (() => {
       hemiLight.SetActive(false);
       hemiLight.SetActive(false);
       hemiLight.Init(this.Parent);
       hemiLight.Init(this.Parent);
 
 
-      this.grassStats_ = new Stats.Panel('Grass MS', '#0f0', '#020');
       this.stats_ = new Stats();
       this.stats_ = new Stats();
+      this.grassStats_ = new Stats.Panel('Grass MS', '#0f0', '#020');
       this.stats_.addPanel(this.grassStats_);
       this.stats_.addPanel(this.grassStats_);
       this.stats_.showPanel(0);
       this.stats_.showPanel(0);
       document.body.appendChild(this.stats_.dom);
       document.body.appendChild(this.stats_.dom);
@@ -470,8 +467,8 @@ export const threejs_component = (() => {
           this.grassTimingAvg_ = this.grassTimingAvg_ * 0.9 + elapsedTimeInMs * 0.1;
           this.grassTimingAvg_ = this.grassTimingAvg_ * 0.9 + elapsedTimeInMs * 0.1;
           // console.log(`Render time: ${this.grassTimingAvg_}ms`);
           // console.log(`Render time: ${this.grassTimingAvg_}ms`);
           this.grassStats_.update(elapsedTimeInMs, 10);
           this.grassStats_.update(elapsedTimeInMs, 10);
-          this.timerQuery = null;
         }
         }
+        this.timerQuery = null;
       }
       }
 
 
       this.#ssaoPass_.clear = false;
       this.#ssaoPass_.clear = false;

+ 1 - 1
src/demo-builder.js

@@ -24,7 +24,7 @@ export const demo_builder = (() => {
 
 
     LoadMaterial_(albedoName, normalName, roughnessName, metalnessName) {
     LoadMaterial_(albedoName, normalName, roughnessName, metalnessName) {
       const textureLoader = new THREE.TextureLoader();
       const textureLoader = new THREE.TextureLoader();
-      const albedo = textureLoader.load('./resources/textures/' + albedoName);
+      const albedo = textureLoader.load('./textures/' + albedoName);
       albedo.anisotropy = this.FindEntity('threejs').GetComponent('ThreeJSController').getMaxAnisotropy();
       albedo.anisotropy = this.FindEntity('threejs').GetComponent('ThreeJSController').getMaxAnisotropy();
       albedo.wrapS = THREE.RepeatWrapping;
       albedo.wrapS = THREE.RepeatWrapping;
       albedo.wrapT = THREE.RepeatWrapping;
       albedo.wrapT = THREE.RepeatWrapping;

+ 17 - 17
src/game/render/shaders.js

@@ -26,7 +26,7 @@ export async function loadShaders() {
 
 
   const globalShadersCode = [];
   const globalShadersCode = [];
   for (let i = 0; i < globalShaders.length; ++i) {
   for (let i = 0; i < globalShaders.length; ++i) {
-    globalShadersCode.push(await loadText('resources/shaders/' + globalShaders[i]));
+    globalShadersCode.push(await loadText('shaders/' + globalShaders[i]));
   }
   }
 
 
   const loadShader = async (url) => {
   const loadShader = async (url) => {
@@ -39,43 +39,43 @@ export async function loadShaders() {
   }
   }
 
 
   ShaderManager.shaderCode['PHONG'] = {
   ShaderManager.shaderCode['PHONG'] = {
-    vsh: await loadShader('resources/shaders/phong-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/phong-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/phong-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/phong-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['GRASS'] = {
   ShaderManager.shaderCode['GRASS'] = {
-    vsh: await loadShader('resources/shaders/grass-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/grass-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/grass-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/grass-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['TERRAIN'] = {
   ShaderManager.shaderCode['TERRAIN'] = {
-    vsh: await loadShader('resources/shaders/terrain-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/terrain-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/terrain-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/terrain-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['BUGS'] = {
   ShaderManager.shaderCode['BUGS'] = {
-    vsh: await loadShader('resources/shaders/bugs-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/bugs-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/bugs-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/bugs-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['WIND'] = {
   ShaderManager.shaderCode['WIND'] = {
-    vsh: await loadShader('resources/shaders/wind-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/wind-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/wind-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/wind-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['SKY'] = {
   ShaderManager.shaderCode['SKY'] = {
-    vsh: await loadShader('resources/shaders/sky-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/sky-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/sky-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/sky-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['WATER'] = {
   ShaderManager.shaderCode['WATER'] = {
-    vsh: await loadShader('resources/shaders/water-lighting-model-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/water-lighting-model-fsh.glsl'),
+    vsh: await loadShader('shaders/water-lighting-model-vsh.glsl'),
+    fsh: await loadShader('shaders/water-lighting-model-fsh.glsl'),
   };
   };
 
 
   ShaderManager.shaderCode['WATER-TEXTURE'] = {
   ShaderManager.shaderCode['WATER-TEXTURE'] = {
-    vsh: await loadShader('resources/shaders/water-texture-vsh.glsl'),
-    fsh: await loadShader('resources/shaders/water-texture-fsh.glsl'),
+    vsh: await loadShader('shaders/water-texture-vsh.glsl'),
+    fsh: await loadShader('shaders/water-texture-fsh.glsl'),
   };
   };
 } 
 } 
 
 

+ 3 - 2
vite.config.js

@@ -18,5 +18,6 @@ export default defineConfig({
         hmr: {
         hmr: {
             clientPort: 5200,
             clientPort: 5200,
         }
         }
-    }
-});
+    },
+    base: "/Quick_Grass/"
+});