Войти
ПрограммированиеФорумГрафика

Предрасчёт рейкаста для эффективного рендеринга травы и меха (комментарии)

Страницы: 1 2 Следующая »
#0
21:12, 18 авг. 2019

Предрасчёт рейкаста для эффективного рендеринга травы и меха (комментарии)

Это сообщение сгенерировано автоматически.
#1
21:12, 18 авг. 2019

Устал писать, поэтому наверняка где-то накосячил. Просьба написать, что не понятно, что нужно пояснить, что исправить и добавить.

#2
22:02, 18 авг. 2019
#3
22:21, 18 авг. 2019

спасибо за статью!

#4
22:36, 18 авг. 2019

не ожидал, что еще и шевелится будет. это наборы анимированных фреймов предрасчитанных для О(1) выборок текстур? статью пока не читал

#5
22:42, 18 авг. 2019

*Lain*
предрассчитанная текстура одна. анимация в коде, который её использует.

#6
23:04, 18 авг. 2019

Хмм... XYZ-нормаль нужна только для травинок с бампом?
Но даже в этом случае польза сомнительная, ибо нет зависимости от Z.
А для гладких травинок 2D нормаль можно представить в виде угла отклонения от направления взгляда и запаковать всю lookup-текстуру в RG вместо RGBA.

#7
(Правка: 23:09) 23:08, 18 авг. 2019

}:+()___ [Smile]
во-первых, травинки вертикальны и параллельны только в базовой версии алгоритма. в случае, если по ходу луча их двигать, это создаёт эффект наклонённых в разные стороны травинок с ненулевой z-координатой нормали. на самом деле я пробовал запекать в RG, это тоже имеет смысл для некоторых типов геометрии вроде меха, но для спутанной травы лучше хранить Z-координату в явном виде. а аппаратного формата с тремя компонентами всё равно нет, поэтому храню 4. но эти микрооптимизации на самом деле не принципиальны, там гораздо интереснее, как обходить ограничения алгоритма на паралелльные волокна, например.

#8
23:18, 18 авг. 2019

Каеф. Интересно было бы глянуть под острым углом)

#9
0:13, 19 авг. 2019

Здорово выглядит, но до конца я так и не понял ::)

#10
2:12, 19 авг. 2019

Трава, я так понял, получается исключительно примятая.

#11
5:13, 19 авг. 2019

Suslik
> По третьей размерности (количество углов) можно брать от 8 до 64 в зависимости от применения. Я обычно использу текстуры 64х64х8.
Неужели 8 углов реально хватает? На видео сколько у тебя углов используется?

> Здесь также меняется толщина волокон — чем дальше мы идём по лучу, тем толще делаются волокна
Каким образом ты делаешь волокна толще? Насколько я понял ты реймаршишь по слоям, в каждом слое за одну выборку определяешь точку пересечения. Но как можно сделать волокна толще, если у тебя одна предрассчитанная карта? Или у тебя там их несколько?

#12
(Правка: 11:38) 11:09, 19 авг. 2019

MrShoor
> Неужели 8 углов реально хватает? На видео сколько у тебя углов используется?
я не помню, около 8. там суть в том, что когда два слоя по углам интерполируются, это выглядит как один слой, сменяемый другим. это может выглядеть практически незаметно, если не вглядываться в упор, а увеличение разрешения может наоборот участить этот процесс и сделать его более заметным. короче, там надо много экспериментировать, чтобы найти оптимальное разрешение и оно вовсе не всегда окажется максимальным.

MrShoor
> Каким образом ты делаешь волокна толще? Насколько я понял ты реймаршишь по
> слоям, в каждом слое за одну выборку определяешь точку пересечения. Но как
> можно сделать волокна толще, если у тебя одна предрассчитанная карта? Или у
> тебя там их несколько?
карта одна. но чем дальше проходишь по лучу, тем больше увеличиваешь радиус всех волокон. это создаёт иллюзию утолщающихся к основанию травинок, хоть и не является честным рассчётом.

foxes
> Трава, я так понял, получается исключительно примятая.
вовсе нет. просто некоторые артефакты, которые появляются при применении не совсем честных техник вроде утолщения травинок, наиболее очевидны при взгляде параллельно волокнам, поэтому я их на том видео скрыл, положив траву под углом. если подобных хаков не использовать, выглядит корректно под любым углом.

#13
(Правка: 12:40) 12:40, 19 авг. 2019

Suslik
> карта одна. но чем дальше проходишь по лучу, тем больше увеличиваешь радиус
> всех волокон.
Но как ты этот радиус увеличиваешь? Вот у тебя 3д текстура, в которой ты по xy координатам и углу в z получаешь расстояние на луче до пересечения. Но ведь уменьшить расстояние по лучу - не достаточно. При увеличении радиуса у тебя может образоваться новое пересечение. Вот пример:
ray | Предрасчёт рейкаста для эффективного рендеринга травы и меха (комментарии)
Если чуть-чуть увеличить радиус у препятствий, то луч начнет пересекать то, что раньше не пересекал. Как этот момент обходится?

#14
13:31, 19 авг. 2019

Демка будет?

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика