
Хочется хранить цвета в вершинах как byte4, но значения у них могут быть сильно выше единицы. Следовательно, нужно как-то нормализовать. Можно просто поделить на условную максимальную яркость и затем умножить в шейдере. А можно использовать более хитрую кодировку в rgbm. Преимущество rgbm в том, что чем меньше значения цвета, тем меньше разница между оригиналом и декодированным значением, ошибка растет пропорционально яркости.

В этом занимательном видео начиная с 19:45 разработчик из Близзард рассказывает о способе рисовать эффекты так, чтобы они хорошо выглядели и в темном и в светлом окружении, не уходя слишком в белый, но и не теряя свечения. Этот способ они называют BlendAdd.

В этом посте речь пойдет о способе покрыть случайными равномерно-распределенными точками только видимые поверхности сцены, исключая поверхности внутри пересечений мешей.

Задача: сгенерировать N равномерно распределенных точек по поверхности произвольного триангулированного меша.
Для трансформации нормалей на объекте с отрицательным скейлом метод Unity transform.TransformDirection() дает некорректный результат. Вместо него нужно использовать более дорогой, но правильный код