SpaceEngine TODO - обновлено 11 июля 2016
|
|
SpaceEngineer | Дата: Вторник, 13.09.2011, 21:00 | Сообщение # 136 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Там только сложение и умножение, я же в генераторе использую все функции - корень, степнь, логарифм, тригонометрию, и деление конечно. Слишком сложно уж будет эмулировать всю математику... Нет, надо искать другое решение.
|
|
| |
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 Шейдер во вложении.
Сообщение отредактировал 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
| У меня была идея использовать рендер в небольшую текстурку для получения высоты рельефа под кораблём. Но это не решит проблемы проверки столкновения с почти отвесной стеной. В общем, поковыряю их пример. Проблема сразу видна - на большой скорости можно проскочить сквозь поверхность.
|
|
| |