Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183

Настоящие отражения в OpenGL?

09.03.2016, 12:59. Показов 5006. Ответов 76

Студворк — интернет-сервис помощи студентам
Внимание! Тема относится к чисто Nvidia, архитектуры Maxwell. Но если вы готовы помочь портировать на другие архитектуры, то велком!

Привет всем. Я пытаюсь реализовать настоящие отражения для OpenGL. Возможно будет порт на DirectX и Vulkan. Пока что из всего этого есть только вокселизатор (точнее раскладыватель по вокселям). При помощи хитрой структуры я буду реализовывать отражения, которые намного лучше чем Screen Space. Пока что отражения только на бумаге да на экспериментах. Чтобы полностью реализовать, потребуются скорее всего дополнительные шейдеры.

https://onedrive.live.com/redi... der%2cgeom

Сделано для видеокарт Nvidia последнего поколения (Maxwell).

Пока что не работают разряженные буферы (sparse volume). Они потребляют полный объем памяти. Обещаю исправить. Единственное что скажу что при 256x структуры потребляют 500Mb. Я бы хотел снизить объем за счет новых технологий.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2016, 12:59
Ответы с готовыми решениями:

Зеркало, матрица поворота(отражения)
пишу на С++ необходимо сделать параболическое зеркало, делал через стренсил буфер , изображение появляется, но какое-то некорректное.. ...

Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности
Я читал про opengl - для его инициализации нужно создавать windows - окно. Для linux видимо инициализация происходить по другому. как мне...

(2 главы перевода книги доступно) OpenGL Programming Guide, Version 4.3, 8th Edition - OpenGL
Продолжая тему с переводом книги https://www.cyberforum.ru/opengl/thread1551398.html Выкладываю для скачивания вторую переведенную главу...

76
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
15.03.2016, 09:14  [ТС]
Студворк — интернет-сервис помощи студентам
Вот именно зеркальное отражение - это же очевидно!
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
15.03.2016, 09:43
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
..и его реалтайм упрощений типа фотонных карт..
А что еще знаете про фотонные карты? Напр как бороться с их дефектами (light(shadow) leaks)? Интерес чисто практический
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
15.03.2016, 19:23
Цитата Сообщение от Igor3D Посмотреть сообщение
Интерес чисто практический
Чисто практически ими еще не занимался, да и врядли с 730-ой видихой в ближайшее время буду заниматься. Но суть их такая - вместо построения системы уравнений взаимного освещения как в Radiosity лучи трассируются от источника и таким образом высчитывается освещенность тайлов. Естественно чем меньше глубина рекурсии просчета отражений, тем больше будет неточность по сравнению с Radiosity. Лекарство от этих неточностей одно - увеличение глубины рекурсии, что очень быстро приведет к росту вычислительной мощности выше потребной для Radiosity.
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
15.03.2016, 19:31  [ТС]
Да что тут думать. На кол посадить!

т.е. отрассировать массив точек, при помощи compute shader примерить возможные воксели, и через растеризацию (Maxwell) в воксели загрузить! Правда будет проблематично рисовать заполенные сферы через Nvidia чтобы затолкать в воксели. Но с полигонами такое прокатывает еще как.

т.е. через compute shader проверил первое возможное пересечение с вокселем, и если да то открыть воксель. затем пихать полигоны именно в эти воксели через растеризатор. не забываем включить консервативную растеризацию. так за 200мс можно построить 8-ую глубина при 200 000 полигонах. и прикол в том, что в compute shader не нужно искать все полигоны, а только вокселя-родителя.
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
16.03.2016, 11:11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Но суть их такая - вместо построения системы уравнений взаимного освещения как в Radiosity лучи трассируются от источника и таким образом высчитывается освещенность тайлов.
А кто такие "тайлы"?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
16.03.2016, 11:20
Цитата Сообщение от Igor3D Посмотреть сообщение
А кто такие "тайлы"?
лоскуты на которые поверхности делятся.
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
16.03.2016, 14:04
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
лоскуты на которые поверхности делятся.
Насколько мне известно, освещенность считается как "сколько фотонов попало в заданный радиус". Фотоны обычно хранятся в кd-tree. Ни о каких тайлах-лоскутах и делениях поверхности не слыхал, просветите
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
16.03.2016, 14:29  [ТС]
Обычно в kd-tree, но я пробовал положить в воксель этот фотон. Вообщем не советую (сами фотонные карты не советую вообще). Ибо это требует полного вокселя, без пробелов. А все почему? Да потому НЕВОЗМОЖНО ПРЕДСКАЗАТЬ! Предсказать куда этот фотон влетит!

Потому что чтобы построить воксельное октри, причем разряженное, нужно предсказание.
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
16.03.2016, 14:31
Цитата Сообщение от acterhd Посмотреть сообщение
Вообщем не советую (сами фотонные карты не советую вообще).
А на чем основан такой (авторитетный) совет?
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
16.03.2016, 14:32  [ТС]
Тем, что фотонные карты не предсказуемы. Воксельное древо построить можно но только либо пост процессом (медленно) либо во время (требует полного пространства).
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
16.03.2016, 14:45
Цитата Сообщение от acterhd Посмотреть сообщение
Тем, что фотонные карты не предсказуемы. Воксельное древо построить можно но только либо пост процессом (медленно) либо во время (требует полного пространства).
А что за "воксельное древо"? Вот у меня требований real-time нет (что впрочем не делает жизнь легче), обычное kd-tree вполне устраивает. А если хочется "динамики" (быстро перестраивать данные от кадра к кадру), то хотя бы ocTree, c bounding box сцены в роли "полного пр-ва".

Ну это все технические детали, а что Вы скажете о качестве фотонных карт?
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
16.03.2016, 14:49  [ТС]
А вас разве устроит затемнение в углах?
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
16.03.2016, 15:40
Цитата Сообщение от acterhd Посмотреть сообщение
А вас разве устроит затемнение в углах?
Так вот именно что не устраивает Какие решения Вы можете предложить для решения этой проблемы?
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
17.03.2016, 00:24  [ТС]
Во первых здесь обсуждение отражений в 3D графике.
Во вторых, я пофиксил баги. И ввел счетчик пределов примитива.
FPS должно стать больше на 20%.

Добавлено через 1 час 27 минут
Финальные титры. Sparse Voxel выйграли 50FPS в статичном виде, даже когда полигонов 200 000.

Добавлено через 52 минуты
Финальное видео.
https://www.youtube.com/watch?v=7IL-CUXn7us

Добавлено через 43 минуты
Вот еще видео:
https://www.youtube.com/watch?v=6HgTjYZg79s

Добавлено через 4 часа 14 минут
Достучасться бы до него.
http://www.vsu.ru/news/feed/2016/03/6728
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
18.03.2016, 23:27  [ТС]
Новое видео: https://www.youtube.com/watch?v=O0N7j9iVSvQ
0
1 / 1 / 0
Регистрация: 15.07.2015
Сообщений: 183
23.03.2016, 17:44  [ТС]
Прошу удалить тему. И от меня избавиться.
0
1958 / 814 / 114
Регистрация: 01.10.2012
Сообщений: 4,742
Записей в блоге: 2
27.03.2016, 11:39
Цитата Сообщение от acterhd Посмотреть сообщение
Прошу удалить тему. И от меня избавиться.
Перегорел паренек. Ну так тоже бывает, ничего, перемелется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.03.2016, 11:39
Помогаю со студенческими работами здесь

Ошибки при подключение opengl, немного не связанные с opengl
#include <windows.h> #include "stdafx.h" #include <gl/gl.h> #include <gl/glu.h> #include <stdio.h> //#include "TXLib.h" ...

OpenGL + GlTools по книге OpenGL Суперкнига
В главе 4 есть пример с отрисовкой 3хмерного вращающегося тора. Вот код: void RenderScene(void) { GLTMatrix transformationMatrix; ...

OpenGL.Урок 1. простой OpenGL-проект
Не компилируется кодю #include <GL\glut.h> void DrawLine() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); ...

Сильно отличаются OpenGL ES и OpenGL и как?
Сильно отличаются OpenGL ES и OpenGL и как?

OpenGL - VS2008 Инициализация OpenGL (Glut)
Правильно ли я написал код для выведения 3d изображения на экран? Вот пару недель наверно искал метод - можно ли окно как то создать без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
77
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru