颜色查找表,即将一个颜色映射到另一个颜色的方法 比如如下的颜色映射表 颜色查找表的映射算法通常是以 蓝色
的值来确定在哪个色块内,通过 红色
和 绿色
确定在当前这个色块内的坐标 即蓝色可以确定 UV
的 x
坐标的起始,但是不同的颜色查找表有不同的算法,有些查找表并非上图所示的一行,而是多行构成的 算法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #version 310 es
#extension GL_GOOGLE_include_directive : enable
#include "constants.h"
layout(input_attachment_index = 0, set = 0, binding = 0) uniform highp subpassInput in_color;
layout(set = 0, binding = 1) uniform sampler2D color_grading_lut_texture_sampler;
layout(location = 0) out highp vec4 out_color;
void main() { highp ivec2 lut_tex_size = textureSize(color_grading_lut_texture_sampler, 0); highp float _COLORS = float(lut_tex_size.y);
highp vec4 color = subpassLoad(in_color).rgba;
highp vec2 uv; uv.y = color.r; uv.x = (floor(color.b*16.0f))*(1.0f/16.0f); uv.x += (1.0f-color.g) * (1.0f/16.0f); color = texture(color_grading_lut_texture_sampler, uv);
out_color = color; }
|