|
|
@@ -4,7 +4,7 @@ import { materialReference } from '../../nodes/accessors/MaterialReferenceNode.j
|
|
|
import { modelWorldMatrixInverse } from '../../nodes/accessors/ModelNode.js';
|
|
|
import { cameraPosition } from '../../nodes/accessors/Camera.js';
|
|
|
import { positionGeometry } from '../../nodes/accessors/Position.js';
|
|
|
-import { Fn, varying, vec2, vec3, vec4 } from '../../nodes/tsl/TSLBase.js';
|
|
|
+import { Fn, varying, float, vec2, vec3, vec4 } from '../../nodes/tsl/TSLBase.js';
|
|
|
import { min, max } from '../../nodes/math/MathNode.js';
|
|
|
import { Loop, Break } from '../../nodes/utils/LoopNode.js';
|
|
|
import { texture3D } from '../../nodes/accessors/Texture3DNode.js';
|
|
|
@@ -59,19 +59,19 @@ class VolumeNodeMaterial extends NodeMaterial {
|
|
|
const vDirection = varying( positionGeometry.sub( vOrigin ) );
|
|
|
|
|
|
const rayDir = vDirection.normalize();
|
|
|
- const bounds = property( 'vec2', 'bounds' ).assign( hitBox( { orig: vOrigin, dir: rayDir } ) );
|
|
|
+ const bounds = vec2( hitBox( { orig: vOrigin, dir: rayDir } ) ).toVar();
|
|
|
|
|
|
bounds.x.greaterThan( bounds.y ).discard();
|
|
|
|
|
|
bounds.assign( vec2( max( bounds.x, 0.0 ), bounds.y ) );
|
|
|
|
|
|
- const p = property( 'vec3', 'p' ).assign( vOrigin.add( bounds.x.mul( rayDir ) ) );
|
|
|
- const inc = property( 'vec3', 'inc' ).assign( vec3( rayDir.abs().reciprocal() ) );
|
|
|
- const delta = property( 'float', 'delta' ).assign( min( inc.x, min( inc.y, inc.z ) ) );
|
|
|
+ const p = vec3( vOrigin.add( bounds.x.mul( rayDir ) ) ).toVar();
|
|
|
+ const inc = vec3( rayDir.abs().reciprocal() ).toVar();
|
|
|
+ const delta = float( min( inc.x, min( inc.y, inc.z ) ) ).toVar( 'delta' ); // used 'delta' name in loop
|
|
|
|
|
|
delta.divAssign( materialReference( 'steps', 'float' ) );
|
|
|
|
|
|
- const ac = property( 'vec4', 'ac' ).assign( vec4( materialReference( 'base', 'color' ), 0.0 ) );
|
|
|
+ const ac = vec4( materialReference( 'base', 'color' ), 0.0 ).toVar();
|
|
|
|
|
|
Loop( { type: 'float', start: bounds.x, end: bounds.y, update: '+= delta' }, () => {
|
|
|
|