#ifndef GL_ES #define precision #define lowp #define mediump #define highp #endif // !defined(GL_ES) precision highp float; uniform sampler2D u_InputImage; vec4 inputLookup(vec2 coords) { return texture2D(u_InputImage, coords); } varying vec2 hdConformedUV; varying vec2 uv; uniform vec2 u_RenderSize; uniform float u_Time; uniform int u_PassIndex; uniform sampler2D lookup; uniform sampler2D Nice_Chrome; #define GLSLIFY 1 vec4 lookup_1_0(in vec4 textureColor, in sampler2D lookupTable) { #ifndef LUT_NO_CLAMP textureColor = clamp(textureColor, 0.0, 1.0); #endif mediump float blueColor = textureColor.b * 63.0; mediump vec2 quad1; quad1.y = floor(floor(blueColor) / 8.0); quad1.x = floor(blueColor) - (quad1.y * 8.0); mediump vec2 quad2; quad2.y = floor(ceil(blueColor) / 8.0); quad2.x = ceil(blueColor) - (quad2.y * 8.0); highp vec2 texPos1; texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); #ifdef LUT_FLIP_Y texPos1.y = 1.0-texPos1.y; #endif highp vec2 texPos2; texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); #ifdef LUT_FLIP_Y texPos2.y = 1.0-texPos2.y; #endif lowp vec4 newColor1 = texture2D(lookupTable, texPos1); lowp vec4 newColor2 = texture2D(lookupTable, texPos2); lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor)); return newColor; } void main() { vec4 inputColor = inputLookup(uv); gl_FragColor = lookup_1_0(inputColor, lookup); }