Skip to content

Commit 5c059b2

Browse files
authored
BlendModes: Added blend* prefix (#1408)
* BlendModes: Added blend* prefix * Update three.js * Add examples * Update patch and delete examples * Add src * Update patch and delete src
1 parent 4b5c525 commit 5c059b2

File tree

6 files changed

+72
-51
lines changed

6 files changed

+72
-51
lines changed

examples-testing/changes.patch

+10-10
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ index e7079c40..89676cd4 100644
763763
}
764764
});
765765
diff --git a/examples-testing/examples/misc_controls_arcball.ts b/examples-testing/examples/misc_controls_arcball.ts
766-
index fbef3318..be69ca7b 100644
766+
index 97653ede..c1d5378a 100644
767767
--- a/examples-testing/examples/misc_controls_arcball.ts
768768
+++ b/examples-testing/examples/misc_controls_arcball.ts
769769
@@ -12,8 +12,12 @@ const cameraType = { type: 'Perspective' };
@@ -781,7 +781,7 @@ index fbef3318..be69ca7b 100644
781781

782782
const arcballGui = {
783783
gizmoVisible: true,
784-
@@ -97,8 +101,8 @@ function init() {
784+
@@ -98,8 +102,8 @@ function init() {
785785
material.normalMap.wrapS = THREE.RepeatWrapping;
786786

787787
group.traverse(function (child) {
@@ -792,7 +792,7 @@ index fbef3318..be69ca7b 100644
792792
}
793793
});
794794

795-
@@ -164,12 +168,12 @@ function onWindowResize() {
795+
@@ -165,12 +169,12 @@ function onWindowResize() {
796796

797797
const halfW = perspectiveDistance * Math.tan(halfFovH);
798798
const halfH = perspectiveDistance * Math.tan(halfFovV);
@@ -810,7 +810,7 @@ index fbef3318..be69ca7b 100644
810810
}
811811

812812
camera.updateProjectionMatrix();
813-
@@ -183,7 +187,7 @@ function render() {
813+
@@ -184,7 +188,7 @@ function render() {
814814
renderer.render(scene, camera);
815815
}
816816

@@ -819,7 +819,7 @@ index fbef3318..be69ca7b 100644
819819
if (event.key === 'c') {
820820
if (event.ctrlKey || event.metaKey) {
821821
controls.copyState();
822-
@@ -195,7 +199,7 @@ function onKeyDown(event) {
822+
@@ -196,7 +200,7 @@ function onKeyDown(event) {
823823
}
824824
}
825825

@@ -14650,13 +14650,13 @@ index 9eb9922d..b75024ec 100644
1465014650
function updateSun() {
1465114651
const phi = THREE.MathUtils.degToRad(90 - parameters.elevation);
1465214652
diff --git a/examples-testing/examples/webgpu_parallax_uv.ts b/examples-testing/examples/webgpu_parallax_uv.ts
14653-
index 775399bf..1deb0cb1 100644
14653+
index 927a4661..9296a108 100644
1465414654
--- a/examples-testing/examples/webgpu_parallax_uv.ts
1465514655
+++ b/examples-testing/examples/webgpu_parallax_uv.ts
1465614656
@@ -1,11 +1,11 @@
1465714657
-import * as THREE from 'three';
1465814658
+import * as THREE from 'three/webgpu';
14659-
import { texture, parallaxUV, overlay, uv } from 'three/tsl';
14659+
import { texture, parallaxUV, blendOverlay, uv } from 'three/tsl';
1466014660

1466114661
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
1466214662

@@ -15355,12 +15355,12 @@ index 4aeb6e43..738b6580 100644
1535515355
postProcessing.render();
1535615356

1535715357
diff --git a/examples-testing/examples/webgpu_postprocessing_ssr.ts b/examples-testing/examples/webgpu_postprocessing_ssr.ts
15358-
index 26ac69d9..6a1cd1e8 100644
15358+
index 188581a5..ab9f2367 100644
1535915359
--- a/examples-testing/examples/webgpu_postprocessing_ssr.ts
1536015360
+++ b/examples-testing/examples/webgpu_postprocessing_ssr.ts
1536115361
@@ -1,6 +1,16 @@
1536215362
-import * as THREE from 'three';
15363-
-import { pass, mrt, output, transformedNormalView, metalness, blendNormal, screenUV, color } from 'three/tsl';
15363+
-import { pass, mrt, output, transformedNormalView, metalness, blendColor, screenUV, color } from 'three/tsl';
1536415364
-import { ssr } from 'three/addons/tsl/display/SSRNode.js';
1536515365
+import * as THREE from 'three/webgpu';
1536615366
+import {
@@ -15369,7 +15369,7 @@ index 26ac69d9..6a1cd1e8 100644
1536915369
+ output,
1537015370
+ transformedNormalView,
1537115371
+ metalness,
15372-
+ blendNormal,
15372+
+ blendColor,
1537315373
+ screenUV,
1537415374
+ color,
1537515375
+ ShaderNodeObject,

src-testing/changes.patch

+28-27
Original file line numberDiff line numberDiff line change
@@ -1103,7 +1103,7 @@ index 190fe8c5..d873bb24 100644
11031103

11041104
this.name = name;
11051105
diff --git a/src-testing/src/nodes/core/NodeBuilder.ts b/src-testing/src/nodes/core/NodeBuilder.ts
1106-
index 3003d168..b8f0f8ee 100644
1106+
index 3003d168..11c07746 100644
11071107
--- a/src-testing/src/nodes/core/NodeBuilder.ts
11081108
+++ b/src-testing/src/nodes/core/NodeBuilder.ts
11091109
@@ -7,7 +7,7 @@ import NodeCache from './NodeCache.js';
@@ -1515,8 +1515,8 @@ index 3003d168..b8f0f8ee 100644
15151515
+ texture: Texture,
15161516
+ textureProperty: string,
15171517
+ uvSnippet: string | null,
1518-
+ levelSnippet: string | null,
15191518
+ depthSnippet: string | null,
1519+
+ levelSnippet: string | null,
15201520
+ ): string;
15211521
+
15221522
+ abstract generateTextureGrad(
@@ -7492,7 +7492,7 @@ index 3b16e861..99874f36 100644
74927492
const monitor = renderObject.getMonitor();
74937493

74947494
diff --git a/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts b/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts
7495-
index 7db9864a..bb852529 100644
7495+
index 07bcda18..6ebfd686 100644
74967496
--- a/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts
74977497
+++ b/src-testing/src/renderers/webgl-fallback/WebGLBackend.ts
74987498
@@ -13,6 +13,7 @@ import { WebGLBufferRenderer } from './WebGLBufferRenderer.js';
@@ -7503,7 +7503,7 @@ index 7db9864a..bb852529 100644
75037503

75047504
//
75057505

7506-
@@ -687,7 +688,7 @@ class WebGLBackend extends Backend {
7506+
@@ -692,7 +693,7 @@ class WebGLBackend extends Backend {
75077507
this.textureUtils.destroyTexture(texture);
75087508
}
75097509

@@ -7924,7 +7924,7 @@ index 2cb79b70..6b5b60e0 100644
79247924
}
79257925

79267926
diff --git a/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts b/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
7927-
index 088d0565..02da8cea 100644
7927+
index ed81924a..57d481ec 100644
79287928
--- a/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
79297929
+++ b/src-testing/src/renderers/webgpu/nodes/WGSLNodeBuilder.ts
79307930
@@ -10,7 +10,7 @@ import {
@@ -7936,16 +7936,16 @@ index 088d0565..02da8cea 100644
79367936

79377937
import { getFormat } from '../utils/WebGPUTextureUtils.js';
79387938

7939-
@@ -24,6 +24,8 @@ import {
7940-
ClampToEdgeWrapping,
7939+
@@ -28,6 +28,8 @@ import {
79417940
MirroredRepeatWrapping,
7941+
NearestFilter,
79427942
} from '../../../constants.js';
79437943
+import { Texture } from '../../../textures/Texture.js';
79447944
+import UniformNode from '../../../nodes/core/UniformNode.js';
79457945

79467946
// GPUShaderStage is not defined in browsers not supporting WebGPU
79477947
const GPUShaderStage = self.GPUShaderStage;
7948-
@@ -203,7 +205,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7948+
@@ -198,7 +200,13 @@ class WGSLNodeBuilder extends NodeBuilder {
79497949
return texture.isVideoTexture === true && texture.colorSpace !== NoColorSpace;
79507950
}
79517951

@@ -7960,22 +7960,23 @@ index 088d0565..02da8cea 100644
79607960
if (shaderStage === 'fragment') {
79617961
if (depthSnippet) {
79627962
return `textureSample( ${textureProperty}, ${textureProperty}_sampler, ${uvSnippet}, ${depthSnippet} )`;
7963-
@@ -317,7 +325,12 @@ class WGSLNodeBuilder extends NodeBuilder {
7964-
return `tsl_biquadraticTexture( ${textureProperty}, ${wrapFunction}( ${uvSnippet} ), ${textureDimension}, i32( ${levelSnippet} ) )`;
7963+
@@ -318,7 +326,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7964+
return `tsl_biquadraticTexture( ${textureProperty}, ${wrapFunction}( ${uvSnippet} ), ${textureDimension}, u32( ${levelSnippet} ) )`;
79657965
}
79667966

7967-
- generateTextureLod(texture, textureProperty, uvSnippet, levelSnippet = '0') {
7967+
- generateTextureLod(texture, textureProperty, uvSnippet, depthSnippet, levelSnippet = '0u') {
79687968
+ generateTextureLod(
79697969
+ texture: Texture,
79707970
+ textureProperty: string,
79717971
+ uvSnippet: string | null,
7972-
+ levelSnippet: string | null = '0',
7972+
+ depthSnippet: string | null,
7973+
+ levelSnippet: string | null = '0u',
79737974
+ ) {
7974-
this._include('repeatWrapping');
7975+
const wrapFunction = this.generateWrapFunction(texture);
7976+
const textureDimension = this.generateTextureDimension(texture, textureProperty, levelSnippet);
79757977

7976-
const dimension =
7977-
@@ -328,7 +341,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7978-
return `textureLoad( ${textureProperty}, tsl_repeatWrapping( ${uvSnippet}, ${dimension} ), i32( ${levelSnippet} ) )`;
7978+
@@ -327,7 +341,13 @@ class WGSLNodeBuilder extends NodeBuilder {
7979+
return this.generateTextureLoad(texture, textureProperty, coordSnippet, depthSnippet, levelSnippet);
79797980
}
79807981

79817982
- generateTextureLoad(texture, textureProperty, uvIndexSnippet, depthSnippet, levelSnippet = '0u') {
@@ -7987,9 +7988,9 @@ index 088d0565..02da8cea 100644
79877988
+ levelSnippet = '0u',
79887989
+ ) {
79897990
if (depthSnippet) {
7990-
return `textureLoad( ${textureProperty}, ${uvIndexSnippet}, ${depthSnippet}, ${levelSnippet} )`;
7991+
return `textureLoad( ${textureProperty}, ${uvIndexSnippet}, ${depthSnippet}, u32( ${levelSnippet} ) )`;
79917992
} else {
7992-
@@ -363,11 +382,11 @@ class WGSLNodeBuilder extends NodeBuilder {
7993+
@@ -369,11 +389,11 @@ class WGSLNodeBuilder extends NodeBuilder {
79937994
}
79947995

79957996
generateTextureGrad(
@@ -8006,7 +8007,7 @@ index 088d0565..02da8cea 100644
80068007
shaderStage = this.shaderStage,
80078008
) {
80088009
if (shaderStage === 'fragment') {
8009-
@@ -379,11 +398,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8010+
@@ -385,11 +405,11 @@ class WGSLNodeBuilder extends NodeBuilder {
80108011
}
80118012

80128013
generateTextureCompare(
@@ -8023,7 +8024,7 @@ index 088d0565..02da8cea 100644
80238024
shaderStage = this.shaderStage,
80248025
) {
80258026
if (shaderStage === 'fragment') {
8026-
@@ -396,11 +415,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8027+
@@ -402,11 +422,11 @@ class WGSLNodeBuilder extends NodeBuilder {
80278028
}
80288029

80298030
generateTextureLevel(
@@ -8040,7 +8041,7 @@ index 088d0565..02da8cea 100644
80408041
shaderStage = this.shaderStage,
80418042
) {
80428043
let snippet = null;
8043-
@@ -422,11 +441,11 @@ class WGSLNodeBuilder extends NodeBuilder {
8044+
@@ -428,11 +448,11 @@ class WGSLNodeBuilder extends NodeBuilder {
80448045
}
80458046

80468047
generateTextureBias(
@@ -8057,7 +8058,7 @@ index 088d0565..02da8cea 100644
80578058
shaderStage = this.shaderStage,
80588059
) {
80598060
if (shaderStage === 'fragment') {
8060-
@@ -436,7 +455,7 @@ class WGSLNodeBuilder extends NodeBuilder {
8061+
@@ -442,7 +462,7 @@ class WGSLNodeBuilder extends NodeBuilder {
80618062
}
80628063
}
80638064

@@ -8066,7 +8067,7 @@ index 088d0565..02da8cea 100644
80668067
if (node.isNodeVarying === true && node.needsInterpolation === true) {
80678068
if (shaderStage === 'vertex') {
80688069
return `varyings.${node.name}`;
8069-
@@ -503,7 +522,12 @@ class WGSLNodeBuilder extends NodeBuilder {
8070+
@@ -509,7 +529,12 @@ class WGSLNodeBuilder extends NodeBuilder {
80708071
}
80718072
}
80728073

@@ -8080,7 +8081,7 @@ index 088d0565..02da8cea 100644
80808081
const uniformNode = super.getUniformFromNode(node, type, shaderStage, name);
80818082
const nodeData = this.getDataFromNode(node, shaderStage, this.globalCache);
80828083

8083-
@@ -620,7 +644,7 @@ class WGSLNodeBuilder extends NodeBuilder {
8084+
@@ -626,7 +651,7 @@ class WGSLNodeBuilder extends NodeBuilder {
80848085
return 'vertexIndex';
80858086
}
80868087

@@ -8089,7 +8090,7 @@ index 088d0565..02da8cea 100644
80898090
const layout = shaderNode.layout;
80908091
const flowData = this.flowShaderNode(shaderNode);
80918092

8092-
@@ -787,8 +811,8 @@ ${flowData.code}
8093+
@@ -793,8 +818,8 @@ ${flowData.code}
80938094
return snippets.join('\n');
80948095
}
80958096

@@ -8100,7 +8101,7 @@ index 088d0565..02da8cea 100644
81008101

81018102
if (shaderStage === 'compute') {
81028103
this.getBuiltin('global_invocation_id', 'id', 'vec3<u32>', 'attribute');
8103-
@@ -874,8 +898,8 @@ ${flowData.code}
8104+
@@ -880,8 +905,8 @@ ${flowData.code}
81048105
return `\n${snippets.join('\n')}\n`;
81058106
}
81068107

@@ -8111,7 +8112,7 @@ index 088d0565..02da8cea 100644
81118112

81128113
if (shaderStage === 'vertex') {
81138114
this.getBuiltin('position', 'Vertex', 'vec4<f32>', 'vertex');
8114-
@@ -911,7 +935,7 @@ ${flowData.code}
8115+
@@ -917,7 +942,7 @@ ${flowData.code}
81158116
return shaderStage === 'vertex' ? this._getWGSLStruct('VaryingsStruct', '\t' + code) : code;
81168117
}
81178118

types/three/src/nodes/TSL.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export * from "./accessors/VelocityNode.js";
8484
export * from "./accessors/VertexColorNode.js";
8585

8686
// display
87-
export * from "./display/BlendMode.js";
87+
export * from "./display/BlendModes.js";
8888
export * from "./display/BumpMapNode.js";
8989
export * from "./display/ColorAdjustment.js";
9090
export * from "./display/ColorSpaceNode.js";

types/three/src/nodes/display/BlendMode.d.ts

-12
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import Node from "../core/Node.js";
2+
import { NodeRepresentation, ShaderNodeObject } from "../tsl/TSLCore.js";
3+
4+
export const blendBurn: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
5+
6+
export const blendDodge: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
7+
8+
export const blendScreen: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
9+
10+
export const blendOverlay: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
11+
12+
export const blendColor: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
13+
14+
/**
15+
* @deprecated
16+
*/
17+
export const burn: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
18+
19+
/**
20+
* @deprecated
21+
*/
22+
export const dodge: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
23+
24+
/**
25+
* @deprecated
26+
*/
27+
export const screen: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;
28+
29+
/**
30+
* @deprecated
31+
*/
32+
export const overlay: (base: NodeRepresentation, blend: NodeRepresentation) => ShaderNodeObject<Node>;

0 commit comments

Comments
 (0)