Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无头木偶演员未正确渲染WebGL_Javascript_Webgl_Puppeteer_Chromium_Headless - Fatal编程技术网

Javascript 无头木偶演员未正确渲染WebGL

Javascript 无头木偶演员未正确渲染WebGL,javascript,webgl,puppeteer,chromium,headless,Javascript,Webgl,Puppeteer,Chromium,Headless,我正在尝试拍摄我的WebGL应用程序的屏幕截图,但结果不正确 在人头模式下运行木偶演员效果很好,但我需要在无头模式下运行它 我已经在shadertoy上托管了我的着色器,以使这里的事情更简单 着色器非常简单,它使用PRNG绘制星场 木偶演员版本:7.0.1 铬版本:90.0.4403.0 这是我的着色器: uint hash (uint v) { v += (v << 10u); v ^= (v >> 6u); v += (v <<

我正在尝试拍摄我的WebGL应用程序的屏幕截图,但结果不正确

在人头模式下运行木偶演员效果很好,但我需要在无头模式下运行它

我已经在shadertoy上托管了我的着色器,以使这里的事情更简单

着色器非常简单,它使用PRNG绘制星场

木偶演员版本:7.0.1

铬版本:90.0.4403.0

这是我的着色器:

uint hash (uint v) {
    v += (v << 10u);
    v ^= (v >>  6u);
    v += (v <<  3u);
    v ^= (v >> 11u);
    v += (v << 15u);
    return v;
}

uint hash (uvec2 v) { return hash(v.x^hash(v.y)); }
uint hash (uvec3 v) { return hash(v.x^hash(v.y)^hash(v.z)); }
uint hash (uvec4 v) { return hash(v.x^hash(v.y)^hash(v.z)^hash(v.w)); }

float floatConstruct (uint v) {
    v &= 0x007FFFFFu; // ieee mantissa
    v |= 0x3F800000u; // ieee one
    return uintBitsToFloat(v)-1.0;
}

float random (vec2 v) { return floatConstruct(hash(floatBitsToUint(v))); }

void mainImage (out vec4 fragColor, in vec2 fragCoord) {  
    float v = random(fragCoord);        
    float c = pow((v-0.97)/(1.0-0.97),50.0);
    fragColor = vec4(vec3(c), 1.0);
}
以下是木偶演员(无头)的结果:

它应该是这样的:


我的桌面上有黑色版本。我猜问题在于你的着色器使用了未定义的行为

这条线

pow((v-0.97)/(1.0-0.97),50.0);
应该是这样

pow(clamp(v-0.97, 0.0, 1.0)/(1.0-0.97),50.0);
因为
pow(x,y)
x
为负时,根据规范未定义

pow(clamp(v-0.97, 0.0, 1.0)/(1.0-0.97),50.0);