Initial fixes and tested on D3D11, D3D12 and Vulkan
Changed 'n' to FShaderCodeName::Key
Also added checks if trying to add optional shader data out of order
#rb Jonas.Meyer, Kenzo.Terelst, Mihnea.Balta
[CL 14816162 by Rolando Caloca in ue5-main branch]
Arrays don't have matrix_columns set to 1.
#jira none
#rb none
#rnx
#lockdown Christina.Riveron
#ROBOMERGE-SOURCE: CL 12997560 in //UE4/Release-4.25/... via CL 12997564 via CL 12997575
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12997577 by mihnea balta in Main branch]
The code was assuming that each attribute occupies a single vector, so we got compiler errors if a shader used a matrix attribute.
#jira UE-91836
#rnx
#lockdown Christina.Riveron
#rb Rolando.Caloca
#ROBOMERGE-SOURCE: CL 12982657 in //UE4/Release-4.25/... via CL 12982668 via CL 12982691
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)
[CL 12982704 by mihnea balta in Main branch]
Disabled by default, set r.Mobile.VirtualTextures=1 to enable
known issues: RVT compression is not implementted, Android OpenGL will have R and G channels swapped for uncompressed streaming VT, no sRGB support
#jira UE-79955
#rb jeremy.moore
#ROBOMERGE-SOURCE: CL 11070636 via CL 11070637
#ROBOMERGE-BOT: (v637-11041722)
[CL 11070638 by dmitriy dyomin in Main branch]
#rnx
#rb none
#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870584 by ryan durand in Main branch]
#rb steve.smith
#jira none
#ROBOMERGE-SOURCE: CL 9902569 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v558-9892490)
[CL 9902576 by steve smith in Main branch]
Replicated from CL# 7924370.
#rb none
#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 9279060 via CL 9279063
#ROBOMERGE-BOT: (v443-9013191)
[CL 9279836 by steve robb in Main branch]