UNPKG

gl-react-native-filters

Version:

Includes the instagram filters for gl-react-native, see examples folder as the usage tip.

48 lines (42 loc) 1.65 kB
import React from 'react'; import PropTypes from 'prop-types'; import { GLSL, Shaders, Node } from 'gl-react'; import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource'; const shaders = Shaders.create({ Rise: { frag: GLSL` precision highp float; varying vec2 uv; uniform sampler2D inputImageTexture; uniform sampler2D inputImageTexture2; uniform sampler2D inputImageTexture3; uniform sampler2D inputImageTexture4; void main () { vec4 texel = texture2D(inputImageTexture, uv); vec3 bbTexel = texture2D(inputImageTexture2, uv).rgb; texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, (1.0-texel.r))).r; texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, (1.0-texel.g))).g; texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, (1.0-texel.b))).b; vec4 mapped; mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .83333)).r; mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g; mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .16666)).b; mapped.a = 1.0; gl_FragColor = mapped; }` } }); const Rise = ({ children: t }) => (<Node shader={shaders.Rise} uniforms={{ inputImageTexture: t, inputImageTexture2: resolveAssetSource(require('../resources/blackboard1024.png')), inputImageTexture3: resolveAssetSource(require('../resources/overlayMap.png')), inputImageTexture4: resolveAssetSource(require('../resources/riseMap.png')) }} />); Rise.propTypes = { children: PropTypes.object.isRequired }; export default Rise;