📄 Texture3DNode.js
¶
📊 Analysis Summary¶
Metric | Count |
---|---|
🔧 Functions | 6 |
🧱 Classes | 1 |
📦 Imports | 7 |
📊 Variables & Constants | 3 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 src/nodes/accessors/Texture3DNode.js
📦 Imports¶
Name | Source |
---|---|
TextureNode |
./TextureNode.js |
nodeProxy |
../tsl/TSLBase.js |
vec3 |
../tsl/TSLBase.js |
Fn |
../tsl/TSLBase.js |
If |
../tsl/TSLBase.js |
int |
../tsl/TSLBase.js |
textureSize |
./TextureSizeNode.js |
Variables & Constants¶
Name | Type | Kind | Value | Exported |
---|---|---|---|---|
epsilon |
0.0001 |
let/var | 0.0001 |
✗ |
step |
0.01 |
let/var | 0.01 |
✗ |
texture |
Texture |
let/var | this.value |
✗ |
Functions¶
Texture3DNode.getInputType(): string
¶
JSDoc:
/**
* Overwrites the default implementation to return a fixed value `'texture3D'`.
*
* @param {NodeBuilder} builder - The current node builder.
* @return {string} The input type.
*/
Returns: string
Texture3DNode.getDefaultUV(): any
¶
JSDoc:
/**
* Returns a default uv node which is in context of 3D textures a three-dimensional
* uv node.
*
* @return {Node<vec3>} The default uv node.
*/
Returns: any
Calls:
vec3 (from ../tsl/TSLBase.js)
Texture3DNode.setUpdateMatrix(): void
¶
JSDoc:
/**
* Overwritten with an empty implementation since the `updateMatrix` flag is ignored
* for 3D textures. The uv transformation matrix is not applied to 3D textures.
*
* @param {boolean} value - The update toggle.
*/
Returns: void
Texture3DNode.setupUV(builder: NodeBuilder, uvNode: Node): Node
¶
JSDoc:
/**
* Overwrites the default implementation to return the unmodified uv node.
*
* @param {NodeBuilder} builder - The current node builder.
* @param {Node} uvNode - The uv node to setup.
* @return {Node} The unmodified uv node.
*/
Parameters:
builder
NodeBuilder
uvNode
Node
Returns: Node
Calls:
builder.isFlipY
uvNode.flipY
uvNode.setY
int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub
Code
setupUV( builder, uvNode ) {
const texture = this.value;
if ( builder.isFlipY() && ( texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true ) ) {
if ( this.sampler ) {
uvNode = uvNode.flipY();
} else {
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
}
}
return uvNode;
}
Texture3DNode.generateUV(builder: NodeBuilder, uvNode: Node): string
¶
JSDoc:
/**
* Generates the uv code snippet.
*
* @param {NodeBuilder} builder - The current node builder.
* @param {Node} uvNode - The uv node to generate code for.
* @return {string} The generated code snippet.
*/
Parameters:
builder
NodeBuilder
uvNode
Node
Returns: string
Calls:
uvNode.build
Texture3DNode.normal(uvNode: any): any
¶
JSDoc:
Parameters:
uvNode
any
Returns: any
Calls:
normal
Classes¶
Texture3DNode
¶
Class Code
class Texture3DNode extends TextureNode {
static get type() {
return 'Texture3DNode';
}
/**
* Constructs a new 3D texture node.
*
* @param {Data3DTexture} value - The 3D texture.
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
* @param {?Node<int>} [levelNode=null] - The level node.
*/
constructor( value, uvNode = null, levelNode = null ) {
super( value, uvNode, levelNode );
/**
* This flag can be used for type testing.
*
* @type {boolean}
* @readonly
* @default true
*/
this.isTexture3DNode = true;
}
/**
* Overwrites the default implementation to return a fixed value `'texture3D'`.
*
* @param {NodeBuilder} builder - The current node builder.
* @return {string} The input type.
*/
getInputType( /*builder*/ ) {
return 'texture3D';
}
/**
* Returns a default uv node which is in context of 3D textures a three-dimensional
* uv node.
*
* @return {Node<vec3>} The default uv node.
*/
getDefaultUV() {
return vec3( 0.5, 0.5, 0.5 );
}
/**
* Overwritten with an empty implementation since the `updateMatrix` flag is ignored
* for 3D textures. The uv transformation matrix is not applied to 3D textures.
*
* @param {boolean} value - The update toggle.
*/
setUpdateMatrix( /*value*/ ) { } // Ignore .updateMatrix for 3d TextureNode
/**
* Overwrites the default implementation to return the unmodified uv node.
*
* @param {NodeBuilder} builder - The current node builder.
* @param {Node} uvNode - The uv node to setup.
* @return {Node} The unmodified uv node.
*/
setupUV( builder, uvNode ) {
const texture = this.value;
if ( builder.isFlipY() && ( texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true ) ) {
if ( this.sampler ) {
uvNode = uvNode.flipY();
} else {
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
}
}
return uvNode;
}
/**
* Generates the uv code snippet.
*
* @param {NodeBuilder} builder - The current node builder.
* @param {Node} uvNode - The uv node to generate code for.
* @return {string} The generated code snippet.
*/
generateUV( builder, uvNode ) {
return uvNode.build( builder, 'vec3' );
}
/**
* TODO.
*
* @param {Node<vec3>} uvNode - The uv node .
* @return {Node<vec3>} TODO.
*/
normal( uvNode ) {
return normal( { texture: this, uv: uvNode } );
}
}
Methods¶
getInputType(): string
¶
getDefaultUV(): any
¶
setUpdateMatrix(): void
¶
setupUV(builder: NodeBuilder, uvNode: Node): Node
¶
Code
setupUV( builder, uvNode ) {
const texture = this.value;
if ( builder.isFlipY() && ( texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true ) ) {
if ( this.sampler ) {
uvNode = uvNode.flipY();
} else {
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
}
}
return uvNode;
}