tsl-textures
Version:
A collection of Three.js Shading Language (TSL) textures
52 lines (27 loc) • 1.03 kB
JavaScript
// TSL-Textures: Entangled
import { Color } from "three";
import { abs, exp, float, floor, Fn, Loop, max, mix, mul, oneMinus, positionGeometry, pow, sin } from 'three/tsl';
import { noise, prepare } from './tsl-utils.js';
var entangled = Fn( ( params ) => {
params = prepare( { ...entangled.defaults, ...params } );
var scale = exp( params.scale.div( 2 ) ).toVar( );
var pos = positionGeometry.add( params.seed ).toVar( );
var k = float( -10000 ).toVar( );
var k1 = float( 0 ).toVar( );
Loop( floor( float( params.density ) ), ()=> {
k1.assign( sin( noise( mul( pos, scale ) ).mul( 3*Math.PI ) ) );
k.assign( max( k, k1 ) );
scale.mulAssign( 1.2 );
} );
k.assign( oneMinus( pow( abs( k ), 5 ) ).mul( 6 ) );
return mix( params.color, params.background, k );
} );
entangled.defaults = {
$name: 'Entangled',
scale: 2,
density: 10,
color: new Color( 0x002040 ),
background: new Color( 0xFFFFFF ),
seed: 0,
};
export { entangled };