creator的shader能通过传入自定义纹理贴图来控制裁剪区域吗,纹理贴图的uv要怎么处理不变形,遵从原本纹理,有大佬解答下吗
是shader层面的圆形遮罩造成的拉伸?
这样?
自定义顶点就可以了
1赞
这个不是shader吧
在片元着色器里判断 uv,把区域外的像素 discard 掉就好了呀。
需要注意,你要自己传入节点的尺寸(resolution)才能计算实际的宽高区域。
这个具体要怎么计算的,大佬求教
描述下具体的需求?
我是想拿一张图做完遮罩图,然后直接把纹理传入对应的材质,材质作用的节点纹理,根据这个遮罩图的a值来做显隐,但现在这个遮罩图不一定跟材质作用的节点纹理一个尺寸,所以在shader里遮罩图用的uv跟节点纹理是一样的,会造成一定的偏差,拉伸之类的
我说个情况,假如遮罩图尺寸小于目标图,那多余的部分是不是默认排除掉?
如果是的话,很好解决。
把【节点尺寸、遮罩纹理、遮罩纹理尺寸、遮罩纹理位置】都传进去,在片元着色器代码里判断。
假设节点尺寸为 100 x 100,遮罩尺寸 50 x 50,遮罩位置居中,当前像素的 uv 为 (0.1, 0.1),那当前像素对应的就是节点左上角 10 x 10 的位置,这个位置显然在遮罩之外,如果 uv 为 (0.5, 0.5),那对应的就是节点中间,那肯定在纹理遮罩的覆盖范围之内。
那如果要改变遮罩的位置是不是也是调占比的百分去对应
好像知道了,用四维数组去算uv的偏移和缩放就可以自定义遮罩层位置了
很好算的,公式写好,直接调参就行了