diff --git a/examples/files.json b/examples/files.json index e8f2a2dad86e0e..05fb7eb6b669db 100644 --- a/examples/files.json +++ b/examples/files.json @@ -323,6 +323,7 @@ "webgpu_depth_texture", "webgpu_equirectangular", "webgpu_instance_mesh", + "webgpu_instance_points", "webgpu_instance_uniform", "webgpu_lights_custom", "webgpu_lights_ies_spotlight", @@ -339,7 +340,6 @@ "webgpu_morphtargets", "webgpu_occlusion", "webgpu_particles", - "webgpu_points_fat", "webgpu_rtt", "webgpu_sandbox", "webgpu_shadowmap", diff --git a/examples/jsm/points/FatPointsGeometry.js b/examples/jsm/geometries/InstancedPointsGeometry.js similarity index 93% rename from examples/jsm/points/FatPointsGeometry.js rename to examples/jsm/geometries/InstancedPointsGeometry.js index 1dcffd096f33ef..452478001a1561 100644 --- a/examples/jsm/points/FatPointsGeometry.js +++ b/examples/jsm/geometries/InstancedPointsGeometry.js @@ -9,15 +9,15 @@ import { const _vector = new Vector3(); -class FatPointsGeometry extends InstancedBufferGeometry { +class InstancedPointsGeometry extends InstancedBufferGeometry { constructor() { super(); - this.isFatPointsGeometry = true; + this.isInstancedPointsGeometry = true; - this.type = 'FatPointsGeometry'; + this.type = 'InstancedPointsGeometry'; const positions = [ - 1, 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; const uvs = [ - 1, 1, 1, 1, - 1, - 1, 1, - 1 ]; @@ -171,4 +171,4 @@ class FatPointsGeometry extends InstancedBufferGeometry { } -export { FatPointsGeometry }; +export default InstancedPointsGeometry; diff --git a/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js b/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js new file mode 100644 index 00000000000000..6fca8680b3d188 --- /dev/null +++ b/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js @@ -0,0 +1,21 @@ +import MaterialNode from './MaterialNode.js'; +import { addNodeClass } from '../core/Node.js'; +import { nodeImmutable } from '../shadernode/ShaderNode.js'; + +class InstancedPointsMaterialNode extends MaterialNode { + + setup( /*builder*/ ) { + + return this.getFloat( this.scope ); + + } + +} + +InstancedPointsMaterialNode.POINT_WIDTH = 'pointWidth'; + +export default InstancedPointsMaterialNode; + +export const materialPointWidth = nodeImmutable( InstancedPointsMaterialNode, InstancedPointsMaterialNode.POINT_WIDTH ); + +addNodeClass( 'FatPointsMaterialNode', InstancedPointsMaterialNode ); diff --git a/examples/jsm/nodes/materials/FatPointsNodeMaterial.js b/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js similarity index 93% rename from examples/jsm/nodes/materials/FatPointsNodeMaterial.js rename to examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js index 84501409f203c6..2ad064f60665c1 100644 --- a/examples/jsm/nodes/materials/FatPointsNodeMaterial.js +++ b/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js @@ -7,16 +7,15 @@ import { materialColor, materialPointWidth } from '../accessors/MaterialNode.js' import { modelViewMatrix } from '../accessors/ModelNode.js'; import { positionGeometry } from '../accessors/PositionNode.js'; import { smoothstep } from '../math/MathNode.js'; -import { tslFn, vec2, vec4 } from '../shadernode/ShaderNode.js'; +import { tslFn, vec2, vec4, color } from '../shadernode/ShaderNode.js'; import { uv } from '../accessors/UVNode.js'; import { viewport } from '../display/ViewportNode.js'; -import { color } from 'three/nodes'; import { PointsMaterial } from 'three'; const defaultValues = new PointsMaterial(); -class FatPointsNodeMaterial extends NodeMaterial { +class InstancedPointsNodeMaterial extends NodeMaterial { constructor( params = {} ) { @@ -158,6 +157,6 @@ class FatPointsNodeMaterial extends NodeMaterial { } -export default FatPointsNodeMaterial; +export default InstancedPointsNodeMaterial; -addNodeMaterial( 'FatPointsNodeMaterial', FatPointsNodeMaterial ); +addNodeMaterial( 'InstancedPointsNodeMaterial', InstancedPointsNodeMaterial ); diff --git a/examples/jsm/nodes/materials/Materials.js b/examples/jsm/nodes/materials/Materials.js index 5dcd6672ecc987..ec34d90940a61b 100644 --- a/examples/jsm/nodes/materials/Materials.js +++ b/examples/jsm/nodes/materials/Materials.js @@ -1,7 +1,7 @@ // @TODO: We can simplify "export { default as SomeNode, other, exports } from '...'" to just "export * from '...'" if we will use only named exports export { default as NodeMaterial, addNodeMaterial, createNodeMaterialFromType } from './NodeMaterial.js'; -export { default as FatPointsNodeMaterial } from './FatPointsNodeMaterial.js'; +export { default as InstancedPointsNodeMaterial } from './InstancedPointsNodeMaterial.js'; export { default as LineBasicNodeMaterial } from './LineBasicNodeMaterial.js'; export { default as LineDashedNodeMaterial } from './LineDashedNodeMaterial.js'; export { default as Line2NodeMaterial } from './Line2NodeMaterial.js'; diff --git a/examples/jsm/objects/InstancedPoints.js b/examples/jsm/objects/InstancedPoints.js new file mode 100644 index 00000000000000..6b736295348583 --- /dev/null +++ b/examples/jsm/objects/InstancedPoints.js @@ -0,0 +1,21 @@ +import { + Mesh +} from 'three'; +import InstancedPointsGeometry from '../geometries/InstancedPointsGeometry.js'; +import InstancedPointsNodeMaterial from '../nodes/materials/InstancedPointsNodeMaterial.js'; + +class InstancedPoints extends Mesh { + + constructor( geometry = new InstancedPointsGeometry(), material = new InstancedPointsNodeMaterial() ) { + + super( geometry, material ); + + this.isInstancedPoints = true; + + this.type = 'InstancedPoints'; + + } + +} + +export default InstancedPoints; diff --git a/examples/jsm/points/FatPoints.js b/examples/jsm/points/FatPoints.js deleted file mode 100644 index 784e87d72ac42a..00000000000000 --- a/examples/jsm/points/FatPoints.js +++ /dev/null @@ -1,21 +0,0 @@ -import { - Mesh -} from 'three'; -import { FatPointsGeometry } from '../points/FatPointsGeometry.js'; -import { FatPointsNodeMaterial } from 'three/nodes'; - -class FatPoints extends Mesh { - - constructor( geometry = new FatPointsGeometry(), material = new FatPointsNodeMaterial() ) { - - super( geometry, material ); - - this.isFatPoints = true; - - this.type = 'FatPoints'; - - } - -} - -export { FatPoints }; diff --git a/examples/screenshots/webgpu_points_fat.jpg b/examples/screenshots/webgpu_instance_points.jpg similarity index 100% rename from examples/screenshots/webgpu_points_fat.jpg rename to examples/screenshots/webgpu_instance_points.jpg diff --git a/examples/webgpu_points_fat.html b/examples/webgpu_instance_points.html similarity index 87% rename from examples/webgpu_points_fat.html rename to examples/webgpu_instance_points.html index 802a274124053e..37ce92e9c11626 100644 --- a/examples/webgpu_points_fat.html +++ b/examples/webgpu_instance_points.html @@ -1,7 +1,7 @@
-