"Лесенки" на границе Shadow distance
Вложений: 1
Предисловие:
По мере возможностей своего медленного интернета облазил ветки "глюки", "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 они остаются( Просьба: Расскажите, что, все-таки, вызывает этот артефакт. В силу своих незнаний предполагаю (исходя из найденного решения) что это связано с ошибкой буфера глубины видеокартой (надеюсь, эта абракадабра не вызовет на меня лучи гнева - я плохо ориентируюсь в пайплайне рендера теней) |
Ответ: "Лесенки" на границе 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. Немного перефразировал и дополнил. |
Ответ: "Лесенки" на границе Shadow distance
|
Ответ: "Лесенки" на границе Shadow distance
Цитата:
|
Ответ: "Лесенки" на границе Shadow distance
Цитата:
|
Ответ: "Лесенки" на границе Shadow distance
Собственно о возможности использования более точного w-буфера при 16-ти битном цвете я и не догадывался. Так что я это и имел ввиду.
|
Ответ: "Лесенки" на границе Shadow distance
|
Часовой пояс GMT +4, время: 01:53. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot