我正在努力让下一个简单的算法在 Samsung Galaxy SIII 中运行
float rand(vec2 co)
{
return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}
....
vec3 color = texture2D(u_texture, v_texcoord);
gl_FragColor.rgb = color + vec3(rand(gl_FragCoord.xy + time / 1000.0));
....
该代码在 Samsung Galaxy S1 和 Google Nexus S 中完美地生成了预期的噪音。但在使用 ARM Mali-400/MP4 的新型智能手机中,它完全失败了。
任何人都可以发现这个算法有什么问题吗?或者也许理解为什么会失败?
您的问题可能来自于sin
一个很大的数字。其结果取决于具体的实施sin
,这是不可用的。显然sin
Mali 芯片使用的函数比其他函数在大数字时具有更可预测的结果。
在我看来你应该使用an actual噪声函数,不是这个东西。至少它会在硬件上产生可预测的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)