Tengo una escena OpenGL renderizada con un conjunto de sprites, y me gustaría añadir sombras automáticas a todos ellos. Aquí está una imagen que muestra lo que quiero decir:Sombras paralelas OpenGL ES para sprites 2D
La escena utiliza la proyección ortográfica, los sprites son quads textura, y estoy usando el buffer de profundidad para atraerlos de adelante hacia atrás. Estoy trabajando con OpenGL ES 2.0, pero también se apreciarán los pensamientos de los mundos iOS o no. He echado algunas ideas en mi cabeza sobre cómo puedo hacer esto, y me gustaría saber cuál es la más prometedora.
- Dibuja cada objeto dos veces, el primero normalmente, el segundo con algún tipo de sombreado de sombra un poco más profundo en la escena. ¿No estoy seguro si esto es posible?
- Dibuja un sprite, luego dibújalo nuevamente, oscurecido y con algunos alfa, varias veces con alguna jitter aleatoria aplicada a las verticies. Esto puede parecer tonto y para nada una sombra.
- Dibuja la escena base sin fondo en una textura, luego difumina y oscurece para crear una gran sombra paralela. Luego dibuja la escena base sobre la textura de la sombra paralela, y finalmente sobre el fondo. Sin embargo, esto perdería las sombras entre los sprites.
- SSAO en un pase de postprocesamiento. Puede ser el más dinámico y automático, pero podría verse borroso/granuloso y ralentizar las cosas.
- En el momento de la creación, genere una textura de sombra para cada sprite. Para renderizar, dibuja un sprite y luego sombrea un poco más en la escena. Creo que me gustaría evitar esto debido al tiempo de carga y los requisitos de memoria adicionales, pero ¿esta puede ser la más rápida y la mejor opción?
No quiero hacer ningún trabajo de sombra con texturas externas, ya que utilizo las mismas texturas de sprite en diferentes escalas, y las sombras precocidas se escalarían de forma no natural.
¿Alguno de estos es mejor que los otros? ¿Hay otras opciones en las que no estoy pensando? ¡Gracias!
Para el n. ° 3, puede que le interesen las recomendaciones de Imagination Technologies para el postprocesamiento: http://www.imgtec.com/powervr/insider/docs/PowerVR.Post%20Processing%20Effects%20Development%20Recommendations.1.7f. External.pdf, que incluye una descripción de un filtro de floración de alta eficiencia. Reemplazar su filtro de paso alto con solo renderizar versiones oscuras de sus objetos debería producir una buena y rápida sombra. –
Buena lectura, Brad. Puedo usar ese método si voy con # 3. – Josh