├── .gitignore ├── curl.glsl └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /curl.glsl: -------------------------------------------------------------------------------- 1 | #pragma glslify: snoise = require(glsl-noise/simplex/3d) 2 | 3 | vec3 snoiseVec3( vec3 x ){ 4 | 5 | float s = snoise(vec3( x )); 6 | float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 )); 7 | float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 )); 8 | vec3 c = vec3( s , s1 , s2 ); 9 | return c; 10 | 11 | } 12 | 13 | 14 | vec3 curlNoise( vec3 p ){ 15 | 16 | const float e = .1; 17 | vec3 dx = vec3( e , 0.0 , 0.0 ); 18 | vec3 dy = vec3( 0.0 , e , 0.0 ); 19 | vec3 dz = vec3( 0.0 , 0.0 , e ); 20 | 21 | vec3 p_x0 = snoiseVec3( p - dx ); 22 | vec3 p_x1 = snoiseVec3( p + dx ); 23 | vec3 p_y0 = snoiseVec3( p - dy ); 24 | vec3 p_y1 = snoiseVec3( p + dy ); 25 | vec3 p_z0 = snoiseVec3( p - dz ); 26 | vec3 p_z1 = snoiseVec3( p + dz ); 27 | 28 | float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y; 29 | float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z; 30 | float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x; 31 | 32 | const float divisor = 1.0 / ( 2.0 * e ); 33 | return normalize( vec3( x , y , z ) * divisor ); 34 | 35 | } 36 | 37 | #pragma glslify: export(curlNoise) 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "glsl-curl-noise", 3 | "version": "0.0.3", 4 | "description": "curl noise", 5 | "main": "curl.glsl", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "curl", 11 | "noise", 12 | "glsl" 13 | ], 14 | "author": "Isaac Cohen ", 15 | "license": "BSD", 16 | "dependencies": { 17 | "glsl-noise": "0.0.0" 18 | } 19 | } 20 | --------------------------------------------------------------------------------