Skip to content

Commit

Permalink
opt in
Browse files Browse the repository at this point in the history
  • Loading branch information
ameerabuf committed Feb 9, 2025
1 parent 16e3dbf commit bbb9c54
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions src/effects/channel-split.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export default function channelSplit({
offsetInputR = 'u_channelOffsetR',
offsetInputG = 'u_channelOffsetG',
offsetInputB = 'u_channelOffsetB',
boundsOffsetFactor = (boundsOffset) => '1.0',
} = {}) {
/**
* @typedef {Object} channelSplitEffect
Expand Down Expand Up @@ -45,12 +46,18 @@ export default function channelSplit({
vec2 redSample = sourceCoord + _splitOffsetR;
vec2 greenSample = sourceCoord + _splitOffsetG;
vec2 blueSample = sourceCoord + _splitOffsetB;
float redFactor = exp(100.0 * min(min(0.0, min(redSample.x, redSample.y)), min(0.0, min(1.0 - redSample.x, 1.0 - redSample.y))));
float greenFactor = exp(100.0 * min(min(0.0, min(greenSample.x, greenSample.y)), min(0.0, min(1.0 - greenSample.x, 1.0 - greenSample.y))));
float blueFactor = exp(100.0 * min(min(0.0, min(blueSample.x, blueSample.y)), min(0.0, min(1.0 - blueSample.x, 1.0 - blueSample.y))));
float redSplit = texture2D(u_source, sourceCoord + _splitOffsetR).r * redFactor;
float greenSplit = texture2D(u_source, sourceCoord + _splitOffsetG).g * greenFactor;
float blueSplit = texture2D(u_source, sourceCoord + _splitOffsetB).b * blueFactor;
float redBoundsOffset = min(0.0, min(min(redSample.x, redSample.y), min(1.0 - redSample.x, 1.0 - redSample.y)));
float greenBoundsOffset = min(0.0, min(min(greenSample.x, greenSample.y), min(1.0 - greenSample.x, 1.0 - greenSample.y)));
float blueBoundsOffset = min(0.0, min(min(blueSample.x, blueSample.y), min(1.0 - blueSample.x, 1.0 - blueSample.y)));
float redSplit = texture2D(u_source, sourceCoord + _splitOffsetR).r * ${boundsOffsetFactor(
'redBoundsOffset'
)};
float greenSplit = texture2D(u_source, sourceCoord + _splitOffsetG).g * ${boundsOffsetFactor(
'greenBoundsOffset'
)};
float blueSplit = texture2D(u_source, sourceCoord + _splitOffsetB).b * ${boundsOffsetFactor(
'blueBoundsOffset'
)};
color = vec3(redSplit, greenSplit, blueSplit);
}`,
},
Expand Down

0 comments on commit bbb9c54

Please sign in to comment.