Я не уверен, как вы применили сценарии в репозитории Github, на который вы ссылались.Похоже, что контурный шейдер применяется только к листовому материалу 3D-модели, которую вы разместили, однако я считаю, что этот контурный эффект предназначен для шейдера после обработки или замены.Я думаю, что вы прикрепляете скрипт или ссылку на листья дерева, когда вы должны прикрепить его к камере.
Обновление : я загрузил репозиторий и изменил сценарий «UnityOutlineFX.cs» для работы с несколькими материалами (проблема заключалась в том, что сценарий изначально содержал только материалы в индексе0).Исправление заключается в функции RecreateCommandBuffer()
, и я добавил следующий код (обратите внимание на цикл for для различных материалов):
// render selected objects into a mask buffer, with different colors for visible vs occluded ones
float id = 0f;
foreach (var collection in _objectRenderers)
{
id += 0.25f;
_commandBuffer.SetGlobalFloat("_ObjectId", id);
foreach (var render in collection)
{
for(var i=0; i<render.sharedMaterials.Length; i++) {
_commandBuffer.DrawRenderer(render, _outlineMaterial, i, 1);
_commandBuffer.DrawRenderer(render, _outlineMaterial, i, 0);
}
}
}
Исходная проблема (только один материал был обрисован в общих чертах, с синими и оранжевыми объектами на этом рисунке, являющимися частью одной сетки)
Контур, работающий над сеткой (оранжево-синяя сетка) с тремя подсетями и двумя разными материалами.