Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nodes: Rework ShaderNodeElements and make some other refactorings #720

Merged
merged 1 commit into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
294 changes: 234 additions & 60 deletions types/three/examples/jsm/nodes/Nodes.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ export * from './core/constants.js';

// core
export { default as ArrayUniformNode } from './core/ArrayUniformNode.js';
export { default as AttributeNode } from './core/AttributeNode.js';
export { default as BypassNode } from './core/BypassNode.js';
export { default as CacheNode } from './core/CacheNode.js';
export { default as AttributeNode, attribute } from './core/AttributeNode.js';
export { default as BypassNode, bypass } from './core/BypassNode.js';
export { default as CacheNode, cache } from './core/CacheNode.js';
export { default as ConstNode } from './core/ConstNode.js';
export { default as ContextNode } from './core/ContextNode.js';
export { default as ContextNode, context } from './core/ContextNode.js';
export { default as Node } from './core/Node.js';
export { default as NodeAttribute } from './core/NodeAttribute.js';
export { default as NodeBuilder } from './core/NodeBuilder.js';
Expand All @@ -19,108 +19,282 @@ export { default as NodeKeywords } from './core/NodeKeywords.js';
export { default as NodeUniform } from './core/NodeUniform.js';
export { default as NodeVar } from './core/NodeVar.js';
export { default as NodeVarying } from './core/NodeVarying.js';
export { default as PropertyNode } from './core/PropertyNode.js';
export {
default as PropertyNode,
property,
diffuseColor,
roughness,
metalness,
specularColor,
shininess,
} from './core/PropertyNode.js';
export { default as StackNode } from './core/StackNode.js';
export { default as TempNode } from './core/TempNode.js';
export { default as UniformNode } from './core/UniformNode.js';
export { default as VarNode } from './core/VarNode.js';
export { default as VaryingNode } from './core/VaryingNode.js';
export { default as UniformNode, uniform } from './core/UniformNode.js';
export { default as VarNode, label, temp } from './core/VarNode.js';
export { default as VaryingNode, varying } from './core/VaryingNode.js';

import * as NodeUtils from './core/NodeUtils.js';
export { NodeUtils };

// math
export {
default as MathNode,
EPSILON,
INFINITY,
radians,
degrees,
exp,
exp2,
log,
log2,
sqrt,
inversesqrt,
floor,
ceil,
normalize,
fract,
sin,
cos,
tan,
asin,
acos,
atan,
abs,
sign,
length,
negate,
invert,
dFdx,
dFdy,
round,
reciprocal,
atan2,
min,
max,
mod,
step,
reflect,
distance,
difference,
dot,
cross,
pow,
pow2,
pow3,
pow4,
transformDirection,
mix,
clamp,
refract,
smoothstep,
faceforward,
MathNodeMethod1,
MathNodeMethod2,
MathNodeMethod3,
MathNodeMethod,
Unary,
Binary,
Ternary,
} from './math/MathNode.js';
export { default as OperatorNode, OperatorNodeOp } from './math/OperatorNode.js';
export { default as CondNode } from './math/CondNode.js';
export {
default as OperatorNode,
add,
sub,
mul,
div,
remainder,
equal,
assign,
lessThan,
greaterThan,
lessThanEqual,
greaterThanEqual,
and,
or,
xor,
bitAnd,
bitOr,
bitXor,
shiftLeft,
shiftRight,
OperatorNodeOp,
Operator,
} from './math/OperatorNode.js';
export { default as CondNode, cond } from './math/CondNode.js';

// utils
export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
export { default as ConvertNode } from './utils/ConvertNode.js';
export { default as EquirectUVNode } from './utils/EquirectUVNode.js';
export { default as EquirectUVNode, equirectUV } from './utils/EquirectUVNode.js';
export { default as JoinNode } from './utils/JoinNode.js';
export { default as MatcapUVNode } from './utils/MatcapUVNode.js';
export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
export { default as OscNode, OscNodeMethod } from './utils/OscNode.js';
export { default as RemapNode } from './utils/RemapNode.js';
export { default as RotateUVNode } from './utils/RotateUVNode.js';
export { default as SpecularMIPLevelNode } from './utils/SpecularMIPLevelNode.js';
export { default as MatcapUVNode, matcapUV } from './utils/MatcapUVNode.js';
export { default as MaxMipLevelNode, maxMipLevel } from './utils/MaxMipLevelNode.js';
export { default as OscNode, oscSine, oscSquare, oscTriangle, oscSawtooth, OscNodeMethod } from './utils/OscNode.js';
export { default as RemapNode, remap, remapClamp } from './utils/RemapNode.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 } from './utils/SpriteSheetUVNode.js';
export { default as TimerNode, TimerNodeScope } from './utils/TimerNode.js';
export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.js';
export { default as SpriteSheetUVNode, spritesheetUV } from './utils/SpriteSheetUVNode.js';
export {
default as TimerNode,
timerLocal,
timerGlobal,
timerDelta,
frameId,
TimerNodeScope,
} from './utils/TimerNode.js';
export {
default as TriplanarTexturesNode,
triplanarTextures,
triplanarTexture,
} from './utils/TriplanarTexturesNode.js';

// shader node
export * from './shadernode/ShaderNodeElements.js';
export * from './shadernode/ShaderNode.js';

// accessors
export { default as BitangentNode, BitangentNodeScope } from './accessors/BitangentNode.js';
export { default as BufferNode } from './accessors/BufferNode.js';
export { default as CameraNode, CameraNodeScope } from './accessors/CameraNode.js';
export { default as CubeTextureNode } from './accessors/CubeTextureNode.js';
export { default as InstanceNode } from './accessors/InstanceNode.js';
export { default as MaterialNode, MaterialNodeScope } from './accessors/MaterialNode.js';
export { default as MaterialReferenceNode } from './accessors/MaterialReferenceNode.js';
export { default as ModelNode } from './accessors/ModelNode.js';
export { default as ModelViewProjectionNode } from './accessors/ModelViewProjectionNode.js';
export { default as NormalNode, NormalNodeScope } from './accessors/NormalNode.js';
export {
default as BitangentNode,
bitangentGeometry,
bitangentLocal,
bitangentView,
bitangentWorld,
transformedBitangentView,
transformedBitangentWorld,
BitangentNodeScope,
} from './accessors/BitangentNode.js';
export { default as BufferNode, buffer } from './accessors/BufferNode.js';
export {
default as CameraNode,
cameraProjectionMatrix,
cameraViewMatrix,
cameraNormalMatrix,
cameraWorldMatrix,
cameraPosition,
CameraNodeScope,
} from './accessors/CameraNode.js';
export { default as CubeTextureNode, cubeTexture } from './accessors/CubeTextureNode.js';
export { default as InstanceNode, instance } from './accessors/InstanceNode.js';
export {
default as MaterialNode,
materialAlphaTest,
materialColor,
materialShininess,
materialEmissive,
materialOpacity,
materialSpecularColor,
materialReflectivity,
materialRoughness,
materialMetalness,
materialRotation,
MaterialNodeScope,
} from './accessors/MaterialNode.js';
export { default as MaterialReferenceNode, materialReference } from './accessors/MaterialReferenceNode.js';
export {
default as ModelNode,
modelViewMatrix,
modelNormalMatrix,
modelWorldMatrix,
modelPosition,
modelViewPosition,
} from './accessors/ModelNode.js';
export { default as ModelViewProjectionNode, modelViewProjection } from './accessors/ModelViewProjectionNode.js';
export {
default as NormalNode,
normalGeometry,
normalLocal,
normalView,
normalWorld,
transformedNormalView,
NormalNodeScope,
} from './accessors/NormalNode.js';
export { default as Object3DNode, Object3DNodeScope as OObject3DNodeScope } from './accessors/Object3DNode.js';
export { default as PointUVNode } from './accessors/PointUVNode.js';
export { default as PositionNode, PositionNodeScope } from './accessors/PositionNode.js';
export { default as ReferenceNode } from './accessors/ReferenceNode.js';
export { default as ReflectVectorNode } from './accessors/ReflectVectorNode.js';
export { default as SkinningNode } from './accessors/SkinningNode.js';
export { default as TangentNode, TangentNodeScope } from './accessors/TangentNode.js';
export { default as TextureNode } from './accessors/TextureNode.js';
export { default as UVNode } from './accessors/UVNode.js';
export { default as UserDataNode } from './accessors/UserDataNode.js';
export { default as PointUVNode, pointUV } from './accessors/PointUVNode.js';
export {
default as PositionNode,
positionGeometry,
positionLocal,
positionWorld,
positionWorldDirection,
positionView,
positionViewDirection,
PositionNodeScope,
} from './accessors/PositionNode.js';
export { default as ReferenceNode, reference } from './accessors/ReferenceNode.js';
export { default as ReflectVectorNode, reflectVector } from './accessors/ReflectVectorNode.js';
export { default as SkinningNode, skinning } from './accessors/SkinningNode.js';
export { default as StorageBufferNode, storage } from './accessors/StorageBufferNode.js';
export {
default as TangentNode,
tangentGeometry,
tangentLocal,
tangentView,
tangentWorld,
transformedTangentView,
transformedTangentWorld,
TangentNodeScope,
} from './accessors/TangentNode.js';
export { default as TextureNode, texture, sampler } from './accessors/TextureNode.js';
export { default as UVNode, uv } from './accessors/UVNode.js';
export { default as UserDataNode, userData } from './accessors/UserDataNode.js';

// display
export { default as BlendModeNode, BlendMode } from './display/BlendModeNode.js';
export { default as ColorAdjustmentNode, ColorAdjustmentMethod } from './display/ColorAdjustmentNode.js';
export { default as ColorSpaceNode, ColorSpaceNodeMethod } from './display/ColorSpaceNode.js';
export { default as FrontFacingNode } from './display/FrontFacingNode.js';
export { default as NormalMapNode } from './display/NormalMapNode.js';
export { default as PosterizeNode } from './display/PosterizeNode.js';
export { default as ToneMappingNode } from './display/ToneMappingNode.js';
export { default as ViewportNode } from './display/ViewportNode.js';
export { default as BlendModeNode, burn, dodge, overlay, screen, BlendMode } from './display/BlendModeNode.js';
export {
default as ColorAdjustmentNode,
saturation,
vibrance,
hue,
lumaCoeffs,
luminance,
ColorAdjustmentMethod,
} from './display/ColorAdjustmentNode.js';
export { default as ColorSpaceNode, colorSpace, ColorSpaceNodeMethod } from './display/ColorSpaceNode.js';
export { default as FrontFacingNode, frontFacing, faceDirection } from './display/FrontFacingNode.js';
export { default as NormalMapNode, normalMap, TBNViewMatrix } from './display/NormalMapNode.js';
export { default as PosterizeNode, posterize } from './display/PosterizeNode.js';
export { default as ToneMappingNode, toneMapping } from './display/ToneMappingNode.js';
export {
default as ViewportNode,
viewportCoordinate,
viewportResolution,
viewportTopLeft,
viewportBottomLeft,
viewportTopRight,
viewportBottomRight,
} from './display/ViewportNode.js';

// code
export { default as ExpressionNode } from './code/ExpressionNode.js';
export { default as CodeNode, CodeNodeInclude } from './code/CodeNode.js';
export { default as FunctionCallNode } from './code/FunctionCallNode.js';
export { default as FunctionNode, FunctionNodeArguments } from './code/FunctionNode.js';
export { default as ExpressionNode, expression } from './code/ExpressionNode.js';
export { default as CodeNode, code, CodeNodeInclude } from './code/CodeNode.js';
export { default as FunctionCallNode, call } from './code/FunctionCallNode.js';
export { default as FunctionNode, func, fn, FunctionNodeArguments, Fn } from './code/FunctionNode.js';

// fog
export { default as FogNode } from './fog/FogNode.js';
export { default as FogRangeNode } from './fog/FogRangeNode.js';
export { default as FogExp2Node } from './fog/FogExp2Node.js';
export { default as FogNode, fog } from './fog/FogNode.js';
export { default as FogRangeNode, rangeFog } from './fog/FogRangeNode.js';
export { default as FogExp2Node, densityFog } from './fog/FogExp2Node.js';

// geometry
export { default as RangeNode, RangeModeBound } from './geometry/RangeNode.js';
export { default as RangeNode, range, RangeModeBound } from './geometry/RangeNode.js';

// gpgpu
export { default as ComputeNode } from './gpgpu/ComputeNode.js';
export { default as ComputeNode, compute } from './gpgpu/ComputeNode.js';

// lighting
export { default as PointLightNode } from './lighting/PointLightNode.js';
export { default as SpotLightNode } from './lighting/SpotLightNode.js';
export { default as LightsNode } from './lighting/LightsNode.js';
export { default as LightsNode, lights } from './lighting/LightsNode.js';
export { default as LightingNode } from './lighting/LightingNode.js';
export { default as LightingContextNode, LightingModelNode } from './lighting/LightingContextNode.js';
export { default as LightingContextNode, lightingContext, LightingModelNode } from './lighting/LightingContextNode.js';
export { default as HemisphereLightNode } from './lighting/HemisphereLightNode.js';
export { default as EnvironmentNode } from './lighting/EnvironmentNode.js';
export { default as AONode } from './lighting/AONode.js';
export { default as AnalyticLightNode } from './lighting/AnalyticLightNode.js';

// procedural
export { default as CheckerNode } from './procedural/CheckerNode.js';
export { default as CheckerNode, checker } from './procedural/CheckerNode.js';

// loaders
export { default as NodeLoader } from './loaders/NodeLoader.js';
Expand Down
9 changes: 9 additions & 0 deletions types/three/examples/jsm/nodes/accessors/BitangentNode.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import Node from '../core/Node.js';
import { Swizzable } from '../shadernode/ShaderNode.js';
import MathNode from '../math/MathNode.js';

export type BitangentNodeScope =
| typeof BitangentNode.LOCAL
Expand All @@ -16,3 +18,10 @@ export default class BitangentNode extends Node {

constructor(scope?: BitangentNodeScope);
}

export const bitangentGeometry: Swizzable<BitangentNode>;
export const bitangentLocal: Swizzable<BitangentNode>;
export const bitangentView: Swizzable<BitangentNode>;
export const bitangentWorld: Swizzable<BitangentNode>;
export const transformedBitangentView: Swizzable<MathNode>;
export const transformedBitangentWorld: Swizzable<MathNode>;
3 changes: 3 additions & 0 deletions types/three/examples/jsm/nodes/accessors/BufferNode.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { NodeTypeOption } from '../core/constants.js';
import UniformNode from '../core/UniformNode.js';
import { NodeOrType, Swizzable } from '../shadernode/ShaderNode.js';

export default class BufferNode extends UniformNode {
isBufferNode: true;
Expand All @@ -9,3 +10,5 @@ export default class BufferNode extends UniformNode {

constructor(value: ArrayLike<number>, bufferType: NodeTypeOption, bufferCount?: number);
}

export const buffer: (value: ArrayLike<number>, nodeOrType: NodeOrType, count: number) => Swizzable<BufferNode>;
Loading