v3.0.0

Esta página foi traduzida automaticamente e pode conter erros. Encontrou um problema? Use o link "Edit this page" para ajudar a corrigir.

O Turian 3.0.0 muda a forma como um mesh renderer vincula materiais: por slot de material, não por índice de submesh. Um mesh renderer agora desenha materials[submesh.material_slot], de modo que um modelo com milhares de submeshes compartilhando um punhado de materiais precisa apenas desse punhado de slots. É isso que permite que uma cena inteira achatada em uma única mesh — centenas de materiais — seja renderizada por completo em vez de parar nos primeiros 32.

O que mudou

  • MeshRendererComponent — o array materials agora é indexado pelo slot de material (Submesh.material_slot), não pelo índice da submesh. Tanto o renderizador de GPU quanto o de software consultam materials[submesh.material_slot].
  • Limite de materiais — o limite por renderer subiu de 32 para 160 (MAX_MATERIALS). Meshes com mais de 32 materiais agora vinculam e renderizam todos eles.
  • Submeshes de GPU — não são mais limitadas a 32; todas as submeshes de uma mesh são desenhadas a cada frame.
  • Arquivos de cenamaterial_guids agora são armazenados por slot de material (antes eram por submesh). O campo version da cena sobe de 1 para 2.
  • O formato de mesh compilado (TMSH) não mudou — nenhum recook é necessário. Apenas o formato de cena/componente mudou.

Quem é afetado

Qualquer projeto com cenas que atribuem materiais a modelos multi-material, e qualquer código de jogo que lê ou escreve MeshRendererComponent.materials / material_count assumindo a antiga vinculação posicional (por submesh).

Passos de atualização

1. Atualize para 3.0.0

Baixe o SDK 3.0.0. Os SDKs são autocontidos, então você pode manter o SDK 2.x instalado lado a lado enquanto migra (veja a política de releases).

2. Migre os arquivos de cena

Cenas antigas continuam carregando — as vinculações de materiais de uma cena v1 são reconstruídas em memória e um aviso é registrado. Para persistir a conversão em todo o projeto de uma só vez, execute o migrador em um projeto cujos assets já tenham sido importados pelo menos uma vez (abri-lo no Studio, ou turian-cli import, faz isso — o migrador precisa do artefato compilado de cada modelo para reconstruir os materiais por slot):

turian-cli migrate path/to/project

O comando varre todas as cenas, reescreve as que ainda estão no formato antigo, e reporta o que foi alterado. Faça commit do diff resultante. (Abrir uma cena no Studio já a migra ao carregar e a marca como suja, então salvá-la também a persiste — o CLI é apenas a versão em lote.)

Substituições manuais por submesh são resetadas. O formato 2.x por submesh não pode ser mapeado para slots de material sem ambiguidade, então a migração reconstrói a tabela de cada renderer de modelo a partir dos slots padrão do modelo e registra um aviso. Se você havia atribuído manualmente um material não padrão a uma submesh específica, reatribua-o por slot no Inspector após migrar. Projetos que usaram os materiais atribuídos automaticamente (o caso comum) não precisam de nenhuma ação adicional.

3. Atualize o código do jogo

Se seu código atribuía ou lia materiais do renderer por índice de submesh:

// 2.x — materials[i] vinculado à submesh i
renderer.materials[submesh_index] = my_material_ref;

// 3.0.0 — materials[slot] vinculado pelo material_slot da submesh
renderer.materials[material_slot] = my_material_ref;
renderer.material_count = slot_count; // número de slots de material únicos

Meshes com um único material não são afetadas: materials[0] ainda se aplica à mesh inteira (uma mesh sem tabela de submesh desenha inteiramente com o slot 0). Um slot não definido ou fora do intervalo recorre ao material padrão. O Inspector agora mostra uma linha por slot de material.

4. Verifique modelos grandes / achatados

Modelos com mais de 32 submeshes ou materiais eram cortados pelo 2.x — apenas as primeiras 32 submeshes eram desenhadas. Após migrar, eles renderizam por completo: espere que geometria antes ausente apareça, cada superfície com seu próprio material de slot.

Não faça downgrade depois

Cenas salvas pelo 3.0.0 armazenam material_guids por slot e version: 2; o 2.x lê essas entradas como se fossem por submesh e vincula os materiais errados. Migre um projeto uma vez, apenas para frente; se precisar experimentar antes, faça isso em uma branch.


← Toda a documentação Editar esta página