ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
SpaceEngine TODO - обновлено 11 июля 2016
SpaceEngineerДата: Четверг, 11.08.2011, 09:03 | Сообщение # 61
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Для ATI видел функцию автоматической генерациии мипмапов с примером здесь

Спасибо, посмотрю

Quote (Duke)
Кстати заметка отсюда тоже не помогает?

Там так и сказано - в дровах ATI баг, glGenerateMipmap не всегда работает. К тому же в примере показан код с загрузкой текстуры из оперативы (например после распаковывания из файла), у меня же генерируемые текстуры никогда не попадают в оперативу, всегда остаются в памяти GPU.

Quote (Duke)
Просмотрел блог Флавьена. Возможно еще эти ссылки будут полезны

Нету. Про генерацию мипов он ничего не писал (я бы запомнил это, я читал весь его блог).


DukeДата: Четверг, 11.08.2011, 13:30 | Сообщение # 62
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Там так и сказано - в дровах ATI баг, glGenerateMipmap не всегда работает. К тому же в примере показан код с загрузкой текстуры из оперативы (например после распаковывания из файла), у меня же генерируемые текстуры никогда не попадают в оперативу, всегда остаются в памяти GPU.

Там в Warning явно указан порядок операций для того чтобы на ATI работало:
bind the texture, glEnable(GL_TEXTURE_2D), glGenerateMipmap(GL_TEXTURE_2D)
Тоже самое для glGenerateMipmapEXT.

Quote (SpaceEngineer)
Нету. Про генерацию мипов он ничего не писал (я бы запомнил это, я читал весь его блог).

Я говорил про этот отрывок

This doesn't work with mipmapping, because the hardware uses the 2x2 neighbooring pixels to determine the mipmap level. The fract() instructions kill the coherency between the tiles, and 1-pixel-width seams appear (which are viewer dependent, so extremely visible and annoying).
The solution is to calculate the mipmap level manually. Here is the function I'm using to do that:

/// This function evaluates the mipmap LOD level for a 2D texture using the given texture coordinates
/// and texture size (in pixels)
float mipmapLevel(vec2 uv, vec2 textureSize)
{
vec2 dx = dFdx(uv * textureSize.x);
vec2 dy = dFdy(uv * textureSize.y);
float d = max(dot(dx, dx), dot(dy, dy));
return 0.5 * log2(d);
}

Note that it makes use of the dFdx/dFdy instructions ( also called ddx/ddy ), the derivative of the input function. This pretty much ups the system requirements to a shader model 3.0+ video card.
This function must be called with a texture size that matches the size of the tile. So if the pack is 2048x2048 and each tile is 512x512, you must use a textureSize of 512.

Ну и далее он еще пару вещей объяснял. У него как я понимаю wrapping вместе с mipmaping не работал, он даже ветку на форуме opengl.org создавал здесь http://www.opengl.org/discuss....&page=1
По последней ссылке в предыдущем посте кто-то другой пытался реализовать то что он описывал.


Сообщение отредактировал Duke - Четверг, 11.08.2011, 13:31
SpaceEngineerДата: Четверг, 11.08.2011, 21:06 | Сообщение # 63
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Там в Warning явно указан порядок операций для того чтобы на ATI работало: bind the texture, glEnable(GL_TEXTURE_2D), glGenerateMipmap(GL_TEXTURE_2D) Тоже самое для glGenerateMipmapEXT.

Я так пробовал делать. Дело в том, что на моём ноутбуке (где ATI карточка) баг с падением при вызове glGenerateMipmap то есть, то нету. От положения Луны наверное зависит. Я непомню, добавлял ли я glEnable в предыдущий релиз, скорее всего нет (оно закомментировано в коде). В следующей версии включу, посмотрим как оно будет работать у других.

Quote (Duke)
Я говорил про этот отрывок

Здесь он говорит о том, как правильно сэмплить пиксель из текстурного атласа, чтобы не взять нечайно соседние тайлы в атласе. Это про генерацию текстур для планет в шейдере. Примера того, как генерировать мипы тут нет. Про то что надо генерировать мипы самостоятельно он странную вещь говорит - стандартный фильтр 2*2, применяемый при генерации мипов, никогда не пересечёт границу тайлов, если их разрешение - степень двойки. Только на самых высоких мип-уровнях, котороые и не используются в этом коде. По крайней мере на моих двух видеокартах никаких каёмок не наблюдается.

А, так я использовал его финальный код, поэтому и всё работает без багов:)


SpaceEngineerДата: Воскресенье, 14.08.2011, 04:02 | Сообщение # 64
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Есть еще генерация ландшафтов по специфическим фракталам например как здесь http://dmytry.com/mojoworld/erosion_fractal/home.html но Дмитрий, за эти годы, так нигде описание своего алгоритма не привел.

Интересно, когда же он напишет статью. Выглядит очень реалистично.

Quote (Duke)
А какой тип noise-а используется в SpaceEngine?

У меня куча всяких нойсов. Для гор - тоже ridged.

Quote (Duke)
P.S. В добавление к предыдущему посту о объемных облаках видел еще пару интересных статей в интересных блогах здесь

Интересный подход в первой ссылке - нарисовать облако обычными непрозрачными шариками, Потом размыть и исказить картинку. Но при полёте мимо облака и внутри него будет видно, что это фейк.


DukeДата: Воскресенье, 14.08.2011, 17:54 | Сообщение # 65
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Интересно, когда же он напишет статью. Выглядит очень реалистично.

Я поговорил с Дмитрием (к сожелению до конца договорить не смог так как скайп слетел и теперь не хочет ни в какую запускаться), он пока думает будет ли публиковать алгоритм или возможно сделает на его основе какую нибудь программу. Судя по поверхностному описанию алгоритма он требует множество выборок соседних регионов и генерируется поверх существующего ландшафта. Похоже на текущем оборудовании с приемлемой скоростью его использовать к сожелению не удастся.
Digit1990Дата: Воскресенье, 14.08.2011, 21:32 | Сообщение # 66
Исследователь
Группа: Администраторы
Российская Федерация
Сообщений: 260
Награды: 0
Статус: Offline
SpaceEngineer
...похоже он делает это так, как мы обсуждали...


Per aspera ad Astra
SpaceEngineerДата: Воскресенье, 14.08.2011, 23:20 | Сообщение # 67
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Duke, так может это вовсе и не фрактал, а просто симуляция эрозии?

DukeДата: Четверг, 18.08.2011, 03:14 | Сообщение # 68
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Судя по его описанию, это похоже на симуляцию процесса образования эрозии.

*******************************************************************************************************
Добавлено (15.08.2011, 21:33)
---------------------------------------------
Попалось еще одно описание реализации некоторых типов эрозии (Erosion by rain (rivers and pools), by sea (cliffs and beaches) and by "biology" (smoothing angles)) вместе с исходниками (правда на Delphi+OpenGL) здесь:
http://www2.unil.ch/biomapper/opengl/Landscapes.html
http://www2.unil.ch/biomapper/opengl/FractalLandscape_exe.zip
http://www2.unil.ch/biomapper/opengl/FractalLandscape_source.zip
ну и там же есть ссылка на исходники всех проектов из той статьи
http://www2.unil.ch/biomapper/opengl/LandscapePackage.zip

P.S.: Там в демке FractalLandscape был баг, при переходе с закладки на закладку они не прорисовываются, надо подвигать окно за заголовок после выбора закладки.

*******************************************************************************************************
Добавлено (16.08.2011, 13:34)
---------------------------------------------
Насчет астероидного кольца родилась одна мысль. В последнее время много разговоров идет о воксельных движках. А ведь они представляют собой большой масив точек которые часто хранятся в специфических деревьях. Возможно стоит изучить опыт анимации и движения объектов созданных на их основе. С ходу нашлась эта статья http://bautembach.de/wordpress/wp-content/uploads/asvo.pdf в которой описываются проблемы анимации.

*******************************************************************************************************
Добавлено (18.08.2011, 03:14)
---------------------------------------------
Планируется ли в проекте использовать продвинутые симуляции эффектов дыма и огня?
Пример реализации эффекта дыма видел здесь http://www.cs.unm.edu/~mskarim/fluid_smoke_gpu.htm
Исходники и скомпилированный проект здесь
http://www.cs.unm.edu/~mskarim/fluid/mskarim_smokesim_project.zip
http://www.cs.unm.edu/~mskarim/code/mskarim_src_cg_smokesim.zip
(здесь http://www.cs.unm.edu/~mskarim/fluid/ у него более новая версия есть, но ссылку он на нее в статье почему-то не дал)


Сообщение отредактировал Duke - Четверг, 18.08.2011, 03:23
SpaceEngineerДата: Четверг, 18.08.2011, 08:41 | Сообщение # 69
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Дым и огонь? Для вулканов, падений астероидов и т.д. Думаю, это весьма отдалённая перспектива.

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

Да это очередное статическое скопление астероидов. Похоже придётся мне придумать собственный алгоритм.

Quote (Duke)
P.S.: Симуляцией столкновения астероида с планетой в реальном времени почти никто не занимался (единственное видео которое мне попалось http://www.youtube.com/watch?v=b6riDFOobEw датируется 2000 годом).

Да это какая-то примитивная анимация, а не симуляция. Под симуляцией я понимаю численный рассчёт. Уже естьдовольно много статей на эту тему, а в фильме "Чужие миры" качественно показана визуализация рассчётов по столкновению планет.

Quote (Duke)
Так же симуляцию поверхности звезд в реальном времени тоже почти никто не делал. По этим темам врядли что то в ближайшее время появится.

http://spaceengine.org/forum/21-44-1


CrabДата: Понедельник, 22.08.2011, 13:00 | Сообщение # 71
Первооткрыватель
Группа: Модераторы
Российская Федерация
Сообщений: 444
Награды: 1
Статус: Offline
Кстати видел в фильме от Discovery, показывали женщину-учёного у которой на компе была симуляция столкновения Земли с Тейей. Выглядело красиво если найду скину видео.

Windows 8 x64
Intel Core2 Duo CPU E7500 2.93GHz.
4 GB RAM.
Nvidia GeForce 550Ti 1024mb.
DukeДата: Понедельник, 22.08.2011, 14:23 | Сообщение # 72
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Да это очередное статическое скопление астероидов. Похоже придётся мне придумать собственный алгоритм.

Насколько я понял положение астероидов на орбите зависит от точек на текстуре. Тут нет привязки к статичному октодереву, можно вращать текстуру и перерасчитывать положение астероидов.

Quote (SpaceEngineer)
Да это какая-то примитивная анимация, а не симуляция. Под симуляцией я понимаю численный рассчёт. Уже естьдовольно много статей на эту тему, а в фильме "Чужие миры" качественно показана визуализация рассчётов по столкновению планет.

Рендеров много, но реалтайм реализации к сожелению нет.

Quote (SpaceEngineer)
http://spaceengine.org/forum/21-44-1

Дело в том что поверхность статична. Даже если крупные детали будут меняться медленно, поверхность вблизи должна буквально бурлеть. Добавление анимации, на мой взгляд, должно существенно повысить правдоподобность этого типа небесных тел.


Сообщение отредактировал Duke - Понедельник, 22.08.2011, 14:24
SpaceEngineerДата: Понедельник, 22.08.2011, 18:53 | Сообщение # 73
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
Насколько я понял положение астероидов на орбите зависит от точек на текстуре. Тут нет привязки к статичному октодереву, можно вращать текстуру и перерасчитывать положение астероидов.

Кольцо астероидов вращается не как целое, и в этом проблема. Единственный выход, который я пока вижу - разбить его на тысячу колечек со статичным положением астероидов в каждом, и вращать колечки со своей скоростью. Но тогда гуд бай эллиптические орбиты (как в поясе астероидов).

Quote (Duke)
Рендеров много, но реалтайм реализации к сожелению нет.

Есть куча игр-песочниц, где в 2D проводятся рассчёты с частицами на видеокарте (типа клеточных автоматов). В некоторых можно симулировать вязкость, давление и гравитацию. Я даже пытался смоделировать столкновение планет - вышло не убедительно, но идея работоспособна. Добавить 3D и более подходящую физику - авось что-то получится. 1000 частиц вполне хватит для начала.

Quote (Duke)
Дело в том что поверхность статична. Даже если крупные детали будут меняться медленно, поверхность вблизи должна буквально бурлеть. Добавление анимации, на мой взгляд, должно существенно повысить правдоподобность этого типа небесных тел.

Я не про свою реализацию говорю, а про ссылку с видео. Там видно "кипение" красного гиганта. Вот только временной масштаб (время жизни пузырей) - годы. На Солнце время жизни гранул - 5-20 минут. Так что такого бурления, как показывают в некоторых играх или клипах, не будет.
Анимация поверхности в моём движке возможна только периодической перегенерацией текстур (используя 4D шум вместо 3D, где по 4 координате - время). При оптимизации ландшафтного движка это в принципе возможно. Другой вариант - не генерировать текстуры вообще, а сразу рендерить на экран фрактальной функцией, но для этого не хватит производительности.


DukeДата: Понедельник, 22.08.2011, 21:56 | Сообщение # 74
Нет аватара
Первооткрыватель
Группа: Команда SE
Антарктика
Сообщений: 419
Награды: 2
Статус: Offline
Quote (SpaceEngineer)
Есть куча игр-песочниц, где в 2D проводятся рассчёты с частицами на видеокарте (типа клеточных автоматов). В некоторых можно симулировать вязкость, давление и гравитацию. Я даже пытался смоделировать столкновение планет - вышло не убедительно, но идея работоспособна. Добавить 3D и более подходящую физику - авось что-то получится. 1000 частиц вполне хватит для начала.

В одном из предыдущих постов я давал ссылку на демку http://www.fileden.com/files/2008/1/8/1687460//PDemoSuite.zip с исходниками, где на GPU рассчитывалось 300-800.000 объектов с простой физикой и проверкой на столкновения с ландшафтом. На GeForce GTS 250 она давала неплохой fps, правда у меня нет возможности проверить на Radeon-ах, хотя в приложенном pdf файле нет упоминания CUDA, так что вполне возможно что будет работать и на них.

Quote (SpaceEngineer)
Я не про свою реализацию говорю, а про ссылку с видео. Там видно "кипение" красного гиганта. Вот только временной масштаб (время жизни пузырей) - годы. На Солнце время жизни гранул - 5-20 минут. Так что такого бурления, как показывают в некоторых играх или клипах, не будет. Анимация поверхности в моём движке возможна только периодической перегенерацией текстур (используя 4D шум вместо 3D, где по 4 координате - время). При оптимизации ландшафтного движка это в принципе возможно. Другой вариант - не генерировать текстуры вообще, а сразу рендерить на экран фрактальной функцией, но для этого не хватит производительности.

Я просмотрел эти ролики и глянул еще несколько роликов с других сайтов. Все таки гранулы тоже достаточно крупные образования и на их изменения нужно время. Однако я все таки не верю, что огромные массы сильно перегретой плазмы могут находится в покое. На некоторых роликах по поверхности звезды идут волны (например как здесь http://www.youtube.com/watch?v=0Lw3fzGIXKk ) и от мест вспышек расходятся концентрические круги. Возможно можно будет использовать те же методы с помощью которых должна генерироватся поверхность океанов для создания поверхности звезд. Правда остается вопрос о размере этих волн и соответственно с какого расстояния они будут видны.


Сообщение отредактировал Duke - Понедельник, 22.08.2011, 22:21
SpaceEngineerДата: Вторник, 23.08.2011, 00:08 | Сообщение # 75
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Quote (Duke)
В одном из предыдущих постов я давал ссылку на демку http://www.fileden.com/files/2008/1/8/1687460//PDemoSuite.zip с исходниками,

Можешь залить её куда-нибудь, где поддерживается докачка? А то я с этим DSL полдня качал, и на 80% обрубилось sad
ЗЫ: раз 300к объектов, то это может быть только на видюхе. И CUDA тут не при чём, то же можно сделать и на шейдерах (сама CUDA же не использует ничего волшебного).

Quote (Duke)
Правда остается вопрос о размере этих волн и соответственно с какого расстояния они будут видны.

Размер гранул на Солнце - 1-2 тысячи км. На других звёздах он обратно пропорционален ускорению свободного падения на поверхности звезды и температуре. Красные гиганты огромные и холодные - поэтому гранулы в ползвезды размером. На нейтронный звёздах толщина атмосферы порядка... 1 сантиметра (!), а конвективной области можно считать вообще нет. Волны от вспышек тоже считаются. Всё это моя забота как астронома:) А вот что касается расстояния видимости - это зависит от технологии реализации. Если делать гранулы и волны рельефом поверхности (а другого пути я не вижу), то расстояние не имеет смысла - поверхность всегда генерируется так, чтобы отображаться с попиксельной точностью. Так работает алгоритм.


Поиск:

>