ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
SpaceEngine TODO - обновлено 11 июля 2016
SpaceEngineerДата: Вторник, 13.09.2011, 21:00 | Сообщение # 136
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Описание такого трюка с исходниками на GLSL видел здесь http://www.thasler.org/blog/?p=93

Там только сложение и умножение, я же в генераторе использую все функции - корень, степнь, логарифм, тригонометрию, и деление конечно. Слишком сложно уж будет эмулировать всю математику... Нет, надо искать другое решение.


DukeДата: Вторник, 13.09.2011, 21:22 | Сообщение # 137
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Там только сложение и умножение, я же в генераторе использую все функции - корень, степнь, логарифм, тригонометрию, и деление конечно. Слишком сложно уж будет эмулировать всю математику...

В заголовочном файле, что на форуме nvidia есть деление, а в постах на том же форуме есть алгоритм для корня. Однако я согласен что реализовать всю математику будет довольно затратно.
SpaceEngineerДата: Среда, 14.09.2011, 18:47 | Сообщение # 138
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
К тому же длина кода шейдера имеет предел, особенно на ATI (старая проблема с кратерами). А шейдер и так очень длинный, десятки функций с циклами и т.д. Я вообще удивляюсь, как он так быстро работает:) Если добавить в него ещё 200 строк с математическими функциями, да ещё и медленными...

DukeДата: Среда, 14.09.2011, 21:06 | Сообщение # 139
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
К тому же длина кода шейдера имеет предел, особенно на ATI (старая проблема с кратерами). А шейдер и так очень длинный, десятки функций с циклами и т.д. Я вообще удивляюсь, как он так быстро работает:) Если добавить в него ещё 200 строк с математическими функциями, да ещё и медленными...

А разбить его на части нельзя? По некоторым источникам несколько маленьких шейдеров работают быстрее чем один большой.
Наткнулся на публикацию по добавлению объемных теней для систем частиц http://www.naic.edu/~phil....les.pdf . По описанию эффект быстрый и простой. Возможно эту идею можно будет использовать и для некоторых других случаев. Исходники реализации на OpenGL здесь http://www.naic.edu/~phil/hardware/nvidia/doc/src/smokeParticles/
Еще похожий эффект видел в демке ATI Ruby Whiteout http://levelofdetail.wordpress.com/2007....ighting Шейдер во вложении.
Прикрепления: iParticleShadow.shl (3.3 Kb)


Сообщение отредактировал Duke - Среда, 14.09.2011, 22:25
SpaceEngineerДата: Среда, 14.09.2011, 22:57 | Сообщение # 140
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
А разбить его на части нельзя? По некоторым источникам несколько маленьких шейдеров работают быстрее чем один большой.

Я уже это сделал - разбил на отдельные шейдеры для терры, селены, газового гиганта и т.д. Но всё равно они используют общие функции - Noise, Noise3D, fBm, Multifractal, Cell, Crater и т.д., которые занимают 80% шейдера.


DukeДата: Четверг, 15.09.2011, 19:35 | Сообщение # 141
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Возможно знакома эта http://cobweb.ecn.purdue.edu/purpl/level2/papers/scaclouds.pdf довольно таки старая (2003 год) публикация про облака. Посмотреть на небольшие ролики с интересными демонстрациями можно здесь http://cobweb.ecn.purdue.edu/purpl/projects/fastclouds/frames.html . Скачать демку можно здесь http://cobweb.ecn.purdue.edu/purpl....xec.zip . На мой взгляд довольно неплохо выглядящие облака, притом очень быстрые и запустились на встроенном видео от интела. Исходников к сожелению пока не нашел.
P.S.: На этом сайте много интересных публикаций, в частности про облака, например http://cobweb.ecn.purdue.edu/purpl/level2/papers/thesis_kirk_riley.pdf (там в конце приводится код шейдера для одного из рассматриваемых случаев).



Добавлено (15.09.2011, 19:35)
---------------------------------------------
Почитал еще про реализацию облаков в http://cobweb.ecn.purdue.edu/purpl....xec.zip . Похоже что это продвинутая реализация алгоритмов описанных в той же Texturing and Modeling A Procedural Approach в 9 главе Девидом Эбертом. Соответствующие исходники для данной главы, как я понимаю, здесь http://www.elsevierdirect.com/compani....EBERT.C


Сообщение отредактировал Duke - Четверг, 15.09.2011, 19:35
SpaceEngineerДата: Пятница, 16.09.2011, 03:37 | Сообщение # 142
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Блин, у меня уже столько статей скопилось, мне на одно их чтение потребуется неделя:) Потом надо выбрать самый подходящий метод для облаков, или собрать по чуть-чуть отовсюду.

DukeДата: Пятница, 16.09.2011, 19:33 | Сообщение # 143
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Блин, у меня уже столько статей скопилось, мне на одно их чтение потребуется неделя:)

Я тогда, наверно, до выхода новой версии пока не буду ничего нового постить :-)

Но напоследок, не пробывал ли ты использовать вместо Perlin Noise Simplex Noise
http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
По описанию он требует меньше ресурсов и дает меньше артефактов. Правда существуют некоторые проблемы с реализацией его на GPU и поэтому он пока не дает такого существенного превосходства в скорости над Perlin Noise как на CPU. Однако возможно стоит поэксперементировать с ним, он все же быстрее. Реализации на GLSL видел здесь :
http://www.davidcornette.com/glsl/GLSL-noise.zip
http://www.geeks3d.com/2011031....-opengl
http://staffwww.itn.liu.se/~stegu/simplexnoise/
https://github.com/ashima....src
http://ahmedsharif.wordpress.com/2011....nd-glsl


Сообщение отредактировал Duke - Пятница, 16.09.2011, 22:00
SpaceEngineerДата: Пятница, 16.09.2011, 22:40 | Сообщение # 144
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Но напоследок, не пробывал ли ты использовать вместо Perlin Noise Simplex Noise

Пока не пробовал, не до него. Когда займусь анимацией текстур, он может пригодиться: там нужен будет 4D шум, а Перлин емеет сложность O(2^N), тогда как симплекс всего лишь O(N) - выгода очевидна.


DukeДата: Воскресенье, 18.09.2011, 14:36 | Сообщение # 145
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Я уже это сделал - разбил на отдельные шейдеры для терры, селены, газового гиганта и т.д. Но всё равно они используют общие функции - Noise, Noise3D, fBm, Multifractal, Cell, Crater и т.д., которые занимают 80% шейдера.

А эти общие функции находятся в отдельных файлах и вызываются из шейдеров терры, селены и т.д. или дублируются в каждом из них?
SpaceEngineerДата: Воскресенье, 18.09.2011, 17:51 | Сообщение # 146
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Конечно дублируются. На CPU есть такая фича - динамически подключаемые библиотеки (dll), которые один раз грузятся в память, и могуь быть использованы разными программами. На GPU такого нет.

DukeДата: Понедельник, 19.09.2011, 20:11 | Сообщение # 147
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Видел тему о проблеме коррекции цветов текстур. Взможно что нибудь такое http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html подойдет?
SpaceEngineerДата: Вторник, 20.09.2011, 03:38 | Сообщение # 148
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
О, спасибо, может пригодится.

DukeДата: Понедельник, 26.09.2011, 22:21 | Сообщение # 149
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Видел пост на gamedev насчет воды. Камени здесь http://www.outerra.com/forum/index.php?topic=274.0 и здесь в коментариях http://outerra.blogspot.com/2011/02/ocean-rendering.html писал что в outerra для воды использовал quad-tree. Возможно для нее не потребуется особо детальных уровней меша.
Насчет самой воды, попался такой код шейдера http://code.google.com/p....?r=6373 для OpenGL. Насколько я понимаю это перевод на GLSL кода шейдера из этой http://www.gamedev.net/page....t-r2642 статьи, где вода делается как раз как Post-process Effect. Видео OpenGL реализации данного шейдера можно оценить здесь http://jmonkeyengine.org/2011....ngine-3
P.S.: Если захочешь реализовать напрвление волн на берег, возможно пригодится реализаци Sobel filter на glsl отсюда http://www.geeks3d.com/2011020....mo-glsl



Добавлено (22.09.2011, 19:01)
---------------------------------------------
Цитата SpaceEngineer
О, спасибо, может пригодится.

Если не ошибаюсь реализацию этого шейдера можно найти на этой http://developer.download.nvidia.com/shaderl....ry.html странице если дать поиск по "post color curve". Если же поискать по "color conversion" на той же странице можно найти реализации шейдеров "post RGB to HSV" и "post RGB from HSV", возможно пригодится.



Добавлено (24.09.2011, 19:29)
---------------------------------------------
Поискал немного информацию насчет проблемы z-fighting. Часто эту проблему поднимали при рендеринге прозрачных и вложенных объектов и рассматривали варианты рендеринга без сортировки треугольников. В этой ветке http://www.opengl.org/discuss....=289998 упоминали несколько алгоритмов с их достоинствами и недостатками. Несколько методов для рендеринга прозрачных объектов от NVIDIA видел в этом документе http://developer.download.nvidia.com/SDK....ing.pdf (исходники и реализация здесь http://developer.download.nvidia.com/SDK....ing.zip ). Так же видел несколько упоминаний этого http://research.microsoft.com/apps/pubs/default.aspx?id=70307 метода.



Добавлено (26.09.2011, 22:21)
---------------------------------------------
Наткнулся в интернете на этот ролик http://www.youtube.com/watch?v=asxs8VnhfK8 . Там в комментариях есть описание алгоритма отслеживани столкновения с поверхностью в пиксельном шейдере и дается ссылка на этот сайт http://www.greenleaf.dk/projects/proceduralplanet . На сайте кроме описания реализации детектора столкновения с поверхностью есть еще описание их алгоритма для генерации рек на процедурных планетах. Как я когда-то предлагал, они используют несколько заранее просчитанных вариантов рек и накладывают их на рельеф. Возможно что-то из их идей окажется полезным.


Сообщение отредактировал Duke - Понедельник, 26.09.2011, 22:21
SpaceEngineerДата: Понедельник, 03.10.2011, 15:54 | Сообщение # 150
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
У меня была идея использовать рендер в небольшую текстурку для получения высоты рельефа под кораблём. Но это не решит проблемы проверки столкновения с почти отвесной стеной. В общем, поковыряю их пример. Проблема сразу видна - на большой скорости можно проскочить сквозь поверхность.

Поиск:

>