Войти
UnityФорумПрограммирование

Stencil & Deferred совсем не друзья?

#0
18:58, 17 фев. 2021

Привет всем!

Как же запарился со всей этой оптимизацией и документацией юнити :/
Есть необходимость отрисовать обьект по маске:
Обьект А пишет Ref 32, а обьект B рисует себя там, где есть значение 32.
32 - это 5-й бит. В Forward все работает хорошо.

В Deferred не работает. Документация гласит:

+ Показать

Видим, что, согласно документации, 32 можно использовать под свои нужды. Но на деле в Deferred маска не работает, переключаю камеру в Forward  - и все работает.
Так в чем же проблема? Я правильно понял английский, 32 должен же везде отрабатывать или что не так???


#1
(Правка: 21:20) 21:11, 17 фев. 2021

У меня в hdrp маски не работают, даже не стал гадать что они опять там намудрили, а в urp/standard в forward/deffered работает.
Для примера моя маска портала.

Stencil
      {
        Ref 2
        Comp always
        Pass replace
      }
Вот сам портал
Stencil {
        Ref 2
        Comp Equal
        Pass Keep
        Fail Keep
      }

Сами юнити в документации использует Ref1 ref2
https://docs.unity3d.com/Manual/SL-Stencil.html
Стенсил сравнивает числа, а не биты. Используй другие значения
https://learnopengl.com/Advanced-OpenGL/Stencil-testing

A stencil buffer (usually) contains 8 bits per stencil value that amounts to a total of 256 different stencil values per pixel
#2
12:41, 18 фев. 2021

Alerr
ты что сделать хочешь?

#3
14:48, 18 фев. 2021

innuendo
> ты что сделать хочешь?
У тебя буферной памяти хватает только читать и писать максимум одно предложение?
Написали же
Alerr
> Есть необходимость отрисовать обьект по маске:

#4
16:13, 18 фев. 2021

Kripto289
отрисовал ты по маске - дальше шо?

#5
16:40, 18 фев. 2021

innuendo
> Kripto289
> отрисовал ты по маске - дальше шо?
Это все, дальше радуешься результату. Задача несложная, но в Deferred почему-то неработает.

#6
1:12, 19 фев. 2021

innuendo
> отрисовал ты по маске - дальше шо?

+ Показать
#7
9:48, 19 фев. 2021

Alerr
> Это все, дальше радуешься результату. Задача несложная, но в Deferred почему-то
> неработает.

стенсил это глубоко в рендере - ты рискуешь поиметь проблему с обновлением

#8
9:48, 19 фев. 2021

Kripto289
facepalm | Stencil & Deferred совсем не друзья?

#9
12:04, 19 фев. 2021
жудожник по эффектам и покрамист графики не пожедиди канал на текстуре
#10
13:46, 20 фев. 2021

Alerr
> но в Deferred почему-то неработает.
там стенсил используется для оптимизации лайтинга

#11
12:56, 11 апр. 2021

Зачем использовать палку-копалку ( это я про stencil ) если в deferred рендере есть возможность считать кастомные пассы...вроде он ( deferred ) для этого и создавался чтоб превратить процесс рендера во внятный послойный композ.

#12
15:08, 11 апр. 2021

RandomStroke
> Зачем использовать палку-копалку ( это я про stencil )

как ты будешь делать портал?

#13
12:01, 12 апр. 2021

Посчитаю нужные пассы в отдельные рендер текстуры и смешаю в шейдере) А скорее всего возьму несколько текстур и сделаю фейк с parallaxовым маппингом ( https://gyazo.com/0331ef1dc73aee738e43d16e1713c133 ), т-к считать фулскрин текстуру ради кусочка на экране это такое себе) А если по теме то видимо с кастомными пассами до сих пор всё непросто, на юньском форуме пишут что стенсил только в forward работает нормально , и собсн подход к порталам такой-же...через RT.
https://answers.unity.com/questions/1557353/creating-a-3d-portal-… buffer-w.html

#14
14:07, 12 апр. 2021

RandomStroke
> т-к считать фулскрин текстуру ради кусочка на экране это такое себе)

какие ваши предложения ?

UnityФорумПрограммирование