gpt4 book ai didi

ios - GLSL色调着色器产生奇怪的结果,仅iOS?

转载 作者:行者123 更新时间:2023-12-01 19:38:27 25 4
gpt4 key购买 nike

我有一个跨平台的LibGDX应用程序。此特定的GLSL着色器代码用于移动特定纹理的色相。

它在Android上以及在台式机上进行调试时都很好用,但是在iPad上,这就是结果(打扰屏幕的照片,这是从此设备获取数据的最简单方法)。

enter image description here

代码:

const mat3 rgb2yiq = mat3(0.299, 0.595716, 0.211456, 0.587, -0.274453, -0.522591, 0.114, -0.321263, 0.311135);
const mat3 yiq2rgb = mat3(1.0, 1.0, 1.0, 0.9563, -0.2721, -1.1070, 0.6210, -0.6474, 1.7046);

vec4 outColor = texture2D(u_texture, v_texCoord) * v_color;
float alpha = outColor.a;

// Hue shift
if (u_hueAdjust > 0.0 && u_hueAdjust < 1.0 && alpha > 0.0)
{
vec3 unmultipliedRGB = outColor.rgb / alpha;

vec3 yColor = rgb2yiq * unmultipliedRGB;

float originalHue = atan(yColor.b, yColor.g);
float finalHue = originalHue + u_hueAdjust * 6.28318; //convert 0-1 to radians

float chroma = sqrt(yColor.b * yColor.b + yColor.g * yColor.g);

vec3 yFinalColor = vec3(yColor.r, chroma * cos(finalHue), chroma * sin(finalHue));
outColor.rgb = (yiq2rgb * yFinalColor) * alpha;
}

显然,确实存在一些奇怪的伪影,似乎会影响某些区域,尤其是黑色/白色。但通常也应注意,颜色的细微变化并非归因于所需的色相变化效果。

总体而言,此着色器在IOS上不太实用(但在Android / Desktop上可以正常使用),但是在玩了一段时间之后,我完全没主意了,有人引导我朝着正确的方向发展吗?

最佳答案

atan的文档中,它说The result is undefined if x=0.
yColor.g在灰度上是否可能为零?

在这里讨论该问题:Robust atan(y,x) on GLSL for converting XY coordinate to angle

关于ios - GLSL色调着色器产生奇怪的结果,仅iOS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58965462/

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