tr_shader: do not detect heightmap in normalmap alpha channel, unless asked to, fix #375 #379
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With this PR,
normalMap
material keyword loads a file and assume it's a normal map without height map in alpha channel (even if the engine believes there is an alpha channel because of a format being wrongly guessed on missing GL extension, see Bad normal map channel detection, seems to be related to missing ARB_texture_compression_rgtc #375).normalHeightMap
material keyword loads a file it's a normal map with an height map in alpha channel.This code also introduces an internal
ParseNormalMapDetectHeightMap
function that attempts to detect an alpha channel and declare it's an heightmap. There is no material keyword for that and it must not be implemented as a keyword.This internal function is only purposed to be used by compatibility code like the Darkplaces compatibility mode. Darkplaces-based games being known to not use formats that would break on detection, it's seems to be safe to use this detection function for their assets.