UE4贴图自适应屏幕大小 您所在的位置:网站首页 ue4材质贴图调大小 UE4贴图自适应屏幕大小

UE4贴图自适应屏幕大小

2024-07-05 10:50| 来源: 网络整理| 查看: 265

游戏开发中,不同屏幕下的分辨率不同,模型/物品被拉伸之后贴图也会随之拉伸。 如果需要在不同比例下实现贴图真实大小不变(以下简称为自适应),需要对UV进行缩放处理之后再取得对应贴图的颜色。 本文提供一种能够实现不同设备下面贴图的大小不变的方法,主要是借助于DDX/DDY接口实现。 具体效果如下:

效果

材质预览放大 在这里插入图片描述

材质预览缩小 在这里插入图片描述 可以发现枪的显示变小了,但是里面的感叹号图片标志大小没变

前置知识 DDX()和DDY()

对于指定的寄存器,求其值在临近像素上的变化率,可以传入不同类型的数据, 就可以得到对应的数据在指定的屏幕坐标下的变化率。 在这里插入图片描述

讲更简单一点 比如ddx(uv)就是屏幕x方向上,一像素跨度内uv变化了多少 ddx(rgb)就是屏幕x方向上,一像素跨度内rgb变化了多少(无需指定xy,类似这样) 在这里插入图片描述

如何自适应

那么根据ddx和ddy的含义。我们可以传入uv坐标,取得在不同设备下面两个像素之间具体uv是多少(称之为ddx(u)和ddy(v)),然后让uv去除以这个deltUV之后乘某个系数再取颜色即可。 同一个设备里面像素大小的是不变的。 假设某个图形附上了这个材质,长包含n个像素宽包含m个像素,而像素大小是相同的,那么1/ddx(u)就是n,1/ddy(v)就是m。 我们传入 n * u,m * v,然后再从对应的材质里面取值

u为1的时候取到 n,也就是贴图对应 U为n的位置;v为1的时候取到 n,也就是贴图对应 v为m的位置。

由于像素大小相同,所以n/m是几,取到的贴图就在几倍的位置, 可以尝试这样去理解:uv / ddxy相当于获得了uv对应的是第几个像素,而贴图总像素长度不变,所以传入的像素个数一定和贴图长度成比例关系。 当然像素很多,所以我们需要传个系数去乘(下图Param),防止取到过大的uv。

蓝图实现

如果使用的贴图是正方形,如下(这里Param1传贴图的长对应的总像素个数,Param2传贴图的宽对应的总像素个数就是1:1大小的关系) 在这里插入图片描述

这里有个很坑的地方哈,Divide结点是支持向量相除的,具体就是一维除一维,所以要保证维数相同。

如图,Divide结点连到贴图uvs结点即可实现贴图自适应大小。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有