Skip to content

⬅️ Back to Table of Contents

📄 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

Code
getInputType( /*builder*/ ) {

        return 'texture3D';

    }

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)
Code
getDefaultUV() {

        return vec3( 0.5, 0.5, 0.5 );

    }

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

Code
setUpdateMatrix( /*value*/ ) { }

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
Code
generateUV( builder, uvNode ) {

        return uvNode.build( builder, 'vec3' );

    }

Texture3DNode.normal(uvNode: any): any

JSDoc:

/**
     * TODO.
     *
     * @param {Node<vec3>} uvNode - The uv node .
     * @return {Node<vec3>} TODO.
     */

Parameters:

  • uvNode any

Returns: any

Calls:

  • normal
Code
normal( uvNode ) {

        return normal( { texture: this, uv: uvNode } );

    }

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
Code
getInputType( /*builder*/ ) {

        return 'texture3D';

    }
getDefaultUV(): any
Code
getDefaultUV() {

        return vec3( 0.5, 0.5, 0.5 );

    }
setUpdateMatrix(): void
Code
setUpdateMatrix( /*value*/ ) { }
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;

    }
generateUV(builder: NodeBuilder, uvNode: Node): string
Code
generateUV( builder, uvNode ) {

        return uvNode.build( builder, 'vec3' );

    }
normal(uvNode: any): any
Code
normal( uvNode ) {

        return normal( { texture: this, uv: uvNode } );

    }