Angular / TypeScript / RxJS
Computational Neurography: Algorithms, Rendering Architectures, and Real-Time Visualization in JavaScript
Report summary
Neurographic art is a psychological and aesthetic methodology originally formulated by Russian psychologist Pavel Piskarev in 2014, designed to bridge conscious intention with subconscious cognitive pathways through structured drawing techniques1. The foundational Piskarev algorithm is governed by a
Key topics
- Angular / TypeScript / RxJS
- Angular
- TypeScript
- RxJS
- AI
- .NET
- Python
- Physics
- Semantic Systems
Research provenance
For citation, use the report title and canonical URL. Archival presence does not establish authorship or promote report statements into portfolio evidence.
This page renders the archived Markdown as safe, formatted HTML. It is background research and does not become a portfolio claim without evidence review.
Full report
On this page
1. Introduction to Computational Neurography
Neurographic art is a psychological and aesthetic methodology originally formulated by Russian psychologist Pavel Piskarev in 2014, designed to bridge conscious intention with subconscious cognitive pathways through structured drawing techniques1. The foundational Piskarev algorithm is governed by a strict eight-step process, the visual core of which relies on two primary mechanics: the drawing of spontaneous, non-repeating "neurographic lines," and the meticulous "rounding" or filleting of every intersection created by those lines3. In the traditional analog medium, the intersections are theorized to symbolize internal psychological conflict or neurological resistance, and the rounding process visually smooths these angular nodes into continuous, silky webs that physically resemble biological neural networks1.
Translating the psychological strictures of neurographic art into real-time, dynamic computational visualizations presents a deeply sophisticated challenge in the realms of computer graphics and algorithmic design. A random moving neurography visualization requires real-time generative systems capable of simulating the biological spontaneity of the neurographic line without falling into mechanical repetition2. Furthermore, the system must detect topological intersections dynamically as these lines evolve over time and algorithmically smooth those intersecting nodes at a target render rate of 60 frames per second (fps)9.
The computational reconstruction of this art form is inherently interdisciplinary, demanding the orchestration of three distinct domains of computer science. The first domain is generative vector kinematics, which requires formulating the mathematical behavior of the neurographic line using continuous noise functions and vector flow fields to achieve organic unpredictability11. The second domain is computational geometry, which mandates calculating line segment intersections continuously within a moving coordinate space without exceeding the temporal constraints of the JavaScript execution thread13. The third domain encompasses real-time rendering and blending architectures, necessitating the execution of the rounding process using explicit geometric filleting, implicit surfaces (metaballs), or Signed Distance Fields (SDFs) rendered via JavaScript APIs and WebGL15.
The analysis presented in this report explores the optimal architectural patterns, mathematical formulations, and JavaScript library implementations required to synthesize autonomous, dynamically moving neurographic visualizations. By evaluating the capabilities of Canvas 2D, SVG filters, scene-graph libraries like Paper.js, generative frameworks like p5.js, and raw GLSL fragment shaders, this document provides a comprehensive framework for engineering high-performance neurographic systems.
2. Generative Kinematics: Formulating the Neurographic Line
The primary axiom of the neurographic line, as defined in its psychological framework, is that it must be bionic, explicitly avoiding mechanical repetition, and it must "lead to where you don't expect to see it"2. In computational geometry, this requirement precludes the use of standard periodic functions, such as pure sine or cosine waves, which inherently generate predictable, repeating oscillations. It similarly precludes purely random Brownian motion, which utilizes uncorrelated random number generation to produce erratic, jagged visual outputs that violate the organic, flowing aesthetic of neurographica2.
2.1 Continuous Noise and Vector Flow Fields
To generate continuous, non-repeating organic movement that simulates the biological mandate of the Piskarev algorithm, the most robust computational approach utilizes gradient noise algorithms, specifically Perlin noise or Simplex noise12. Unlike standard pseudorandom number generators, which output discontinuous values, gradient noise functions produce deterministic values that guarantee [Figure omitted from source export] continuity, meaning the transition from one random value to the next is mathematically smooth and differentiable without abrupt angular shifts21.
In a JavaScript environment, integrating a noise algorithm into a dynamic vector flow field allows for the instantiation of autonomous particles—representing the leading vertices of the neurographic lines—that trace paths through a predefined coordinate grid11. The canvas is subdivided into a spatial grid of cells, and each cell is assigned a directional vector derived from evaluating a multi-dimensional noise function at that specific coordinate. To fulfill the neurographic requirement for unexpected, continuously evolving trajectories, a temporal dimension is introduced, mapping the 2D coordinate space into a 3D or 4D noise space22.
The angle [Figure omitted from source export] for any given cell in the flow field at position [Figure omitted from source export] and time [Figure omitted from source export] is formulated as:
[Figure omitted from source export]
In this equation, the scaling factors [Figure omitted from source export], [Figure omitted from source export], and [Figure omitted from source export] dictate the frequency of the noise. A lower spatial scale results in macro-level, sweeping curves, while a higher spatial scale induces tight, chaotic curling19. The temporal scale [Figure omitted from source export] controls the speed at which the underlying flow field undulates.
Particles traverse this shifting field by sampling the underlying angle at their current coordinate and updating their velocity vectors accordingly11. Utilizing Euler integration, the velocity vector [Figure omitted from source export] and the new position [Figure omitted from source export] of the particle are calculated sequentially:
[Figure omitted from source export]
[Figure omitted from source export]
Here, [Figure omitted from source export] represents the magnitude of the velocity, and [Figure omitted from source export] represents the time delta between frames. By allowing particles to autonomously navigate this undulating topology, the resulting line trails exhibit the exact biological unpredictability required by the artistic methodology2.
2.2 Segmented Spline Generation and Circle Packing Heuristics
As the particles move through the flow field, their historical positions are recorded as an array of vertices. Rendering these discrete vertices using standard linear interpolation results in rigid, segmented lines that fail to achieve the required "silky" appearance6. JavaScript creative coding libraries, particularly p5.js, provide robust geometric functions to circumvent this limitation26. Functions such as curveVertex() implement Catmull-Rom splines, while bezierVertex() employs cubic Bezier curves, ensuring mathematical [Figure omitted from source export] continuity through the control points28.
To prevent the dynamic visualization from devolving into an illegible mass of overlapping vectors, advanced generative art implementations often utilize geometric avoidance algorithms, such as real-time circle packing or bounded collision detection29. In a circle packing approach, virtual boundaries are assigned to the leading edges of the lines. As a line grows, the algorithm checks the proximity of its leading vertex against the historical vertices of all other lines. If the distance falls below a defined threshold, the line terminates its growth phase, preventing catastrophic clustering and maintaining the structural integrity of the visual composition30. This algorithmic spacing forces the lines to navigate around one another, generating a dense, highly intricate web that naturally maximizes the number of intersections required for the subsequent rounding phase5.
| Generative Methodology | Mathematical Continuity | Computational Overhead | Aesthetic Result for Neurography |
|---|---|---|---|
| Brownian Motion | [Figure omitted from source export] (Discontinuous) | Low | Jagged, erratic, violates bionic rules. |
| Periodic Functions (Sine/Cosine) | [Figure omitted from source export] (Infinite) | Low | Mechanical, predictable, lacks spontaneity. |
| Perlin Noise Flow Field | [Figure omitted from source export] (First derivative) | Moderate | Organic, fluid, highly unpredictable. |
| Simplex Noise Flow Field | [Figure omitted from source export] (Second derivative) | Moderate | Superior isotropic properties, minimizes directional artifacts. |
3. Computational Geometry of Intersection Detection
The fundamental aesthetic trigger for the "rounding" process in neurography is the intersection of two or more lines5. In an analog drawing, the human eye intuitively identifies these crossings. However, in a dynamic JavaScript visualization where dozens of lines are continually extruded, moved, and deformed at 60 frames per second, detecting these intersections represents a highly intensive problem in computational geometry13.
3.1 Line Segment Intersection Mathematics
Given that smooth curves and splines in computer graphics are ultimately rendered as a contiguous series of small, discrete linear segments, identifying crossings necessitates evaluating line segments against one another mathematically33. The parametric equation for a line segment extending between point [Figure omitted from source export] and point [Figure omitted from source export] is defined by the parameter [Figure omitted from source export]:
[Figure omitted from source export]
To ascertain whether a line segment [Figure omitted from source export] intersects with a secondary segment [Figure omitted from source export], algorithms frequently rely on vector cross products to determine spatial straddling14. The principle asserts that if the cross product of the vectors indicates that point [Figure omitted from source export] and point [Figure omitted from source export] lie on opposing sides of the infinite line containing [Figure omitted from source export], and conversely, that points [Figure omitted from source export] and [Figure omitted from source export] lie on opposing sides of the infinite line containing [Figure omitted from source export], a definitive intersection exists within the segment bounds35.
To calculate the exact scalar value of the intersection along the first segment, the mathematical formulation is derived as:
[Figure omitted from source export]
If the denominator equals zero, the segments are strictly parallel and cannot intersect. If the scalar [Figure omitted from source export] satisfies the condition [Figure omitted from source export], and the corresponding scalar [Figure omitted from source export] for segment [Figure omitted from source export] satisfies [Figure omitted from source export], the exact intersection coordinate [Figure omitted from source export] is computed by substituting [Figure omitted from source export] back into the original parametric equation37.
3.2 Optimizing Intersection Detection via Spatial Partitioning
A naive, brute-force algorithm that compares every segment against every other segment to detect intersections operates at a time complexity of [Figure omitted from source export]14. For a neurographic visualization generating thousands of segments per second, this exponential scaling will rapidly consume the 16.6-millisecond execution budget of the JavaScript main thread, causing catastrophic frame-rate degradation41.
To optimize this execution, advanced computational geometry algorithms utilize spatial partitioning to radically reduce the number of direct segment comparisons. The Bentley-Ottmann algorithm, widely regarded as the gold standard for line segment intersections, employs a sweep-line methodology43. This algorithm utilizes a vertical reference line that traverses the coordinate space chronologically from left to right, maintaining a dynamic, self-balancing binary search tree of currently "active" segments46. Intersections are exclusively calculated for segments that are topologically adjacent within the active data structure. This paradigm reduces the time complexity to [Figure omitted from source export], where [Figure omitted from source export] represents the finite number of intersecting points41.
Alternatively, JavaScript implementations frequently favor grid-based spatial hashing or Quadtree data structures to manage dynamic lines13. In a spatial hashing architecture, the canvas is divided into a uniform matrix of spatial buckets. As particles draw new segments, those segments are mathematically registered to the specific buckets they traverse. Intersection mathematics are strictly limited to segments residing within the exact same bucket40. For random moving visualizations, wiping and rebuilding the spatial hash map every frame allows the generative system to efficiently track intersecting nodes in real-time, isolating the precise coordinates where neurographic "rounding" must be algorithmically applied.
| Intersection Algorithm | Time Complexity | JavaScript Implementation Complexity | Suitability for Real-Time Dynamic Lines |
|---|---|---|---|
| Brute Force | [Figure omitted from source export] | Low | Unusable beyond trivial line counts. |
| Bentley-Ottmann Sweep Line | [Figure omitted from source export] | Very High (Requires robust tree structures) | Excellent for static generation, difficult for continuous motion. |
| Quadtree Partitioning | [Figure omitted from source export] average | Moderate | Excellent for sparse, highly clustered line generation. |
| Uniform Spatial Hashing | [Figure omitted from source export] average (with ideal grid size) | Low | Optimal for dense, uniformly distributed moving flow fields. |
4. Algorithmic Rounding: Explicit Geometric Filleting
The defining aesthetic mandate of neurographic art is the smoothing of acute and obtuse intersection angles into perfectly rounded, "silky" connections6. When dynamic lines cross within the computational model, they form explicit angular nodes. The algorithmic challenge lies in replacing this sharp topological vertex with a seamless curve, effectively removing the geometry of the intersection itself.
Explicit geometric filleting is an architectural approach that relies on calculating an exact tangent arc to bridge the two crossing vectors, fundamentally mutating the underlying path data. According to the geometric principles established for rounding polygonal corners, the objective is to algorithmically push an imaginary circle of a specified radius [Figure omitted from source export] as far into the intersection corner as possible until it is perfectly tangent to both intersecting lines48.
4.1 The Trigonometry of Corner Filleting
For any generic intersection forming an angle at vertex [Figure omitted from source export] between two lines passing through adjacent points [Figure omitted from source export] and [Figure omitted from source export], the rounding algorithm proceeds through a strict trigonometric pipeline48. Initially, the algorithm calculates the normalized directional vectors [Figure omitted from source export] and [Figure omitted from source export], originating from the intersection vertex. By computing the dot product or cross product of these vectors, the algorithm identifies the half-angle, or bisector angle [Figure omitted from source export], which dictates the directional vector pointing directly toward the center of the imaginary rounding circle48.
The most critical calculation is determining the precise distance from the intersection vertex [Figure omitted from source export] to the tangent points along the lines where the straight geometry must terminate and the rounding curve must begin48. This distance, defined as [Figure omitted from source export], is derived using the right-angled triangle formed by the corner vertex, the circle's center, and the tangent point:
[Figure omitted from source export]
Once the tangent points are established, the original intersecting lines are computationally truncated at these coordinates. The void left by the removed vertex is then closed by inserting cubic Bezier curves or native arc commands (arcTo in Canvas 2D) that trace the circumference of the tangent circle between the two truncation points28.
4.2 Scene-Graph Manipulation via Paper.js
For JavaScript developers relying on retained-mode scene-graph APIs rather than immediate-mode canvas drawing, the Paper.js library offers robust vector manipulation capabilities inherently suited to explicitly calculating these neurographic fillets33.
Paper.js natively supports highly accurate intersection detection through its path.getIntersections(otherPath) method50. Under the hood, this method utilizes sophisticated fat-line clipping algorithms and recursive curve subdivision to isolate the precise overlapping coordinates of complex Bezier paths, identifying whether the paths merely touch or actively cross52.
Once an intersection is pinpointed, the path.splitAt() method can be invoked to structurally break the continuous paths into discrete segments at the intersection node51. Third-party geometric plugins, such as paperjs-round-corners, or custom trigonometric algorithms can subsequently process these segmented paths, applying explicit radius filleting to smooth the newly generated joints17. Paper.js also offers a path.flatten() method, which subdivides complex curves into a sequence of straight lines based on a maximum error tolerance, simplifying the mathematical overhead required to calculate the tangent vectors prior to rounding53.
However, translating this explicit geometric methodology to a continuously moving, random neurographic visualization introduces severe performance limitations. Modifying the Abstract Syntax Tree (AST) of the Paper.js scene graph every single frame for dozens of dynamic, splitting, and merging paths triggers immense memory allocation and JavaScript garbage collection overhead55. Furthermore, when dynamic lines intersect at highly acute angles or when multiple lines converge simultaneously on a single complex node, the tangent distances ([Figure omitted from source export]) can mathematically exceed the length of the line segments themselves. This causes the explicit filleting algorithm to invert upon itself, producing catastrophic rendering artifacts48. Consequently, while explicit vector filleting produces mathematically perfect prints, it is structurally deficient for real-time generative animation.
5. Implicit Surfaces and Raster Smoothing (Metaballs)
To circumvent the computational fragility and performance limitations of explicit trigonometry, high-performance rendering architectures employ implicit visual blending. This paradigm completely abandons the necessity to calculate geometric intersections mathematically. Instead, it relies on pixel-level raster blending to visually synthesize the filleted rounding required by the Piskarev algorithm. This technique is conceptually identical to the rendering of "metaballs"—organic-looking isosurfaces that naturally meld together and form single, continuous geometries when brought into close physical proximity15.
5.1 The Canvas 2D API and Alpha Thresholding
In the native HTML5 \<canvas\> API, the metabolic rounding effect can be successfully executed utilizing a multi-pass rendering technique known as alpha thresholding61.
The generative system first draws the dynamic neurographic lines using exceptionally thick strokes with heavily feathered edges, or applies a Gaussian blur to the rendering context63. This blurring effect causes the pixel alpha (transparency) values to fall off smoothly and radially from the solid center core of the line structure.
When two or more of these blurred lines physically intersect on the canvas, their diffuse alpha channels overlap. Dictated by the default source-over compositing operation of the Canvas API, the fractional alpha values in the overlapping region accumulate and sum together, creating a localized node of highly concentrated opacity65.
Following the drawing phase, the entire pixel array of the canvas is analyzed frame-by-frame. A strict mathematical threshold is applied to the image data: any individual pixel possessing an alpha value above a defined threshold—for example, [Figure omitted from source export] on a scale of [Figure omitted from source export] to [Figure omitted from source export]—is clamped to pure solid opacity (alpha [Figure omitted from source export]). Conversely, any pixel falling below that threshold is clamped to complete transparency (alpha [Figure omitted from source export])63.
Because the overlapping blurred gradients accumulate density naturally, the intersection creates a broad, curved band of high-opacity pixels spanning the inner corners of the crossing vectors. When the hard threshold is applied, these soft, overlapping gradients instantaneously solidify into hard, curved geometric fillets, flawlessly replicating the hand-drawn neurographic aesthetic without a single trigonometric intersection calculation61.
5.2 GPU-Accelerated SVG Filters on Canvas Elements
Reading and writing raw pixel data via CanvasRenderingContext2D.getImageData() 60 times a second is notoriously detrimental to CPU performance. A significantly more robust and performant implementation delegates this raster thresholding directly to the graphics processing unit (GPU) by leveraging hardware-accelerated SVG filters applied to the Canvas element via CSS or the native context.filter property61.
The SVG filter pipeline utilizes two specific filter primitives executed sequentially:
1. feGaussianBlur: This primitive applies a standard deviation blur to the dynamically moving lines, spreading their alpha footprint outward based on a mathematical bell curve72.
2. feColorMatrix: This primitive manipulates the resulting color and alpha channels using a 5x4 matrix multiplication, allowing for the precise execution of the hard threshold60.
To apply an aggressive alpha threshold capable of generating neurographic rounding, the feColorMatrix is specifically configured to ignore standard RGB transformations but to severely scale the alpha channel and negatively shift its intercept. The XML structure of this filter operates as follows:
XML
\<filter id\="neuro-round"\> \<feGaussianBlur in\="SourceGraphic" stdDeviation\="10" result\="blur" /\> \<feColorMatrix in\="blur" mode\="matrix" values\="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 \-7" result\="goo" /\> \</filter\>
In the fourth row of this matrix, which governs the output of the alpha channel, the initial alpha value of the blurred pixel is multiplied by [Figure omitted from source export], and then an offset of [Figure omitted from source export] (technically [Figure omitted from source export] internally) is subtracted from the result71. This mathematical operation drastically steepens the alpha gradient profile. Soft, blurred line overlaps are forced to either plummet to zero opacity or skyrocket to maximum opacity, solidifying into hard, organic curves75.
By relying on SVG filters, the heavy lifting of intersection smoothing is completely offloaded to the GPU's rasterization pipeline, enabling incredibly fluid 60 fps animations of dense neurographic webs without utilizing JavaScript's main thread logic.
6. High-Performance WebGL and Signed Distance Fields (SDFs)
While SVG filter thresholding is visually effective and performant, it remains a post-processing heuristic. Depending on the density of the lines and the aggressiveness of the feColorMatrix, the rasterization process can produce pixelated anti-aliasing artifacts along the edges of the neurographic curves75. For mathematically perfect, infinite-resolution dynamic rounding at maximum display framerates, the most advanced architectural paradigm utilizes WebGL fragment shaders and Signed Distance Fields (SDFs)24.
6.1 The Mathematics of Signed Distance Fields
In the context of GLSL fragment shaders, an SDF is an implicit mathematical function that returns the shortest distance from any given pixel coordinate (or UV coordinate) to the nearest surface of a geometric object16. The distance field operates on a signed basis: if the computed distance is positive, the pixel is located outside the shape; if the distance is negative, the pixel resides inside the shape; and if the distance evaluates exactly to zero, the pixel lies perfectly on the boundary contour18.
To render a dynamic neurographic line segment defined by points [Figure omitted from source export] and [Figure omitted from source export], evaluated at pixel position [Figure omitted from source export], the SDF mathematics require projecting the vector [Figure omitted from source export] onto the vector [Figure omitted from source export]. The scalar projection is then clamped between [Figure omitted from source export] and [Figure omitted from source export] to ensure that the distance is evaluated strictly against the finite bounds of the line segment, rather than an infinite line84. The GLSL mathematical formulation is:
[Figure omitted from source export]
[Figure omitted from source export]
[Figure omitted from source export]
This function returns a gradient field that inherently features perfectly rounded caps at points [Figure omitted from source export] and [Figure omitted from source export], natively satisfying the organic aesthetic requirements of the visualization87.
6.2 The Smooth Minimum (smin) Algorithm
The hallmark of WebGL-based neurography is the application of the Smooth Minimum (smin) function to the distance fields. Pioneered by computational geometry and demoscene expert Inigo Quilez, the smin function revolutionized the real-time rendering of organic, metaball-style geometries90.
When multiple line segments are evaluated concurrently within a fragment shader, utilizing the standard min(d1, d2) function to combine their distance fields yields a sharp Boolean union—a hard, explicitly angular intersection that directly contradicts the rounding principle of neurography93. However, passing the distance fields through an smin function dynamically interpolates and blends the fields based on a controllable smoothing factor [Figure omitted from source export]91.
The polynomial smin function, optimized for GLSL execution, is calculated as:
OpenGL Shading Language
float smin( float a, float b, float k ) { float h \= clamp( 0.5 \+ 0.5\(b-a)/k, 0.0, 1.0 ); return mix( b, a, h ) \- k\h\*(1.0\-h); }
92.
By iterating over an array of dynamically moving line segments—passed from JavaScript into the shader via Uniform Buffer Objects (UBOs) or encoded within Data Textures—the shader computes the smin across the entire topology simultaneously97.
The profound structural implication of utilizing the smin architecture is that intersection detection is entirely eliminated from the system. The shader requires zero knowledge of where, when, or if lines physically cross. The continuous distance field intrinsically collapses and blends at spatial proximities defined by the [Figure omitted from source export] parameter, generating mathematically continuous, infinitely smooth neurographic fillets autonomously18. This methodology provides visually flawless rounding devoid of raster artifacts or overlapping inversions100.
| Rendering Architecture | Intersection Detection Requirement | Visual Quality (Anti-Aliasing) | CPU Overhead | GPU Overhead | Best Practical Use Case |
|---|---|---|---|---|---|
| Explicit Geometry (Paper.js / p5.js) | Required ([Figure omitted from source export] Sweep Line) | Flawless (True Vectors) | Very High | Low | Static generative output, Plotter printing. |
| Raster Thresholding (SVG Filters) | Not Required (Implicit pixel blend) | Moderate (Prone to raster aliasing) | Low | Moderate | Intermediate web experiments, Canvas 2D art. |
| WebGL SDFs with smin | Not Required (Implicit ray marching math) | Flawless (Infinite functional resolution) | Very Low | High | Real-time, highly dynamic dense simulations. |
7. JavaScript Architecture for 60-FPS Real-Time Animation
To successfully sustain a target of 60 frames per second—allotting a strict temporal budget of approximately 16.6 milliseconds per frame—for dense, randomly moving visualizations, the JavaScript execution environment must be rigorously optimized. The architecture must prevent main-thread blocking, mitigate garbage collection pauses, and maximize GPU offloading9.
7.1 The RequestAnimationFrame Event Loop and Memory Management
Animations within the browser ecosystem must be driven exclusively by the window.requestAnimationFrame() API, categorically avoiding legacy timers like setInterval or setTimeout. The requestAnimationFrame callback synchronizes execution directly to the refresh rate of the physical display hardware9. Crucially, the browser pauses the execution of this loop when the specific tab is hidden or backgrounded, which prevents memory leaks, preserves battery life, and halts unnecessary canvas rendering operations102.
Because the requestAnimationFrame loop is extraordinarily sensitive to synchronous JavaScript execution times, the generative algorithms responsible for line growth and vector field calculations must be optimized for memory efficiency104. Instantiating new vector objects (e.g., new p5.Vector()) inside the execution loop rapidly fills the JavaScript heap, triggering aggressive pauses by the V8 Garbage Collector, which manifests visually as severe frame stuttering105. Therefore, implementing object pooling—pre-allocating a fixed, immutable array of vertex data objects upon initialization and merely updating their [Figure omitted from source export] and [Figure omitted from source export] properties in place—is an absolute prerequisite for fluid performance.
7.2 Web Workers and OffscreenCanvas
For environments executing computationally heavy explicit geometry mathematics or complex spatial hashing for particle collisions, the rendering pipeline must be structurally decoupled from the browser's UI thread. This is achieved utilizing the HTML5 OffscreenCanvas API in conjunction with Web Workers102.
By transferring control of an HTML \<canvas\> element to a secondary Web Worker thread, the main JavaScript thread remains completely insulated from rendering overhead, free to handle DOM updates and user interactions seamlessly104.
1. The main thread initializes the worker and transfers the canvas.
2. The Web Worker independently hosts its own requestAnimationFrame loop, computing the Perlin noise fields, calculating the geometric physics, and issuing the draw commands directly to the OffscreenCanvas107.
3. The browser's native compositor intrinsically merges the worker's completed frame buffer with the DOM without requiring synchronous locking, guaranteeing tear-free rendering107.
7.3 p5.js Graphics Buffers and Render Batching
When utilizing generative libraries such as p5.js, standard draw commands are executed immediately against the canvas context. While this immediate-mode paradigm is highly efficient, it can still induce bottlenecks if stroke styles, fill contexts, and path commands are switched too frequently per frame109.
To optimize p5.js visualizations featuring randomly moving elements, developers frequently employ the createGraphics() function to instantiate off-screen p5.Graphics buffer objects110. Dynamic layers can be intelligently batched within these buffers. For example, to generate the fading trails of moving neurographic particles without clearing the entire canvas, the historical trails are drawn to the off-screen buffer using a low-opacity background clear (synthesizing a motion blur effect). This completed buffer is then rendered onto the main canvas in a single, highly optimized bit-block transfer (image() call)105. Integrating this with state batching—minimizing the sequential number of stroke(), fill(), and beginShape() context switches—drastically reduces the functional overhead on the HTML5 Context2D state machine42.
7.4 WebGL Instanced Rendering for Uncapped Scale
If the neurographic visualization is designed to scale to thousands of independently moving nodes and lines, the structural bottleneck inevitably shifts from the CPU's mathematical limits to the sheer volume of WebGL draw calls116. Rendering 5,000 distinct line segments traditionally requires 5,000 discrete WebGL draw calls, an operation that quickly exhausts graphics driver resources and plummets performance116.
The ultimate architectural solution to this limitation is Instanced Rendering, exposed via the ANGLE\_instanced\_arrays extension or native WebGL2 pipelines118. In this paradigm, the base geometry of a generic line segment (typically a simple polygon quad) is uploaded to the GPU exactly once. A separate, dynamic instance buffer—containing the varying coordinates, start points, end points, and thickness data for all 5,000 unique segments—is updated dynamically by the CPU120. A single drawElementsInstanced execution then instructs the GPU to render the entire neurographic web concurrently122. Utilizing custom vertex shaders (implemented via THREE.InstancedMesh in the Three.js framework or directly in raw WebGL) in tandem with the previously discussed fragment SDF blending, scales the visualization to enterprise-level data visualization metrics, effortlessly maintaining the 60 fps mandate across complex scenes121.
8. Emerging Synergies and Future Trajectories in Generative Graphics
The computational synthesis of psychological art algorithms with high-performance graphics architectures highlights several compelling future trajectories for the domain. Currently, WebGL Signed Distance Fields are manually formulated and rely on explicit polynomial blending via the smin function to achieve neurographic aesthetic standards90. However, recent advancements in machine learning point toward the integration of Differentiable Rendering pipelines and Composite Neural Signed Distance Fields into real-time environments101.
In a machine-learning context, neural networks can be trained directly on the aesthetic properties and topological rulesets of hand-drawn Piskarev neurographica128. A neural SDF model can then encode highly specific stylistic nuances—such as the precise, idiosyncratic variations in analog line thickness, the unique physical "tension" of hand-drawn filleting, and the biological asymmetry of intersection networks127. Through the use of localized diffusion models conditioned on semantic neurographic inputs, real-time creative coding algorithms could transition away from deterministic noise-based vector fields132. Instead, systems would rely on probabilistically generated pathways that autonomously adapt their structure to human physiological inputs, bridging the gap between algorithmic art and psychological bio-feedback.
Furthermore, as WebGPU adoption fundamentally replaces the aging WebGL standard across all major browser platforms, the implementation of raw compute shaders will allow for highly complex [Figure omitted from source export]\-body geometric avoidance, particle kinematics, and spatial hash sorting to occur entirely on the graphics hardware. This paradigm shift wholly eliminates the necessity of transferring vertex data back and forth between the CPU and the GPU, establishing a unified memory architecture capable of simulating millions of intersecting, dynamically rounding neuro-nodes in unprecedented, authentic real-time131.
9. Conclusion
The digital synthesis of random moving neurographic art in a JavaScript ecosystem is an intricate, multidimensional problem requiring strict programmatic alignment between the artistic philosophy of Pavel Piskarev and advanced technical architectures. The non-negotiable aesthetic mandates of the algorithm—unpredictable organic routing devoid of mechanical repetition, combined with perfectly smoothed intersection nodes—are mathematically intensive properties to replicate within a continuous, 60-frame-per-second computational loop.
As demonstrated by the structural analysis of rendering technologies, while CPU-bound explicit geometric calculations utilizing libraries such as Paper.js or p5.js offer flawless vector outputs suitable for static generation or plotter printing, they inevitably falter under the garbage collection constraints and [Figure omitted from source export] complexities of real-time, multi-node dynamic visualizations. Conversely, implicit rendering pipelines provide highly performant, visually superior alternatives capable of sidestepping explicit intersection mathematics altogether. Implementations ranging from HTML5 Canvas SVG Filter thresholding (feGaussianBlur utilized in sequence with highly scaled feColorMatrix data) to advanced WebGL Signed Distance Fields employing Inigo Quilez’s smooth minimum (smin) polynomial, offer robust mechanisms for automated topological rounding.
By marrying continuous gradient noise vector fields with SDF fragment shaders, and executing the generative physics via requestAnimationFrame within decoupled OffscreenCanvas Web Workers, developers can achieve flawless visualization rendering. This architecture bypasses the computational bottlenecks of mathematical intersection detection, relying instead on massively parallel GPU pixel evaluation to organically and autonomously generate the filleted, bionic networks that define the very core of computational neurography.
Works cited
1. Origin and power of neurographic art: a fusion of science and self, https://www.vanvaf.com/post/origin-and-power-of-neurographic-art-a-fusion-of-science-and-self-discovery
2. Neurographic line | Piskarev Line \- YouTube, https://www.youtube.com/watch?v=48nreFaxKbU
3. How to Use Neurographic Art to Encourage a Calm and Focused Mind, https://theartofeducation.edu/2024/06/jun-how-to-use-neurographic-art-for-a-calm-and-focused-classroom/
4. Neurographica Basic Algorithm: Rewire Your Subconscious Mind, https://expansionink.com/neurographica-basic-algorithm/
5. What is Neurographic Art? \- Gel Press, https://gelpress.com/blogs/art-and-inspiration/what-is-neurographic-art
6. The difference between the basic algorithm, ARL and other, https://english.neurographica.com/post/the-difference-between-the-base-algorithm-arl-and-other-algorithms-of-neurographica
7. NEUROGRAPHIC ART 101: BENEFITS, TECHNIQUES & A SIMPLE, https://toratherapeutics.com/wp-content/uploads/2024/02/neurographic-art-101-plus-examples-handout.pdf
8. Introducing Neurographic Art \- Play Art With Kim, https://playartwithkim.com/neurographic-art/
9. HTML Canvas: A Hands-On Guide | PDF \- Scribd, https://www.scribd.com/document/387164114/HTML-Canvas-Deep-Dive
10. What Are Canvas Animations? \- WPDean, https://wpdean.com/canvas-animations/
11. P5.js flowfield animation/simulation with particles \- GitHub, https://github.com/leonlaser/p5js-particle-flowfield
12. Flow Fields and Noise Algorithms with P5.js \- DEV Community, https://dev.to/nyxtom/flow-fields-and-noise-algorithms-with-p5-js-5g67
13. Line Segment Intersection: Data Structures and Algorithms for GIS, https://zenn.dev/akitek/articles/33ec55294d9d81?locale=en
14. Map Overlays by the Line Segment Intersection Algorithm \- YouTube, https://www.youtube.com/watch?v=U18wneJqCzs
15. Sticky Slime Effects with Vanilla JavaScript \- YouTube, https://www.youtube.com/watch?v=PKQKIfv6yAw
16. Signed Distance Fields Part 1: Unsigned Distance Fields \- Shader Fun, https://shaderfun.com/2018/03/23/signed-distance-fields-part-1-unsigned-distance-fields/
17. paperjs-round-corners \- Paper.js API Reference \- Typogram, https://paperjs.typogram.co/3rd-party-plugins/paperjs-round-corners
18. Morphing Geometric Shapes with SDF in GLSL Fragment Shaders, https://dev.to/den4ic/morphing-geometric-shapes-with-sdf-in-glsl-fragment-shaders-and-visualization-in-jetpack-compose-5db8
19. Perlin Noise \- Flow Field \- Raging Nexus, https://ragingnexus.com/creative-code-lab/projects/perlin-noise-flow-field/
20. eter5nityforce-oss/generative-pattern-weaver: 생성형 패턴 직조기, https://github.com/eter5nityforce-oss/generative-pattern-weaver
21. How to make a flow field in p5.js | Coding Project \#9 \- YouTube, https://www.youtube.com/watch?v=1-QXuR-XX\_s
22. 18: Perlin Noise Flow Fields in p5.js: How to Code Generative Art, https://www.youtube.com/watch?v=To3dtYEQaf4
23. p5.js: A Perlin Noise Flow Field with Colors and an End, https://www.schmidtynotes.com/blog/p5/2022-03-05-random-vectors/
24. Generative art: Lines on flow fields \- Work \- Clicktorelease, https://www.clicktorelease.com/code/generative-lines-flow-fields/
25. Making a Static Flow Field in p5.js \- YouTube, https://www.youtube.com/watch?v=R0OFyWEglGA
26. stc/generative-art-workshop \- GitHub, https://github.com/stc/generative-art-workshop
27. p5.js, https://p5js.org/
28. Curves \- learn | p5.js, https://archive.p5js.org/learn/curves.html
29. geometric avoidance : r/generative \- Reddit, https://www.reddit.com/r/generative/comments/pwi1ch/geometric\_avoidance/
30. 9.8: Random Circles with No Overlap \- p5.js Tutorial \- YouTube, https://www.youtube.com/watch?v=XATr\_jdh-44
31. Create Stunning Generative Art with Circles in p5.js \- Alex Codes Art, https://alexcodesart.com/create-stunning-generative-art-with-circles-in-p5-js/
32. Generative line intersections \- GitHub Gist, https://gist.github.com/912c1406945031bbb6816de82ecfb030
33. Curve \- Paper.js, https://paperjs.org/reference/curve/
34. Working with Path Items \- Paper.js, https://paperjs.org/tutorials/paths/working-with-path-items/
35. Optimizing Line Segment Intersection Detection in JavaScript, https://medium.com/@python-javascript-php-html-css/optimizing-line-segment-intersection-detection-in-javascript-7d9ead12bdb5
36. Intersection Between Line and Circle | 2D Segment Collision Algorithm, https://www.youtube.com/watch?v=\_3dRFu3k8Nw
37. An Algorithm for Polygon Intersections \- Gorilla Sun, https://www.gorillasun.de/blog/an-algorithm-for-polygon-intersections/
38. Calculate circle-line intersection with JavaScript and p5.js, https://cscheng.info/2016/06/09/calculate-circle-line-intersection-with-javascript-and-p5js.html
39. Finding the intersection between two curved lines in p5js, https://stackoverflow.com/questions/71897205/finding-the-intersection-between-two-curved-lines-in-p5js
40. Segment Intersection \- algorithm \- Stack Overflow, https://stackoverflow.com/questions/19926054/segment-intersection
41. Computational Geometry · Lecture Line Segment Intersection, https://i11www.iti.kit.edu/\_media/teaching/winter2015/compgeom/algogeom-ws15-vl02.pdf
42. How to Optimize Your Sketches \- p5.js, https://p5js.org/tutorials/how-to-optimize-your-sketches/
43. Computational Geometry (WS 2026/27), https://www.cosy.sbg.ac.at/\~held/teaching/compgeo/cg\_slides.pdf
44. Computational Geometry (WS 2026/27), https://www.cosy.sbg.ac.at/\~held/teaching/compgeo/cg\_print.pdf
45. ACM Transactions on Graphics (TOG): Vol. 42, No. 4\. 2023, https://www.siggraph.org/wp-content/uploads/2024/02/ACM-Transactions-on-Graphics-Volume-42-Issue-4.html
46. Lecture 1: Introduction and line segment intersection, https://www.cise.ufl.edu/\~sitharam/COURSES/CG/kreveldintrolinesegment.pdf
47. Graphics Gems, by Category \- Realtime Rendering, https://www.realtimerendering.com/resources/GraphicsGems/category.html
48. An Algorithm for Polygons with Rounded Corners \- Gorilla Sun, https://www.gorillasun.de/blog/an-algorithm-for-polygons-with-rounded-corners/
49. Paper.js — Path, https://paperjs.org/reference/path/
50. Path Intersections \- Paper.js, https://paperjs.org/examples/path-intersections/
51. Paper.js intersection pulling node position out of path object, https://stackoverflow.com/questions/74253910/paper-js-intersection-pulling-node-position-out-of-path-object
52. CurveLocation \- Paper.js, https://paperjs.org/reference/curvelocation/
53. PathItem \- Paper.js, https://paperjs.org/reference/pathitem/
54. Slice path into two separate paths using paper.js \- Stack Overflow, https://stackoverflow.com/questions/23258001/slice-path-into-two-separate-paths-using-paper-js
55. Resolving self-intersecting paths \- Google Groups, https://groups.google.com/g/paperjs/c/KzYRnzRVHNs
56. Creating Predefined Shapes \- Paper.js, https://paperjs.org/tutorials/paths/creating-predefined-shapes/
57. Getting Started With Paper.js: Paths and Geometry | Envato Tuts+, https://code.tutsplus.com/getting-started-with-paperjs-paths-and-geometry--cms-26490t
58. paper.js \- achieving smoother edges with closed paths, https://stackoverflow.com/questions/25936566/paper-js-achieving-smoother-edges-with-closed-paths
59. Metaball geometry node \- SideFX, https://www.sidefx.com/docs/houdini/nodes/sop/metaball.html
60. SVG Metaballs \- DEV Community, https://dev.to/antogarand/svg-metaballs-35pj
61. Paper.js Meta-ball Effect For Irregular shapes \- Stack Overflow, https://stackoverflow.com/questions/76941423/paper-js-meta-ball-effect-for-irregular-shapes
62. HTML5 Canvas Threshold filter Image Tutorial \- Konva.js, https://konvajs.org/docs/filters/Threshold.html
63. 2d Metaballs with canvas\! \- Somethinghitme, https://somethinghitme.com/2012/06/06/2d-metaballs-with-canvas/
64. Canvas path blur / Fil \- Observable Notebooks, https://observablehq.com/@fil/canvas-path-blur
65. HTML5 Canvas Creative Alpha-Blending \- javascript \- Stack Overflow, https://stackoverflow.com/questions/17418048/html5-canvas-creative-alpha-blending
66. CanvasRenderingContext2D: globalAlpha property \- Web APIs | MDN, https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalAlpha
67. Alpha Blending and WebGL \- Canva Engineering Blog, https://www.canva.dev/blog/engineering/alpha-blending-and-webgl/
68. Canvas-based blur detection with JavaScript \- Medium, https://medium.com/dawandadev/canvas-based-blur-detection-with-javascript-8d9dc25cb7d5
69. metaballs \- Devin Sze, https://devinsze.com/metaballs/
70. A complete guide to using CSS filters with SVGs \- LogRocket Blog, https://blog.logrocket.com/complete-guide-using-css-filters-svgs/
71. SVG Metaball Gooey Filter with feColorMatrix \- Animation Patterns, https://animationpatterns.art/animations/gooey-blob-metaball-filter/
72. Filter Effects – SVG 1.1 (Second Edition) \- W3C, https://www.w3.org/TR/SVG11/filters.html
73. feGaussianBlur Filter Element — svgwrite 1.4.3 documentation, http://svgwrite.readthedocs.io/en/stable/classes/fe\_gaussian\_blur.html
74. \- SVG \- MDN Web Docs, https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/feGaussianBlur
75. SVG Gooey Blob Effect with feGaussianBlur and feColorMatrix, https://animationpatterns.art/animations/gooey-blob-construction/
76. SVG feGaussianBlur \- GitHub Gist, https://gist.github.com/3787410
77. SVG Blur Effects | feGaussianBlur | Defs | Filter \- YouTube, https://www.youtube.com/watch?v=qXPf4739ZhA
78. Generative line Shader Breakdown \- Offscreen Canvas, https://offscreencanvas.com/issues/generative-line-shader-breakdown/
79. How to Animate WebGL Shaders with GSAP: Ripples, Reveals, and, https://tympanus.net/codrops/2025/10/08/how-to-animate-webgl-shaders-with-gsap-ripples-reveals-and-dynamic-blur-effects/
80. Volumetric Rendering: Signed Distance Functions \- Alan Zucconi, https://www.alanzucconi.com/2016/07/01/signed-distance-functions/
81. Signed Distance Fields – Part 1 \- Halogenica, https://halogenica.net/graphics/signed-distance-fields/
82. SDFs Part Two \- Joyrok, https://joyrok.com/SDFs-Part-Two
83. Drawing Rounded Corners and Borders with SDF. Part 1 \- Medium, https://medium.com/@solidalloy/drawing-rounded-corners-and-borders-with-sdf-part-1-rounded-corners-8017bb6ce6f9
84. Rounding the edges in a mitered line segment inside of a fragment, https://computergraphics.stackexchange.com/questions/5803/rounding-the-edges-in-a-mitered-line-segment-inside-of-a-fragment-shader
85. Rounding Corners in SDFs \- YouTube, https://www.youtube.com/watch?v=s5NGeUV2EyU
86. The SDF of a Triangle \- Advanced Shading \- YouTube, https://www.youtube.com/watch?v=4qK\_dtsvqIA
87. Wrote SDF shaders for the first time for round corners : r/Unity3D, https://www.reddit.com/r/Unity3D/comments/1un2cwj/wrote\_sdf\_shaders\_for\_the\_first\_time\_for\_round/
88. Blurred rounded rectangles | Raph Levien's blog, https://raphlinus.github.io/graphics/2020/04/21/blurred-rounded-rects.html
89. Drawing Rounded Corners and Borders with SDF. Part 3 \- Medium, https://medium.com/@solidalloy/drawing-rounded-corners-and-borders-with-sdf-part-3-fixes-and-optimizations-4436cd9f2df4
90. The Unity Shaders Bible, https://library.laylinesayar.com/wp-content/uploads/2022/06/The-Unity-Shaders-Bible-Jettelly\_compressed.pdf
91. SHADER SYSTEMS — WAVGEN Universe \- The Waveform, https://wavgen.ca/art/shader-systems/
92. The Unity Shaders Bible: A linear explanation of ... \- dokumen.pub, https://dokumen.pub/the-unity-shaders-bible-a-linear-explanation-of-shaders-from-beginner-to-advanced-improve-your-game-graphics-with-unity-and-become-a-professional-technical-artist-015bnbsped-9798833189849.html
93. The Magic of Signed Distance Functions (Unity Shader Tutorial), https://www.youtube.com/watch?v=HrSNDH3X1Ms
94. Distance Estimator Compendium (DEC), https://jbaker.graphics/writings/DEC.html
95. Houdini OpenCL, https://mysterypancake.github.io/Houdini-OpenCL/
96. douglasgoodwin/shader-playground \- GitHub, https://github.com/douglasgoodwin/shader-playground
97. AI Co-Artist: A LLM-Powered Framework for Interactive GLSL ... \- arXiv, https://arxiv.org/html/2512.08951
98. GLSL Rounded Rectangle with Variable Border \- Stack Overflow, https://stackoverflow.com/questions/59197671/glsl-rounded-rectangle-with-variable-border
99. How to smooth a distance field? : r/proceduralgeneration \- Reddit, https://www.reddit.com/r/proceduralgeneration/comments/9j1w77/how\_to\_smooth\_a\_distance\_field/
100. Signed Distance Fields Dynamic Diffuse Global Illumination \- arXiv, https://arxiv.org/abs/2007.14394
101. Differentiable Composite Neural Signed Distance Fields for Robot, https://arxiv.org/abs/2502.02664
102. Understanding offscreen canvas to better performance, https://stackoverflow.com/questions/60870336/understanding-offscreen-canvas-to-better-performance
103. Is there any explanation why when tab is hidden, Canvas stops, https://stackoverflow.com/questions/73793109/is-there-any-explanation-why-when-tab-is-hidden-canvas-stops-receive-frames-fro
104. Does requestAnimationFrame can be stuck by long javascript, https://stackoverflow.com/questions/62911574/does-requestanimationframe-can-be-stuck-by-long-javascript
105. Speed up animated p5js code on website? \- Reddit, https://www.reddit.com/r/p5js/comments/jd74v8/speed\_up\_animated\_p5js\_code\_on\_website/
106. A Cross-Device and Cross-OS Benchmark of Modern Web ... \- PMC, https://pmc.ncbi.nlm.nih.gov/articles/PMC12843483/
107. Using Web Workers and OffscreenCanvas for Smooth Rendering in, https://medium.com/@lightxdesign55/using-web-workers-and-offscreencanvas-for-smooth-rendering-in-javascript-1c9df43fdb52
108. The WebGPU Export Engine: Rendering High-Res Canvases to, https://dev.to/programmingcentral/the-webgpu-export-engine-rendering-high-res-canvases-to-mp4-svg-and-pdf-like-a-senior-architect-1gbc
109. performance optimizations for graphics · Issue \#331 · processing/p5.js, https://github.com/processing/p5.js/issues/331
110. Create Graphics \- p5.js, https://p5js.org/examples/Advanced-Canvas-Rendering-Create-Graphics/
111. createGraphics \- p5.js, https://p5js.org/reference/p5/createGraphics/
112. p5.Graphics \- p5.js, https://p5js.org/reference/p5/p5.Graphics/
113. 9.23: createGraphics() \- p5.js Tutorial \- YouTube, https://www.youtube.com/watch?v=pNDc8KXWp9E
114. The P5 Graphics Buffer \- Gorilla Sun, https://www.gorillasun.de/blog/the-p5-graphics-buffer/
115. Optimizing Canvas Performance for Large Scale Applications, https://reintech.io/blog/optimizing-canvas-performance-large-scale-apps
116. Are WebGL draw calls really, really slow? \- Stack Overflow, https://stackoverflow.com/questions/37494273/are-webgl-draw-calls-really-really-slow
117. Real-time map rendering for military C2: Cesium, Mapbox, tiles, https://corvusintell.com/blog/c2-systems/real-time-map-rendering-military/
118. jsuj1th/CorroSense-AI \- GitHub, https://github.com/jsuj1th/CorroSense-AI
119. Three.js Performance Optimisation: 60fps Patterns | IGC, https://www.intelligentgraphicandcode.com/development/threejs-interfaces/performance
120. Building Responsive Motion with GSAP and WebGL | Simplified Media, https://simplified.media/guides/procedural-browser-animation
121. WebGL: 80.000 particles \- Hacker News, https://news.ycombinator.com/item?id=9333254
122. Procedural Instanced Forest \- High Performance "Real" Trees, https://discourse.threejs.org/t/procedural-instanced-forest-high-performance-real-trees/88610
123. Web performance considerations \- Unity \- Manual, https://docs.unity3d.com/6000.1/Documentation/Manual/webgl-performance.html
124. Building Music Galaxy — An Interactive 3D Visualization of Musical, https://cprimozic.net/blog/building-music-galaxy/
125. How we built the Google Cloud Infrastructure WebGL experience, https://hellomondaycom.medium.com/how-we-built-the-google-cloud-infrastructure-webgl-experience-dec3ce7cd209
126. \[2405.08733\] A Simple Approach to Differentiable Rendering of SDFs, https://arxiv.org/abs/2405.08733
127. A Deep Signed Directional Distance Function for Object Shape, https://arxiv.org/abs/2107.11024
128. Diffusion-SDF: Conditional Generative Modeling of Signed Distance, https://openaccess.thecvf.com/content/ICCV2023/papers/Chou\_Diffusion-SDF\_Conditional\_Generative\_Modeling\_of\_Signed\_Distance\_Functions\_ICCV\_2023\_paper.pdf
129. \[2606.20856\] Stochastic Signed Distance Processes \- arXiv, https://arxiv.org/abs/2606.20856
130. \[2307.00533\] Representing Robot Geometry as Distance Fields \- arXiv, https://arxiv.org/abs/2307.00533
131. Shallow Signed Distance Functions for Kinematic Collision Bodies, https://arxiv.org/html/2411.06719v1
132. Exploring Bridges Between Algorithmic and AI-generated Art \- arXiv, https://arxiv.org/html/2406.05508v2
133. \[2604.00157\] Dual Contouring of Signed Distance Data \- arXiv, https://arxiv.org/abs/2604.00157