个人觉得,https://catlikecoding.com/unity/tutorials/custom-srp/color-grading/
这里的LUT的使用,并没有降低任何的计算。
因为LUT的生成,是在每帧都生成的。并非离线bake出来的一个texture。
如何使用shader,bake出来一个颜色查找表呢?
3D的LUT,使用2D图进行表示。
绘制:
E:\OGL\custom-srp-13-color-grading\Library\PackageCache\com.unity.render-pipelines.core@7.3.1\ShaderLibrary\Color.hlsl
最后到摄像机:
测试:
fixed3 GetLutStripValue(float2 uv, float4 params)
{
uv -= params.yz;
fixed3 color;
color.r = frac(uv.x * params.x);
color.b = uv.x - color.r / params.x;
color.g = uv.y;
return color * params.w;
}
fixed4 frag (v2f i) : SV_Target
{
float w = 16 * 16;
float h = 16;
float4 params = float4(h, 0.5f / w, 0.5f / h, h / (h - 1));
fixed3 color = GetLutStripValue(i.uv, params);
return fixed4(color.r, color.g, color.b, 1);
}
这个是标准没有任何滤镜的颜色条带。