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

OpenGL Вопросы (84 стр)

Страницы: 180 81 82 83 84 85 Следующая »
#1245
22:43, 19 фев 2024

MrShoor
Вообще pbr+ibl. Но не рей трейсинг, а полигональной рендер, поэтому лучами я не оперирую. По сути эта функция f из моего поста и есть расчёт освещённости по baseColor, Metalness, Roughness, ну и параметрами источника. Цвет материала очевидно vec3. Стал экспериментировать с прозрачной геометрией, вот и встал вопрос о том, что делать с альфой. Попробовал ее считать, как описал в посте, то есть просто подставлять в значение суммы посчитанного освещения от всех источников, вроде выглядит более-менее. Всяких пересветов и засветов не наблюдаю.

#1246
22:45, 19 фев 2024

Статейку бы на эту тему какую. Если поделишься, буду благодарен:)

#1247
9:51, 20 фев 2024

AMM1AK
Типа альфа учитывается для транслюсент
Как сквозь толстое стекло или листья пальмы

#1248
10:49, 20 фев 2024

AMM1AK
> Вообще pbr+ibl
Физически корректно будет использовать закон Бера-Ламберта, где твоя "альфа" описывает коэффициент поглощения. Но типично так никто не заморачивается (особенно в полигональном рендере). В полигональном рендере вообще все плохо с этим делом, потому что для прозрачных материалов с противоположной стороны геометрии надо по хорошему точно так же считать brdf. :)

> Статейку бы на эту тему какую. Если поделишься, буду благодарен:)
Увы, не подскажу. Но в полгиональном рендере я бы делал примерно так:
1. Считаешь brdf, и узнаешь сколько света отразилось
2. Для оставшегося света считается сколько переизлучилось, а сколько прошло сквозь
3. Блендим всё это, но не как обычно, а через front-to-back блендинг (в dest текстуре при этом в альфе храним количество света, которое мы можем пропустить, а альфаканал смешиваем через умножение)

#1249
15:56, 21 фев 2024

MrShoor
Спасибо большое за наводку! Поизучаю.

MrShoor
> 3. Блендим всё это, но не как обычно, а через front-to-back блендинг (в dest
> текстуре при этом в альфе храним количество света, которое мы можем пропустить,
> а альфаканал смешиваем через умножение)
Я так понял, тут речь о нескольких прозрачных слоях для одного источника света. Это вроде понятно. У меня изначально была ситуация когда несколько источников света лупят в один пиксель😃

#1250
23:04, 21 фев 2024

AMM1AK
Нсли  просто тонкое стекло по просто альфа
Иначе транслусент

#1251
0:04, 23 фев 2024

AMM1AK
> У меня изначально была ситуация когда несколько источников света лупят в один
> пиксель
Ну так просто, от каждого источника диффузную (но только диффузную) часть умножаешь на альфу. Всё вместе складываешь. Далее учитываешь, что это уже premultiplied альфа. Поэтому рендеришь с glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

#1252
2:28, 7 апр 2024

Дублирую вопрос. Думаю по данной теме сюда больше заглядывают.

  Если кто знает!
  Проблема для 19-й демки под Android: треугольник не рисуется. В манифесте выставлен флаг для GLES 2.0, при создании приложения выставлено setEGLContextClientVersion(2). Шейдера самые простые.
  Демка для эмулятора работает, для смартфонов не выводит треугольник. При чём на новом планшете ещё очищает экран заданным цветом, а на старом просто чёрный экран.
  Я просто уверен что какую-то мелочь упустил, но понять не могу какую.

+ сам код.
+ вершинный шейдер
+ фрагментный шейдер
#1253
9:15, 7 апр 2024

Mirrel
Если не чистится буфер ... Формат бэкбуыера ?

#1254
12:30, 7 апр 2024

Mirrel
У тебя какая версия GL контекста? Если 3.3, то рисовать нужно только с VAO.
Если 3.0-3.2, то рисовать нужно, так:

glBindBuffer(GL_ARRAY_BUFFER, vboHandles[_vertex]);
glBindBuffer(GL_ARRAY_BUFFER, vboHandles[_color]);
glDrawArrays(GL_TRIANGLES, 0, 3);
#1255
13:03, 7 апр 2024

  На планшете версия 3.2, на телефоне вообще 2.0.

  Значит glVertexAttribPointer выкинуть нафиг надо?

Funtik, или просто при прорисовке использовать код который ты написал?

#1256
13:06, 7 апр 2024

Mirrel
> просто при прорисовке использовать код который ты написал?
Да!

#1257
13:09, 7 апр 2024

Funtik, благодарю! Проверю.
  Столько времени возился с этими шейдерами, что о самом банальном способе вывода даже не подумал.

#1258
4:34, 11 апр 2024

Funtik
> Да!
нет. К сожаленью.
  Но зато в очередной раз пришлось влезть глубже (глубже ли?). Все связывания надо было убрать, генерацию буферов тоже убрать можно и оставить как раз glVertexAttribPointer и glEnableVertexAttribArray.

#1259
(Правка: 10:22) 6:11, 14 апр 2024

  Опять же про GLES 2.0 (а может и выше).
  При создании шейдера функции glEnableVertexAttribArray и glVertexAttribPointer ведь не привязывают данные к активированному шейдеру?

  Точнее, при переключении шейдера на другой, все привязанные данные слетят?

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

тестировать это очень долго придётся просто, чтоб самому всё выяснить.

Mirrel
> Проблема для 19-й демки под Android: треугольник не рисуется.
замечательно... код который не работал, как я не старался, сейчас работает... что за фигня? Всё зависит от расположения звёзд на небе?
  Оказывается я после того как реализовал демку по другому, исправил проблемы с буфером глубины. Из-за того что по умолчанию в ZenGL отключалась проверку на глубину. И включить её нельзя было.
  Мне вообще интересно, каким макаром я запустил для ПК эти демки?

... и вновь поспешил с выводом...

Страницы: 180 81 82 83 84 85 Следующая »
ПрограммированиеФорумГрафика