Author Topic: Генерация ландшафта (временная тема)  (Read 6471 times)

0 Members and 1 Guest are viewing this topic.

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 911
  • Reputation 36
  • Game making is my hobby for life!
Re: Генерация ландшафта (временная тема)
« Reply #15 on: January 25, 2015, 01:47:06 PM »
Да, при смешевании материалов могут быть разные глюки. Как я понимаю, ты накладываешь несколько текстур на поверхность?
Попробуй смешивать материалы как в примере 87_MultiPass_Rendering
Нужно поиграть с такими функциями как wSetMaterialBlend, wSetNodeMaterialType
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #16 on: January 25, 2015, 02:15:28 PM »
С wSetNodeMaterialType я ещё вчера наигрался. Толку нуль.
wSetMaterialBlend - это для смешивания текстур на одном месте... Поигрался, так же эффекта нуль
Даже при вырезке всего из шейдера и оставляя одну текстуру и накладывая её с (допустим) 10 до 100 по высоте карты я наблюдаю этот артефакт с верху и низу по текстуре в виде непонятной линии.
Кстати, выкладываю скрины

без мипмапа
с ним

Такое ощущение, что мипмап вдали недорисовывает один пиксел по высоте

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 911
  • Reputation 36
  • Game making is my hobby for life!
Re: Генерация ландшафта (временная тема)
« Reply #18 on: January 25, 2015, 02:50:25 PM »
На скринах видно, что без мипмапа артефактов нет.

А флаги разные пробовал через wSetNodeMaterialFlag ? Напр.: wMF_GOURAUD_SHADING, wMF_BILINEAR_FILTER, wMF_TRILINEAR_FILTER, wMF_ANISOTROPIC_FILTER
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #19 on: January 25, 2015, 03:05:49 PM »
Пробовал ((( Ладно, буду дальше ковыряться. А может что и получится

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 911
  • Reputation 36
  • Game making is my hobby for life!
Re: Генерация ландшафта (временная тема)
« Reply #20 on: January 25, 2015, 03:14:50 PM »
А такой вариант как в примере 63, тебе не подойдёт? Коенчно, там совсем другая реализация.
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #21 on: January 25, 2015, 03:21:39 PM »
Нет, не подходит... Ладно, пошёл курить доки по мипмапу, может чего найду ценного

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #22 on: January 25, 2015, 04:22:32 PM »
Хммм, нашёл аналог моей проблемы на этом сайте
Так, значит я был прав, что один пиксель не дорисовывает...
Вылезло ещё много подобного и на других сайтах про mipmap. Везде свои костыли применяют. Нужно тогда подумать про свои костыли, но как-то не верится, что ещё никто не сталкивался с этой бедой на Irrlicht'е. Или там как-то можно убирать этот глюк?

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #23 on: January 28, 2015, 04:13:57 PM »
Всё-таки не мог я оставить тот баг в покое и доканал его... Возможно и не совместимость с дровишками у меня и шейдера, но я понял, что обрабатывать и накладывать текстуры нужно СТРОГО в том порядке, в котором они загружались.
Т.е. загружаем песок, траву, скалы и снег, то так и обрабатываем. Сперва песок ложим, потом траву и т.д
Я же для удобства накладывал сперва песок и снег, потом траву и скалы. И только потом производил смешивание текстур в нужных уровнях... Если же накладываю песок, затем уровнем выше смешиваю песок и траву, затем ещё выше отображаю траву и т.д. по высотам, то АРТЕФАКТЫ ПРОПАДАЮТ  :D Уряяяя, товарищи, я победил эту заразу  ;)
« Last Edit: February 01, 2015, 12:20:38 AM by it_is_good »

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 911
  • Reputation 36
  • Game making is my hobby for life!
Re: Генерация ландшафта (временная тема)
« Reply #24 on: January 28, 2015, 05:01:14 PM »
Молодец. Никто лучше не решит это (и если надо не доканает), чем сам обладатель кода. (О... хорошо сказал.)  :)
Будем знать и учитывать.
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #25 on: January 29, 2015, 02:23:22 PM »
Странно, вчера задавал вопрос про массивы перед выходом на работу, но пост исчез  :( Или я в спешке нечаянно его удалил.
Так вот вопрос повторно, я просил проверить, у вас какое максимальное значение можно указать в массиве. Просто стало интересно после шейдеров, у кого как оригинальные функции FB работают...
Вот код для пробы
Code: [Select]
#include "WorldSim3D.bi"

Dim As Long HightMap(0 To 10000, 0 To 10000)
'Dim verts(0 to 60000) as wVERT
(Поиграйтесь с обеими строчками по отдельности)
По сути такой код должен вызвать ошибку, по крайней мере у меня так...
И возможно ли увеличить размер массивов без использования команд с памятью? (скорее всего никак, имхо)

У меня лично вот такие данные получаются максимум
Code: [Select]
#include "WorldSim3D.bi"

Dim As Long HightMap(0 To 541, 0 To 541)
'Dim verts(0 to 32667) as wVERT
« Last Edit: January 29, 2015, 02:59:09 PM by it_is_good »

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 911
  • Reputation 36
  • Game making is my hobby for life!
Re: Генерация ландшафта (временная тема)
« Reply #26 on: January 29, 2015, 06:06:52 PM »
Да, предыдущего поста не было, я не видел.

Quote
Dim As Long HightMap(0 To 10000, 0 To 10000)
У меня выдает предупреждение: "Array too large for stack, consider making it var-len or SHARED" и вылетает с ошибкой.

Quote
Dim As Long HightMap(0 To 541, 0 To 541)

у меня и того меньше: 0 to 505, 0 to 506

Quote
Dim verts(0 to 60000) as wVERT
Dim verts(0 to 28489) as wVERT

Может быть это зависит от объёма (доступной) операт. памяти?
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #27 on: January 29, 2015, 06:13:05 PM »
Спасибо, этого я и опасался, что на самый максимум опираться не стоит...
Значит нужно думать и кумекать дальше, как из минимума делать максимум  :o

Offline it_is_good

  • Friends
  • Baron (-ess)
  • *
  • Posts: 308
  • Reputation 13
  • I'm a newbie.
Re: Генерация ландшафта (временная тема)
« Reply #28 on: January 29, 2015, 07:44:07 PM »
Предлагаю вам проверить FPS на картах 200x200, 300x300 и 500x500. Хотелось бы также увидеть полезные ссылки на оптимизацию... Шейдер на fps не влияет, по крайней мере я падений не заметил. Что с ним, что без него.
Скачать архив
« Last Edit: January 30, 2015, 06:56:42 AM by it_is_good »

Offline Alec - WS3D Developer

  • Producer
  • Administrator
  • Marquess
  • *
  • Posts: 911
  • Reputation 36
  • Game making is my hobby for life!
Re: Генерация ландшафта (временная тема)
« Reply #29 on: January 29, 2015, 08:31:06 PM »
Quote
Шейдер на fps не влияет
Это как раз и есть главная цель любого шейдера - ведь текстуру можно обрабатывать и центр. процессором, но тогда фреймрейт может быть низким в зависимости от несольких факторов. А рендеринг текстур через видеокарту - увеличивает быстродействие в несколько раз.

Quote
Хотелось бы также увидеть полезные ссылки на оптимизацию
Оптимизация делается разными способами в зависимости от того. где "тормозные" элементы рендеринга. Т.е. нужно знать, что оптимизировать: текстуры, полигоны и какими способами.
WorldSim3D = 3D + FreeBasic. Программируй в удовольствие, а не "в тягость"! Make your project with pleasure, not with strain!