Permítanme tener una malla (por ejemplo, esfera) en el centro de la habitación, llena de cubos y una fuente de luz. ¿Cómo puedo hacer que sea rápido y fácil shadow-casting en OpenGL, usando solo funciones "estándar" (fijas)? Nota: el resultado debe contener sombras de cubo y esfera también.Cómo crear sombras rápidas y fáciles, independientes de la escena, sin sombreadores en OpenGL
Respuesta
Si puede generar una silueta de la esfera, puede usar shadow volumes. El hardware de nVidia también ha admitido la función fija shadow mapping por un tiempo razonable.
Los volúmenes de sombra tienen la desventaja de requisitos de velocidad de llenado muy altos. Los mapas de sombras pueden ser mejores, pero requieren un pase adicional.
Si se proyecta a un solo plano, puede ser más fácil simplemente project the object on to a plane.
El punto es usar un algoritmo universal, no solo para la silueta esférica =) ¡Pero gracias de todos modos! =) – shybovycha
Lo siento, no he hecho clic en el segundo enlace de alguna manera ... Sí, tenías razón, el mapeo de sombras es lo suficientemente bueno y lo he descubierto yo mismo (soy estúpido) =) – shybovycha
@shybovycha: Solo para que lo sepas. NINGUNA de las técnicas listadas arriba son solo para esferas;) – Goz
No hay una manera rápida y fácil. Hay muchas técnicas diferentes, cada una tiene sus pros y sus contras. Puede mirar un proyecto que tengo alojado en github, que usa un código muy simple para crear una sombra, usando la técnica de volumen de sombra (http://iuiz.github.com/VolumeShadow/). Sin embargo, está escrito en Java, pero no debería ser difícil trasladarlo a otro idioma.
Las formas más importantes para crear sombras son el método llamado "asignación de sombras", donde renderiza su escena (con la cámara en la fuente de luz, dirigida a cada objeto de sombra) a una textura. Y la segunda técnica es el método shadow voulume (hecho famoso con Doom3).
Gracias, pero ya tengo la idea =) Proyectarían sombras ser suficiente =) – shybovycha
He encontrado una forma de usar StencilBuffers. Al estar un poco confundido por un tiempo, finalmente tuve la idea: con esto, lo más difícil sería recorrer cada fuente de luz y proyectar todos los objetos de la escena. Este se ve más bonito que el sombreado de texturas y funciona más rápido que las sombras volumeric. here y here son algunos recursos que me ayudaron a comprender el paso de la multiplicación de matrices (me confundió un poco cuando estaba mirando a través de la demostración de dino). En cuanto a mí, este método es más fácil de entender y usar. La única pregunta que queda por resolver es cómo calcular la matriz de multiplicación.
Aunque este método podría cambiarse un poco con las texturas as shown here.
¡Gracias a todos! =)
- 1. framebuffer y uso de sombreadores en opengl
- 2. OpenGL ES y sombreadores compatibles con OpenGL
- 3. Sombras paralelas OpenGL ES para sprites 2D
- 4. openGL: líneas con sombreadores
- 5. Creación de sombreadores OpenGL en NativeActivity
- 6. ¿Cómo creo sombras baratas en OpenGL?
- 7. ¿Hay alguna manera fácil de obtener sombras en OpenGL?
- 8. Modo de fusión de Photoshop con OpenGL ES sin sombreadores
- 9. Cargando modelo 3D en la escena OpenGL
- 10. Desplazamiento/acercamiento de una escena en OpenGL y subdivisión
- 11. Organizar sombreadores GLSL en el motor OpenGL
- 12. La mejor manera de detectar NaN en sombreadores OpenGL
- 13. Perfilado del rendimiento de los sombreadores OpenGL
- 14. Cómo depurar sombreadores en Android
- 15. Uso de QPainter sobre OpenGL en QGLWidget al utilizar sombreadores
- 16. Velocidad de las funciones cos() y sin() en sombreadores GLSL?
- 17. Cómo dibujar líneas suaves en una escena 2D con OpenGL sin usar GL_LINE_SMOOTH?
- 18. Android OpenGL procesamiento de imágenes - sin SurfaceView
- 19. Sombreadores en lugar de GPGPU
- 20. Línea de textura suave con sombreadores OpenGL ES 2.0
- 21. ¿Hay herramientas de refactorización C++ gratuitas y rápidas (tal vez independientes) para Windows?
- 22. GLKit's GLKBaseEffect y sombreadores personalizados
- 23. Inserciones SQL rápidas sin ACTUALIZACIONES
- 24. Crear complementos para ejecutables independientes de Python
- 25. En los sombreadores de vértices OpenGL, ¿qué es w, y por qué lo divido?
- 26. Sombreadores sombreadores de píxeles con salidas múltiples en flash?
- 27. OpenGL ES 1.1: ¿Cómo cambiar el color de la textura sin perder la luminancia?
- 28. ¿Cómo crear aplicaciones .NET independientes usando Visual Studio?
- 29. ¿Cómo deben escribirse los sombreadores modernos de OpenGL para que sean compatibles entre sí?
- 30. ¿Cuál es la relación entre gl_Color y gl_FrontColor en sombreadores de vértices y fragmentos
BTW- "funciones estándar" no son realmente la expresión que está buscando. La "función fija" es más parecida, pero los sombreadores son lo que ha sido "estándar" desde hace algunos años. – Kos
Sí, estaba pensando en cómo llamar esto cuando escribí mi pregunta. ¡Está arreglado ahora, gracias! =) – shybovycha