Merge pull request #97716 from pafuent/add_half_precision_floating_point_to_stream_peer

Add half precision floating point support to `StreamPeer` and `FileAccess`
This commit is contained in:
Thaddeus Crews
2024-11-22 14:54:19 -06:00
15 changed files with 218 additions and 2 deletions

View File

@ -268,6 +268,10 @@ uint64_t FileAccess::get_64() const {
return data;
}
float FileAccess::get_half() const {
return Math::half_to_float(get_16());
}
float FileAccess::get_float() const {
MarshallFloat m;
m.i = get_32();
@ -527,6 +531,10 @@ void FileAccess::store_real(real_t p_real) {
}
}
void FileAccess::store_half(float p_dest) {
store_16(Math::make_half_float(p_dest));
}
void FileAccess::store_float(float p_dest) {
MarshallFloat m;
m.f = p_dest;
@ -833,6 +841,7 @@ void FileAccess::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_16"), &FileAccess::get_16);
ClassDB::bind_method(D_METHOD("get_32"), &FileAccess::get_32);
ClassDB::bind_method(D_METHOD("get_64"), &FileAccess::get_64);
ClassDB::bind_method(D_METHOD("get_half"), &FileAccess::get_half);
ClassDB::bind_method(D_METHOD("get_float"), &FileAccess::get_float);
ClassDB::bind_method(D_METHOD("get_double"), &FileAccess::get_double);
ClassDB::bind_method(D_METHOD("get_real"), &FileAccess::get_real);
@ -851,6 +860,7 @@ void FileAccess::_bind_methods() {
ClassDB::bind_method(D_METHOD("store_16", "value"), &FileAccess::store_16);
ClassDB::bind_method(D_METHOD("store_32", "value"), &FileAccess::store_32);
ClassDB::bind_method(D_METHOD("store_64", "value"), &FileAccess::store_64);
ClassDB::bind_method(D_METHOD("store_half", "value"), &FileAccess::store_half);
ClassDB::bind_method(D_METHOD("store_float", "value"), &FileAccess::store_float);
ClassDB::bind_method(D_METHOD("store_double", "value"), &FileAccess::store_double);
ClassDB::bind_method(D_METHOD("store_real", "value"), &FileAccess::store_real);