Проблема точности с плавающей точкой в ​​языке затенения металла - PullRequest
0 голосов
/ 10 ноября 2018

Я передаю параметр float со значением 0.00291545 для фрагментированного шейдера. Но функция фрагмента получила н / д. код swift фрагментный шейдер

В представлении «Связанные ресурсы» отладчика Xcode это значение равно 0,003. Связанные ресурсы

В представлении отладчика шейдеров Xcode я сделал несколько тестов. Это показывает, что 0,0004 будет приведено к 0, а 0,0005 будет приведено к 0,001. Значение с плавающей точкой ведет себя как половинное значение. тестовый код в шейдерном отладчике

Итак, мой вопрос:

  1. Почему 0,00291545 сначала приводится к 0,003, а затем - к 0?

  2. Почему значение с плавающей точкой имеет одинаковую точность с половиной?

  3. Как можно использовать значение с плавающей запятой с нормальной точностью?

1 Ответ

0 голосов
/ 11 ноября 2018

Я нашел, в чем проблема!

Xcode debugger ввел меня в заблуждение.

0,00291545 не было приведено к 0,003 и не приведено к n / a. «Отладчик» отображает неточно, но на самом деле это точное значение.

Спасибо за Кена Томаса

...