Add hfrag, clean up some background renderer stuff (#3509)

This adds hfrag, but with a few remaining issues:
- The textures aren't animated. Instead, it just uses one texture.
- The texture filtering isn't as good as at it could be.

I also cleaned up a few issues with the background renderers:
- Cleaned up some stuff that is common to hfrag, tie, tfrag, shrub
- Moved time-of-day color packing stuff to FR3 creation, rather than at
level load. This appears to reduce the frame time spikes when a level is
first drawn by about 5 or 6 ms in big levels.
- Cleaned up the x86 specific stuff used in time of day. Now there's
only one place where we have an `ifdef`, rather than spreading it all
over the rendering code.
This commit is contained in:
water111
2024-05-09 20:11:43 -04:00
committed by GitHub
parent 949508d0ed
commit 5b04be2fa0
80 changed files with 13081 additions and 977 deletions
+4 -1
View File
@@ -1233,7 +1233,10 @@ goos::Object decompile_structure(const TypeSpec& type,
auto len = field.array_size();
auto stride = ts.get_size_in_type(field) / len;
ASSERT(stride == field_type_info->get_size_in_memory());
if (field.type() == TypeSpec("int128") || field.type() == TypeSpec("uint128")) {
lg::die("Trying to decompile field {} of {} as an array of type {} not supported",
field.name(), type_info->get_name(), field.type().print());
}
field_defs_out.emplace_back(
field.name(), decompile_value_array(field.type(), field_type_info, len, stride,
field_start, obj_words, ts));