(ubyte は unsigned char です)
たとえば、カラー クラスで RGB 値に float 値を使用するポイントは何ですか? より正確になりますか?宇宙はどうですか?float と ubyte を使用することのパフォーマンス上の利点/障害は何ですか?
プロ:
短所:
おそらく、それはより高い精度を提供します。他の回答で述べたように、前後に変換する必要がないという利点もあります。これにより、中間結果が失われる結果が生じます。浮動小数点で 1.0 (バイトで 255) のピクセルがあるとします。 0.65 を掛けます。それを整数に戻すと、166.75 になりますが、切り捨てて 166 にします。つまり、0.75 を失います。さらに計算を行うと、エラーが大きくなる可能性があります...そしてもちろん、中間ステップで値が 255 (1.0) を超えたり、0 (0.0) を下回ったりする場合、新しい値を保持することは完全に可能です。必要に応じて後で「修正」します。
もちろん、(一般に) より少ないスペースに多くのデータを格納することはできないため、典型的な float は 1 バイトの 4 倍の大きさになります。一部の GPU には、11 ビットの仮数部と 4 ~ 5 ビットの指数部を保持する 16 ビット浮動小数点数があり、ほとんどの種類の単純なピクセル演算に適しています。しかし、それでもサイズは 2 倍ですが、「精度」は 2 倍ではありません (私の同僚は、16 ビット浮動小数点数を使用して 32 ビット浮動小数点数の結果と一致するアルゴリズムを取得しようと多くの時間を費やしましたが、まったく到達しませんでした)。 .