ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
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
Quote (Duke)
P.S.: По облакам возник один вопрос. В данный момент текстура облаков создается по алгоритму подобного описанному здесь http://evasion.imag.fr/Publications/2006/AN06/ (там есть код шейдера)?

Нет, я сам придумывал функцию. Интересно было бы почитать про этот 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
Quote (Duke)
Описание такого трюка с исходниками на GLSL видел здесь http://www.thasler.org/blog/?p=93

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


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 Шейдер во вложении.
Прикрепления: iParticleShadow.shl (3.3 Kb)


Сообщение отредактировал 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
Поиск:

>