欢迎光临散文网 会员登陆 & 注册

概述: 索引材质贴图技术

2020-07-16 22:18 作者:CG小苏  | 我要投稿

Artem Krizhanovskiy展示了索引材料映射方法,该方法允许他通过对来自预定义LUT的所有材料数据进行采样来增加细节而不会造成内存损失。

介绍

这种方法的主要思想是减少压缩伪像,增加所有PBR通道的细节,获得高度可自定义的阴影,而内容没有任何变化,最后减少内存。 


方法

我不使用直接纹理化方法,而是依靠基于材料的方法,其中使用渐变(磨损或状况)和材料,我们可以从预定义的LUT中采样所有材料数据。

唯一的输入是:

-4通道全尺寸渐变ID映射,已压缩

-完整的切线或对象空间法线贴图,已压缩

-16x16反照率,重新绘制LUT,未压缩

-16x16金属,粗糙度LUT,未压缩


渐变纹理:R-环境光遮挡,G-材质ID,B-细节ID,A-渐变

材质LUT1:RGB-反照率,A-重涂遮罩| 未压缩,无mip-map

材料LUT2:R-金属,G-粗糙度,BA-空| 未压缩,无mip-map

基本上,在读取“材质LUT”纹理时,渐变用作U,材质ID贴图用作V:texture(materialLUT_sampler,vec2(gradient,material_ID))

从示意图上看,它看起来像这样:

该过程非常简单,可以使用代码或基于节点的编辑器(例如Substance Designer或Unreal Engine)进行复制:

该模型包含16种材料:

重涂:


在这种情况下,其他的迷彩图案纹理将用作重绘颜色。

重新绘制的想法是基于反向混合。众所周知,平凡的线性插值看起来像这样:

结果= C_base *(1-alpha)+ C_paint * alpha

我们可以得出C_base:

C_base =(结果-C_paint * alpha)/(1-alpha) 

并将其与新颜色混合:

结果= C_base *(1-alpha)+ C_repaint * alpha

细节决定成败

详细(顶部)图像的纹理像素密度高16倍,而内存仅重11%。

这种方法的程序性质使我可以将完整的PBR细节集应用于模型,该模型适用于所有材质和重新绘制选项。细节图由16个图块组成,并具有一组细节法线和细节渐变。Detail_ID映射用于定义哪个图块用于细节。我建议将BC7纹理格式与RG中的普通R和G通道以及B中的渐变一起使用。代码中需要进一步恢复普通B通道。您可能会注意到一些细节是空白的,因为我不需要此模型上的16个细节。

您可以看到更改detail_ID如何影响表面:






概述: 索引材质贴图技术的评论 (共 条)

分享到微博请遵守国家法律