Vasara Posted October 14, 2020 Share Posted October 14, 2020 Добрый день. Возникло несколько вопросов, на которые я не нашёл ясного ответа. И для которых нет смысла создавать отдельные темы. На сайте указано, что слишком большое количество карт слоёв может снизить производительность. Хотелось бы более развёрнуто, что значит слишком? Влияет ли только количество или размер тоже (наверняка, но что и на что). Где узкое место в железе, чтобы понимать как распределять ресурсы (может что то дешевле реализовать масками, деталями). Например, как скажется на производительности 10 карт разрешением 16к*16к пикселей? Или 100 карт 100*100 пикселей. В классе LandscapeTextures Class метод getOpacityHeight получает R32F текстуру с данными прозрачности. Для чего эти данные используются? По мере возникновения новых вопросов, буду добавлять их в эту тему. С Уважением Константин. Link to comment
thomalex Posted October 16, 2020 Share Posted October 16, 2020 Добрый день, @Vasara! Это довольно комплексная тема, постараюсь коснуться каждого фактора. Вся производительность основана на стриминге данных. Весь ландшафт стримится потайлово (размер тайла фиксированный - 128×128 px), для каждого компонента отдельно (Albedo, Heightmap, данные о масках) и только в тех местах, что видны камерой, формат ассетов Landscape Layer Map подразумевает фрагментированную загрузку по востребованию. При этом, учитывается видимость слоёв: если, скажем, крупная Landscape Layer Map перекрывает данные других слоёв, только она будет участвовать в загрузке данных. Важно то, сколько слоёв определяют вид ландшафта в текущий момент времени во вьюпорте - большое число крупных слоёв с текстурами высокого разрешения заметно усложнят загрузку с диска и на видеокарту. Здесь стоит рассмотреть вариант объединения множества текстур в одну в графическом редакторе. Текстуры деталей загружаются на старте и хранятся в видеопамяти, стримятся только итоговые компоненты виртуальной текстуры всего ландшафта, основанные на смешивании текстур Layer Maps и деталей. Так что, опять же, всё зависит от стриминга базовых текстур террейна. Важную роль играет поведение камеры. Статичная камера предполагает единоразовую загрузку данных (если всё помещается в видеопамять), в то время, как при движущейся, вся детерминированность может пропасть, а стриминг сильно ударит по производительности. Здесь нет чётких правил, только рекомендации: использовать Microprofile и отслеживать время загрузки, для удобства профилирования можно анимировать перемещение камеры через Tracker и запускать анимацию для тестов. Количество статичных слоёв не сильно влияет на производительность, примером могут служить демо-проекты сэмплы с Landscape Terrain со множеством следов, сделанных при помощи Landcsape Layer Maps. Другое дело обстоит с динамическими слоями, здесь тайлы уже не только загружаются, но и перезагружаются. Если очень много изменений в слоях за один кадр, число перезагрузок может превысить пропускную способность системы и производительность упадёт в ноль. Поэтому очень важно следить на настройками стриминга и динамикой изменения слоёв и тайлов, избегать покадрового изменения крупных слоёв, вызывающих перезагрузку множества тайлов. Узкое место может быть во всех основных компонентах системы, особенно в диске, для ландшафтов крупного размера (несколько километров в поперечнике) и с деталями большого разрешения, лучше использовать SSD, более медленные HDD сделают стриминг заметным при резком изменении положения камеры. И, конечно, необходимо следить за такими настройками, как Tiles Load Per Frame, Tiles Update Per Frame и размер виртуальной текстуры (больший размер позволит хранить больше загруженных тайлов). Многоядерные процессоры здесь имеют преимущество, т.к. позволяют распределить загрузку. Обязательно постараемся покрыть этот вопрос максимально прозрачно в документации, спасибо. On 10/14/2020 at 10:48 PM, Vasara said: В классе LandscapeTextures Class метод getOpacityHeight получает R32F текстуру с данными прозрачности. Для чего эти данные используются? Метод getOpacityHeight возвращает текстуру непрозрачности для высот участка террейна, которая может появиться при импорте карты высот Landscape Layer Map с картой непрозрачности или при стирании высоты кистью Eraser. Надеюсь, это поможет. Спасибо! 2 Link to comment
Vasara Posted October 16, 2020 Author Share Posted October 16, 2020 Спасибо, такие статьи очень помогают. Если ошибиться с методом реализации, можно угробить несколько месяцев в никуда. Link to comment
aver70 Posted October 30, 2022 Share Posted October 30, 2022 При редактировании кистями ландшафт ,кисть выравнивания ландшафта по определеной высоте ALT И ПРАВАЯ КНОПКА МЫШИ при выставление смешивания.В версии UNIGINE 2.14 работала хорошо,но и в 15 и сейчас в 16 не работает или работает не коректно.В чем может быть проблема Спасибо Link to comment
bmyagkov Posted October 30, 2022 Share Posted October 30, 2022 Добрый день! @aver70 По изображению довольно сложно сказать что именно не так. Но, в релизе 2.16 действительно изменилась логика редактирования высот и возможно что сейчас для корректной работы лерпа данных также необходимо добавить "подложку" в лице дефолтной "LandscapeLayerMap" для которой необходимо задать "Order" ниже, чем для той "LandscapeLayerMap" с которой вы работаете. Спасибо! Link to comment
aver70 Posted November 2, 2022 Share Posted November 2, 2022 На рисунке показано два уровня высоты.Красным выделены настройки кисти.При нажатии на первом уровне alt+ левая кнопка мыши , уровень два должен быть выровнен по высоте первого уровня.Но данная кисть не выравнивает. Что не так или что нужно настроить Link to comment
aver70 Posted November 2, 2022 Share Posted November 2, 2022 bandicam 2022-11-02 21-47-17-934.mp4 Link to comment
bmyagkov Posted November 3, 2022 Share Posted November 3, 2022 Добрый день! @aver70 Попробуйте сделать следующим образом: 1. Верните значения по умолчанию для Opacity и Contrast кисточки нажав на кнопку Reset рядом со слайдером; 2. Наведите курсор на первый участок и нажмите кнопку C на клавиатуре (Pick Data - Снять значения); 3. В окне Height кисточки появится снятое значение высоты; 4. Нажав левую кнопку мыши попробуйте порисовать по второму участку (кнопку ALT при этом удерживать не надо) Спасибо! Link to comment
aver70 Posted November 3, 2022 Share Posted November 3, 2022 Спасибо ... Все отлично работает. Теперь я могу продолжить работу с уровнем. Спасибо. 1 Link to comment
Recommended Posts