first commit
This commit is contained in:
		
							
								
								
									
										71
									
								
								public/sdk/three/jsm/nodes/math/TriNoise3D.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								public/sdk/three/jsm/nodes/math/TriNoise3D.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | ||||
| // https://github.com/cabbibo/glsl-tri-noise-3d | ||||
|  | ||||
| import { loop } from '../utils/LoopNode.js'; | ||||
| import { float, vec3, tslFn } from '../shadernode/ShaderNode.js'; | ||||
|  | ||||
| const tri = tslFn( ( [ x ] ) => { | ||||
|  | ||||
| 	return x.fract().sub( .5 ).abs(); | ||||
|  | ||||
| } ); | ||||
|  | ||||
| const tri3 = tslFn( ( [ p ] ) => { | ||||
|  | ||||
| 	return vec3( tri( p.z.add( tri( p.y.mul( 1. ) ) ) ), tri( p.z.add( tri( p.x.mul( 1. ) ) ) ), tri( p.y.add( tri( p.x.mul( 1. ) ) ) ) ); | ||||
|  | ||||
| } ); | ||||
|  | ||||
| const triNoise3D = tslFn( ( [ p_immutable, spd, time ] ) => { | ||||
|  | ||||
| 	const p = vec3( p_immutable ).toVar(); | ||||
| 	const z = float( 1.4 ).toVar(); | ||||
| 	const rz = float( 0.0 ).toVar(); | ||||
| 	const bp = vec3( p ).toVar(); | ||||
|  | ||||
| 	loop( { start: float( 0.0 ), end: float( 3.0 ), type: 'float', condition: '<=' }, () => { | ||||
|  | ||||
| 		const dg = vec3( tri3( bp.mul( 2.0 ) ) ).toVar(); | ||||
| 		p.addAssign( dg.add( time.mul( float( 0.1 ).mul( spd ) ) ) ); | ||||
| 		bp.mulAssign( 1.8 ); | ||||
| 		z.mulAssign( 1.5 ); | ||||
| 		p.mulAssign( 1.2 ); | ||||
|  | ||||
| 		const t = float( tri( p.z.add( tri( p.x.add( tri( p.y ) ) ) ) ) ).toVar(); | ||||
| 		rz.addAssign( t.div( z ) ); | ||||
| 		bp.addAssign( 0.14 ); | ||||
|  | ||||
| 	} ); | ||||
|  | ||||
| 	return rz; | ||||
|  | ||||
| } ); | ||||
|  | ||||
| // layouts | ||||
|  | ||||
| tri.setLayout( { | ||||
| 	name: 'tri', | ||||
| 	type: 'float', | ||||
| 	inputs: [ | ||||
| 		{ name: 'x', type: 'float' } | ||||
| 	] | ||||
| } ); | ||||
|  | ||||
| tri3.setLayout( { | ||||
| 	name: 'tri3', | ||||
| 	type: 'vec3', | ||||
| 	inputs: [ | ||||
| 		{ name: 'p', type: 'vec3' } | ||||
| 	] | ||||
| } ); | ||||
|  | ||||
| triNoise3D.setLayout( { | ||||
| 	name: 'triNoise3D', | ||||
| 	type: 'float', | ||||
| 	inputs: [ | ||||
| 		{ name: 'p', type: 'vec3' }, | ||||
| 		{ name: 'spd', type: 'float' }, | ||||
| 		{ name: 'time', type: 'float' } | ||||
| 	] | ||||
| } ); | ||||
|  | ||||
| export { tri, tri3, triNoise3D }; | ||||
		Reference in New Issue
	
	Block a user