@triforge/shader-core 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/bundle.js +81 -28
  2. package/dist/core/CompileContext.d.ts.map +1 -1
  3. package/dist/core/CompileContext.js +50 -28
  4. package/dist/core/glslIdentifier.d.ts +17 -0
  5. package/dist/core/glslIdentifier.d.ts.map +1 -0
  6. package/dist/core/glslIdentifier.js +37 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/nodes/input/Attribute.d.ts +1 -1
  11. package/dist/nodes/input/Attribute.d.ts.map +1 -1
  12. package/dist/nodes/input/Attribute.js +8 -1
  13. package/dist/nodes/input/CameraData.d.ts +1 -1
  14. package/dist/nodes/input/ColorAttribute.d.ts +1 -1
  15. package/dist/nodes/input/Geometry.d.ts +1 -1
  16. package/dist/nodes/input/HairInfo.d.ts +1 -1
  17. package/dist/nodes/input/LayerWeight.d.ts +1 -1
  18. package/dist/nodes/input/LightPath.d.ts +1 -1
  19. package/dist/nodes/input/ObjectInfo.d.ts +1 -1
  20. package/dist/nodes/input/OceanAttribute.d.ts +1 -1
  21. package/dist/nodes/input/ParticleInfo.d.ts +1 -1
  22. package/dist/nodes/input/RGB.d.ts +1 -1
  23. package/dist/nodes/input/ScreenCamera.d.ts +1 -1
  24. package/dist/nodes/input/Tangent.d.ts +1 -1
  25. package/dist/nodes/input/TextureCoordinate.d.ts +1 -1
  26. package/dist/nodes/input/UVMap.d.ts +1 -1
  27. package/dist/nodes/input/Value.d.ts +1 -1
  28. package/dist/nodes/input/Wireframe.d.ts +1 -1
  29. package/dist/nodes/output/MaterialOutput.d.ts +1 -1
  30. package/dist/nodes/output/ScreenOutput.d.ts +1 -1
  31. package/dist/nodes/process/AddShader.d.ts +1 -1
  32. package/dist/nodes/process/AnimatedNoiseTexture.d.ts +1 -1
  33. package/dist/nodes/process/Blackbody.d.ts +1 -1
  34. package/dist/nodes/process/BrickTexture.d.ts +1 -1
  35. package/dist/nodes/process/BrightContrast.d.ts +1 -1
  36. package/dist/nodes/process/Bump.d.ts +1 -1
  37. package/dist/nodes/process/CheckerTexture.d.ts +1 -1
  38. package/dist/nodes/process/Clamp.d.ts +1 -1
  39. package/dist/nodes/process/ColorRamp.d.ts +1 -1
  40. package/dist/nodes/process/CombineColor.d.ts +1 -1
  41. package/dist/nodes/process/CombineRGB.d.ts +1 -1
  42. package/dist/nodes/process/CombineXYZ.d.ts +1 -1
  43. package/dist/nodes/process/DiffuseBSDF.d.ts +1 -1
  44. package/dist/nodes/process/Emission.d.ts +1 -1
  45. package/dist/nodes/process/EnvironmentTexture.d.ts +1 -1
  46. package/dist/nodes/process/EnvironmentTexture.d.ts.map +1 -1
  47. package/dist/nodes/process/EnvironmentTexture.js +2 -0
  48. package/dist/nodes/process/FloatCurve.d.ts +1 -1
  49. package/dist/nodes/process/Fresnel.d.ts +1 -1
  50. package/dist/nodes/process/Gamma.d.ts +1 -1
  51. package/dist/nodes/process/GlassBSDF.d.ts +1 -1
  52. package/dist/nodes/process/GlossyBSDF.d.ts +1 -1
  53. package/dist/nodes/process/GradientTexture.d.ts +1 -1
  54. package/dist/nodes/process/HashValue.d.ts +1 -1
  55. package/dist/nodes/process/HueSaturationValue.d.ts +1 -1
  56. package/dist/nodes/process/ImageTexture.d.ts +1 -1
  57. package/dist/nodes/process/ImageTexture.d.ts.map +1 -1
  58. package/dist/nodes/process/ImageTexture.js +3 -1
  59. package/dist/nodes/process/InvertColor.d.ts +1 -1
  60. package/dist/nodes/process/MagicTexture.d.ts +1 -1
  61. package/dist/nodes/process/MapRange.d.ts +1 -1
  62. package/dist/nodes/process/Mapping.d.ts +1 -4
  63. package/dist/nodes/process/Mapping.d.ts.map +1 -1
  64. package/dist/nodes/process/Mapping.js +28 -25
  65. package/dist/nodes/process/Math.d.ts +1 -1
  66. package/dist/nodes/process/MixRGB.d.ts +1 -1
  67. package/dist/nodes/process/MixShader.d.ts +1 -1
  68. package/dist/nodes/process/MusgraveTexture.d.ts +1 -1
  69. package/dist/nodes/process/NoiseTexture.d.ts +1 -1
  70. package/dist/nodes/process/Normal.d.ts +1 -1
  71. package/dist/nodes/process/NormalMap.d.ts +12 -8
  72. package/dist/nodes/process/NormalMap.d.ts.map +1 -1
  73. package/dist/nodes/process/NormalMap.js +34 -21
  74. package/dist/nodes/process/PrincipledBSDF.d.ts +1 -1
  75. package/dist/nodes/process/PrincipledHair.d.ts +1 -1
  76. package/dist/nodes/process/PrincipledVolume.d.ts +1 -1
  77. package/dist/nodes/process/RGBCurves.d.ts +1 -1
  78. package/dist/nodes/process/RGBtoBW.d.ts +1 -1
  79. package/dist/nodes/process/RefractionBSDF.d.ts +1 -1
  80. package/dist/nodes/process/SchwarzschildMarch.d.ts +1 -1
  81. package/dist/nodes/process/SeparateColor.d.ts +1 -1
  82. package/dist/nodes/process/SeparateRGB.d.ts +1 -1
  83. package/dist/nodes/process/SeparateXYZ.d.ts +1 -1
  84. package/dist/nodes/process/ShaderScript.d.ts +1 -1
  85. package/dist/nodes/process/ShaderScript.d.ts.map +1 -1
  86. package/dist/nodes/process/ShaderScript.js +5 -0
  87. package/dist/nodes/process/ShaderToRGB.d.ts +1 -1
  88. package/dist/nodes/process/SheenBSDF.d.ts +1 -1
  89. package/dist/nodes/process/SpecularBSDF.d.ts +1 -1
  90. package/dist/nodes/process/SubsurfaceScattering.d.ts +1 -1
  91. package/dist/nodes/process/ToonBSDF.d.ts +1 -1
  92. package/dist/nodes/process/TranslucentBSDF.d.ts +1 -1
  93. package/dist/nodes/process/VectorCurves.d.ts +1 -1
  94. package/dist/nodes/process/VectorMath.d.ts +1 -1
  95. package/dist/nodes/process/VectorRotate.d.ts +1 -1
  96. package/dist/nodes/process/VectorTransform.d.ts +1 -1
  97. package/dist/nodes/process/VolumeAbsorption.d.ts +1 -1
  98. package/dist/nodes/process/VolumeScatter.d.ts +1 -1
  99. package/dist/nodes/process/VoronoiTexture.d.ts +1 -1
  100. package/dist/nodes/process/WaveTexture.d.ts +1 -1
  101. package/dist/nodes/process/Wavelength.d.ts +1 -1
  102. package/dist/nodes/process/WhiteNoise.d.ts +1 -1
  103. package/package.json +50 -50
@@ -11,7 +11,7 @@ export declare class TextureCoordinate extends InputNode {
11
11
  get metadata(): NodeMetadata;
12
12
  private readonly _outputs;
13
13
  constructor();
14
- getOutputSockets(): Record<string, import("../../core/OutputSocket.js").OutputSocket>;
14
+ getOutputSockets(): Record<string, import("../../index.js").OutputSocket>;
15
15
  compileCall(ctx: CompileContext): string;
16
16
  }
17
17
  //# sourceMappingURL=TextureCoordinate.d.ts.map
@@ -14,7 +14,7 @@ export declare class UVMap extends InputNode {
14
14
  get metadata(): NodeMetadata;
15
15
  private readonly _outputs;
16
16
  constructor();
17
- getOutputSockets(): Record<string, import("../../core/OutputSocket.js").OutputSocket>;
17
+ getOutputSockets(): Record<string, import("../../index.js").OutputSocket>;
18
18
  compileCall(ctx: CompileContext): string;
19
19
  }
20
20
  //# sourceMappingURL=UVMap.d.ts.map
@@ -13,7 +13,7 @@ export declare class Value extends InputNode {
13
13
  private readonly val;
14
14
  private readonly _outputs;
15
15
  constructor(value?: number);
16
- getOutputSockets(): Record<string, import("../../core/OutputSocket.js").OutputSocket>;
16
+ getOutputSockets(): Record<string, import("../../index.js").OutputSocket>;
17
17
  compileCall(ctx: CompileContext): string;
18
18
  }
19
19
  //# sourceMappingURL=Value.d.ts.map
@@ -19,7 +19,7 @@ export declare class Wireframe extends InputNode {
19
19
  constructor(inputs?: {
20
20
  thickness?: number;
21
21
  } | number);
22
- getOutputSockets(): Record<string, import("../../core/OutputSocket.js").OutputSocket>;
22
+ getOutputSockets(): Record<string, import("../../index.js").OutputSocket>;
23
23
  compileCall(ctx: CompileContext): string;
24
24
  }
25
25
  //# sourceMappingURL=Wireframe.d.ts.map
@@ -20,7 +20,7 @@ export declare class MaterialOutput extends OutputNode {
20
20
  get metadata(): NodeMetadata;
21
21
  private readonly _inputs;
22
22
  constructor(inputs?: MaterialOutputInputs);
23
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
23
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
24
24
  /**
25
25
  * Converts the node graph to a THREE.MeshPhysicalMaterial for use with
26
26
  * path-tracer renderers (three-gpu-pathtracer).
@@ -28,7 +28,7 @@ export declare class ScreenOutput extends OutputNode {
28
28
  constructor(inputs?: {
29
29
  color?: OutputSocket;
30
30
  });
31
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
31
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
32
32
  compileDefs(): string;
33
33
  compileCall(ctx: CompileContext): string;
34
34
  compile(): ShaderMaterial;
@@ -22,7 +22,7 @@ export declare class AddShader extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: AddShaderInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -31,7 +31,7 @@ export declare class AnimatedNoiseTexture extends ProcessNode {
31
31
  private readonly _outputs;
32
32
  private readonly speed;
33
33
  constructor(inputs?: AnimatedNoiseTextureInputs);
34
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
34
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
35
35
  getOutputSockets(): Record<string, OutputSocket>;
36
36
  compileDefs(): string;
37
37
  compileCall(ctx: CompileContext): string;
@@ -21,7 +21,7 @@ export declare class Blackbody extends ProcessNode {
21
21
  private readonly _inputs;
22
22
  private readonly _outputs;
23
23
  constructor(inputs?: BlackbodyInputs);
24
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
24
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
25
25
  getOutputSockets(): Record<string, OutputSocket>;
26
26
  compileDefs(): string;
27
27
  compileCall(ctx: CompileContext): string;
@@ -28,7 +28,7 @@ export declare class BrickTexture extends ProcessNode {
28
28
  private readonly _inputs;
29
29
  private readonly _outputs;
30
30
  constructor(inputs?: BrickTextureInputs);
31
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
31
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
32
32
  getOutputSockets(): Record<string, OutputSocket>;
33
33
  compileDefs(): string;
34
34
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class BrightContrast extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: BrightContrastInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -23,7 +23,7 @@ export declare class Bump extends ProcessNode {
23
23
  private readonly _inputs;
24
24
  private readonly _outputs;
25
25
  constructor(inputs?: BumpInputs);
26
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
26
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
27
27
  getOutputSockets(): Record<string, OutputSocket>;
28
28
  compileDefs(): string;
29
29
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class CheckerTexture extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: CheckerTextureInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -24,7 +24,7 @@ export declare class Clamp extends ProcessNode {
24
24
  private readonly _inputs;
25
25
  private readonly _outputs;
26
26
  constructor(inputs?: ClampInputs);
27
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
27
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
28
28
  getOutputSockets(): Record<string, OutputSocket>;
29
29
  compileDefs(): string;
30
30
  compileCall(ctx: CompileContext): string;
@@ -20,7 +20,7 @@ export declare class ColorRamp extends ProcessNode {
20
20
  private readonly _inputs;
21
21
  private readonly _outputs;
22
22
  constructor(inputs?: ColorRampInputs);
23
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
23
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
24
24
  getOutputSockets(): Record<string, OutputSocket>;
25
25
  compileDefs(): string;
26
26
  compileCall(ctx: CompileContext): string;
@@ -26,7 +26,7 @@ export declare class CombineColor extends ProcessNode {
26
26
  private readonly _inputs;
27
27
  private readonly _outputs;
28
28
  constructor(inputs?: CombineColorInputs);
29
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
29
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
30
30
  getOutputSockets(): Record<string, OutputSocket>;
31
31
  compileDefs(): string;
32
32
  compileCall(ctx: CompileContext): string;
@@ -21,7 +21,7 @@ export declare class CombineRGB extends ProcessNode {
21
21
  private readonly _inputs;
22
22
  private readonly _outputs;
23
23
  constructor(inputs?: CombineRGBInputs);
24
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
24
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
25
25
  getOutputSockets(): Record<string, OutputSocket>;
26
26
  compileDefs(): string;
27
27
  compileCall(ctx: CompileContext): string;
@@ -21,7 +21,7 @@ export declare class CombineXYZ extends ProcessNode {
21
21
  private readonly _inputs;
22
22
  private readonly _outputs;
23
23
  constructor(inputs?: CombineXYZInputs);
24
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
24
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
25
25
  getOutputSockets(): Record<string, OutputSocket>;
26
26
  compileDefs(): string;
27
27
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class DiffuseBSDF extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: DiffuseBSDFInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class Emission extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: EmissionInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -33,7 +33,7 @@ export declare class EnvironmentTexture extends ProcessNode {
33
33
  private readonly _inputs;
34
34
  private readonly _outputs;
35
35
  constructor(inputs: EnvironmentTextureInputs);
36
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
36
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
37
37
  getOutputSockets(): Record<string, OutputSocket>;
38
38
  compileDefs(): string;
39
39
  compileCall(ctx: CompileContext): string;
@@ -1 +1 @@
1
- {"version":3,"file":"EnvironmentTexture.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/EnvironmentTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAGvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,wBAAwB;IACvC,4GAA4G;IAC5G,MAAM,CAAC,EAAO,YAAY,CAAA;IAC1B,6DAA6D;IAC7D,WAAW,EAAG,MAAM,CAAA;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAI,MAAM,GAAG,YAAY,CAAA;CACpC;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,IAAI,QAAQ,WAAkC;IAC9C,MAAM,CAAC,mBAAmB,UAAO;IAEjC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,EAAE,wBAAwB;IAoB5C,eAAe;IACf,gBAAgB;IAEhB,WAAW,IAAI,MAAM;IAIrB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAmBzC"}
1
+ {"version":3,"file":"EnvironmentTexture.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/EnvironmentTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,wBAAwB;IACvC,4GAA4G;IAC5G,MAAM,CAAC,EAAO,YAAY,CAAA;IAC1B,6DAA6D;IAC7D,WAAW,EAAG,MAAM,CAAA;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAI,MAAM,GAAG,YAAY,CAAA;CACpC;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,IAAI,QAAQ,WAAkC;IAC9C,MAAM,CAAC,mBAAmB,UAAO;IAEjC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,EAAE,wBAAwB;IAqB5C,eAAe;IACf,gBAAgB;IAEhB,WAAW,IAAI,MAAM;IAIrB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAmBzC"}
@@ -1,6 +1,7 @@
1
1
  import { ProcessNode } from '../../core/ProcessNode.js';
2
2
  import { ShaderNodeError } from '../../core/ShaderNodeError.js';
3
3
  import { ShaderConfig } from '../../core/ShaderConfig.js';
4
+ import { assertGlslIdentifier } from '../../core/glslIdentifier.js';
4
5
  /**
5
6
  * Environment Texture — Blender "Environment Texture" node equivalent.
6
7
  * Samples a cubemap (THREE.CubeTexture or THREE.WebGLCubeRenderTarget) via a samplerCube uniform.
@@ -31,6 +32,7 @@ export class EnvironmentTexture extends ProcessNode {
31
32
  fix: 'new EnvironmentTexture({ uniformName: "uEnv" })\n After compile(): mat.material.uniforms.uEnv = { value: cubeTexture }',
32
33
  });
33
34
  }
35
+ assertGlslIdentifier(inputs.uniformName, 'EnvironmentTexture uniformName');
34
36
  this._uniformName = inputs.uniformName;
35
37
  this._inputs = this.createInputs(inputs, {
36
38
  vector: ['color', null],
@@ -25,7 +25,7 @@ export declare class FloatCurve extends ProcessNode {
25
25
  private readonly _inputs;
26
26
  private readonly _outputs;
27
27
  constructor(inputs?: FloatCurveInputs);
28
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
28
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
29
29
  getOutputSockets(): Record<string, OutputSocket>;
30
30
  compileDefs(): string;
31
31
  compileCall(ctx: CompileContext): string;
@@ -28,7 +28,7 @@ export declare class Fresnel extends ProcessNode {
28
28
  private readonly _inputs;
29
29
  private readonly _outputs;
30
30
  constructor(inputs?: FresnelInputs);
31
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
31
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
32
32
  getOutputSockets(): Record<string, OutputSocket>;
33
33
  compileDefs(): string;
34
34
  compileCall(ctx: CompileContext): string;
@@ -21,7 +21,7 @@ export declare class Gamma extends ProcessNode {
21
21
  private readonly _inputs;
22
22
  private readonly _outputs;
23
23
  constructor(inputs?: GammaInputs);
24
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
24
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
25
25
  getOutputSockets(): Record<string, OutputSocket>;
26
26
  compileDefs(): string;
27
27
  compileCall(ctx: CompileContext): string;
@@ -23,7 +23,7 @@ export declare class GlassBSDF extends ProcessNode {
23
23
  private readonly _inputs;
24
24
  private readonly _outputs;
25
25
  constructor(inputs?: GlassBSDFInputs);
26
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
26
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
27
27
  getOutputSockets(): Record<string, OutputSocket>;
28
28
  compileDefs(): string;
29
29
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class GlossyBSDF extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: GlossyBSDFInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class GradientTexture extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: GradientTextureInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class HashValue extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: HashValueInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -24,7 +24,7 @@ export declare class HueSaturationValue extends ProcessNode {
24
24
  private readonly _inputs;
25
25
  private readonly _outputs;
26
26
  constructor(inputs?: HueSaturationValueInputs);
27
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
27
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
28
28
  getOutputSockets(): Record<string, OutputSocket>;
29
29
  compileDefs(): string;
30
30
  compileCall(ctx: CompileContext): string;
@@ -26,7 +26,7 @@ export declare class ImageTexture extends ProcessNode {
26
26
  private readonly _inputs;
27
27
  private readonly _outputs;
28
28
  constructor(inputs: ImageTextureInputs);
29
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
29
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
30
30
  getOutputSockets(): Record<string, OutputSocket>;
31
31
  compileDefs(): string;
32
32
  compileCall(ctx: CompileContext): string;
@@ -1 +1 @@
1
- {"version":3,"file":"ImageTexture.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/ImageTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAGvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAK,YAAY,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C,IAAI,QAAQ,WAA4B;IACxC,MAAM,CAAC,mBAAmB,UAAO;IAEjC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,EAAE,kBAAkB;IAiBtC,eAAe;IACf,gBAAgB;IAEhB,WAAW,IAAI,MAAM;IAIrB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAYzC"}
1
+ {"version":3,"file":"ImageTexture.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/ImageTexture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAIvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAK,YAAY,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C,IAAI,QAAQ,WAA4B;IACxC,MAAM,CAAC,mBAAmB,UAAO;IAEjC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,EAAE,kBAAkB;IAkBtC,eAAe;IACf,gBAAgB;IAEhB,WAAW,IAAI,MAAM;IAIrB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAYzC"}
@@ -1,6 +1,7 @@
1
1
  import { ProcessNode } from '../../core/ProcessNode.js';
2
2
  import { ShaderNodeError } from '../../core/ShaderNodeError.js';
3
3
  import { ShaderConfig } from '../../core/ShaderConfig.js';
4
+ import { assertGlslIdentifier } from '../../core/glslIdentifier.js';
4
5
  /**
5
6
  * Image Texture — Blender "Image Texture" node equivalent.
6
7
  * Samples an external texture via a sampler2D uniform.
@@ -28,6 +29,7 @@ export class ImageTexture extends ProcessNode {
28
29
  fix: 'new ImageTexture({ uniformName: "uMyTexture" })\n After compile(): mat.material.uniforms.uMyTexture = { value: texture }',
29
30
  });
30
31
  }
32
+ assertGlslIdentifier(inputs.uniformName, 'ImageTexture uniformName');
31
33
  this.uniformName = inputs.uniformName;
32
34
  this._inputs = this.createInputs(inputs, { vector: ['vector', null] });
33
35
  this._outputs = this.createOutputs({ Color: 'color', Alpha: 'float' });
@@ -39,7 +41,7 @@ export class ImageTexture extends ProcessNode {
39
41
  }
40
42
  compileCall(ctx) {
41
43
  const uv = this._inputs.vector.isConnected()
42
- ? ctx.outputVar(this._inputs.vector.connection.node, this._inputs.vector.connection.name)
44
+ ? ctx.resolveInput(this._inputs.vector)
43
45
  : 'vUv';
44
46
  const cv = ctx.outputVar(this, 'Color');
45
47
  const av = ctx.outputVar(this, 'Alpha');
@@ -21,7 +21,7 @@ export declare class InvertColor extends ProcessNode {
21
21
  private readonly _inputs;
22
22
  private readonly _outputs;
23
23
  constructor(inputs?: InvertColorInputs);
24
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
24
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
25
25
  getOutputSockets(): Record<string, OutputSocket>;
26
26
  compileDefs(): string;
27
27
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class MagicTexture extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: MagicTextureInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -30,7 +30,7 @@ export declare class MapRange extends ProcessNode {
30
30
  private readonly _inputs;
31
31
  private readonly _outputs;
32
32
  constructor(inputs?: MapRangeInputs);
33
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
33
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
34
34
  getOutputSockets(): Record<string, OutputSocket>;
35
35
  compileDefs(): string;
36
36
  compileCall(ctx: CompileContext): string;
@@ -22,14 +22,11 @@ export declare class Mapping extends ProcessNode {
22
22
  static instanceSpecificDef: boolean;
23
23
  get metadata(): NodeMetadata;
24
24
  static glslFunction: string;
25
- private readonly loc;
26
- private readonly rot;
27
- private readonly scl;
28
25
  private readonly mode;
29
26
  private readonly _inputs;
30
27
  private readonly _outputs;
31
28
  constructor(inputs?: MappingInputs);
32
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
29
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
33
30
  getOutputSockets(): Record<string, OutputSocket>;
34
31
  compileDefs(): string;
35
32
  compileCall(ctx: CompileContext): string;
@@ -1 +1 @@
1
- {"version":3,"file":"Mapping.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/Mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEnE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAM,WAAW,CAAA;IACtB,MAAM,CAAC,EAAI,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED;;;;;;GAMG;AACH,qBAAa,OAAQ,SAAQ,WAAW;IACtC,IAAI,QAAQ,WAAuB;IACnC,MAAM,CAAC,mBAAmB,UAAQ;IAElC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,MAAM,CAAC,YAAY,SAYnB;IAEA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,GAAE,aAAkB;IAUtC,eAAe;IACf,gBAAgB;IAChB,WAAW;IAEX,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAkBzC"}
1
+ {"version":3,"file":"Mapping.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/Mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEnE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAM,WAAW,CAAA;IACtB,MAAM,CAAC,EAAI,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED;;;;;;GAMG;AACH,qBAAa,OAAQ,SAAQ,WAAW;IACtC,IAAI,QAAQ,WAAuB;IACnC,MAAM,CAAC,mBAAmB,UAAQ;IAElC,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED,MAAM,CAAC,YAAY,SAYnB;IAEA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,GAAE,aAAkB;IAYtC,eAAe;IACf,gBAAgB;IAChB,WAAW;IAEX,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAmBzC"}
@@ -14,10 +14,12 @@ export class Mapping extends ProcessNode {
14
14
  constructor(inputs = {}) {
15
15
  super('Mapping');
16
16
  this.mode = inputs.mode ?? 'TEXTURE';
17
- this.loc = inputs.location ?? [0, 0, 0];
18
- this.rot = inputs.rotation ?? [0, 0, 0];
19
- this.scl = inputs.scale ?? [1, 1, 1];
20
- this._inputs = this.createInputs(inputs, { vector: ['color', null] });
17
+ this._inputs = this.createInputs(inputs, {
18
+ vector: ['color', null],
19
+ location: ['color', inputs.location ?? [0, 0, 0]],
20
+ rotation: ['color', inputs.rotation ?? [0, 0, 0]],
21
+ scale: ['color', inputs.scale ?? [1, 1, 1]],
22
+ });
21
23
  this._outputs = this.createOutputs({ Vector: 'color' });
22
24
  }
23
25
  getInputSockets() { return this._inputs; }
@@ -25,33 +27,34 @@ export class Mapping extends ProcessNode {
25
27
  compileDefs() { return Mapping.glslFunction; }
26
28
  compileCall(ctx) {
27
29
  const v = ctx.resolveInput(this._inputs.vector);
30
+ const loc = ctx.resolveInput(this._inputs.location);
31
+ const rot = ctx.resolveInput(this._inputs.rotation);
32
+ const scl = ctx.resolveInput(this._inputs.scale);
28
33
  const out = ctx.outputVar(this, 'Vector');
29
- const toRad = (d) => (d * Math.PI / 180).toFixed(6);
30
- const [lx, ly, lz] = this.loc;
31
- const [rx, ry, rz] = this.rot.map(Number);
32
- const [sx, sy, sz] = this.scl;
34
+ const toRad = (Math.PI / 180).toFixed(6);
33
35
  return [
34
36
  `vec3 _mp_v_${this.id} = ${v};`,
35
- `_mp_v_${this.id} = _mp_v_${this.id} - vec3(${lx.toFixed(4)}, ${ly.toFixed(4)}, ${lz.toFixed(4)});`,
36
- `_mp_v_${this.id} = _st_rotateX(_mp_v_${this.id}, ${toRad(rx)});`,
37
- `_mp_v_${this.id} = _st_rotateY(_mp_v_${this.id}, ${toRad(ry)});`,
38
- `_mp_v_${this.id} = _st_rotateZ(_mp_v_${this.id}, ${toRad(rz)});`,
39
- `_mp_v_${this.id} = _mp_v_${this.id} * vec3(${sx.toFixed(4)}, ${sy.toFixed(4)}, ${sz.toFixed(4)});`,
37
+ `vec3 _mp_r_${this.id} = ${rot} * ${toRad};`,
38
+ `_mp_v_${this.id} = _mp_v_${this.id} - ${loc};`,
39
+ `_mp_v_${this.id} = _st_rotateX(_mp_v_${this.id}, _mp_r_${this.id}.x);`,
40
+ `_mp_v_${this.id} = _st_rotateY(_mp_v_${this.id}, _mp_r_${this.id}.y);`,
41
+ `_mp_v_${this.id} = _st_rotateZ(_mp_v_${this.id}, _mp_r_${this.id}.z);`,
42
+ `_mp_v_${this.id} = _mp_v_${this.id} * ${scl};`,
40
43
  `vec3 ${out} = _mp_v_${this.id};`,
41
44
  ].join('\n ');
42
45
  }
43
46
  }
44
47
  Mapping.instanceSpecificDef = false;
45
- Mapping.glslFunction = `
46
- vec3 _st_rotateX(vec3 v, float a) {
47
- float c = cos(a), s = sin(a);
48
- return vec3(v.x, c * v.y - s * v.z, s * v.y + c * v.z);
49
- }
50
- vec3 _st_rotateY(vec3 v, float a) {
51
- float c = cos(a), s = sin(a);
52
- return vec3(c * v.x + s * v.z, v.y, -s * v.x + c * v.z);
53
- }
54
- vec3 _st_rotateZ(vec3 v, float a) {
55
- float c = cos(a), s = sin(a);
56
- return vec3(c * v.x - s * v.y, s * v.x + c * v.y, v.z);
48
+ Mapping.glslFunction = `
49
+ vec3 _st_rotateX(vec3 v, float a) {
50
+ float c = cos(a), s = sin(a);
51
+ return vec3(v.x, c * v.y - s * v.z, s * v.y + c * v.z);
52
+ }
53
+ vec3 _st_rotateY(vec3 v, float a) {
54
+ float c = cos(a), s = sin(a);
55
+ return vec3(c * v.x + s * v.z, v.y, -s * v.x + c * v.z);
56
+ }
57
+ vec3 _st_rotateZ(vec3 v, float a) {
58
+ float c = cos(a), s = sin(a);
59
+ return vec3(c * v.x - s * v.y, s * v.x + c * v.y, v.z);
57
60
  }`;
@@ -31,7 +31,7 @@ export declare class Math extends ProcessNode {
31
31
  private readonly _inputs;
32
32
  private readonly _outputs;
33
33
  constructor(inputs: MathInputs);
34
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
34
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
35
35
  getOutputSockets(): Record<string, OutputSocket>;
36
36
  compileDefs(): string;
37
37
  compileCall(ctx: CompileContext): string;
@@ -27,7 +27,7 @@ export declare class MixRGB extends ProcessNode {
27
27
  private readonly _inputs;
28
28
  private readonly _outputs;
29
29
  constructor(inputs?: MixRGBInputs);
30
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
30
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
31
31
  getOutputSockets(): Record<string, OutputSocket>;
32
32
  compileDefs(): string;
33
33
  compileCall(ctx: CompileContext): string;
@@ -27,7 +27,7 @@ export declare class MixShader extends ProcessNode {
27
27
  private readonly _inputs;
28
28
  private readonly _outputs;
29
29
  constructor(inputs?: MixShaderInputs);
30
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
30
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
31
31
  getOutputSockets(): Record<string, OutputSocket>;
32
32
  compileDefs(): string;
33
33
  compileCall(ctx: CompileContext): string;
@@ -28,7 +28,7 @@ export declare class MusgraveTexture extends ProcessNode {
28
28
  private readonly _inputs;
29
29
  private readonly _outputs;
30
30
  constructor(inputs?: MusgraveTextureInputs);
31
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
31
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
32
32
  getOutputSockets(): Record<string, OutputSocket>;
33
33
  compileDefs(): string;
34
34
  compileCall(ctx: CompileContext): string;
@@ -23,7 +23,7 @@ export declare class NoiseTexture extends ProcessNode {
23
23
  private readonly _inputs;
24
24
  private readonly _outputs;
25
25
  constructor(inputs?: NoiseTextureInputs);
26
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
26
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
27
27
  getOutputSockets(): Record<string, OutputSocket>;
28
28
  compileDefs(): string;
29
29
  compileCall(ctx: CompileContext): string;
@@ -22,7 +22,7 @@ export declare class Normal extends ProcessNode {
22
22
  private readonly _inputs;
23
23
  private readonly _outputs;
24
24
  constructor(inputs?: NormalInputs);
25
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
25
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
26
26
  getOutputSockets(): Record<string, OutputSocket>;
27
27
  compileDefs(): string;
28
28
  compileCall(ctx: CompileContext): string;
@@ -3,20 +3,24 @@ import type { NodeMetadata } from '../../core/ShaderNode.js';
3
3
  import type { CompileContext } from '../../core/CompileContext.js';
4
4
  import type { OutputSocket } from '../../core/OutputSocket.js';
5
5
  export interface NormalMapInputs {
6
- fac?: OutputSocket;
6
+ color?: OutputSocket;
7
7
  strength?: number | OutputSocket;
8
8
  }
9
9
  /**
10
- * Normal Map — converts a float noise value into a surface normal.
11
- * Derives normals via numerical gradient of the input Fac value.
12
- * Connect to PrincipledBSDF.normal input for surface detail lighting.
10
+ * Normal Map — Blender "Normal Map" node equivalent.
11
+ * Decodes a tangent-space normal texture (RGB → vector, [0,1] → [-1,1]) and
12
+ * rotates it into world space using a derivative-based cotangent frame, so no
13
+ * explicit vertex tangent attribute is required.
14
+ *
15
+ * Connect ImageTexture.Color (sampling a non-color / linear normal map texture)
16
+ * to `color`. Connect the result to PrincipledBSDF.normal.
13
17
  *
14
18
  * Inputs:
15
- * fac (float) — greyscale height value, typically from NoiseTexture.Fac
16
- * strength (float) — normal intensity [0-10] default: 1.0
19
+ * color (color) — sampled RGB normal texture, still in [0,1] range
20
+ * strength (float) — normal intensity, default: 1.0
17
21
  *
18
22
  * Outputs:
19
- * Normal (vector) — perturbed surface normal, ready for PrincipledBSDF.normal
23
+ * Normal (color) — world-space perturbed normal, ready for PrincipledBSDF.normal
20
24
  */
21
25
  export declare class NormalMap extends ProcessNode {
22
26
  get nodeType(): string;
@@ -26,7 +30,7 @@ export declare class NormalMap extends ProcessNode {
26
30
  private readonly _inputs;
27
31
  private readonly _outputs;
28
32
  constructor(inputs?: NormalMapInputs);
29
- getInputSockets(): Record<string, import("../../core/InputSocket.js").InputSocket<unknown>>;
33
+ getInputSockets(): Record<string, import("../../index.js").InputSocket<unknown>>;
30
34
  getOutputSockets(): Record<string, OutputSocket>;
31
35
  compileDefs(): string;
32
36
  compileCall(ctx: CompileContext): string;
@@ -1 +1 @@
1
- {"version":3,"file":"NormalMap.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/NormalMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAO,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CACjC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,IAAI,QAAQ,WAAyB;IACrC,MAAM,CAAC,mBAAmB,UAAQ;IAElC,IAAI,QAAQ,IAAI,YAAY,CAQ3B;IAED,MAAM,CAAC,YAAY,SAGnB;IAEA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,GAAE,eAAoB;IASxC,eAAe;IACf,gBAAgB;IAChB,WAAW;IAEX,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAezC"}
1
+ {"version":3,"file":"NormalMap.d.ts","sourceRoot":"","sources":["../../../src/nodes/process/NormalMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAK,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,IAAI,QAAQ,WAAyB;IACrC,MAAM,CAAC,mBAAmB,UAAQ;IAElC,IAAI,QAAQ,IAAI,YAAY,CAQ3B;IAED,MAAM,CAAC,YAAY,SAmBnB;IAEA,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmE;gBAEhF,MAAM,GAAE,eAAoB;IASxC,eAAe;IACf,gBAAgB;IAChB,WAAW;IAEX,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM;CAOzC"}