Клиентская оптимизация
Работа с 3D-графикой
Разработка игр
Математика
Комментарии 12
0

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

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

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

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

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

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

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


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

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

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

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

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

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


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


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


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

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

Только полноправные пользователи могут оставлять комментарии.  , пожалуйста.