¿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 /
- ¿Por qué mi programa de shader openGL para puntos tiene anillos de artefactos?
- Convertir la textura procesada de OpenGL ES 2.0 en mapa de bits y volver
- Android.grapics.matrix to OpenGL 2.0 ES traducción de la textura
- ¿Cómo determinar si una subida de textura tuvo éxito en OpenGL ES 2?
- LibGDX - Shader trabajando en el escritorio pero no en Android
¿Alguna otra idea? ¿Vale la pena hacerlo, en cuanto al rendimiento?
- Activación de Android en silencio
- Android y OpenGL dan marco negro en el inicio
- No se puede compilar shader conocido por ser bueno en android
- Android OpenGl 2.0 ES fuerza el reinicio del dispositivo
- Pantalla en negro en lugar de multi-textura
- Perfiles de GPU y callbacks en OpenGL ES
- ¿Dónde está la documentación para OpenGL ES 2.0 en Android?
- Android OpenGL ES 2,0 coordenadas de la pantalla a las coordenadas del mundo
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.
- Android: ¿Conectar dos teléfonos inalámbricamente?
- ¿Puedo detectar que se ha eliminado un permiso en particular para mi aplicación android?