简单滤镜效果

1.大部分滤镜是通过基础的“曝光、对比度、色温等”配合滤镜算法生成的一种色彩模式
2.上述算法在游戏处理中复杂度很高,所以我们一些简单的色彩滤镜效果可以使用lut的方式

LUT What?

LUT(Look Up Table)指的是“颜色查找表”,是原始颜色通过LUT的颜色查找表映射到新的色彩上去。是单独针对色彩空间的一种管理和转换。

与滤镜的一些区别

1.两者虽然都能让图片的色彩发生变化,但是工作原理不同。lut只能针对色彩路径转换,滤镜可以通过算法针对图片进行更多特征性改变。
2.比如一些颗粒化,模糊等不是简单处理像素颜色,所以不能通过lut实现
3.Lut的优点是把复杂的计算公式放入了图片的前期处理,后期使用只需要查找对应颜色即可。

原始lut图片格式

512*16格式贴图

1024*32格式贴图

Lut贴图设置的注意事项

1.取消Mipmap设置
2.Format格式要改为RGB24
3.2D方式 贴图要把 anisolevel 等级设置为0
4.3D方式 打开Read/Write enabled
5.贴图的sRGB关闭,否则线性空间会有问题

Lut在手游中的应用场景

1.屏幕后处理中使用
2.游戏中部分功能的使用,比如眼睛的色彩空间贴图更换

PS中修改贴图

1.本文使用的是 512*16的贴图格式
2.在ps中进行了“色相/饱和度”“曲线”“照片滤镜”“渐变映射”等操作

对游戏屏幕截图进行的PS操作

操作后的原图效果

对lut原图进行操作

1.把上述步骤使用了PS中“色相/饱和度”“曲线”“照片滤镜”“渐变映射” ,在lut原图上进行操作
2.在游戏中使用操作后的贴图

Lut贴图使用方式

1.Lut有2D和3D贴图两种方式使用
2.由于部分机型和unity的版本原因,不支持3DShader贴图,只能使用2D贴图传入方式
3.2D方式兼容性好,但2D方式要消耗更多的GPU算力

2D代码

half3 ApplyLut2D(sampler2D tex, half3 color, half3 offset){color.z *= offset.z;half shift = floor(color.z);color.xy = (color.xy * offset.z + 0.5) * offset.xy;color.x += shift * offset.y;color.xyz = lerp(tex2D(tex, color.xy).rgb, tex2D(tex, color.xy + half2(offset.y, 0)).rgb, color.z - shift);return color;}

2D代码参数含义

sampler2D   tex   为PS修改后的标准2D贴图
half3     color   为原始采样值
half3    offset   计算的偏移值,
offset 计算方式如下:
Vector3(1f /贴图宽度 , 1f /贴图高度, 贴图高度 - 1f)

3D代码

public void SetTexture3D(Texture2D temp2DTex){if (temp2DTex){int dim = temp2DTex.width * temp2DTex.height;dim = temp2DTex.height;var c = temp2DTex.GetPixels();var newC = new Color[c.Length];for (int i = 0; i < dim; i++){for (int j = 0; j < dim; j++){for (int k = 0; k < dim; k++){newC[i + (j * dim) + (k * dim * dim)] = c[k * dim + i + j * dim * dim];}}}if (m_Texture3D)DestroyImmediate(m_Texture3D);m_Texture3D = new Texture3D(dim, dim, dim, TextureFormat.ARGB32, false);m_Texture3D.SetPixels(newC);m_Texture3D.Apply();}}

逻辑代码中生成一张3D贴图

3D shader语句

主要语句如下:
tex3D(_LutTex3D, tex.rgb * _Scale + _Offset).rgb

参数含义如下:
_LutTex3D   为生成的3D贴图
_Scale    (贴图宽度 - 1) / (1.0f *贴图宽度 )
_Offset    1.0f / (2.0f *贴图宽度 )

LUT实现简单滤镜效果相关推荐

  1. ios 简单滤镜效果

    #import "ImageUtil.h" #include <sys/time.h> #include <math.h> #include <std ...

  2. 使用 HTML5 canvas 进行 Web 绘图

    新的 HTML5 规范旨在帮助开发人员更轻松的编写出各类 Web 应用,以顺应当前 SaaS,云计算以及 RIA 等技术的最新趋势.在 HTML5 得以广泛推广之前,开发人员通常使用 SVG,VML ...

  3. 如何在调色环节保障网剧制作的创意、效率和品质(案例解析)

    中国互联网影视的高速发展,已经让优秀的网络剧集形成了高品质的品牌效应,这些项目的制作人们,已经开始对标一些国际大厂牌的影视作品. 我们从后期调色公司的角度来说,比较具体的感受就是,传统电视剧或者电影的 ...

  4. typescript用什么软件写_用TypeScript写了个低配版H5美图工具

    前言 最近两月在学习canvas时候,发现很多有意思的技术能力,特别是在图像处理这一领域.让我想起大学课堂教学的<数字图像处理>(冈萨雷斯 版本).但是很遗憾的是,大学上完课应付考试后全部 ...

  5. C++ override解释

    C++ override从字面意思上,是覆盖的意思,实际上在C++中它是覆盖了一个方法并且对其重写,从而达到不同的作用.在我们C++编程过程中,最熟悉的就是对接口方法的实现,在接口中一般只是对方法进行 ...

  6. Android 高级UI解密 (二) :Paint滤镜 与 颜色过滤(矩阵变换)

    若是曾经查看过系统UI的源码, 会发现其中使用了一些渲染效果,例如将图片加上黑白.怀旧的效果,生活中常用的逆天美颜相机,其中的原理就是使用了滤镜效果.颜色通道过滤.若还要深究其原理组成,便涉及到了高等 ...

  7. 查找表(LUT,Look-up Table)的简单理解

    查找表(LUT,Look-up Table)的简单理解 引入:假设有一个 4 输入(a,b,c,d) 1 输出(o) 的逻辑单元,想要了解其内部结构. 输入按照 0000-1111 去遍历,记录输出. ...

  8. android lut格式文件,如何将颜色LUT应用于位图图像以获取android中的滤镜效果?

    这里我对android中的LUT有疑问. 我的问题是,我有4X4 LUT,使用这些LUT对android中的位图图像应用滤镜效果.下面是我的示例LUT文件链接. Lut link sample 它在a ...

  9. android 代码 lut,如何将颜色LUT应用于位图图像以获取android中的滤镜效果?

    我正在研究一个LUT应用程序库,它可以简化在Android中使用LUT图像的过程.它使用下面的algorythm,但我希望将来增强它以优化内存使用.现在它还猜测了LUT的颜色轴: https://gi ...

最新文章

  1. sequence oracle mysql,oracle sequence转mysql(mysql实现oracle的sequence功能)
  2. CMD一键获取 所有连接过的WIFI密码
  3. mysql数据类型符号位_MySQL数据类型
  4. apache 服务器安全配置
  5. vue导入excel进度条_Vue 前端开发——导入Excel/Csv
  6. 安卓个人信息界面_LOL手游上架,安卓+IOS安装教程
  7. HTML特殊编码转换
  8. 深入理解lua的协程coroutine
  9. MobileNet论文阅读笔记
  10. java 扇形_使用js画图之圆、弧、扇形
  11. 如何在 Pr 2020中使用音轨混合器?
  12. svn 迁移到git下全过程
  13. 任正非谈鸿蒙系统研究,任正非谈鸿蒙系统 有优势 有信心打造生态
  14. AForge.Video.FFMPEG桌面录屏
  15. 有什么软件可以快速测试到苹果,苹果官方App测试工具TestFlight
  16. js输出100以内的质数
  17. relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol may bind externally can not be used 【ARM64平台编译】
  18. 智能暖风机——8.云端控制
  19. Timer源代码分析
  20. 深圳Java培训机构排名榜单:动力节点上榜,第一名耳熟能详

热门文章

  1. 罗戈研究:供应链物流碳管理数字化与科技创新(附下载)
  2. sublime 3 本地安装package control插件、channel_v3.json文件配置下载
  3. HTTP之Body格式
  4. 0018__九针串口公母头定义 RS232串口线常见接法与引脚定义
  5. 雷达多普勒频率计算公式_自动驾驶毫米波雷达物体检测技术-算法
  6. c++高级游戏集游戏
  7. Python拆包 (字典和元祖)
  8. python 元祖--字典
  9. 树莓派HDMI视频端口参数英文档案
  10. master -> master (non-fast-forward)