Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Уроки

Ответ
 
Опции темы
Старый 07.12.2010, 16:17   #1
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Плохо "Лесенки" на границе Shadow distance

Предисловие:
По мере возможностей своего медленного интернета облазил ветки "глюки", "tips&tricks", шейдерный флуд, Post-Processing соседнего ресурса, но ничего похожего на свой вопрос не нашел.
На официальных форумах и "ответах" тоже был, но решения там тоже не увидел. Если плохо искал - просьба ткнуть в меня ссылкой на решение (именно в решение).

Проблема:
Есть сцена, включен deferred, в сцене directional источник света с мягкими тенями. Лайтмапы посчитаны, расстояние теням в "quality settings" выставлено 30. В дальней зоне теней (т.е. ближе к shadow distance) появляются "лесенки" - плоскости затенения. При поворотах камеры и при движении "лесенки" тоже бегают - как я понимаю, зависят они от depth пикселя.
Ну, на скриншоте эффект в общем-то во всей "красе" представлен.

Задача:
Заставить их исчезнуть.

Информация:
Как я понял из официальных форумов, это нечто вроде "особенности", которую на уровне движка они выпилить не могут (что меня сильно удивляет - неужели с ТАКИМ артефактом они готовы мириться?)

Попытки решения:
1. Пробовал крутить Far clip plane камеры. Лесенкам пофиг.
2. Пробовал уменьшать Shadow distance. На SD=10 лесенок почти не видно, но SD=10 - это 3 метра в игровом эквиваленте. Несерьёзно, однако. Идешь-идешь, и тут ЧЕРДАК! - под объектом тень появилась.
3. Пробовал крутить Bias параметр у теней источника света. Чем меньше Bias, тем ужаснее лесенки. Но! Я сильно обломался когда напоролся на то, что ребята из Юнитека решили, что Bias больше чем 0.2 быть не может. Думается мне, если бы его можно было установить 0.7 - 0.9, это решило бы проблему. В 2.6, к слову, когда у меня возникала подобная проблема (там лесенки были менее ужасными и проявляли себя всего в паре мест), я выкручивал Bias до значения 1.0 и избавлялся от артефакта.

!!Решение!!
Крутить вместе Far clip plane и (этот еще важнее) Near clip plane. Старайтесь сделать Near clip plane настолько большим, насколько это возможно - и лесенки уходят! Но! Уходят лесенки только в Play mode, в Scene view они остаются(

Просьба:
Расскажите, что, все-таки, вызывает этот артефакт. В силу своих незнаний предполагаю (исходя из найденного решения) что это связано с ошибкой буфера глубины видеокартой (надеюсь, эта абракадабра не вызовет на меня лучи гнева - я плохо ориентируюсь в пайплайне рендера теней)
Миниатюры
Нажмите на изображение для увеличения
Название: lesenki(((.png
Просмотров: 1487
Размер:	117.4 Кб
ID:	12050  
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (07.12.2010)
Старый 07.12.2010, 18:03   #2
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: "Лесенки" на границе Shadow distance

Сразу глянув на скрин, хотел предложить покрутить depth bias. Но потом оказалось, что ты уже это делал.
Вообще соотношение far clip plane к near clip plane всегда нужно делать как можно меньше. Это повышает точность буфера глубины. Вспоминается какой-то пост в блоге Aras'a, что неплохо было бы сделать автоответчик на форуме, который бы писал "Следует увеличить значение near clip plane", ибо это какая-то массовая истерия ставить ближнюю плоскость на 0.000001, а дальнюю на 1000000. В таком случае, если буфер глубины 24-битный, то на один его бит будет приходиться 59604,64 единиц движкового пространства. Но это очень грубо говоря, т.к. значения глубины в з-буфере на самом деле не линейные. Скажем, если соотношение far к near составляет 100 единиц, то 90% значений з-буфера придется на первые 10% значений глубины сцены. Именно поэтому такие артефакты чаще всего проявляются на большем расстоянии от камеры. Есть еще w-buffer, он вроде как линейный. Но о нем я ничего больше сказать не могу, т.к. не пользовался.
Иногда похожая ерунда может возникнуть если тень падает на поверхность под очень острым углом.

UPD. Немного перефразировал и дополнил.
__________________

(Offline)
 
Ответить с цитированием
Эти 7 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
ABTOMAT (07.12.2010), Harter (07.12.2010), impersonalis (09.12.2010), Mr_F_ (08.12.2010), pax (07.12.2010), Reks888 (07.12.2010), Taugeshtu (07.12.2010)
Старый 07.12.2010, 18:59   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: "Лесенки" на границе Shadow distance

это какая-то массовая истерия ставить ближнюю плоскость на 0.000001, а дальнюю на 1000000.
Ну дак это логично, мне кажется. Когда-то давно, когда я впервые столкнулся с тем, что мне блиц красил чёрным то, что вдали, я узнал про эту команду и, недолго думая, засунул туда 0.000001 и 9999999 шоб надолго хватило, искренне удивляясь, почему авторы движка так не сделали, вдалеке не видно ж ничего.
Только потом уже узнал в чём соль.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 07.12.2010, 19:07   #4
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: "Лесенки" на границе Shadow distance

Сообщение от .Squid Посмотреть сообщение
Есть еще w-buffer, он вроде как линейный. Но о нем я ничего больше сказать не могу, т.к. не пользовался.
А он по моему только на 16-ти битном цвете дает лучший результат. Когда-то давно интересовался, а вот осталось в голове только это.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.12.2010, 19:51   #5
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: "Лесенки" на границе Shadow distance

Сообщение от pax Посмотреть сообщение
А он по моему только на 16-ти битном цвете дает лучший результат. Когда-то давно интересовался, а вот осталось в голове только это.
Цвет тут не при чем. W-buffer давал более качетсвенный результат, чем 16-битный Z-buffer. Почему сейчас, в эпоху 24-, 32-битных з-буферов, он дает хуже результат, я не знаю, т.к. не в курсе всех нюансов его работы. Сейчас W-buffer железом не поддерживается, насколько я знаю.
__________________

(Offline)
 
Ответить с цитированием
Старый 07.12.2010, 20:37   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: "Лесенки" на границе Shadow distance

Собственно о возможности использования более точного w-буфера при 16-ти битном цвете я и не догадывался. Так что я это и имел ввиду.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 07.12.2010, 21:37   #7
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: "Лесенки" на границе Shadow distance

Еще раз говорю: разрядность цвета тут не при чем. Разрядность з-буффера устанавливается отдельно.
__________________

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com