OGL_ES 2.0: el uso de múltiples unidades de textura vs rebuilding texturas para sombreadores separados

En el juego que actualmente estoy produciendo, tengo dos sombreadores:

  • uno para sprites en un atlas de textura y
  • una textura en forma de partículas que se carga por separado. (Decidí mantener esta textura fuera del atlas ya que las partículas en mi generador son GL_POINTS).

Actualmente, enlace cada uno de estos a una unidad de textura separada y luego establezco el uniforme de cada sombreador a las unidades de textura respectivas. Me parece que atar las texturas una sola vez de esta manera es limpio, pero me preguntaba si hay alguna razón por la cual este es un mal método para emplear.

He buscado extensamente cualquier discusión sobre este método, pero parece que no muchas personas están haciendo esto, creando dudas en mi opinión sobre su security.

¿Alguien ha usado este método ellos mismos o sabe de alguna razón por la que no sea una buena idea?

Indirectamente, sí, uso este método y es seguro. Pero es un efecto secundario de una optimization en el nivel del motor de renderizado.

Puede (quizás) get algo de performance si evita atar la misma textura muchas veces. En mi motor, antes de renderizar algo, vinculo las texturas del material solo si aún no está vinculado. (eficiente después de clasificar entidades por material y textura)

Debido a que se puede utilizar una unidad de múltiples texturas al mismo time, la testing se realiza a nivel de unidad de textura.

Esta optimization vale la pena el costo de grandes escenas. (cientos de llamadas de dibujar con al less treinta texturas).

En tu caso, porque solo hay dos texturas y dos sombreadores, ¿por qué intentas eliminar algunos enlaces de texturas? ¿Puedes medir la cantidad de performance que ganaste? ¿Sacrificaste flexibilidad para eso?

Vivien