|
SpaceEngine TODO - обновлено 11 июля 2016
|
|
| Duke | Дата: Суббота, 10.09.2011, 22:17 | Сообщение # 121 |
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
| Попалась еще одна публикация по облакам, хотя она возможно уже знакома. Насколько я понимаю это диссертация Antoine Bouthors http://evasion.imag.fr/~Antoine.Bouthors/research/phd/ К сожелению она без исходных кодов. Есть так же старая работа этого же автора с исходниками здесь http://www-evasion.imag.fr/Membres....ry.html
P.S.: По облакам возник один вопрос. В данный момент текстура облаков создается по алгоритму подобного описанному здесь http://evasion.imag.fr/Publications/2006/AN06/ (там есть код шейдера)?
Сообщение отредактировал Duke - Суббота, 10.09.2011, 22:55 |
|
|
| |
| SpaceEngineer | Дата: Воскресенье, 11.09.2011, 00:33 | Сообщение # 122 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Нет, я сам придумывал функцию. Интересно было бы почитать про этот flow noise, но там на французском...
|
|
|
| |
| Duke | Дата: Воскресенье, 11.09.2011, 21:38 | Сообщение # 123 |
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
| Наткнулся на несколько публикаций по еще одному типу шума Anisotropic Noise с некоторыми интересными свойствами http://graphics.ucsd.edu/~matthias/Papers/AnisotropicNoise.pdf http://citeseerx.ist.psu.edu/viewdoc....ype=pdf к сожелению без исходников.
|
|
|
| |
| SpaceEngineer | Дата: Понедельник, 12.09.2011, 01:02 | Сообщение # 124 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Duke, это больше похоже на антиалиасинг шума при рендере прямо на экран. Тоже полезная вещь, но не для моей нынешней реализации.
|
|
|
| |
| Duke | Дата: Понедельник, 12.09.2011, 19:40 | Сообщение # 125 |
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
| Решена ли проблема с разрешениями меньше 10 метров на вертекс? Насколько я понимаю по постам с gamedev.ru были проблемы с достижением предела точности float. Если я правильно понимаю одно из решений данной проблемы здесь http://www.gamedev.net/topic....ecision Там в 11 посте marius4143 описывал свою реализацию алгоритма для расчета координат для точек поверхности. Насколько я понимаю у него для каждого патча была реализованна своя система координат которую при рендере он приводил к необходимому ему виду. Согласно 9 посту идею для этой реализации он почерпнул из этого http://citeseerx.ist.psu.edu/viewdoc....ype=pdf документа. Правда его реализация использует и CPU и поэтому ему доступен double, но возможно удастся использовать идею с отдельной системой координат для патчей.
P.S.: Кстати здесь http://www.gamedev.net/topic....ecision Флавьен описывал своим проблемы и насколько я понял из его постов он планировал перевести генерация шумов назад на CPU чтобы использовать double.
Сообщение отредактировал Duke - Понедельник, 12.09.2011, 20:51 |
|
|
| |
| SpaceEngineer | Дата: Понедельник, 12.09.2011, 22:08 | Сообщение # 126 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Duke, проблема дрожания вершин решена переходом в локальную С.К. для каждого патча. Но остаётся проблема генерации шума - именно его точность не позволяет увеличить детализацию планет. Т.к. шум должен быть непрерывным по всей поверхности планеты, перейти в локальные координаты невозможно. Для самых мелких деталей рельефа можно использовать алгоритм типа diamond-square - разбиение самой сетки, т.е. он будет как бы локальным. Но тогда не получится сгенерировать нормали, и такие детали будут с "плоским" освещением. Пока я выжу только один выход - для hi-end железа использовать double в шейдерах (это возможно уже начиная с GeForce 7800 кажется, но более-менее быстро работает на более современном железе). А для более старого обходиться текстурными деталями, оставив сетку с детализацией в 10 метров. Перейти назад на CPU я не могу, т.к. я изначально всё делал на GPU.
|
|
|
| |
| GV_FiQst | Дата: Вторник, 13.09.2011, 01:59 | Сообщение # 127 |
Строитель Миров
Группа: Команда SE
Украина
Сообщений: 1062
Награды: 3
Статус: Offline
| А можна поинтересоватся зачем нужен шум?
AMD Phenom II X2 555 3200 MHz; RAM 4GB 1333 Hz; ATI Radeon HD 5670 1024 Mb; ОС Win 7 tabulorasa edition 32 bit
|
|
|
| |
| SpaceEngineer | Дата: Вторник, 13.09.2011, 12:50 | Сообщение # 128 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Quote (GV_FiQst) А можна поинтересоватся зачем нужен шум? С его помощью и генерируется рельеф.
|
|
|
| |
| Duke | Дата: Вторник, 13.09.2011, 19:42 | Сообщение # 129 |
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
| Quote (SpaceEngineer) Пока я выжу только один выход - для hi-end железа использовать double в шейдерах (это возможно уже начиная с GeForce 7800 кажется, но более-менее быстро работает на более современном железе). А для более старого обходиться текстурными деталями, оставив сетку с детализацией в 10 метров. Насколько я понимаю из этой http://www.ixbt.com/video2/spravka-gt2xx.shtml таблицы поддержка fp64 появилась только начиная с GT200 и согласно некоторым другим документам fp64 в 8 раз медленнее fp32. Если уж совсем без fp64 не обойтись можно попробывать его эмулировать с помощью 2xfp32. Описание такого трюка с исходниками на GLSL видел здесь http://www.thasler.org/blog/?p=93 (там кстати из-за оптимизации на NVIDIA код работал неправильно и автор его подправил здесь http://www.thasler.org/blog/?p=133 ). Так же ветку по этому вопросу, с добавлением других математических операций, видел на форуме nvidia здесь http://forums.nvidia.com/index.php?showtopic=73067 (там кажется последняя версия dsmath.h внизу и если не ошибаюсь ее без регистрации можно посмотреть здесь http://www.klayge.org/wp/wp-content/uploads/2011/01/dsmath.h ). Насколько я понял из описания реализации мандельброта эмулированный fp64 работает в 4 раза медленнее fp32. Сответственно его придется использовать как можно реже и переходить на него только на нижних уровнях лода. По некоторым источникам вычисления с fp16 работают более чем в 2 раза быстрее fp32. Возможно если бы удалось создать свой тип из 3xfp16 его скорость была бы не такой плохой и точности хватало бы для рассчетов.
Сообщение отредактировал Duke - Вторник, 13.09.2011, 20:00 |
|
|
| |
| SpaceEngineer | Дата: Вторник, 13.09.2011, 21:00 | Сообщение # 130 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Там только сложение и умножение, я же в генераторе использую все функции - корень, степнь, логарифм, тригонометрию, и деление конечно. Слишком сложно уж будет эмулировать всю математику... Нет, надо искать другое решение.
|
|
|
| |
| Duke | Дата: Вторник, 13.09.2011, 21:22 | Сообщение # 131 |
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
| Quote (SpaceEngineer) Там только сложение и умножение, я же в генераторе использую все функции - корень, степнь, логарифм, тригонометрию, и деление конечно. Слишком сложно уж будет эмулировать всю математику... В заголовочном файле, что на форуме nvidia есть деление, а в постах на том же форуме есть алгоритм для корня. Однако я согласен что реализовать всю математику будет довольно затратно.
|
|
|
| |
| SpaceEngineer | Дата: Среда, 14.09.2011, 18:47 | Сообщение # 132 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| К тому же длина кода шейдера имеет предел, особенно на ATI (старая проблема с кратерами). А шейдер и так очень длинный, десятки функций с циклами и т.д. Я вообще удивляюсь, как он так быстро работает:) Если добавить в него ещё 200 строк с математическими функциями, да ещё и медленными...
|
|
|
| |
| Duke | Дата: Среда, 14.09.2011, 21:06 | Сообщение # 133 |
Первооткрыватель
Группа: Команда 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 | Сообщение # 134 |
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
| Quote (Duke) А разбить его на части нельзя? По некоторым источникам несколько маленьких шейдеров работают быстрее чем один большой. Я уже это сделал - разбил на отдельные шейдеры для терры, селены, газового гиганта и т.д. Но всё равно они используют общие функции - Noise, Noise3D, fBm, Multifractal, Cell, Crater и т.д., которые занимают 80% шейдера.
|
|
|
| |
| Duke | Дата: Четверг, 15.09.2011, 19:35 | Сообщение # 135 |
Первооткрыватель
Группа: Команда 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 |
|
|
| |