Перейти к содержимому


Свернуть чат Чат Открыть чат во всплывающем окне

lz : (2 недель назад) Оно там просто всё вместе лежит.
Folgen : (2 недель назад) Даже сам Товарищ Майор не нашел бы.
Folgen : (2 недель назад) Ого, ребусы.
lz : (2 недель назад) Я там постоянно.
lz : (2 недель назад) Можно початиться в реалтайме в телеге - https://t.me/joincha...j5MKUrxakTyCPwQ
lz : (2 недель назад) Тулзы качаются программой bootstrap_tools из бутстраппера (как скачать - у меня в подписи). Если хочется самим собирать, отпишитесь ещё, я инструкции по сборке допишу.
PA3UJIb : (2 недель назад) по ходу это из LLVM
PA3UJIb : (2 недель назад) cmake скрипты недописаны. А заголовочники сначала подумал, что из boost, но и там такого не нашел
Folgen : (2 недель назад) У меня вообще фигня с СиМэйк. Я уж подумал ну его. А там хедеры нужны от Полигона4.
Folgen : (2 недель назад) Вот-вот!
PA3UJIb : (3 недель назад) Не знаю, я не смог его "tools" собрать - многих заголовочных нету и хз где их брать.
Гость : (3 недель назад) У кого-нибудь есть полный пак инструментария от lz?
Yakim (Watco... : (14 Июль 2018 - 00:06) :D
Yakim (Watco... : (14 Июль 2018 - 00:06) nope
Yandersen : (13 Июль 2018 - 22:07) Айаяй. Поди Якимко заспамил чат стикерами. :)
Yandersen : (13 Июль 2018 - 22:06) Да лан, тут каждый день кто-нить из админов заглядывает. Как пропустили?
Nextovoy : (13 Июль 2018 - 01:04) Я писал
Гость : (10 Июль 2018 - 22:42) Сорьки, что так у нас. Чего три года так и не попытался в чат писнуть? :)
Nextovoy : (06 Июль 2018 - 16:15) Спасибо
lz : (04 Июль 2018 - 19:44) Активировал.
Гость : (03 Июль 2018 - 16:30) Активируйте его.
Гость : (03 Июль 2018 - 16:30) Мой профиль - Nextovoy
Гость : (03 Июль 2018 - 16:25) Написать в чат. Профиль в ручную админы активируют.
Гость : (03 Июль 2018 - 15:47) Ох уж эта дурацкая привычка писать всё раздельно засоряя чат. Это всё классно, конечно, но ребята, одменестраторы, так называемые. Третий год пытаюсь зарегистрироваться (буквально, третий) на этом форуме, но ПИСЬМО С ПОДТВЕРЖДЕНИЕМ НА ПОЧТУ ТАК И НЕ ПРИХОДИТ. Что делать?
Гость : (03 Июль 2018 - 15:46) Перешёл я всё же по ссылке Redoctor'a...
Гость : (03 Июль 2018 - 15:41) Пора уже M4
Гость : (29 Июнь 2018 - 00:18) итак м3
lz : (28 Июнь 2018 - 16:01) Мы тебе и тут передадим.
Гость : (28 Июнь 2018 - 13:13) Зачем в телеграмме делать?!Я вот например не могу зайти,написать в чат,подписаться и не только у меня это.
Redoctor : (24 Июнь 2018 - 19:35) https://vk.com/away....0_23001&cc_key=
Redoctor : (24 Июнь 2018 - 19:34) Тогда в телеграмме в поисковике набери Механоиды 3
Гость : (24 Июнь 2018 - 19:05) Не открывается.
Redoctor : (24 Июнь 2018 - 18:00) https://t.me/mechanoids3 Для тех кто в танке.
Yakim (Watco... : (15 Июнь 2018 - 01:33) КРУЗИИИС!!!11

Изображение
lz : (15 Июнь 2018 - 00:09) КРУЗИС!
lz : (15 Июнь 2018 - 00:09) ЗИС
lz : (15 Июнь 2018 - 00:09) КРУ
Yakim (Watco... : (14 Июнь 2018 - 14:50) Крузис и Королева тоже не в моем вкусе, а проигрывать нечего =D
lz : (14 Июнь 2018 - 13:55) Конечно, полюбить - так королеву, проиграть - так миллион, сделать - так крузис.
smt005 : (14 Июнь 2018 - 00:22) И от третьего лица тоже можно сделать простенькую игру. Простая игра это лучше чем ничего.
smt005 : (14 Июнь 2018 - 00:21) А, ты хочеш что-бы хит был, с "Crysis" графоном и контентом на 100500 часов игры?
Yakim (Watco... : (14 Июнь 2018 - 00:18) Ни топдовншутеры, ни стратежки)
Yakim (Watco... : (14 Июнь 2018 - 00:15) Не, спасибо, не в моем вкусе=)
smt005 : (13 Июнь 2018 - 23:13) Помнится за пару недель от скуки сделал. Делал по вечерам.
smt005 : (13 Июнь 2018 - 23:13)

Фотография
- - - - -

Моделирование освещения

graphics ray tracing rasterization lighting

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 27

#21 OFFLINE   PA3UJIb

PA3UJIb

    Серый

  • Создатель
  • 171 сообщений

Отправлено 19 Январь 2015 - 17:23


просто пирамиду видимости в экран всовываешь при рисовке тени, да?

Да, именно этот способ я пользую.


 


#22 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 19 Январь 2015 - 21:05

Ну так тогда причём здесь размер экрана? Пирамида будет просто немного другой формы и всё. Текстура тени может быть любого размера, и обычно её квадратной делают с размерами кратными степени двойки (архаизм с времен ГЛ1, когда non-POT текстуры не поддерживались), в то время как вьюпорт любым может быть.



#23 OFFLINE   PA3UJIb

PA3UJIb

    Серый

  • Создатель
  • 171 сообщений

Отправлено 20 Январь 2015 - 15:51

Создаю текстуру, цепляю ее как depth-attachment к FBO. С позиции источника света рендер без цвета (а так же вкуса и запаха) при помощи ортогональной матрицы проекций в текстуру. Затем рендер с позиции наблюдателя с обычной, перспективной матрицей. Поверх текстурируем полученной в прошлом проходе depth-текстурой.

Вот так: Прикрепленный файл  shadowDemo.7z   1,9МБ   18 - Раз(а) скачано

Исходники тут: Прикрепленный файл  shadowDemo_src.7z   110,54К   17 - Раз(а) скачано


 


#24 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 20 Январь 2015 - 21:10

Такся...

 

1) Шейдер shadowmap.fs - шо за шляпные извращения сделать границы текстуры мягкими, когда подобное поддерживается аппаратно? Нужно лишь фильтр текстуры на GL_LINEAR выставить. На выходе получишь стандартный vec4 из которого выбираешь первый компонент.

 

2) Вершинные шейдеры (*.vs) - достаточно объявить входной аттрибут 4-хкомпонентным вектором, чтобы 4-я компонента автоматом была равна 1, даже если прога пихает 3-хкомпонентые вектора шейдеру.

 

3) Шейдер shadowmap.vs - трансформаций и матриц слишком много. Зачем тебе отдельная матрица для нормалей? Юзай ту же, что и для вершин - если у вектора 4-я компонента равна 0, то трансформация эквивалентной получается.

 

4) ехе: малацца, кульно! Но невнятна тёмная (не чёрная) полоса на полу по диагонали.

 

5) Доставило:

    // проверка программы на валидность
    if (!mShaderMgr->validateProgram(_program))

Не надоело ещё комменты на русском писать?  :D  Типа, русскими буквами английские термины легче воспринимаются?  :D  Ну, написал бы хоть:
 "проверка шейдерной программы на применимость при данных настройках ОпенГЛ".  :)

 

6) Бинденье текстур, вершинных аттрибутов и цветовых аутпутов - прошлый век. Юзай layout квалифаер чтоб прям в шейдере указывать, в каком слоте нужная текстура сидит, из какого слота вершинный аттрибут вытаскивать и в какой по счёту таргет фреймбуффера писать цвет.

А в проге просто биндни текстуру туда один раз и пусть в том текстурном слоте окалачивается вечно. В случае с depth-текстурой идеальное решение - создал, прицепил, настроил и забыл.

 

7) При рендере в ФБО вижу запрет записи цветовых компонент (glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) ;) и разрешение записи в буффер глубины - это всё зачем вапще?! У твоего ФБО что, цветовые текстуры-недотроги прицеплены? Их нет - никуда ничего писаться итак не будет. Активен может быть только один ФБО, дефолтный не попортиться, пока в ФБО рендеришь.



#25 OFFLINE   PA3UJIb

PA3UJIb

    Серый

  • Создатель
  • 171 сообщений

Отправлено 21 Январь 2015 - 03:12

А, чорт, перешел же на объединенный файл шейдера. Эти *.vs и *.fs есть пережиток прошлого.

 


1) ...  

2) ...

Честно - не знал.


3) ...Зачем тебе отдельная матрица для нормалей? Юзай ту же, что и для вершин - если у вектора 4-я компонента равна 0, то трансформация эквивалентной получается.

Подумаю над этим.

Пока удобнее в программе матрицу перевернуть и передать её уже в шейдер.


4) ... невнятна тёмная (не чёрная) полоса на полу по диагонали.

Вот моя проблема. Никак не пойму, от чего она образуется


5) Доставило:     // проверка программы на валидность     if (!mShaderMgr->validateProgram(_program)) Не надоело ещё комменты на русском писать?

Ну, транлитировать получается короче, чем рассусоливать всё.


6) Бинденье текстур, вершинных аттрибутов и цветовых аутпутов - прошлый век. Юзай layout квалифаер чтоб прям в шейдере указывать

Поподробнее, пожалста


7) При рендере в ФБО вижу запрет записи цветовых компонент (glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE) и разрешение записи в буффер глубины - это всё зачем вапще?! У твоего ФБО что, цветовые текстуры-недотроги прицеплены? Их нет - никуда ничего писаться итак не будет. Активен может быть только один ФБО, дефолтный не попортиться, пока в ФБО рендеришь.

Ок, исправлюсь


 


#26 OFFLINE   Yandersen

Yandersen

    Диванный теоретик

  • Админ
  • 454 сообщений
  • Откуда:Canada
  • Настоящее имя:Ян

Отправлено 21 Январь 2015 - 08:50

Поподробнее о магической уточняющей приписке, именуемой "layout".

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

layout(location = 0) in vec3 VertexCoord;
layout(location = 1) in mat3 TBN;
layout(location = 4) in uvec4 Attrib;

 

И точно также с выходными аттрибутами вершинного шейдера и входными аттрибутами фрагментного:

layout(location = 0) out vec3 ViewPos;
layout(location = 1) out vec3 Normal;

 

Причём имена там и там могут быть разные - главное, чтоб локейшн совпадал. Во фрагментном ещё и выходные данные точно также локейшном указываются:

 

layout(location = 0) in vec3 Pos;
layout(location = 1) in vec3 N;
layout(location = 0) out vec4 Color;

 

Т.е. с помощью "layout" мы жёстко определяем интерфейс входных и выходных данных каждого шейдера. Всё логично.

А кстати слоты униформов точно также фиксировать можно в любом из шейдеров:

layout(location = 0) uniform mat4 ModelViewMatrix;
layout(location = 4) uniform mat4 ProjectionMatrix;

 

Следует отметить, что каждый слот имеет размер 32 байта (поэтому dvec4 займёт два слота) и не может включать более одного вектора (поэтому каждому столбцу матрицы свой отдельный слот присваивается).

 

Ну и напоследок в GLSL 4.3 разрешили, наконец, текстуры прямо в шейдерах дефолтно биндить к желаемым текстурным юнитам:

 

layout(binding = 0) uniform sampler2D DiffuseTexture;

layout(binding = 1) uniform sampler2D SpecularTexture;

layout(binding = 7) uniform sampler2DShadow ShadowMap;

 

Пнятненько?



#27 OFFLINE   PA3UJIb

PA3UJIb

    Серый

  • Создатель
  • 171 сообщений

Отправлено 24 Январь 2015 - 10:17

Пока колдую над демкой с тенями

Сохраняю промежуточный результат

Прикрепленный файл  shadowDemo_v2.7z   1,91МБ   20 - Раз(а) скачано

 


 


#28 OFFLINE   PA3UJIb

PA3UJIb

    Серый

  • Создатель
  • 171 сообщений

Отправлено 26 Январь 2015 - 16:58

Да, я переключаюсь: glCullFace(GL_FRONT) когда проходит рендер в текстуру, и glCullFace(GL_BACK) когда простой рендер.

Ты правильно заметил, что "binding" добавили только в GLSL 4.2. Я прогаю в чистом GLSL 3.3, там этого еще нету.

Получилось кстати отобразить depth-текстуру

shadowDemo3_screen01.png

Ща воюю с картинкой - почему-то на разных машинах (обе с видеокартами от nVidia) рисуется разное.

shadowDemo3_screen00.png

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Короче, вкурил исходный код урока с тенями - оказывается, всё дело в яркости материала. Пока она низкая, то неправильное самозатенение не видать. Стоит только выкрутить на поярче, то и там, и у меня видно косяки. Как это исправить пока не знаю, но буду, буду искать.

 

Демо с тенью (версия 4) Прикрепленный файл  shadowDemo_v4.7z   1,91МБ   4 - Раз(а) скачано

Исходники Прикрепленный файл  shadowDemo_source.7z   116,83К   5 - Раз(а) скачано

 

Да, ещё вывел для себя правило - "В один проход рендера один конкретный VAO будет работать только с одной конкретной шейдерной программой"

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 
Вот.
lightDemo3_screen02.png
Прикрепленный файл  lightDemo3.7z   5,27МБ   67 - Раз(а) скачано исходный код Прикрепленный файл  lightDemo3_source.7z   147,67К   66 - Раз(а) скачано
Выдалась более-менее свободная неделька на работе. Новая программка, демонстрирующая разные типы освещения. По Фонгу. по Блинну, по модели Кука-Торренса, типа Cartoon и, самый главный мой затык, normal-mapping по Фонгу и Куку.
Камера по-прежнему летает свободно (WASDQE и мышка). Есть фиксированные положения - '1', '2' и '3'. Можно также покрутиться вокруг модели стрелками 'влево'-'вправо'.
Клавиша Enter вкл/выкл вращение модели и света.
Клавиша Space вкл/выкл курсор.
Клавиша F переключает режимы отображения модели глайдера.
Клавишb F1-F6 переключают шейдеры.
Выход по Escape.
Основное здесь всё же не шейдеры с различными моделями освещения, а вынос материала за программу. Теперь можно менять некоторые параметры и текстуры в материале не прибегая к перекомпилляции всех исходников. Я буду и дальше продолжать улучшать и углублять этот подход.
Ну, и плюс мелкие доработки вроде появившегося счетчика ФПС, правильно работающего таймера в лог-файле и еще что-то там.

Сообщение отредактировал PA3UJIb: 22 Март 2015 - 10:52
Новая демка (исправлено) - 22.03.2015

 





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных