|
|
@@ -27,7 +27,7 @@
|
|
|
<script type="module">
|
|
|
|
|
|
import * as THREE from 'three';
|
|
|
- import { PI2, dot, sin, step, texture, timerLocal, tslFn, uv, vec2, vec3, vec4, mix } from 'three/tsl';
|
|
|
+ import { PI2, spherizeUV, sin, step, texture, timerLocal, tslFn, uv, vec2, vec3, vec4, mix } from 'three/tsl';
|
|
|
|
|
|
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
|
|
|
|
|
|
@@ -50,18 +50,6 @@
|
|
|
const cellularTexture = textureLoader.load( './textures/noises/voronoi/grayscale-256x256.png' );
|
|
|
const perlinTexture = textureLoader.load( './textures/noises/perlin/rgb-256x256.png' );
|
|
|
|
|
|
- // TSL functions
|
|
|
-
|
|
|
- const spherizeUv = tslFn( ( [ input, center, strength, offset ] ) => {
|
|
|
-
|
|
|
- const delta = input.sub( center );
|
|
|
- const delta2 = dot( delta, delta );
|
|
|
- const delta4 = delta2.mul( delta2 );
|
|
|
- const deltaOffset = delta4.mul( strength );
|
|
|
- return input.add( delta.mul( deltaOffset ) ).add( offset );
|
|
|
-
|
|
|
- } );
|
|
|
-
|
|
|
// gradient canvas
|
|
|
|
|
|
const gradient = {};
|
|
|
@@ -112,7 +100,7 @@
|
|
|
|
|
|
// main UV
|
|
|
const mainUv = uv().toVar();
|
|
|
- mainUv.assign( spherizeUv( mainUv, vec2( 0.5 ), 10, vec2( 0 ) ).mul( 0.6 ).add( 0.2 ) ); // spherize
|
|
|
+ mainUv.assign( spherizeUV( mainUv, 10 ).mul( 0.6 ).add( 0.2 ) ); // spherize
|
|
|
mainUv.assign( mainUv.pow( vec2( 1, 2 ) ) ); // stretch
|
|
|
mainUv.assign( mainUv.mul( 2, 1 ).sub( vec2( 0.5, 0 ) ) ); // scale
|
|
|
|
|
|
@@ -150,7 +138,7 @@
|
|
|
|
|
|
// main UV
|
|
|
const mainUv = uv().toVar();
|
|
|
- mainUv.assign( spherizeUv( mainUv, vec2( 0.5 ), 10, vec2( 0 ) ).mul( 0.6 ).add( 0.2 ) ); // spherize
|
|
|
+ mainUv.assign( spherizeUV( mainUv, 10 ).mul( 0.6 ).add( 0.2 ) ); // spherize
|
|
|
mainUv.assign( mainUv.pow( vec2( 1, 3 ) ) ); // stretch
|
|
|
mainUv.assign( mainUv.mul( 2, 1 ).sub( vec2( 0.5, 0 ) ) ); // scale
|
|
|
|