Skip to content

Commit 0f2dd85

Browse files
authored
WebGPURenderer: Introduce dispersion (#974)
* WebGPURenderer: Introduce dispersion * Update three.js * Add examples * Update patch * Delete examples * Format
1 parent 7e77250 commit 0f2dd85

File tree

7 files changed

+428
-369
lines changed

7 files changed

+428
-369
lines changed

examples-testing/changes.patch

Lines changed: 411 additions & 367 deletions
Large diffs are not rendered by default.

three.js

Submodule three.js updated 114 files

types/three/examples/jsm/nodes/Nodes.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ export {
211211
materialClearcoatNormal,
212212
materialClearcoatRoughness,
213213
materialColor,
214+
materialDispersion,
214215
materialEmissive,
215216
materialIridescence,
216217
materialIridescenceIOR,

types/three/examples/jsm/nodes/accessors/MaterialNode.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ export type MaterialNodeScope =
3737
| typeof MaterialNode.LINE_GAP_SIZE
3838
| typeof MaterialNode.LINE_WIDTH
3939
| typeof MaterialNode.LINE_DASH_OFFSET
40-
| typeof MaterialNode.POINT_WIDTH;
40+
| typeof MaterialNode.POINT_WIDTH
41+
| typeof MaterialNode.DISPERSION;
4142

4243
export default class MaterialNode extends Node {
4344
static ALPHA_TEST: "alphaTest";
@@ -74,6 +75,7 @@ export default class MaterialNode extends Node {
7475
static LINE_WIDTH: "linewidth";
7576
static LINE_DASH_OFFSET: "dashOffset";
7677
static POINT_WIDTH: "pointWidth";
78+
static DISPERSION: "dispersion";
7779

7880
scope: MaterialNodeScope;
7981
constructor(scope?: MaterialNodeScope);
@@ -115,4 +117,5 @@ export const materialLineGapSize: ShaderNodeObject<MaterialNode>;
115117
export const materialLineWidth: ShaderNodeObject<MaterialNode>;
116118
export const materialLineDashOffset: ShaderNodeObject<MaterialNode>;
117119
export const materialPointWidth: ShaderNodeObject<MaterialNode>;
120+
export const materialDispersion: ShaderNodeObject<MaterialNode>;
118121
export const materialAnisotropyVector: ShaderNodeObject<UniformNode<Vector2>>;

types/three/examples/jsm/nodes/core/PropertyNode.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,4 @@ export const transmission: ShaderNodeObject<PropertyNode>;
4040
export const thickness: ShaderNodeObject<PropertyNode>;
4141
export const attenuationDistance: ShaderNodeObject<PropertyNode>;
4242
export const attenuationColor: ShaderNodeObject<PropertyNode>;
43+
export const dispersion: ShaderNodeObject<PropertyNode>;

types/three/examples/jsm/nodes/functions/PhysicalLightingModel.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export default class PhysicalLightingModel extends LightingModel {
77
iridescence: boolean;
88
anisotropy: boolean;
99
transmission: boolean;
10+
dispersion: boolean;
1011

1112
clearcoatRadiance: Node | null;
1213
clearcoatSpecularDirect: Node | null;
@@ -22,6 +23,7 @@ export default class PhysicalLightingModel extends LightingModel {
2223
iridescence?: boolean,
2324
anisotropy?: boolean,
2425
transmission?: boolean,
26+
dispersion?: boolean,
2527
);
2628

2729
computeMultiscattering(singleScatter: Node, multiScatter: Node, specularF90: Node): void;

types/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
3232
thicknessNode: ShaderNodeObject<Node> | null;
3333
attenuationDistanceNode: ShaderNodeObject<Node> | null;
3434
attenuationColorNode: ShaderNodeObject<Node> | null;
35+
dispersionNode: ShaderNodeObject<Node> | null;
3536

3637
anisotropyNode: ShaderNodeObject<Node> | null;
3738

@@ -78,4 +79,11 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
7879
set transmission(value: number);
7980

8081
constructor(parameters?: MeshPhysicalNodeMaterialParameters);
82+
83+
get useClearcoat(): boolean;
84+
get useIridescence(): boolean;
85+
get useSheen(): boolean;
86+
get useAnisotropy(): boolean;
87+
get useTransmission(): boolean;
88+
get useDispersion(): boolean;
8189
}

0 commit comments

Comments
 (0)