Javascript 无头木偶演员未正确渲染WebGL
我正在尝试拍摄我的WebGL应用程序的屏幕截图,但结果不正确 在人头模式下运行木偶演员效果很好,但我需要在无头模式下运行它 我已经在shadertoy上托管了我的着色器,以使这里的事情更简单 着色器非常简单,它使用PRNG绘制星场 木偶演员版本:7.0.1 铬版本:90.0.4403.0 这是我的着色器: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 <<
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);