颜色查找表,即将一个颜色映射到另一个颜色的方法 比如如下的颜色映射表 颜色查找表的映射算法通常是以 蓝色 的值来确定在哪个色块内,通过 红色绿色 确定在当前这个色块内的坐标 即蓝色可以确定 UVx 坐标的起始,但是不同的颜色查找表有不同的算法,有些查找表并非上图所示的一行,而是多行构成的 算法如下:

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;

// texture(color_grading_lut_texture_sampler, uv)

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;
}