From 055554d606e5b7d1651b7fec9d273ef00a4170ba Mon Sep 17 00:00:00 2001 From: harshiltewari2004 Date: Sat, 16 May 2026 12:29:40 +0530 Subject: [PATCH 1/2] Add p5.strands support for randomGaussian() --- src/strands/strands_api.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/strands/strands_api.js b/src/strands/strands_api.js index 8675dc69b6..5f56fd13d4 100644 --- a/src/strands/strands_api.js +++ b/src/strands/strands_api.js @@ -337,6 +337,7 @@ export function initGlobalStrandsAPI(p5, fn, strandsContext) { const originalNoise = fn.noise; const originalNoiseDetail = fn.noiseDetail; const originalRandom = fn.random; + const originalRandomGaussian=fn.randomGaussian; const originalRandomSeed = fn.randomSeed; const originalMillis = fn.millis; @@ -415,6 +416,19 @@ export function initGlobalStrandsAPI(p5, fn, strandsContext) { if (!strandsContext.active) { return originalRandom.apply(this, args); } + augmentFn(fn, p5, 'randomGaussian', function(...args){ + if(!strandsContext.active){ + return originalRandomGaussian.apply(this, args); + } + const mean = args.length >= 1 ? args[0] : 0; + const stdDev = args.length>=2 ? args[1] : 1; + + const u1 = this.random(); + const u2 = this.random(); + const z = this.sqrt(this.log(u1).mult(-2)).mult(this.cos(u2.mult(2*Math.PI))); + + return z.mult(p5.strandsNode(stdDev)).add(p5.strandsNode(mean)); + }); const randomVertSnippet = strandsContext.backend.getRandomVertexShaderSnippet(); const randomFragSnippet = strandsContext.backend.getRandomFragmentShaderSnippet(); From dabfd6d23695b3485d89fee46209dd90577911d1 Mon Sep 17 00:00:00 2001 From: harshiltewari2004 Date: Thu, 21 May 2026 21:09:21 +0530 Subject: [PATCH 2/2] Move randomGaussian augmentFn out of random() body --- src/strands/strands_api.js | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/strands/strands_api.js b/src/strands/strands_api.js index 5f56fd13d4..553f6d3885 100644 --- a/src/strands/strands_api.js +++ b/src/strands/strands_api.js @@ -416,19 +416,6 @@ export function initGlobalStrandsAPI(p5, fn, strandsContext) { if (!strandsContext.active) { return originalRandom.apply(this, args); } - augmentFn(fn, p5, 'randomGaussian', function(...args){ - if(!strandsContext.active){ - return originalRandomGaussian.apply(this, args); - } - const mean = args.length >= 1 ? args[0] : 0; - const stdDev = args.length>=2 ? args[1] : 1; - - const u1 = this.random(); - const u2 = this.random(); - const z = this.sqrt(this.log(u1).mult(-2)).mult(this.cos(u2.mult(2*Math.PI))); - - return z.mult(p5.strandsNode(stdDev)).add(p5.strandsNode(mean)); - }); const randomVertSnippet = strandsContext.backend.getRandomVertexShaderSnippet(); const randomFragSnippet = strandsContext.backend.getRandomFragmentShaderSnippet(); @@ -494,6 +481,20 @@ export function initGlobalStrandsAPI(p5, fn, strandsContext) { } }); + augmentFn(fn, p5, 'randomGaussian', function(...args){ + if(!strandsContext.active){ + return originalRandomGaussian.apply(this, args); + } + const mean = args.length >= 1 ? args[0] : 0; + const stdDev = args.length>=2 ? args[1] : 1; + + const u1 = this.random(); + const u2 = this.random(); + const z = this.sqrt(this.log(u1).mult(-2)).mult(this.cos(u2.mult(2*Math.PI))); + + return z.mult(p5.strandsNode(stdDev)).add(p5.strandsNode(mean)); + }); + augmentFn(fn, p5, 'millis', function (...args) { if (!strandsContext.active) { return originalMillis.apply(this, args);