feat(playback): add ArtCNN shader presets

close #924
This commit is contained in:
edde746
2026-04-26 20:29:38 +02:00
parent 3433dcb21c
commit 19a0128363
43 changed files with 16362 additions and 3 deletions
+57
View File
@@ -0,0 +1,57 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:plezy/models/shader_preset.dart';
void main() {
group('ShaderPreset ArtCNN presets', () {
test('exposes stable built-in preset ids in the expected order', () {
final ids = ShaderPreset.allPresets.map((preset) => preset.id).toList();
expect(ids.take(8), [
ShaderPreset.none.id,
ShaderPreset.nvscalerDefault.id,
'artcnn_c4f16_neutral',
'artcnn_c4f16_dn',
'artcnn_c4f16_ds',
'artcnn_c4f32_neutral',
'artcnn_c4f32_dn',
'artcnn_c4f32_ds',
]);
});
test('creates ArtCNN presets with names, type, and config', () {
final neutral = ShaderPreset.artcnnPreset(ArtCNNModel.c4f16, ArtCNNVariant.neutral);
final denoise = ShaderPreset.artcnnPreset(ArtCNNModel.c4f32, ArtCNNVariant.denoise);
final sharpen = ShaderPreset.artcnnPreset(ArtCNNModel.c4f32, ArtCNNVariant.denoiseSharpen);
expect(neutral.id, 'artcnn_c4f16_neutral');
expect(neutral.name, 'ArtCNN C4F16');
expect(neutral.type, ShaderPresetType.artcnn);
expect(neutral.artcnnConfig, const ArtCNNConfig(model: ArtCNNModel.c4f16, variant: ArtCNNVariant.neutral));
expect(neutral.artcnnModelDisplayName, 'C4F16');
expect(denoise.id, 'artcnn_c4f32_dn');
expect(denoise.name, 'ArtCNN C4F32 Denoise');
expect(denoise.artcnnConfig, const ArtCNNConfig(model: ArtCNNModel.c4f32, variant: ArtCNNVariant.denoise));
expect(sharpen.id, 'artcnn_c4f32_ds');
expect(sharpen.name, 'ArtCNN C4F32 Denoise + Sharpen');
expect(sharpen.artcnnConfig, const ArtCNNConfig(model: ArtCNNModel.c4f32, variant: ArtCNNVariant.denoiseSharpen));
});
test('finds ArtCNN presets by id', () {
final preset = ShaderPreset.fromId('artcnn_c4f32_ds');
expect(preset, isNotNull);
expect(preset!.type, ShaderPresetType.artcnn);
expect(preset.artcnnConfig, const ArtCNNConfig(model: ArtCNNModel.c4f32, variant: ArtCNNVariant.denoiseSharpen));
});
test('round-trips ArtCNN config through json', () {
final preset = ShaderPreset.artcnnPreset(ArtCNNModel.c4f16, ArtCNNVariant.denoise);
final decoded = ShaderPreset.fromJson(preset.toJson());
expect(decoded, preset);
expect(decoded.artcnnConfig, preset.artcnnConfig);
});
});
}
+6
View File
@@ -33,6 +33,12 @@ void main() {
final ids = p.allPresets.map((preset) => preset.id).toList();
expect(ids, contains(ShaderPreset.none.id));
expect(ids, contains(ShaderPreset.nvscalerDefault.id));
expect(ids, contains('artcnn_c4f16_neutral'));
expect(ids, contains('artcnn_c4f16_dn'));
expect(ids, contains('artcnn_c4f16_ds'));
expect(ids, contains('artcnn_c4f32_neutral'));
expect(ids, contains('artcnn_c4f32_dn'));
expect(ids, contains('artcnn_c4f32_ds'));
expect(p.allPresets.length, ShaderPreset.allPresets.length);
p.dispose();