Рендене на Светкавици

Към последните лекции 13та или 14та си спомням, че ни беше демонстрирано едно демо, което имаше една пирамида и от нея излизаха светкавици.

Интересно ми е как се симулира този ефект и какви техники се ползват ?

Comments

le thorus

Ефектът е изключително fake, но изглежда добре отдалече.

Демото можеш да си изтеглиш от тук, а след разархивирането пусни "launcher" и от него цъкни на tab-а "Advanced settings". Там накликай "Free look" и "Custom scene", като за сцена ползвай "data/oldbench.fsv". После със стрелките иди до светкавиците и ще видиш как изглеждат отблизо.

Вероятно и ще видиш как са направени :) Всяка светкавица представлява една равнинка, ориентирана така, че да гледа винаги към камерата (т.е. е 2D sprite). Шейдърът на тази равнинка всъщност прави илюзията за светкавица. Ако си представиш недвижещата се светкавица в даден момент, тя всъщност е една начупена линия в 2D. Тази начупена линия се генерира с perlin noise. Работата на шейдъра е да определи на какво разстояние са шейдваните (u, v) до най-близката точка на светкавицата/начупената линия. На базата на това разстояние се преценя дали всъщност не трябва равнинката в тази точка да е прозрачна, или ако не - какъв да е цветът, който е някакъв градиент синьо-бяло, в зависимост от разстоянието.

Кодът на цялото това нещо е наличен, в практически недокументирано състояние, в този проект, по-конкретно в thorus.cpp/h.

Хев фън!

Тенкс! Доста як проект! Ще

Тенкс! Доста як проект! Ще разгледам кода и със сигурност ще си запълня TODO листа с различни задачки.