Comments 12

Так и не понял, а какое сжатие то получается в итоге?
Предположим, что в сыром виде вектор занимает float3, это 12 байт если не считать выравнивание. В варианте с двумя углами — float2, то-есть 8 байт. В вашем случае 2 числа, но для каждого надо передать реальную и мнимую часть, то-есть по сути float2x2, то-есть 16 байт, или я ошибаюсь?

В вашем случае 2 числа, но для каждого надо передать реальную и мнимую часть
Нет, в предлагаемом сжатии это всего два вещественных числа, которые рассматриваются как одно комплексное число.

Осознал, просчитался. Тогда сжатие с коэффицентом 2:3, как и у двух градусов, но получается меньше "тяжёлых" операций для упаковки/распаковки. Хорошо бы побенчмаркать эту историю… Причём упаковку и распаковку отдельно, и желательно как на CPU, так и на GPU.

Тут не только о том, что три числа в два сжимаются. Тут ещё о том, что в предлагаемом варианте не зависимо от того, где расположена точка на единичной сфере, сжатие будет одинаково хорошим/плохим (до точности представления float). В варианте с углами, одни точки будут закодированы более точно, чем другие. Об этом автор говорит тут:
Если сгенерировать случайные сферические координаты и преобразовать их обратно в 3D-точки, они образуют скопления вокруг полюсов и будут довольно разреженными возле экватора. Это является следствием того, что 3D-векторы рядом с экватором будут менее точно различимы.

К сожалению, в варианте автора погрешность у экватора и полюсов тоже немного различается.

Равномерное распределение по сфере можно получить (сложно но можно) если взять интеграл от синуса. Это позволит представить положение на поверхности сферы одним числом. То есть выстраиваем все параллели с их разными длинами в одну прямую.
Равномерное распределение по сфере можно получить (сложно но можно)

если ты об этом https://www.shadertoy.com/view/wdBXRt
или в 3d на сфере точки https://www.vertexshaderart.com/art/jETzmmycobJrRvXH9
ничего сложного


интеграл от синуса

лучше забудь эти слова, математическая чушь из совецких времен которая описывалась сотнями предложений занимает пару строк кода, и в коде выглядит в тыщу раз понятнее чем та чушь из книг

Впечатляет! Как же теперь быть школьнику, который не хочет математику, а хочет быть программистом и программировать игры? Возможно, аргумент, «я не хочу геометрию, я хочу топологию» не проканает.
Варианты:
1. Писать менее оптимизированные игры и требовать RTX2080 для своего тетриса
2. Писать только игровую логику, а всё низкоуровневое, типа передачи массивов в GPU, оставить готовому движку.
школьнику, который не хочет математику

Выбрать профессию по силам. Впрочем, такие постепенно кончаются.

Взять готовый движок. Писать движок самому это вообще неблагодарная затея, потому что это отнимает большую часть времени, и на написание самой игры его уже не остается. Причем изменения уровня навыков в любую сторону никак особо этого не исправляет.

поставил плюс, но статья вода ради воды…


сферы и прочие простые фигуры, и их сочетания, например для частиц строят прямо на видеокарте, http://iquilezles.org/www/articles/distfunctions/distfunctions.htm (в случае частиц, видеокарта нагружается отрисовкой частиц больше чем расчетом vertex-шейдера с таким кодом, пруф http://vertexshaderart.com/ )


математические понятия, распределения частиц, их сжатие(в бинарном виде) все это очень ситуативно и черезчур сложное описание простых вещей в статье может ввести в заблуждение… все это делается практически в каждом шейдере практически любой игры...


одна операция acos и одна atan2, которые являются довольно затратными обратными тригонометрическими функциями

тригонометрические операции, на видеокартах Нвидиа, начиная с серии 8xxx (2006 год) стоят столькоже сколько операция сложения (есть пруф(на японском, если кому надо скину ссылку))

Only those users with full accounts are able to leave comments. Log in, please.