gpt4 book ai didi

unity-game-engine - Unity3D 平铺纹理时边界上可见接缝

转载 作者:行者123 更新时间:2023-12-02 11:14:17 26 4
gpt4 key购买 nike

对于我的游戏,我编写了一个着色器,它允许我的纹理很好地平铺在多个对象上。我通过不基于顶点的相对位置,而是基于绝对世界位置来选择 uv 来做到这一点。自定义着色器如下。基本上它只是将纹理平铺在 1x1 世界单位的网格中。

Shader "MyGame/Tile" 
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200

CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;

struct Input
{
float2 uv_MainTex;
float3 worldPos;
};

void surf (Input IN, inout SurfaceOutput o)
{
//adjust UV for tiling
float2 cell = floor(IN.worldPos.xz);
float2 offset = IN.worldPos.xz - cell;
float2 uv = offset;

float4 mainTex = tex2D(_MainTex, uv);
o.Albedo = mainTex.rgb;
}
ENDCG
}
FallBack "Diffuse"
}

我之前在 Cg 和 XNA 上的 HLSL 着色器中做过这种方法,它总是很有魅力。然而,使用 Unity 着色器时,我在纹理边缘看到了非常明显的接缝。我尝试了 Unity 表面着色器以及顶点/片段着色器,两者都具有相同的结果。

visible seams

纹理本身如下所示。在我的游戏中,它实际上是 .tga,而不是 .png,但这不会导致问题。所有纹理过滤器设置以及重复或钳位模式都会出现此问题。

texture

现在我看到有人在这里遇到类似的问题:Seams between planes when lightmapping 。然而,对于如何解决这个问题并没有明确的答案。另外,我的问题根本与光照贴图或照明无关。在我测试的片段着色器中,没有启用光照,问题仍然存在。

同样的问题也发布在Unity答案网站上,但我没有收到答案,也没有太多浏览量,所以我也在这里尝试一下:Visible seams on borders when tiling texture

最佳答案

这描述了您的问题的原因: http://hacksoflife.blogspot.com/2011/01/derivatives-i-discontinuities-and.html

这是一个很好的视觉示例,就像您的一样: http://aras-p.info/blog/2010/01/07/screenspace-vs-mip-mapping/

除非您要禁用 mipmap,否则我认为 Unity 无法解决此问题,因为据我所知,它不会让您使用可让您指定在片段中使用的 mip 级别的函数着色器(至少在 OS X/OpenGL ES 上;如果您仅针对 Windows,这可能不是问题)。

也就是说,我不知道你为什么要进行片段级 uv 计算;只需从顶点着色器传递数据就可以正常工作,并且具有可平铺的纹理:

struct v2f {
float4 position_clip : SV_POSITION;
float2 position_world_xz : TEXCOORD;
};

#pragma vertex vert
v2f vert(float4 vertex : POSITION) {
v2f o;
o.position_clip = mul(UNITY_MATRIX_MVP, vertex);
o.position_world_xz = mul(_Object2World, vertex).xz;
return o;
}

#pragma fragment frag
uniform sampler2D _MainTex;
fixed4 frag(v2f i) : COLOR {
return tex2D(_MainTex, i.position_world_xz);
}

关于unity-game-engine - Unity3D 平铺纹理时边界上可见接缝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com