From 6f3b98ad793f4a54e906ce19ef0d43f770d29dbe Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Fri, 15 Mar 2024 09:59:30 -0400 Subject: [PATCH] WebGPURenderer: PMREM (#858) * Add PMREMNode * Update three.js * Add examples * Changes * Delete examples * Format * Fix extension --- examples-testing/index.js | 3 +++ three.js | 2 +- types/three/examples/jsm/nodes/Nodes.d.ts | 4 +++- .../examples/jsm/nodes/pmrem/PMREMNode.d.ts | 20 +++++++++++++++++++ .../jsm/nodes/utils/SpecularMIPLevelNode.d.ts | 12 ----------- .../common/extras/PMREMGenerator.d.ts | 8 ++++++++ 6 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 types/three/examples/jsm/nodes/pmrem/PMREMNode.d.ts delete mode 100644 types/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.d.ts create mode 100644 types/three/examples/jsm/renderers/common/extras/PMREMGenerator.d.ts diff --git a/examples-testing/index.js b/examples-testing/index.js index 70b12de3f..7b7634d99 100644 --- a/examples-testing/index.js +++ b/examples-testing/index.js @@ -95,6 +95,9 @@ const exceptionList = [ 'webgpu_textures_2d-array', 'webgpu_tsl_editor', 'webgpu_tsl_transpiler', + 'webgpu_pmrem_cubemap', + 'webgpu_pmrem_equirectangular', + 'webgpu_pmrem_scene', 'webgpu_postprocessing_anamorphic', 'webgpu_mirror', 'webgpu_multisampled_renderbuffers', diff --git a/three.js b/three.js index ef80ac74e..12b08b230 160000 --- a/three.js +++ b/three.js @@ -1 +1 @@ -Subproject commit ef80ac74e6716a50104a57d8add6c8a950bff8d7 +Subproject commit 12b08b230c36c5fc4b03aed61dc5b8bc6be5f328 diff --git a/types/three/examples/jsm/nodes/Nodes.d.ts b/types/three/examples/jsm/nodes/Nodes.d.ts index 0cd6f27b4..8fcb339b6 100644 --- a/types/three/examples/jsm/nodes/Nodes.d.ts +++ b/types/three/examples/jsm/nodes/Nodes.d.ts @@ -169,7 +169,6 @@ export { default as ReflectorNode, reflector, ReflectorNodeParameters } from "./ export { default as RemapNode, remap, remapClamp } from "./utils/RemapNode.js"; export { default as RotateNode, rotate } from "./utils/RotateNode.js"; export { default as RotateUVNode, rotateUV } from "./utils/RotateUVNode.js"; -export { default as SpecularMIPLevelNode, specularMIPLevel } from "./utils/SpecularMIPLevelNode.js"; export { default as SplitNode } from "./utils/SplitNode.js"; export { default as SpriteSheetUVNode, spritesheetUV } from "./utils/SpriteSheetUVNode.js"; export { default as StorageArrayElementNode } from "./utils/SpriteSheetUVNode.js"; @@ -375,6 +374,9 @@ export { default as LightsNode, lights } from "./lighting/LightsNode.js"; export { default as PointLightNode } from "./lighting/PointLightNode.js"; export { default as SpotLightNode } from "./lighting/SpotLightNode.js"; +// pmrem +export { default as PMREMNode, pmremTexture } from "./pmrem/PMREMNode.js"; + // procedural export { checker, default as CheckerNode } from "./procedural/CheckerNode.js"; diff --git a/types/three/examples/jsm/nodes/pmrem/PMREMNode.d.ts b/types/three/examples/jsm/nodes/pmrem/PMREMNode.d.ts new file mode 100644 index 000000000..97e8c04ae --- /dev/null +++ b/types/three/examples/jsm/nodes/pmrem/PMREMNode.d.ts @@ -0,0 +1,20 @@ +import { Texture } from "three"; +import Node from "../core/Node.js"; +import TempNode from "../core/TempNode.js"; +import { NodeRepresentation, ShaderNodeObject } from "../shadernode/ShaderNode.js"; + +export default class PMREMNode extends TempNode { + uvNode: Node | null; + levelNode: Node | null; + + constructor(value: Texture, uvNode?: Node | null, levelNode?: Node | null); + + set value(value: Texture); + get value(): Texture; +} + +export const pmremTexture: ( + value: Texture, + uvNode?: NodeRepresentation, + levelNode?: NodeRepresentation, +) => ShaderNodeObject; diff --git a/types/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.d.ts b/types/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.d.ts deleted file mode 100644 index 54f71a5af..000000000 --- a/types/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import TextureNode from "../accessors/TextureNode.js"; -import Node from "../core/Node.js"; -import { ShaderNodeObject } from "../shadernode/ShaderNode.js"; - -export default class SpecularMIPLevelNode extends Node { - textureNode: TextureNode; - roughnessNode: Node | null; - - constructor(textureNode: TextureNode, roughnessNode?: Node | null); -} - -export const specularMIPLevel: () => ShaderNodeObject; diff --git a/types/three/examples/jsm/renderers/common/extras/PMREMGenerator.d.ts b/types/three/examples/jsm/renderers/common/extras/PMREMGenerator.d.ts new file mode 100644 index 000000000..04b335982 --- /dev/null +++ b/types/three/examples/jsm/renderers/common/extras/PMREMGenerator.d.ts @@ -0,0 +1,8 @@ +import { RenderTarget, Scene } from "three"; +import Renderer from "../Renderer.js"; + +export default class PMREMGenerator { + constructor(renderer: Renderer); + + fromScene(scene: Scene, sigma?: number, near?: number, far?: number): RenderTarget; +}