* Move replacement textures from ship to modelinstance
* Actually set pmi
* Fix texture replace in fred as well
* Fix bad indent
* incorporate feedback
* Add control_info driver sources
* Properly deal with cockpits and their 'objnum's
* Add driven animation sets to weapons and cockpits
* enumify objnums
This advances the versions for Clang to 16 and GCC to 13 along with
fixing any warnings these new versions are detecting now.
The new image versions also include Vulkan so the additional workflow
step for installing that is not necessary anymore.
* Make sure we handle unknown location types
Avoids edge-case gargabe pointer 1522974
* Make sure local vectors are at least set to zero
For coverity 1522985
* Make sure from_table is initialized
When creating a replacement texture object, for coverity 1522989
* Change to Unreachable to help Linters
This was a false positive uninitialized scalar, Coverity 1523726. Hopefully, changing to UNREACHABLE() will help linters avoid this false positive in the future.
* Initialize xyw on this struct instantiation
For coverity 1523730
* Add early return for ade_set_args if error
For coverity 1523732
PR adds extra validity check within `model_render_glowpoints` function. Other places in code that use `bank->submodel_parent` check for validity before looking up `pmi->submodel`, but this check was missing from this section (which caused a CTD in a mission restart due to `bank->submodel_parent` being -1).
See title. There were some cascade effects, but the changes are mostly contained to the model code. The calls to `gr_render_model` and `g3_render_primitives` use `const_cast` because constifying that API would require a whole other PR.
* Mod Table Settings for Arc Widths
There is currently a way to set the color of EMP and Damage Arcs in game_settings.tbl, but no way to change the width.
This PR adds options useful to modders to set the width and how it is calculated. Looking over the code and asking around, I developed these exposed options.
The options also allow modders to control the arc widths in multiple ways. For example, if you want to set a constant width for all ships you would set the `+Do Not Use Width Multiplier Over Radius:` to something huge, and if you wanted no arcs ever you would set the `+Width Default:` to 0.
They are tested and work as expected.
* clang
* fix copy paste error from #2053
* tab cleanup
* whitespace cleanup 2
* same for type ship and damage
For all POFs that use animated textures, if no starting timestamp is specified, assume animation started at the beginning of the mission. This fixes a bug reported in Starfox: Event Horizon where weapon POF animated textures stopped animating after the texture timestamp upgrade.
* Ripping out the gloss override code because it's vestigial
* Remove redundant teammask declaration.
* The NORMAL_ALPHA shader feature appears both useless and unusable.
Consequently, I'm removing it.
* Applying directional brightness profile value, disconnected spec flags and made specular light always equal to diffuse light
* Switched over to new command line arguments
* Wire lab up to new lighting controls, and provide backwards-compatible defaults for emissive.
* cleanup unused new function
* make static some functions that can be static
* revise command-line and emissive handling
* handled specular sun depreciation and general removal of specular value handling
* Removed specular light color as a separate value in the uniform buffers.
* cleanup of leftover/post-rebase specular references
* further post-rebase repair of light flags command line and leftover specular
* move techroom/selection/breifing 'room' lights to a common function and
augment lighting setup for current rendering
* fixed some mishandling of lighting modifiers.
* Addressed code clarity and comments from review
In #4443, `fl_near_zero` was set to use default epsilon values in the `IS_VEC_NULL` check. In this comparison, epsilon is the wrong threshold because it used to have a much smaller threshold. The fix restores the previous definitions of `IS_VEC_NULL` and `IS_VEC_NULL_SQ_SAFE` by exposing the epsilon value as an optional parameter (similar to how `IS_NEAR_ZERO` used to work. This PR also restores `IS_VEC_NULL_SQ_SAFE` where it was replaced by `IS_VEC_NULL.`
* more cleanup in preparation for model translation
1) Clean up stepped rotation, fixing some logic, adding safeguards for invalid values, and allowing rotations to go in the opposite direction
2) Add more specific SEXP error checking for AWACS and rotating subsystems
3) Assorted refactoring and polishing
* address feedback, plus a bit of extra cleanup
Removed useless light_ignore_objnum and affected_objnum lighting data, light_add_point_unique() subsequently removed as well, and cleaned up unused parameters.