pixospritz-core 0.10.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -286
- package/dist/bundle.js +13 -3
- package/dist/bundle.js.map +1 -1
- package/dist/style.css +1 -0
- package/package.json +43 -44
- package/src/components/WebGLView.jsx +318 -0
- package/src/css/pixos.css +372 -0
- package/src/engine/actions/animate.js +41 -0
- package/src/engine/actions/changezone.js +135 -0
- package/src/engine/actions/chat.js +109 -0
- package/src/engine/actions/dialogue.js +90 -0
- package/src/engine/actions/face.js +22 -0
- package/src/engine/actions/greeting.js +28 -0
- package/src/engine/actions/interact.js +86 -0
- package/src/engine/actions/move.js +67 -0
- package/src/engine/actions/patrol.js +109 -0
- package/src/engine/actions/prompt.js +185 -0
- package/src/engine/actions/script.js +42 -0
- package/src/engine/core/audio/AudioSystem.js +543 -0
- package/src/engine/core/cutscene/PxcPlayer.js +956 -0
- package/src/engine/core/cutscene/manager.js +243 -0
- package/src/engine/core/database/index.js +75 -0
- package/src/engine/core/debug/index.js +371 -0
- package/src/engine/core/hud/index.js +765 -0
- package/src/engine/core/index.js +540 -0
- package/src/engine/core/input/gamepad/Controller.js +71 -0
- package/src/engine/core/input/gamepad/ControllerButtons.js +231 -0
- package/src/engine/core/input/gamepad/ControllerStick.js +173 -0
- package/src/engine/core/input/gamepad/index.js +592 -0
- package/src/engine/core/input/keyboard.js +196 -0
- package/src/engine/core/input/manager.js +485 -0
- package/src/engine/core/input/mouse.js +203 -0
- package/src/engine/core/input/touch.js +175 -0
- package/src/engine/core/mode/manager.js +199 -0
- package/src/engine/core/net/manager.js +535 -0
- package/src/engine/core/queue/action.js +83 -0
- package/src/engine/core/queue/event.js +82 -0
- package/src/engine/core/queue/index.js +44 -0
- package/src/engine/core/queue/loadable.js +33 -0
- package/src/engine/core/render/CameraEffects.js +494 -0
- package/src/engine/core/render/FrustumCuller.js +417 -0
- package/src/engine/core/render/LODManager.js +285 -0
- package/src/engine/core/render/ParticleManager.js +529 -0
- package/src/engine/core/render/TextureAtlas.js +465 -0
- package/src/engine/core/render/camera.js +338 -0
- package/src/engine/core/render/light.js +197 -0
- package/src/engine/core/render/manager.js +1079 -0
- package/src/engine/core/render/shaders.js +110 -0
- package/src/engine/core/render/skybox.js +342 -0
- package/src/engine/core/resource/manager.js +133 -0
- package/src/engine/core/resource/object.js +611 -0
- package/src/engine/core/resource/texture.js +103 -0
- package/src/engine/core/resource/tileset.js +177 -0
- package/src/engine/core/scene/avatar.js +215 -0
- package/src/engine/core/scene/speech.js +138 -0
- package/src/engine/core/scene/sprite.js +702 -0
- package/src/engine/core/scene/spritz.js +189 -0
- package/src/engine/core/scene/world.js +681 -0
- package/src/engine/core/scene/zone.js +1167 -0
- package/src/engine/core/store/index.js +110 -0
- package/src/engine/dynamic/animatedSprite.js +64 -0
- package/src/engine/dynamic/animatedTile.js +98 -0
- package/src/engine/dynamic/avatar.js +110 -0
- package/src/engine/dynamic/map.js +174 -0
- package/src/engine/dynamic/sprite.js +255 -0
- package/src/engine/dynamic/spritz.js +119 -0
- package/src/engine/events/EventSystem.js +609 -0
- package/src/engine/events/camera.js +142 -0
- package/src/engine/events/chat.js +75 -0
- package/src/engine/events/menu.js +186 -0
- package/src/engine/scripting/CallbackManager.js +514 -0
- package/src/engine/scripting/PixoScriptInterpreter.js +81 -0
- package/src/engine/scripting/PixoScriptLibrary.js +704 -0
- package/src/engine/shaders/effects/index.js +450 -0
- package/src/engine/shaders/fs.js +222 -0
- package/src/engine/shaders/particles/fs.js +41 -0
- package/src/engine/shaders/particles/vs.js +61 -0
- package/src/engine/shaders/picker/fs.js +34 -0
- package/src/engine/shaders/picker/init.js +62 -0
- package/src/engine/shaders/picker/vs.js +42 -0
- package/src/engine/shaders/pxsl/README.md +250 -0
- package/src/engine/shaders/pxsl/index.js +25 -0
- package/src/engine/shaders/pxsl/library.js +608 -0
- package/src/engine/shaders/pxsl/manager.js +338 -0
- package/src/engine/shaders/pxsl/specification.js +363 -0
- package/src/engine/shaders/pxsl/transpiler.js +753 -0
- package/src/engine/shaders/skybox/cosmic/fs.js +147 -0
- package/src/engine/shaders/skybox/cosmic/vs.js +23 -0
- package/src/engine/shaders/skybox/matrix/fs.js +127 -0
- package/src/engine/shaders/skybox/matrix/vs.js +23 -0
- package/src/engine/shaders/skybox/morning/fs.js +109 -0
- package/src/engine/shaders/skybox/morning/vs.js +23 -0
- package/src/engine/shaders/skybox/neon/fs.js +119 -0
- package/src/engine/shaders/skybox/neon/vs.js +23 -0
- package/src/engine/shaders/skybox/sky/fs.js +114 -0
- package/src/engine/shaders/skybox/sky/vs.js +23 -0
- package/src/engine/shaders/skybox/sunset/fs.js +101 -0
- package/src/engine/shaders/skybox/sunset/vs.js +23 -0
- package/src/engine/shaders/transition/blur/fs.js +42 -0
- package/src/engine/shaders/transition/blur/vs.js +26 -0
- package/src/engine/shaders/transition/cross/fs.js +36 -0
- package/src/engine/shaders/transition/cross/vs.js +26 -0
- package/src/engine/shaders/transition/crossBlur/fs.js +41 -0
- package/src/engine/shaders/transition/crossBlur/vs.js +25 -0
- package/src/engine/shaders/transition/dissolve/fs.js +78 -0
- package/src/engine/shaders/transition/dissolve/vs.js +24 -0
- package/src/engine/shaders/transition/fade/fs.js +31 -0
- package/src/engine/shaders/transition/fade/vs.js +27 -0
- package/src/engine/shaders/transition/iris/fs.js +52 -0
- package/src/engine/shaders/transition/iris/vs.js +24 -0
- package/src/engine/shaders/transition/pixelate/fs.js +44 -0
- package/src/engine/shaders/transition/pixelate/vs.js +24 -0
- package/src/engine/shaders/transition/slide/fs.js +53 -0
- package/src/engine/shaders/transition/slide/vs.js +24 -0
- package/src/engine/shaders/transition/swirl/fs.js +39 -0
- package/src/engine/shaders/transition/swirl/vs.js +26 -0
- package/src/engine/shaders/transition/wipe/fs.js +50 -0
- package/src/engine/shaders/transition/wipe/vs.js +24 -0
- package/src/engine/shaders/vs.js +60 -0
- package/src/engine/utils/CameraController.js +506 -0
- package/src/engine/utils/ObjHelper.js +551 -0
- package/src/engine/utils/debug-logger.js +110 -0
- package/src/engine/utils/enums.js +305 -0
- package/src/engine/utils/generator.js +156 -0
- package/src/engine/utils/index.js +21 -0
- package/src/engine/utils/loaders/ActionLoader.js +77 -0
- package/src/engine/utils/loaders/AudioLoader.js +157 -0
- package/src/engine/utils/loaders/EventLoader.js +66 -0
- package/src/engine/utils/loaders/ObjectLoader.js +67 -0
- package/src/engine/utils/loaders/SpriteLoader.js +77 -0
- package/src/engine/utils/loaders/TilesetLoader.js +103 -0
- package/src/engine/utils/loaders/index.js +21 -0
- package/src/engine/utils/math/matrix4.js +367 -0
- package/src/engine/utils/math/vector.js +458 -0
- package/src/engine/utils/obj/_old_js/index.js +46 -0
- package/src/engine/utils/obj/_old_js/layout.js +308 -0
- package/src/engine/utils/obj/_old_js/material.js +711 -0
- package/src/engine/utils/obj/_old_js/mesh.js +761 -0
- package/src/engine/utils/obj/_old_js/utils.js +647 -0
- package/src/engine/utils/obj/index.js +24 -0
- package/src/engine/utils/obj/js/index.js +277 -0
- package/src/engine/utils/obj/js/loader.js +232 -0
- package/src/engine/utils/obj/layout.js +246 -0
- package/src/engine/utils/obj/material.js +665 -0
- package/src/engine/utils/obj/mesh.js +657 -0
- package/src/engine/utils/obj/ts/index.ts +72 -0
- package/src/engine/utils/obj/ts/layout.ts +265 -0
- package/src/engine/utils/obj/ts/material.ts +760 -0
- package/src/engine/utils/obj/ts/mesh.ts +785 -0
- package/src/engine/utils/obj/ts/utils.ts +501 -0
- package/src/engine/utils/obj/utils.js +428 -0
- package/src/engine/utils/resources.js +18 -0
- package/src/index.jsx +55 -0
- package/src/spritz/player.js +18 -0
- package/src/spritz/readme.md +18 -0
- package/LICENSE +0 -437
- package/dist/bundle.js.LICENSE.txt +0 -31
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
\* */
|
|
13
|
+
export default function fs() {
|
|
14
|
+
return `
|
|
15
|
+
precision mediump float;
|
|
16
|
+
|
|
17
|
+
uniform samplerCube uSkybox;
|
|
18
|
+
uniform mat4 uViewDirectionProjectionInverse;
|
|
19
|
+
uniform float uTime;
|
|
20
|
+
|
|
21
|
+
varying vec4 vPosition;
|
|
22
|
+
|
|
23
|
+
// Hash function
|
|
24
|
+
float hash(vec2 p) {
|
|
25
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Value noise
|
|
29
|
+
float noise(vec2 p) {
|
|
30
|
+
vec2 i = floor(p);
|
|
31
|
+
vec2 f = fract(p);
|
|
32
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
33
|
+
|
|
34
|
+
float a = hash(i);
|
|
35
|
+
float b = hash(i + vec2(1.0, 0.0));
|
|
36
|
+
float c = hash(i + vec2(0.0, 1.0));
|
|
37
|
+
float d = hash(i + vec2(1.0, 1.0));
|
|
38
|
+
|
|
39
|
+
return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// FBM for clouds
|
|
43
|
+
float fbm(vec2 p) {
|
|
44
|
+
float value = 0.0;
|
|
45
|
+
float amplitude = 0.5;
|
|
46
|
+
for (int i = 0; i < 5; i++) {
|
|
47
|
+
value += amplitude * noise(p);
|
|
48
|
+
amplitude *= 0.5;
|
|
49
|
+
p *= 2.0;
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void main() {
|
|
55
|
+
vec4 t = uViewDirectionProjectionInverse * vPosition;
|
|
56
|
+
vec3 dir = normalize(t.xyz / t.w);
|
|
57
|
+
float time = uTime;
|
|
58
|
+
|
|
59
|
+
// Height-based gradient for daytime sky
|
|
60
|
+
float y = dir.y * 0.5 + 0.5;
|
|
61
|
+
|
|
62
|
+
// Sun position (high in sky)
|
|
63
|
+
vec3 sunDir = normalize(vec3(0.3, 0.8, 0.5));
|
|
64
|
+
float sunDot = dot(dir, sunDir);
|
|
65
|
+
|
|
66
|
+
// Daytime sky colors
|
|
67
|
+
vec3 zenithColor = vec3(0.2, 0.4, 0.85); // Deep blue at top
|
|
68
|
+
vec3 horizonColor = vec3(0.6, 0.75, 0.95); // Light blue at horizon
|
|
69
|
+
vec3 sunColor = vec3(1.0, 1.0, 0.95); // Bright white sun
|
|
70
|
+
|
|
71
|
+
// Sky gradient using realistic Rayleigh scattering approximation
|
|
72
|
+
vec3 color = mix(horizonColor, zenithColor, pow(y, 0.5));
|
|
73
|
+
|
|
74
|
+
// Sun atmospheric scattering
|
|
75
|
+
float scatter = pow(max(0.0, sunDot), 2.0);
|
|
76
|
+
color = mix(color, vec3(0.9, 0.95, 1.0), scatter * 0.2);
|
|
77
|
+
|
|
78
|
+
// Bright sun disc with soft edge
|
|
79
|
+
float sun = smoothstep(0.9995, 1.0, sunDot);
|
|
80
|
+
color = mix(color, sunColor, sun);
|
|
81
|
+
|
|
82
|
+
// Sun glare
|
|
83
|
+
float glare = pow(max(0.0, sunDot), 32.0) * 0.5;
|
|
84
|
+
color += sunColor * glare;
|
|
85
|
+
|
|
86
|
+
// Animated cumulus clouds
|
|
87
|
+
vec2 cloudUV = dir.xz / (abs(dir.y) + 0.2) + time * 0.01;
|
|
88
|
+
|
|
89
|
+
// Multiple cloud layers
|
|
90
|
+
float clouds1 = fbm(cloudUV * 1.5);
|
|
91
|
+
float clouds2 = fbm(cloudUV * 3.0 + vec2(100.0, 0.0));
|
|
92
|
+
|
|
93
|
+
// Shape clouds
|
|
94
|
+
clouds1 = smoothstep(0.4, 0.7, clouds1);
|
|
95
|
+
clouds2 = smoothstep(0.5, 0.75, clouds2) * 0.5;
|
|
96
|
+
float clouds = max(clouds1, clouds2);
|
|
97
|
+
|
|
98
|
+
// Cloud color with some shading
|
|
99
|
+
vec3 cloudLight = vec3(1.0, 1.0, 1.0);
|
|
100
|
+
vec3 cloudShadow = vec3(0.7, 0.75, 0.85);
|
|
101
|
+
vec3 cloudColor = mix(cloudShadow, cloudLight, fbm(cloudUV * 4.0));
|
|
102
|
+
|
|
103
|
+
// Apply clouds more in middle sky
|
|
104
|
+
float cloudMask = smoothstep(0.15, 0.5, y) * smoothstep(1.0, 0.6, y);
|
|
105
|
+
color = mix(color, cloudColor, clouds * cloudMask * 0.85);
|
|
106
|
+
|
|
107
|
+
// Atmospheric perspective (haze near horizon)
|
|
108
|
+
float haze = exp(-y * 5.0);
|
|
109
|
+
color = mix(color, horizonColor * 1.1, haze * 0.3);
|
|
110
|
+
|
|
111
|
+
gl_FragColor = vec4(color, 1.0);
|
|
112
|
+
}
|
|
113
|
+
`;
|
|
114
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
\* */
|
|
13
|
+
|
|
14
|
+
export default function vs() {
|
|
15
|
+
return `
|
|
16
|
+
attribute vec4 aPosition;
|
|
17
|
+
varying vec4 vPosition;
|
|
18
|
+
void main() {
|
|
19
|
+
vPosition = aPosition;
|
|
20
|
+
gl_Position = aPosition;
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
\* */
|
|
13
|
+
|
|
14
|
+
export default function fs() {
|
|
15
|
+
return `
|
|
16
|
+
precision mediump float;
|
|
17
|
+
|
|
18
|
+
uniform samplerCube uSkybox;
|
|
19
|
+
uniform mat4 uViewDirectionProjectionInverse;
|
|
20
|
+
uniform float uTime;
|
|
21
|
+
|
|
22
|
+
varying vec4 vPosition;
|
|
23
|
+
|
|
24
|
+
// Hash function for clouds
|
|
25
|
+
float hash(vec2 p) {
|
|
26
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Value noise for clouds
|
|
30
|
+
float noise(vec2 p) {
|
|
31
|
+
vec2 i = floor(p);
|
|
32
|
+
vec2 f = fract(p);
|
|
33
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
34
|
+
|
|
35
|
+
float a = hash(i);
|
|
36
|
+
float b = hash(i + vec2(1.0, 0.0));
|
|
37
|
+
float c = hash(i + vec2(0.0, 1.0));
|
|
38
|
+
float d = hash(i + vec2(1.0, 1.0));
|
|
39
|
+
|
|
40
|
+
return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Fractal brownian motion for realistic clouds
|
|
44
|
+
float fbm(vec2 p) {
|
|
45
|
+
float value = 0.0;
|
|
46
|
+
float amplitude = 0.5;
|
|
47
|
+
float frequency = 1.0;
|
|
48
|
+
for (int i = 0; i < 4; i++) {
|
|
49
|
+
value += amplitude * noise(p * frequency);
|
|
50
|
+
amplitude *= 0.5;
|
|
51
|
+
frequency *= 2.0;
|
|
52
|
+
}
|
|
53
|
+
return value;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void main() {
|
|
57
|
+
vec4 t = uViewDirectionProjectionInverse * vPosition;
|
|
58
|
+
vec3 dir = normalize(t.xyz / t.w);
|
|
59
|
+
|
|
60
|
+
// Height-based gradient for sunset colors
|
|
61
|
+
float y = dir.y * 0.5 + 0.5; // Normalize to 0-1
|
|
62
|
+
|
|
63
|
+
// Sun position (just above horizon)
|
|
64
|
+
vec3 sunDir = normalize(vec3(0.0, 0.1, -1.0));
|
|
65
|
+
float sunDot = dot(dir, sunDir);
|
|
66
|
+
|
|
67
|
+
// Sunset color palette
|
|
68
|
+
vec3 horizonColor = vec3(1.0, 0.3, 0.1); // Orange-red at horizon
|
|
69
|
+
vec3 skyColor = vec3(0.2, 0.1, 0.4); // Deep purple up high
|
|
70
|
+
vec3 sunColor = vec3(1.0, 0.9, 0.5); // Bright yellow-white sun
|
|
71
|
+
vec3 glowColor = vec3(1.0, 0.5, 0.2); // Orange glow
|
|
72
|
+
|
|
73
|
+
// Base sky gradient
|
|
74
|
+
vec3 color = mix(horizonColor, skyColor, pow(y, 0.8));
|
|
75
|
+
|
|
76
|
+
// Sun glow (larger soft glow)
|
|
77
|
+
float glow = pow(max(0.0, sunDot), 4.0) * 1.5;
|
|
78
|
+
color = mix(color, glowColor, glow);
|
|
79
|
+
|
|
80
|
+
// Bright sun disc
|
|
81
|
+
float sun = pow(max(0.0, sunDot), 256.0) * 2.0;
|
|
82
|
+
color = mix(color, sunColor, min(1.0, sun));
|
|
83
|
+
|
|
84
|
+
// Animated clouds (move slowly)
|
|
85
|
+
float time = uTime * 0.02;
|
|
86
|
+
vec2 cloudUV = dir.xz / (dir.y + 0.5) * 2.0 + time;
|
|
87
|
+
float clouds = fbm(cloudUV * 3.0);
|
|
88
|
+
clouds = smoothstep(0.4, 0.7, clouds);
|
|
89
|
+
|
|
90
|
+
// Cloud color based on sun angle
|
|
91
|
+
vec3 cloudColor = mix(vec3(0.3, 0.1, 0.15), vec3(1.0, 0.6, 0.3), glow + y * 0.5);
|
|
92
|
+
color = mix(color, cloudColor, clouds * (1.0 - y) * 0.6);
|
|
93
|
+
|
|
94
|
+
// Add atmospheric scattering near horizon
|
|
95
|
+
float scatter = exp(-y * 3.0);
|
|
96
|
+
color = mix(color, horizonColor, scatter * 0.3);
|
|
97
|
+
|
|
98
|
+
gl_FragColor = vec4(color, 1.0);
|
|
99
|
+
}
|
|
100
|
+
`;
|
|
101
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
\* */
|
|
13
|
+
|
|
14
|
+
export default function vs() {
|
|
15
|
+
return `
|
|
16
|
+
attribute vec4 aPosition;
|
|
17
|
+
varying vec4 vPosition;
|
|
18
|
+
void main() {
|
|
19
|
+
vPosition = aPosition;
|
|
20
|
+
gl_Position = aPosition;
|
|
21
|
+
}
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Fragment shader for a radial blur‑mask transition. The edge is softened
|
|
15
|
+
// with smoothstep. uDirection > 0.5 = IN (mask shrinks), else OUT (mask grows).
|
|
16
|
+
|
|
17
|
+
export default function fs() {
|
|
18
|
+
return `
|
|
19
|
+
precision mediump float;
|
|
20
|
+
varying vec2 vUV;
|
|
21
|
+
uniform float uProgress;
|
|
22
|
+
uniform float uDirection;
|
|
23
|
+
|
|
24
|
+
void main() {
|
|
25
|
+
vec2 center = vec2(0.5, 0.5);
|
|
26
|
+
float dist = distance(vUV, center);
|
|
27
|
+
|
|
28
|
+
// Radius grows [0..1] for OUT, shrinks for IN
|
|
29
|
+
float radius = (uDirection > 0.5) ? (1.0 - uProgress) : uProgress;
|
|
30
|
+
|
|
31
|
+
// Blur width relative to screen; tweak for softer/harder edge
|
|
32
|
+
float feather = 0.20; // 20% of radius as feather
|
|
33
|
+
float edge0 = radius - feather * 0.5;
|
|
34
|
+
float edge1 = radius + feather * 0.5;
|
|
35
|
+
|
|
36
|
+
float mask = smoothstep(edge0, edge1, dist);
|
|
37
|
+
|
|
38
|
+
// Black overlay with soft edge
|
|
39
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, mask);
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Vertex shader for cross‑wipe transition. Shares the same logic as
|
|
15
|
+
// other transitions: compute UVs and forward the clip‑space position.
|
|
16
|
+
|
|
17
|
+
export default function vs() {
|
|
18
|
+
return `
|
|
19
|
+
attribute vec2 aPosition;
|
|
20
|
+
varying vec2 vUV;
|
|
21
|
+
void main() {
|
|
22
|
+
vUV = (aPosition + 1.0) * 0.5;
|
|
23
|
+
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Fragment shader for a horizontal cross‑wipe transition. A black
|
|
15
|
+
// rectangle slides across the screen. The direction uniform controls
|
|
16
|
+
// whether the wipe grows from the left (out) or shrinks from the right (in).
|
|
17
|
+
|
|
18
|
+
export default function fs() {
|
|
19
|
+
return `
|
|
20
|
+
precision mediump float;
|
|
21
|
+
varying vec2 vUV;
|
|
22
|
+
uniform float uProgress;
|
|
23
|
+
uniform float uDirection;
|
|
24
|
+
void main() {
|
|
25
|
+
float mask;
|
|
26
|
+
// When uDirection == 1.0 (transition in), the black area shrinks
|
|
27
|
+
// from right to left. Otherwise, it grows from left to right.
|
|
28
|
+
if (uDirection > 0.5) {
|
|
29
|
+
mask = step(1.0 - uProgress, vUV.x);
|
|
30
|
+
} else {
|
|
31
|
+
mask = step(vUV.x, uProgress);
|
|
32
|
+
}
|
|
33
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, mask);
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Vertex shader for cross‑wipe transition. Shares the same logic as
|
|
15
|
+
// other transitions: compute UVs and forward the clip‑space position.
|
|
16
|
+
|
|
17
|
+
export default function vs() {
|
|
18
|
+
return `
|
|
19
|
+
attribute vec2 aPosition;
|
|
20
|
+
varying vec2 vUV;
|
|
21
|
+
void main() {
|
|
22
|
+
vUV = (aPosition + 1.0) * 0.5;
|
|
23
|
+
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Fragment shader for a horizontal cross‑blur wipe. Progress moves the edge
|
|
15
|
+
// across X; we soften with smoothstep. uDirection > 0.5 = IN (wipe recedes).
|
|
16
|
+
|
|
17
|
+
export default function fs() {
|
|
18
|
+
return `
|
|
19
|
+
precision mediump float;
|
|
20
|
+
varying vec2 vUV;
|
|
21
|
+
uniform float uProgress;
|
|
22
|
+
uniform float uDirection;
|
|
23
|
+
|
|
24
|
+
void main() {
|
|
25
|
+
// Determine wipe center position depending on direction
|
|
26
|
+
float pos = (uDirection > 0.5) ? (1.0 - uProgress) : uProgress;
|
|
27
|
+
|
|
28
|
+
// Feather width in UV space
|
|
29
|
+
float feather = 0.12;
|
|
30
|
+
|
|
31
|
+
// Distance from the moving edge (vertical line at x=pos)
|
|
32
|
+
float d = vUV.x - pos;
|
|
33
|
+
|
|
34
|
+
// Soft mask around the edge using smoothstep
|
|
35
|
+
float mask = smoothstep(-feather, feather, d);
|
|
36
|
+
|
|
37
|
+
// Black overlay with soft edge
|
|
38
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, mask);
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Vertex shader for full‑screen transitions (used by fade/blur/cross/crossBlur).
|
|
15
|
+
|
|
16
|
+
export default function vs() {
|
|
17
|
+
return `
|
|
18
|
+
attribute vec2 aPosition;
|
|
19
|
+
varying vec2 vUV;
|
|
20
|
+
void main() {
|
|
21
|
+
vUV = (aPosition + 1.0) * 0.5;
|
|
22
|
+
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
25
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Fragment shader for dissolve/noise transition effect.
|
|
15
|
+
// Uses procedural noise to create a dissolving particle effect.
|
|
16
|
+
|
|
17
|
+
export default function fs() {
|
|
18
|
+
return `
|
|
19
|
+
precision mediump float;
|
|
20
|
+
varying vec2 vUV;
|
|
21
|
+
uniform float uProgress;
|
|
22
|
+
uniform float uDirection;
|
|
23
|
+
uniform float uTime;
|
|
24
|
+
|
|
25
|
+
// Simple hash function for noise
|
|
26
|
+
float hash(vec2 p) {
|
|
27
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Value noise
|
|
31
|
+
float noise(vec2 p) {
|
|
32
|
+
vec2 i = floor(p);
|
|
33
|
+
vec2 f = fract(p);
|
|
34
|
+
f = f * f * (3.0 - 2.0 * f); // Smooth interpolation
|
|
35
|
+
|
|
36
|
+
float a = hash(i);
|
|
37
|
+
float b = hash(i + vec2(1.0, 0.0));
|
|
38
|
+
float c = hash(i + vec2(0.0, 1.0));
|
|
39
|
+
float d = hash(i + vec2(1.0, 1.0));
|
|
40
|
+
|
|
41
|
+
return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Fractal noise for more organic look
|
|
45
|
+
float fbm(vec2 p) {
|
|
46
|
+
float sum = 0.0;
|
|
47
|
+
float amp = 0.5;
|
|
48
|
+
float freq = 1.0;
|
|
49
|
+
for (int i = 0; i < 4; i++) {
|
|
50
|
+
sum += noise(p * freq) * amp;
|
|
51
|
+
amp *= 0.5;
|
|
52
|
+
freq *= 2.0;
|
|
53
|
+
}
|
|
54
|
+
return sum;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
void main() {
|
|
58
|
+
float progress = uDirection > 0.5 ? (1.0 - uProgress) : uProgress;
|
|
59
|
+
|
|
60
|
+
// Generate noise pattern
|
|
61
|
+
vec2 noiseCoord = vUV * 10.0;
|
|
62
|
+
float n = fbm(noiseCoord);
|
|
63
|
+
|
|
64
|
+
// Add some time-based animation for sparkle effect
|
|
65
|
+
float sparkle = noise(vUV * 50.0 + uTime * 0.001) * 0.1;
|
|
66
|
+
n += sparkle;
|
|
67
|
+
|
|
68
|
+
// Threshold based on progress
|
|
69
|
+
float threshold = progress * 1.2; // Slightly overshoot for full coverage
|
|
70
|
+
float alpha = smoothstep(threshold - 0.1, threshold + 0.1, n);
|
|
71
|
+
|
|
72
|
+
// Invert for dissolve-in effect
|
|
73
|
+
alpha = 1.0 - alpha;
|
|
74
|
+
|
|
75
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, alpha);
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Vertex shader for dissolve transition
|
|
15
|
+
export default function vs() {
|
|
16
|
+
return `
|
|
17
|
+
attribute vec2 aPosition;
|
|
18
|
+
varying vec2 vUV;
|
|
19
|
+
void main() {
|
|
20
|
+
vUV = (aPosition + 1.0) * 0.5;
|
|
21
|
+
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Fragment shader for a simple fade transition. The entire screen is
|
|
15
|
+
// covered by a black overlay whose alpha is controlled by `uProgress`
|
|
16
|
+
// and `uDirection`. When `uDirection` is 0.0 (out), the alpha increases
|
|
17
|
+
// from 0 to 1 as progress goes from 0 to 1. When `uDirection` is 1.0 (in),
|
|
18
|
+
// the alpha decreases from 1 to 0.
|
|
19
|
+
|
|
20
|
+
export default function fs() {
|
|
21
|
+
return `
|
|
22
|
+
precision mediump float;
|
|
23
|
+
varying vec2 vUV;
|
|
24
|
+
uniform float uProgress;
|
|
25
|
+
uniform float uDirection;
|
|
26
|
+
void main() {
|
|
27
|
+
float alpha = uDirection > 0.5 ? (1.0 - uProgress) : uProgress;
|
|
28
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, alpha);
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Vertex shader for full‑screen transitions. It passes the clip‑space
|
|
15
|
+
// position directly and computes UV coordinates from the position. This
|
|
16
|
+
// shader is used by all transition effects.
|
|
17
|
+
|
|
18
|
+
export default function vs() {
|
|
19
|
+
return `
|
|
20
|
+
attribute vec2 aPosition;
|
|
21
|
+
varying vec2 vUV;
|
|
22
|
+
void main() {
|
|
23
|
+
vUV = (aPosition + 1.0) * 0.5;
|
|
24
|
+
gl_Position = vec4(aPosition, 0.0, 1.0);
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* *\
|
|
2
|
+
** ----------------------------------------------- **
|
|
3
|
+
** Calliope - Pixos Game Engine **
|
|
4
|
+
** ----------------------------------------------- **
|
|
5
|
+
** Copyright (c) 2020-2025 - Kyle Derby MacInnis **
|
|
6
|
+
** **
|
|
7
|
+
** Any unauthorized distribution or transfer **
|
|
8
|
+
** of this work is strictly prohibited. **
|
|
9
|
+
** **
|
|
10
|
+
** All Rights Reserved. **
|
|
11
|
+
** ----------------------------------------------- **
|
|
12
|
+
* */
|
|
13
|
+
|
|
14
|
+
// Fragment shader for iris/circle transition effect.
|
|
15
|
+
// Creates a circular iris wipe effect, common in classic films and games.
|
|
16
|
+
|
|
17
|
+
export default function fs() {
|
|
18
|
+
return `
|
|
19
|
+
precision mediump float;
|
|
20
|
+
varying vec2 vUV;
|
|
21
|
+
uniform float uProgress;
|
|
22
|
+
uniform float uDirection;
|
|
23
|
+
uniform vec2 uCenter; // Center point of iris (default 0.5, 0.5)
|
|
24
|
+
uniform float uAspect; // Aspect ratio for circular shape
|
|
25
|
+
|
|
26
|
+
void main() {
|
|
27
|
+
float progress = uDirection > 0.5 ? (1.0 - uProgress) : uProgress;
|
|
28
|
+
|
|
29
|
+
// Adjust UV for aspect ratio
|
|
30
|
+
vec2 center = uCenter;
|
|
31
|
+
if (center.x == 0.0 && center.y == 0.0) {
|
|
32
|
+
center = vec2(0.5, 0.5);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
vec2 uv = vUV - center;
|
|
36
|
+
uv.x *= max(uAspect, 1.0);
|
|
37
|
+
|
|
38
|
+
// Calculate distance from center
|
|
39
|
+
float dist = length(uv);
|
|
40
|
+
|
|
41
|
+
// Max radius to cover screen corners
|
|
42
|
+
float maxRadius = 1.5;
|
|
43
|
+
float radius = (1.0 - progress) * maxRadius;
|
|
44
|
+
|
|
45
|
+
// Soft edge for smoother transition
|
|
46
|
+
float edge = 0.02;
|
|
47
|
+
float alpha = 1.0 - smoothstep(radius - edge, radius + edge, dist);
|
|
48
|
+
|
|
49
|
+
gl_FragColor = vec4(0.0, 0.0, 0.0, alpha);
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
}
|