Why would that happen? Look at this example from the Super Mario 3D World + Captain Toad: Treasure Tracker 4k pack.
Code:
[TextureRedefine] # tv
width = 1280
height = 720
formatsExcluded = 0x008,0x41A,0x034,0x035 # exclude obvious textures
overwriteWidth = 3840 #3x original
overwriteHeight = 2160 #3x original
So pretty obvious here. 720p to 2160p is a 9x difference cause by rendering 3 times as many pixels in both width and height.
Code:
[TextureRedefine] # half-res alpha
width = 640
height = 360
formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = 1920 #3x original
overwriteHeight = 1080 #3x original
Here we have exactly what you talked about. If we divide 1920 by 640 we get 3 again, that's because this pack is just scaling things so that they're the same ratio to everything they were before and that can be observed in the whole pack.
Code:
[Definition]
titleIds = 0005000010145d00,0005000010145c00,0005000010106100,0005000010180600,0005000010180700,0005000010180500
name = "Super Mario 3D World + Captain Toad: Treasure Tracker - 2160p (4K)"
[TextureRedefine] # tv
width = 1280
height = 720
formatsExcluded = 0x008,0x41A,0x034,0x035 # exclude obvious textures
overwriteWidth = 3840 #3x original
overwriteHeight = 2160 #3x original
[TextureRedefine] # zoomed in
width = 1128
height = 720
overwriteWidth = 3384 #3x original
overwriteHeight = 2160 #3x original
[TextureRedefine] # zoom transition
width = 1000
height = 600
overwriteWidth = 3000 #3x original
overwriteHeight = 1800 #3x original
[TextureRedefine] # zoom transition 2
width = 1000
height = 720
overwriteWidth = 3000 #3x original
overwriteHeight = 2160 #3x original
[TextureRedefine] # half-res alpha
width = 640
height = 360
formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = 1920 #3x original
overwriteHeight = 1080 #3x original
[TextureRedefine] # half-res (zoomed in)
width = 564
height = 360
overwriteWidth = 1692 #3x original
overwriteHeight = 1080 #3x original
[TextureRedefine] # half-res (zoom transition)
width = 500
height = 300
overwriteWidth = 1500 #3x original
overwriteHeight = 900 #3x original
[TextureRedefine] # half-res (zoom transition 2)
width = 500
height = 360
overwriteWidth = 1500 #3x original
overwriteHeight = 1080 #3x original
[TextureRedefine] # quarter-res alpha
width = 320
height = 180
formatsExcluded = 0x41A # exclude obvious textures
overwriteWidth = 960 #3x original
overwriteHeight = 540 #3x original
[TextureRedefine] # q-res (zoomed in)
width = 282
height = 180
overwriteWidth = 846 #3x original
overwriteHeight = 540 #3x original
[TextureRedefine] # q-res (zoom transition)
width = 250
height = 150
overwriteWidth = 750 #3x original
overwriteHeight = 450 #3x original
[TextureRedefine] # q-res (zoom transition 2)
width = 250
height = 180
overwriteWidth = 750 #3x original
overwriteHeight = 540 #3x original
By having a scaleBy attribute, it can look like this
Code:
[Definition]
titleIds = 0005000010145d00,0005000010145c00,0005000010106100,0005000010180600,0005000010180700,0005000010180500
name = "Super Mario 3D World + Captain Toad: Treasure Tracker - 2160p (4K)"
[TextureRedefine] # tv
width = 1280
height = 720
formatsExcluded = 0x008,0x41A,0x034,0x035 # exclude obvious textures
scaleBy = 3
[TextureRedefine] # zoomed in
width = 1128
height = 720
scaleBy = 3
[TextureRedefine] # zoom transition
width = 1000
height = 600
scaleBy = 3
[TextureRedefine] # zoom transition 2
width = 1000
height = 720
scaleBy = 3
[TextureRedefine] # half-res alpha
width = 640
height = 360
formatsExcluded = 0x41A # exclude obvious textures
scaleBy = 3
[TextureRedefine] # half-res (zoomed in)
width = 564
height = 360
scaleBy = 3
[TextureRedefine] # half-res (zoom transition)
width = 500
height = 300
scaleBy = 3
[TextureRedefine] # half-res (zoom transition 2)
width = 500
height = 360
scaleBy = 3
[TextureRedefine] # quarter-res alpha
width = 320
height = 180
formatsExcluded = 0x41A # exclude obvious textures
scaleBy = 3
[TextureRedefine] # q-res (zoomed in)
width = 282
height = 180
scaleBy = 3
[TextureRedefine] # q-res (zoom transition)
width = 250
height = 150
scaleBy = 3
[TextureRedefine] # q-res (zoom transition 2)
width = 250
height = 180
scaleBy = 3
This is also a little less prone to user error because somebody can't accidentally have the redefined resolution change it's aspect ratio.
Of course, if the scaling was done in the UI it would get rid of more of that code as well as the redundant packs for different resolutions. But for the examples sake, lets act like a global scaling could be set in graphics pack. It might look like this.
Code:
[Definition]
titleIds = 0005000010145d00,0005000010145c00,0005000010106100,0005000010180600,0005000010180700,0005000010180500
name = "Super Mario 3D World + Captain Toad: Treasure Tracker - 2160p (4K)"
[Global] [TexureRedefine]
scaleBy = 3
[TextureRedefine] # tv
width = 1280
height = 720
formatsExcluded = 0x008,0x41A,0x034,0x035 # exclude obvious textures
[TextureRedefine] # half-res alpha
width = 640
height = 360
formatsExcluded = 0x41A # exclude obvious textures
[TextureRedefine] # quarter-res alpha
width = 320
height = 180
formatsExcluded = 0x41A # exclude obvious textures
Or maybe even this assuming the comment for formatsExcluded is accurately stating what's happening there.
Code:
[Definition]
titleIds = 0005000010145d00,0005000010145c00,0005000010106100,0005000010180600,0005000010180700,0005000010180500
name = "Super Mario 3D World + Captain Toad: Treasure Tracker - 2160p (4K)"
[Global] [TexureRedefine]
scaleBy = 3
formatsExcluded = 0x008,0x41A,0x034,0x035 # exclude obvious textures
Why would anything be fed the post-scaled resolution? If that was a thing that would happen, it would happen with the current method as well. Also, aren't these all only targeting uncompressed texture formats AKA render targets?
If what I suggested works than it would be of benefit to the community as it would require a little less work on their part and make the UI a little more straight forward. For example, what happens right now when you have a 1080p and 2160p texture checked on at the same time for the same game? If the texture packs didn't have to have things statically defined, there would only have to be one for that game.
If internal resolution isn't being changed yet then why are the 360p pack called "Performance packs". If the internal resolution is the same than the same amount of shader processing is happening with the 360p pack as having no pack in all. In fact it would be slightly worse because you're forcing it to rescale things.
I assumed all these rules were made to catch calls to render to textures of certain resolutions and changing those functions input resolution.
If it was just texture filtering than shouldn't it get pretty comparable results just scaling the finalized image. Why put all the effort of targeting specific render textures just to scale the same? Also, Xenoblade Chronicle's X's grass would look like ass if it was just upscaling stuff. And if upscaling really had results that looked this clean without increasing internal resolution, you would see video game developers using this all the time.