Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions examples/jsm/lighting/vxgi/VXGINode.js
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,8 @@ class VXGINode extends TempNode {
*/
dispose() {

super.dispose();

this._renderTarget.dispose();
this._material.dispose();
this.volume.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/AfterImageNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,8 @@ class AfterImageNode extends TempNode {
*/
dispose() {

super.dispose();

this._compRT.dispose();
this._oldRT.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/BilateralBlurNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,8 @@ class BilateralBlurNode extends TempNode {
*/
dispose() {

super.dispose();

this._horizontalRT.dispose();
this._verticalRT.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/BloomNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,8 @@ class BloomNode extends TempNode {
*/
dispose() {

super.dispose();

for ( let i = 0; i < this._renderTargetsHorizontal.length; i ++ ) {

this._renderTargetsHorizontal[ i ].dispose();
Expand Down
4 changes: 2 additions & 2 deletions examples/jsm/tsl/display/DenoiseNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,10 @@ class DenoiseNode extends TempNode {
*/
dispose() {

this._noiseTexture.dispose();

super.dispose();

this._noiseTexture.dispose();

}

}
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/DepthOfFieldNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,8 @@ class DepthOfFieldNode extends TempNode {
*/
dispose() {

super.dispose();

this._CoCRT.dispose();
this._CoCBlurredRT.dispose();
this._blur64RT.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/FSR1Node.js
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,8 @@ class FSR1Node extends TempNode {
*/
dispose() {

super.dispose();

this._easuRT.dispose();
this._rcasRT.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/GTAONode.js
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,8 @@ class GTAONode extends TempNode {
*/
dispose() {

super.dispose();

this._aoRenderTarget.dispose();

this._noiseTexture.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/GodraysNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -593,6 +593,8 @@ class GodraysNode extends TempNode {
*/
dispose() {

super.dispose();

this._godraysRenderTarget.dispose();

this._material.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/LensflareNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ class LensflareNode extends TempNode {
*/
dispose() {

super.dispose();

this._renderTarget.dispose();
this._material.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/OutlineNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -748,6 +748,8 @@ class OutlineNode extends TempNode {
*/
dispose() {

super.dispose();

this.selectedObjects.length = 0;

this._renderTargetDepthBuffer.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/RecurrentDenoiseNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -890,6 +890,8 @@ class RecurrentDenoiseNode extends TempNode {

dispose() {

super.dispose();

this._renderTarget.dispose();
this._material.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/SMAANode.js
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,8 @@ class SMAANode extends TempNode {
*/
dispose() {

super.dispose();

this._renderTargetEdges.dispose();
this._renderTargetWeights.dispose();
this._renderTargetBlend.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/SSAONode.js
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,8 @@ class SSAONode extends TempNode {
*/
dispose() {

super.dispose();

this._aoRenderTarget.dispose();
this._blurRenderTarget.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/SSGINode.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,8 @@ class SSGINode extends TempNode {
*/
dispose() {

super.dispose();

this._ssgiRenderTarget.dispose();

this._material.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/SSRNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -1317,6 +1317,8 @@ class SSRNode extends TempNode {
*/
dispose() {

super.dispose();

this._ssrRenderTarget.dispose();
this._blurRenderTarget.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/SSSNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,8 @@ class SSSNode extends TempNode {
*/
dispose() {

super.dispose();

this._sssRenderTarget.dispose();

this._material.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/SharpenNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,8 @@ class SharpenNode extends TempNode {
*/
dispose() {

super.dispose();

this._renderTarget.dispose();

if ( this._material !== null ) this._material.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/TAAUNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -791,6 +791,8 @@ class TAAUNode extends TempNode {
*/
dispose() {

super.dispose();

this._historyRenderTarget.dispose();
this._resolveRenderTarget.dispose();
this._previousDepthRenderTarget.dispose();
Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/TRAANode.js
Original file line number Diff line number Diff line change
Expand Up @@ -722,6 +722,8 @@ class TRAANode extends TempNode {
*/
dispose() {

super.dispose();

this._historyRenderTarget.dispose();
this._resolveRenderTarget.dispose();

Expand Down
2 changes: 2 additions & 0 deletions examples/jsm/tsl/display/TemporalReprojectNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -983,6 +983,8 @@ class TemporalReprojectNode extends TempNode {

dispose() {

super.dispose();

this._previousNormalTexture.dispose();

if ( this._previousDepthNode.value !== this._historyRenderTarget.depthTexture ) {
Expand Down
3 changes: 2 additions & 1 deletion src/nodes/accessors/StorageTextureNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,8 @@ class StorageTextureNode extends TextureNode {

const textureProperty = super.generate( builder, 'property' );
const uvSnippet = uvNode.build( builder, this.value.is3DTexture === true ? 'uvec3' : 'uvec2' );
const storeSnippet = storeNode.build( builder, 'vec4' );
const storeType = builder.getTypeFromLength( 4, builder.getComponentTypeFromTexture( this.value ) );
const storeSnippet = storeNode.build( builder, storeType );
const depthSnippet = depthNode ? depthNode.build( builder, 'int' ) : null;

const snippet = builder.generateTextureStore( this.value, textureProperty, uvSnippet, depthSnippet, storeSnippet );
Expand Down
2 changes: 2 additions & 0 deletions src/nodes/display/PassNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,8 @@ class PassNode extends TempNode {
*/
dispose() {

super.dispose();

this.renderTarget.dispose();

}
Expand Down
9 changes: 0 additions & 9 deletions src/nodes/gpgpu/ComputeNode.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,15 +110,6 @@ class ComputeNode extends Node {

}

/**
* Executes the `dispose` event for this node.
*/
dispose() {

this.dispatchEvent( { type: 'dispose' } );

}

/**
* Sets the {@link ComputeNode#name} property.
*
Expand Down
2 changes: 1 addition & 1 deletion src/renderers/webgl-fallback/WebGLBackend.js
Original file line number Diff line number Diff line change
Expand Up @@ -1266,7 +1266,7 @@ class WebGLBackend extends Backend {

const renderTarget = this._currentContext.renderTarget;

const pixelRatio = renderTarget !== null ? 1 : this.renderer.getPixelRatio();
const pixelRatio = ( renderTarget === null || renderTarget.isPostProcessingRenderTarget === true ) ? this.renderer.getPixelRatio() : 1;
const isRenderCameraDepthArray = this._isRenderCameraDepthArray( this._currentContext );
const prevActiveCubeFace = this._currentContext.activeCubeFace;

Expand Down
19 changes: 3 additions & 16 deletions src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { error } from '../../../utils.js';

const glslPolyfills = {
bitcast_int_uint: new CodeNode( /* glsl */'uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }' ),
bitcast_uint_int: new CodeNode( /* glsl */'uint tsl_bitcast_uint_to_int ( uint x ) { return floatBitsToInt( uintBitsToFloat ( x ) ); }' ),
bitcast_uint_int: new CodeNode( /* glsl */'int tsl_bitcast_uint_to_int ( uint x ) { return floatBitsToInt( uintBitsToFloat ( x ) ); }' ),
textureGather: new CodeNode( /* glsl */`
vec4 tsl_textureGather( const int comp, sampler2D map, vec2 coord, ivec2 offset, bool flipY ) {
if ( flipY ) offset.y = - offset.y;
Expand Down Expand Up @@ -873,21 +873,8 @@ ${ flowData.code }
const textureNode = uniform.node;
const texture = textureNode.value;

let typePrefix = '';

if ( texture.isDataTexture === true || texture.isData3DTexture === true ) {

if ( texture.type === UnsignedIntType ) {

typePrefix = 'u';

} else if ( texture.type === IntType ) {

typePrefix = 'i';

}

}
const componentType = this.getComponentTypeFromTexture( texture );
const typePrefix = componentType === 'float' ? '' : componentType.charAt( 0 );

if ( uniform.type === 'texture3D' && texture.isArrayTexture === false ) {

Expand Down
3 changes: 2 additions & 1 deletion src/renderers/webgpu/WebGPUBackend.js
Original file line number Diff line number Diff line change
Expand Up @@ -2257,7 +2257,8 @@ class WebGPUBackend extends Backend {

}

const pixelRatio = context.renderTarget !== null ? 1 : this.renderer.getPixelRatio();
const renderTarget = context.renderTarget;
const pixelRatio = ( renderTarget === null || renderTarget.isPostProcessingRenderTarget === true ) ? this.renderer.getPixelRatio() : 1;
const indexPos = cameraIndex ? bindings.indexOf( cameraIndex ) : - 1;

for ( let i = 0, len = cameras.length; i < len; i ++ ) {
Expand Down
6 changes: 4 additions & 2 deletions src/renderers/webgpu/nodes/WGSLNodeBuilder.js
Original file line number Diff line number Diff line change
Expand Up @@ -2202,11 +2202,13 @@ ${ flowData.code }

} else if ( texture.isArrayTexture === true || texture.isDataArrayTexture === true || texture.isCompressedArrayTexture === true ) {

textureType = 'texture_2d_array<f32>';
const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
textureType = `texture_2d_array<${ componentPrefix }32>`;

} else if ( texture.is3DTexture === true || texture.isData3DTexture === true ) {

textureType = 'texture_3d<f32>';
const componentPrefix = this.getComponentTypeFromTexture( texture ).charAt( 0 );
textureType = `texture_3d<${ componentPrefix }32>`;

} else {

Expand Down
13 changes: 13 additions & 0 deletions test/unit/addons/tsl/TSLBitOps.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,19 @@ export default QUnit.module( 'TSL', () => {

} );

gpuTest( 'bitcast() reinterprets bits between int and uint', ( { assert } ) => {

// -1's two's-complement bit pattern (0xFFFFFFFF) read as unsigned
// is the largest uint32 value.
assert.eq( bitcast( int( - 1 ), 'uint' ), uint( 4294967295 ), 'bitcast(-1, "uint") == 0xFFFFFFFF' );
assert.eq( bitcast( uint( 4294967295 ), 'int' ), int( - 1 ), 'bitcast(0xFFFFFFFF, "int") == -1' );

// Round trip: bitcast is lossless reinterpretation, so converting
// out and back must recover the exact original value.
assert.eq( bitcast( bitcast( int( - 42 ), 'uint' ), 'int' ), int( - 42 ), 'bitcast round trip recovers the exact int' );

} );

} );

QUnit.module( 'bit counting', () => {
Expand Down
Loading