Utilizo XNA para mis proyectos y en esos foros a veces veo referencias al hecho de que cambiar un efecto por una malla tiene un costo relativamente alto, lo que me sorprende, ya que pensé que cambiar un efecto era simplemente un caso de copiar el programa de reemplazo del sombreador a la GPU junto con los parámetros apropiados.
Me preguntaba si alguien podría explicar exactamente qué es costoso acerca de este proceso. Y poner, si es posible, 'relativamente' en contexto?
Por ejemplo, digamos que quería usar un sombreador corto para ayudar con la selección, haría lo siguiente:
- Cambie el efecto en cada objeto, calculando un color único para identificarlo y proporcionándolo al sombreador.
- Dibuje todos los objetos a un objetivo de representación en la memoria.
- Obtenga el color del objetivo y úselo para buscar el objeto seleccionado.
¿Qué parte del tiempo total que se tarda en completar ese proceso se dedicaría a cambiar los sombreadores? Mis instintos dirían que renderizar la escena nuevamente, no importa cuán simple sea el sombreador, sería un orden de magnitud más lento que cualquier otra parte del proceso, entonces, ¿por qué tanta preocupación por los efectos?