Шейдер без дополнительных эффектов [Теперь точно решено]

Шейдеры и все-все-все.

Шейдер без дополнительных эффектов [Теперь точно решено]

Сообщение Ashvar 28 ноя 2011, 21:19

В общем я экспериментирую с созданием процедурных планет. Планеты при этом состоят из разных мешей, которые плотно состыкованы друг с другом, но тем не менее у них чётко видны грани, где они стыкуюстя. Можно к примеру взять 2 куба и поставить один на другой и такого эффекта не будет. Хотя шейдер и там и там диффузный. Часто видел такую проблему у других авторов процедурных планет, но не у всех. Как это можно решать?

Появилось дополнение! Если не накладывать никаких текстур (или пустую текстуру), то проблемы нету - грань невидима. Если заливать цветом, то грань видна. Мораль - грань является результатом работы диффузного шейдера. С остальными та же ситуация. И так вопрос! Как написать и подключить шейдер, который ничего не делает? я в шейдерах в общем то дуб - так что плиз не пинать!
Последний раз редактировалось Ashvar 01 дек 2011, 19:36, всего редактировалось 3 раз(а).
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов

Сообщение Kann 28 ноя 2011, 23:31

возможно вам нужны бесшовные текстуры ?
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Шейдер без дополнительных эффектов

Сообщение Ashvar 29 ноя 2011, 12:19

Я же говорю, что грань появляется даже при заливке всего одним цветом. Бесшовные текстуры за счёт того что будут своими краями совпадать - сделают грани менее заметными, но не решат проблему. Для них та же ситуация. Я вечером срины добавлю. Но неужели ни у кого подобного не было?
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов

Сообщение magoga 29 ноя 2011, 12:30

ну если бы был прицеплен скрин всего этого дела.
но я лично полагаю что проблема не в шейдере и даже не в юнити а в группах сглаживания самой модели.
видители если распилить сферу на элементы нормаль точек на швах будет смотреть не туда куда смотритя нормали точек.
Изображение
не знаю в каком именно софте вы создавали сферы( я лично работаю в максе и знаю как тым это пофиксить) но перед выгрузкой чтобы небыло подобных швов нужно отредактировать вертексные нормаля.
на моем примере я просто выделил все эелементы сферы, назначил на них модофикатор Edit Normals там есть группа инcтрументов "Average" та нужно нажать на указатель Use Threshold, указать минимальную дистанцию при которой нормал нескольких точек объединится и нажать "Selected"
Аватара пользователя
magoga
UNIт
 
Сообщения: 98
Зарегистрирован: 22 мар 2010, 21:08

Re: Шейдер без дополнительных эффектов

Сообщение Ashvar 29 ноя 2011, 15:45

Я сферу делаю процедурно из плоскостей прямо в Юнити. Скрин прилеплю. А как в процедурном меше явно задать нормали? Там по идее я создавал tangents - это типо нормалей, но вдоль поверхности, а нормали специальным методом сами считаются. Ну и эффект не совсем такой, но очень похож. Там имеено самый краешек текстуры подкрашивается в более тёмный, либо более светлый цвет в зависимости от положения источника света. И опять же повторюсь эффект есть только при заливке цветом или назначении некоторой текстуры - если мешу назначена пустая текстура, точнее определена, но при этом её нет, то мешу даётся белый цвет и эффекта этого нет.
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов

Сообщение Ashvar 29 ноя 2011, 18:12

Скрины:
Изображение - при белом цвете почти не видно
Изображение - на сером грани уже сильно заметны
Изображение - вот вид на пленету в целом
Изображение - вот вид на стык мешей вблизи
Изображение - вот вид с сеткой - грани совпадают точно
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов

Сообщение gnoblin 29 ноя 2011, 20:43

эту проблему можно решить на уровне меша - выровнять нормали на швах (что-то вроде weld seam, на форуме была тема)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Шейдер без дополнительных эффектов [РЕШЕНО!]

Сообщение Ashvar 29 ноя 2011, 21:57

Последний ответ меня подтолкнул к верному решению! Нормали определяют затенение объекта - косяки на гранях от разных нормалей для разных мешей в одной точке. Раньше я использовл метод RecalculateNormals. Теперь явно прописал нормали - для сферы это не сложно =) и теперь всё работает отлично! Надо только сделать нормали с учётом наклона поверхности от карты высот, но это уже дело техники! Всем спасибо!
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов [Решено]

Сообщение Ashvar 01 дек 2011, 19:18

Блин! Снова подымаю тему. Проблему я решил лишь отчасти. Но в этот раз я знаю в чём дело!
Изображение
На картинке видна полоса - это противоположная сторона текстуры которую я накладываю. То есть Unity непонятно зачем смещает мою текстуру.
Собственно сам пытался решить, без UV координат выводить нельзя - но они заданы правильно, т. к. меняются как и положено от 0,0 до 1,1. Пробовал менять - отрабатывают как и должны по функционалу.
Текстуру делаю программно размером 256 - возможно что-то с ней не так. И опять же понятия не имею как шейдер работает :((
Изображение
Вот с другой стороны вид - та же косячная полоса!!

Изображение
Ну и вид в целом.
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов [НЕ Решено!!]

Сообщение gnoblin 01 дек 2011, 19:20

поставить у текстуры wrapmode = clamp
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Шейдер без дополнительных эффектов [НЕ Решено!!]

Сообщение Ashvar 01 дек 2011, 19:26

Внесу правки! Поменял filterMode на Point - теперь всё хорошо отображается! Граней нет! Но при поворотах как то жёстко выглядит, что вообще определяет этот параметр? Зачем он такой?
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22

Re: Шейдер без дополнительных эффектов [НЕ Решено!!]

Сообщение Ashvar 01 дек 2011, 19:35

filterMode на Point как то при поворотах фигню делает... Сделал по совету товарища mytexture.wrapMode = TextureWrapMode.Clamp - теперь без этого косяка. Спасибо!
Ashvar
UNIт
 
Сообщения: 62
Зарегистрирован: 20 ноя 2011, 16:22


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3