diff --git a/examples-testing/changes.patch b/examples-testing/changes.patch index 88fc3baca..dfbd75dce 100644 --- a/examples-testing/changes.patch +++ b/examples-testing/changes.patch @@ -14060,31 +14060,24 @@ index aa8149e3..f9fd7f00 100644 position.y = matrix.elements[13]; position.z = matrix.elements[14]; diff --git a/examples-testing/examples/webgpu_instance_points.ts b/examples-testing/examples/webgpu_instance_points.ts -index fdc3d614..9a660e06 100644 +index 4b29d389..c793ca87 100644 --- a/examples-testing/examples/webgpu_instance_points.ts +++ b/examples-testing/examples/webgpu_instance_points.ts -@@ -1,5 +1,18 @@ +@@ -1,4 +1,4 @@ -import * as THREE from 'three'; --import { color, storage, Fn, instanceIndex, sin, time, float, uniform, attribute, mix, vec3 } from 'three/tsl'; +import * as THREE from 'three/webgpu'; -+import { -+ color, -+ storage, -+ Fn, -+ instanceIndex, -+ sin, -+ time, -+ float, -+ uniform, -+ attribute, -+ mix, -+ vec3, + import { + color, + storage, +@@ -12,6 +12,7 @@ import { + shapeCircle, + mix, + vec3, + ShaderNodeObject, -+} from 'three/tsl'; + } from 'three/tsl'; import Stats from 'three/addons/libs/stats.module.js'; - -@@ -11,18 +24,28 @@ import InstancedPointsGeometry from 'three/addons/geometries/InstancedPointsGeom +@@ -21,18 +22,28 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import * as GeometryUtils from 'three/addons/utils/GeometryUtils.js'; @@ -14099,7 +14092,7 @@ index fdc3d614..9a660e06 100644 + camera2: THREE.PerspectiveCamera, + controls: OrbitControls, + backgroundNode: ShaderNodeObject; -+let material: THREE.InstancedPointsNodeMaterial; ++let material: THREE.PointsNodeMaterial; +let stats: Stats; +let gui: GUI; +let effectController: { diff --git a/three.js b/three.js index dd4736363..81a30698f 160000 --- a/three.js +++ b/three.js @@ -1 +1 @@ -Subproject commit dd4736363ffaa5d22d8710d1c13bcb0ba742e18f +Subproject commit 81a30698fff7012f919cf215bbca488da0fa87dc diff --git a/types/three/examples/jsm/geometries/InstancedPointsGeometry.d.ts b/types/three/examples/jsm/geometries/InstancedPointsGeometry.d.ts deleted file mode 100644 index 08849fa04..000000000 --- a/types/three/examples/jsm/geometries/InstancedPointsGeometry.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { InstancedBufferGeometry } from "three"; - -declare class InstancedPointsGeometry extends InstancedBufferGeometry { - readonly isInstancedPointsGeometry: true; - - constructor(); - - setPositions(array: Float32Array | ArrayLike): this; - - setColors(array: Float32Array | ArrayLike): this; -} - -export default InstancedPointsGeometry; diff --git a/types/three/examples/jsm/objects/InstancedPoints.d.ts b/types/three/examples/jsm/objects/InstancedPoints.d.ts deleted file mode 100644 index b35c11775..000000000 --- a/types/three/examples/jsm/objects/InstancedPoints.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { InstancedPointsNodeMaterial, Mesh } from "three/webgpu"; -import InstancedPointsGeometry from "../geometries/InstancedPointsGeometry.js"; - -declare class InstancedPoints extends Mesh { - readonly isInstancedPoints: true; - - constructor(geometry?: InstancedPointsGeometry, material?: InstancedPointsNodeMaterial); -} - -export default InstancedPoints; diff --git a/types/three/src/Three.TSL.d.ts b/types/three/src/Three.TSL.d.ts index 1bed071ce..60dd7d866 100644 --- a/types/three/src/Three.TSL.d.ts +++ b/types/three/src/Three.TSL.d.ts @@ -256,7 +256,7 @@ export const materialLineWidth: typeof TSL.materialLineWidth; export const materialMetalness: typeof TSL.materialMetalness; export const materialNormal: typeof TSL.materialNormal; export const materialOpacity: typeof TSL.materialOpacity; -export const materialPointWidth: typeof TSL.materialPointWidth; +export const materialPointSize: typeof TSL.materialPointSize; export const materialReference: typeof TSL.materialReference; export const materialReflectivity: typeof TSL.materialReflectivity; export const materialRefractionRatio: typeof TSL.materialRefractionRatio; @@ -415,6 +415,7 @@ export const shaderStages: typeof TSL.shaderStages; export const shadow: typeof TSL.shadow; export const shadowPositionWorld: typeof TSL.shadowPositionWorld; export const sharedUniformGroup: typeof TSL.sharedUniformGroup; +export const shapeCircle: typeof TSL.shapeCircle; export const sheen: typeof TSL.sheen; export const sheenRoughness: typeof TSL.sheenRoughness; export const shiftLeft: typeof TSL.shiftLeft; diff --git a/types/three/src/materials/nodes/InstancedPointsNodeMaterial.d.ts b/types/three/src/materials/nodes/InstancedPointsNodeMaterial.d.ts deleted file mode 100644 index 9784e7f52..000000000 --- a/types/three/src/materials/nodes/InstancedPointsNodeMaterial.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Color } from "../../math/Color.js"; -import Node from "../../nodes/core/Node.js"; -import { Texture } from "../../textures/Texture.js"; -import { PointsMaterialParameters } from "../PointsMaterial.js"; -import NodeMaterial, { NodeMaterialParameters } from "./NodeMaterial.js"; - -export interface InstancedPointsNodeMaterialParameters extends NodeMaterialParameters, PointsMaterialParameters { - useAlphaToCoverage?: boolean | undefined; - useColor?: boolean | undefined; - pointWidth?: number | undefined; - pointColorNode?: Node | null | undefined; - pointWidthNode?: Node | null | undefined; -} - -declare class InstancedPointsNodeMaterial extends NodeMaterial { - useAlphaToCoverage: boolean; - useColor: boolean | undefined; - pointWidth: number; - pointColorNode: Node | null; - pointWidthNode: Node | null; - - // Properties from LineDashedMaterial - readonly isPointsMaterial: true; - color: Color; - map: Texture | null; - alphaMap: Texture | null; - size: number; - sizeAttenuation: boolean; - - constructor(params?: InstancedPointsNodeMaterialParameters); -} - -export default InstancedPointsNodeMaterial; diff --git a/types/three/src/materials/nodes/NodeMaterials.d.ts b/types/three/src/materials/nodes/NodeMaterials.d.ts index 00a976e39..11732ba5f 100644 --- a/types/three/src/materials/nodes/NodeMaterials.d.ts +++ b/types/three/src/materials/nodes/NodeMaterials.d.ts @@ -1,7 +1,3 @@ -export { - default as InstancedPointsNodeMaterial, - InstancedPointsNodeMaterialParameters, -} from "./InstancedPointsNodeMaterial.js"; export { default as Line2NodeMaterial, Line2NodeMaterialParameters } from "./Line2NodeMaterial.js"; export { default as LineBasicNodeMaterial, LineBasicNodeMaterialParameters } from "./LineBasicNodeMaterial.js"; export { default as LineDashedNodeMaterial, LineDashedNodeMaterialParameters } from "./LineDashedNodeMaterial.js"; diff --git a/types/three/src/materials/nodes/PointsNodeMaterial.d.ts b/types/three/src/materials/nodes/PointsNodeMaterial.d.ts index 836f55a6d..84c82bc05 100644 --- a/types/three/src/materials/nodes/PointsNodeMaterial.d.ts +++ b/types/three/src/materials/nodes/PointsNodeMaterial.d.ts @@ -1,21 +1,14 @@ -import { Color } from "../../math/Color.js"; -import { Texture } from "../../textures/Texture.js"; -import { PointsMaterialParameters } from "../PointsMaterial.js"; -import NodeMaterial, { NodeMaterialParameters } from "./NodeMaterial.js"; +import Node from "../../nodes/core/Node.js"; +import SpriteNodeMaterial, { SpriteNodeMaterialParameters } from "./SpriteNodeMaterial.js"; -export interface PointsNodeMaterialParameters extends NodeMaterialParameters, PointsMaterialParameters { +export interface PointsNodeMaterialParameters extends SpriteNodeMaterialParameters { + sizeNode?: Node | null | undefined; } -export default class PointsNodeMaterial extends NodeMaterial { - readonly isPointsNodeMaterial: true; +export default class PointsNodeMaterial extends SpriteNodeMaterial { + sizeNode: Node | null; - // Properties from PointsMaterial - readonly isPointsMaterial: true; - color: Color; - map: Texture | null; - alphaMap: Texture | null; - size: number; - sizeAttenuation: boolean; + readonly isPointsNodeMaterial: true; constructor(parameters?: PointsNodeMaterialParameters); } diff --git a/types/three/src/nodes/TSL.d.ts b/types/three/src/nodes/TSL.d.ts index ae502b505..fcdba269c 100644 --- a/types/three/src/nodes/TSL.d.ts +++ b/types/three/src/nodes/TSL.d.ts @@ -142,6 +142,9 @@ export * from "./pmrem/PMREMUtils.js"; // procedural export * from "./procedural/Checker.js"; +// shapes +export * from "./shapes/Shapes.js"; + // materialX export * from "./materialx/MaterialXNodes.js"; diff --git a/types/three/src/nodes/accessors/MaterialNode.d.ts b/types/three/src/nodes/accessors/MaterialNode.d.ts index c45dabcf2..0452994fd 100644 --- a/types/three/src/nodes/accessors/MaterialNode.d.ts +++ b/types/three/src/nodes/accessors/MaterialNode.d.ts @@ -37,7 +37,7 @@ export type MaterialNodeScope = | typeof MaterialNode.LINE_GAP_SIZE | typeof MaterialNode.LINE_WIDTH | typeof MaterialNode.LINE_DASH_OFFSET - | typeof MaterialNode.POINT_WIDTH + | typeof MaterialNode.POINT_SIZE | typeof MaterialNode.DISPERSION | typeof MaterialNode.LIGHT_MAP | typeof MaterialNode.AO @@ -77,7 +77,7 @@ export default class MaterialNode extends Node { static LINE_GAP_SIZE: "gapSize"; static LINE_WIDTH: "linewidth"; static LINE_DASH_OFFSET: "dashOffset"; - static POINT_WIDTH: "pointWidth"; + static POINT_SIZE: "size"; static DISPERSION: "dispersion"; static LIGHT_MAP: "light"; static AO: "ao"; @@ -122,7 +122,7 @@ export const materialLineDashSize: ShaderNodeObject; export const materialLineGapSize: ShaderNodeObject; export const materialLineWidth: ShaderNodeObject; export const materialLineDashOffset: ShaderNodeObject; -export const materialPointWidth: ShaderNodeObject; +export const materialPointSize: ShaderNodeObject; export const materialDispersion: ShaderNodeObject; export const materialLightMap: ShaderNodeObject; export const materialAO: ShaderNodeObject; diff --git a/types/three/src/nodes/shapes/Shapes.d.ts b/types/three/src/nodes/shapes/Shapes.d.ts new file mode 100644 index 000000000..9adcbfd82 --- /dev/null +++ b/types/three/src/nodes/shapes/Shapes.d.ts @@ -0,0 +1,4 @@ +import Node from "../core/Node.js"; +import { NodeRepresentation, ShaderNodeObject } from "../tsl/TSLCore.js"; + +export const shapeCircle: (coord?: NodeRepresentation) => ShaderNodeObject;