diff --git a/types/three/examples/jsm/loaders/LUT3dlLoader.d.ts b/types/three/examples/jsm/loaders/LUT3dlLoader.d.ts index dd45723cc..68e8e62c1 100644 --- a/types/three/examples/jsm/loaders/LUT3dlLoader.d.ts +++ b/types/three/examples/jsm/loaders/LUT3dlLoader.d.ts @@ -1,9 +1,9 @@ -import { Loader, LoadingManager, DataTexture, DataTexture3D } from '../../../src/Three'; +import { Loader, LoadingManager, DataTexture, Data3DTexture } from '../../../src/Three'; export interface LUT3dlResult { size: number; texture: DataTexture; - texture3D: DataTexture3D; + texture3D: Data3DTexture; } export class LUT3dlLoader extends Loader { diff --git a/types/three/examples/jsm/loaders/LUTCubeLoader.d.ts b/types/three/examples/jsm/loaders/LUTCubeLoader.d.ts index 36e0cdb0a..16d55851a 100644 --- a/types/three/examples/jsm/loaders/LUTCubeLoader.d.ts +++ b/types/three/examples/jsm/loaders/LUTCubeLoader.d.ts @@ -1,4 +1,4 @@ -import { Loader, LoadingManager, Vector3, DataTexture, DataTexture3D } from '../../../src/Three'; +import { Loader, LoadingManager, Vector3, DataTexture, Data3DTexture } from '../../../src/Three'; export interface LUTCubeResult { title: string; @@ -6,7 +6,7 @@ export interface LUTCubeResult { domainMin: Vector3; domainMax: Vector3; texture: DataTexture; - texture3D: DataTexture3D; + texture3D: Data3DTexture; } export class LUTCubeLoader extends Loader { diff --git a/types/three/examples/jsm/loaders/VOXLoader.d.ts b/types/three/examples/jsm/loaders/VOXLoader.d.ts index cb1371258..f281e3721 100644 --- a/types/three/examples/jsm/loaders/VOXLoader.d.ts +++ b/types/three/examples/jsm/loaders/VOXLoader.d.ts @@ -1,4 +1,4 @@ -import { DataTexture3D, Mesh, Loader, LoadingManager } from '../../../src/Three'; +import { Data3DTexture, Mesh, Loader, LoadingManager } from '../../../src/Three'; export interface Chunk { palette: number[]; @@ -23,6 +23,6 @@ export class VOXMesh extends Mesh { constructor(chunk: Chunk); } -export class VOXDataTexture3D extends DataTexture3D { +export class VOXData3DTexture extends Data3DTexture { constructor(chunk: Chunk); } diff --git a/types/three/examples/jsm/postprocessing/LUTPass.d.ts b/types/three/examples/jsm/postprocessing/LUTPass.d.ts index 6f4f74d00..dd83c7c42 100644 --- a/types/three/examples/jsm/postprocessing/LUTPass.d.ts +++ b/types/three/examples/jsm/postprocessing/LUTPass.d.ts @@ -1,13 +1,13 @@ -import { DataTexture, DataTexture3D } from '../../../src/Three'; +import { DataTexture, Data3DTexture } from '../../../src/Three'; import { ShaderPass } from './ShaderPass'; export interface LUTPassParameters { - lut?: DataTexture | DataTexture3D; + lut?: DataTexture | Data3DTexture; intensity?: number; } export class LUTPass extends ShaderPass { - lut?: DataTexture | DataTexture3D; + lut?: DataTexture | Data3DTexture; intensity?: number; constructor(params: LUTPassParameters); } diff --git a/types/three/src/Three.d.ts b/types/three/src/Three.d.ts index e275cf0d5..5e0455cb3 100644 --- a/types/three/src/Three.d.ts +++ b/types/three/src/Three.d.ts @@ -181,6 +181,8 @@ export * from './renderers/WebGLMultipleRenderTargets'; export * from './renderers/WebGLRenderTarget'; export * from './renderers/WebGLRenderer'; export * from './renderers/WebGL1Renderer'; +export * from './renderers/WebGL3DRenderTarget'; +export * from './renderers/WebGLArrayRenderTarget'; export * from './renderers/shaders/ShaderLib'; export * from './renderers/shaders/UniformsLib'; export * from './renderers/shaders/UniformsUtils'; @@ -222,6 +224,8 @@ export * from './textures/DataTexture2DArray'; export * from './textures/DataTexture3D'; export * from './textures/CompressedTexture'; export * from './textures/CubeTexture'; +export * from './textures/Data3DTexture'; +export * from './textures/DataArrayTexture'; export * from './textures/CanvasTexture'; export * from './textures/DepthTexture'; export * from './textures/FramebufferTexture'; diff --git a/types/three/src/renderers/WebGL3DRenderTarget.d.ts b/types/three/src/renderers/WebGL3DRenderTarget.d.ts new file mode 100644 index 000000000..ccdf09b02 --- /dev/null +++ b/types/three/src/renderers/WebGL3DRenderTarget.d.ts @@ -0,0 +1,28 @@ +import { Data3DTexture } from '../textures/Data3DTexture'; +import { WebGLRenderTarget } from './WebGLRenderTarget'; + +/** + * Represents a three-dimensional render target. + */ +export class WebGL3DRenderTarget extends WebGLRenderTarget { + /** + * Creates a new WebGL3DRenderTarget. + * + * @param width the width of the render target, in pixels. + * @param height the height of the render target, in pixels. + * @param depth the depth of the render target. + */ + constructor(width: number, height: number, depth: number); + + /** + * The depth of the render target. + */ + depth: number; + + /** + * The texture property is overwritten with an instance of {@link Data3DTexture}. + */ + texture: Data3DTexture; + + readonly isWebGL3DRenderTarget: true; +} diff --git a/types/three/src/renderers/WebGLArrayRenderTarget.d.ts b/types/three/src/renderers/WebGLArrayRenderTarget.d.ts new file mode 100644 index 000000000..35344e848 --- /dev/null +++ b/types/three/src/renderers/WebGLArrayRenderTarget.d.ts @@ -0,0 +1,28 @@ +import { DataArrayTexture } from '../textures/DataArrayTexture'; +import { WebGLRenderTarget } from './WebGLRenderTarget'; + +/** + * This type of render target represents an array of textures. + */ +export class WebGLArrayRenderTarget extends WebGLRenderTarget { + /** + * Creates a new WebGLArrayRenderTarget. + * + * @param width the width of the render target, in pixels. + * @param height the height of the render target, in pixels. + * @param depth the depth/layer count of the render target. + */ + constructor(width: number, height: number, depth: number); + + /** + * The depth of the render target. + */ + depth: number; + + /** + * The texture property is overwritten with an instance of {@link DataArrayTexture}. + */ + texture: DataArrayTexture; + + readonly isWebGLArrayRenderTarget: true; +} diff --git a/types/three/src/renderers/WebGLRenderTarget.d.ts b/types/three/src/renderers/WebGLRenderTarget.d.ts index c2f22041d..e6e7ab919 100644 --- a/types/three/src/renderers/WebGLRenderTarget.d.ts +++ b/types/three/src/renderers/WebGLRenderTarget.d.ts @@ -92,7 +92,6 @@ export class WebGLRenderTarget extends EventDispatcher { */ generateMipmaps: any; - setTexture(texture: Texture): void; setSize(width: number, height: number, depth?: number): void; clone(): this; copy(source: WebGLRenderTarget): this; diff --git a/types/three/src/renderers/WebGLRenderer.d.ts b/types/three/src/renderers/WebGLRenderer.d.ts index 98b53821d..c383887f4 100644 --- a/types/three/src/renderers/WebGLRenderer.d.ts +++ b/types/three/src/renderers/WebGLRenderer.d.ts @@ -5,7 +5,6 @@ import { WebGLInfo } from './webgl/WebGLInfo'; import { WebGLShadowMap } from './webgl/WebGLShadowMap'; import { WebGLCapabilities } from './webgl/WebGLCapabilities'; import { WebGLProperties } from './webgl/WebGLProperties'; -import { WebGLProgram } from './webgl/WebGLProgram'; import { WebGLRenderLists } from './webgl/WebGLRenderLists'; import { WebGLState } from './webgl/WebGLState'; import { Vector2 } from './../math/Vector2'; @@ -19,11 +18,11 @@ import { ToneMapping, ShadowMapType, CullFace, TextureEncoding } from '../consta import { WebXRManager } from '../renderers/webxr/WebXRManager'; import { BufferGeometry } from './../core/BufferGeometry'; import { Texture } from '../textures/Texture'; -import { DataTexture3D } from '../textures/DataTexture3D'; +import { Data3DTexture } from '../textures/Data3DTexture'; import { XRAnimationLoopCallback } from './webxr/WebXR'; import { Vector3 } from '../math/Vector3'; import { Box3 } from '../math/Box3'; -import { DataTexture2DArray } from '../textures/DataTexture2DArray'; +import { DataArrayTexture } from '../textures/DataArrayTexture'; import { ColorRepresentation } from '../utils'; export interface Renderer { @@ -437,7 +436,7 @@ export class WebGLRenderer implements Renderer { sourceBox: Box3, position: Vector3, srcTexture: Texture, - dstTexture: DataTexture3D | DataTexture2DArray, + dstTexture: Data3DTexture | DataArrayTexture, level?: number, ): void; diff --git a/types/three/src/textures/Data3DTexture.d.ts b/types/three/src/textures/Data3DTexture.d.ts new file mode 100644 index 000000000..52dfd17b6 --- /dev/null +++ b/types/three/src/textures/Data3DTexture.d.ts @@ -0,0 +1,33 @@ +import { Texture } from './Texture'; +import { TextureFilter } from '../constants'; + +export class Data3DTexture extends Texture { + constructor(data: BufferSource, width: number, height: number, depth: number); + + /** + * @default THREE.NearestFilter + */ + magFilter: TextureFilter; + + /** + * @default THREE.NearestFilter + */ + minFilter: TextureFilter; + + /** + * @default THREE.ClampToEdgeWrapping + */ + wrapR: boolean; + + /** + * @default false + */ + flipY: boolean; + + /** + * @default false + */ + generateMipmaps: boolean; + + readonly isData3DTexture: true; +} diff --git a/types/three/src/textures/DataArrayTexture.d.ts b/types/three/src/textures/DataArrayTexture.d.ts new file mode 100644 index 000000000..594c236eb --- /dev/null +++ b/types/three/src/textures/DataArrayTexture.d.ts @@ -0,0 +1,33 @@ +import { Texture } from './Texture'; +import { TextureFilter } from '../constants'; + +export class DataArrayTexture extends Texture { + constructor(data?: BufferSource, width?: number, height?: number, depth?: number); + + /** + * @default THREE.NearestFilter + */ + magFilter: TextureFilter; + + /** + * @default THREE.NearestFilter + */ + minFilter: TextureFilter; + + /** + * @default THREE.ClampToEdgeWrapping + */ + wrapR: boolean; + + /** + * @default false + */ + flipY: boolean; + + /** + * @default false + */ + generateMipmaps: boolean; + + readonly isDataArrayTexture: true; +} diff --git a/types/three/src/textures/DataTexture2DArray.d.ts b/types/three/src/textures/DataTexture2DArray.d.ts index 82ebf7cbd..58fd5da34 100644 --- a/types/three/src/textures/DataTexture2DArray.d.ts +++ b/types/three/src/textures/DataTexture2DArray.d.ts @@ -1,33 +1,6 @@ -import { Texture } from './Texture'; -import { TextureFilter } from '../constants'; +import { DataArrayTexture } from './DataArrayTexture'; -export class DataTexture2DArray extends Texture { - constructor(data?: BufferSource, width?: number, height?: number, depth?: number); - - /** - * @default THREE.NearestFilter - */ - magFilter: TextureFilter; - - /** - * @default THREE.NearestFilter - */ - minFilter: TextureFilter; - - /** - * @default THREE.ClampToEdgeWrapping - */ - wrapR: boolean; - - /** - * @default false - */ - flipY: boolean; - - /** - * @default false - */ - generateMipmaps: boolean; - - readonly isDataTexture2DArray: true; -} +/** + * @deprecated THREE.DataTexture2DArray has been renamed to DataArrayTexture. + */ +export class DataTexture2DArray extends DataArrayTexture {} diff --git a/types/three/src/textures/DataTexture3D.d.ts b/types/three/src/textures/DataTexture3D.d.ts index 27c0acf48..0c3bb918c 100644 --- a/types/three/src/textures/DataTexture3D.d.ts +++ b/types/three/src/textures/DataTexture3D.d.ts @@ -1,33 +1,6 @@ -import { Texture } from './Texture'; -import { TextureFilter } from '../constants'; +import { Data3DTexture } from './Data3DTexture'; -export class DataTexture3D extends Texture { - constructor(data: BufferSource, width: number, height: number, depth: number); - - /** - * @default THREE.NearestFilter - */ - magFilter: TextureFilter; - - /** - * @default THREE.NearestFilter - */ - minFilter: TextureFilter; - - /** - * @default THREE.ClampToEdgeWrapping - */ - wrapR: boolean; - - /** - * @default false - */ - flipY: boolean; - - /** - * @default false - */ - generateMipmaps: boolean; - - readonly isDataTexture3D: true; -} +/** + * @deprecated THREE.DataTexture3D has been renamed to Data3DTexture. + */ +export class DataTexture3D extends Data3DTexture {} diff --git a/types/three/test/loaders/loaders-voxloader.ts b/types/three/test/loaders/loaders-voxloader.ts index e2d05cfe2..38ebc7790 100644 --- a/types/three/test/loaders/loaders-voxloader.ts +++ b/types/three/test/loaders/loaders-voxloader.ts @@ -1,6 +1,6 @@ import * as THREE from 'three'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; -import { VOXLoader, VOXDataTexture3D } from 'three/examples/jsm/loaders/VOXLoader'; +import { VOXLoader, VOXData3DTexture } from 'three/examples/jsm/loaders/VOXLoader'; import { WEBGL } from 'three/examples/jsm/WebGL'; @@ -150,7 +150,7 @@ function init() { const material = new THREE.RawShaderMaterial({ glslVersion: THREE.GLSL3, uniforms: { - map: { value: new VOXDataTexture3D(chunk) }, + map: { value: new VOXData3DTexture(chunk) }, cameraPos: { value: new THREE.Vector3() }, }, vertexShader, diff --git a/types/three/test/materials/materials-texture3d-partialupdate.ts b/types/three/test/materials/materials-texture3d-partialupdate.ts index a3569e81c..ef7622976 100644 --- a/types/three/test/materials/materials-texture3d-partialupdate.ts +++ b/types/three/test/materials/materials-texture3d-partialupdate.ts @@ -15,7 +15,7 @@ let scene: THREE.Scene; let camera: THREE.PerspectiveCamera; let mesh: THREE.Mesh; let prevTime = performance.now(); -let cloudTexture: THREE.DataTexture3D | null = null; +let cloudTexture: THREE.Data3DTexture | null = null; init(); animate(); @@ -44,7 +44,7 @@ function generateCloudTexture(size: number, scaleFactor = 1.0) { } } - return new THREE.DataTexture3D(data, size, size, size); + return new THREE.Data3DTexture(data, size, size, size); } function init() { @@ -82,7 +82,7 @@ function init() { // Texture - const texture = new THREE.DataTexture3D( + const texture = new THREE.Data3DTexture( new Uint8Array(INITIAL_CLOUD_SIZE * INITIAL_CLOUD_SIZE * INITIAL_CLOUD_SIZE).fill(0), INITIAL_CLOUD_SIZE, INITIAL_CLOUD_SIZE, @@ -290,7 +290,7 @@ function animate() { const scaleFactor = (Math.random() + 0.5) * 0.5; const source = generateCloudTexture(perElementPaddedSize, scaleFactor); - renderer.copyTextureToTexture3D(box, position, source, cloudTexture as THREE.DataTexture3D); + renderer.copyTextureToTexture3D(box, position, source, cloudTexture as THREE.Data3DTexture); prevTime = time; diff --git a/types/three/test/renderers/renderers-renderTarget-texture2DArray.ts b/types/three/test/renderers/renderers-renderTarget-texture2DArray.ts index 6459e1ea2..588d591a4 100644 --- a/types/three/test/renderers/renderers-renderTarget-texture2DArray.ts +++ b/types/three/test/renderers/renderers-renderTarget-texture2DArray.ts @@ -84,12 +84,8 @@ const App = { const postProcessScene = new THREE.Scene(); const postProcessCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1); -const renderTargetTexture = new THREE.DataTexture2DArray(); -renderTargetTexture.format = THREE.RedFormat; -renderTargetTexture.type = THREE.UnsignedByteType; - -const renderTarget = new THREE.WebGLRenderTarget(DIMENSIONS.width, DIMENSIONS.height); -renderTarget.setTexture(renderTargetTexture); +const renderTarget = new THREE.WebGLArrayRenderTarget(DIMENSIONS.width, DIMENSIONS.height, DIMENSIONS.depth); +renderTarget.texture.format = THREE.RedFormat; const postProcessMaterial = new THREE.ShaderMaterial({ uniforms: { @@ -145,7 +141,7 @@ function init() { const zip = unzipSync(new Uint8Array(data as ArrayBuffer)); const array = new Uint8Array(zip['head256x256x109'].buffer); - const texture = new THREE.DataTexture2DArray(array, DIMENSIONS.width, DIMENSIONS.height, DIMENSIONS.depth); + const texture = new THREE.DataArrayTexture(array, DIMENSIONS.width, DIMENSIONS.height, DIMENSIONS.depth); texture.format = THREE.RedFormat; texture.type = THREE.UnsignedByteType; @@ -223,7 +219,7 @@ function animate() { /** * Renders the 2D array into the render target `renderTarget`. */ -function renderTo2DArray() { +function renderToArrayTexture() { const layer = Math.floor((mesh.material as THREE.ShaderMaterial).uniforms['depth'].value); postProcessMaterial.uniforms.uDepth.value = layer; renderer.setRenderTarget(renderTarget, layer); @@ -232,9 +228,9 @@ function renderTo2DArray() { } function render() { - // Step 1 - Render the input DataTexture2DArray into a - // DataTexture2DArray render target. - renderTo2DArray(); + // Step 1 - Render the input DataArrayTexture into a + // DataArrayTexture render target. + renderToArrayTexture(); // Step 2 - Renders the scene containing the plane with a material // sampling the render target texture.