Skip to content

Commit

Permalink
WebGPURenderer: PMREM (#858)
Browse files Browse the repository at this point in the history
* Add PMREMNode

* Update three.js

* Add examples

* Changes

* Delete examples

* Format

* Fix extension
  • Loading branch information
Methuselah96 committed Mar 15, 2024
1 parent 0544d84 commit 6f3b98a
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 14 deletions.
3 changes: 3 additions & 0 deletions examples-testing/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
2 changes: 1 addition & 1 deletion three.js
Submodule three.js updated 31 files
+3 −0 examples/files.json
+4 −1 examples/jsm/nodes/Nodes.js
+0 −6 examples/jsm/nodes/accessors/TextureNode.js
+14 −2 examples/jsm/nodes/core/NodeBuilder.js
+1 −1 examples/jsm/nodes/lighting/AnalyticLightNode.js
+10 −68 examples/jsm/nodes/lighting/EnvironmentNode.js
+165 −0 examples/jsm/nodes/pmrem/PMREMNode.js
+288 −0 examples/jsm/nodes/pmrem/PMREMUtils.js
+1 −1 examples/jsm/nodes/utils/EquirectUVNode.js
+0 −37 examples/jsm/nodes/utils/SpecularMIPLevelNode.js
+2 −2 examples/jsm/renderers/common/Background.js
+757 −0 examples/jsm/renderers/common/extras/PMREMGenerator.js
+4 −17 examples/jsm/renderers/common/nodes/Nodes.js
+ examples/screenshots/webgpu_cubemap_adjustments.jpg
+ examples/screenshots/webgpu_cubemap_dynamic.jpg
+ examples/screenshots/webgpu_cubemap_mix.jpg
+ examples/screenshots/webgpu_equirectangular.jpg
+ examples/screenshots/webgpu_loader_gltf.jpg
+ examples/screenshots/webgpu_loader_gltf_iridescence.jpg
+ examples/screenshots/webgpu_loader_gltf_sheen.jpg
+ examples/screenshots/webgpu_parallax_uv.jpg
+ examples/screenshots/webgpu_pmrem_cubemap.jpg
+ examples/screenshots/webgpu_pmrem_equirectangular.jpg
+ examples/screenshots/webgpu_pmrem_scene.jpg
+ examples/screenshots/webgpu_postprocessing_anamorphic.jpg
+3 −3 examples/webgpu_cubemap_adjustments.html
+3 −3 examples/webgpu_cubemap_mix.html
+0 −1 examples/webgpu_equirectangular.html
+114 −0 examples/webgpu_pmrem_cubemap.html
+116 −0 examples/webgpu_pmrem_equirectangular.html
+141 −0 examples/webgpu_pmrem_scene.html
4 changes: 3 additions & 1 deletion types/three/examples/jsm/nodes/Nodes.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -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";

Expand Down
20 changes: 20 additions & 0 deletions types/three/examples/jsm/nodes/pmrem/PMREMNode.d.ts
Original file line number Diff line number Diff line change
@@ -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<PMREMNode>;
12 changes: 0 additions & 12 deletions types/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.d.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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;
}

0 comments on commit 6f3b98a

Please sign in to comment.