Pull to refresh

Comments 12

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

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

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

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

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

Равномерное распределение по сфере можно получить (сложно но можно) если взять интеграл от синуса. Это позволит представить положение на поверхности сферы одним числом. То есть выстраиваем все параллели с их разными длинами в одну прямую.
UFO just landed and posted this here
Впечатляет! Как же теперь быть школьнику, который не хочет математику, а хочет быть программистом и программировать игры? Возможно, аргумент, «я не хочу геометрию, я хочу топологию» не проканает.
Варианты:
1. Писать менее оптимизированные игры и требовать RTX2080 для своего тетриса
2. Писать только игровую логику, а всё низкоуровневое, типа передачи массивов в GPU, оставить готовому движку.
школьнику, который не хочет математику

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

Взять готовый движок. Писать движок самому это вообще неблагодарная затея, потому что это отнимает большую часть времени, и на написание самой игры его уже не остается. Причем изменения уровня навыков в любую сторону никак особо этого не исправляет.
UFO just landed and posted this here
Sign up to leave a comment.

Articles