@@ -56,8 +56,7 @@ struct astcenc_preset_config
56
56
float tune_3partition_early_out_limit_factor;
57
57
float tune_2plane_early_out_limit_correlation;
58
58
float tune_search_mode0_enable;
59
- float rdo_quality;
60
- unsigned int rdo_dict_size;
59
+ unsigned int rdo_lookback;
61
60
};
62
61
63
62
/* *
@@ -66,22 +65,22 @@ struct astcenc_preset_config
66
65
static const std::array<astcenc_preset_config, 6 > preset_configs_high {{
67
66
{
68
67
ASTCENC_PRE_FASTEST,
69
- 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 0 .0f , 4 . 0f , 256
68
+ 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 0 .0f , 64
70
69
}, {
71
70
ASTCENC_PRE_FAST,
72
- 3 , 18 , 10 , 8 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .90f , 0 .0f , 2 . 0f , 1024
71
+ 3 , 18 , 10 , 8 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .90f , 0 .0f , 128
73
72
}, {
74
73
ASTCENC_PRE_MEDIUM,
75
- 4 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 2 .5f , 1 .1f , 1 .05f , 0 .95f , 0 .0f , 1 . 0f , 4096
74
+ 4 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 2 .5f , 1 .1f , 1 .05f , 0 .95f , 0 .0f , 256
76
75
}, {
77
76
ASTCENC_PRE_THOROUGH,
78
- 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .35f , 1 .15f , 0 .97f , 0 .0f , 0 . 5f , 4096
77
+ 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .35f , 1 .15f , 0 .97f , 0 .0f , 256
79
78
}, {
80
79
ASTCENC_PRE_VERYTHOROUGH,
81
- 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 4 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 0 .0f , 0 . 4f , 4096
80
+ 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 4 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 0 .0f , 256
82
81
}, {
83
82
ASTCENC_PRE_EXHAUSTIVE,
84
- 4 , 512 , 512 , 512 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 0 .0f , 0 . 2f , 4096
83
+ 4 , 512 , 512 , 512 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 0 .0f , 256
85
84
}
86
85
}};
87
86
@@ -91,22 +90,22 @@ static const std::array<astcenc_preset_config, 6> preset_configs_high {{
91
90
static const std::array<astcenc_preset_config, 6 > preset_configs_mid {{
92
91
{
93
92
ASTCENC_PRE_FASTEST,
94
- 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .80f , 1 .0f , 4 . 0f , 256
93
+ 2 , 10 , 6 , 4 , 43 , 2 , 2 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .80f , 1 .0f , 64
95
94
}, {
96
95
ASTCENC_PRE_FAST,
97
- 3 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 1 .0f , 2 . 0f , 1024
96
+ 3 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .2f , 63 .2f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 1 .0f , 128
98
97
}, {
99
98
ASTCENC_PRE_MEDIUM,
100
- 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .0f , 1 .1f , 1 .05f , 0 .90f , 1 .0f , 1 . 0f , 4096
99
+ 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .0f , 1 .1f , 1 .05f , 0 .90f , 1 .0f , 256
101
100
}, {
102
101
ASTCENC_PRE_THOROUGH,
103
- 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .4f , 1 .2f , 0 .95f , 0 .0f , 0 . 5f , 4096
102
+ 4 , 82 , 60 , 30 , 94 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .4f , 1 .2f , 0 .95f , 0 .0f , 256
104
103
}, {
105
104
ASTCENC_PRE_VERYTHOROUGH,
106
- 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 3 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 0 .0f , 0 . 4f , 4096
105
+ 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 6 , 3 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 0 .0f , 256
107
106
}, {
108
107
ASTCENC_PRE_EXHAUSTIVE,
109
- 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 0 .0f , 0 . 2f , 4096
108
+ 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 0 .0f , 256
110
109
}
111
110
}};
112
111
@@ -116,22 +115,22 @@ static const std::array<astcenc_preset_config, 6> preset_configs_mid {{
116
115
static const std::array<astcenc_preset_config, 6 > preset_configs_low {{
117
116
{
118
117
ASTCENC_PRE_FASTEST,
119
- 2 , 10 , 6 , 4 , 40 , 2 , 2 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .80f , 1 .0f , 4 . 0f , 256
118
+ 2 , 10 , 6 , 4 , 40 , 2 , 2 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .80f , 1 .0f , 64
120
119
}, {
121
120
ASTCENC_PRE_FAST,
122
- 2 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 1 .0f , 2 . 0f , 1024
121
+ 2 , 18 , 12 , 10 , 55 , 3 , 3 , 2 , 2 , 2 , 85 .0f , 63 .0f , 3 .5f , 1 .0f , 1 .0f , 0 .85f , 1 .0f , 128
123
122
}, {
124
123
ASTCENC_PRE_MEDIUM,
125
- 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .5f , 1 .1f , 1 .05f , 0 .90f , 1 .0f , 1 . 0f , 4096
124
+ 3 , 34 , 28 , 16 , 77 , 3 , 3 , 2 , 2 , 2 , 95 .0f , 70 .0f , 3 .5f , 1 .1f , 1 .05f , 0 .90f , 1 .0f , 256
126
125
}, {
127
126
ASTCENC_PRE_THOROUGH,
128
- 4 , 82 , 60 , 30 , 93 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .3f , 1 .2f , 0 .97f , 1 .0f , 0 . 5f , 4096
127
+ 4 , 82 , 60 , 30 , 93 , 4 , 4 , 3 , 2 , 2 , 105 .0f , 77 .0f , 10 .0f , 1 .3f , 1 .2f , 0 .97f , 1 .0f , 256
129
128
}, {
130
129
ASTCENC_PRE_VERYTHOROUGH,
131
- 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 5 , 2 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 1 .0f , 0 . 4f , 4096
130
+ 4 , 256 , 128 , 64 , 98 , 4 , 6 , 8 , 5 , 2 , 200 .0f , 200 .0f , 10 .0f , 1 .6f , 1 .4f , 0 .98f , 1 .0f , 256
132
131
}, {
133
132
ASTCENC_PRE_EXHAUSTIVE,
134
- 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 1 .0f , 0 . 2f , 4096
133
+ 4 , 256 , 256 , 256 , 100 , 4 , 8 , 8 , 8 , 8 , 200 .0f , 200 .0f , 10 .0f , 2 .0f , 2 .0f , 0 .99f , 1 .0f , 256
135
134
}
136
135
}};
137
136
@@ -415,7 +414,7 @@ static astcenc_error validate_config(
415
414
config.tune_2plane_early_out_limit_correlation = astc::max (config.tune_2plane_early_out_limit_correlation , 0 .0f );
416
415
417
416
config.rdo_quality = astc::clamp (config.rdo_quality , 0 .001f , 50 .0f );
418
- config.rdo_dict_size = astc::clamp (config.rdo_dict_size , 64u , 65536u );
417
+ config.rdo_lookback = astc::clamp (config.rdo_lookback , 4u , 4096u );
419
418
config.rdo_max_smooth_block_error_scale = astc::clamp (config.rdo_max_smooth_block_error_scale , 1 .0f , 300 .0f );
420
419
config.rdo_max_smooth_block_std_dev = astc::clamp (config.rdo_max_smooth_block_std_dev , 0 .01f , 65536 .0f );
421
420
@@ -535,8 +534,7 @@ astcenc_error astcenc_config_init(
535
534
config.tune_3partition_early_out_limit_factor = (*preset_configs)[start].tune_3partition_early_out_limit_factor ;
536
535
config.tune_2plane_early_out_limit_correlation = (*preset_configs)[start].tune_2plane_early_out_limit_correlation ;
537
536
config.tune_search_mode0_enable = (*preset_configs)[start].tune_search_mode0_enable ;
538
- config.rdo_quality = (*preset_configs)[start].rdo_quality ;
539
- config.rdo_dict_size = (*preset_configs)[start].rdo_dict_size ;
537
+ config.rdo_lookback = (*preset_configs)[start].rdo_lookback ;
540
538
}
541
539
// Start and end node are not the same - so interpolate between them
542
540
else
@@ -576,13 +574,13 @@ astcenc_error astcenc_config_init(
576
574
config.tune_3partition_early_out_limit_factor = LERP (tune_3partition_early_out_limit_factor);
577
575
config.tune_2plane_early_out_limit_correlation = LERP (tune_2plane_early_out_limit_correlation);
578
576
config.tune_search_mode0_enable = LERP (tune_search_mode0_enable);
579
- config.rdo_quality = LERP (rdo_quality);
580
- config.rdo_dict_size = LERPUI (rdo_dict_size);
577
+ config.rdo_lookback = LERPUI (rdo_lookback);
581
578
#undef LERP
582
579
#undef LERPI
583
580
#undef LERPUI
584
581
}
585
582
583
+ config.rdo_quality = 0 .5f ;
586
584
config.rdo_max_smooth_block_error_scale = 10 .0f ;
587
585
config.rdo_max_smooth_block_std_dev = 18 .0f ;
588
586
0 commit comments