chroma min/max amb mostreig bilinear subpíxel

This commit is contained in:
JailDesigner committed 2026-05-17 12:24:22 +02:00
1 parent b81a453b32
commit 35d3b359eb
8 files changed
+8612 -6897

No files matched your search

+20 -9
View File
@@ -248,12 +248,15 @@ namespace {
}
// Presets per defecte de PostFX, portats directament de projecte_2026.
// chroma_min == chroma_max → chroma estàtic (per defecte). Ajusta'ls al gust
// (per exemple, augmentar el rang en CRT Live perquè "pulsi" visiblement).
auto defaultPostFXPresets() -> std::vector<Options::PostFXPreset> {
return {
{.name = "CRT",
.vignette = 0.6F,
.scanlines = 0.7F,
.chroma = 0.15F,
.chroma_min = 0.15F,
.chroma_max = 0.15F,
.mask = 0.6F,
.gamma = 0.8F,
.curvature = 0.0F,
@@ -262,7 +265,8 @@ namespace {
{.name = "NTSC",
.vignette = 0.4F,
.scanlines = 0.5F,
.chroma = 0.2F,
.chroma_min = 0.2F,
.chroma_max = 0.2F,
.mask = 0.4F,
.gamma = 0.5F,
.curvature = 0.0F,
@@ -271,7 +275,8 @@ namespace {
{.name = "Curved",
.vignette = 0.5F,
.scanlines = 0.6F,
.chroma = 0.1F,
.chroma_min = 0.1F,
.chroma_max = 0.1F,
.mask = 0.5F,
.gamma = 0.7F,
.curvature = 0.8F,
@@ -280,7 +285,8 @@ namespace {
{.name = "Scanlines",
.vignette = 0.0F,
.scanlines = 0.8F,
.chroma = 0.0F,
.chroma_min = 0.0F,
.chroma_max = 0.0F,
.mask = 0.0F,
.gamma = 0.0F,
.curvature = 0.0F,
@@ -289,7 +295,8 @@ namespace {
{.name = "Subtle",
.vignette = 0.3F,
.scanlines = 0.4F,
.chroma = 0.05F,
.chroma_min = 0.05F,
.chroma_max = 0.05F,
.mask = 0.0F,
.gamma = 0.3F,
.curvature = 0.0F,
@@ -298,7 +305,8 @@ namespace {
{.name = "CRT Live",
.vignette = 0.5F,
.scanlines = 0.6F,
.chroma = 0.3F,
.chroma_min = 0.3F,
.chroma_max = 0.3F,
.mask = 0.3F,
.gamma = 0.4F,
.curvature = 0.3F,
@@ -311,7 +319,8 @@ namespace {
readField(node, "name", preset.name);
readField(node, "vignette", preset.vignette);
readField(node, "scanlines", preset.scanlines);
readField(node, "chroma", preset.chroma);
readField(node, "chroma_min", preset.chroma_min);
readField(node, "chroma_max", preset.chroma_max);
readField(node, "mask", preset.mask);
readField(node, "gamma", preset.gamma);
readField(node, "curvature", preset.curvature);
@@ -326,7 +335,8 @@ namespace {
out << " - name: \"" << preset.name << "\"\n";
out << " vignette: " << preset.vignette << "\n";
out << " scanlines: " << preset.scanlines << "\n";
out << " chroma: " << preset.chroma << "\n";
out << " chroma_min: " << preset.chroma_min << "\n";
out << " chroma_max: " << preset.chroma_max << "\n";
out << " mask: " << preset.mask << "\n";
out << " gamma: " << preset.gamma << "\n";
out << " curvature: " << preset.curvature << "\n";
@@ -876,7 +886,8 @@ namespace Options {
return {
.vignette = IT->vignette,
.scanlines = IT->scanlines,
.chroma = IT->chroma,
.chroma_min = IT->chroma_min,
.chroma_max = IT->chroma_max,
.mask = IT->mask,
.gamma = IT->gamma,
.curvature = IT->curvature,
+3 -1
View File
@@ -59,7 +59,9 @@ namespace Options {
std::string name;
float vignette{0.0F};
float scanlines{0.0F};
float chroma{0.0F};
// Aberració cromàtica entre min i max (si coincideixen, estàtica).
float chroma_min{0.0F};
float chroma_max{0.0F};
float mask{0.0F};
float gamma{0.0F};
float curvature{0.0F};