gpt4 book ai didi

android - 纹理坐标不一致

转载 作者:行者123 更新时间:2023-11-30 00:04:26 25 4
gpt4 key购买 nike

我尝试在四边形上统一平铺纹理坐标以进行一些调试。

在桌面上没有问题,但在安卓(旧平板电脑)上我看到纹理坐标不一致(下面的图片链接显示了结果)。
当我们从 0.0,0.0 到 1.0,1.0 时,纹理坐标不断变得不一致。不一致性随着平铺值的增加而增加,图像中的结果为 60,160。

我的设备的 android 版本是 5.0,GPU 支持 opengl es 2.0 而不是 3.0。

所以我想知道为什么这种情况会发生在我的平板电脑上而不是我的台式机上,希望获得有关导致它的 gpu 中发生的情况的信息。

我使用的着色器-

Shader "Unlit/uvdisplay"
{
Properties
{
}
SubShader
{
Tags { "RenderType"="Opaque" }

Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag

#include "UnityCG.cginc"

struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};

struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};

v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}

fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = fixed4(frac(i.uv*fixed2(60.0,160.0)),0.0,1.0);
return col;
}
ENDCG
}
}
}

texcoord at origin
texcoord at the opposit end

最佳答案

并非所有 Android 设备都支持 fragment 着色器中的 highp,一些较旧的设备仅限于 mediump。

在 Unity 术语中,基于 these定义,就好像您在 fragment 着色器中要求 float 精度,但您得到的是 half 精度。

除了尝试将值保持在原点附近以最大程度地减少错误外,您无能为力。

另外,在一些只支持半精度的设备上,只要你除了采样纹理之外什么都不做(即在使用它之前不要修改或混合纹理坐标),驱动程序/GPU 就可以使用纹理采样的全精度。

关于android - 纹理坐标不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49263594/

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