mirror of
https://github.com/gpujs/gpu.js.git
synced 2026-01-18 16:04:10 +00:00
...it kind of snowballed from some needs Fixes #521 - If `tactic` is not set, check precision allowed from WebGL, and automatically change based off needs, otherwise use value from `tactic`. Fixes #535 - Internally check if texture from argument is the same as output, if so, clone this texture, and then clean it up after the kernel runs. Fixes #536 - Normalize all declarations to non-destructured, and then parse Fixes #537 - Change logic Fixes #538 - Found the GL script that would work, and reduced the methods to use it Fixes #539 - Found a better way of testing random, and this gives me an error for 1 in 10 runs, acceptable Some refactoring for less duplicate code and documentation
50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
// language=GLSL
|
|
const source = `// https://www.shadertoy.com/view/4t2SDh
|
|
//note: uniformly distributed, normalized rand, [0,1]
|
|
highp float randomSeedShift = 1.0;
|
|
highp float slide = 1.0;
|
|
uniform highp float randomSeed1;
|
|
uniform highp float randomSeed2;
|
|
|
|
highp float nrand(highp vec2 n) {
|
|
highp float result = fract(sin(dot((n.xy + 1.0) * vec2(randomSeed1 * slide, randomSeed2 * randomSeedShift), vec2(12.9898, 78.233))) * 43758.5453);
|
|
randomSeedShift = result;
|
|
if (randomSeedShift > 0.5) {
|
|
slide += 0.00009;
|
|
} else {
|
|
slide += 0.0009;
|
|
}
|
|
return result;
|
|
}`;
|
|
|
|
const name = 'math-random-uniformly-distributed';
|
|
|
|
// language=JavaScript
|
|
const functionMatch = `Math.random()`;
|
|
|
|
const functionReplace = `nrand(vTexCoord)`;
|
|
|
|
const functionReturnType = 'Number';
|
|
/**
|
|
*
|
|
* @param {Kernel} kernel
|
|
*/
|
|
const onBeforeRun = (kernel) => {
|
|
kernel.setUniform1f('randomSeed1', Math.random());
|
|
kernel.setUniform1f('randomSeed2', Math.random());
|
|
};
|
|
|
|
/**
|
|
*
|
|
* @type IPlugin
|
|
*/
|
|
const plugin = {
|
|
name,
|
|
onBeforeRun,
|
|
functionMatch,
|
|
functionReplace,
|
|
functionReturnType,
|
|
source
|
|
};
|
|
|
|
module.exports = plugin; |