Dmitry_Milk
> использовать также текстуры с FLOAT для каждой цветовой компоненты в
> COLOR_ATTACHMENT?
Да, насколько помню.
Как сегодня побеждают peter panning? Делают двойные стенки мешей в 3D редакторе или используют геометрический шейдер для этого?
iw4nna.rock
> Как сегодня побеждают peter panning? Делают двойные стенки мешей в 3D редакторе
> или используют геометрический шейдер для этого?
Так же как и раньше. Бросают тени только от бекфейсов, и делают отрицательное смещение.
MrShoor
> Так же как и раньше. Бросают тени только от бекфейсов, и делают отрицательное
> смещение.
Это для устранения Shadow acne.
Peter panning - это просветы возле рёбер.
iw4nna.rock
> Peter panning - это просветы возле рёбер.
Peter panning - это когда объект должен был бы лежать на плоскости, но из-за тени он как бы парит. Парение возникает если сделать положительное смещение. Если же сделать отрицательное смещение - то все фронтфейсы уйдут в тень. Поэтому при рендере в шедоумапу рендерят только бекфейсы.
А акне возникает - если смещение вообще не делать, либо если смещение сильно маленькое.
iw4nna.rock
> Как сегодня побеждают peter panning?
В новых играх используют contact shadows для мелких деталей, бонусом это устраняет(маскирует) peter panning. Но это дорого.
Записываю в текстуру свойства материала, чтобы затем использовать эту текстуру в другом проходе.
И получаю артефакты, когда 4-й канал, то есть канал прозрачности, меньше единицы, то R, G и B каналы искажаются.
Есть ли способ сказать OpenGL'у не использовать блендинг для одного color_attachment?
iw4nna.rock
> Есть ли способ сказать OpenGL'у не использовать блендинг для одного
> color_attachment?
Оказалось, что есть способ указать блендинг для конкретной текстуры фреймбуфера:
glBlendFuncSeparatei(0, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
iw4nna.rock
> > Есть ли способ сказать OpenGL'у не использовать блендинг для одного
> > color_attachment?
Можно же через glDisablei(GL_BLEND, /*номер буфера цвета*/).
prowkan
> glDisablei(GL_BLEND, /*номер буфера цвета*/)
О, даже такое есть! Теперь я буду как буриданов осёл.
iw4nna.rock
> Теперь я буду как буриданов осёл
Режим блендинга и включение-выключение
1Man1
остановлюсь на этом:
glEnablei(GL_BLEND, 0); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
ведь блендинг больше нигде не нужен, кроме цветового канала. И тогда не придётся включать и выключать, достаточно один раз включить для 0-го буфера фреймбуфера.
Детский сад...
Есть текстурный объект с двумя каналами.
Можно ли как то используя технологии ядра 4.5 сделать так, чтобы было два текстурных объекта, шарящих между собой одну и ту же память, но при чтении из которых в шейдере по каналу R, я получал значения из R и G каналов соответсвенно?
Насколько я понял сэмплеры не подойдут, так как для них нельзя задавать swizzle.
AMM1AK
Попробуй через glTextureView сделать алиас текстуры и уже ему задать другой свизл.