Ефектът е изключително fake, но изглежда добре отдалече.
Демото можеш да си изтеглиш от тук, а след разархивирането пусни "launcher" и от него цъкни на tab-а "Advanced settings". Там накликай "Free look" и "Custom scene", като за сцена ползвай "data/oldbench.fsv". После със стрелките иди до светкавиците и ще видиш как изглеждат отблизо.
Вероятно и ще видиш как са направени :) Всяка светкавица представлява една равнинка, ориентирана така, че да гледа винаги към камерата (т.е. е 2D sprite). Шейдърът на тази равнинка всъщност прави илюзията за светкавица. Ако си представиш недвижещата се светкавица в даден момент, тя всъщност е една начупена линия в 2D. Тази начупена линия се генерира с perlin noise. Работата на шейдъра е да определи на какво разстояние са шейдваните (u, v) до най-близката точка на светкавицата/начупената линия. На базата на това разстояние се преценя дали всъщност не трябва равнинката в тази точка да е прозрачна, или ако не - какъв да е цветът, който е някакъв градиент синьо-бяло, в зависимост от разстоянието.
Кодът на цялото това нещо е наличен, в практически недокументирано състояние, в този проект, по-конкретно в thorus.cpp/h.
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 листа с различни задачки.