[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
TextureStage и Terrain
serg-kkzДата: Вторник, 26.08.2014, 17:19 | Сообщение # 46
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Цитата ninth ()
Альтернативная версия. Здесь полосы будут чуть сглажены.

Эт, как - то для меня заморочено.

Вот проще, одна строка c волшебством:

self.mask = Image.merge("RGBA", (self.red,self.green,self.blue,self.alfa)) # Собираем слои
finih = self.mask.filter(ImageFilter.GaussianBlur(radius=2))
finih.save("data/default_d.png") # И сохраняем'''

Прикрепления: 6102965.png (1.98 Mb)


ООП  -  

Сообщение отредактировал serg-kkz - Вторник, 26.08.2014, 19:14
 
serg-kkzДата: Вторник, 26.08.2014, 22:16 | Сообщение # 47
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Только, у этого ландшафта есть проблема. Не поддается он освещению. redface

ООП  -  
 
ninthДата: Среда, 27.08.2014, 09:12 | Сообщение # 48
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Да я предыдущий пример привёл к тому что слои в процедуре не обязательно сначала разбирать, а потом собирать, писать можно сразу все каналы, причём с учётом изначальной текстуры. А сглаживание - это как дополнительный эффект.
При общем блуре будут размываться границы там где этого не должно быть, хотя здесь оно не сильно заметно. Заметно будет, когда у тебя будут заполнены все слои, например размоет границы тропинки или резкого обрыва.

А что с освещением? Какое ты хочешь освещение-то? В оригинале на ландшафт была налеплена теневая текстура.
 
serg-kkzДата: Среда, 27.08.2014, 09:25 | Сообщение # 49
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Например пиксельное. Теневую текстуру комментил, но толку нет.

Общий блур можно переделать только для слоя скал. Потом опять точки которые не 255 нужно будет привести к максимуму. И заново собрать.


ООП  -  

Сообщение отредактировал serg-kkz - Среда, 27.08.2014, 11:11
 
ninthДата: Среда, 27.08.2014, 13:14 | Сообщение # 50
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
А, вон оно что, ты хотел встроенный шейдер пиксельного освещения повесить. Здесь не получится, он заменяется кастомным, который у тебя с текстурами работает. Его придётся расширить примерно как-то так:


и несколько инпутов для шейдера



Цитата serg-kkz ()
Общий блур можно переделать только для слоя скал.

Останутся незаблуренными полосы, которые ты на других слоях в 0 убрал.
 
serg-kkzДата: Среда, 27.08.2014, 14:41 | Сообщение # 51
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Цитата ninth ()
А, вон оно что, ты хотел встроенный шейдер пиксельного освещения повесить. Здесь не получится, он заменяется кастомным, который у тебя с текстурами работает. Его придётся расширить примерно как-то так:


А если тени? эт так и дописывать придется

Проверил свой вариант.



Только края блур порвал в квадраты, нужно будет попробовать фильтр с обводкой перед блуром.

Кстати ты в курсе про эту инфу.

https://www.panda3d.org/manual/index.php/Cg_Tutorial_Part_3

Да ты в курсе. Ведь она в мануале. Но почему то по ссылкам можно кликать до третьей страницы.
А дальше с 3-х поменять постепенно до 12-ти или 13-ти, точно не помню.

Может где изначально и есть ссылки, но попал на ни я только через поисковик.
Прикрепления: 2735024.png (189.7 Kb)


ООП  -  

Сообщение отредактировал serg-kkz - Среда, 27.08.2014, 14:44
 
ninthДата: Среда, 27.08.2014, 14:49 | Сообщение # 52
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
С тенями сложнее. Надо либо как-то изворачиваться генерировать теневую карту отдельно. Из плюсов - можно хорошее разрешение, из минусов - статичность, не будет меняться в зависимости от положения источника света. Либо делать динамические тени - тут уже что-то из стандартных подходов брать.

Я, если честно, не помню - мануал по диагонали смотрел - только интересующие куски.
 
serg-kkzДата: Суббота, 30.08.2014, 12:20 | Сообщение # 53
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Цитата ninth ()
С тенями сложнее. Надо либо как-то изворачиваться генерировать теневую карту отдельно. Из плюсов - можно хорошее разрешение, из минусов - статичность, не будет меняться в зависимости от положения источника света. Либо делать динамические тени - тут уже что-то из стандартных подходов брать.


Похоже одним словом на жирный минус панды. Какой-то тупик получается при использовании шейдеров, ты вынужден переводить обычные вещи для движка в шейдер, свет, тени, и еще хз что придется.


ООП  -  

Сообщение отредактировал serg-kkz - Суббота, 30.08.2014, 12:21
 
ninthДата: Воскресенье, 31.08.2014, 11:02 | Сообщение # 54
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Эти "обычные вещи" реализованы всё теми же шейдерами, просто это скрыто от пользователя для упрощения. Насколько я понимаю работу шейдеров - такое поведение будет в любом движке. Если ты переписываешь стандартные шейдеры на кастомные, то естественно стандартные на данном объекте работать не будут.
Кстати, с тенями можешь попробовать стандартный шейдер, возможно прокатит. Зависит от реализации. Если тень накладывается на объект, то эффекта не будет, если же это будет постпроцессом на отрендеренную картинку, то должно работать
 
serg-kkzДата: Воскресенье, 31.08.2014, 14:49 | Сообщение # 55
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Я все рассуждаю, про обычные вещи не ужели MultiTexture в панде понимается просто слои, думаю можно было бы доделать маски для слоев. В чем проблема? Ведь глядя на эти примеры Примеры очевидно что это реализуемо.

ООП  -  
 
ninthДата: Воскресенье, 31.08.2014, 18:24 | Сообщение # 56
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
"Обычные" - не значит наиболее простые. Хотя раз уж хочешь немножко извращений, можешь посмотреть в сторону TextureStage.setCombineAlpha. С помощью него можно попробовать обойтись без шейдеров. Но лично я бы рассматривал этот вариант в последнюю очередь, либо при жёсткой установке, что мол шейдеры использовать нельзя.
 
serg-kkzДата: Понедельник, 01.09.2014, 02:00 | Сообщение # 57
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Шейдеры использовать можно, но когда их осваивать? или из пальца высосать. Мне как то кажется в этом направлении в панде не доделка. А выход новой версии как то все не появляется. Я тут на ночь глядя сделал заключение, перед этим повертел еще один двиг вдоль и поперек. Так вот пришел к выводу что панда еще не дотягивает до уровня движка(стоит оговорится игрового), как - бы библиотека классов где классы до ума как - бы доведены и как - бы нет, а если доводятся с новыми релизами и то очень долго.

Вот в архиве пример еще одной реализации тераайна по маскам. (конечно шейдерный вариант)
И он не поддается освещению.
Прикрепления: Terrain.zip (646.9 Kb) · 9945565.png (283.5 Kb)


ООП  -  

Сообщение отредактировал serg-kkz - Понедельник, 01.09.2014, 02:06
 
ninthДата: Понедельник, 01.09.2014, 15:05 | Сообщение # 58
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Насчёт того что панда - не движок - я бы поспорил, впрочем каждый под этим делом понимает своё. Огр, например, принято считать движком, хотя он от движка куда как дальше чем Панда. Для кого-то движок - это конструктор, для кого-то - связка нужных библиотек.

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

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

Теперь к примеру.
1. В шейдере не учтено масштабирование террайна и не совсем понятно зачем минус перед нормалью.
Код
  // lighting
   float3 N = normalize( float3(vtx_normal.x*30, vtx_normal.y*30, vtx_normal.z) );
   float3 L = normalize( k_lightvec.xyz );
   l_brightness = (max( dot( N, L ), 0.0f )*k_lightcolor)+k_ambientlight;

2. Входящие параметры не совсем, точне совсем не корректны
Код
        root.setShaderInput('lightvec', Vec4(0,0,0, 0.5))
         root.setShaderInput('lightcolor', Vec4(0,0,0, 0.5))
         root.setShaderInput('ambientlight', Vec4(1,1,1, 0.5))

Во-первых: для всех трёх достаточно трехкомпонентного вектора
Во-вторых: вектор освещения - нулевой, т.е. он ниоткуда не светит. Цвет освещения - чёрный О_о. Окружающее освещение на максимум о_О откуда уж тут теням взяться?

должно быть хотя бы как-то так
Код

         root.setShaderInput('lightvec', Vec4(1, -1, 1, 0.5))
         root.setShaderInput('lightcolor', Vec4(1,1,1,1))
         root.setShaderInput('ambientlight', Vec4(0.2,0.2,0.2, 1))
 
ninthДата: Понедельник, 01.09.2014, 15:18 | Сообщение # 59
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
з.ы. Кстати, насчёт шейдеров на оффоруме чел пилит надстройку
https://www.panda3d.org/forums/viewtopic.php?f=6&t=17050
https://github.com/tobspr/RenderPipeline
 
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск: