Skip to content

Commit

Permalink
WebGPURenderer: New normal nodes approach (#1195)
Browse files Browse the repository at this point in the history
  • Loading branch information
Methuselah96 authored Aug 25, 2024
1 parent c650142 commit 36524db
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 12 deletions.
4 changes: 2 additions & 2 deletions types/three/src/nodes/accessors/MaterialNode.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,10 @@ export const materialSpecularStrength: ShaderNodeObject<MaterialNode>;
export const materialReflectivity: ShaderNodeObject<MaterialNode>;
export const materialRoughness: ShaderNodeObject<MaterialNode>;
export const materialMetalness: ShaderNodeObject<MaterialNode>;
export const materialNormal: ShaderNodeObject<MaterialNode>;
export const materialNormal: ShaderNodeObject<Node>;
export const materialClearcoat: ShaderNodeObject<MaterialNode>;
export const materialClearcoatRoughness: ShaderNodeObject<MaterialNode>;
export const materialClearcoatNormal: ShaderNodeObject<MaterialNode>;
export const materialClearcoatNormal: ShaderNodeObject<Node>;
export const materialRotation: ShaderNodeObject<MaterialNode>;
export const materialSheen: ShaderNodeObject<MaterialNode>;
export const materialSheenRoughness: ShaderNodeObject<MaterialNode>;
Expand Down
13 changes: 10 additions & 3 deletions types/three/src/nodes/accessors/NormalNode.d.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import AttributeNode from "../core/AttributeNode.js";
import PropertyNode from "../core/PropertyNode.js";
import VarNode from "../core/VarNode.js";
import { ShaderNodeObject } from "../shadernode/ShaderNode.js";

export const normalGeometry: ShaderNodeObject<AttributeNode>;

export const normalLocal: ShaderNodeObject<VarNode>;

export const normalFlat: ShaderNodeObject<VarNode>;

export const normalView: ShaderNodeObject<VarNode>;

export const normalWorld: ShaderNodeObject<VarNode>;
export const transformedNormalView: ShaderNodeObject<PropertyNode>;

export const transformedNormalView: ShaderNodeObject<VarNode>;

export const transformedNormalWorld: ShaderNodeObject<VarNode>;
export const transformedClearcoatNormalView: ShaderNodeObject<PropertyNode>;

export const transformedClearcoatNormalView: ShaderNodeObject<VarNode>;
5 changes: 1 addition & 4 deletions types/three/src/nodes/core/AttributeNode.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ import Node from "./Node.js";
import NodeBuilder from "./NodeBuilder.js";

export default class AttributeNode extends Node {
defaultNode: Node | null;

constructor(attributeName: string, nodeType?: string | null, defaultNode?: Node | null);
constructor(attributeName: string, nodeType?: string | null);

setAttributeName(attributeName: string): this;

Expand All @@ -15,5 +13,4 @@ export default class AttributeNode extends Node {
export const attribute: (
name: string,
nodeType?: string | null,
defaultNode?: NodeRepresentation,
) => ShaderNodeObject<AttributeNode>;
3 changes: 3 additions & 0 deletions types/three/src/nodes/materials/MeshPhysicalNodeMaterial.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { Color } from "../../math/Color.js";
import { Vector2 } from "../../math/Vector2.js";
import { Texture } from "../../textures/Texture.js";
import Node from "../core/Node.js";
import { ShaderNodeObject } from "../shadernode/ShaderNode.js";
import MeshStandardNodeMaterial, { MeshStandardNodeMaterialParameters } from "./MeshStandardNodeMaterial.js";

export interface MeshPhysicalNodeMaterialParameters
Expand Down Expand Up @@ -87,4 +88,6 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
get useAnisotropy(): boolean;
get useTransmission(): boolean;
get useDispersion(): boolean;

setupClearcoatNormal(): ShaderNodeObject<Node>;
}
9 changes: 6 additions & 3 deletions types/three/src/nodes/materials/NodeMaterial.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import MRTNode from "../core/MRTNode.js";
import Node from "../core/Node.js";
import NodeBuilder from "../core/NodeBuilder.js";
import LightsNode from "../lighting/LightsNode.js";
import { ShaderNodeObject } from "../shadernode/ShaderNode.js";
import LineBasicNodeMaterial from "./LineBasicNodeMaterial.js";
import MeshBasicNodeMaterial from "./MeshBasicNodeMaterial.js";
import MeshMatcapNodeMaterial from "./MeshMatcapNodeMaterial.js";
Expand Down Expand Up @@ -55,12 +56,11 @@ export interface NodeMaterialParameters extends MaterialParameters {
vertexNode?: Node | null | undefined;
}

export default class NodeMaterial extends Material {
declare class NodeMaterial extends Material {
readonly isNodeMaterial: true;

fog: boolean;
lights: boolean;
normals: boolean;

lightsNode: LightsNode | null;
envNode: Node | null;
Expand Down Expand Up @@ -94,7 +94,7 @@ export default class NodeMaterial extends Material {
setupPosition(builder: NodeBuilder): Node;
setupDiffuseColor(builder: NodeBuilder): void;
setupVariants(builder: NodeBuilder): void;
setupNormal(builder: NodeBuilder): void;
setupNormal(builder: NodeBuilder): ShaderNodeObject<Node>;
setupEnvironment(builder: NodeBuilder): Node | null;
setupLightMap(builder: NodeBuilder): Node | null;
setupLights(builder: NodeBuilder): LightsNode;
Expand All @@ -120,5 +120,8 @@ export default class NodeMaterial extends Material {
static fromMaterial(material: Material): NodeMaterial;
}

export default NodeMaterial;

export function addNodeMaterial(type: string, nodeMaterial: typeof NodeMaterial): void;

export function createNodeMaterialFromType(type: string): NodeMaterial;

0 comments on commit 36524db

Please sign in to comment.