Я только начал изучать Unity, но, поскольку я пришел из среды программирования на C #, я обнаружил, что стандартные сценарии очень быстро изучаются.К сожалению, теперь я столкнулся с проблемой, для которой я считаю, что нужен специальный шейдер, и я полностью потерян, когда дело доходит до шейдеров.
Сценарий: Я использую пользовательский процесс масштабирования расстояния, чтобы действительно большие, удаленные объекты перемещались в разумном диапазоне точности с плавающей запятой от игрока.Это прекрасно работает и управляет масштабированием объектов в зависимости от их скорректированного расстояния, поэтому они на самом деле кажутся очень далекими.Проблема возникает, однако, когда два из этих объектов проходят близко друг к другу в игровом пространстве (это все равно будет миллионы единиц в реальном масштабе), потому что они явно сталкиваются.Пример: https://www.youtube.com/watch?v=KFnuQg4R8NQ
Попытка решения 1: Я рассмотрел выравнивание объектов вдоль оси обзора игрока, и это исправляет столкновение, но это влияет на эффекты затенения и частиц, так чтоХороший вариант
Попытка решения 2: Я пытался изменить RenderOrder, но потому что иногда один объект находится внутри меша другого (хотя центр этого объекта все еще ближе ккамера) это не решает проблему, и эффекты частиц снова проблематичны.
Попытка решения 3: Я попытался переместить сталкивающиеся объекты в их собственный слой, порождая новую камерус большей глубиной в том же положении, что и основная камера, и заставляет камеры видеть элементы только в соответствующих слоях, но это вызывало проблемы с освещением, поскольку некоторые объекты освещают другие, и у меня было только ограниченное количество слоев, поэтому это решение былодовольно ограниченно, так как это заставило меня иметь только небольшое количество объектов, которые могут перекрыватьсяе.ПРИМЕЧАНИЕ: это решение, вероятно, самое близкое к тому, что мне удалось найти.Пример: https://www.youtube.com/watch?v=CyFDgimJ2-8
Попытка решения 4: Я попытался обновить код стандартного шейдера, загрузив его со страницы загрузок Unity и создав свой собственный пользовательский шейдер, который позволяет мне изменятьСвойства ZWrite и ZTest, но поскольку у меня нет реального понимания того, как они работают, я никуда не деться.
Запрос: Я был бы очень признателен за пример кода сценария Shader того, какЯ могу программно заставить один объект, чья сетка либо сталкивается с другой сеткой, либо полностью внутри нее, визуализировать перед этой сеткой.Я надеюсь, что смогу взять этот пример и применить его ко всем шейдерам, которые я сейчас использую (Standard, Particle Additive), чтобы добиться эффекта, который я ищу.Заранее спасибо за помощь.