Browse Source

new includes

SUNAG 9 năm trước cách đây
mục cha
commit
b4a87f59f7
1 tập tin đã thay đổi với 40 bổ sung1 xóa
  1. 40 1
      examples/js/nodes/NodeLib.js

+ 40 - 1
examples/js/nodes/NodeLib.js

@@ -71,6 +71,31 @@ THREE.NodeLib.add( new THREE.FunctionNode( [
 "}"
 ].join( "\n" ), null, { derivatives: true } ) );
 
+//
+//	Noise
+//
+
+THREE.NodeLib.add( new THREE.FunctionNode( [
+"float snoise(vec2 co) {",
+	"return fract( sin( dot(co.xy, vec2(12.9898,78.233) ) ) * 43758.5453 );",
+"}"
+].join( "\n" ) ) );
+
+//
+//	Hue
+//
+
+THREE.NodeLib.add( new THREE.FunctionNode( [
+"vec3 hue_rgb(vec3 rgb, float adjustment) {",
+	"const mat3 RGBtoYIQ = mat3(0.299, 0.587, 0.114, 0.595716, -0.274453, -0.321263, 0.211456, -0.522591, 0.311135);",
+	"const mat3 YIQtoRGB = mat3(1.0, 0.9563, 0.6210, 1.0, -0.2721, -0.6474, 1.0, -1.107, 1.7046);",
+	"vec3 yiq = RGBtoYIQ * rgb;",
+	"float hue = atan(yiq.z, yiq.y) + adjustment;",
+	"float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y);",
+	"return YIQtoRGB * vec3(yiq.x, chroma * cos(hue), chroma * sin(hue));",
+"}"
+].join( "\n" ) ) );
+
 //
 //	Saturation
 //
@@ -88,8 +113,22 @@ THREE.NodeLib.add( new THREE.FunctionNode( [
 //
 
 THREE.NodeLib.add( new THREE.FunctionNode( [
-// Algorithm from Chapter 10 of Graphics Shaders.
+// Algorithm from Chapter 10 of Graphics Shaders
 "float luminance_rgb(vec3 rgb) {",
 	"return dot(rgb, LUMA);",
 "}"
 ].join( "\n" ) ) );
+
+//
+//	Vibrance
+//
+
+THREE.NodeLib.add( new THREE.FunctionNode( [
+// Shader by Evan Wallace adapted from @lo-th
+"vec3 vibrance_rgb(vec3 rgb, float adjustment) {",
+	"float average = (rgb.r + rgb.g + rgb.b) / 3.0;",
+	"float mx = max(rgb.r, max(rgb.g, rgb.b));",
+	"float amt = (mx - average) * (-3.0 * adjustment);",
+	"return mix(rgb.rgb, vec3(mx), amt);",
+"}"
+].join( "\n" ) ) );