Hi all!
I am trying to use threejs on headless chromium using puppeteer(v5.2.1) and gpu acceleration ( Not swiftshader)
However, when trying to run threejs I get black screen.
I wrote simple script to showcase the issue. (Running on mac)
const puppeteer = require('puppeteer');
var os = require('os');
const arguments = process.argv
console.log(arguments)
const pagePath = arguments[2]
const outputName = arguments[3]
const gl = arguments[4]
console.log("Platform: " + os.platform());
console.log("Architecture: " + os.arch());
function getChromeArgs() {
let args = ['--headless']
if (gl) {
args = [
'--headless',
`--use-gl=${gl}`]
}
return args
}
(async () => {
console.log(getChromeArgs())
const browser = await puppeteer.launch({
args: getChromeArgs(),
headless: false
});
const page = await browser.newPage();
await page.goto(pagePath);
await page.screenshot({path: outputName + '.png'});
await page.pdf({path: outputName + '.pdf'})
await browser.close();
})();
When running the script with the following command: node puppeteerTest.js https://threejs.org/examples/#webgl_animation_cloth threejs egl
I get black result:
When running node puppeteerTest.js chrome://gpu gpu egl
I get that GPU is enabled.
When running with swiftshader everything works fine. also with older version of chromium (v78) it works as well.
Any suggestion what can I do to run threejs on headless chromium using gpu?
Side note: I am using threejs for an entirely different project. The code attached is just to demonstrate the issue I am experiencing on the real project.
Thanks a lot!