Шейдер: Визуализатор сетки и визуализатор спрайтов не соблюдают порядок сортировки

#unity3d #shader #sprite #layer #depth

Вопрос:

У меня есть модель fbx, в которой используется мобильный неосвещенный шейдер Unity, и другой спрайт, в котором используется пользовательский шейдер. Я проверил, что они оба находятся в одной очереди визуализации, однако они рисуют не в порядке сортировки, а только по глубине.

Когда у меня порядок сортировки средства визуализации спрайтов установлен на 100, а порядок сортировки средства визуализации сетки установлен на 0, я ожидаю увидеть спрайт, нарисованный перед моделью, независимо от глубины. Но это не то, что я получаю.

В настоящее время 3D-модель использует встроенный в Unity мобильный неосвещенный шейдер (https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Mobile/Mobile-Lightmap-Unlit.shader), и в моем пользовательском шейдере спрайтов эти флаги установлены в блоке подшейдера:

     Lighting Off
    Cull Off
    ZWrite Off
    BlendOp [_OpColor]
    Blend [_SrcFactor] [_DstFactor]
 

Пожалуйста, дайте мне знать, есть ли способы достичь этого?

Комментарии:

1. Убедитесь, что все шейдеры находятся в прозрачной очереди с отключенной функцией ZTest.

2. Что вы имеете в виду под layer of the sprite renderer этим ? Вы редактируете его order в своем SortingGroup или? Вы редактируете layer объект? Или что-то совсем другое?

3. Я создал пользовательские редакторы для визуализации сеток и спрайтов, чтобы редактировать их порядок сортировки (m_SortingOrder).

4. Если вы имеете в this sorting order виду , я не верю, что это оказывает какое-либо влияние на 3D-объекты.

5. Это свойство для визуализации сетки, но оно не влияет на 3D-сетки? Нет никакого способа заставить его работать, написав пользовательский шейдер?