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

Рисование объектов за преградами. opengl (2 стр)

Страницы: 1 2
#15
(Правка: 13 янв. 2021, 0:31) 23:39, 12 янв. 2021

Vlad2001_MFS
Проверил. нет.

Есть еще вариант стены, объекты и прозрачные стены в один проход рисовать, а потом отдельным шейдеров объекты с контуром. но лишний раз объекты отрисовывать... и хотелось бы понять что не так.
(ред)
А нет, не могу. Прозрачные стены тоже в буфер отрисуются, и через них тоже будет контур рисоваться, а это мне не надо. Ну в общем да, можно сделать, скопировать стены, на них вторым проходом объектами пройтись с шейдером, который только контуры рисует.


Может я не так понял принцип работы gl_FragDepth?
Стер все из main и просто сделал так gl_FragDepth=0.0001; тоже ничего не рисуется.

#16
(Правка: 6:15) 6:07, 13 янв. 2021

AWPStar
Сортируй по прозрачности (материалу). И только в конце рисуй окантовку. Тебе так и так рисовать дважды, в два прохода. Поэтому, накапливай что надо отрисовать в буфер, а только потом рисуй. Получится за 1 раз, но в два буфура. В общем, Бро) пищи если что.
Такая техника применяется в Minecraft, для этого там отдельный класс Tesselator.
https://forum.mcmodding.ru/threads/tutorial-chto-takoe-tessellator.7071/
Тебе лишь нужен принцип его работы.

#17
8:06, 13 янв. 2021

Salamandr

В два прохода я придумал так.

+ Показать

Но я прямо ощущаю что должен быть способ писать в depth что дало бы возможно отрисовывать объекты один раз. И я просто что-то не так делаю.

И я воспользуюсь простым вариантом, т.к. я хочу вариативность и мне надо не для всех объектов контуры рисовать. Просто теперь, когда я выяснил как буду делать, хочется понять что не так с тем вариантом)

#18
(Правка: 13:09) 9:33, 13 янв. 2021

За один проход можно, но надо атлас всех текстур. А простой вариант, это как у тебя или : рисовать всю сцену. Затем alpha 0.2 жёлтым и немного увеличенным (по нормали) рисовать стену что перекрывает ГГ, Затем обычным материалом и обычным размером Стену. Затем также увеличенным и желтым ГГ и затем нормальным его же. Профит)

#19
14:48, 13 янв. 2021

У тебя же есть буфер глубины из камеры. Почему ту не можешь просто ифом в шейдере проверят видимость пикселя и подкрашивать его, если не видим?

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