¿Es posible renderizar / sombrear diferido con OpenGL ES 2.0?

¿Alguien ha implementado rendering / sombreado diferido bajo OpenGL ES 2.0? No admite MRT, por lo que con sólo un búfer de color, no es algo que se puede implementar de la manera "habitual".

Específicamente, estoy explorando en iPad, iPhone4 (iPhone 3gs maaaybe) y Android. En la aplicación GLESView en iPad / iPhone4 / iPhone3gs, la extensión GL_OES_RGB8_RGBA8 está presente, y no he mirado demasiado profundamente todavía, pero con 8bits / channel, esta idea es interesante: http://www.gamedev.net/topic/ 562138-opengl-es-20-and-deferred-shading /

¿Alguna otra idea? ¿Vale la pena hacerlo, en cuanto al rendimiento?

Aunque existe la extensión GL_ARB_draw_buffers disponible en algunos dispositivos Android (y por lo tanto, es posible renderizar varios buffers), la respuesta es " No " (con una posible excepción de algunos escenarios vinculados con rasterizador de "50 megados polígonos").

Es porque las GPUs usadas en estos dispositivos tienen shaders muy débiles del pixel y por lo tanto hacer un pase de la plena pantalla con un shader complicado está casi fuera de la cuestión. Es mejor seguir los viejos trucos demoscene de los días que se utilizaron antes de sombreado programable se convirtió en corriente principal.

Lo que sea que puedas mover a vertex shader, hazlo (por ejemplo, los efectos como deformaciones de pantalla completa son mejores usando malla deformada en vertex shader, en lugar de compensar texcoords en shader de fragmentos).

Cualquier cosa que se pueda resolver usando geometría (por ejemplo, renderizar un skybox hecho de una caja real será más rápido que renderizar cuadrícula de pantalla completa y calcular las direcciones de vista para el muestreo de textura en shader), hágalo.

Bueno, lo único que podemos hacer es esperar que aparezcan nuevos dispositivos con sombreadores de píxeles más fuertes. Espero que no sea demasiado de una deprimente respuesta 🙂 por supuesto, puede intentar implementar sombras diferidas en Android, pero probablemente será lento.

  • OpenGL ES profundidad buffer android, no puede llegar a trabajar
  • GLSurfaceView onDrawFrame comportamiento de borrado
  • Aplicando textura a Cubo, textura diferente en cada cara de cubo
  • ¿Cómo manejar la limitación de memoria de la GPU para el procesamiento de imágenes de alta resolución en la GPU?
  • Android OpenGL ES Soporte en todas partes?
  • GLSurfaceView que muestra negro en Nexus 7 con Android 4.2
  • GLSurfaceView - cómo hacer el fondo translúcido
  • OpenGL ES 2 - un gran vs múltiples texturas pequeñas atlas. ¿Cuál es el mejor rendimiento?
  • Multiplicación apropiada de matrices para rotación / traducción
  • Varias cámaras en libgdx (probablemente similar en otros marcos)
  • Android glShaderBinary
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.