Escribí un sombreador personalizado para Game of Life de Conway, usando three.js y A-Frame, que realiza todo el procesamiento en el sombreador de fragmentos. Funciona perfectamente en un navegador web en el escritorio. También parece funcionar en el navegador Quest, pero al ingresar al modo VR, toda la pantalla comienza a parpadear entre la escena y una pantalla negra.
Sospecho que el problema está en la configuración de RenderTarget, o en la forma en que cambio entre los objetivos de renderizado, pero no estoy seguro. El código relevante ocurre dentro de una función de marca del componente A-Frame, que cambia periódicamente entre dos objetivos de representación y regresa a la escena principal de la siguiente manera:
this.el.sceneEl.renderer.setRenderTarget(this.renderTarget0); this.el.sceneEl.renderer.render(this.rtScene0, this.rtCamera); this.el.sceneEl.renderer.setRenderTarget(this.renderTarget1); this.el.sceneEl.renderer.render(this.rtScene1, this.rtCamera); this.el.sceneEl.renderer.setRenderTarget(null);Si es relevante, también deshabilité el búfer de profundidad en los objetos RenderTarget. El código completo está disponible en GitHub en https://github.com/stemkoski/A-Frame-Examples/blob/master/conway-shader.html y una versión en vivo está enhttps://stemkoski.github.io/A -Frame-Examples/conway-shader.html .
Mi pregunta es: ¿cómo puedo evitar que la pantalla parpadee en modo VR mientras uso RenderTargets en A-Frame?
Si sigue el comentario de Mugen87 citado por Marquizzo ("La idea es deshabilitar xr, realizar el renderizado y luego habilitar xr nuevamente"). Todo funciona bien en VR. Para deshabilitar XR y el mapa de sombras antes del cálculo de gpgpu, haga lo siguiente:
this.el.sceneEl.renderer.xr.enabled = false; this.el.sceneEl.renderer.shadowMap.autoUpdate = false;Y reactivarlo después con (si en vr):
this.el.sceneEl.renderer.xr.enabled = true; this.el.sceneEl.renderer.shadowMap.autoUpdate = true;Código fuente de A-Frame en funcionamiento:
https://glitch.com/edit/#!/experimentado-político-compartir?path=index.html%3A204%3A12
Manifestación: