Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: TheBullet en Septiembre 20, 2017, 06:28:19 PM

Título: Duda con GPU Instancing
Publicado por: TheBullet en Septiembre 20, 2017, 06:28:19 PM
Tengo una duda sobre el GPU Instancing ( https://docs.unity3d.com/Manual/GPUInstancing.html (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.
Título: Duda con GPU Instancing
Publicado por: lightbug en Septiembre 20, 2017, 08:39:29 PM
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)?
 
 
Título: Duda con GPU Instancing
Publicado por: TheBullet en Septiembre 20, 2017, 10:45:57 PM
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!