目录
前言
一、索引表技术
二、Ramp图表的采样
三、Ramp图表编辑工具使用指南
四、资源链接
前言
——因为最近在做一些基于自己画风的定制化卡通渲染效果,其中用到了渐变纹理、或者说Ramp图表技术(我也不知道专业名称叫什么- -反正就是很多条ramp渐变映射条拼成一张图,很多像是原神之类偏卡通风格的项目都会用到这种技术。关于单行的渐变纹理是什么以及相关的出图工具可以看我以前写过的一篇文)。
——如果是用之前的工具单独去做一条一条的ramp再手动拼一块太麻烦了,而且还得去按灰度索引对应行数(后面解释灰度索引是啥),所以我干脆来了一波工具升级(完全重写- -)。
——下面是工具的操作界面以及一些阶段性成果。
——单独输出漫反射渐变效果
——单独输出镜面反射渐变效果
——最终混合再加上亿些其他算法的效果
一、索引表技术
——对于上面的效果,如果是纯美术童鞋的话,很可能采用的一种实现方式是,在模型上把使用不同ramp的网格都分开,然后分别赋予不同的材质,于是就会看到一个模型上十几二十个材质球的情况发生。这样显然对性能很不友好,管理起来也不方便,而且如果像是那种衣服上形状复杂的花纹,还要采取这种方式来实现就意味着得针对花纹进行建模,而且还要考虑花纹的网格与衣服模型表面的贴合度与ZFighting等问题。
——所以我们采取索引图的方式来解决这个问题,用灰度来区分使用不同ramp的区域(其实思想上我觉得就类似于PBR的金属度粗糙度图什么的)。而既然是像素级别的贴图,那么任它形状多复杂的区域,我们就都可以为所欲为,画就完事了。
——例如上面的服装部分,就用到了类似下图的右侧这么个索引通道来区分不同的ramp。
二、Ramp图表的采样
——上面莫名其妙多了一张索引图,那么这张图该怎么用?我们首先来看Ramp图表大概长什么样子。
——根据前言所说,实际上本文的Ramp图表就是很多单行ramp拼成一起形成的。
——上面第二个参数是ramp条对应的灰度[0,255]。当图表的尺寸是256x256时,这个灰度实际上就等价于图表像素的行索引、或者说UV坐标中的V*255,而第一节的索引图实际上存储的就是这个行索引。
——将上面的ramp条按行索引拼到256x256的图里就会构成类似下面这样的图表(没有定义的行用白色填充)。
——最后在shader里采样的时候,用半兰伯特当U(或者blinn,smoothstep等其他的玩意,按需要来)、索引图的灰度当V去采样渐变图表即可做到之前的效果。
——需要注意的是,为了采样效果准确,索引图务必取消勾选sRGB以保证其灰度信息是线性的;ramp图的导入设置最好关掉mipmap,并将warpmode改为Clamp,format也要设为无压缩的格式(本文提供的工具在导出时默认是这种配置),否则可能会因为压缩或者模糊等问题导致采样偏差甚至采样不到(毕竟本文的实现是单行像素。硬要提高容错倒也可以考虑把同一条ramp扩展成多行像素)。
——推广来看,这种加一张索引图、或者说UV坐标分别以某种具有特殊含义的变量来采样的技巧还有一些其他的应用领域,比如4张以上地图纹理的混合,或者次表面散射中那张经典的预积分图等。而具体的采样方式,则由我们的用途决定。我们甚至可以自己定义一套采样规则,从而实现各种花里胡哨的组合效果。
三、Ramp图表编辑工具使用指南
——本文提供的工具支持将编辑结果导出为可二次编辑的asset文件或图像文件。可以在Project面板通过右键->Create->自定义工具->创建渐变纹理图表来创建一个asset文件。
——其中“注释”就是个标签,用来标记这行ramp是模型上的哪里用到的,不影响效果;后面是255级灰度,作用第二节中已经说过。
——工具默认用曲线调整透明通道,RGB通道可切换模式用梯度滑块或曲线调整(二者数据不互通);每一行后的“导出”即导出该行ramp纹理(单行),包括下面的导出图表在内,默认都在Assets文件夹下生成图像文件。
——如果需要实时查看效果或在场景运行时动态生成图表挂载到对应材质上,可以在场景对应物体上挂载RampAtlasManager组件。
——当asset文件与材质挂载后可进行编辑控制
——最下面附加索引图灰度检查功能,方便查找索引图中包含哪些灰度(毕竟因为模糊或压缩等原因,经常会产生一些额外的噪点灰度级,这些是没用的)。工具会检查图像中包含的所有灰度级并降序排列打印对应的像素数,一般排前几的就是要填到上面的操控面板里的。(当然你也可以在PS里去手动吸色)
——当两个相差不大的灰度级以相近的数量同时出现时,那可能说明你的索引图中有噪点,届时可以考虑在PS里来一发表面模糊。
四、资源链接
链接:
百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间/s/1s2nNk34F6MVm0e_-L6C9Sw提取码:zy3r