https://github.com/StarCitizenToolBox/app/issues/1 性能优化,新增q_ShaderPostProcess sys_maxFps,支持自定义配置

This commit is contained in:
xkeyC 2024-01-29 21:52:33 +08:00
parent a442823bfe
commit 9ddce61b49
3 changed files with 64 additions and 1 deletions

View File

@ -139,6 +139,16 @@
"value": 2, "value": 2,
"group": "图形(修改后建议清理着色器)" "group": "图形(修改后建议清理着色器)"
}, },
{
"key": "q_ShaderPostProcess",
"name": "着色器质量",
"info": "",
"type": "int",
"max": 3,
"min": 0,
"value": 3,
"group": "图形(修改后建议清理着色器)"
},
{ {
"key": "q_ShaderFX", "key": "q_ShaderFX",
"name": "FX 质量", "name": "FX 质量",
@ -239,6 +249,16 @@
"value": 1, "value": 1,
"group": "设置" "group": "设置"
}, },
{
"key": "sys_maxFps",
"name": "最大帧率",
"info": "调整游戏最高帧率0为不限制",
"type": "int",
"max": 300,
"min": 0,
"value": 0,
"group": "设置"
},
{ {
"key": "r_DisplaySessionInfo", "key": "r_DisplaySessionInfo",
"name": "显示会话信息", "name": "显示会话信息",
@ -288,5 +308,15 @@
"min": 0, "min": 0,
"value": 1, "value": 1,
"group": "设置" "group": "设置"
},
{
"key": "customize",
"name": "自定义参数",
"info": "",
"type": "customize",
"max": 1,
"min": 0,
"value": 1,
"group": "自定义"
} }
] ]

View File

@ -161,6 +161,7 @@ class PerformanceUI extends BaseUI<PerformanceUIModel> {
} }
Widget makeItem(GamePerformanceData item) { Widget makeItem(GamePerformanceData item) {
final model = ref.watch(provider);
return Padding( return Padding(
padding: const EdgeInsets.only(top: 8, bottom: 8), padding: const EdgeInsets.only(top: 8, bottom: 8),
child: Column( child: Column(
@ -225,6 +226,13 @@ class PerformanceUI extends BaseUI<PerformanceUIModel> {
}, },
) )
], ],
)
else if (item.type == "customize")
TextFormBox(
maxLines: 10,
placeholder:
"您可以在这里输入未收录进盒子的自定义参数。配置示例:\n\nr_displayinfo=0\nr_VSync=0",
controller: model.customizeCtrl,
), ),
if (item.info != null && item.info!.isNotEmpty) ...[ if (item.info != null && item.info!.isNotEmpty) ...[
const SizedBox(height: 12), const SizedBox(height: 12),

View File

@ -13,8 +13,12 @@ class PerformanceUIModel extends BaseUIModel {
PerformanceUIModel(this.scPath); PerformanceUIModel(this.scPath);
TextEditingController customizeCtrl = TextEditingController();
Map<String?, List<GamePerformanceData>>? performanceMap; Map<String?, List<GamePerformanceData>>? performanceMap;
List<String> inAppKeys = [];
String workingString = ""; String workingString = "";
late final confFile = File("$scPath\\USER.cfg"); late final confFile = File("$scPath\\USER.cfg");
@ -26,6 +30,8 @@ class PerformanceUIModel extends BaseUIModel {
@override @override
Future loadData() async { Future loadData() async {
customizeCtrl.clear();
inAppKeys.clear();
final String jsonString = final String jsonString =
await rootBundle.loadString('assets/performance.json'); await rootBundle.loadString('assets/performance.json');
final list = json.decode(jsonString); final list = json.decode(jsonString);
@ -34,6 +40,9 @@ class PerformanceUIModel extends BaseUIModel {
performanceMap = {}; performanceMap = {};
for (var element in list) { for (var element in list) {
final item = GamePerformanceData.fromJson(element); final item = GamePerformanceData.fromJson(element);
if (item.key != "customize") {
inAppKeys.add(item.key ?? "");
}
performanceMap?[item.group] ??= []; performanceMap?[item.group] ??= [];
performanceMap?[item.group]?.add(item); performanceMap?[item.group]?.add(item);
} }
@ -101,7 +110,19 @@ class PerformanceUIModel extends BaseUIModel {
String conf = ""; String conf = "";
for (var v in performanceMap!.entries) { for (var v in performanceMap!.entries) {
for (var c in v.value) { for (var c in v.value) {
conf = "$conf${c.key} = ${c.value}\n"; if (c.key != "customize") {
conf = "$conf${c.key}=${c.value}\n";
}
}
}
if (customizeCtrl.text.trim().isNotEmpty) {
final lines = customizeCtrl.text.split("\n");
for (var value in lines) {
final sp = value.split("=");
//
if (sp.length == 2) {
conf = "$conf${sp[0].trim()}=${sp[1].trim()}\n";
}
} }
} }
workingString = "写出配置文件"; workingString = "写出配置文件";
@ -153,6 +174,10 @@ class PerformanceUIModel extends BaseUIModel {
} }
} }
} }
if (kv.length == 2 && !inAppKeys.contains(kv[0].trim())) {
customizeCtrl.text =
"${customizeCtrl.text}${kv[0].trim()}=${kv[1].trim()}\n";
}
} }
notifyListeners(); notifyListeners();
} }