Почему ваш персонаж телепортируется при высоком FPS: float precision в играх

Всем привет! Меня зовут Григорий Дядиченко, и я разрабатываю разные проекты на заказ. Сталкивались ли вы с ситуацией, когда персонаж в вашей игре начинает немного дёргаться, если поиграть достаточно долго? Или пуля иногда пролетает сквозь тонкую стену, хотя коллайдер на месте? Если да — добро пожаловать в мир проблем float precision. Сегодня хочется поговорить о том, почему тип float — при всей его повсеместности — может создавать тонкие и неочевидные баги в играх. Разберём, как он устроен, где именно он начинает врать, и что с этим делать. Если вам интересна эта тема — добро пожаловать под кат!

https://habr.com/ru/articles/1020002/

#float #IEEE_754 #floating_point #Unity #precision #gamedev #floating_origin #epsilon

Почему ваш персонаж телепортируется при высоком FPS: float precision в играх

Всем привет! Меня зовут Григорий Дядиченко, и я разрабатываю разные проекты на заказ. Сталкивались ли вы с ситуацией, когда персонаж в вашей игре начинает немного дёргаться, если поиграть достаточно...

Хабр

Проектирование FPU блока, работающего на частоте 7 ГГц

Данный проект представляет собой современный вычислительный блок, предназначенный для обработки научных и графических данных на сверхвысокой частоте 7 ГГц . Архитектура построена на базе 128-битных векторов и 5-стадийного конвейера.

https://habr.com/ru/articles/993270/

#floatingpoint #floating_point

Проектирование FPU блока, работающего на частоте 7 ГГц

1. Введение Данный проект представляет собой ��овременный вычислительный блок, предназначенный для обработки научных и графических данных на сверхвысокой частоте 7 ГГц . Архитектура построена на базе...

Хабр

Ликбез о плавающей точке: сложение, катастрофическое сокращение и бабушка Кэхена

Давайте продолжим обсуждение самой неоптимизированной в мире 32-битной библиотеки для работы с плавающей запятой TinyFloat . Библиотека написана на C++ и намеренно избегает встроенных типов плавающей запятой, полагаясь исключительно на 32-битные целые числа. Цель состоит в том, чтобы сделать код максимально читабельным — без бит-хаков и хитроумных уловок. Кроме того, я хочу иметь подробную документацию о том, что происходит «под капотом». Оказалось, что лучший способ документировать код C++ — это полностью переписать его на Python :) Это третья статья из цикла, первые две читать тут и тут .

https://habr.com/ru/articles/967686/

#float #плавающая_точка #программирование #floating_point #Kahan_summation #catastrophic_cancellation

Ликбез о плавающей точке: сложение, катастрофическое сокращение и бабушка Кэхена

Давайте продолжим обсуждение самой неоптимизированной в мире 32-битной библиотеки для работы с плавающей запятой TinyFloat . Библиотека написана на C++ и намеренно избегает встроенных типов плавающей...

Хабр

Числовой тип данных с плавающей точкой float IEEE 754

Как устроен формат кодирования с плавающей точкой, что он из себя представляют и где может использоваться.

https://habr.com/ru/articles/957822/

#Тип_данных #кодирование #кодирование_аудио #вещественные_числа #float32 #floating_point #floating_point_numbers #float

Числовой тип данных с плавающей точкой float IEEE 754

Данная статья посвящена детальному разбору числового типа данных float. Что такое тип данных в программировании? Тип данных это метод хранения блока битов в определённом порядке и по определённым...

Хабр

Проблема, о которой вы даже не подозревали: print(.1+.2)

Как следует отображать на экране результат деления 3.0 на 10.0 ? Сколько цифр следует вывести, если пользователь не указал точность? Скорее всего, вы даже не знали, что вывод чисел с плавающей запятой — это сложная проблема , настолько сложная, что по ней написаны десятки научных статей, причём последний прорыв был относительно недавно, в 2016 году. На самом деле, это одна из самых сложных частей поддержки чисел с плавающей запятой в среде выполнения языка. Давайте продолжим разговор о самой неоптимизированной в мире библиотеке эмуляции плавающей точки при помощи целочисленной арифметики. Первую статью читать тут .

https://habr.com/ru/articles/948556/

#float #плавающая_точка #числа #программирование #floating_point

Проблема, о которой вы даже не подозревали: print(.1+.2)

Как следует отображать на экране результат деления 3.0 на 10.0 ? Сколько цифр следует вывести, если пользователь не указал точность? Скорее всего, вы даже не знали, что вывод чисел с плавающей запятой...

Хабр

Санпросвет о плавающей точке, статья первая: компьютеры и числа

Недавно мне понадобилось сэмулировать работу с плавающей точкой только при помощи целочисленной арифметики, поскольку флоаты были недоступны. Полез я было в интернет за готовой библиотекой, и чуть не утонул. Мало того, что я не нашёл того, что искал, это бог с ним. Я обнаружил, что в интернете кто-то неправ . :) Оказалось, что форумы кишат людьми, которые не до конца понимают, как компьютеры манипулируют числами. Например, мемасик с КПДВ я стянул с реддита (перечеркнул его я). Кто-то настолько был напуган страшными ошибками округления чисел с плавающей точкой, что даже смешную картинку смастерил. Только вот проблема в том, что 0.5 + 0.5 в точности равно 1.0 . Таким образом, я решил засучить рукава, и изобрести велосипед. То есть, написать самую неоптимизированную C++ библиотеку для эмуляции IEEE754 32-битных чисел с плавающей точкой при помощи исключительно 32-битной целочисленной арифметики. Библиотека уложится в несколько сотен строк кода, и в ней не будет никакого битхакинга. Задача написать понятный код, а не быстрый. А заодно хорошенько его документировать серией статей. Итак, этим полукреслом мастер Гамбс начинает новую партию мебели, или статья первая: поговорим о числах и компьютерах.

https://habr.com/ru/articles/947886/

#float #плавающая_точка #числа #программирование #floating_point

Санпросвет о плавающей точке, статья первая: компьютеры и числа

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

Хабр

[Перевод] Ни одна реализация элементарных функций не соответствует стандарту IEEE 754

Введённый в 1985 году стандарт IEEE-754 для чисел с плавающей запятой был предназначен для решения проблемы разнородности реализаций чисел с плавающей запятой, мешавших портируемости кода, а также для повышения стабильности между платформами. Он получил широкое применение и многократно пересматривался в течение прошедших лет. Если вы когда-нибудь работали с любыми вещественными числами в своих приложениях, то они, вероятно, отвечали этому стандарту. Моя работа в течение последнего года заключалась в анализе погрешности различных математических функций, накопления этой погрешности и способов её уменьшения при помощи различных программных паттернов. Одной из исследованных мной тем были базовые математические функции, используемые в функциях активации нейронных сетей, а также способы их аппроксимации для повышения производительности . В процессе работы нам пришлось столкнуться с противодействием со стороны людей, активно стремящихся к корректной реализации математических функций и к соответствию их стандартам, в частности, к соблюдению обеспечения корректности одной наименее значимой единицы измерения (unit in last place, ULP) для элементарных функций. Я был заинтересован в дальнейшей работе по аппроксимации этих функций, поэтому приступил к исследованию того, каким образом они гарантируют корректность, и если они корректны только на 1 ULP, то где располагаются ошибки в области определения функции. В процессе изучения я обнаружил, что ни одна из популярных математических библиотек, используемых во множестве сфер вычислений, на самом деле не выполняет корректное округление в соответствии с требованиями любой версии IEEE 754 после первой редакции 1985 года.

https://habr.com/ru/companies/ruvds/articles/881698/

#числа_с_плавающей_запятой #floating_point #ieee_754 #плавающая_запятая #плавающая_точка #погрешности_округления #fpu #ruvds_статьи

Ни одна реализация элементарных функций не соответствует стандарту IEEE 754

Введённый в 1985 году стандарт IEEE-754 для чисел с плавающей запятой был предназначен для решения проблемы разнородности реализаций чисел с плавающей запятой, мешавших портируемости кода, а также для...

Хабр

Точность позиционирования объектов в играх: возможные ошибки

- Чем чревато брать float или double в качестве типа данных для хранения позиций объектов? - Как это может повлиять на наличие багов в игре и ошибки синхронизации сетевой игры или реплеев? Об этом вы узнаете в этом гайде с наглядными гифками и пруфом на C++

https://habr.com/ru/articles/876816/

#float #floating_point #precision #точность_вычислений #gamedev #разработка_игр #c++ #компилятор_оптимизация #движки #игровой_движок

Точность позиционирования объектов в играх: возможные ошибки

Если вы возьмёте тип float/double для хранения координат объектов, то получите плавные движения по экрану за счёт сохранения дробной части - игровые сущности смогут передвигаться по субпикселям, но...

Хабр

FP32, FP16, BF16 и FP8 — разбираемся в основных типах чисел с плавающей запятой

Привет, Хабр! Сегодня давайте поговорим о том, как современные вычисления на GPU стали более гибкими и эффективными благодаря различным форматам чисел с плавающей запятой ( FP64 , FP32 , FP16 , BFLOAT16 и FP8 ). Эти форматы не просто числа — за каждым из них стоит конкретная область применения. В разных ситуациях мы сталкиваемся с задачами, где важны либо скорость, либо точность, и правильно выбранный тип floating point помогает оптимизировать ресурсы. Давайте разберём всё это на примерах и поймём, в каких задачах каждый из этих форматов будет наиболее полезен.

https://habr.com/ru/companies/serverflow/articles/847068/

#FP16 #fp32 #FP64 #BF16 #floating_point #плавающая_запятая #fp8 #числа_с_плавающей_запятой #формат_с_плавающей_запятой

FP32, FP16, BF16 и FP8 — разбираемся в основных типах чисел с плавающей запятой

Привет, Хабр! Сегодня давайте поговорим о том, как современные вычисления на GPU стали более гибкими и эффективными благодаря различным форматам чисел с плавающей запятой ( FP64 , FP32 , FP16 ,...

Хабр

Малые числа, большие возможности: как плавающая запятая ускоряет ИИ и технологии

Привет, Хабр! С вами снова ServerFlow, и сегодня мы решили погрузиться в увлекательный мир чисел с плавающей запятой . Вы когда-нибудь задумывались, почему существуют разные виды этих чисел и как они влияют на производительность наших процессоров и видеокарт? Как малые числа с плавающей запятой помогают развивать нейросети и искусственный интеллект? Давайте вместе разберемся в этих вопросах, раскроем тайны стандарта IEEE 754 и узнаем, какое значение имеют большие и маленькие числа с плавающей запятой в современных вычислениях.

https://habr.com/ru/companies/serverflow/articles/846732/

#плавающая_запятая #fp32 #fp16 #INT8 #квантизация #Тензорные_ядра #fpu #floatingpoint #floating_point #ieee_754

Малые числа, большие возможности: как плавающая запятая ускоряет ИИ и технологии

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

Хабр