# One object. Two truths.

Independent article case study. Domain: website consumer / Design Engineering presentation.

An independently generated torus knot is projected once into two offscreen 2D render targets. Solid and wire passes share geometry and camera; a directional alpha mask composites their outputs. This browser-canvas study isolates the article’s render-target principle without claiming its Three.js shader implementation.

## Attribution and evidence

Studied: [Building a Blended Material Shader in WebGL with Solid.js](https://tympanus.net/codrops/2025/08/12/building-a-blended-material-shader-in-webgl-with-solid-js/), Nathan Nye. Article SHA-256: b61727f2cb40c16e62f8ee70023579bfcf02a78ae10b92fdef171b034d6bfd08. Analysis SHA-256: 30c7e798dd280ca590e848daeaefe409af3aa431c912a431a584796be9436821. Source revision: da99d4998c41326e680df816e3a29f6a5c29237a3017047b0221bac4d5a9b772. The revision hashes the article/analysis hashes, the analyst principle and code-block evidence references; it identifies studied evidence, not a claim that the original demo executes.

Original acquisition: unresolved. Original license: unverified. originalSourceAcquired: false. The cached Visit snapshot is the Blackbird showcase. The exact article-linked StackBlitz tutorial source was not acquired and no grant for republishing the showcase was established; 17 tutorial code fragments remain usable for analysis.

No original article prose, code, artwork, source project or screenshot is distributed here. The authored-code MIT notice applies only to the independent implementation. Uses independently authored Canvas 2D render targets and a compositing mask rather than the original Three.js project. No original source or assets are included.

## Initial state and controls

A knotted surface is drawn twice: once as a lit solid and once as a line network. A soft moving mask decides which rendering reaches the final image.

The page starts stationary. Play motion, where present, advances this study’s presentation until paused; text, bounce, portrait, orbit, strand and mascot motion loops, while the event composer stops at its endpoint. Scroll studies advance through ordinary document scroll or their chapter buttons. Static view stops time-based motion; manual controls still inspect values. The three scroll studies instead show every chapter in ordinary reading flow. Pointer parallax centers its decorative layers.

Initial control values:

| Control key | Value |
| --- | --- |
| reveal | 53 |
| angle | 12 |
| softness | 25 |
| rotation | 25 |
| pass | mix |

## Running and editing

Open index.html directly. It contains all runtime code and visuals and needs no package install, account, network, remote asset or browser-origin storage. Edit its inline style and script to change the downloaded page. styles.css and script.js are reference copies of the inline source; changing those copies alone does not change the running page. Repository regeneration overwrites index.html and all generated copies, including any manual edits. Keep a separate copy when editing a download. The repository authoring modules in vendor/codrops-article-studies/scenes-*.mjs and runtime.mjs regenerate these copies through node scripts/build-codrops-article-studies.mjs. Repository regeneration also needs the private source evidence; downloaded-page execution does not.

## Verification boundary

This generation passed the captured article/analysis hash checks, exact ID membership, local canonical Markdown anchor/hash checks, implementation-symbol checks, JavaScript parsing, semantic main/title counts, duplicate-ID checks and runtime URL/storage exclusion. The manifest codeFiles entries identify every emitted file by SHA-256. Each code symbol is a searchable named function, not a claimed executed call trace. Proposed checks are in KNOWLEDGE.json. runtime_verified: false. SG artifact capture proves only a recorded initial render; no interactive runtime, keyboard, accessibility, comfort or performance result is claimed.

Manual Chrome interaction is blocked by extension UI in this session. No alternate browser-control route was used. Preview sizing is native responsive width. Initial-render captures are tracked separately at site/artifacts/full-import/preview-posters/index.json and site/artifacts/full-import/preview-posters/visual-review.json in the repository. No capture receipt is bundled with this download. The bounded initial-render matrix requests all 21 studies at 320 pixels and three representative studies at 1280 pixels; the separate poster surface is 640 × 420. The authored CSS also adapts at 375 and 768 pixels, without claiming those widths were captured. A width request does not mean that capture exists or passed. Motion starts on explicit playback; system reduced motion and the Static view switch stop it.

consumer_reference: consumer-reference/agent-native/registry.json
