Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda con GPU Instancing

Iniciado por TheBullet, Septiembre 20, 2017, 06:28:19 PM

Tema anterior - Siguiente tema
Tengo una duda sobre el GPU Instancing ( https://docs.unity3d.com/Manual/GPUInstancing.html ).
 
Supongamos que tenemos un material llamado MaterialX que tiene el "Instancing" activado. Una vez ejecutado el juego, si modificamos via script el MaterialX del objeto este pasa a llamarse "MaterialX (Instance)" ya que Unity crea uno nuevo material al modificarlo. Al hacer esto ¿el objeto se sigue beneficiando del GPU Instancing o al haber modificado de material ya no forma parte del grupo original y crea otro draw call adicional?
 
Gracias.

Hola, de movida me parece que no ya que Unity mete todo en el GPUinstancing cuando tenga exactamente el mismo material y malla, en teoria si modificas de alguna forma algo y logras crear una nueva instancia del material, este nuevo material tambien entra en el instancing lo unico que tenes uno solo, entra en su propio mundo por lo que no serviria de nada. Lo que si podes agregar es variacion de tamaño y color, no modificandolo directamente el material ni creando uno nuevo sino mediante script como lo indica la documentacion:
 
To create variations, modify your shader scripts to add per-instance data (see next section to learn more about this). [Abajo explica mas...]
 
Cuando decis modificar el script del MaterialX, el script relacionado al shader(poistImagerender o algo asi) o cualquier script (monobehaviour)?
 
 

Septiembre 20, 2017, 10:45:57 PM #2 Ultima modificación: Septiembre 20, 2017, 10:46:15 PM por TheBullet
Cita de: lightbug date=1505932769Hola, de movida me parece que no ya que Unity mete todo en el GPUinstancing cuando tenga exactamente el mismo material y malla, en teoria si modificas de alguna forma algo y logras crear una nueva instancia del material, este nuevo material tambien entra en el instancing lo unico que tenes uno solo, entra en su propio mundo por lo que no serviria de nada. Lo que si podes agregar es variacion de tamaño y color, no modificandolo directamente el material ni creando uno nuevo sino mediante script como lo indica la documentacion:
   
   
      To create variations, modify your shader scripts to add per-instance data (see next section to learn more about this). [Abajo explica mas...]
   
   
      Cuando decis modificar el script del MaterialX, el script relacionado al shader(poistImagerender o algo asi) o cualquier script (monobehaviour)?
   


Me refiero en monobehaviour, un SetFloat o SetTexture por ejemplo. Es un material que se utiliza en muchos objetos que se ven a la vez y que puede tener diferentes texturas. Lo que haré será crear un material para cada textura y asignar directamente el material, así no hay variaciones. 
 
Gracias por tu respuesta!

Etiquetas: