@absulit/points
Version:
A Generative Art library made in WebGPU
33 lines (24 loc) • 1.25 kB
JavaScript
import { texturePosition } from '../../image.js';
const frag = /*wgsl*/`
${texturePosition}
fn main(
color: vec4f,
uv: vec2f,
ratio: vec2f, // relation between params.screen.x and params.screen.y
uvr: vec2f, // uv with aspect ratio corrected
mouse: vec2f,
position: vec4f
) -> vec4f {
let imageColor = texturePosition(renderpass_feedbackTexture, renderpass_feedbackSampler, vec2(0., 0), uvr, true);
// --------- chromatic displacement vector
let cdv = vec2(params.chromaticAberration_distance, 0.);
let d = distance(vec2(.5,.5), uvr);
let imageColorR = texturePosition(renderpass_feedbackTexture, renderpass_feedbackSampler, vec2(0.) * ratio, uvr + cdv * d, true).r;
let imageColorG = texturePosition(renderpass_feedbackTexture, renderpass_feedbackSampler, vec2(0.) * ratio, uvr, true).g;
let imageColorB = texturePosition(renderpass_feedbackTexture, renderpass_feedbackSampler, vec2(0.) * ratio, uvr - cdv * d, true).b;
let finalColor:vec4f = vec4(imageColorR, imageColorG, imageColorB, 1);
return finalColor;
}
`;
export default frag;