Buckets:
| import TextureNode from '../accessors/TextureNode.js'; | |
| import { NodeUpdateType } from '../core/constants.js'; | |
| import { nodeProxy } from '../tsl/TSLBase.js'; | |
| import { screenUV } from './ScreenNode.js'; | |
| import { Vector2 } from '../../math/Vector2.js'; | |
| import { FramebufferTexture } from '../../textures/FramebufferTexture.js'; | |
| import { LinearMipmapLinearFilter } from '../../constants.js'; | |
| const _size = /*@__PURE__*/ new Vector2(); | |
| /** | |
| * A special type of texture node which represents the data of the current viewport | |
| * as a texture. The module extracts data from the current bound framebuffer with | |
| * a copy operation so no extra render pass is required to produce the texture data | |
| * (which is good for performance). `ViewportTextureNode` can be used as an input for a | |
| * variety of effects like refractive or transmissive materials. | |
| * | |
| * @augments TextureNode | |
| */ | |
| class ViewportTextureNode extends TextureNode { | |
| static get type() { | |
| return 'ViewportTextureNode'; | |
| } | |
| /** | |
| * Constructs a new viewport texture node. | |
| * | |
| * @param {Node} [uvNode=screenUV] - The uv node. | |
| * @param {?Node} [levelNode=null] - The level node. | |
| * @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically. | |
| */ | |
| constructor( uvNode = screenUV, levelNode = null, framebufferTexture = null ) { | |
| if ( framebufferTexture === null ) { | |
| framebufferTexture = new FramebufferTexture(); | |
| framebufferTexture.minFilter = LinearMipmapLinearFilter; | |
| } | |
| super( framebufferTexture, uvNode, levelNode ); | |
| /** | |
| * Whether to generate mipmaps or not. | |
| * | |
| * @type {boolean} | |
| * @default false | |
| */ | |
| this.generateMipmaps = false; | |
| /** | |
| * This flag can be used for type testing. | |
| * | |
| * @type {boolean} | |
| * @readonly | |
| * @default true | |
| */ | |
| this.isOutputTextureNode = true; | |
| /** | |
| * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the | |
| * scene once per frame in its {@link ViewportTextureNode#updateBefore} method. | |
| * | |
| * @type {string} | |
| * @default 'frame' | |
| */ | |
| this.updateBeforeType = NodeUpdateType.FRAME; | |
| } | |
| updateBefore( frame ) { | |
| const renderer = frame.renderer; | |
| renderer.getDrawingBufferSize( _size ); | |
| // | |
| const framebufferTexture = this.value; | |
| if ( framebufferTexture.image.width !== _size.width || framebufferTexture.image.height !== _size.height ) { | |
| framebufferTexture.image.width = _size.width; | |
| framebufferTexture.image.height = _size.height; | |
| framebufferTexture.needsUpdate = true; | |
| } | |
| // | |
| const currentGenerateMipmaps = framebufferTexture.generateMipmaps; | |
| framebufferTexture.generateMipmaps = this.generateMipmaps; | |
| renderer.copyFramebufferToTexture( framebufferTexture ); | |
| framebufferTexture.generateMipmaps = currentGenerateMipmaps; | |
| } | |
| clone() { | |
| const viewportTextureNode = new this.constructor( this.uvNode, this.levelNode, this.value ); | |
| viewportTextureNode.generateMipmaps = this.generateMipmaps; | |
| return viewportTextureNode; | |
| } | |
| } | |
| export default ViewportTextureNode; | |
| /** | |
| * TSL function for creating a viewport texture node. | |
| * | |
| * @tsl | |
| * @function | |
| * @param {?Node} [uvNode=screenUV] - The uv node. | |
| * @param {?Node} [levelNode=null] - The level node. | |
| * @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically. | |
| * @returns {ViewportTextureNode} | |
| */ | |
| export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode ).setParameterLength( 0, 3 ); | |
| /** | |
| * TSL function for creating a viewport texture node with enabled mipmap generation. | |
| * | |
| * @tsl | |
| * @function | |
| * @param {?Node} [uvNode=screenUV] - The uv node. | |
| * @param {?Node} [levelNode=null] - The level node. | |
| * @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically. | |
| * @returns {ViewportTextureNode} | |
| */ | |
| export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } ).setParameterLength( 0, 3 ); | |
Xet Storage Details
- Size:
- 4.15 kB
- Xet hash:
- 931a14d53bf5d2ef6776ba5ccdba9153fc6b0ae2b4e9d57960d7ae845ff87e01
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.