Войти
ПрограммированиеФорумГрафика

[Unity] [SRP] DOOM 2016 рендер (2 стр)

Страницы: 1 2
#15
22:31, 31 июля 2019

foxes
Я вообще ничего не читаю. И даже не пишу. Я просто говорю юнити - вот щас пиши в глубину, а щас не пиши, но рисуй только то, что совпадает. Причем в шейдере, а не в коде. Через параметры пассов ZTest LEqual ZWrite On / ZTest Equal ZWrite Off. В коде я просто говорю, что в первом пассе цвет надо рендерить в текстуру, а второй раз цвет на экран.

#16
22:32, 31 июля 2019

foxes
> И с инверсией косяк может быть из за того что игра в DX работает, а редактор в GL.
Нет, редактор работает в DX. Просто рисуется совершенно по разному. В одном есть внутренние хаки, в другом нет. И флипает только первый пасс, когда рисую в текстуру, второй же не флипает. И дока это подтверждает.

#17
22:43, 31 июля 2019

Dampire
> На 2019.1.10+

Есть уже 2019.2.0.

#18
22:46, 31 июля 2019

Dampire
> И дока это подтверждает.
Дока не говорит что они разные для редактора и игры.

#19
13:11, 2 авг. 2019

Dampire
Я просто тоже пишу свой SRP и тоже с pre pass'ом, у меня все ок работает, хоть в текстуру рисуй, хоть в бэкбуфер. Я проверял на DX, Vulkan и Metall. ZTest Equal работает на всех GAPI.
Я не делаю кастомных матриц, юзаю только то, что устанавливает камера через context.SetupCameraProperties. Если где-то юзаются кастомные матрицы проекции, то я прогоняю их через GL.GetGPUProjectionMatrix.

#20
13:19, 2 авг. 2019

Покажи как биндишь RT для препасса и шейдер препасса можно. Я уже кучу всего перепробовал

#21
18:40, 2 авг. 2019

Вот бинд RT:

m_GBuffer[0] = m_NormalsAttachment.Identifier();
m_GBuffer[1] = m_BakedGIAttachment.Identifier();
cmd.SetRenderTarget(m_GBuffer, m_DephtAttachment.Identifier());

Attachment'ы - это вот такая структурка

В шейдере ничего особенного, НО я юзаю их Core-библиотеку, которая разруливает все трансформации. Типа вместо умножения матриц вызываю TransformObjectToWorld(float3 positionOS) и т.п. За основу брал их Universal RP (бывший LWRP).
В шейдере препасса у меня даже не указаны ни ZTest ни CullMode. Все дефолтовое. Только в шейдере основного пасса ZTest Equal

#22
21:26, 2 авг. 2019

А, ну у тебя деферред и глубина в FBO, поэтому и ведет себя норм.

#23
0:17, 3 авг. 2019

Ну это не деферред, просто в препассе дополнительную инфу вывожу. Но глубина в отдельном буфере, да. А как без глубины в отдельном буфере ты собираешься сделать препасс?

#24
2:27, 3 авг. 2019

Bonus
Ну так сделал в аппаратной глубине и без очистки. Т.е. оффскрин рисует в скрин-глубину.

#25
6:54, 3 авг. 2019

По идее юнька хачит vp-матрицу в зависимости от того, во что ты рендеришь в rt или в бекбуфер. И когда ты биндишь в таком миксе, то глубина на DX будет флипнута по Y. А SceneView не флипается, потому что оно всегда в rt рисует, чтобы дорисовывать Selection и другие редакторные фичи.

#26
10:39, 3 авг. 2019

Bonus
Ну вот я к тому же и пришел. Причем багу я вроде как вылечил хаком, но с вулканом так и не подружил. Позже попробую в FBO глубину рисовать, посмотрим что выйдет.

Страницы: 1 2
ПрограммированиеФорумГрафика