OpenGLES Android上的噪音屏幕

问题描述 投票:4回答:2

我尝试在Android设备上创建噪音屏幕。为了获得随机性,我使用以下公式:

fract((sin(dot(gl_FragCoord.xy ,vec2(0.9898,78.233)))) * 4375.85453)

我在http://glslsandbox.com/中对其进行了测试,它非常完美。

结果表http://glslsandbox.com/

enter image description here

但是在手机和平​​板电脑上,我得到了另一个结果

在Nexus 9上,我收到此消息:

enter image description here

但是还不错。在LG-D415上,我收到此

enter image description here

有人可以帮我吗?

着色器:

 #ifdef GL_ES
 precision mediump float;
 #endif

 float rand(vec2 co){
            return fract((sin(dot(co.xy ,vec2(0.9898,78.233)))) * 4375.85453);
 }
 void main() {
    vec2 st = gl_FragCoord.xy;
    float rnd = rand(st);
    gl_FragColor = vec4(vec3(rnd),1.0);
 }
android opengl-es glsl shader
2个回答
3
投票

几乎可以肯定这是一个精度问题。您的基于mediump的代码可能在某些设备上以标准单精度浮点数执行,或者在其他设备上(或两者之间的任何地方)以半精度执行。

半精度根本不足以进行任何精度的计算。


0
投票

使用Gold Noise,均匀的标准化分布。它是专为以低精度(lowp)运行而设计的。它还接受种子(例如时间)。

© www.soinside.com 2019 - 2024. All rights reserved.