He estado leyendo trabajos sobre gráficos por computadora, y cada cierto tiempo encuentro el término "lectura de textura dependiente" o "búsqueda de textura dependiente" utilizado en el contexto de las texturas de consulta en el código de sombreado. ¿Qué es una textura dependiente leída, y cuál es la diferencia entre esto y una textura "normal" leída?¿Qué es una textura dependiente leída?
Respuesta
Una "lectura de textura dependiente" es cuando los valores de retorno de una búsqueda de textura (u otros cálculos en sombreado) se utilizan para determinar DÓNDE buscar desde una segunda textura. Una implicación importante es que las coordenadas de textura (desde donde mira hacia arriba) no están determinadas hasta la mitad de la ejecución del sombreador ... no hay ningún tipo de análisis estático que pueda hacer en el sombreador (incluso conociendo los valores de todos los parámetros) eso te dirá cuáles serán las coordenadas antes de tiempo. También ordena estrictamente ordena las dos lecturas de textura y limita cuánto se podría cambiar el orden de ejecución por optimizaciones en el controlador, etc.
En las tarjetas gráficas anteriores, solía haber bastantes limitaciones en este tipo de cosas . Por ejemplo, en un punto (IIRC) puede buscar desde múltiples texturas pero solo con un pequeño número de coordenadas de textura distintas. El hardware realmente se implementó de manera que ciertos tipos de lecturas de textura dependientes eran imposibles o muy ineficientes.
En la última generación o dos de tarjetas, no debería tener que preocuparse por esto. Pero puede que esté leyendo libros o artículos de hace un par de años cuando realmente tenía que prestar mucha atención a tales cosas.
Una lectura de textura normal solo usa las coordenadas de textura pasadas al sombreado. Una lectura de textura dependiente es con coordenadas de textura que se calcularon en parte utilizando valores obtenidos de otra textura a la que se accedió anteriormente en el sombreador. Por lo tanto, el acceso a la segunda textura es "dependiente" del valor obtenido de la primera.
La respuesta aceptada (y la que está debajo) restringe incorrectamente las lecturas de textura dependientes a usar el resultado de otra lectura de textura. Eso es incorrecto.
Una lectura de textura dependiente es cualquier textura leída con las coordenadas que no son las coordenadas exactas pasadas al programa de sombreado. Incluso un swizzle hará que se lea una textura dependiente.
Esto se toma directamente de Apple's OpenGL ES programming guide.
Gracias, @benthehutt, aclaré en mi respuesta. –
- 1. ¿Qué es la escritura dependiente?
- 2. ¿Qué es exactamente una textura de punto flotante?
- 3. ¿Cómo y por qué es dependiente string.isdigit() locale?
- 4. Kindle: obtenga la ubicación más leída
- 5. Android OpenGL - ES Textura sangrando
- 6. usando gema no leída con public_activity
- 7. es el sistema ConcurrentModificationException dependiente lanzando
- 8. Proyectar una textura en OpenGL
- 9. relación habtm no es compatible: opción dependiente
- 10. Representación de OpenGL ES 2.0 con una textura
- 11. ¿Es 0 una ID de textura OpenGL válida?
- 12. OpenGL - Interpretación en una textura
- 13. Textura de pantalla completa iPhone OpenGL ES
- 14. ¿Qué es una buena biblioteca de C++ para cargar imágenes de textura en OpenGL?
- 15. Textura transparente en OpenGL ES para Android
- 16. Textura translúcida OpenGL sobre otra textura
- 17. Textura negra OpenGL ES en Nexus S
- 18. Temas: ¿Dependiente del tema?
- 19. Rieles: dependiente =>: destruir VS: dependiente =>: delete_all
- 20. Framebuffer FBO renderizar a textura es muy lento, con OpenGL ES 2.0 en Android, ¿por qué?
- 21. ¿Cuál es la forma más eficiente de crear un sistema de bombilla de foro (no leída)?
- 22. ¿Cómo puedo saber si la textura activa es la ID de textura 0 en GLSL?
- 23. macro macro dependiente
- 24. ¿Por qué se inventó la búsqueda dependiente de argumentos?
- 25. Pestaña fijada de Google Chrome resaltar no leída
- 26. Aplicar una textura para trazar un CGContextStrokePath
- 27. ¿Cómo leer una Textura CUDA para probar?
- 28. ¿Cómo actualizo parte de una textura?
- 29. Dependencia Propiedad dependiente de otra
- 30. WebGL crear Textura
En realidad, según PowerVR, necesita prestar atención en hardware bastante reciente :-) http://bit.ly/yvSnM – Justicle
En mi GTX 570, las búsquedas de textura dependientes en el sombreador de fragmentos son un orden de magnitud más lentas que las búsquedas de textura independientes. (Esto empujó el motor en el que estaba trabajando desde cero/ahogando FPS a 20 FPS). Experimenté una aceleración levemente menos masiva que eliminaba una "búsqueda de matriz constante" dependiente en el sombreador de geometría. (El recuento primitivo dependía de este valor.) ¡El contexto lo es todo! – Philip
Esto es incorrecto, ver mi respuesta. – benthehutt