MrShoor
> Соотвественно если discard-ишь пиксель - то он не должен записаться в буфер глубины.
Извените что вклиниваюсь, а как тогда рендерить геометрию с прозрачностью не ломая early-Z ?
Mr. Rabbit
Судя по всему, никак..
И опять Кащей во всем виноват :P
innuendo
> Видать ты не работал по-настоящему с блендингом ...
Ой ой ой, а сам то работал?
Массив из кубиков: 11*11*301 маленьких кубика:
http://screenup.org/56eba9496eb0d
Каждый кубик имеет альфу 0.33.
Итак, делаю все, чтобы увидеть как блендинг хоть немного просаживает фпс:
1. Специально ставлю торцом к нам, чтобы овердрав в глубину был аж 301 слой.
2. FOV выставляю поменьше: Pi*0.01. Практически ортогональная проекция, дальние кубики имеют офигительную площадь.
3. Тест глубины отключен (даже depth текстура в render target не установлена). Т.е. имеем гарантированный овердрав.
4. Фрагметный шейдер примитивнейший, чтобы любая дополнительная нагрузка была заметна:
PS_Output PS(VS_Output In) { PS_Output Out; float3 n = normalize( In.Normal); Out.Color = max( 0.0, -dot( normalize( In.ViewPos), n)) * In.Color; return Out; }
5. Рисуется все за 1 дравколл, ботлнек однозначно GPU.
Итак, фпс с выключенным блендингом:
http://screenup.org/56ebac2f92047
А теперь включаю бледниг ничего не меняя:
http://screenup.org/56ebac0167fb9
маммамия. 374 фпс против 368. Какжить, какжить? Этож такая большая просадка.
Mr. Rabbit
> Извените что вклиниваюсь, а как тогда рендерить геометрию с прозрачностью не
> ломая early-Z ?
Прозрачность не ломает early-Z (даже на тайловом железе насколько я знаю, но я не проверял). Ломает его discard. И то только на до DX11 железе, ибо в DX11 есть форсированный earlydepthstencil.
MrShoor
> Ломает его discard
Дак я и спрашиваю, как мне правильно отрисовать травку на старой железке не ломая early-Z?
Блэндинг не использую.
Mr. Rabbit
> Дак я и спрашиваю, как мне правильно отрисовать травку на старой железке не ломая early-Z?
Не пиши в буфер глубины травку, тогда можно discard-ить
MrShoor
> Не пиши в буфер глубины травку, тогда можно discard-ить
Но мне не нужна сцена без травки, может вы хотели сказать чтобы я рендерил травку в последнюю очередь?
Mr. Rabbit
> Но мне не нужна сцена без травки, может вы хотели сказать чтобы я рендерил
> травку в последнюю очередь?
Сначала рендерится непрозрачная геометрия front to back. Потом прозрачная back to front. Травка прозрачная геометрия, соответственно рисовать её после непрозрачной, отсортированной от дальней к ближней.
MrShoor
Ты хочешь сказать, что блендинг с нулевой альфой может быть лучше discard-a?
MrShoor
> отсортированной от дальней к ближней.
Но зачем , она у меня не полупрозрачная, блендинг я не пользую?
MrShoor
Сначала рендерится непрозрачная геометрия front to back. Потом прозрачная back to front.
Так вот - топик как раз про рендеринг прозрачной геометрии front-to-back. Нужен только under блендин....
Mr. Rabbit
> Но зачем , она у меня не полупрозрачная, блендинг я не пользую?
А разве тонкие травинки не должны быть полупрозрачными?
Сейчас 2016 год, Готика II уже не в моде.
Kashey
> Сейчас 2016 год
> Deferred Shading
> Crysis3
> Травинки геометрией выводят
Собственно вопрос отпал:
To take advantage of z-cull, follow these guidelines:
1. Don’t create triangles with holes in them (that is, avoid alpha test or texkill)
2. Don’t modify depth (that is, allow the GPU to use the interpolated depth value)
Никакого альфатеста.
Тема в архиве.