我们可以在着色器中编写自己的采样和包装逻辑吗?可能是什么问题?

Can we write our own sampling and wrapping logic in shader? what could be a problem?

我想在着色器中做一些想法,要求我制作一个奇怪的纹理拓扑,例如纹理图集打包。不能用普通的包裹方式包裹,会在UV接缝边缘出现毛刺或渗色

所以我想,如果我只是使用 tex2D()tex2Dlod() 进行带点过滤的纹理查找,然后在着色器本身中重写所有采样和混合逻辑,查找许多使用自定义包装器点并将它们与着色器代码混合

有可能吗?这种方法有什么问题或缺点?

是的,这是可能的并且很常见。您需要在项目中设置纹理资产本身的过滤器 and/or 环绕模式。 (如果使用着色器图,您可以选择在着色器本身内部指定自定义样本状态)。您当然可以修改传递给着色器的 UV 坐标,并使用这些修改后的值对纹理进行采样。