@triforge/shader-core 0.2.1 → 0.4.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 (46) hide show
  1. package/dist/bundle.js +196 -39
  2. package/dist/core/CompileContext.d.ts +2 -0
  3. package/dist/core/CompileContext.d.ts.map +1 -1
  4. package/dist/core/CompileContext.js +24 -9
  5. package/dist/core/OutputNode.d.ts.map +1 -1
  6. package/dist/core/OutputNode.js +1 -0
  7. package/dist/core/ShaderNode.d.ts +7 -0
  8. package/dist/core/ShaderNode.d.ts.map +1 -1
  9. package/dist/core/ShaderNode.js +23 -0
  10. package/dist/core/SocketType.d.ts +1 -1
  11. package/dist/core/SocketType.js +1 -1
  12. package/dist/index.d.ts +1 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -0
  15. package/dist/nodes/output/MaterialOutput.js +2 -2
  16. package/dist/nodes/process/AddShader.js +4 -4
  17. package/dist/nodes/process/Bump.d.ts +25 -2
  18. package/dist/nodes/process/Bump.d.ts.map +1 -1
  19. package/dist/nodes/process/Bump.js +113 -32
  20. package/dist/nodes/process/DiffuseBSDF.js +8 -8
  21. package/dist/nodes/process/Emission.js +4 -4
  22. package/dist/nodes/process/GlassBSDF.js +14 -14
  23. package/dist/nodes/process/GlossyBSDF.js +15 -15
  24. package/dist/nodes/process/MixShader.js +4 -4
  25. package/dist/nodes/process/PrincipledBSDF.d.ts +7 -0
  26. package/dist/nodes/process/PrincipledBSDF.d.ts.map +1 -1
  27. package/dist/nodes/process/PrincipledBSDF.js +55 -40
  28. package/dist/nodes/process/PrincipledHair.js +71 -71
  29. package/dist/nodes/process/PrincipledVolume.js +22 -22
  30. package/dist/nodes/process/RefractionBSDF.js +8 -8
  31. package/dist/nodes/process/ShaderScript.d.ts +2 -2
  32. package/dist/nodes/process/ShaderScript.d.ts.map +1 -1
  33. package/dist/nodes/process/ShaderScript.js +7 -3
  34. package/dist/nodes/process/ShaderToRGB.js +2 -2
  35. package/dist/nodes/process/SheenBSDF.js +13 -13
  36. package/dist/nodes/process/SpecularBSDF.js +16 -16
  37. package/dist/nodes/process/SubsurfaceScattering.js +8 -8
  38. package/dist/nodes/process/ToonBSDF.js +7 -7
  39. package/dist/nodes/process/TranslucentBSDF.js +6 -6
  40. package/dist/nodes/process/TransparentBSDF.d.ts +26 -0
  41. package/dist/nodes/process/TransparentBSDF.d.ts.map +1 -0
  42. package/dist/nodes/process/TransparentBSDF.js +29 -0
  43. package/dist/nodes/process/VolumeAbsorption.js +4 -4
  44. package/dist/nodes/process/VolumeScatter.js +8 -8
  45. package/dist/nodes/shader/RayPortal.js +1 -1
  46. package/package.json +1 -1
@@ -28,15 +28,15 @@ export class VolumeScatter extends ProcessNode {
28
28
  const color = ctx.resolveInput(this._inputs.color);
29
29
  const density = ctx.resolveInput(this._inputs.density);
30
30
  const anisotropy = ctx.resolveInput(this._inputs.anisotropy);
31
- return `vec3 ${ctx.outputVar(this, 'Volume')} = _st_volumeScatter(${color}, ${density}, ${anisotropy});`;
31
+ return `vec4 ${ctx.outputVar(this, 'Volume')} = vec4(_st_volumeScatter(${color}, ${density}, ${anisotropy}), 1.0);`;
32
32
  }
33
33
  }
34
34
  VolumeScatter.instanceSpecificDef = false;
35
- VolumeScatter.glslFunction = `
36
- vec3 _st_volumeScatter(vec3 color, float density, float anisotropy) {
37
- float g = clamp(anisotropy, -0.9999, 0.9999);
38
- float g2 = g * g;
39
- // HG phase at cosTheta=0 (isotropic approximation for surface shading context)
40
- float phase = (1.0 - g2) / pow(1.0 + g2, 1.5);
41
- return color * density * phase;
35
+ VolumeScatter.glslFunction = `
36
+ vec3 _st_volumeScatter(vec3 color, float density, float anisotropy) {
37
+ float g = clamp(anisotropy, -0.9999, 0.9999);
38
+ float g2 = g * g;
39
+ // HG phase at cosTheta=0 (isotropic approximation for surface shading context)
40
+ float phase = (1.0 - g2) / pow(1.0 + g2, 1.5);
41
+ return color * density * phase;
42
42
  }`;
@@ -50,7 +50,7 @@ export class RayPortal extends ProcessNode {
50
50
  const blend = Number.isFinite(rawBlend) ? Math.min(Math.max(rawBlend, 0.0), 1.0).toFixed(4) : '1.0000';
51
51
  // Rasterizer passthrough: BSDF = color * blend
52
52
  // Portal Transform is intentionally unused in this mode.
53
- return `vec3 ${ctx.outputVar(this, 'BSDF')} = ${color} * ${blend};`;
53
+ return `vec4 ${ctx.outputVar(this, 'BSDF')} = vec4(${color} * ${blend}, 1.0);`;
54
54
  }
55
55
  }
56
56
  RayPortal.instanceSpecificDef = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@triforge/shader-core",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "GLSL shader library for Three.js with Blender workflow",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",