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


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

Yakim (Watco... : (неделю назад) :D
Yakim (Watco... : (неделю назад) nope
Yandersen : (неделю назад) Айаяй. Поди Якимко заспамил чат стикерами. :)
Yandersen : (неделю назад) Да лан, тут каждый день кто-нить из админов заглядывает. Как пропустили?
Nextovoy : (неделю назад) Я писал
Гость : (неделю назад) Сорьки, что так у нас. Чего три года так и не попытался в чат писнуть? :)
Nextovoy : (2 недель назад) Спасибо
lz : (2 недель назад) Активировал.
Гость : (2 недель назад) Активируйте его.
Гость : (2 недель назад) Мой профиль - Nextovoy
Гость : (2 недель назад) Написать в чат. Профиль в ручную админы активируют.
Гость : (2 недель назад) Ох уж эта дурацкая привычка писать всё раздельно засоряя чат. Это всё классно, конечно, но ребята, одменестраторы, так называемые. Третий год пытаюсь зарегистрироваться (буквально, третий) на этом форуме, но ПИСЬМО С ПОДТВЕРЖДЕНИЕМ НА ПОЧТУ ТАК И НЕ ПРИХОДИТ. Что делать?
Гость : (2 недель назад) Перешёл я всё же по ссылке Redoctor'a...
Гость : (2 недель назад) Пора уже M4
Гость : (3 недель назад) итак м3
lz : (3 недель назад) Мы тебе и тут передадим.
Гость : (3 недель назад) Зачем в телеграмме делать?!Я вот например не могу зайти,написать в чат,подписаться и не только у меня это.
Redoctor : (4 недель назад) https://vk.com/away....0_23001&cc_key=
Redoctor : (4 недель назад) Тогда в телеграмме в поисковике набери Механоиды 3
Гость : (4 недель назад) Не открывается.
Redoctor : (4 недель назад) 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)
smt005 : (13 Июнь 2018 - 23:11) Или например такое, только с моделями из игры -> https://youtu.be/RFDdN5dcX8s
smt005 : (13 Июнь 2018 - 23:07) Yakim, да сами себя пните... :) Сделайте что-то, хотя бы уровня "Scrolling TopDown Shooter".
Yakim (Watco... : (12 Июнь 2018 - 22:17) так что, думаю завтра с утреца стартану марафон)
Yakim (Watco... : (12 Июнь 2018 - 22:15) хе-хе, не сомневайся, я в чате по уе уже поинтересовался, сказали обалденный сериал)))
Yandersen : (12 Июнь 2018 - 20:56) Оооооо, поди ща залипнет на пару дней, стопудофф. :)
Yakim (Watco... : (12 Июнь 2018 - 18:28) Окей гляну)
Yandersen : (12 Июнь 2018 - 16:23) Сериал Пространство посмотри. Не по части Мехов, просто шикарен, авось ману доставит.
Yakim (Watco... : (11 Июнь 2018 - 18:50) Дуст и ты уже закаленные и пустые, надож где-то ману доставать)))
Yakim (Watco... : (11 Июнь 2018 - 18:49) Думаю, кого быть пнуть, что-бы тот пнул в ответ да по сильнее.
Yakim (Watco... : (11 Июнь 2018 - 18:48) Давненько и не маленько хе-хе, делать нечего, прокрастинирую =)
Yandersen : (11 Июнь 2018 - 17:46) Якимка, ты там шо, упоролсо маленько? Чиво картинами опспамилсо?
Yakim (Watco... : (09 Июнь 2018 - 22:27) Изображение

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

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

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

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

 





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

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