private int MaxSamplers(RegisterSet set) { int maxSampler = 0; for (int i = 0; i < set.RegisterCount; i++) { Register reg = set.GetRegister(i); if (reg.Category == RegisterCategory.Sampler) maxSampler = Math.Max(reg.Index, maxSampler); } return maxSampler; }
private static string BuildMapping(AsmTechnique asmTechnique, string extension, RegisterSet set) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < set.RegisterCount; i++) { Register reg = set.GetRegister(i); string type = reg.Type; string source = "_" + extension + "_"; switch (reg.Category) { case RegisterCategory.Boolean: source += "b"; break; case RegisterCategory.Float4: source += "c"; switch (reg.Rank) { case RegisterRank.FloatNx2: case RegisterRank.IntNx2: type = "float4x2"; break; case RegisterRank.FloatNx3: case RegisterRank.IntNx3: type = "float4x3"; break; case RegisterRank.FloatNx4: case RegisterRank.IntNx4: type = "float4x4"; break; } break; default: continue; } sb.Append("#define "); sb.Append(TranslateRegisterName(reg.Name, extension)); string index = ""; if (reg.ArraySize > 0) { index = "(__INDEX__)"; sb.Append(index); } sb.Append(" ("); MapToValue(sb, reg, reg.Index, source, index); sb.AppendLine(")"); } return sb.ToString(); }