Browse Source

ALL THE STUFF

master
Hamcha 6 months ago
parent
commit
1ec48eaf65
Signed by: Hamcha GPG Key ID: 41467804B19A3315
19 changed files with 500 additions and 53 deletions
  1. +25
    -0
      CREDITS.md
  2. +5
    -0
      LICENSE
  3. +13
    -0
      README.md
  4. BIN
      assets/images/noise/space_fine.png
  5. BIN
      assets/images/noise/space_sparse.png
  6. +8
    -0
      package.json
  7. +20
    -0
      src/game/MenuBackground.tsx
  8. +0
    -0
      src/game/lib/hook.ts
  9. +0
    -0
      src/graphics/filters/InGameSpace.ts
  10. +33
    -0
      src/graphics/filters/MenuBackground.tsx
  11. +47
    -0
      src/graphics/filters/frag/InGameSpace.frag
  12. +5
    -42
      src/graphics/filters/frag/MenuBackground.frag
  13. +30
    -0
      src/graphics/utils/RTTShader.ts
  14. +2
    -2
      src/index.html
  15. +26
    -0
      src/index.tsx
  16. +11
    -3
      src/screen.scss
  17. +4
    -0
      src/ui/App.tsx
  18. +1
    -0
      src/ui/Menu.tsx
  19. +270
    -6
      yarn.lock

+ 25
- 0
CREDITS.md View File

@ -0,0 +1,25 @@
# Graphics
- Title screen background: [Star Nest by Pablo Roman Andrioli](https://www.shadertoy.com/view/XlfGRj) (MIT)
# Music
- Title screen music: [Je suis un Phoenix by BlueMillenium](http://ccmixter.org/files/Bluemillenium/61325) (CC BY-NC 3.0)
# Sound effects
- Door open/close sounds:
- [Hatch Seal.wav by Paul368 (freesound)](https://freesound.org/people/Paul368/sounds/264063/) (CC0 1.0)
- [SFX Door Open.wav by Paul368 (freesound)](https://freesound.org/people/Paul368/sounds/264061/) (CC0 1.0)
- Notification/beeps:
- [Chord Alert Notification by graham_makes (freesound)](https://freesound.org/people/graham_makes/sounds/457518/) (CC BY 3.0)
- [Messenger Notification Sounds by zzwerty (freesound)](https://freesound.org/people/zzwerty/sounds/315878/) (CC BY-NC 3.0)
- [Radio Sign Off by dylanh.sound (freesound)](https://freesound.org/people/dylanh.sound/sounds/524205/) (CC0 1.0)
# Code
- [React](https://github.com/facebook/react) (MIT)
- [PixiJS](https://github.com/pixijs/pixi.js) (MIT)
- [howler.js](https://github.com/goldfire/howler.js) (MIT)
- [Parcel](https://github.com/parcel-bundler/parcel) (MIT)
- [Hotkeys](https://github.com/jaywcjlove/hotkeys) (MIT)

+ 5
- 0
LICENSE View File

@ -0,0 +1,5 @@
Copyright 2020 Alessandro Gatti
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

+ 13
- 0
README.md View File

@ -0,0 +1,13 @@
# NSS Odyssey
**Warning: Toy project**
Co-op survival space sim, keep the NSS Odyssey alive and kicking while roaming in space.
Takes heavy inspiration from Space Station 13 and FTL.
## Credits
See `CREDITS.md` for an exhaustive list of sources for all assets not made by me (Hamcha)
See `LICENSE` for code license (TL;DR it's [ISC](https://en.wikipedia.org/wiki/ISC_license))

BIN
assets/images/noise/space_fine.png View File

Before After
Width: 512  |  Height: 512  |  Size: 371 KiB

BIN
assets/images/noise/space_sparse.png View File

Before After
Width: 1024  |  Height: 1024  |  Size: 327 KiB

+ 8
- 0
package.json View File

@ -4,11 +4,17 @@
"main": "index.js",
"license": "MIT",
"dependencies": {
"@inlet/react-pixi": "^5.1.4",
"@types/howler": "^2.2.1",
"@types/react": "^16.9.49",
"@types/react-dom": "^16.9.8",
"animejs": "^3.2.0",
"hotkeys-js": "^3.8.1",
"howler": "^2.2.0",
"parcel-bundler": "^1.12.4",
"pixi.js": "^5.3.3",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"typescript": "^4.0.3"
},
"scripts": {
@ -16,6 +22,8 @@
"clean": "rimraf ./dist"
},
"devDependencies": {
"glslify-bundle": "^5.1.1",
"glslify-deps": "^1.3.1",
"rimraf": "^3.0.2",
"sass": "^1.26.11"
}


+ 20
- 0
src/game/MenuBackground.tsx View File

@ -0,0 +1,20 @@
import * as React from "react";
import MenuBackgroundFilter from "../graphics/filters/MenuBackground";
import { Sprite, useApp, useTick } from "@inlet/react-pixi";
export default function () {
const app = useApp();
const scale = 2;
const menubg = new MenuBackgroundFilter(app.renderer, scale);
useTick((delta) => {
menubg.update(delta);
menubg.render();
});
window.addEventListener("resize", () => {
menubg.rescale(scale);
});
return <Sprite texture={menubg.texture} scale={{ x: scale, y: scale }} />;
}

+ 0
- 0
src/game/lib/hook.ts View File


+ 0
- 0
src/graphics/filters/InGameSpace.ts View File


+ 33
- 0
src/graphics/filters/MenuBackground.tsx View File

@ -0,0 +1,33 @@
import * as PIXI from "pixi.js";
import RTTShader from "../utils/RTTShader";
//@ts-expect-error Frag file
import filter_src from "./frag/MenuBackground.frag";
export default class MenuBackgroundFilter extends RTTShader {
private elapsed: number;
private filter: PIXI.Filter;
constructor(renderer: PIXI.Renderer, scale: number) {
const filter = new PIXI.Filter(null, filter_src, {
iTime: 0,
iResolution: [renderer.width / scale, renderer.height / scale],
});
super(renderer, filter, scale);
this.elapsed = 0;
this.filter = filter;
}
rescale(scale: number) {
super.rescale(scale);
this.filter.uniforms.iResolution = [
this.renderer.width / scale,
this.renderer.height / scale,
];
}
update(delta: number) {
this.filter.uniforms.iTime = this.elapsed;
this.elapsed += delta / 60;
}
}

+ 47
- 0
src/graphics/filters/frag/InGameSpace.frag View File

@ -0,0 +1,47 @@
precision mediump float;
uniform sampler2D noise_sparse;
uniform sampler2D noise_fine;
uniform vec2 iResolution;
uniform float scroll_speed;
uniform float warp_boost;
uniform float warp_opacity;
uniform float time;
const float noise_sparse_scale = 0.0007;
const float noise_fine_scale = 0.003;
const float warp_clouds_scale = 0.0003;
const vec2 scroll_dir = vec2(1,0);
const vec2 blink_scroll = vec2(50.0, 0);
const float PI = 3.1415;
void main() {
vec2 uv=gl_FragCoord.xy/iResolution.xy;
float scroll = scroll_speed * time;
float sparse = texture2D(noise_sparse, (gl_FragCoord.xy + scroll_dir * scroll)*noise_sparse_scale).r;
sparse = ((sparse * sparse) - 0.2) * 1.2;
float fine = texture2D(noise_fine, (gl_FragCoord.xy + scroll_dir * scroll)*noise_fine_scale).r;
fine = fine - 0.6;
if (fine > 0.) {
fine = fine * 10.0;
}
if (fine > 0.3) {
float fine_blink_fade = texture2D(noise_sparse, (gl_FragCoord.xy + blink_scroll*time)*noise_sparse_scale).r;
fine = fine - ((fine_blink_fade * fine_blink_fade) - 0.2) * 1.2;
}
vec4 clouds = vec4(vec3(0.3, 0.5, 0.7) * sparse, 1.0);
vec4 stars = vec4(fine);
vec2 warp_scroll = scroll_dir * scroll;
vec2 warp_uv = (gl_FragCoord.xy * sin(uv.y * PI) + warp_scroll)*warp_clouds_scale;
vec2 warp_uv_inv = (gl_FragCoord.xy * sin((abs(uv.y-0.5)) * uv.x * PI) + warp_scroll*0.5)*warp_clouds_scale;
float warp_clouds_sparse = texture2D(noise_sparse, vec2(0.5,1) * warp_uv).r;
float warp_clouds_fine = texture2D(noise_sparse, vec2(2,1) * warp_uv_inv).r;
vec4 warp = vec4(vec3(0), 1);
warp += vec4(vec3(0.3,0.2,0.9)*warp_clouds_sparse, 0);
warp += vec4(vec3(0.5,0.0,0.5)*(warp_clouds_fine*0.5+warp_clouds_sparse)*abs(uv.y-0.5), 0);
gl_FragColor = mix(clouds + stars, warp*warp_boost, warp_opacity);
}

src/index.ts → src/graphics/filters/frag/MenuBackground.frag View File

@ -1,26 +1,8 @@
import { Howl } from "howler";
import * as PIXI from "pixi.js";
//@ts-expect-error It's a music file
import title from "../assets/sounds/music/title.opus";
const pixiApp = new PIXI.Application({
width: window.innerWidth,
height: window.innerHeight,
resolution: window.devicePixelRatio || 1,
});
window.addEventListener("resize", function () {
pixiApp.renderer.resize(window.innerWidth, window.innerHeight);
});
document.body.appendChild(pixiApp.view);
const filter_src = `
// Star Nest by Pablo Roman Andrioli
// This content is under the MIT License.
precision mediump float;
uniform vec3 iResolution;
uniform vec2 iResolution;
uniform float iTime;
#define iterations 17
@ -56,8 +38,8 @@ void main()
dir.xz*=rot1;
dir.xy*=rot2;
vec3 from=vec3(1.,.5,0.5);
from+=vec3(time*2.,time,-2.);
from.xz*=rot1;
from+=vec3(time*2.,time,-2.);
from.xz*=rot1;
from.xy*=rot2;
//volumetric rendering
@ -84,23 +66,4 @@ void main()
v=mix(vec3(length(v)),v,saturation); //color adjust
gl_FragColor = vec4(v*.01,1.);
}
`;
const filter = new PIXI.Filter(null, filter_src, {
iTime: 0,
iResolution: [window.innerWidth, window.innerHeight],
});
pixiApp.stage.filterArea = pixiApp.renderer.screen;
pixiApp.stage.filters = [filter];
let elapsed = 0;
pixiApp.ticker.add((delta) => {
filter.uniforms.iTime = elapsed;
elapsed += delta / 60;
});
var sound = new Howl({
src: [title],
autoplay: true,
});
}

+ 30
- 0
src/graphics/utils/RTTShader.ts View File

@ -0,0 +1,30 @@
import * as PIXI from "pixi.js";
export default class RTTShader {
readonly texture: PIXI.RenderTexture;
readonly container: PIXI.Container;
readonly renderer: PIXI.Renderer;
constructor(renderer: PIXI.Renderer, filter: PIXI.Filter, scale: number = 2) {
this.renderer = renderer;
this.texture = PIXI.RenderTexture.create({
width: this.renderer.width / scale,
height: this.renderer.height / scale,
});
this.container = new PIXI.Container();
this.container.filterArea = this.texture.frame;
this.container.filters = [filter];
}
rescale(scale: number) {
this.texture.resize(
this.renderer.width / scale,
this.renderer.height / scale
);
this.container.filterArea = this.texture.frame;
}
render() {
this.renderer.render(this.container, this.texture);
}
}

+ 2
- 2
src/index.html View File

@ -4,11 +4,11 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>NSS Odyssey</title>
<link rel="stylesheet" href="./screen.scss" />
<link rel="stylesheet" href="screen.scss" />
<link rel="icon" href="favicon.ico" />
</head>
<body>
<main id="app"></main>
<script src="./index.ts"></script>
<script src="./index.tsx"></script>
</body>
</html>

+ 26
- 0
src/index.tsx View File

@ -0,0 +1,26 @@
import * as React from "react";
import * as PIXI from "pixi.js";
import ReactDOM from "react-dom";
import { Stage, useApp } from "@inlet/react-pixi";
import MenuBackground from "./game/MenuBackground";
PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST;
const mounted = (app: PIXI.Application) => {
window.addEventListener("resize", () => {
app.queueResize();
});
app.queueResize();
};
ReactDOM.render(
<React.Fragment>
<Stage options={{ resolution: 1, resizeTo: window }} onMount={mounted}>
<MenuBackground />
</Stage>
<div id="ui">
<p>Hello!</p>
</div>
</React.Fragment>,
document.getElementById("app")
);

+ 11
- 3
src/screen.scss View File

@ -8,17 +8,25 @@ body {
height: 100vh;
}
#app {
#ui {
display: flex;
align-items: center;
justify-content: center;
width: 100vw;
height: 100vh;
z-index: 10;
position: fixed;
top: 0;
left: 0;
p {
font-size: 20pt;
color: white;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-style: italic;
}
}
#app,
body > canvas {
#ui {
position: fixed;
top: 0;
left: 0;


+ 4
- 0
src/ui/App.tsx View File

@ -0,0 +1,4 @@
import * as React from "react";
import ReactDOM from "react-dom";
ReactDOM.render(<p>Hello</p>, document.getElementById("ui"));

+ 1
- 0
src/ui/Menu.tsx View File

@ -0,0 +1 @@
import * as React from "react";

+ 270
- 6
yarn.lock View File

@ -877,11 +877,26 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
"@choojs/findup@^0.2.0":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3"
integrity sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==
dependencies:
commander "^2.15.1"
"@iarna/toml@^2.2.0":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==
"@inlet/react-pixi@^5.1.4":
version "5.1.4"
resolved "https://registry.yarnpkg.com/@inlet/react-pixi/-/react-pixi-5.1.4.tgz#fdccf0abbe0f7f4fda457f938b71a04e499af9da"
integrity sha512-CWd/DYjx6LgWitZMe5APW62g44RMy8xzXHcqFSbCnpVTvKAm4ikdStyWq6a9viJKlro7VrBCkGmaFl901TkPTw==
dependencies:
performance-now "^2.1.0"
react-reconciler "0.25.1"
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@ -1253,11 +1268,31 @@
resolved "https://registry.yarnpkg.com/@types/howler/-/howler-2.2.1.tgz#c95314724a8e970b1b29a731861975f39987b9ca"
integrity sha512-1MiSldngr+eAO4lDPtjzl4Nf2GmRh8VDHIpNBIkyd25L22JExVlI6w3fjSM7+FNc1e1WZAPNq7/flkw685byfg==
"@types/prop-types@*":
version "15.7.3"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/q@^1.5.1":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
"@types/react-dom@^16.9.8":
version "16.9.8"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423"
integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^16.9.49":
version "16.9.49"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872"
integrity sha512-DtLFjSj0OYAdVLBbyjhuV9CdGVHCkHn2R+xr3XkBvK2rS1Y1tkc14XSGjYgm5Fjjr90AxH9tiSzc1pCFMGO06g==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
abab@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
@ -1301,6 +1336,11 @@ alphanum-sort@^1.0.0:
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
animejs@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/animejs/-/animejs-3.2.0.tgz#2daea7365983249022cc454fa726acdb4a84345d"
integrity sha512-zhtGl5cS0G2f5DfciMO8uwWpnx06nfFnHlXYYXHBazHep1Lyd6kEtBQP+9hpYKE0dBZjIigHp9VpMO95ZfXQJQ==
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@ -1905,7 +1945,7 @@ command-exists@^1.2.6:
resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
commander@^2.11.0, commander@^2.19.0, commander@^2.20.0:
commander@^2.11.0, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@ -2205,6 +2245,11 @@ cssstyle@^1.1.1:
dependencies:
cssom "0.3.x"
csstype@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8"
integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@ -2571,6 +2616,11 @@ eventemitter3@^3.1.0:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
events@^1.0.2:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
events@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
@ -2828,7 +2878,113 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
graceful-fs@^4.1.11:
glsl-inject-defines@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz#dd1aacc2c17fcb2bd3fc32411c6633d0d7b60fd4"
integrity sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q=
dependencies:
glsl-token-inject-block "^1.0.0"
glsl-token-string "^1.0.1"
glsl-tokenizer "^2.0.2"
glsl-resolve@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/glsl-resolve/-/glsl-resolve-0.0.1.tgz#894bef73910d792c81b5143180035d0a78af76d3"
integrity sha1-iUvvc5ENeSyBtRQxgANdCnivdtM=
dependencies:
resolve "^0.6.1"
xtend "^2.1.2"
glsl-token-assignments@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz#a5d82ab78499c2e8a6b83cb69495e6e665ce019f"
integrity sha1-pdgqt4SZwuimuDy2lJXm5mXOAZ8=
glsl-token-defines@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz#cb892aa959936231728470d4f74032489697fa9d"
integrity sha1-y4kqqVmTYjFyhHDU90AySJaX+p0=
dependencies:
glsl-tokenizer "^2.0.0"
glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84"
integrity sha1-I8XjDuK9JViEtKKLyFC495HpXYQ=
glsl-token-descope@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz#0fc90ab326186b82f597b2e77dc9e21efcd32076"
integrity sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY=
dependencies:
glsl-token-assignments "^2.0.0"
glsl-token-depth "^1.1.0"
glsl-token-properties "^1.0.0"
glsl-token-scope "^1.1.0"
glsl-token-inject-block@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz#e1015f5980c1091824adaa2625f1dfde8bd00034"
integrity sha1-4QFfWYDBCRgkraomJfHf3ovQADQ=
glsl-token-properties@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e"
integrity sha1-SD3D2Dnw1LXGFx0VkfJJvlPCip4=
glsl-token-scope@^1.1.0, glsl-token-scope@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1"
integrity sha1-oXKOeN8kRE+cuT/RjvD3VQOmQ7E=
glsl-token-string@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/glsl-token-string/-/glsl-token-string-1.0.1.tgz#59441d2f857de7c3449c945666021ece358e48ec"
integrity sha1-WUQdL4V958NEnJRWZgIezjWOSOw=
glsl-token-whitespace-trim@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz#46d1dfe98c75bd7d504c05d7d11b1b3e9cc93b10"
integrity sha1-RtHf6Yx1vX1QTAXX0RsbPpzJOxA=
glsl-tokenizer@^2.0.0, glsl-tokenizer@^2.0.2:
version "2.1.5"
resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a"
integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==
dependencies:
through2 "^0.6.3"
glslify-bundle@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/glslify-bundle/-/glslify-bundle-5.1.1.tgz#30d2ddf2e6b935bf44d1299321e3b729782c409a"
integrity sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==
dependencies:
glsl-inject-defines "^1.0.1"
glsl-token-defines "^1.0.0"
glsl-token-depth "^1.1.1"
glsl-token-descope "^1.0.2"
glsl-token-scope "^1.1.1"
glsl-token-string "^1.0.1"
glsl-token-whitespace-trim "^1.0.0"
glsl-tokenizer "^2.0.2"
murmurhash-js "^1.0.0"
shallow-copy "0.0.1"
glslify-deps@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/glslify-deps/-/glslify-deps-1.3.1.tgz#dfa6962322454a91ecc4de25b5e710415b0c89ad"
integrity sha512-Ogm179MCazwIRyEqs3g3EOY4Y3XIAa0yl8J5RE9rJC6QH1w8weVOp2RZu0mvnYy/2xIas1w166YR2eZdDkWQxg==
dependencies:
"@choojs/findup" "^0.2.0"
events "^1.0.2"
glsl-resolve "0.0.1"
glsl-tokenizer "^2.0.0"
graceful-fs "^4.1.2"
inherits "^2.0.1"
map-limit "0.0.1"
resolve "^1.0.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.2:
version "4.2.4"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
@ -3318,6 +3474,11 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@ -3535,7 +3696,7 @@ log-symbols@^2.2.0:
dependencies:
chalk "^2.0.1"
loose-envify@^1.0.0:
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@ -3554,6 +3715,13 @@ map-cache@^0.2.2:
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
map-limit@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/map-limit/-/map-limit-0.0.1.tgz#eb7961031c0f0e8d001bf2d56fab685d58822f38"
integrity sha1-63lhAxwPDo0AG/LVb6toXViCLzg=
dependencies:
once "~1.3.0"
map-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@ -3698,6 +3866,11 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
murmurhash-js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51"
integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=
nan@^2.12.1:
version "2.14.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
@ -3893,6 +4066,13 @@ once@^1.3.0:
dependencies:
wrappy "1"
once@~1.3.0:
version "1.3.3"
resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
dependencies:
wrappy "1"
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@ -4553,6 +4733,15 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
prop-types@^15.6.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
dependencies:
loose-envify "^1.4.0"
object-assign "^4.1.1"
react-is "^16.8.1"
psl@^1.1.28:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@ -4644,6 +4833,50 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
react-dom@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.19.1"
react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-reconciler@0.25.1:
version "0.25.1"
resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.25.1.tgz#f9814d59d115e1210762287ce987801529363aaa"
integrity sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.19.1"
react@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
"readable-stream@>=1.0.33-1 <1.1.0-0":
version "1.0.34"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "0.0.1"
string_decoder "~0.10.x"
readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@ -4810,7 +5043,12 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0:
resolve@^0.6.1:
version "0.6.3"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46"
integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY=
resolve@^1.0.0, resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
@ -4911,6 +5149,14 @@ saxes@^3.1.9:
dependencies:
xmlchars "^2.1.1"
scheduler@^0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
semver@7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
@ -4983,7 +5229,7 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
shallow-copy@~0.0.1:
shallow-copy@0.0.1, shallow-copy@~0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170"
integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=
@ -5195,6 +5441,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@ -5293,6 +5544,14 @@ terser@^4.8.0:
source-map "~0.6.1"
source-map-support "~0.5.12"
through2@^0.6.3:
version "0.6.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=
dependencies:
readable-stream ">=1.0.33-1 <1.1.0-0"
xtend ">=4.0.0 <4.1.0-0"
through2@^2.0.0, through2@~2.0.3:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@ -5681,7 +5940,12 @@ xmlchars@^2.1.1:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
xtend@^4.0.0, xtend@~4.0.1:
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
xtend@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9"
integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=