{"version":3,"file":"DotScreenShader.cjs","sources":["../../src/shaders/DotScreenShader.ts"],"sourcesContent":["import { Vector2 } from 'three'\n\n/**\n * Dot screen shader\n * based on glfx.js sepia shader\n * https://github.com/evanw/glfx.js\n */\n\nexport const DotScreenShader = {\n  uniforms: {\n    tDiffuse: { value: null },\n    tSize: { value: new Vector2(256, 256) },\n    center: { value: new Vector2(0.5, 0.5) },\n    angle: { value: 1.57 },\n    scale: { value: 1.0 },\n  },\n\n  vertexShader: [\n    'varying vec2 vUv;',\n\n    'void main() {',\n\n    '\tvUv = uv;',\n    '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n    '}',\n  ].join('\\n'),\n\n  fragmentShader: [\n    'uniform vec2 center;',\n    'uniform float angle;',\n    'uniform float scale;',\n    'uniform vec2 tSize;',\n\n    'uniform sampler2D tDiffuse;',\n\n    'varying vec2 vUv;',\n\n    'float pattern() {',\n\n    '\tfloat s = sin( angle ), c = cos( angle );',\n\n    '\tvec2 tex = vUv * tSize - center;',\n    '\tvec2 point = vec2( c * tex.x - s * tex.y, s * tex.x + c * tex.y ) * scale;',\n\n    '\treturn ( sin( point.x ) * sin( point.y ) ) * 4.0;',\n\n    '}',\n\n    'void main() {',\n\n    '\tvec4 color = texture2D( tDiffuse, vUv );',\n\n    '\tfloat average = ( color.r + color.g + color.b ) / 3.0;',\n\n    '\tgl_FragColor = vec4( vec3( average * 10.0 - 5.0 + pattern() ), color.a );',\n\n    '}',\n  ].join('\\n'),\n}\n"],"names":["Vector2"],"mappings":";;;AAQO,MAAM,kBAAkB;AAAA,EAC7B,UAAU;AAAA,IACR,UAAU,EAAE,OAAO,KAAK;AAAA,IACxB,OAAO,EAAE,OAAO,IAAIA,MAAQ,QAAA,KAAK,GAAG,EAAE;AAAA,IACtC,QAAQ,EAAE,OAAO,IAAIA,MAAQ,QAAA,KAAK,GAAG,EAAE;AAAA,IACvC,OAAO,EAAE,OAAO,KAAK;AAAA,IACrB,OAAO,EAAE,OAAO,EAAI;AAAA,EACtB;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;;"}