Efficient grass rendering based on precomputed raycast

preview_player
Показать описание
This is a showcase for algorithm that I designed for rendering certain geometry such as grass and fur. This showcase is running on Path of Exile engine. Main focus of this technique is speed -- it runs in O(1) complexity and speed does not depend on grass density. It means that it will render 100 grass blades in same time as it would render 1000000 blades. Grass takes about 1ms to render worst case in 1080p on my GTX750.

Algorithm is based on an acceleration structure that's built in a precomputation step. Building precomputation data takes from a couple of seconds in low quality up to ~6 hours in high quality. I did not find any mentions of similar algorithms used by other researchers and would be interested to see any papers if someone would find any.

Рекомендации по теме
Комментарии
Автор

looks amazing! would definitly like to read a paper on it :)

SantaIsASledDriver
Автор

This looks shockingly good given the precompute approach... how much memory does the LUT take up?

Btw I've seen lots of grass rendering techniques but this seems to be a much better quality/perf tradeoff than any other I've seen. A coworker of mine at EA Tiburon in 2006 used a similar technique but it looked really bad compared to yours!

iestynne
Автор

Looks really nice, I'm interested in how it looks when the camera moves around it. Do the individual blades of grass disappear and reappear when viewed at different angles? I have some similar looking grass/fur techniques I came up with explained on my channel (I didn't precompute any lighting but that's pretty straightforward). I don't wanna post a link because youtube bans you for spam if you do that.

jacksoncannon
Автор

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

Capewearer
Автор

я до конца так и не понял
по суть, что бы эта многомерная текстура была полна для семплирования сетки, нужно, что бы она могла возвращать грубину для каждей точки (допустим на плоскости, то есть в 2д) и каждего вектора взгляда (допустим тоже 2д, без учёта глубины, принимая, что она и так есть), в таком случае, требуется как минимум 4д текстура, и если пользоваться 3д текстурой, должны быть артефакты или для поворота или для смещения, но я их не вижу, а начало статьи с туманными формулировками про *местоимение* из *мерное пространство* переводится в *мерное пространство* не прояслили, конкретную логику работы этого рендера. Вопрос, где зарыты артефакты неполноты хранения данных, или я чего то не понял?
*хотел на гейм деве задать вопрос, всё перечитал, другие примеру посмотрел, ответы почитал, но всё же не понял, примеры подготовил, зарегался, а там дают кулдаун ещё на сутки, решил сперва тут задать вопрос*

mod
Автор

И каким это образом какой-то Сашка, занимается травой в нашем PoE?

cote
join shbcf.ru