File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -821,6 +821,9 @@
|
||||
"title": "Shadere",
|
||||
"noShaderDescription": "Ingen videoforbedring",
|
||||
"nvscalerDescription": "NVIDIA-billedskalering for skarpere video",
|
||||
"artcnnVariantNeutral": "Neutral",
|
||||
"artcnnVariantDenoise": "Støjreduktion",
|
||||
"artcnnVariantDenoiseSharpen": "Støjreduktion + skarphed",
|
||||
"qualityFast": "Hurtig",
|
||||
"qualityHQ": "Høj kvalitet",
|
||||
"mode": "Tilstand",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shader",
|
||||
"noShaderDescription": "Keine Videoverbesserung",
|
||||
"nvscalerDescription": "NVIDIA-Bildskalierung für schärferes Video",
|
||||
"artcnnVariantNeutral": "Neutral",
|
||||
"artcnnVariantDenoise": "Rauschreduzierung",
|
||||
"artcnnVariantDenoiseSharpen": "Rauschreduzierung + Schärfen",
|
||||
"qualityFast": "Schnell",
|
||||
"qualityHQ": "Hohe Qualität",
|
||||
"mode": "Modus",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shaders",
|
||||
"noShaderDescription": "No video enhancement",
|
||||
"nvscalerDescription": "NVIDIA image scaling for sharper video",
|
||||
"artcnnVariantNeutral": "Neutral",
|
||||
"artcnnVariantDenoise": "Denoise",
|
||||
"artcnnVariantDenoiseSharpen": "Denoise + Sharpen",
|
||||
"qualityFast": "Fast",
|
||||
"qualityHQ": "High Quality",
|
||||
"mode": "Mode",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shaders",
|
||||
"noShaderDescription": "Sin mejora de video",
|
||||
"nvscalerDescription": "Escalado de imagen NVIDIA para un video más nítido",
|
||||
"artcnnVariantNeutral": "Neutral",
|
||||
"artcnnVariantDenoise": "Reducción de ruido",
|
||||
"artcnnVariantDenoiseSharpen": "Reducción de ruido + enfoque",
|
||||
"qualityFast": "Rápido",
|
||||
"qualityHQ": "Alta Calidad",
|
||||
"mode": "Modo",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shaders",
|
||||
"noShaderDescription": "Aucune amélioration vidéo",
|
||||
"nvscalerDescription": "Mise à l'échelle NVIDIA pour une vidéo plus nette",
|
||||
"artcnnVariantNeutral": "Neutre",
|
||||
"artcnnVariantDenoise": "Réduction du bruit",
|
||||
"artcnnVariantDenoiseSharpen": "Réduction du bruit + netteté",
|
||||
"qualityFast": "Rapide",
|
||||
"qualityHQ": "Haute qualité",
|
||||
"mode": "Mode",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shader",
|
||||
"noShaderDescription": "Nessun miglioramento video",
|
||||
"nvscalerDescription": "Ridimensionamento NVIDIA per video più nitido",
|
||||
"artcnnVariantNeutral": "Neutro",
|
||||
"artcnnVariantDenoise": "Riduzione rumore",
|
||||
"artcnnVariantDenoiseSharpen": "Riduzione rumore + nitidezza",
|
||||
"qualityFast": "Veloce",
|
||||
"qualityHQ": "Alta qualità",
|
||||
"mode": "Modalità",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "シェーダー",
|
||||
"noShaderDescription": "映像補正なし",
|
||||
"nvscalerDescription": "よりシャープな映像のためのNVIDIA画像スケーリング",
|
||||
"artcnnVariantNeutral": "ニュートラル",
|
||||
"artcnnVariantDenoise": "ノイズ除去",
|
||||
"artcnnVariantDenoiseSharpen": "ノイズ除去 + シャープ",
|
||||
"qualityFast": "高速",
|
||||
"qualityHQ": "高品質",
|
||||
"mode": "モード",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "셰이더",
|
||||
"noShaderDescription": "비디오 향상 없음",
|
||||
"nvscalerDescription": "더 선명한 비디오를 위한 NVIDIA 이미지 스케일링",
|
||||
"artcnnVariantNeutral": "중립",
|
||||
"artcnnVariantDenoise": "노이즈 제거",
|
||||
"artcnnVariantDenoiseSharpen": "노이즈 제거 + 선명화",
|
||||
"qualityFast": "빠름",
|
||||
"qualityHQ": "고품질",
|
||||
"mode": "모드",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shadere",
|
||||
"noShaderDescription": "Ingen videoforbedring",
|
||||
"nvscalerDescription": "NVIDIA bildeskalering for skarpere video",
|
||||
"artcnnVariantNeutral": "Nøytral",
|
||||
"artcnnVariantDenoise": "Støyreduksjon",
|
||||
"artcnnVariantDenoiseSharpen": "Støyreduksjon + skarphet",
|
||||
"qualityFast": "Rask",
|
||||
"qualityHQ": "Høy kvalitet",
|
||||
"mode": "Modus",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shaders",
|
||||
"noShaderDescription": "Geen videoverbetering",
|
||||
"nvscalerDescription": "NVIDIA-beeldschaling voor scherpere video",
|
||||
"artcnnVariantNeutral": "Neutraal",
|
||||
"artcnnVariantDenoise": "Ruisonderdrukking",
|
||||
"artcnnVariantDenoiseSharpen": "Ruisonderdrukking + verscherpen",
|
||||
"qualityFast": "Snel",
|
||||
"qualityHQ": "Hoge kwaliteit",
|
||||
"mode": "Modus",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shadery",
|
||||
"noShaderDescription": "Bez ulepszenia wideo",
|
||||
"nvscalerDescription": "Skalowanie obrazu NVIDIA dla ostrzejszego wideo",
|
||||
"artcnnVariantNeutral": "Neutralny",
|
||||
"artcnnVariantDenoise": "Odszumianie",
|
||||
"artcnnVariantDenoiseSharpen": "Odszumianie + wyostrzanie",
|
||||
"qualityFast": "Szybki",
|
||||
"qualityHQ": "Wysoka jakość",
|
||||
"mode": "Tryb",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shaders",
|
||||
"noShaderDescription": "Sem aprimoramento de vídeo",
|
||||
"nvscalerDescription": "Escalonamento de imagem NVIDIA para vídeo mais nítido",
|
||||
"artcnnVariantNeutral": "Neutro",
|
||||
"artcnnVariantDenoise": "Redução de ruído",
|
||||
"artcnnVariantDenoiseSharpen": "Redução de ruído + nitidez",
|
||||
"qualityFast": "Rápido",
|
||||
"qualityHQ": "Alta Qualidade",
|
||||
"mode": "Modo",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Шейдеры",
|
||||
"noShaderDescription": "Без улучшения видео",
|
||||
"nvscalerDescription": "Масштабирование NVIDIA для более чёткого видео",
|
||||
"artcnnVariantNeutral": "Нейтральный",
|
||||
"artcnnVariantDenoise": "Шумоподавление",
|
||||
"artcnnVariantDenoiseSharpen": "Шумоподавление + резкость",
|
||||
"qualityFast": "Быстрый",
|
||||
"qualityHQ": "Высокое качество",
|
||||
"mode": "Режим",
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 15
|
||||
/// Strings: 14550 (970 per locale)
|
||||
/// Strings: 14595 (973 per locale)
|
||||
///
|
||||
/// Built on 2026-04-26 at 10:32 UTC
|
||||
/// Built on 2026-04-26 at 18:24 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint, unused_import
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersDa implements TranslationsShadersEn {
|
||||
@override String get title => 'Shadere';
|
||||
@override String get noShaderDescription => 'Ingen videoforbedring';
|
||||
@override String get nvscalerDescription => 'NVIDIA-billedskalering for skarpere video';
|
||||
@override String get artcnnVariantNeutral => 'Neutral';
|
||||
@override String get artcnnVariantDenoise => 'Støjreduktion';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Støjreduktion + skarphed';
|
||||
@override String get qualityFast => 'Hurtig';
|
||||
@override String get qualityHQ => 'Høj kvalitet';
|
||||
@override String get mode => 'Tilstand';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsDa {
|
||||
'shaders.title' => 'Shadere',
|
||||
'shaders.noShaderDescription' => 'Ingen videoforbedring',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA-billedskalering for skarpere video',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutral',
|
||||
'shaders.artcnnVariantDenoise' => 'Støjreduktion',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Støjreduktion + skarphed',
|
||||
'shaders.qualityFast' => 'Hurtig',
|
||||
'shaders.qualityHQ' => 'Høj kvalitet',
|
||||
'shaders.mode' => 'Tilstand',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersDe implements TranslationsShadersEn {
|
||||
@override String get title => 'Shader';
|
||||
@override String get noShaderDescription => 'Keine Videoverbesserung';
|
||||
@override String get nvscalerDescription => 'NVIDIA-Bildskalierung für schärferes Video';
|
||||
@override String get artcnnVariantNeutral => 'Neutral';
|
||||
@override String get artcnnVariantDenoise => 'Rauschreduzierung';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Rauschreduzierung + Schärfen';
|
||||
@override String get qualityFast => 'Schnell';
|
||||
@override String get qualityHQ => 'Hohe Qualität';
|
||||
@override String get mode => 'Modus';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsDe {
|
||||
'shaders.title' => 'Shader',
|
||||
'shaders.noShaderDescription' => 'Keine Videoverbesserung',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA-Bildskalierung für schärferes Video',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutral',
|
||||
'shaders.artcnnVariantDenoise' => 'Rauschreduzierung',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Rauschreduzierung + Schärfen',
|
||||
'shaders.qualityFast' => 'Schnell',
|
||||
'shaders.qualityHQ' => 'Hohe Qualität',
|
||||
'shaders.mode' => 'Modus',
|
||||
|
||||
@@ -2516,6 +2516,15 @@ class TranslationsShadersEn {
|
||||
/// en: 'NVIDIA image scaling for sharper video'
|
||||
String get nvscalerDescription => 'NVIDIA image scaling for sharper video';
|
||||
|
||||
/// en: 'Neutral'
|
||||
String get artcnnVariantNeutral => 'Neutral';
|
||||
|
||||
/// en: 'Denoise'
|
||||
String get artcnnVariantDenoise => 'Denoise';
|
||||
|
||||
/// en: 'Denoise + Sharpen'
|
||||
String get artcnnVariantDenoiseSharpen => 'Denoise + Sharpen';
|
||||
|
||||
/// en: 'Fast'
|
||||
String get qualityFast => 'Fast';
|
||||
|
||||
@@ -4236,6 +4245,9 @@ extension on Translations {
|
||||
'shaders.title' => 'Shaders',
|
||||
'shaders.noShaderDescription' => 'No video enhancement',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA image scaling for sharper video',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutral',
|
||||
'shaders.artcnnVariantDenoise' => 'Denoise',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Denoise + Sharpen',
|
||||
'shaders.qualityFast' => 'Fast',
|
||||
'shaders.qualityHQ' => 'High Quality',
|
||||
'shaders.mode' => 'Mode',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersEs implements TranslationsShadersEn {
|
||||
@override String get title => 'Shaders';
|
||||
@override String get noShaderDescription => 'Sin mejora de video';
|
||||
@override String get nvscalerDescription => 'Escalado de imagen NVIDIA para un video más nítido';
|
||||
@override String get artcnnVariantNeutral => 'Neutral';
|
||||
@override String get artcnnVariantDenoise => 'Reducción de ruido';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Reducción de ruido + enfoque';
|
||||
@override String get qualityFast => 'Rápido';
|
||||
@override String get qualityHQ => 'Alta Calidad';
|
||||
@override String get mode => 'Modo';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsEs {
|
||||
'shaders.title' => 'Shaders',
|
||||
'shaders.noShaderDescription' => 'Sin mejora de video',
|
||||
'shaders.nvscalerDescription' => 'Escalado de imagen NVIDIA para un video más nítido',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutral',
|
||||
'shaders.artcnnVariantDenoise' => 'Reducción de ruido',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Reducción de ruido + enfoque',
|
||||
'shaders.qualityFast' => 'Rápido',
|
||||
'shaders.qualityHQ' => 'Alta Calidad',
|
||||
'shaders.mode' => 'Modo',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersFr implements TranslationsShadersEn {
|
||||
@override String get title => 'Shaders';
|
||||
@override String get noShaderDescription => 'Aucune amélioration vidéo';
|
||||
@override String get nvscalerDescription => 'Mise à l\'échelle NVIDIA pour une vidéo plus nette';
|
||||
@override String get artcnnVariantNeutral => 'Neutre';
|
||||
@override String get artcnnVariantDenoise => 'Réduction du bruit';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Réduction du bruit + netteté';
|
||||
@override String get qualityFast => 'Rapide';
|
||||
@override String get qualityHQ => 'Haute qualité';
|
||||
@override String get mode => 'Mode';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsFr {
|
||||
'shaders.title' => 'Shaders',
|
||||
'shaders.noShaderDescription' => 'Aucune amélioration vidéo',
|
||||
'shaders.nvscalerDescription' => 'Mise à l\'échelle NVIDIA pour une vidéo plus nette',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutre',
|
||||
'shaders.artcnnVariantDenoise' => 'Réduction du bruit',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Réduction du bruit + netteté',
|
||||
'shaders.qualityFast' => 'Rapide',
|
||||
'shaders.qualityHQ' => 'Haute qualité',
|
||||
'shaders.mode' => 'Mode',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersIt implements TranslationsShadersEn {
|
||||
@override String get title => 'Shader';
|
||||
@override String get noShaderDescription => 'Nessun miglioramento video';
|
||||
@override String get nvscalerDescription => 'Ridimensionamento NVIDIA per video più nitido';
|
||||
@override String get artcnnVariantNeutral => 'Neutro';
|
||||
@override String get artcnnVariantDenoise => 'Riduzione rumore';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Riduzione rumore + nitidezza';
|
||||
@override String get qualityFast => 'Veloce';
|
||||
@override String get qualityHQ => 'Alta qualità';
|
||||
@override String get mode => 'Modalità';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsIt {
|
||||
'shaders.title' => 'Shader',
|
||||
'shaders.noShaderDescription' => 'Nessun miglioramento video',
|
||||
'shaders.nvscalerDescription' => 'Ridimensionamento NVIDIA per video più nitido',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutro',
|
||||
'shaders.artcnnVariantDenoise' => 'Riduzione rumore',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Riduzione rumore + nitidezza',
|
||||
'shaders.qualityFast' => 'Veloce',
|
||||
'shaders.qualityHQ' => 'Alta qualità',
|
||||
'shaders.mode' => 'Modalità',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersJa implements TranslationsShadersEn {
|
||||
@override String get title => 'シェーダー';
|
||||
@override String get noShaderDescription => '映像補正なし';
|
||||
@override String get nvscalerDescription => 'よりシャープな映像のためのNVIDIA画像スケーリング';
|
||||
@override String get artcnnVariantNeutral => 'ニュートラル';
|
||||
@override String get artcnnVariantDenoise => 'ノイズ除去';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'ノイズ除去 + シャープ';
|
||||
@override String get qualityFast => '高速';
|
||||
@override String get qualityHQ => '高品質';
|
||||
@override String get mode => 'モード';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsJa {
|
||||
'shaders.title' => 'シェーダー',
|
||||
'shaders.noShaderDescription' => '映像補正なし',
|
||||
'shaders.nvscalerDescription' => 'よりシャープな映像のためのNVIDIA画像スケーリング',
|
||||
'shaders.artcnnVariantNeutral' => 'ニュートラル',
|
||||
'shaders.artcnnVariantDenoise' => 'ノイズ除去',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'ノイズ除去 + シャープ',
|
||||
'shaders.qualityFast' => '高速',
|
||||
'shaders.qualityHQ' => '高品質',
|
||||
'shaders.mode' => 'モード',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersKo implements TranslationsShadersEn {
|
||||
@override String get title => '셰이더';
|
||||
@override String get noShaderDescription => '비디오 향상 없음';
|
||||
@override String get nvscalerDescription => '더 선명한 비디오를 위한 NVIDIA 이미지 스케일링';
|
||||
@override String get artcnnVariantNeutral => '중립';
|
||||
@override String get artcnnVariantDenoise => '노이즈 제거';
|
||||
@override String get artcnnVariantDenoiseSharpen => '노이즈 제거 + 선명화';
|
||||
@override String get qualityFast => '빠름';
|
||||
@override String get qualityHQ => '고품질';
|
||||
@override String get mode => '모드';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsKo {
|
||||
'shaders.title' => '셰이더',
|
||||
'shaders.noShaderDescription' => '비디오 향상 없음',
|
||||
'shaders.nvscalerDescription' => '더 선명한 비디오를 위한 NVIDIA 이미지 스케일링',
|
||||
'shaders.artcnnVariantNeutral' => '중립',
|
||||
'shaders.artcnnVariantDenoise' => '노이즈 제거',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => '노이즈 제거 + 선명화',
|
||||
'shaders.qualityFast' => '빠름',
|
||||
'shaders.qualityHQ' => '고품질',
|
||||
'shaders.mode' => '모드',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersNb implements TranslationsShadersEn {
|
||||
@override String get title => 'Shadere';
|
||||
@override String get noShaderDescription => 'Ingen videoforbedring';
|
||||
@override String get nvscalerDescription => 'NVIDIA bildeskalering for skarpere video';
|
||||
@override String get artcnnVariantNeutral => 'Nøytral';
|
||||
@override String get artcnnVariantDenoise => 'Støyreduksjon';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Støyreduksjon + skarphet';
|
||||
@override String get qualityFast => 'Rask';
|
||||
@override String get qualityHQ => 'Høy kvalitet';
|
||||
@override String get mode => 'Modus';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsNb {
|
||||
'shaders.title' => 'Shadere',
|
||||
'shaders.noShaderDescription' => 'Ingen videoforbedring',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA bildeskalering for skarpere video',
|
||||
'shaders.artcnnVariantNeutral' => 'Nøytral',
|
||||
'shaders.artcnnVariantDenoise' => 'Støyreduksjon',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Støyreduksjon + skarphet',
|
||||
'shaders.qualityFast' => 'Rask',
|
||||
'shaders.qualityHQ' => 'Høy kvalitet',
|
||||
'shaders.mode' => 'Modus',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersNl implements TranslationsShadersEn {
|
||||
@override String get title => 'Shaders';
|
||||
@override String get noShaderDescription => 'Geen videoverbetering';
|
||||
@override String get nvscalerDescription => 'NVIDIA-beeldschaling voor scherpere video';
|
||||
@override String get artcnnVariantNeutral => 'Neutraal';
|
||||
@override String get artcnnVariantDenoise => 'Ruisonderdrukking';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Ruisonderdrukking + verscherpen';
|
||||
@override String get qualityFast => 'Snel';
|
||||
@override String get qualityHQ => 'Hoge kwaliteit';
|
||||
@override String get mode => 'Modus';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsNl {
|
||||
'shaders.title' => 'Shaders',
|
||||
'shaders.noShaderDescription' => 'Geen videoverbetering',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA-beeldschaling voor scherpere video',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutraal',
|
||||
'shaders.artcnnVariantDenoise' => 'Ruisonderdrukking',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Ruisonderdrukking + verscherpen',
|
||||
'shaders.qualityFast' => 'Snel',
|
||||
'shaders.qualityHQ' => 'Hoge kwaliteit',
|
||||
'shaders.mode' => 'Modus',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersPl implements TranslationsShadersEn {
|
||||
@override String get title => 'Shadery';
|
||||
@override String get noShaderDescription => 'Bez ulepszenia wideo';
|
||||
@override String get nvscalerDescription => 'Skalowanie obrazu NVIDIA dla ostrzejszego wideo';
|
||||
@override String get artcnnVariantNeutral => 'Neutralny';
|
||||
@override String get artcnnVariantDenoise => 'Odszumianie';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Odszumianie + wyostrzanie';
|
||||
@override String get qualityFast => 'Szybki';
|
||||
@override String get qualityHQ => 'Wysoka jakość';
|
||||
@override String get mode => 'Tryb';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsPl {
|
||||
'shaders.title' => 'Shadery',
|
||||
'shaders.noShaderDescription' => 'Bez ulepszenia wideo',
|
||||
'shaders.nvscalerDescription' => 'Skalowanie obrazu NVIDIA dla ostrzejszego wideo',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutralny',
|
||||
'shaders.artcnnVariantDenoise' => 'Odszumianie',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Odszumianie + wyostrzanie',
|
||||
'shaders.qualityFast' => 'Szybki',
|
||||
'shaders.qualityHQ' => 'Wysoka jakość',
|
||||
'shaders.mode' => 'Tryb',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersPt implements TranslationsShadersEn {
|
||||
@override String get title => 'Shaders';
|
||||
@override String get noShaderDescription => 'Sem aprimoramento de vídeo';
|
||||
@override String get nvscalerDescription => 'Escalonamento de imagem NVIDIA para vídeo mais nítido';
|
||||
@override String get artcnnVariantNeutral => 'Neutro';
|
||||
@override String get artcnnVariantDenoise => 'Redução de ruído';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Redução de ruído + nitidez';
|
||||
@override String get qualityFast => 'Rápido';
|
||||
@override String get qualityHQ => 'Alta Qualidade';
|
||||
@override String get mode => 'Modo';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsPt {
|
||||
'shaders.title' => 'Shaders',
|
||||
'shaders.noShaderDescription' => 'Sem aprimoramento de vídeo',
|
||||
'shaders.nvscalerDescription' => 'Escalonamento de imagem NVIDIA para vídeo mais nítido',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutro',
|
||||
'shaders.artcnnVariantDenoise' => 'Redução de ruído',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Redução de ruído + nitidez',
|
||||
'shaders.qualityFast' => 'Rápido',
|
||||
'shaders.qualityHQ' => 'Alta Qualidade',
|
||||
'shaders.mode' => 'Modo',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersRu implements TranslationsShadersEn {
|
||||
@override String get title => 'Шейдеры';
|
||||
@override String get noShaderDescription => 'Без улучшения видео';
|
||||
@override String get nvscalerDescription => 'Масштабирование NVIDIA для более чёткого видео';
|
||||
@override String get artcnnVariantNeutral => 'Нейтральный';
|
||||
@override String get artcnnVariantDenoise => 'Шумоподавление';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Шумоподавление + резкость';
|
||||
@override String get qualityFast => 'Быстрый';
|
||||
@override String get qualityHQ => 'Высокое качество';
|
||||
@override String get mode => 'Режим';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsRu {
|
||||
'shaders.title' => 'Шейдеры',
|
||||
'shaders.noShaderDescription' => 'Без улучшения видео',
|
||||
'shaders.nvscalerDescription' => 'Масштабирование NVIDIA для более чёткого видео',
|
||||
'shaders.artcnnVariantNeutral' => 'Нейтральный',
|
||||
'shaders.artcnnVariantDenoise' => 'Шумоподавление',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Шумоподавление + резкость',
|
||||
'shaders.qualityFast' => 'Быстрый',
|
||||
'shaders.qualityHQ' => 'Высокое качество',
|
||||
'shaders.mode' => 'Режим',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersSv implements TranslationsShadersEn {
|
||||
@override String get title => 'Shaders';
|
||||
@override String get noShaderDescription => 'Ingen videoförbättring';
|
||||
@override String get nvscalerDescription => 'NVIDIA-bildskalning för skarpare video';
|
||||
@override String get artcnnVariantNeutral => 'Neutral';
|
||||
@override String get artcnnVariantDenoise => 'Brusreducering';
|
||||
@override String get artcnnVariantDenoiseSharpen => 'Brusreducering + skärpa';
|
||||
@override String get qualityFast => 'Snabb';
|
||||
@override String get qualityHQ => 'Hög kvalitet';
|
||||
@override String get mode => 'Läge';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsSv {
|
||||
'shaders.title' => 'Shaders',
|
||||
'shaders.noShaderDescription' => 'Ingen videoförbättring',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA-bildskalning för skarpare video',
|
||||
'shaders.artcnnVariantNeutral' => 'Neutral',
|
||||
'shaders.artcnnVariantDenoise' => 'Brusreducering',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => 'Brusreducering + skärpa',
|
||||
'shaders.qualityFast' => 'Snabb',
|
||||
'shaders.qualityHQ' => 'Hög kvalitet',
|
||||
'shaders.mode' => 'Läge',
|
||||
|
||||
@@ -1089,6 +1089,9 @@ class _TranslationsShadersZh implements TranslationsShadersEn {
|
||||
@override String get title => '着色器';
|
||||
@override String get noShaderDescription => '无视频增强';
|
||||
@override String get nvscalerDescription => 'NVIDIA 图像缩放,使视频更清晰';
|
||||
@override String get artcnnVariantNeutral => '中性';
|
||||
@override String get artcnnVariantDenoise => '降噪';
|
||||
@override String get artcnnVariantDenoiseSharpen => '降噪 + 锐化';
|
||||
@override String get qualityFast => '快速';
|
||||
@override String get qualityHQ => '高质量';
|
||||
@override String get mode => '模式';
|
||||
@@ -2288,6 +2291,9 @@ extension on TranslationsZh {
|
||||
'shaders.title' => '着色器',
|
||||
'shaders.noShaderDescription' => '无视频增强',
|
||||
'shaders.nvscalerDescription' => 'NVIDIA 图像缩放,使视频更清晰',
|
||||
'shaders.artcnnVariantNeutral' => '中性',
|
||||
'shaders.artcnnVariantDenoise' => '降噪',
|
||||
'shaders.artcnnVariantDenoiseSharpen' => '降噪 + 锐化',
|
||||
'shaders.qualityFast' => '快速',
|
||||
'shaders.qualityHQ' => '高质量',
|
||||
'shaders.mode' => '模式',
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "Shaders",
|
||||
"noShaderDescription": "Ingen videoförbättring",
|
||||
"nvscalerDescription": "NVIDIA-bildskalning för skarpare video",
|
||||
"artcnnVariantNeutral": "Neutral",
|
||||
"artcnnVariantDenoise": "Brusreducering",
|
||||
"artcnnVariantDenoiseSharpen": "Brusreducering + skärpa",
|
||||
"qualityFast": "Snabb",
|
||||
"qualityHQ": "Hög kvalitet",
|
||||
"mode": "Läge",
|
||||
|
||||
@@ -821,6 +821,9 @@
|
||||
"title": "着色器",
|
||||
"noShaderDescription": "无视频增强",
|
||||
"nvscalerDescription": "NVIDIA 图像缩放,使视频更清晰",
|
||||
"artcnnVariantNeutral": "中性",
|
||||
"artcnnVariantDenoise": "降噪",
|
||||
"artcnnVariantDenoiseSharpen": "降噪 + 锐化",
|
||||
"qualityFast": "快速",
|
||||
"qualityHQ": "高质量",
|
||||
"mode": "模式",
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
/// Shader preset types available in the app
|
||||
enum ShaderPresetType { none, nvscaler, anime4k, custom }
|
||||
enum ShaderPresetType { none, nvscaler, artcnn, anime4k, custom }
|
||||
|
||||
/// ArtCNN real-time model sizes.
|
||||
enum ArtCNNModel {
|
||||
/// Lightweight real-time model
|
||||
c4f16,
|
||||
|
||||
/// Higher-quality real-time model
|
||||
c4f32,
|
||||
}
|
||||
|
||||
/// ArtCNN luma doubler variants.
|
||||
enum ArtCNNVariant {
|
||||
/// Neutral luma doubler
|
||||
neutral,
|
||||
|
||||
/// Denoise and soften
|
||||
denoise,
|
||||
|
||||
/// Denoise and sharpen
|
||||
denoiseSharpen,
|
||||
}
|
||||
|
||||
/// Quality tiers for Anime4K presets
|
||||
enum Anime4KQuality {
|
||||
@@ -57,6 +78,32 @@ class Anime4KConfig {
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration for ArtCNN preset
|
||||
class ArtCNNConfig {
|
||||
final ArtCNNModel model;
|
||||
final ArtCNNVariant variant;
|
||||
|
||||
const ArtCNNConfig({required this.model, required this.variant});
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (identical(this, other)) return true;
|
||||
return other is ArtCNNConfig && other.model == model && other.variant == variant;
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => model.hashCode ^ variant.hashCode;
|
||||
|
||||
Map<String, dynamic> toJson() => {'model': model.name, 'variant': variant.name};
|
||||
|
||||
factory ArtCNNConfig.fromJson(Map<String, dynamic> json) {
|
||||
return ArtCNNConfig(
|
||||
model: ArtCNNModel.values.asNameMap()[json['model']] ?? ArtCNNModel.c4f16,
|
||||
variant: ArtCNNVariant.values.asNameMap()[json['variant']] ?? ArtCNNVariant.neutral,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Configuration for NVScaler preset
|
||||
class NVScalerConfig {
|
||||
/// Whether to automatically skip NVScaler on HDR content
|
||||
@@ -85,6 +132,7 @@ class ShaderPreset {
|
||||
final String id;
|
||||
final String name;
|
||||
final ShaderPresetType type;
|
||||
final ArtCNNConfig? artcnnConfig;
|
||||
final Anime4KConfig? anime4kConfig;
|
||||
final NVScalerConfig? nvscalerConfig;
|
||||
|
||||
@@ -95,6 +143,7 @@ class ShaderPreset {
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.type,
|
||||
this.artcnnConfig,
|
||||
this.anime4kConfig,
|
||||
this.nvscalerConfig,
|
||||
this.fileName,
|
||||
@@ -111,6 +160,20 @@ class ShaderPreset {
|
||||
nvscalerConfig: NVScalerConfig(),
|
||||
);
|
||||
|
||||
/// Create an ArtCNN preset with the specified model and variant
|
||||
static ShaderPreset artcnnPreset(ArtCNNModel model, ArtCNNVariant variant) {
|
||||
final modelName = _getArtCNNModelName(model);
|
||||
final variantName = _getArtCNNVariantName(variant);
|
||||
final variantId = _getArtCNNVariantId(variant);
|
||||
|
||||
return ShaderPreset(
|
||||
id: 'artcnn_${model.name}_$variantId',
|
||||
name: variant == ArtCNNVariant.neutral ? 'ArtCNN $modelName' : 'ArtCNN $modelName $variantName',
|
||||
type: ShaderPresetType.artcnn,
|
||||
artcnnConfig: ArtCNNConfig(model: model, variant: variant),
|
||||
);
|
||||
}
|
||||
|
||||
/// Create an Anime4K preset with the specified quality and mode
|
||||
static ShaderPreset anime4kPreset(Anime4KQuality quality, Anime4KMode mode) {
|
||||
final qualityName = quality == Anime4KQuality.fast ? 'Fast' : 'HQ';
|
||||
@@ -141,6 +204,37 @@ class ShaderPreset {
|
||||
}
|
||||
}
|
||||
|
||||
static String _getArtCNNModelName(ArtCNNModel model) {
|
||||
switch (model) {
|
||||
case ArtCNNModel.c4f16:
|
||||
return 'C4F16';
|
||||
case ArtCNNModel.c4f32:
|
||||
return 'C4F32';
|
||||
}
|
||||
}
|
||||
|
||||
static String _getArtCNNVariantName(ArtCNNVariant variant) {
|
||||
switch (variant) {
|
||||
case ArtCNNVariant.neutral:
|
||||
return 'Neutral';
|
||||
case ArtCNNVariant.denoise:
|
||||
return 'Denoise';
|
||||
case ArtCNNVariant.denoiseSharpen:
|
||||
return 'Denoise + Sharpen';
|
||||
}
|
||||
}
|
||||
|
||||
static String _getArtCNNVariantId(ArtCNNVariant variant) {
|
||||
switch (variant) {
|
||||
case ArtCNNVariant.neutral:
|
||||
return 'neutral';
|
||||
case ArtCNNVariant.denoise:
|
||||
return 'dn';
|
||||
case ArtCNNVariant.denoiseSharpen:
|
||||
return 'ds';
|
||||
}
|
||||
}
|
||||
|
||||
/// Get display name for the mode
|
||||
String get modeDisplayName {
|
||||
if (anime4kConfig != null) {
|
||||
@@ -149,11 +243,26 @@ class ShaderPreset {
|
||||
return '';
|
||||
}
|
||||
|
||||
/// Get display name for the ArtCNN model
|
||||
String get artcnnModelDisplayName {
|
||||
if (artcnnConfig != null) {
|
||||
return _getArtCNNModelName(artcnnConfig!.model);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
/// Get all available preset options
|
||||
static List<ShaderPreset> get allPresets {
|
||||
return [
|
||||
none,
|
||||
nvscalerDefault,
|
||||
// ArtCNN presets
|
||||
artcnnPreset(ArtCNNModel.c4f16, ArtCNNVariant.neutral),
|
||||
artcnnPreset(ArtCNNModel.c4f16, ArtCNNVariant.denoise),
|
||||
artcnnPreset(ArtCNNModel.c4f16, ArtCNNVariant.denoiseSharpen),
|
||||
artcnnPreset(ArtCNNModel.c4f32, ArtCNNVariant.neutral),
|
||||
artcnnPreset(ArtCNNModel.c4f32, ArtCNNVariant.denoise),
|
||||
artcnnPreset(ArtCNNModel.c4f32, ArtCNNVariant.denoiseSharpen),
|
||||
// Anime4K Fast presets
|
||||
anime4kPreset(Anime4KQuality.fast, Anime4KMode.modeA),
|
||||
anime4kPreset(Anime4KQuality.fast, Anime4KMode.modeB),
|
||||
@@ -195,6 +304,7 @@ class ShaderPreset {
|
||||
'id': id,
|
||||
'name': name,
|
||||
'type': type.name,
|
||||
if (artcnnConfig != null) 'artcnnConfig': artcnnConfig!.toJson(),
|
||||
if (anime4kConfig != null) 'anime4kConfig': anime4kConfig!.toJson(),
|
||||
if (nvscalerConfig != null) 'nvscalerConfig': nvscalerConfig!.toJson(),
|
||||
if (fileName != null) 'fileName': fileName,
|
||||
@@ -213,6 +323,7 @@ class ShaderPreset {
|
||||
id: id ?? 'custom',
|
||||
name: json['name'] as String? ?? 'Custom',
|
||||
type: ShaderPresetType.values.asNameMap()[json['type']] ?? ShaderPresetType.none,
|
||||
artcnnConfig: json['artcnnConfig'] != null ? ArtCNNConfig.fromJson(json['artcnnConfig']) : null,
|
||||
anime4kConfig: json['anime4kConfig'] != null ? Anime4KConfig.fromJson(json['anime4kConfig']) : null,
|
||||
nvscalerConfig: json['nvscalerConfig'] != null ? NVScalerConfig.fromJson(json['nvscalerConfig']) : null,
|
||||
fileName: json['fileName'] as String?,
|
||||
|
||||
@@ -18,6 +18,16 @@ class ShaderAssetLoader {
|
||||
/// NVScaler shader file
|
||||
static const String _nvscalerShader = 'nvscaler/NVScaler.glsl';
|
||||
|
||||
/// ArtCNN shader files organized by preset model and variant.
|
||||
static const Map<String, String> _artcnnShaders = {
|
||||
'c4f16_neutral': 'artcnn/ArtCNN_C4F16.glsl',
|
||||
'c4f16_dn': 'artcnn/ArtCNN_C4F16_DN.glsl',
|
||||
'c4f16_ds': 'artcnn/ArtCNN_C4F16_DS.glsl',
|
||||
'c4f32_neutral': 'artcnn/ArtCNN_C4F32.glsl',
|
||||
'c4f32_dn': 'artcnn/ArtCNN_C4F32_DN.glsl',
|
||||
'c4f32_ds': 'artcnn/ArtCNN_C4F32_DS.glsl',
|
||||
};
|
||||
|
||||
/// Anime4K shader files organized by function
|
||||
static const Map<String, String> _anime4kShaders = {
|
||||
'clamp': 'anime4k/Anime4K_Clamp_Highlights.glsl',
|
||||
@@ -84,6 +94,19 @@ class ShaderAssetLoader {
|
||||
return [shaderPath];
|
||||
}
|
||||
|
||||
/// Get the shader file path for an ArtCNN preset.
|
||||
/// Returns a list containing exactly one ArtCNN shader path.
|
||||
static Future<List<String>> getArtCNNShaders(ArtCNNConfig config) async {
|
||||
final variantId = switch (config.variant) {
|
||||
ArtCNNVariant.neutral => 'neutral',
|
||||
ArtCNNVariant.denoise => 'dn',
|
||||
ArtCNNVariant.denoiseSharpen => 'ds',
|
||||
};
|
||||
final shaderPath = await _extractShader(_artcnnShaders['${config.model.name}_$variantId']!);
|
||||
if (shaderPath == null) return [];
|
||||
return [shaderPath];
|
||||
}
|
||||
|
||||
/// Get the shader file paths for an Anime4K preset.
|
||||
/// Returns a list of shader paths in the correct order for MPV.
|
||||
static Future<List<String>> getAnime4KShaders(Anime4KConfig config) async {
|
||||
@@ -221,6 +244,9 @@ class ShaderAssetLoader {
|
||||
return [];
|
||||
case ShaderPresetType.nvscaler:
|
||||
return getNVScalerShaders();
|
||||
case ShaderPresetType.artcnn:
|
||||
if (preset.artcnnConfig == null) return [];
|
||||
return getArtCNNShaders(preset.artcnnConfig!);
|
||||
case ShaderPresetType.anime4k:
|
||||
if (preset.anime4kConfig == null) return [];
|
||||
return getAnime4KShaders(preset.anime4kConfig!);
|
||||
@@ -239,6 +265,11 @@ class ShaderAssetLoader {
|
||||
// Extract NVScaler
|
||||
await _extractShader(_nvscalerShader);
|
||||
|
||||
// Extract all ArtCNN shaders
|
||||
for (final shaderPath in _artcnnShaders.values) {
|
||||
await _extractShader(shaderPath);
|
||||
}
|
||||
|
||||
// Extract all Anime4K shaders
|
||||
for (final shaderPath in _anime4kShaders.values) {
|
||||
await _extractShader(shaderPath);
|
||||
|
||||
@@ -798,6 +798,16 @@ class _VideoSettingsSheetState extends State<VideoSettingsSheet> {
|
||||
return t.shaders.noShaderDescription;
|
||||
case ShaderPresetType.nvscaler:
|
||||
return t.shaders.nvscalerDescription;
|
||||
case ShaderPresetType.artcnn:
|
||||
if (preset.artcnnConfig != null) {
|
||||
final variant = switch (preset.artcnnConfig!.variant) {
|
||||
ArtCNNVariant.neutral => t.shaders.artcnnVariantNeutral,
|
||||
ArtCNNVariant.denoise => t.shaders.artcnnVariantDenoise,
|
||||
ArtCNNVariant.denoiseSharpen => t.shaders.artcnnVariantDenoiseSharpen,
|
||||
};
|
||||
return '${preset.artcnnModelDisplayName} - $variant';
|
||||
}
|
||||
return null;
|
||||
case ShaderPresetType.anime4k:
|
||||
if (preset.anime4kConfig != null) {
|
||||
final quality = preset.anime4kConfig!.quality == Anime4KQuality.fast
|
||||
|
||||
@@ -125,6 +125,7 @@ flutter:
|
||||
- assets/simkl_mark.svg
|
||||
- assets/go-noto-current-regular.ttf
|
||||
- assets/shaders/nvscaler/
|
||||
- assets/shaders/artcnn/
|
||||
- assets/shaders/anime4k/
|
||||
- assets/player_icons/
|
||||
- assets/rating_icons/
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user