From aca5978dac3930ff9d5a93e27cd9a9d736be4d0a Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Sat, 11 Jul 2026 14:42:40 +0800 Subject: [PATCH 1/8] =?UTF-8?q?feat(shader):=20Godot-style=20builtins=20?= =?UTF-8?q?=E2=80=94=20screen=5Ftexture=20/=20screen=5Fuv=20/=20noise=5Fuv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inside a ShaderEffect fragment body (design contributed by the melonJS editor team, mirroring Godot's hint_screen_texture / SCREEN_UV): - `uniform sampler2D name : screen_texture;` — annotation parsed and stripped; the sampler is auto-wired to the renderer's shared toFrameTexture capture (live GPU-resident entry) and the engine refreshes the capture right before the effect draws: in drawImage's customShader block (scene behind the sprite) and in endPostEffect (camera FBO = the scene for camera chains, parent target for renderable chains). True BackBufferCopy semantics on every path. Optional `(repeat)` wrap honored under WebGL 2 (captures are NPOT). - `screen_uv` — free varying, clip→0..1 screen position, computed in a deterministically-templated vertex variant (user source never regex- rewritten). - `noise_uv` — free varying, frame-local 0..1 across the drawn object (undoes atlas packing, scaled to object pixels); fed per draw through the new @ignore ShaderEffect._setNoiseUVRect from the quad batchers' single-texture path and both blitTextures. Back-compat: annotation was never valid GLSL; varyings activate only when referenced and never when the body declares them itself; a body using no builtins compiles byte-identical to before. New renderer helper getSharedFrameTexture() gives the shared capture slot a stable identity from effect-construction time. 8 new tests (shadereffect-builtins.spec.js): parse/wiring/introspection, true screen sampling + orientation via two-tone backdrop + swizzle readback, frame-local noise_uv on an atlas sub-frame (both axes), no-capture-without-annotation (spy), clone, self-declared back-compat. Full suite 4810 passed | 15 skipped. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- packages/melonjs/CHANGELOG.md | 1 + .../video/webgl/batchers/lit_quad_batcher.js | 15 + .../src/video/webgl/batchers/quad_batcher.js | 16 + .../melonjs/src/video/webgl/shadereffect.js | 249 ++++++++++++++- .../melonjs/src/video/webgl/webgl_renderer.js | 47 ++- .../tests/shadereffect-builtins.spec.js | 298 ++++++++++++++++++ 6 files changed, 623 insertions(+), 3 deletions(-) create mode 100644 packages/melonjs/tests/shadereffect-builtins.spec.js diff --git a/packages/melonjs/CHANGELOG.md b/packages/melonjs/CHANGELOG.md index 4189aab10..abd6adb78 100644 --- a/packages/melonjs/CHANGELOG.md +++ b/packages/melonjs/CHANGELOG.md @@ -12,6 +12,7 @@ - **`ShaderEffect.setTime(seconds)`** — a convenience for the `uTime` shader-animation convention, now on the base class: call it once per frame to write a shader's `uniform float uTime` (e.g. to scroll a static texture's UVs, or pulse / wave), driven by whatever clock you choose. A no-op when the shader doesn't declare `uTime`, so it's safe on any effect. Manual by design — the engine never calls it, so animation stays opt-in. The built-in `Hologram` / `Shine` effects now inherit it (their identical `setTime` overrides were removed). - **`ShaderEffect.setTexture(name, image[, repeat])`** (closes [#1532](https://github.com/melonjs/melonJS/issues/1532)) — bind an **extra** `sampler2D` to a custom post-effect, beyond the sprite/target it processes (`uSampler`) — a noise map, mask, gradient, or flow table. Declare `uniform sampler2D ;` in your fragment and pass any engine texture — a `Texture2d` asset (`NoiseTexture2d`, `TextureAtlas`, …) directly, or a raw drawable source; the engine uploads it once, caches it, and (re)binds it to a reserved texture unit each draw while pointing the sampler uniform at it — no raw WebGL texture-unit juggling. Works on both post-effect paths (single-effect sprite shader and the multi-effect / camera FBO blit). Enables UV-distortion water, dissolve masks, flow maps, palette lookups, etc. Purely additive — effects that never call it are unchanged. See the **Aquarium** example (a water surface refracting the live scene through a GPU-scrolled seamless `NoiseTexture2d`). - **Anchor-point presets + `Sprite3d` anchor support** (#1514) — `settings.anchorPoint` now accepts the named presets `"center"`, `"top"`, `"bottom"`, `"left"`, `"right"`, `"top-left"`, `"top-right"`, `"bottom-left"`, `"bottom-right"` in addition to an `{x, y}` object, uniformly across `Sprite`, `Entity`, `Collectable`, `ImageLayer`, `Text`, `BitmapText` (and their subclasses), including as a plain-string Tiled property. `Sprite3d` gains anchoring through the same `settings.anchorPoint` key (centered default, same convention as `Sprite`): the anchor is baked into the quad's local vertices so it composes with billboarding, flips and trimmed/rotated atlas frames, never leaks into the renderer transform on either camera path, is mutable at runtime via `sprite3d.anchorPoint.set(...)` (automatic re-bake + cull-bounds update), and grows the frustum-cull bounds exactly so an anchored sprite can't pop out while still on screen. On the 2D classes invalid values (unknown preset, malformed object) keep their historical silent `(0, 0)` outcome for full backward compatibility, but now log a console warning; `Sprite3d` (a new surface) throws. See the updated billboard example (`anchorPoint: "bottom"` — feet on the ground plane). +- **Godot-style shader builtins: `screen_texture` / `screen_uv` / `noise_uv`** — three names now get special treatment inside a `ShaderEffect` fragment body, so screen-reading and noise-scrolling effects need zero JavaScript plumbing and no UV math (design contributed by the melonJS editor team, mirroring Godot's `hint_screen_texture` / `SCREEN_UV`). Annotate a sampler with `uniform sampler2D screenTex : screen_texture;` and the engine keeps it filled with a capture of **everything drawn so far** (true BackBufferCopy semantics via the `toFrameTexture` shared slot, refreshed automatically when the effect draws — one screen copy per draw, only for effects that use it); an optional wrap is accepted (`: screen_texture(repeat)`, WebGL 2). Use `screen_uv` anywhere in the body for the fragment's 0..1 screen position, and `noise_uv` for a frame-local 0..1 coordinate across the drawn object — it undoes atlas packing (and is scaled to object pixels), so a seamless noise texture tiles correctly no matter where the sprite's frame sits in its atlas. Fully backward compatible: the annotation was never valid GLSL, the varyings only activate when referenced, shaders that declare their own `screen_uv`/`noise_uv` are left untouched, and a body using none of them compiles byte-identical to before. See the new **Water Overworld** example — a side-scroller pond that refracts the scene behind it in three lines of shader. - **Shader preloading: `"shader"` asset type + `loader.getShader()` + `ShaderEffect.clone()`** — custom shaders can now be preloaded like any other asset and are **compiled at load time** (the GLSL compile cost lands in the loading screen, and a compile error fails the load — `loader.load()` rejects with an error carrying the asset's name). The source is a GLSL fragment body following the `ShaderEffect` convention (`uniform` declarations + `vec4 apply(vec4 color, vec2 uv)`), loaded from a `src` URL / data: URI or inline via the `data` field (the inline-TMX convention): `{ name: "waterRipple", type: "shader", src: "shaders/waterRipple.frag" }`. `loader.getShader(name)` returns the **shared, loader-owned instance** — the *same* object on every call, with `shared = true` so renderable cleanup never auto-destroys it; everything it is assigned to shares one set of uniform values, and it is freed only by `loader.unload()` / `loader.unloadAll()` (which destroy the GL program). For per-renderable uniform values, the new `ShaderEffect.clone()` compiles an independent, caller-owned copy: it copies the *recipe* (fragment source, precision, uniform values, `setTexture` bindings — with its own GL uploads) but never the *ownership* — the clone's `shared` flag is **always reset to `false`**, so it is auto-destroyed with the renderable it is assigned to unless explicitly re-shared. `GLShader.clone()` exists likewise for raw full-program (vertex + fragment) shaders, with the same recipe-not-ownership semantics. The **Aquarium** and **Heat Haze** examples ship their fragments as preloaded shader assets. ### Fixed diff --git a/packages/melonjs/src/video/webgl/batchers/lit_quad_batcher.js b/packages/melonjs/src/video/webgl/batchers/lit_quad_batcher.js index 9440ca3ef..55c36168b 100644 --- a/packages/melonjs/src/video/webgl/batchers/lit_quad_batcher.js +++ b/packages/melonjs/src/video/webgl/batchers/lit_quad_batcher.js @@ -429,6 +429,18 @@ export default class LitQuadBatcher extends QuadBatcher { this.currentShader.setUniform("uSampler", unit); this.currentSamplerUnit = unit; } + // feed the effect's `noise_uv` builtin — see QuadBatcher.addQuad + if (typeof this.currentShader._setNoiseUVRect === "function") { + const source = texture.getTexture(); + this.currentShader._setNoiseUVRect( + source.width || source.videoWidth || 1, + source.height || source.videoHeight || 1, + w, + h, + Math.min(u0, u1), + Math.min(v0, v1), + ); + } } let normalTextureId = -1; @@ -539,6 +551,9 @@ export default class LitQuadBatcher extends QuadBatcher { this.boundTextures[0] = source; shader.setUniform("uSampler", 0); + // `noise_uv` builtin: a blit is a full-frame quad — identity rect + shader._setNoiseUVRect?.(width, height, width, height, 0, 0); + // transform corners through the renderer transform — see // `QuadBatcher.blitTexture` for the rationale. Only caller today // is `WebGLRenderer.blitEffect`, which resets `currentTransform` diff --git a/packages/melonjs/src/video/webgl/batchers/quad_batcher.js b/packages/melonjs/src/video/webgl/batchers/quad_batcher.js index a2f37b96f..4b544df3e 100644 --- a/packages/melonjs/src/video/webgl/batchers/quad_batcher.js +++ b/packages/melonjs/src/video/webgl/batchers/quad_batcher.js @@ -220,6 +220,9 @@ export default class QuadBatcher extends MaterialBatcher { this.boundTextures[0] = source; shader.setUniform("uSampler", 0); + // `noise_uv` builtin: a blit is a full-frame quad — identity rect + shader._setNoiseUVRect?.(width, height, width, height, 0, 0); + // (re)bind any extra textures a ShaderEffect declared via setTexture, // to their reserved high units — after the source claims unit 0 shader._prepareTextures?.(this); @@ -310,6 +313,19 @@ export default class QuadBatcher extends MaterialBatcher { this.currentShader.setUniform("uSampler", unit); this.currentSamplerUnit = unit; } + // feed the effect's `noise_uv` builtin (frame-local UVs) with this + // quad's frame rect — min() normalizes flipped (swapped) UVs + if (typeof this.currentShader._setNoiseUVRect === "function") { + const source = texture.getTexture(); + this.currentShader._setNoiseUVRect( + source.width || source.videoWidth || 1, + source.height || source.videoHeight || 1, + w, + h, + Math.min(u0, u1), + Math.min(v0, v1), + ); + } } // Transform vertices. Stamp per-sprite depth onto z BEFORE diff --git a/packages/melonjs/src/video/webgl/shadereffect.js b/packages/melonjs/src/video/webgl/shadereffect.js index 080ebacf4..7adab59e5 100644 --- a/packages/melonjs/src/video/webgl/shadereffect.js +++ b/packages/melonjs/src/video/webgl/shadereffect.js @@ -8,6 +8,113 @@ import Texture2d from "../texture/texture2d.ts"; import GLShader from "./glshader.js"; import quadVertex from "./shaders/quad.vert"; +/* + * ---- Godot-style shader builtins ------------------------------------------ + * + * Inside a ShaderEffect fragment body, three names get special treatment so + * users never compute screen/frame UVs by hand (same ergonomics as Godot's + * `hint_screen_texture` / `SCREEN_UV`): + * + * - `uniform sampler2D : screen_texture;` — the engine strips the + * annotation and keeps the sampler filled with a capture of everything + * drawn so far (BackBufferCopy semantics, via the renderer's shared + * toFrameTexture slot). An optional wrap mode is accepted: + * `: screen_texture(repeat)`. + * - `screen_uv` — varying with this fragment's position in that capture + * (0..1 across the screen). + * - `noise_uv` — varying with a frame-local coordinate across the drawn + * object (undoes atlas packing; scaled to object pixels so patterns keep + * their density when the destination is scaled). + * + * The builtins only activate when referenced, and never when the body + * carries its OWN declaration of the identifier — a shader that used these + * names before this feature keeps compiling unchanged. + */ +const SCREEN_TEXTURE_ANNOTATION = + /\buniform\s+sampler2D\s+([A-Za-z_]\w*)\s*:\s*screen_texture(?:\((repeat|repeat-x|repeat-y|no-repeat)\))?\s*;/g; +const SCREEN_UV_IDENTIFIER = /\bscreen_uv\b/; +const NOISE_UV_IDENTIFIER = /\bnoise_uv\b/; + +/** + * whether the body declares `name` itself (as a varying/uniform/attribute) — + * the engine then leaves that identifier fully user-managed + * @ignore + */ +function hasOwnDeclaration(source, name) { + return new RegExp( + `\\b(?:varying|uniform|attribute)\\s+\\w+\\s+${name}\\s*;`, + ).test(source); +} + +/** + * Parse the builtin usages out of a fragment body: collect and strip the + * `: screen_texture` annotations, and detect the `screen_uv` / `noise_uv` + * varyings. Bodies without builtins pass through byte-identical. + * @ignore + */ +function parseShaderBuiltins(fragmentBody) { + const screenTextures = []; + const body = fragmentBody.replace( + SCREEN_TEXTURE_ANNOTATION, + (match, name, repeat = "no-repeat") => { + screenTextures.push({ name, repeat }); + // keep the plain `uniform sampler2D ;` declaration + return match.replace(/\s*:\s*screen_texture(?:\([\w-]+\))?/, ""); + }, + ); + const screenUV = + (screenTextures.length > 0 || SCREEN_UV_IDENTIFIER.test(body)) && + !hasOwnDeclaration(body, "screen_uv"); + const noiseUV = + NOISE_UV_IDENTIFIER.test(body) && !hasOwnDeclaration(body, "noise_uv"); + return { body, screenTextures, screenUV, noiseUV }; +} + +/** + * The effect's vertex shader: the stock quad template, or — when a builtin + * varying is in play — a variant that additionally computes `screen_uv` + * (clip space → 0..1) and/or `noise_uv` (atlas UV → frame-local, fed by + * `_setNoiseUVRect` through the `ME_*` uniforms). Built deterministically + * from a template; user source is never rewritten. + * @ignore + */ +function buildEffectVertex(builtins) { + if (!builtins.screenUV && !builtins.noiseUV) { + return quadVertex; + } + return [ + "attribute vec3 aVertex;", + "attribute vec2 aRegion;", + "attribute vec4 aColor;", + "uniform mat4 uProjectionMatrix;", + "varying vec2 vRegion;", + "varying vec4 vColor;", + ...(builtins.screenUV ? ["varying vec2 screen_uv;"] : []), + ...(builtins.noiseUV + ? [ + "uniform vec2 ME_size_obj;", + "uniform vec2 ME_size_img;", + "uniform vec2 ME_offset;", + "varying vec2 noise_uv;", + ] + : []), + "void main(void) {", + " vec4 ME_clip = uProjectionMatrix * vec4(aVertex, 1.0);", + " gl_Position = ME_clip;", + ...(builtins.screenUV + ? [" screen_uv = ME_clip.xy / ME_clip.w * 0.5 + 0.5;"] + : []), + ...(builtins.noiseUV + ? [ + " noise_uv = aRegion * (ME_size_img / ME_size_obj) - ME_offset / ME_size_obj;", + ] + : []), + " vColor = vec4(aColor.bgr * aColor.a, aColor.a);", + " vRegion = aRegion;", + "}", + ].join("\n"); +} + /** * A simplified shader class for applying custom fragment effects to renderables. * Only requires a fragment `apply()` function — the vertex shader, uniforms, and @@ -34,6 +141,23 @@ import quadVertex from "./shaders/quad.vert"; * mySprite.shader = pulse; * // update the uniform each frame * pulse.setUniform("uTime", time); + * @example + * // Godot-style shader builtins — no JS plumbing, no UV math: + * // `: screen_texture` keeps the sampler filled with everything drawn so + * // far (BackBufferCopy semantics; one screen copy per draw of the effect), + * // `screen_uv` is this fragment's 0..1 screen position, and `noise_uv` + * // runs 0..1 across the sprite regardless of its atlas frame. + * const water = new ShaderEffect(renderer, ` + * uniform sampler2D uNoise; + * uniform sampler2D screenTex : screen_texture; + * uniform float uTime; + * vec4 apply(vec4 color, vec2 uv) { + * vec2 flow = texture2D(uNoise, noise_uv + uTime * 0.25).rg; + * vec4 refracted = texture2D(screenTex, screen_uv + flow * 0.005); + * return refracted * texture2D(uSampler, uv + flow * 0.005); + * } + * `); + * water.setTexture("uNoise", noiseTexture.getTexture(), "repeat"); */ export default class ShaderEffect { /** @@ -102,12 +226,29 @@ export default class ShaderEffect { return; } + // Godot-style builtins: parse & strip `: screen_texture` annotations, + // detect the free `screen_uv` / `noise_uv` varyings (see the module + // header). A body using none of them passes through untouched. + const builtins = parseShaderBuiltins(fragmentBody); + + /** + * samplers annotated `: screen_texture` — the renderer checks this to + * know when to refresh the shared frame capture before the effect draws + * @type {Array<{name: string, repeat: string}>} + * @ignore + */ + this._screenTextureUniforms = builtins.screenTextures; + /** @ignore */ + this._hasNoiseUV = builtins.noiseUV; + // wrap the user's apply() with the texture-sampling boilerplate const fragment = [ "uniform sampler2D uSampler;", "varying vec4 vColor;", "varying vec2 vRegion;", - fragmentBody, + ...(builtins.screenUV ? ["varying vec2 screen_uv;"] : []), + ...(builtins.noiseUV ? ["varying vec2 noise_uv;"] : []), + builtins.body, "void main(void) {", " vec4 texColor = texture2D(uSampler, vRegion) * vColor;", " gl_FragColor = apply(texColor, vRegion);", @@ -117,7 +258,7 @@ export default class ShaderEffect { /** @ignore */ this._shader = new GLShader( renderer.gl, - quadVertex, + buildEffectVertex(builtins), fragment, precision || renderer.shaderPrecision, ); @@ -131,6 +272,17 @@ export default class ShaderEffect { */ this._extraTextures = new Map(); + // wire every annotated screen sampler to the renderer's shared frame + // capture — a live GPU-resident entry, re-bound fresh on each draw and + // skipped while no capture has been taken yet + for (const screenTexture of builtins.screenTextures) { + this.setTexture( + screenTexture.name, + renderer.getSharedFrameTexture(), + screenTexture.repeat, + ); + } + // flip enabled across context loss so beginPostEffect skips us on(ONCONTEXT_LOST, this._onContextLost, this); on(ONCONTEXT_RESTORED, this._onContextRestored, this); @@ -229,6 +381,94 @@ export default class ShaderEffect { return this; } + /** + * Feed the `noise_uv` builtin's frame rect for the object about to draw: + * the source texture dimensions, the destination (object) dimensions, and + * the frame's top-left UV origin. Called by the quad batchers per draw; + * a no-op unless this effect's fragment actually uses `noise_uv` (the + * `ME_*` uniforms only exist — and are only active — then). + * @param {number} sourceWidth - source texture width in pixels + * @param {number} sourceHeight - source texture height in pixels + * @param {number} objectWidth - destination (object) width in pixels + * @param {number} objectHeight - destination (object) height in pixels + * @param {number} u0 - the frame's left UV coordinate (flip-normalized) + * @param {number} v0 - the frame's top UV coordinate (flip-normalized) + * @ignore + */ + _setNoiseUVRect( + sourceWidth, + sourceHeight, + objectWidth, + objectHeight, + u0, + v0, + ) { + if ( + this._hasNoiseUV !== true || + typeof this._shader === "undefined" || + this.destroyed === true || + this._shader.suspended + ) { + return; + } + // guard each set on the ACTIVE uniforms map — the compiler eliminates + // the ME_* uniforms when `noise_uv` ends up unused, and setUniform + // throws on inactive uniforms + const uniforms = this._shader.uniforms; + if (typeof uniforms.ME_size_obj !== "undefined") { + this._shader.setUniform("ME_size_obj", [ + Math.max(Math.abs(objectWidth), 1), + Math.max(Math.abs(objectHeight), 1), + ]); + } + if (typeof uniforms.ME_size_img !== "undefined") { + this._shader.setUniform("ME_size_img", [ + Math.max(sourceWidth, 1), + Math.max(sourceHeight, 1), + ]); + } + if (typeof uniforms.ME_offset !== "undefined") { + this._shader.setUniform("ME_offset", [ + u0 * Math.max(sourceWidth, 1), + v0 * Math.max(sourceHeight, 1), + ]); + } + } + + /** + * Apply the wrap mode a `: screen_texture()` annotation asked for + * onto the live capture handle. Captures are NPOT (canvas-sized), which + * WebGL 1 cannot repeat — warn once and keep the clamp there. The unit is + * force-activated first: the batcher's bind may have been skipped as + * redundant while the GL active unit points elsewhere. + * @ignore + */ + _applyCaptureWrap(batcher, glTex, entry) { + const gl = batcher.gl; + if (batcher.renderer.WebGLVersion === 1) { + if (this._captureWrapWarned !== true) { + this._captureWrapWarned = true; + console.warn( + "ShaderEffect: screen_texture(" + + entry.repeat + + ") needs WebGL 2 (captures are non-power-of-two) — using clamp-to-edge", + ); + } + return; + } + gl.activeTexture(gl.TEXTURE0 + entry.unit); + gl.bindTexture(gl.TEXTURE_2D, glTex); + batcher.currentTextureUnit = entry.unit; + const wrapS = /^repeat(-x)?$/.test(entry.repeat) + ? gl.REPEAT + : gl.CLAMP_TO_EDGE; + const wrapT = /^repeat(-y)?$/.test(entry.repeat) + ? gl.REPEAT + : gl.CLAMP_TO_EDGE; + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT); + } + /** * Bind an **extra** texture to a named `sampler2D` uniform in this shader, so * a custom effect can read a *second* texture — a noise map, mask, gradient, @@ -362,6 +602,11 @@ export default class ShaderEffect { const glTex = entry.image.glTexture; if (glTex !== null && typeof glTex !== "undefined") { batcher.bindTexture2D(glTex, entry.unit, false); + if (entry.repeat !== "no-repeat") { + // `: screen_texture(repeat)` — captures are created + // clamped; apply the requested wrap on the live handle + this._applyCaptureWrap(batcher, glTex, entry); + } this._shader.setUniform(name, entry.unit); bound = true; } diff --git a/packages/melonjs/src/video/webgl/webgl_renderer.js b/packages/melonjs/src/video/webgl/webgl_renderer.js index ab34df72a..0dfe7aa47 100644 --- a/packages/melonjs/src/video/webgl/webgl_renderer.js +++ b/packages/melonjs/src/video/webgl/webgl_renderer.js @@ -936,7 +936,7 @@ export default class WebGLRenderer extends Renderer { // - `target: ` → refresh that caller-owned capture in place const shared = typeof options.target === "undefined"; let frame = shared - ? this._frameTexture + ? this.getSharedFrameTexture() : options.target === null ? undefined : options.target; @@ -1001,6 +1001,23 @@ export default class WebGLRenderer extends Renderer { return frame; } + /** + * The renderer-owned shared frame-capture slot, minted lazily so it has a + * stable identity from the moment an effect is constructed — before the + * first actual capture fills it (`glTexture` stays `null` until then, and + * the live-sampler bind path skips unfilled captures). `ShaderEffect` + * wires `: screen_texture` annotated samplers to this object. + * @returns {FrameTexture} the shared capture slot + * @ignore + */ + getSharedFrameTexture() { + if (typeof this._frameTexture === "undefined") { + const canvas = this.getCanvas(); + this._frameTexture = new FrameTexture(this, canvas.width, canvas.height); + } + return this._frameTexture; + } + /** * Forget the cached binding for GL texture `unit` on every batcher (except * `except`). Call this whenever a texture is bound to a unit **directly** — @@ -1112,6 +1129,20 @@ export default class WebGLRenderer extends Renderer { const h = canvas.height; this.flush(); + + // `screen_texture` shader builtin (Godot BackBufferCopy semantics): + // refresh the shared frame capture the effects' live samplers are + // wired to. For a CAMERA effect the "screen" is the scene itself — + // capture the still-bound camera FBO before unbinding it. For a + // renderable's effect chain the "screen" is everything drawn behind + // it — captured from the parent target after it is rebound below. + const needsScreenTexture = effects.some((fx) => { + return fx._screenTextureUniforms?.length > 0; + }); + if (needsScreenTexture && isCamera) { + this.toFrameTexture(); + } + rt1.unbind(); // get parent render target for rebinding after blits @@ -1138,6 +1169,11 @@ export default class WebGLRenderer extends Renderer { this.setViewport(0, 0, w, h); emit(RENDER_TARGET_CHANGED, this); + // see needsScreenTexture above — the scene behind this renderable + if (needsScreenTexture && !isCamera) { + this.toFrameTexture(); + } + if (effects.length === 1) { this.blitEffect(rt1.texture, 0, 0, w, h, effects[0], keepBlend); } else { @@ -1439,6 +1475,15 @@ export default class WebGLRenderer extends Renderer { // active lights AND this sprite has a normal map. Otherwise the // unlit `quad` batcher is faster (full texture-unit capacity, no // paired normal upload, no per-fragment lighting math). + // Godot BackBufferCopy semantics for the `screen_texture` shader + // builtin: refresh the shared frame capture with everything drawn so + // far BEFORE this sprite's own quad, so the effect samples the scene + // behind it. Must run before setBatcher below — toFrameTexture + // flushes and switches to the quad batcher internally. + if (this.customShader?._screenTextureUniforms?.length > 0) { + this.toFrameTexture(); + } + const useLit = this.batchers.has("litQuad") && this.activeLightCount > 0 && diff --git a/packages/melonjs/tests/shadereffect-builtins.spec.js b/packages/melonjs/tests/shadereffect-builtins.spec.js new file mode 100644 index 000000000..851c0e64e --- /dev/null +++ b/packages/melonjs/tests/shadereffect-builtins.spec.js @@ -0,0 +1,298 @@ +import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; +import { boot, ShaderEffect, video, WebGLRenderer } from "../src/index.js"; + +/** + * Godot-style shader builtins in ShaderEffect: + * + * - `uniform sampler2D name : screen_texture;` — auto-wired to the + * renderer's shared frame capture (BackBufferCopy semantics) + * - `screen_uv` — free varying, fragment position in that capture + * - `noise_uv` — free varying, frame-local 0..1 across the drawn object + * + * Covers source-level parsing/injection, the live auto-wiring, true + * screen-capture semantics on the sprite (customShader) path via + * readPixels, noise_uv frame-locality for an atlas sub-frame, and + * backward compatibility for shaders that don't use (or self-declare) + * the builtin names. + */ +describe("ShaderEffect builtins (screen_texture / screen_uv / noise_uv)", () => { + let renderer; + + beforeAll(async () => { + await boot(); + try { + video.init(64, 64, { + parent: "screen", + renderer: video.WEBGL, + failIfMajorPerformanceCaveat: false, + }); + } catch { + // WebGL genuinely unavailable — tests skip below + } + if (video.renderer instanceof WebGLRenderer) { + renderer = video.renderer; + // a bare harness never runs a frame, which is what normally + // installs the camera's ortho projection — set it up once so + // world coordinates land on canvas pixels like in a real game + renderer.projectionMatrix.ortho(0, 64, 64, 0, -1000, 1000); + renderer.currentBatcher.setProjection(renderer.projectionMatrix); + } + }); + + afterAll(() => { + try { + video.init(64, 64, { parent: "screen", renderer: video.AUTO }); + } catch { + // ignore + } + }); + + const requireWebGL = (ctx) => { + if (renderer === undefined) { + ctx.skip("WebGL renderer not available in this environment"); + } + }; + + const IDENTITY_SCREEN = ` + uniform sampler2D screenTex : screen_texture; + vec4 apply(vec4 color, vec2 uv) { + return texture2D(screenTex, screen_uv); + } + `; + + it("parses the annotation, compiles, and auto-wires the shared capture", (ctx) => { + requireWebGL(ctx); + const fx = new ShaderEffect(renderer, IDENTITY_SCREEN); + // annotation recorded (with default wrap) + expect(fx._screenTextureUniforms).toEqual([ + { name: "screenTex", repeat: "no-repeat" }, + ]); + // the stripped sampler is a real active uniform of the program + expect(fx._shader.uniforms.screenTex).toBeDefined(); + // auto-wired as a LIVE entry pointing at the shared capture slot + const entry = fx._extraTextures.get("screenTex"); + expect(entry).toBeDefined(); + expect(entry.live).toBe(true); + expect(entry.image).toBe(renderer.getSharedFrameTexture()); + fx.destroy(); + }); + + it("accepts a wrap mode in the annotation", (ctx) => { + requireWebGL(ctx); + const fx = new ShaderEffect( + renderer, + ` + uniform sampler2D screenTex : screen_texture(repeat); + vec4 apply(vec4 color, vec2 uv) { + return texture2D(screenTex, screen_uv * 2.0); + } + `, + ); + expect(fx._screenTextureUniforms).toEqual([ + { name: "screenTex", repeat: "repeat" }, + ]); + expect(fx._extraTextures.get("screenTex").repeat).toBe("repeat"); + fx.destroy(); + }); + + it("activates noise_uv (ME_* uniforms) only when used", (ctx) => { + requireWebGL(ctx); + const withNoise = new ShaderEffect( + renderer, + ` + vec4 apply(vec4 color, vec2 uv) { + return vec4(noise_uv, 0.0, 1.0); + } + `, + ); + expect(withNoise._hasNoiseUV).toBe(true); + expect(withNoise._shader.uniforms.ME_size_obj).toBeDefined(); + expect(withNoise._shader.uniforms.ME_size_img).toBeDefined(); + expect(withNoise._shader.uniforms.ME_offset).toBeDefined(); + withNoise.destroy(); + + const plain = new ShaderEffect( + renderer, + ` + vec4 apply(vec4 color, vec2 uv) { + return color; + } + `, + ); + expect(plain._hasNoiseUV).toBe(false); + expect(plain._screenTextureUniforms).toEqual([]); + expect(plain._shader.uniforms.ME_size_obj).toBeUndefined(); + plain.destroy(); + }); + + it("leaves a body that declares its own builtin names untouched (back-compat)", (ctx) => { + requireWebGL(ctx); + // pre-feature shader that invented its own `noise_uv` uniform — the + // engine must not inject a conflicting varying + const fx = new ShaderEffect( + renderer, + ` + uniform vec2 noise_uv; + vec4 apply(vec4 color, vec2 uv) { + return vec4(noise_uv, 0.0, 1.0) * color; + } + `, + ); + expect(fx._hasNoiseUV).toBe(false); + // user-managed uniform is active and settable, exactly as before + expect(fx._shader.uniforms.noise_uv).toBeDefined(); + expect(() => { + fx.setUniform("noise_uv", [0.5, 0.5]); + }).not.toThrow(); + fx.destroy(); + }); + + // draw `source` as a quad through the single-effect customShader path — + // the same harness as shadereffect-settexture.spec.js + const drawWithEffect = (effect, source, dx, dy, dw, dh, sx, sy, sw, sh) => { + renderer.save(); + renderer.customShader = effect; + renderer.drawImage( + source, + sx ?? 0, + sy ?? 0, + sw ?? source.width, + sh ?? source.height, + dx, + dy, + dw, + dh, + ); + renderer.flush(); + renderer.customShader = undefined; + renderer.restore(); + }; + + const readPixel = (canvasX, canvasY) => { + const gl = renderer.gl; + const px = new Uint8Array(4); + // readPixels rows are bottom-up; canvas coords are top-down + gl.readPixels( + canvasX, + renderer.getCanvas().height - 1 - canvasY, + 1, + 1, + gl.RGBA, + gl.UNSIGNED_BYTE, + px, + ); + return px; + }; + + const solidCanvas = (r, g, b, w = 64, h = 64) => { + const c = video.createCanvas(w, h); + const ctx2d = c.getContext("2d"); + ctx2d.fillStyle = `rgb(${r}, ${g}, ${b})`; + ctx2d.fillRect(0, 0, w, h); + return c; + }; + + it("does not capture the screen for effects without screen_texture", (ctx) => { + requireWebGL(ctx); + const spy = vi.spyOn(renderer, "toFrameTexture"); + const plain = new ShaderEffect( + renderer, + ` + vec4 apply(vec4 color, vec2 uv) { + return color; + } + `, + ); + drawWithEffect(plain, solidCanvas(0, 255, 0, 16, 16), 0, 0, 16, 16); + expect(spy).not.toHaveBeenCalled(); + spy.mockRestore(); + plain.destroy(); + }); + + it("samples the true scene behind the object (customShader path, readPixels)", (ctx) => { + requireWebGL(ctx); + + // two-tone backdrop: red top half, blue bottom half (canvas coords) + renderer.clearColor("#000000ff"); + renderer.drawImage(solidCanvas(255, 0, 0, 64, 32), 0, 0); + renderer.drawImage(solidCanvas(0, 0, 255, 64, 32), 0, 32); + renderer.flush(); + + // a GRAY source drawn through an effect that returns the SCREEN with + // channels swizzled (.bgr) — output pixels prove all three at once: + // the effect ran (not the gray source), it sampled the true backdrop + // (BackBufferCopy), and screen_uv orientation matches (top stays top) + const fx = new ShaderEffect( + renderer, + ` + uniform sampler2D screenTex : screen_texture; + vec4 apply(vec4 color, vec2 uv) { + return vec4(texture2D(screenTex, screen_uv).bgr, 1.0); + } + `, + ); + drawWithEffect(fx, solidCanvas(64, 64, 64, 32, 32), 16, 16, 32, 32); + + // inside the quad, canvas-top region (y 20 < 32): red backdrop, + // swizzled → blue + const top = readPixel(32, 20); + expect(top[2]).toBeGreaterThan(200); + expect(top[0]).toBeLessThan(60); + // inside the quad, canvas-bottom region (y 44): blue backdrop, + // swizzled → red + const bottom = readPixel(32, 44); + expect(bottom[0]).toBeGreaterThan(200); + expect(bottom[2]).toBeLessThan(60); + // outside the quad: backdrop untouched (red stays red) + const outside = readPixel(4, 4); + expect(outside[0]).toBeGreaterThan(200); + + fx.destroy(); + }); + + it("noise_uv is frame-local for an atlas sub-frame", (ctx) => { + requireWebGL(ctx); + + // 64x32 sheet, drawing ONLY its right half (source rect x 32..64) — + // noise_uv must still run 0..1 across the DRAWN frame + const sheet = solidCanvas(0, 0, 0, 64, 32); + const fx = new ShaderEffect( + renderer, + ` + vec4 apply(vec4 color, vec2 uv) { + return vec4(noise_uv, 0.0, 1.0); + } + `, + ); + renderer.clearColor("#000000ff"); + drawWithEffect(fx, sheet, 16, 16, 32, 32, 32, 0, 32, 32); + + // red channel = noise_uv.x: ~0 at the frame's left edge, ~1 at its + // right edge — even though the frame starts at u = 0.5 in the sheet + const left = readPixel(18, 32); + const right = readPixel(45, 32); + expect(left[0]).toBeLessThan(40); + expect(right[0]).toBeGreaterThan(215); + // green channel = noise_uv.y across the frame height + const topEdge = readPixel(32, 18); + const bottomEdge = readPixel(32, 45); + expect(topEdge[1]).toBeLessThan(40); + expect(bottomEdge[1]).toBeGreaterThan(215); + + fx.destroy(); + }); + + it("clone keeps the builtins wired", (ctx) => { + requireWebGL(ctx); + const fx = new ShaderEffect(renderer, IDENTITY_SCREEN); + const copy = fx.clone(); + expect(copy._screenTextureUniforms).toEqual(fx._screenTextureUniforms); + const entry = copy._extraTextures.get("screenTex"); + expect(entry.live).toBe(true); + expect(entry.image).toBe(renderer.getSharedFrameTexture()); + // destroying an effect never destroys the renderer-owned capture + fx.destroy(); + copy.destroy(); + expect(renderer.getSharedFrameTexture()).toBeDefined(); + }); +}); From a229ceba863db0f8a30739f357f613a8cd4c190d Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Sat, 11 Jul 2026 14:42:41 +0800 Subject: [PATCH 2/8] =?UTF-8?q?feat(examples):=20Water=20Overworld=20?= =?UTF-8?q?=E2=80=94=20the=20editor=20team's=20demo=20scene,=20ported=201:?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Side-scroller overworld (GandalfHardcore free 32x32 pack) with the water-refraction shader from the contributed build, verbatim: two cellular NoiseTexture2d flow maps + screenTex : screen_texture + screen_uv mirror + noise_uv flow — the canonical showcase of the new shader builtins. TMX level, atlas strip-sliced animated props (campfire, portal, cooking area), drifting clouds, playable character (A/D walk, W jump, Shift run — their controller plugin replaced by ~25 lines of plain melonJS input/body code with the same tuning). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- .../waterOverworld/image/Floor Tiles1.webp | Bin 0 -> 34552 bytes .../waterOverworld/image/texture_image_0.webp | Bin 0 -> 322398 bytes .../waterOverworld/json/texture_image_0.json | 165 +++ .../assets/waterOverworld/level/level1.json | 1278 +++++++++++++++++ .../waterOverworld/tileset/foreground.json | 1 + .../waterOverworld/ExampleWaterOverworld.tsx | 38 + .../src/examples/waterOverworld/entities.ts | 434 ++++++ .../src/examples/waterOverworld/game.ts | 53 + .../src/examples/waterOverworld/play.ts | 27 + packages/examples/src/main.tsx | 13 + 10 files changed, 2009 insertions(+) create mode 100644 packages/examples/public/assets/waterOverworld/image/Floor Tiles1.webp create mode 100644 packages/examples/public/assets/waterOverworld/image/texture_image_0.webp create mode 100644 packages/examples/public/assets/waterOverworld/json/texture_image_0.json create mode 100644 packages/examples/public/assets/waterOverworld/level/level1.json create mode 100644 packages/examples/public/assets/waterOverworld/tileset/foreground.json create mode 100644 packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx create mode 100644 packages/examples/src/examples/waterOverworld/entities.ts create mode 100644 packages/examples/src/examples/waterOverworld/game.ts create mode 100644 packages/examples/src/examples/waterOverworld/play.ts diff --git a/packages/examples/public/assets/waterOverworld/image/Floor Tiles1.webp b/packages/examples/public/assets/waterOverworld/image/Floor Tiles1.webp new file mode 100644 index 0000000000000000000000000000000000000000..a796368d7066f8859fec0d1d7ef752a6f7623580 GIT binary patch literal 34552 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 V)~MMK;2^9d4Rht8f1eh>004ykW$OR{ literal 0 HcmV?d00001 diff --git a/packages/examples/public/assets/waterOverworld/image/texture_image_0.webp b/packages/examples/public/assets/waterOverworld/image/texture_image_0.webp new file mode 100644 index 0000000000000000000000000000000000000000..75ddd3ff65bae9d079b4b8f117b73acb77887660 GIT binary patch literal 322398 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�c`N#j-@(=YkOzUcj_!ZCU*=67fwA*Yyi=1 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

J}6)ycM+DlTC{{PSh>AEE5Xs5F&umdT9MR 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 A+5i9m literal 0 HcmV?d00001 diff --git a/packages/examples/public/assets/waterOverworld/json/texture_image_0.json b/packages/examples/public/assets/waterOverworld/json/texture_image_0.json new file mode 100644 index 000000000..df81c6ae8 --- /dev/null +++ b/packages/examples/public/assets/waterOverworld/json/texture_image_0.json @@ -0,0 +1,165 @@ +{"frames": [ + +{ + "filename": "2dWater", + "frame": {"x":743,"y":387,"w":480,"h":480}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":480,"h":480}, + "sourceSize": {"w":480,"h":480}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "Angel Statue", + "frame": {"x":1983,"y":1,"w":64,"h":64}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":64,"h":64}, + "sourceSize": {"w":64,"h":64}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "Birch1", + "frame": {"x":1627,"y":663,"w":80,"h":112}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":80,"h":112}, + "sourceSize": {"w":80,"h":112}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "Campfire with food sheet", + "frame": {"x":1627,"y":405,"w":160,"h":256}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":160,"h":256}, + "sourceSize": {"w":160,"h":256}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "cloud5", + "frame": {"x":743,"y":349,"w":110,"h":35}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":110,"h":35}, + "sourceSize": {"w":110,"h":35}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "Cooking area", + "frame": {"x":803,"y":935,"w":768,"h":64}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":768,"h":64}, + "sourceSize": {"w":768,"h":64}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "GandalfHardcore Background layers", + "frame": {"x":1,"y":1,"w":1024,"h":346}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":1024,"h":346}, + "sourceSize": {"w":1024,"h":346}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "GandalfHardcore Portal sheet", + "frame": {"x":1225,"y":789,"w":640,"h":64}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":640,"h":64}, + "sourceSize": {"w":640,"h":64}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "HP bar preview", + "frame": {"x":1027,"y":1,"w":696,"h":384}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":696,"h":384}, + "sourceSize": {"w":696,"h":384}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "male_idle", + "frame": {"x":1,"y":874,"w":800,"h":64}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":800,"h":64}, + "sourceSize": {"w":800,"h":64}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "male_run", + "frame": {"x":1,"y":940,"w":800,"h":64}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":800,"h":64}, + "sourceSize": {"w":800,"h":64}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "male_walk", + "frame": {"x":803,"y":869,"w":800,"h":64}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":800,"h":64}, + "sourceSize": {"w":800,"h":64}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "sun", + "frame": {"x":1789,"y":405,"w":32,"h":32}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":32,"h":32}, + "sourceSize": {"w":32,"h":32}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "TilesAssets", + "frame": {"x":1225,"y":387,"w":400,"h":400}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":400,"h":400}, + "sourceSize": {"w":400,"h":400}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "Tree2", + "frame": {"x":1725,"y":1,"w":256,"h":208}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":256,"h":208}, + "sourceSize": {"w":256,"h":208}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "water2ds", + "frame": {"x":1,"y":349,"w":740,"h":523}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":740,"h":523}, + "sourceSize": {"w":740,"h":523}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "Weeping Willow1", + "frame": {"x":1725,"y":211,"w":224,"h":192}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":224,"h":192}, + "sourceSize": {"w":224,"h":192}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "https://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "texture_image_0.webp", + "format": "RGBA8888", + "size": {"w":2048,"h":1024}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:100c99bc6065c58490c69f6f368c4ee3:6e253f253e708684eaeaa46c77137f6f:c6b1571f4a98eab5c8284aa57b587db1$" +} +} diff --git a/packages/examples/public/assets/waterOverworld/level/level1.json b/packages/examples/public/assets/waterOverworld/level/level1.json new file mode 100644 index 000000000..789bf4fdb --- /dev/null +++ b/packages/examples/public/assets/waterOverworld/level/level1.json @@ -0,0 +1,1278 @@ +{ + "type": "map", + "height": 20, + "width": 30, + "tilewidth": 32, + "tileheight": 32, + "infinite": false, + "nextobjectid": 1, + "orientation": "orthogonal", + "renderorder": "right-down", + "backgroundcolor": "#ffffff", + "editor": "melon-editor", + "tilesets": [ + { + "firstgid": 1, + "source": "..\\tileset\\foreground.json" + } + ], + "layers": [ + { + "name": "GandalfHardcore Background layers", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": 480, + "y": 145, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1.833 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "GandalfHardcore Background layers", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "GandalfHardcore Background layers", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": 480, + "y": 173, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "GandalfHardcore Background layers", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "foreground", + "type": "tilelayer", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "tilesetName": "foreground", + "width": 30, + "height": 20, + "data": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 2, + 2, + 2, + 3, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 37, + 38, + 7, + 35, + 8, + 8, + 39, + 53, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 18, + 16, + 44, + 0, + 0, + 43, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 41, + 16, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 32, + 25, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 19, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 0, + 19, + 9, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 0, + 0, + 18, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 0, + 0, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 25, + 1, + 2, + 27, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 27, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11 + ] + }, + { + "name": "Weeping Willow1", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": 68, + "y": 192, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "Weeping Willow1", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "cookingArea", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "cookingArea", + "x": 96, + "y": 256, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": 0 + }, + "properties": { + "image": "Cooking area", + "framewidth": 64, + "frameheight": 64 + }, + "propertytypes": {}, + "duplicateID": 1 + } + ] + }, + { + "name": "Tree2", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": 785, + "y": 185, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "Tree2", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "portal", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "portal", + "x": 864, + "y": 256, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": 0 + }, + "properties": { + "image": "GandalfHardcore Portal sheet", + "framewidth": 64, + "frameheight": 64 + }, + "propertytypes": {}, + "duplicateID": 1 + } + ] + }, + { + "name": "foodie", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "foodie", + "x": 416, + "y": 272, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": 0 + }, + "properties": { + "image": "Campfire with food sheet", + "framewidth": 32, + "frameheight": 32 + }, + "propertytypes": {}, + "duplicateID": 1 + } + ] + }, + { + "name": "Angel Statue", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": 368, + "y": 128, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "Angel Statue", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "male", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "male", + "x": 165, + "y": 231, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": 0 + }, + "properties": { + "image": "male_idle", + "framewidth": 80, + "frameheight": 64 + }, + "propertytypes": {}, + "duplicateID": 1 + } + ] + }, + { + "name": "Birch1", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": "618", + "y": "232", + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "Birch1", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "sun", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "objects": [ + { + "name": "spriteTP", + "x": 838, + "y": 37, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": null + }, + "properties": { + "anchorPoint": "json:{\"x\":0,\"y\":0}", + "region": "sun", + "texture": "image" + }, + "propertytypes": { + "anchorPoint": "string", + "region": "string", + "texture": "string" + } + } + ] + }, + { + "name": "cloud", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "cloud", + "x": 88, + "y": 29, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": "" + }, + "properties": {}, + "propertytypes": {}, + "duplicateID": 1 + } + ] + }, + { + "name": "cloud", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "cloud", + "x": -141, + "y": 73, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": "" + }, + "properties": {}, + "propertytypes": {}, + "duplicateID": 2 + } + ] + }, + { + "name": "cloud", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "name": "cloud", + "x": 193, + "y": 63, + "rotation": 0, + "visible": true, + "renderLayer": "world", + "inspectors": { + "alpha": 1, + "rotate": 0, + "scale": { + "x": 1, + "y": 1 + }, + "flip": { + "x": false, + "y": false + }, + "z": "" + }, + "properties": {}, + "propertytypes": {}, + "duplicateID": 3 + } + ] + }, + { + "name": "collision", + "type": "objectgroup", + "x": 0, + "y": 0, + "opacity": 1, + "visible": true, + "draworder": "topdown", + "objects": [ + { + "type": "rect", + "x": -76.19426505493993, + "y": 290.1011299310855, + "width": 1081, + "height": 383.00000000000006, + "rotation": 0, + "visible": true, + "name": "collisionTP", + "properties": [ + { + "name": "collisionType", + "type": "string", + "value": "WORLD_SHAPE" + } + ] + }, + { + "type": "rect", + "x": 289.37148208861385, + "y": 159.94488169736923, + "width": 191.00000000000006, + "height": 64, + "rotation": 0, + "visible": true, + "name": "collisionTP", + "properties": [ + { + "name": "collisionType", + "type": "string", + "value": "WORLD_SHAPE" + } + ] + }, + { + "type": "rect", + "x": 256.82350308614593, + "y": 191.5296841898307, + "width": 255, + "height": 32.00000000000003, + "rotation": 0, + "visible": true, + "name": "collisionTP", + "properties": [ + { + "name": "collisionType", + "type": "string", + "value": "WORLD_SHAPE" + } + ] + }, + { + "type": "rect", + "x": 287.82350308614593, + "y": 223.5296841898307, + "width": 65, + "height": 67.00000000000003, + "rotation": 0, + "visible": true, + "name": "collisionTP", + "properties": [ + { + "name": "collisionType", + "type": "string", + "value": "WORLD_SHAPE" + } + ] + }, + { + "type": "rect", + "x": 447.6811789439849, + "y": 224.52738375915683, + "width": 32, + "height": 18.99999999999997, + "rotation": 0, + "visible": true, + "name": "collisionTP", + "properties": [ + { + "name": "collisionType", + "type": "string", + "value": "WORLD_SHAPE" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/packages/examples/public/assets/waterOverworld/tileset/foreground.json b/packages/examples/public/assets/waterOverworld/tileset/foreground.json new file mode 100644 index 000000000..2595bec8f --- /dev/null +++ b/packages/examples/public/assets/waterOverworld/tileset/foreground.json @@ -0,0 +1 @@ +{"type":"tileset","name":"foreground","columns":9,"tilecount":162,"tilewidth":32,"tileheight":32,"spacing":0,"margin":0,"image":"..\\image\\Floor Tiles1.webp","imagewidth":288,"imageheight":576,"tileproperties":{},"tilepropertytypes":{}} \ No newline at end of file diff --git a/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx b/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx new file mode 100644 index 000000000..65f0a9432 --- /dev/null +++ b/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx @@ -0,0 +1,38 @@ +/** + * melonJS — Water Overworld example (shader builtins showcase). + * Copyright (C) 2011 - 2026 AltByte Pte Ltd — MIT License. + * See `packages/examples/LICENSE.md` for full license + asset credits. + */ +import * as me from "melonjs"; +import { useEffect } from "react"; +import { createGame } from "./game"; + +export const ExampleWaterOverworld = () => { + useEffect(() => { + if (!me.game.isInitialized) { + createGame(); + } + }, []); + + return ( + // float above the fixed #screen overlay (see index.css) +
+ A/D move · W jump · hold Shift to run — the pond refracts the scene via{" "} + screen_texture / screen_uv /{" "} + noise_uv +
+ ); +}; diff --git a/packages/examples/src/examples/waterOverworld/entities.ts b/packages/examples/src/examples/waterOverworld/entities.ts new file mode 100644 index 000000000..5d9b54372 --- /dev/null +++ b/packages/examples/src/examples/waterOverworld/entities.ts @@ -0,0 +1,434 @@ +/** + * melonJS — Water Overworld example (shader builtins showcase). + * Copyright (C) 2011 - 2026 AltByte Pte Ltd — MIT License. + * See `packages/examples/LICENSE.md` for full license + asset credits. + * + * Scene and water shader contributed by the melonJS editor team; pixel art + * from GandalfHardcore's free 32x32 side-scroller asset pack (itch.io, + * free to reuse). + */ +import * as me from "melonjs"; + +/* the shared sprite atlas (texture_image_0), created once after preload */ +let gameTexture: me.TextureAtlas | null = null; +export const getGameTexture = () => { + if (gameTexture === null) { + gameTexture = new me.TextureAtlas( + me.loader.getJSON("texture_image_0"), + me.loader.getImage("texture_image_0"), + ); + } + return gameTexture; +}; + +/* one animation strip packed as a single atlas region: slice it into + * frameW x frameH sub-frames (row-major), registering per-frame UVs on the + * atlas — the runtime equivalent of packing each frame separately */ +type StripDef = { + region: string; + frameW: number; + frameH: number; + count: number; + anim: string; + delay: number; +}; + +const buildStripSettings = (texture: me.TextureAtlas, strips: StripDef[]) => { + /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-argument -- atlas region internals are untyped */ + const atlas: unknown[] = []; + const atlasIndices: Record = {}; + const animations: Record = {}; + let framewidth = 0; + let frameheight = 0; + const source = (texture as any).getTexture(); + + for (const strip of strips) { + const base = (texture as any).getRegion(strip.region); + if (!base) { + throw new Error(`region "${strip.region}" not found in atlas`); + } + const cols = Math.max(1, Math.floor(base.width / strip.frameW)); + const frames: { name: string; delay: number }[] = []; + for (let i = 0; i < strip.count; i++) { + const key = `${strip.region}#${i}`; + const fx = (i % cols) * strip.frameW; + const fy = Math.floor(i / cols) * strip.frameH; + const entry: Record = {}; + entry[key] = Object.assign({}, base, { + name: key, + offset: new me.Vector2d(base.offset.x + fx, base.offset.y + fy), + width: strip.frameW, + height: strip.frameH, + trimmed: false, + trim: undefined, + sourceSize: { w: strip.frameW, h: strip.frameH }, + angle: 0, + }); + (texture as any).addUVs(entry, key, source.width, source.height); + atlasIndices[key] = atlas.length; + atlas.push(entry[key]); + frames.push({ name: key, delay: strip.delay }); + } + animations[strip.anim] = frames; + framewidth = Math.max(framewidth, strip.frameW); + frameheight = Math.max(frameheight, strip.frameH); + } + /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-argument */ + return { atlas, atlasIndices, framewidth, frameheight, animations }; +}; + +/* register the animations built by buildStripSettings on a sprite */ +const addStripAnimations = ( + sprite: me.Sprite, + animations: Record, + initial: string, +) => { + for (const name of Object.keys(animations)) { + sprite.addAnimation(name, animations[name]); + } + sprite.setCurrentAnimation(initial); +}; + +/** + * Static decor placed by the TMX object layers (trees, statue, sun, …): + * a centered sprite showing one atlas region named by the object's + * `region` property. + */ +export class SpriteTP extends me.Sprite { + constructor(x: number, y: number, settings: any = {}) { + settings.image = getGameTexture(); + // the editor stores anchorPoint as a "json:..." string — decor is + // always centered on its placement point, same as the original + settings.anchorPoint = { x: 0.5, y: 0.5 }; + super(x, y, settings); + this.floating = false; + } +} + +/** + * Static world collision from the TMX `collision` layer (the TMX parser + * pre-builds `settings.shapes` from the rect objects). + */ +export class CollisionTP extends me.Renderable { + constructor(x: number, y: number, settings: any = {}) { + super(x, y, settings.width, settings.height); + this.anchorPoint.set(0, 0); + this.body = new me.Body(this, settings.shapes); + this.body.collisionType = me.collision.types.WORLD_SHAPE; + this.body.setStatic(true); + } +} + +/** a drifting-sky cloud — a single centered atlas frame */ +export class Cloud extends me.Sprite { + constructor(x: number, y: number, settings: any = {}) { + settings.image = getGameTexture(); + settings.region = "cloud5"; + settings.anchorPoint = { x: 0.5, y: 0.5 }; + super(x, y, settings); + } +} + +/* animated one-strip props (campfire food, portal, cooking area) */ +const makeStripProp = (strip: StripDef) => { + return class StripProp extends me.Sprite { + constructor(x: number, y: number, settings: any = {}) { + const texture = getGameTexture(); + const built = buildStripSettings(texture, [strip]); + settings.image = texture; + settings.atlas = built.atlas; + settings.atlasIndices = built.atlasIndices; + settings.framewidth = built.framewidth; + settings.frameheight = built.frameheight; + settings.anchorPoint = { x: 0.5, y: 0.5 }; + super(x, y, settings); + addStripAnimations(this, built.animations, strip.anim); + } + }; +}; + +export const Foodie = makeStripProp({ + region: "Campfire with food sheet", + frameW: 32, + frameH: 32, + count: 40, + anim: "camp", + delay: 100, +}); + +export const Portal = makeStripProp({ + region: "GandalfHardcore Portal sheet", + frameW: 64, + frameH: 64, + count: 10, + anim: "portal", + delay: 100, +}); + +export const CookingArea = makeStripProp({ + region: "Cooking area", + frameW: 64, + frameH: 64, + count: 12, + anim: "cook", + delay: 100, +}); + +/** + * The playable character: A/D walk, W jump, hold Shift to run. + * (Plain melonJS input/body code with the same tuning as the original + * demo's controller: maxVel (2, 15) — 5 while running — friction 0.5.) + */ +export class Male extends me.Sprite { + private running = false; + + constructor(x: number, y: number, settings: any = {}) { + const texture = getGameTexture(); + const built = buildStripSettings(texture, [ + { + region: "male_idle", + frameW: 80, + frameH: 64, + count: 5, + anim: "idle", + delay: 180, + }, + { + region: "male_walk", + frameW: 80, + frameH: 64, + count: 8, + anim: "walk", + delay: 80, + }, + { + region: "male_run", + frameW: 80, + frameH: 64, + count: 8, + anim: "run", + delay: 80, + }, + ]); + settings.image = texture; + settings.atlas = built.atlas; + settings.atlasIndices = built.atlasIndices; + settings.framewidth = built.framewidth; + settings.frameheight = built.frameheight; + settings.anchorPoint = { x: 0.5, y: 0.5 }; + super(x, y, settings); + addStripAnimations(this, built.animations, "idle"); + + // hit box authored in frame-local (top-left) space; the sprite is + // center-anchored, so shift it by half the frame like the original + this.body = new me.Body( + this, + new me.Rect(35 - this.width * 0.5, 21 - this.height * 0.5, 9, 43), + ); + this.body.collisionType = me.collision.types.PLAYER_OBJECT; + this.body.setMaxVelocity(2, 15); + this.body.setFriction(0.5, 0); + + me.input.bindKey(me.input.KEY.A, "left"); + me.input.bindKey(me.input.KEY.D, "right"); + me.input.bindKey(me.input.KEY.W, "jump", true); + me.input.bindKey(me.input.KEY.SHIFT, "runLock"); + + this.alwaysUpdate = true; + } + + override update(dt: number) { + const body = this.body; + + this.running = me.input.isKeyPressed("runLock"); + body.maxVel.x = this.running ? 5 : 2; + + if (me.input.isKeyPressed("left")) { + body.force.x = -body.maxVel.x; + } else if (me.input.isKeyPressed("right")) { + body.force.x = body.maxVel.x; + } else { + body.force.x = 0; + } + + if (me.input.isKeyPressed("jump")) { + if (!body.jumping && !body.falling) { + body.vel.y = -body.maxVel.y; + body.jumping = true; + } + } + + // idle / walk / run + facing, mirroring the original demo + if (body.vel.x === 0 && body.vel.y === 0) { + if (!this.isCurrentAnimation("idle")) { + this.setCurrentAnimation("idle"); + } + } else { + const anim = this.running ? "run" : "walk"; + if (!this.isCurrentAnimation(anim)) { + this.setCurrentAnimation(anim); + } + } + if (body.vel.x < 0) { + this.flipX(false); + } else if (body.vel.x > 0) { + this.flipX(true); + } + + return super.update(dt) || body.vel.x !== 0 || body.vel.y !== 0; + } + + override onDeactivateEvent() { + me.input.unbindKey(me.input.KEY.A); + me.input.unbindKey(me.input.KEY.D); + me.input.unbindKey(me.input.KEY.W); + me.input.unbindKey(me.input.KEY.SHIFT); + } +} + +/** + * The pond — an animated water sprite whose post effect refracts + * EVERYTHING drawn behind it, using the Godot-style shader builtins: + * + * - `screenTex : screen_texture` — the engine keeps this sampler filled + * with a capture of the screen so far (no JS plumbing) + * - `screen_uv` — this fragment's position in that capture + * - `noise_uv` — 0..1 across the water sprite itself, so the seamless + * noise textures tile independently of where the frame sits in the atlas + * + * Shader and tuning by the melonJS editor team (ported verbatim). + */ +export class WaterTextureObj extends me.Sprite { + private water: me.ShaderEffect; + + constructor(x: number, y: number, settings: any = {}) { + const texture = getGameTexture(); + // the two water frames are full atlas regions — getAnimationSettings + // builds the atlas/indices/frame-size settings for them directly + Object.assign( + settings, + texture.getAnimationSettings(["2dWater", "water2ds"]), + ); + settings.anchorPoint = { x: 0.5, y: 0.5 }; + super(x, y, settings); + this.addAnimation("water", [{ name: "2dWater", delay: 100 }]); + this.addAnimation("water2", [{ name: "water2ds", delay: 100 }]); + this.setCurrentAnimation("water"); + + const scale = settings.inspectors?.scale ?? { x: 1, y: 1 }; + this.scale(scale.x, scale.y); + + const noise = new me.NoiseTexture2d({ + type: "cellular", + fractalType: "fbm", + width: 512, + height: 512, + frequency: 0.05, + octaves: 4, + gain: 0.5, + pingPongStrength: 2, + lacunarity: 2, + cellularJitter: 1, + seamlessBlendSkirt: 0.1, + domainWarpAmp: 30, + domainWarpFrequency: 0.01, + speed: 0.5, + seamless: true, + seed: 0, + }); + const noise2 = new me.NoiseTexture2d({ + type: "cellular", + fractalType: "fbm", + width: 512, + height: 512, + frequency: 0.005, + octaves: 4, + gain: 0.5, + pingPongStrength: 2, + lacunarity: 2, + cellularJitter: 1, + seamlessBlendSkirt: 0.1, + domainWarpAmp: 30, + domainWarpFrequency: 0.01, + speed: 0.5, + seamless: true, + seed: 0, + }); + + const fragment = ` + uniform sampler2D uNoise; + uniform sampler2D uNoise2; + uniform sampler2D screenTex : screen_texture; + uniform float rangeWater; + uniform float uTime; + + uniform float uEdgeAmp; + uniform float uEdgeFreq; + uniform float uScreenAmp; + uniform float uScreenFreq; + uniform float uFlowAmp; + uniform float uNoiseAmp; + + vec4 apply(vec4 color, vec2 uv) { + float t = mod(uTime, 6283.18); + + vec2 flow1 = texture2D(uNoise, noise_uv * 1.0 + t * 0.05).rg; + vec2 flow2 = texture2D(uNoise, noise_uv * 2.3 - t * 0.03).rg; + vec2 flow = (flow1 + flow2 * 0.5) - 0.75; + vec2 noise = 2.0 * texture2D(uNoise2, noise_uv + vec2(0.5, 0.2) * t).rg - vec2(1.0); + + float n = texture2D(uNoise, vec2(noise_uv.x * 3.0, t * 0.1)).r; + float edgeWave = sin(noise_uv.x * uEdgeFreq + t * 1.8) * uEdgeAmp + + sin(noise_uv.x * uEdgeFreq * 2.2 - t * 2.6) * uEdgeAmp * 0.5 + + (n - 0.5) * uEdgeAmp * 0.6; + vec2 edgeOffset = vec2(0.0, edgeWave); + + float screenEdgeWave = sin(screen_uv.x * uScreenFreq + t * 1.4) * uScreenAmp + + sin(screen_uv.x * uScreenFreq * 2.2 - t * 2.1) * uScreenAmp * 0.5; + float dynamicRange = rangeWater + screenEdgeWave; + + vec2 normalizedUV = screen_uv; + normalizedUV.y = dynamicRange - normalizedUV.y; + + vec4 refractedScreen = texture2D(screenTex, normalizedUV + flow * uFlowAmp); + refractedScreen *= texture2D(uSampler, uv + edgeOffset + noise * uNoiseAmp); + return refractedScreen; + } + `; + + const water = new me.ShaderEffect(me.video.renderer, fragment); + water.setTexture("uNoise", noise.getTexture(), "repeat"); + water.setTexture("uNoise2", noise2.getTexture(), "repeat"); + + // default amplitudes (original demo values) + water.setUniform("uEdgeAmp", 0.002); + water.setUniform("uEdgeFreq", 60.0); + water.setUniform("uScreenAmp", 0.0008); + water.setUniform("uScreenFreq", 45.0); + water.setUniform("uFlowAmp", 0.03); + water.setUniform("uNoiseAmp", 0.0015); + water.setUniform("rangeWater", 1.02); + + this.water = water; + this.addPostEffect(water); + this.alwaysUpdate = true; + } + + override update(dt: number) { + this.water.setTime(me.timer.getTime() / 1000); + super.update(dt); + return true; + } +} + +/** register every TMX-spawnable entity in the object pool */ +export const registerEntities = () => { + me.pool.register("spriteTP", SpriteTP); + me.pool.register("collisionTP", CollisionTP); + me.pool.register("cloud", Cloud); + me.pool.register("foodie", Foodie); + me.pool.register("portal", Portal); + me.pool.register("cookingArea", CookingArea); + me.pool.register("male", Male); + me.pool.register("waterTextureObj", WaterTextureObj); +}; diff --git a/packages/examples/src/examples/waterOverworld/game.ts b/packages/examples/src/examples/waterOverworld/game.ts new file mode 100644 index 000000000..98f001661 --- /dev/null +++ b/packages/examples/src/examples/waterOverworld/game.ts @@ -0,0 +1,53 @@ +/** + * melonJS — Water Overworld example (shader builtins showcase). + * Copyright (C) 2011 - 2026 AltByte Pte Ltd — MIT License. + * See `packages/examples/LICENSE.md` for full license + asset credits. + */ +import { loader, state, video } from "melonjs"; +import { registerEntities } from "./entities"; +import { WaterOverworldStage } from "./play"; + +const base = `${import.meta.env.BASE_URL}assets/waterOverworld/`; +const resources = [ + { name: "level1", type: "tmx", src: `${base}level/level1.json` }, + { name: "foreground", type: "tsx", src: `${base}tileset/foreground.json` }, + { + name: "Floor Tiles1", + type: "image", + src: `${base}image/Floor Tiles1.webp`, + }, + { + name: "texture_image_0", + type: "image", + src: `${base}image/texture_image_0.webp`, + }, + { + name: "texture_image_0", + type: "json", + src: `${base}json/texture_image_0.json`, + }, +]; + +export const createGame = () => { + // the water shader needs WebGL (ShaderEffect is inert under Canvas) + try { + video.init(960, 640, { + parent: "screen", + renderer: video.WEBGL, + scale: "auto", + scaleMethod: "fit", + antiAlias: false, + subPixel: false, + }); + } catch { + alert("This example requires WebGL"); + return; + } + + registerEntities(); + + loader.preload(resources, () => { + state.set(state.PLAY, new WaterOverworldStage()); + state.change(state.PLAY, false); + }); +}; diff --git a/packages/examples/src/examples/waterOverworld/play.ts b/packages/examples/src/examples/waterOverworld/play.ts new file mode 100644 index 000000000..b6aa61ddb --- /dev/null +++ b/packages/examples/src/examples/waterOverworld/play.ts @@ -0,0 +1,27 @@ +/** + * melonJS — Water Overworld example (shader builtins showcase). + * Copyright (C) 2011 - 2026 AltByte Pte Ltd — MIT License. + * See `packages/examples/LICENSE.md` for full license + asset credits. + */ +import * as me from "melonjs"; + +export class WaterOverworldStage extends me.Stage { + override onResetEvent() { + // the TMX places everything except the water: decor sprite layers, + // the animated props, the player and the world collision + me.level.load("level1"); + + me.game.viewport.fadeOut("#000000", 2000); + + // the refracting pond, over the scene (z 20), scaled like the + // original demo + me.game.world.addChild( + me.pool.pull("waterTextureObj", 480, 301, { + inspectors: { + scale: { x: 2.032, y: 2.032 }, + }, + }) as me.Renderable, + 20, + ); + } +} diff --git a/packages/examples/src/main.tsx b/packages/examples/src/main.tsx index 799416d49..abfaa840a 100644 --- a/packages/examples/src/main.tsx +++ b/packages/examples/src/main.tsx @@ -226,6 +226,11 @@ const ExampleVideo = lazy(() => default: m.ExampleVideo, })), ); +const ExampleWaterOverworld = lazy(() => + import("./examples/waterOverworld/ExampleWaterOverworld").then((m) => ({ + default: m.ExampleWaterOverworld, + })), +); const ExampleWhacAMole = lazy(() => import("./examples/whac-a-mole/ExampleWhacAMole").then((m) => ({ default: m.ExampleWhacAMole, @@ -574,6 +579,14 @@ const examples: { description: "Video playback using the asset loader and Sprite class to display an MP4 video on canvas.", }, + { + component: , + label: "Water Overworld", + path: "waterOverworld", + sourceDir: "waterOverworld", + description: + "Side-scroller overworld with a refracting pond — the Godot-style screen_texture / screen_uv / noise_uv shader builtins.", + }, { component: , label: "Whac-A-Mole", From c21c3d6284acced9a126729a29c235e921b0b74d Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Sat, 11 Jul 2026 16:41:17 +0800 Subject: [PATCH 3/8] fix(examples): waterOverworld parity with the reference build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - water sprite uses the two regions verbatim (their settings semantics) instead of getAnimationSettings, whose bottom-align trim mis-placed the frame and bled the adjacent cloud5 atlas pixels (the white artifact on the left edge); the 2dWater art carries its own transparent sky band, matching the original placement - clouds drift right and respawn off the left edge (ported from the demo's update user-code: speed 1+random, wrap at x 1040) - handle video.init() returning false (CodeRabbit finding), alongside the existing thrown-error path Verified side-by-side against the zip's build served statically — scene, water surface line, reflection and drift now match; CodeRabbit re-review clean (0 findings). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- .../src/examples/waterOverworld/entities.ts | 49 +++++++++++++++---- .../src/examples/waterOverworld/game.ts | 21 +++++--- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/packages/examples/src/examples/waterOverworld/entities.ts b/packages/examples/src/examples/waterOverworld/entities.ts index 5d9b54372..fddb97b6c 100644 --- a/packages/examples/src/examples/waterOverworld/entities.ts +++ b/packages/examples/src/examples/waterOverworld/entities.ts @@ -121,11 +121,25 @@ export class CollisionTP extends me.Renderable { /** a drifting-sky cloud — a single centered atlas frame */ export class Cloud extends me.Sprite { + private speed = 1 + Math.random(); + private startX = -141; + constructor(x: number, y: number, settings: any = {}) { settings.image = getGameTexture(); settings.region = "cloud5"; settings.anchorPoint = { x: 0.5, y: 0.5 }; super(x, y, settings); + this.alwaysUpdate = true; + } + + override update(dt: number) { + super.update(dt); + // drift right, respawn off the left edge (original demo behavior) + this.pos.x += this.speed; + if (this.pos.x >= 1040) { + this.pos.x = this.startX - (50 + Math.random() * 200); + } + return true; } } @@ -303,17 +317,34 @@ export class WaterTextureObj extends me.Sprite { constructor(x: number, y: number, settings: any = {}) { const texture = getGameTexture(); - // the two water frames are full atlas regions — getAnimationSettings - // builds the atlas/indices/frame-size settings for them directly - Object.assign( - settings, - texture.getAnimationSettings(["2dWater", "water2ds"]), - ); + // the two water frames, used verbatim (no trim/re-align — the 2dWater + // art carries its own transparent sky band above the water surface) + const built = buildStripSettings(texture, [ + { + region: "2dWater", + frameW: 480, + frameH: 480, + count: 1, + anim: "water", + delay: 100, + }, + { + region: "water2ds", + frameW: 740, + frameH: 523, + count: 1, + anim: "water2", + delay: 100, + }, + ]); + settings.image = texture; + settings.atlas = built.atlas; + settings.atlasIndices = built.atlasIndices; + settings.framewidth = built.framewidth; + settings.frameheight = built.frameheight; settings.anchorPoint = { x: 0.5, y: 0.5 }; super(x, y, settings); - this.addAnimation("water", [{ name: "2dWater", delay: 100 }]); - this.addAnimation("water2", [{ name: "water2ds", delay: 100 }]); - this.setCurrentAnimation("water"); + addStripAnimations(this, built.animations, "water"); const scale = settings.inspectors?.scale ?? { x: 1, y: 1 }; this.scale(scale.x, scale.y); diff --git a/packages/examples/src/examples/waterOverworld/game.ts b/packages/examples/src/examples/waterOverworld/game.ts index 98f001661..906e6f9e1 100644 --- a/packages/examples/src/examples/waterOverworld/game.ts +++ b/packages/examples/src/examples/waterOverworld/game.ts @@ -31,14 +31,19 @@ const resources = [ export const createGame = () => { // the water shader needs WebGL (ShaderEffect is inert under Canvas) try { - video.init(960, 640, { - parent: "screen", - renderer: video.WEBGL, - scale: "auto", - scaleMethod: "fit", - antiAlias: false, - subPixel: false, - }); + if ( + !video.init(960, 640, { + parent: "screen", + renderer: video.WEBGL, + scale: "auto", + scaleMethod: "fit", + antiAlias: false, + subPixel: false, + }) + ) { + alert("This example requires WebGL"); + return; + } } catch { alert("This example requires WebGL"); return; From 122f7c639276e73c1ed5b83c91ee8e9d07545914 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Sat, 11 Jul 2026 17:00:00 +0800 Subject: [PATCH 4/8] =?UTF-8?q?feat(examples):=20waterOverworld=20?= =?UTF-8?q?=E2=80=94=20debug=20panel=20+=20arrow-key=20controls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - register @melonjs/debug-plugin (press "S" to toggle), like the other examples and the original demo build - arrow keys as movement aliases: ←/→ walk, ↑ jump (alongside A/D/W) - controls hint updated Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- .../src/examples/waterOverworld/ExampleWaterOverworld.tsx | 6 +++--- packages/examples/src/examples/waterOverworld/entities.ts | 6 ++++++ packages/examples/src/examples/waterOverworld/game.ts | 6 +++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx b/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx index 65f0a9432..cf901d4cd 100644 --- a/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx +++ b/packages/examples/src/examples/waterOverworld/ExampleWaterOverworld.tsx @@ -30,9 +30,9 @@ export const ExampleWaterOverworld = () => { borderRadius: 4, }} > - A/D move · W jump · hold Shift to run — the pond refracts the scene via{" "} - screen_texture / screen_uv /{" "} - noise_uv + A/D or ←/→ move · W/↑ jump · hold Shift to run · S toggles the debug panel + — the pond refracts the scene via screen_texture /{" "} + screen_uv / noise_uv ); }; diff --git a/packages/examples/src/examples/waterOverworld/entities.ts b/packages/examples/src/examples/waterOverworld/entities.ts index fddb97b6c..cbdcd9e93 100644 --- a/packages/examples/src/examples/waterOverworld/entities.ts +++ b/packages/examples/src/examples/waterOverworld/entities.ts @@ -244,8 +244,11 @@ export class Male extends me.Sprite { this.body.setFriction(0.5, 0); me.input.bindKey(me.input.KEY.A, "left"); + me.input.bindKey(me.input.KEY.LEFT, "left"); me.input.bindKey(me.input.KEY.D, "right"); + me.input.bindKey(me.input.KEY.RIGHT, "right"); me.input.bindKey(me.input.KEY.W, "jump", true); + me.input.bindKey(me.input.KEY.UP, "jump", true); me.input.bindKey(me.input.KEY.SHIFT, "runLock"); this.alwaysUpdate = true; @@ -294,8 +297,11 @@ export class Male extends me.Sprite { override onDeactivateEvent() { me.input.unbindKey(me.input.KEY.A); + me.input.unbindKey(me.input.KEY.LEFT); me.input.unbindKey(me.input.KEY.D); + me.input.unbindKey(me.input.KEY.RIGHT); me.input.unbindKey(me.input.KEY.W); + me.input.unbindKey(me.input.KEY.UP); me.input.unbindKey(me.input.KEY.SHIFT); } } diff --git a/packages/examples/src/examples/waterOverworld/game.ts b/packages/examples/src/examples/waterOverworld/game.ts index 906e6f9e1..c2202271b 100644 --- a/packages/examples/src/examples/waterOverworld/game.ts +++ b/packages/examples/src/examples/waterOverworld/game.ts @@ -3,7 +3,8 @@ * Copyright (C) 2011 - 2026 AltByte Pte Ltd — MIT License. * See `packages/examples/LICENSE.md` for full license + asset credits. */ -import { loader, state, video } from "melonjs"; +import { DebugPanelPlugin } from "@melonjs/debug-plugin"; +import { loader, plugin, state, video } from "melonjs"; import { registerEntities } from "./entities"; import { WaterOverworldStage } from "./play"; @@ -49,6 +50,9 @@ export const createGame = () => { return; } + // register the debug plugin (press "S" to toggle the panel) + plugin.register(DebugPanelPlugin, "debugPanel"); + registerEntities(); loader.preload(resources, () => { From 62cd51426291da437ccbb8705aa850cc97282433 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Sun, 12 Jul 2026 12:37:58 +0800 Subject: [PATCH 5/8] test(shader): cover both endPostEffect screen-capture paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The camera chain (capture from the still-bound camera FBO = the scene, orientation preserved, exactly one toFrameTexture call) and the multi-effect renderable chain (capture = the parent target behind the object, not the object's own rendering) were the only untested branches of the builtins feature — the example and prior tests only exercised the sprite/customShader path. 10 tests total now. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- .../tests/shadereffect-builtins.spec.js | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/packages/melonjs/tests/shadereffect-builtins.spec.js b/packages/melonjs/tests/shadereffect-builtins.spec.js index 851c0e64e..0fe9dce0b 100644 --- a/packages/melonjs/tests/shadereffect-builtins.spec.js +++ b/packages/melonjs/tests/shadereffect-builtins.spec.js @@ -282,6 +282,99 @@ describe("ShaderEffect builtins (screen_texture / screen_uv / noise_uv)", () => fx.destroy(); }); + it("samples the scene on the CAMERA post-effect (blit) path", (ctx) => { + requireWebGL(ctx); + + // swizzling identity effect on a camera-managed chain: the "screen" + // is the scene captured from the camera FBO before it is unbound + const fx = new ShaderEffect( + renderer, + ` + uniform sampler2D screenTex : screen_texture; + vec4 apply(vec4 color, vec2 uv) { + return vec4(texture2D(screenTex, screen_uv).bgr, 1.0); + } + `, + ); + const spy = vi.spyOn(renderer, "toFrameTexture"); + const camera = { + postEffects: [fx], + _postEffectManaged: true, + isDefault: true, + }; + + renderer.clearColor("#000000ff"); + expect(renderer.beginPostEffect(camera)).toBe(true); + // in the real pipeline the camera re-applies its projection at the + // start of every FBO pass — replay that for the bare harness + renderer.currentBatcher.setProjection(renderer.projectionMatrix); + // the scene, drawn INTO the camera FBO: red top half, blue bottom + renderer.drawImage(solidCanvas(255, 0, 0, 64, 32), 0, 0); + renderer.drawImage(solidCanvas(0, 0, 255, 64, 32), 0, 32); + renderer.endPostEffect(camera); + renderer.flush(); + + expect(spy).toHaveBeenCalledTimes(1); + spy.mockRestore(); + + // blitted output = the scene swizzled, with orientation preserved + const top = readPixel(32, 12); + expect(top[2]).toBeGreaterThan(200); // red scene → blue out + expect(top[0]).toBeLessThan(60); + const bottom = readPixel(32, 52); + expect(bottom[0]).toBeGreaterThan(200); // blue scene → red out + expect(bottom[2]).toBeLessThan(60); + + fx.destroy(); + }); + + it("samples the scene BEHIND the object on the multi-effect chain path", (ctx) => { + requireWebGL(ctx); + + // two effects on a non-managed renderable force the FBO chain; the + // last one outputs the screen capture — which must be the MAGENTA + // backdrop behind the object, not the object's own (gray) rendering + const passthrough = new ShaderEffect( + renderer, + ` + vec4 apply(vec4 color, vec2 uv) { + return color; + } + `, + ); + const screen = new ShaderEffect( + renderer, + ` + uniform sampler2D screenTex : screen_texture; + vec4 apply(vec4 color, vec2 uv) { + // opaque only where the object drew, sampling the screen there + return vec4(texture2D(screenTex, screen_uv).rgb, color.a); + } + `, + ); + const sprite = { + postEffects: [passthrough, screen], + _postEffectManaged: false, + }; + + renderer.clearColor("#ff00ffff"); // magenta backdrop + expect(renderer.beginPostEffect(sprite)).toBe(true); + // the object: a gray quad in the middle of its capture FBO + renderer.drawImage(solidCanvas(64, 64, 64, 32, 32), 16, 16, 32, 32); + renderer.endPostEffect(sprite); + renderer.flush(); + + // where the object drew, the screen (magenta) shows through — true + // "everything behind me" semantics on the chain path too + const inside = readPixel(32, 32); + expect(inside[0]).toBeGreaterThan(200); + expect(inside[1]).toBeLessThan(60); + expect(inside[2]).toBeGreaterThan(200); + + passthrough.destroy(); + screen.destroy(); + }); + it("clone keeps the builtins wired", (ctx) => { requireWebGL(ctx); const fx = new ShaderEffect(renderer, IDENTITY_SCREEN); From b1d4a063fa48f34c35c90024af95e594ae5c9223 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Mon, 13 Jul 2026 07:32:55 +0800 Subject: [PATCH 6/8] feat(loader): {vertex, fragment} shader-asset pairs compile into raw GLShaders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A shader asset can now be a complete program pair — src: {vertex, fragment} URLs (fetched in parallel) or inline via data: — compiled at load time into a shared raw GLShader, returned by the same loader.getShader(). This is the honest type for full programs (Mesh custom shaders, renderer.customShader, custom batchers) and sidesteps ShaderEffect's apply() wrapping entirely: no source rewriting, no builtins injection — the user owns both stages. Same shared/clone/ unload lifecycle as fragment-body assets; WebGL-only (a pair loads as null under Canvas, with a warning — no canvas analog for a raw program; unload guards the null entry). 6 adversarial tests (shader-loader.spec.js), mutation-verified: drop shared flag / swap vertex-fragment stages / remove the already-loaded guard each kill exactly their matching test. Full suite 4818 | 15 skipped. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- packages/melonjs/src/loader/loader.js | 34 +++- packages/melonjs/src/loader/parsers/shader.js | 113 +++++++++++-- packages/melonjs/tests/shader-loader.spec.js | 160 ++++++++++++++++++ 3 files changed, 284 insertions(+), 23 deletions(-) diff --git a/packages/melonjs/src/loader/loader.js b/packages/melonjs/src/loader/loader.js index 8be750e15..22a2725d6 100644 --- a/packages/melonjs/src/loader/loader.js +++ b/packages/melonjs/src/loader/loader.js @@ -728,9 +728,11 @@ export function unload(asset) { if (typeof effect === "undefined") { return false; } - // the loader owns the shared ShaderEffect — actually free the GL - // program, don't just drop the cache entry - effect.destroy(); + // the loader owns the shared ShaderEffect/GLShader — actually free + // the GL program, don't just drop the cache entry. A `null` entry + // is a {vertex, fragment} pair loaded under the Canvas renderer + // (no GL program to free). + effect?.destroy(); delete shaderList[asset.name]; return true; } @@ -1030,14 +1032,21 @@ export function getGLTF(elt) { * is reset to `false`, so it is auto-destroyed with the renderable it is * assigned to, like any hand-constructed effect. * - * Shader assets are WebGL-only: under the Canvas renderer the returned - * effect is an inert stub (same behavior as constructing a `ShaderEffect` - * directly). Note that shader assets require `video.init()` to have been - * called — an inherent precondition of the preload flow, since the loading - * screen itself needs the renderer. + * A shader asset declared as a **`{vertex, fragment}` program pair** (see + * the example) compiles into a raw {@link GLShader} instead — the type the + * advanced paths take directly (a `Mesh` custom shader, + * `renderer.customShader`, a custom batcher). Same shared-instance + * semantics, and `GLShader.clone()` likewise yields a caller-owned copy. + * + * Shader assets are WebGL-only: under the Canvas renderer a fragment-body + * asset returns an inert `ShaderEffect` stub (same behavior as constructing + * one directly), and a program-pair asset returns `null` (a raw GL program + * has no canvas analog). Note that shader assets require `video.init()` to + * have been called — an inherent precondition of the preload flow, since + * the loading screen itself needs the renderer. * @memberof loader * @param {string} elt - name of the shader asset (as specified in the preload list) - * @returns {ShaderEffect|null} the shared, precompiled effect, or `null` if not found + * @returns {ShaderEffect|GLShader|null} the shared, precompiled shader, or `null` if not found * @category Assets * @example * me.loader.preload([ @@ -1048,11 +1057,18 @@ export function getGLTF(elt) { * uniform float uIntensity; * vec4 apply(vec4 color, vec2 uv) { return mix(color, vec4(1.0), uIntensity); } * ` }, + * // or a complete {vertex, fragment} program pair → a raw GLShader + * { name: "toonMesh", type: "shader", src: { + * vertex: "shaders/toon.vert", + * fragment: "shaders/toon.frag", + * } }, * ], () => { * // one shared program — same uniform state for every user * mySprite.shader = me.loader.getShader("waterRipple"); * // private copy with its own uniforms (caller-owned, shared = false) * boss.shader = me.loader.getShader("flash").clone(); + * // a program pair comes back as a GLShader, e.g. for a custom Mesh shader + * renderer.drawMesh(myMesh, { shader: me.loader.getShader("toonMesh") }); * }); */ export function getShader(elt) { diff --git a/packages/melonjs/src/loader/parsers/shader.js b/packages/melonjs/src/loader/parsers/shader.js index 7d1574053..7f03d28fd 100644 --- a/packages/melonjs/src/loader/parsers/shader.js +++ b/packages/melonjs/src/loader/parsers/shader.js @@ -1,4 +1,5 @@ import { on, VIDEO_INIT } from "../../system/event.ts"; +import GLShader from "../../video/webgl/glshader.js"; import ShaderEffect from "../../video/webgl/shadereffect.js"; import { shaderList } from "../cache.js"; import { fetchData } from "./fetchdata.js"; @@ -13,9 +14,16 @@ on(VIDEO_INIT, (renderer) => { }); /** - * compile a shader asset's source into its shared, loader-owned ShaderEffect. - * @param {string} source - the fragment body (uniforms + `apply(color, uv)`) - * @returns {ShaderEffect} the compiled effect, flagged `shared` + * compile a shader asset's source into its shared, loader-owned instance: + * a fragment body (the `apply()` convention) compiles into a + * {@link ShaderEffect}; a full `{vertex, fragment}` program pair compiles + * into a raw {@link GLShader} — for the advanced paths that take one (a + * `Mesh` custom shader, `renderer.customShader`, a custom batcher). + * Program pairs are WebGL-only: under the Canvas renderer a pair asset + * stores `null` (with a warning) — a raw GL program has no canvas analog, + * unlike ShaderEffect's inert Canvas stub. + * @param {string|{vertex: string, fragment: string, precision?: string}} source - the fragment body, or a complete program pair + * @returns {ShaderEffect|GLShader|null} the compiled asset, flagged `shared` * @throws if called before `video.init()` (no renderer to compile against) * @ignore */ @@ -25,6 +33,30 @@ export function compileShaderAsset(source) { "shader assets require video.init() to be called first (no renderer available to compile against)", ); } + if (typeof source === "object" && source !== null) { + if ( + typeof source.vertex !== "string" || + typeof source.fragment !== "string" + ) { + throw new Error( + "a program pair needs both `vertex` and `fragment` GLSL sources", + ); + } + if (typeof _renderer.gl === "undefined") { + console.warn( + "shader asset: {vertex, fragment} program pairs require WebGL and are unavailable in Canvas mode", + ); + return null; + } + const shader = new GLShader( + _renderer.gl, + source.vertex, + source.fragment, + source.precision, + ); + shader.shared = true; + return shader; + } const effect = new ShaderEffect(_renderer, source); // loader-owned: a renderable's cleanup must never auto-destroy it — // only loader.unload() / unloadAll() does (see the `shared` flag) @@ -33,14 +65,22 @@ export function compileShaderAsset(source) { } /** - * parse/preload a shader asset (a GLSL fragment body following the - * ShaderEffect convention: uniform declarations + `vec4 apply(vec4, vec2)`), - * from a `src` URL (or data: URI) or inline GLSL via the `data` field. - * Always compiled into a shared ShaderEffect AT LOAD TIME, so the GLSL - * compile cost lands in the loading screen and compile errors carry the - * asset name. `video.init()` is an inherent precondition of the preload - * flow (the loading screen itself needs the renderer, and a failed init - * throws and halts) — loading a shader without it fails with a clear error. + * parse/preload a shader asset, from a `src` URL (or data: URI) or inline + * GLSL via the `data` field. Two source shapes are accepted: + * + * - a GLSL **fragment body** following the ShaderEffect convention (uniform + * declarations + `vec4 apply(vec4, vec2)`) → compiles into a shared + * {@link ShaderEffect}; + * - a complete **program pair** — `src: {vertex: url, fragment: url}` or + * `data: {vertex: glsl, fragment: glsl}` — → compiles into a shared raw + * {@link GLShader}, for the advanced paths that take one (a `Mesh` + * custom shader, `renderer.customShader`, a custom batcher). + * + * Always compiled AT LOAD TIME, so the GLSL compile cost lands in the + * loading screen and compile errors carry the asset name. `video.init()` + * is an inherent precondition of the preload flow (the loading screen + * itself needs the renderer, and a failed init throws and halts) — + * loading a shader without it fails with a clear error. * @param {loader.Asset} data - asset data * @param {Function} [onload] - function to be called when the resource is loaded * @param {Function} [onerror] - function to be called in case of error @@ -54,8 +94,12 @@ export function preloadShader(data, onload, onerror, settings) { return 0; } - // inline GLSL source via the `data` field (same convention as inline TMX) - if (typeof data.data === "string") { + // inline GLSL source via the `data` field (same convention as inline + // TMX): a fragment-body string, or a {vertex, fragment} program pair + if ( + typeof data.data === "string" || + (typeof data.data === "object" && data.data !== null) + ) { try { shaderList[data.name] = compileShaderAsset(data.data); } catch (error) { @@ -70,11 +114,52 @@ export function preloadShader(data, onload, onerror, settings) { return 1; } + // `src` as a {vertex, fragment} pair of URLs → fetch both, compile a + // raw GLShader program + if (typeof data.src === "object" && data.src !== null) { + if ( + typeof data.src.vertex !== "string" || + typeof data.src.fragment !== "string" + ) { + if (typeof onerror === "function") { + onerror( + new Error( + `shader asset "${data.name}": a program pair needs both \`src.vertex\` and \`src.fragment\` URLs`, + ), + ); + } + return 1; + } + Promise.all([ + fetchData(data.src.vertex, "text", settings), + fetchData(data.src.fragment, "text", settings), + ]) + .then(([vertex, fragment]) => { + // concurrent-load guard — see the single-source path below + if (typeof shaderList[data.name] === "undefined") { + shaderList[data.name] = compileShaderAsset({ + vertex, + fragment, + precision: data.precision, + }); + } + if (typeof onload === "function") { + onload(); + } + }) + .catch((error) => { + if (typeof onerror === "function") { + onerror(new Error(`shader asset "${data.name}": ${error.message}`)); + } + }); + return 1; + } + if (typeof data.src !== "string") { if (typeof onerror === "function") { onerror( new Error( - `shader asset "${data.name}": needs a \`src\` URL or inline GLSL via \`data\``, + `shader asset "${data.name}": needs a \`src\` URL (or {vertex, fragment} URL pair), or inline GLSL via \`data\``, ), ); } diff --git a/packages/melonjs/tests/shader-loader.spec.js b/packages/melonjs/tests/shader-loader.spec.js index 5d4f26c7e..155542f7c 100644 --- a/packages/melonjs/tests/shader-loader.spec.js +++ b/packages/melonjs/tests/shader-loader.spec.js @@ -399,4 +399,164 @@ describe("shader assets + clone under context loss", () => { expect(loader.unload({ name: "flash-cycle", type: "shader" })).toBe(true); expect(fx.destroyed).toBe(true); }); + + /* + * {vertex, fragment} program pairs → a raw, shared GLShader. Each test + * is adversarial: it pins a behavior a plausible implementation + * shortcut would break (wrong return type, swapped sources, cache + * clobbering, half-registered failures, missing destroy). + */ + describe("{vertex, fragment} program pairs", () => { + // distinct, actively-used uniforms in EACH stage — proves both + // sources reached the right stage of the linked program (swapped + // vertex/fragment would fail to compile: attributes are + // vertex-only) + const PAIR_VERTEX = [ + "attribute vec3 aVertex;", + "uniform mat4 uProjectionMatrix;", + "uniform float uVertOnly;", + "void main(void) {", + " gl_Position = uProjectionMatrix * vec4(aVertex.xy, aVertex.z + uVertOnly, 1.0);", + "}", + ].join("\n"); + const PAIR_FRAGMENT = [ + "uniform float uFragOnly;", + "void main(void) {", + " gl_FragColor = vec4(uFragOnly, 0.0, 0.0, 1.0);", + "}", + ].join("\n"); + + it("inline pair compiles into a shared raw GLShader — not a ShaderEffect", async (ctx) => { + if (!isWebGL) { + ctx.skip(); + return; + } + await loader.load({ + name: "pair-inline", + type: "shader", + data: { vertex: PAIR_VERTEX, fragment: PAIR_FRAGMENT }, + }); + + const shader = loader.getShader("pair-inline"); + expect(shader).toBeInstanceOf(GLShader); + expect(shader).not.toBeInstanceOf(ShaderEffect); + expect(shader.shared).toBe(true); + // both stages' uniforms are active on the linked program — the + // sources landed in the RIGHT stages + expect(typeof shader.uniforms.uVertOnly).not.toBe("undefined"); + expect(typeof shader.uniforms.uFragOnly).not.toBe("undefined"); + // shared semantics: same instance on every call + expect(loader.getShader("pair-inline")).toBe(shader); + + expect(loader.unload({ name: "pair-inline", type: "shader" })).toBe(true); + expect(shader.destroyed).toBe(true); + expect(loader.getShader("pair-inline")).toBe(null); + }); + + it("src pair fetches BOTH URLs and compiles them into their stages", async (ctx) => { + if (!isWebGL) { + ctx.skip(); + return; + } + await loader.load({ + name: "pair-src", + type: "shader", + src: { + vertex: `data:text/plain,${encodeURIComponent(PAIR_VERTEX)}`, + fragment: `data:text/plain,${encodeURIComponent(PAIR_FRAGMENT)}`, + }, + }); + + const shader = loader.getShader("pair-src"); + expect(shader).toBeInstanceOf(GLShader); + expect(typeof shader.uniforms.uVertOnly).not.toBe("undefined"); + expect(typeof shader.uniforms.uFragOnly).not.toBe("undefined"); + + loader.unload({ name: "pair-src", type: "shader" }); + }); + + it("a second load of the same name keeps the first instance (no clobber)", async (ctx) => { + if (!isWebGL) { + ctx.skip(); + return; + } + await loader.load({ + name: "pair-dup", + type: "shader", + data: { vertex: PAIR_VERTEX, fragment: PAIR_FRAGMENT }, + }); + const first = loader.getShader("pair-dup"); + await loader.load({ + name: "pair-dup", + type: "shader", + data: { vertex: PAIR_VERTEX, fragment: PAIR_FRAGMENT }, + }); + expect(loader.getShader("pair-dup")).toBe(first); + expect(first.destroyed).toBe(false); + + loader.unload({ name: "pair-dup", type: "shader" }); + }); + + it("clone() yields a caller-owned (non-shared) GLShader copy", async (ctx) => { + if (!isWebGL) { + ctx.skip(); + return; + } + await loader.load({ + name: "pair-clone", + type: "shader", + data: { vertex: PAIR_VERTEX, fragment: PAIR_FRAGMENT }, + }); + const shader = loader.getShader("pair-clone"); + const copy = shader.clone(); + expect(copy).toBeInstanceOf(GLShader); + expect(copy).not.toBe(shader); + expect(copy.shared).toBe(false); + // independent programs: destroying the copy leaves the shared one + copy.destroy(); + expect(shader.destroyed).toBe(false); + + loader.unload({ name: "pair-clone", type: "shader" }); + }); + + it("rejects a pair missing one source, with the asset name — and registers nothing", async (ctx) => { + if (!isWebGL) { + ctx.skip(); + return; + } + await expect( + loader.load({ + name: "pair-halved", + type: "shader", + src: { fragment: "data:text/plain,void%20main(void)%20%7B%7D" }, + }), + ).rejects.toThrow(/pair-halved.*vertex/); + // a failed load must not leave a half-registered cache entry + expect(loader.getShader("pair-halved")).toBe(null); + + await expect( + loader.load({ + name: "pair-halved-inline", + type: "shader", + data: { vertex: PAIR_VERTEX }, + }), + ).rejects.toThrow(/pair-halved-inline/); + expect(loader.getShader("pair-halved-inline")).toBe(null); + }); + + it("rejects invalid GLSL in a pair, with the asset name — and registers nothing", async (ctx) => { + if (!isWebGL) { + ctx.skip(); + return; + } + await expect( + loader.load({ + name: "pair-broken", + type: "shader", + data: { vertex: "not glsl", fragment: PAIR_FRAGMENT }, + }), + ).rejects.toThrow(/pair-broken/); + expect(loader.getShader("pair-broken")).toBe(null); + }); + }); }); From f04e51f35b576e1bc863945138d70b60120c13a3 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Mon, 13 Jul 2026 07:33:20 +0800 Subject: [PATCH 7/8] docs(changelog): note the {vertex, fragment} shader-asset pair form Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- packages/melonjs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/melonjs/CHANGELOG.md b/packages/melonjs/CHANGELOG.md index abd6adb78..adfd5cc52 100644 --- a/packages/melonjs/CHANGELOG.md +++ b/packages/melonjs/CHANGELOG.md @@ -13,7 +13,7 @@ - **`ShaderEffect.setTexture(name, image[, repeat])`** (closes [#1532](https://github.com/melonjs/melonJS/issues/1532)) — bind an **extra** `sampler2D` to a custom post-effect, beyond the sprite/target it processes (`uSampler`) — a noise map, mask, gradient, or flow table. Declare `uniform sampler2D ;` in your fragment and pass any engine texture — a `Texture2d` asset (`NoiseTexture2d`, `TextureAtlas`, …) directly, or a raw drawable source; the engine uploads it once, caches it, and (re)binds it to a reserved texture unit each draw while pointing the sampler uniform at it — no raw WebGL texture-unit juggling. Works on both post-effect paths (single-effect sprite shader and the multi-effect / camera FBO blit). Enables UV-distortion water, dissolve masks, flow maps, palette lookups, etc. Purely additive — effects that never call it are unchanged. See the **Aquarium** example (a water surface refracting the live scene through a GPU-scrolled seamless `NoiseTexture2d`). - **Anchor-point presets + `Sprite3d` anchor support** (#1514) — `settings.anchorPoint` now accepts the named presets `"center"`, `"top"`, `"bottom"`, `"left"`, `"right"`, `"top-left"`, `"top-right"`, `"bottom-left"`, `"bottom-right"` in addition to an `{x, y}` object, uniformly across `Sprite`, `Entity`, `Collectable`, `ImageLayer`, `Text`, `BitmapText` (and their subclasses), including as a plain-string Tiled property. `Sprite3d` gains anchoring through the same `settings.anchorPoint` key (centered default, same convention as `Sprite`): the anchor is baked into the quad's local vertices so it composes with billboarding, flips and trimmed/rotated atlas frames, never leaks into the renderer transform on either camera path, is mutable at runtime via `sprite3d.anchorPoint.set(...)` (automatic re-bake + cull-bounds update), and grows the frustum-cull bounds exactly so an anchored sprite can't pop out while still on screen. On the 2D classes invalid values (unknown preset, malformed object) keep their historical silent `(0, 0)` outcome for full backward compatibility, but now log a console warning; `Sprite3d` (a new surface) throws. See the updated billboard example (`anchorPoint: "bottom"` — feet on the ground plane). - **Godot-style shader builtins: `screen_texture` / `screen_uv` / `noise_uv`** — three names now get special treatment inside a `ShaderEffect` fragment body, so screen-reading and noise-scrolling effects need zero JavaScript plumbing and no UV math (design contributed by the melonJS editor team, mirroring Godot's `hint_screen_texture` / `SCREEN_UV`). Annotate a sampler with `uniform sampler2D screenTex : screen_texture;` and the engine keeps it filled with a capture of **everything drawn so far** (true BackBufferCopy semantics via the `toFrameTexture` shared slot, refreshed automatically when the effect draws — one screen copy per draw, only for effects that use it); an optional wrap is accepted (`: screen_texture(repeat)`, WebGL 2). Use `screen_uv` anywhere in the body for the fragment's 0..1 screen position, and `noise_uv` for a frame-local 0..1 coordinate across the drawn object — it undoes atlas packing (and is scaled to object pixels), so a seamless noise texture tiles correctly no matter where the sprite's frame sits in its atlas. Fully backward compatible: the annotation was never valid GLSL, the varyings only activate when referenced, shaders that declare their own `screen_uv`/`noise_uv` are left untouched, and a body using none of them compiles byte-identical to before. See the new **Water Overworld** example — a side-scroller pond that refracts the scene behind it in three lines of shader. -- **Shader preloading: `"shader"` asset type + `loader.getShader()` + `ShaderEffect.clone()`** — custom shaders can now be preloaded like any other asset and are **compiled at load time** (the GLSL compile cost lands in the loading screen, and a compile error fails the load — `loader.load()` rejects with an error carrying the asset's name). The source is a GLSL fragment body following the `ShaderEffect` convention (`uniform` declarations + `vec4 apply(vec4 color, vec2 uv)`), loaded from a `src` URL / data: URI or inline via the `data` field (the inline-TMX convention): `{ name: "waterRipple", type: "shader", src: "shaders/waterRipple.frag" }`. `loader.getShader(name)` returns the **shared, loader-owned instance** — the *same* object on every call, with `shared = true` so renderable cleanup never auto-destroys it; everything it is assigned to shares one set of uniform values, and it is freed only by `loader.unload()` / `loader.unloadAll()` (which destroy the GL program). For per-renderable uniform values, the new `ShaderEffect.clone()` compiles an independent, caller-owned copy: it copies the *recipe* (fragment source, precision, uniform values, `setTexture` bindings — with its own GL uploads) but never the *ownership* — the clone's `shared` flag is **always reset to `false`**, so it is auto-destroyed with the renderable it is assigned to unless explicitly re-shared. `GLShader.clone()` exists likewise for raw full-program (vertex + fragment) shaders, with the same recipe-not-ownership semantics. The **Aquarium** and **Heat Haze** examples ship their fragments as preloaded shader assets. +- **Shader preloading: `"shader"` asset type + `loader.getShader()` + `ShaderEffect.clone()`** — custom shaders can now be preloaded like any other asset and are **compiled at load time** (the GLSL compile cost lands in the loading screen, and a compile error fails the load — `loader.load()` rejects with an error carrying the asset's name). The source is a GLSL fragment body following the `ShaderEffect` convention (`uniform` declarations + `vec4 apply(vec4 color, vec2 uv)`), loaded from a `src` URL / data: URI or inline via the `data` field (the inline-TMX convention): `{ name: "waterRipple", type: "shader", src: "shaders/waterRipple.frag" }`. `loader.getShader(name)` returns the **shared, loader-owned instance** — the *same* object on every call, with `shared = true` so renderable cleanup never auto-destroys it; everything it is assigned to shares one set of uniform values, and it is freed only by `loader.unload()` / `loader.unloadAll()` (which destroy the GL program). For per-renderable uniform values, the new `ShaderEffect.clone()` compiles an independent, caller-owned copy: it copies the *recipe* (fragment source, precision, uniform values, `setTexture` bindings — with its own GL uploads) but never the *ownership* — the clone's `shared` flag is **always reset to `false`**, so it is auto-destroyed with the renderable it is assigned to unless explicitly re-shared. `GLShader.clone()` exists likewise for raw full-program (vertex + fragment) shaders, with the same recipe-not-ownership semantics. The **Aquarium** and **Heat Haze** examples ship their fragments as preloaded shader assets. A shader asset can also be a complete **`{vertex, fragment}` program pair** — `src: {vertex: url, fragment: url}` or inline via `data:` — which compiles into a shared raw **`GLShader`** instead (returned by the same `loader.getShader()`), for the paths that take one directly: a `Mesh` custom shader, `renderer.customShader`, a custom batcher. Same shared/clone/unload lifecycle; WebGL-only (`null` under Canvas — a raw program has no canvas analog). ### Fixed - **Asset loading failed over the `file:` protocol (Cordova/Capacitor APK on Android)** — `fetchData` uses `fetch()`, which several WebView contexts refuse for `file://` URLs (it rejects with a network error). The engine previously relied on `fetch` returning `status 0` for `file:` (added when the old `XMLHttpRequest` loader was removed), but that only helps where `fetch` *resolves* — a Cordova Android WebView rejects outright, so preloading broke. `fetchData` now falls back to `XMLHttpRequest` for `file:` URLs (detected via the URL scheme or `location.protocol`), which supports the scheme (a successful local read reports `status 0`); `http(s)` URLs are unchanged. Restores the pre-fetch behaviour for packaged builds. From e1ee49ca657419c08187da7e3bae2121676487f1 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Mon, 13 Jul 2026 08:05:32 +0800 Subject: [PATCH 8/8] docs: drop third-party engine references from comments, docs, changelog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The builtins stand on their own names — comparisons to other engines' equivalents removed from JSDoc, module comments, spec headers, the example, and the 19.9.0 changelog entries (generic "back-buffer copy" terminology kept where technically descriptive). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_019t8kP8vp58ZrvaD2FqJU6A --- .../src/examples/waterOverworld/entities.ts | 2 +- packages/melonjs/CHANGELOG.md | 4 ++-- packages/melonjs/src/video/webgl/shadereffect.js | 13 ++++++------- packages/melonjs/src/video/webgl/webgl_renderer.js | 9 ++++----- .../melonjs/tests/shadereffect-builtins.spec.js | 6 +++--- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/packages/examples/src/examples/waterOverworld/entities.ts b/packages/examples/src/examples/waterOverworld/entities.ts index cbdcd9e93..b89d72a4d 100644 --- a/packages/examples/src/examples/waterOverworld/entities.ts +++ b/packages/examples/src/examples/waterOverworld/entities.ts @@ -308,7 +308,7 @@ export class Male extends me.Sprite { /** * The pond — an animated water sprite whose post effect refracts - * EVERYTHING drawn behind it, using the Godot-style shader builtins: + * EVERYTHING drawn behind it, using the shader builtins: * * - `screenTex : screen_texture` — the engine keeps this sampler filled * with a capture of the screen so far (no JS plumbing) diff --git a/packages/melonjs/CHANGELOG.md b/packages/melonjs/CHANGELOG.md index adfd5cc52..4033d46ea 100644 --- a/packages/melonjs/CHANGELOG.md +++ b/packages/melonjs/CHANGELOG.md @@ -3,7 +3,7 @@ ## [19.9.0] (melonJS 2) - _unreleased_ ### Added -- **`renderer.toFrameTexture()` — GPU frame capture as a `Texture2d`** (closes [#1544](https://github.com/melonjs/melonJS/issues/1544)) — capture the current camera view / framebuffer into a `Texture2d` entirely on the GPU, for screen-space effects (water refraction, heat haze, frosted glass) that need to sample "what's on screen behind me". The fourth member of the `toDataURL` / `toBlob` / `toImageBitmap` family — "the current frame as X" — and the only one whose result never leaves the GPU: a `copyTexImage2D` of the bound framebuffer, ~10–100× cheaper than a `readPixels` round-trip and with zero CPU⇄GPU stall. The capture reflects the framebuffer **at the call site** (a `flush()` runs first — Godot `BackBufferCopy` placement), reads whichever framebuffer is bound (backbuffer or a camera post-effect FBO, so it works under `Camera2d` and `Camera3d`), and returns a `Texture2d` you feed straight to a custom effect: `effect.setTexture("uScene", renderer.toFrameTexture())`. `setTexture` now binds such a GPU-resident capture as a **live** handle — re-capturing each frame into the shared slot refreshes what the shader samples with no re-bind. Options: `target` (reuse/mint a caller-owned capture) and `region` (sub-region copy). Color only (RGB, opaque); the Canvas renderer ships an offscreen-canvas equivalent for family parity. See the new **Aquarium** example (fish rendered to the scene, refracted through a rippling water surface that samples the captured frame). +- **`renderer.toFrameTexture()` — GPU frame capture as a `Texture2d`** (closes [#1544](https://github.com/melonjs/melonJS/issues/1544)) — capture the current camera view / framebuffer into a `Texture2d` entirely on the GPU, for screen-space effects (water refraction, heat haze, frosted glass) that need to sample "what's on screen behind me". The fourth member of the `toDataURL` / `toBlob` / `toImageBitmap` family — "the current frame as X" — and the only one whose result never leaves the GPU: a `copyTexImage2D` of the bound framebuffer, ~10–100× cheaper than a `readPixels` round-trip and with zero CPU⇄GPU stall. The capture reflects the framebuffer **at the call site** (a `flush()` runs first — the classic back-buffer-copy placement), reads whichever framebuffer is bound (backbuffer or a camera post-effect FBO, so it works under `Camera2d` and `Camera3d`), and returns a `Texture2d` you feed straight to a custom effect: `effect.setTexture("uScene", renderer.toFrameTexture())`. `setTexture` now binds such a GPU-resident capture as a **live** handle — re-capturing each frame into the shared slot refreshes what the shader samples with no re-bind. Options: `target` (reuse/mint a caller-owned capture) and `region` (sub-region copy). Color only (RGB, opaque); the Canvas renderer ships an offscreen-canvas equivalent for family parity. See the new **Aquarium** example (fish rendered to the scene, refracted through a rippling water surface that samples the captured frame). - **BMFont XML font support for `BitmapText`** — bitmap fonts can now be loaded from the AngelCode BMFont **XML** flavour in addition to the text `.fnt` format (the serialisation is auto-detected). Many bitmap-font tools and asset packs (itch.io, dafont, …) export PNG + XML; those now load directly through the standard preloader (`{ type: "binary" }`), with no offline conversion step. The XML is parsed with a dependency-free regex parser (no `DOMParser`), so it also works outside the browser (Node / SSR) — unlike the DOM-based TMX XML path. - **Holes & compound paths in `Path2D` / SVG fills** (#1253) — a path may now contain multiple sub-paths (every `M` in an SVG string, or every `moveTo()` call, starts a new one). On `fill()` the first sub-path is the outer contour and each subsequent sub-path is treated as a hole, so donuts, rings, letter counters ("O", "A", "8") and other shapes with holes render correctly under both the WebGL renderer (earcut hole triangulation) and the Canvas renderer (native winding rule). Method semantics follow the standard [`Path2D`](https://developer.mozilla.org/en-US/docs/Web/API/Path2D) API; see the updated **SVG Shapes** example. - **`Texture2d` base class for texture assets** — a new abstract base (`me.Texture2d`) for user-constructed texture objects that own a texture source, exposed via `getTexture()`. `TextureAtlas` now extends it (no behavior change), and the renderables (`Sprite`, `Sprite3d`, `Mesh`) recognize any `Texture2d` by type and resolve it to its backing source — so a texture asset can be passed directly (`{ image: myTexture }`) just like a raw canvas. Raw DOM images/canvases and the loader's decoded `CompressedImage` data remain valid sources outside the class hierarchy. The contract deliberately admits both CPU-backed sources (a drawable canvas/image) and **GPU-resident** ones (an opaque backing that never leaves the GPU) — the shape a future WebGPU backend and screen-capture textures follow. @@ -12,7 +12,7 @@ - **`ShaderEffect.setTime(seconds)`** — a convenience for the `uTime` shader-animation convention, now on the base class: call it once per frame to write a shader's `uniform float uTime` (e.g. to scroll a static texture's UVs, or pulse / wave), driven by whatever clock you choose. A no-op when the shader doesn't declare `uTime`, so it's safe on any effect. Manual by design — the engine never calls it, so animation stays opt-in. The built-in `Hologram` / `Shine` effects now inherit it (their identical `setTime` overrides were removed). - **`ShaderEffect.setTexture(name, image[, repeat])`** (closes [#1532](https://github.com/melonjs/melonJS/issues/1532)) — bind an **extra** `sampler2D` to a custom post-effect, beyond the sprite/target it processes (`uSampler`) — a noise map, mask, gradient, or flow table. Declare `uniform sampler2D ;` in your fragment and pass any engine texture — a `Texture2d` asset (`NoiseTexture2d`, `TextureAtlas`, …) directly, or a raw drawable source; the engine uploads it once, caches it, and (re)binds it to a reserved texture unit each draw while pointing the sampler uniform at it — no raw WebGL texture-unit juggling. Works on both post-effect paths (single-effect sprite shader and the multi-effect / camera FBO blit). Enables UV-distortion water, dissolve masks, flow maps, palette lookups, etc. Purely additive — effects that never call it are unchanged. See the **Aquarium** example (a water surface refracting the live scene through a GPU-scrolled seamless `NoiseTexture2d`). - **Anchor-point presets + `Sprite3d` anchor support** (#1514) — `settings.anchorPoint` now accepts the named presets `"center"`, `"top"`, `"bottom"`, `"left"`, `"right"`, `"top-left"`, `"top-right"`, `"bottom-left"`, `"bottom-right"` in addition to an `{x, y}` object, uniformly across `Sprite`, `Entity`, `Collectable`, `ImageLayer`, `Text`, `BitmapText` (and their subclasses), including as a plain-string Tiled property. `Sprite3d` gains anchoring through the same `settings.anchorPoint` key (centered default, same convention as `Sprite`): the anchor is baked into the quad's local vertices so it composes with billboarding, flips and trimmed/rotated atlas frames, never leaks into the renderer transform on either camera path, is mutable at runtime via `sprite3d.anchorPoint.set(...)` (automatic re-bake + cull-bounds update), and grows the frustum-cull bounds exactly so an anchored sprite can't pop out while still on screen. On the 2D classes invalid values (unknown preset, malformed object) keep their historical silent `(0, 0)` outcome for full backward compatibility, but now log a console warning; `Sprite3d` (a new surface) throws. See the updated billboard example (`anchorPoint: "bottom"` — feet on the ground plane). -- **Godot-style shader builtins: `screen_texture` / `screen_uv` / `noise_uv`** — three names now get special treatment inside a `ShaderEffect` fragment body, so screen-reading and noise-scrolling effects need zero JavaScript plumbing and no UV math (design contributed by the melonJS editor team, mirroring Godot's `hint_screen_texture` / `SCREEN_UV`). Annotate a sampler with `uniform sampler2D screenTex : screen_texture;` and the engine keeps it filled with a capture of **everything drawn so far** (true BackBufferCopy semantics via the `toFrameTexture` shared slot, refreshed automatically when the effect draws — one screen copy per draw, only for effects that use it); an optional wrap is accepted (`: screen_texture(repeat)`, WebGL 2). Use `screen_uv` anywhere in the body for the fragment's 0..1 screen position, and `noise_uv` for a frame-local 0..1 coordinate across the drawn object — it undoes atlas packing (and is scaled to object pixels), so a seamless noise texture tiles correctly no matter where the sprite's frame sits in its atlas. Fully backward compatible: the annotation was never valid GLSL, the varyings only activate when referenced, shaders that declare their own `screen_uv`/`noise_uv` are left untouched, and a body using none of them compiles byte-identical to before. See the new **Water Overworld** example — a side-scroller pond that refracts the scene behind it in three lines of shader. +- **Shader builtins: `screen_texture` / `screen_uv` / `noise_uv`** — three names now get special treatment inside a `ShaderEffect` fragment body, so screen-reading and noise-scrolling effects need zero JavaScript plumbing and no UV math (design contributed by the melonJS editor team). Annotate a sampler with `uniform sampler2D screenTex : screen_texture;` and the engine keeps it filled with a capture of **everything drawn so far** (a true back-buffer copy via the `toFrameTexture` shared slot, refreshed automatically when the effect draws — one screen copy per draw, only for effects that use it); an optional wrap is accepted (`: screen_texture(repeat)`, WebGL 2). Use `screen_uv` anywhere in the body for the fragment's 0..1 screen position, and `noise_uv` for a frame-local 0..1 coordinate across the drawn object — it undoes atlas packing (and is scaled to object pixels), so a seamless noise texture tiles correctly no matter where the sprite's frame sits in its atlas. Fully backward compatible: the annotation was never valid GLSL, the varyings only activate when referenced, shaders that declare their own `screen_uv`/`noise_uv` are left untouched, and a body using none of them compiles byte-identical to before. See the new **Water Overworld** example — a side-scroller pond that refracts the scene behind it in three lines of shader. - **Shader preloading: `"shader"` asset type + `loader.getShader()` + `ShaderEffect.clone()`** — custom shaders can now be preloaded like any other asset and are **compiled at load time** (the GLSL compile cost lands in the loading screen, and a compile error fails the load — `loader.load()` rejects with an error carrying the asset's name). The source is a GLSL fragment body following the `ShaderEffect` convention (`uniform` declarations + `vec4 apply(vec4 color, vec2 uv)`), loaded from a `src` URL / data: URI or inline via the `data` field (the inline-TMX convention): `{ name: "waterRipple", type: "shader", src: "shaders/waterRipple.frag" }`. `loader.getShader(name)` returns the **shared, loader-owned instance** — the *same* object on every call, with `shared = true` so renderable cleanup never auto-destroys it; everything it is assigned to shares one set of uniform values, and it is freed only by `loader.unload()` / `loader.unloadAll()` (which destroy the GL program). For per-renderable uniform values, the new `ShaderEffect.clone()` compiles an independent, caller-owned copy: it copies the *recipe* (fragment source, precision, uniform values, `setTexture` bindings — with its own GL uploads) but never the *ownership* — the clone's `shared` flag is **always reset to `false`**, so it is auto-destroyed with the renderable it is assigned to unless explicitly re-shared. `GLShader.clone()` exists likewise for raw full-program (vertex + fragment) shaders, with the same recipe-not-ownership semantics. The **Aquarium** and **Heat Haze** examples ship their fragments as preloaded shader assets. A shader asset can also be a complete **`{vertex, fragment}` program pair** — `src: {vertex: url, fragment: url}` or inline via `data:` — which compiles into a shared raw **`GLShader`** instead (returned by the same `loader.getShader()`), for the paths that take one directly: a `Mesh` custom shader, `renderer.customShader`, a custom batcher. Same shared/clone/unload lifecycle; WebGL-only (`null` under Canvas — a raw program has no canvas analog). ### Fixed diff --git a/packages/melonjs/src/video/webgl/shadereffect.js b/packages/melonjs/src/video/webgl/shadereffect.js index 7adab59e5..d1f48d417 100644 --- a/packages/melonjs/src/video/webgl/shadereffect.js +++ b/packages/melonjs/src/video/webgl/shadereffect.js @@ -9,15 +9,14 @@ import GLShader from "./glshader.js"; import quadVertex from "./shaders/quad.vert"; /* - * ---- Godot-style shader builtins ------------------------------------------ + * ---- Shader builtins ------------------------------------------------------- * * Inside a ShaderEffect fragment body, three names get special treatment so - * users never compute screen/frame UVs by hand (same ergonomics as Godot's - * `hint_screen_texture` / `SCREEN_UV`): + * users never compute screen/frame UVs by hand: * * - `uniform sampler2D : screen_texture;` — the engine strips the * annotation and keeps the sampler filled with a capture of everything - * drawn so far (BackBufferCopy semantics, via the renderer's shared + * drawn so far (a back-buffer copy, via the renderer's shared * toFrameTexture slot). An optional wrap mode is accepted: * `: screen_texture(repeat)`. * - `screen_uv` — varying with this fragment's position in that capture @@ -142,9 +141,9 @@ function buildEffectVertex(builtins) { * // update the uniform each frame * pulse.setUniform("uTime", time); * @example - * // Godot-style shader builtins — no JS plumbing, no UV math: + * // Shader builtins — no JS plumbing, no UV math: * // `: screen_texture` keeps the sampler filled with everything drawn so - * // far (BackBufferCopy semantics; one screen copy per draw of the effect), + * // far (a back-buffer copy; one screen copy per draw of the effect), * // `screen_uv` is this fragment's 0..1 screen position, and `noise_uv` * // runs 0..1 across the sprite regardless of its atlas frame. * const water = new ShaderEffect(renderer, ` @@ -226,7 +225,7 @@ export default class ShaderEffect { return; } - // Godot-style builtins: parse & strip `: screen_texture` annotations, + // Shader builtins: parse & strip `: screen_texture` annotations, // detect the free `screen_uv` / `noise_uv` varyings (see the module // header). A body using none of them passes through untouched. const builtins = parseShaderBuiltins(fragmentBody); diff --git a/packages/melonjs/src/video/webgl/webgl_renderer.js b/packages/melonjs/src/video/webgl/webgl_renderer.js index 0dfe7aa47..0272565e6 100644 --- a/packages/melonjs/src/video/webgl/webgl_renderer.js +++ b/packages/melonjs/src/video/webgl/webgl_renderer.js @@ -837,13 +837,12 @@ export default class WebGLRenderer extends Renderer { * * The capture reflects the framebuffer **at the call site** (a `flush()` * runs first), so call it right before drawing the surface that needs the - * backdrop — the Godot `BackBufferCopy` placement model. It reads whichever + * backdrop — the classic back-buffer-copy placement model. It reads whichever * framebuffer is currently bound: the backbuffer normally, or a camera's * post-effect FBO during that pass — so it works under both `Camera2d` and * `Camera3d`. Under a perspective camera, "drawn so far" is draw order, not * depth order: capture after the opaque scene, just before the refracting - * surface (same guidance as Unity `_CameraOpaqueTexture` / Godot screen - * texture). + * surface (the usual opaque-scene-texture guidance). * * Feed the result straight into a custom post-effect: * ```js @@ -1130,7 +1129,7 @@ export default class WebGLRenderer extends Renderer { this.flush(); - // `screen_texture` shader builtin (Godot BackBufferCopy semantics): + // `screen_texture` shader builtin (back-buffer copy semantics): // refresh the shared frame capture the effects' live samplers are // wired to. For a CAMERA effect the "screen" is the scene itself — // capture the still-bound camera FBO before unbinding it. For a @@ -1475,7 +1474,7 @@ export default class WebGLRenderer extends Renderer { // active lights AND this sprite has a normal map. Otherwise the // unlit `quad` batcher is faster (full texture-unit capacity, no // paired normal upload, no per-fragment lighting math). - // Godot BackBufferCopy semantics for the `screen_texture` shader + // Back-buffer copy semantics for the `screen_texture` shader // builtin: refresh the shared frame capture with everything drawn so // far BEFORE this sprite's own quad, so the effect samples the scene // behind it. Must run before setBatcher below — toFrameTexture diff --git a/packages/melonjs/tests/shadereffect-builtins.spec.js b/packages/melonjs/tests/shadereffect-builtins.spec.js index 0fe9dce0b..d5ea6d95c 100644 --- a/packages/melonjs/tests/shadereffect-builtins.spec.js +++ b/packages/melonjs/tests/shadereffect-builtins.spec.js @@ -2,10 +2,10 @@ import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; import { boot, ShaderEffect, video, WebGLRenderer } from "../src/index.js"; /** - * Godot-style shader builtins in ShaderEffect: + * Shader builtins in ShaderEffect: * * - `uniform sampler2D name : screen_texture;` — auto-wired to the - * renderer's shared frame capture (BackBufferCopy semantics) + * renderer's shared frame capture (back-buffer copy semantics) * - `screen_uv` — free varying, fragment position in that capture * - `noise_uv` — free varying, frame-local 0..1 across the drawn object * @@ -221,7 +221,7 @@ describe("ShaderEffect builtins (screen_texture / screen_uv / noise_uv)", () => // a GRAY source drawn through an effect that returns the SCREEN with // channels swizzled (.bgr) — output pixels prove all three at once: // the effect ran (not the gray source), it sampled the true backdrop - // (BackBufferCopy), and screen_uv orientation matches (top stays top) + // (back-buffer copy), and screen_uv orientation matches (top stays top) const fx = new ShaderEffect( renderer, `