Comprehensive graphics optimization system for YAZE ROM hacking. More...
#include <graphics_optimizer.h>
Public Member Functions | |
void | Initialize () |
Initialize the graphics optimizer. | |
OptimizationResult | OptimizeSheet (const std::vector< uint8_t > &sheet_data, int sheet_id, const SnesPalette &palette, OptimizationStrategy strategy=OptimizationStrategy::kBalanced) |
Optimize a single graphics sheet. | |
OptimizationResult | OptimizeSheets (const std::unordered_map< int, std::vector< uint8_t > > &sheets, const std::unordered_map< int, SnesPalette > &palettes, OptimizationStrategy strategy=OptimizationStrategy::kBalanced) |
Optimize multiple graphics sheets. | |
SheetOptimizationData | AnalyzeSheet (const std::vector< uint8_t > &sheet_data, int sheet_id, const SnesPalette &palette) |
Analyze graphics sheet for optimization opportunities. | |
std::unordered_map< int, SheetOptimizationData > | GetOptimizationRecommendations (const std::unordered_map< int, std::vector< uint8_t > > &sheets, const std::unordered_map< int, SnesPalette > &palettes) |
Get optimization recommendations for all sheets. | |
OptimizationResult | ApplyOptimizations (const std::unordered_map< int, SheetOptimizationData > &recommendations, std::unordered_map< int, std::vector< uint8_t > > &sheets, std::unordered_map< int, SnesPalette > &palettes) |
Apply optimization recommendations. | |
std::unordered_map< std::string, double > | GetOptimizationStats () const |
Get optimization statistics. | |
void | ClearCache () |
Clear optimization cache. | |
void | SetOptimizationParameters (float max_quality_loss=0.1f, size_t min_memory_savings=1024, float performance_threshold=0.05f) |
Set optimization parameters. | |
Static Public Member Functions | |
static GraphicsOptimizer & | Get () |
Private Member Functions | |
GraphicsOptimizer ()=default | |
~GraphicsOptimizer ()=default | |
BppFormat | DetermineOptimalFormat (const std::vector< uint8_t > &data, const SnesPalette &palette, OptimizationStrategy strategy) |
float | CalculateQualityLoss (BppFormat from_format, BppFormat to_format, const std::vector< uint8_t > &data) |
size_t | CalculateMemorySavings (BppFormat from_format, BppFormat to_format, const std::vector< uint8_t > &data) |
float | CalculatePerformanceGain (BppFormat from_format, BppFormat to_format) |
bool | ShouldOptimize (const SheetOptimizationData &data, OptimizationStrategy strategy) |
std::string | GenerateOptimizationReason (const SheetOptimizationData &data) |
int | CountUsedColors (const std::vector< uint8_t > &data, const SnesPalette &palette) |
float | CalculateColorEfficiency (const std::vector< uint8_t > &data, const SnesPalette &palette) |
std::vector< int > | AnalyzeColorDistribution (const std::vector< uint8_t > &data) |
std::string | GenerateCacheKey (const std::vector< uint8_t > &data, int sheet_id) |
void | UpdateOptimizationStats (const std::string &operation, double value) |
Private Attributes | |
float | max_quality_loss_ |
size_t | min_memory_savings_ |
float | performance_threshold_ |
std::unordered_map< std::string, double > | optimization_stats_ |
std::unordered_map< std::string, SheetOptimizationData > | optimization_cache_ |
Comprehensive graphics optimization system for YAZE ROM hacking.
The GraphicsOptimizer provides intelligent optimization of graphics data for Link to the Past ROM hacking workflows, balancing memory usage, performance, and visual quality.
Key Features:
Optimization Strategies:
ROM Hacking Specific:
Definition at line 86 of file graphics_optimizer.h.
|
privatedefault |
|
privatedefault |
|
static |
Definition at line 13 of file graphics_optimizer.cc.
void yaze::gfx::GraphicsOptimizer::Initialize | ( | ) |
Initialize the graphics optimizer.
Definition at line 18 of file graphics_optimizer.cc.
References max_quality_loss_, min_memory_savings_, optimization_cache_, optimization_stats_, and performance_threshold_.
OptimizationResult yaze::gfx::GraphicsOptimizer::OptimizeSheet | ( | const std::vector< uint8_t > & | sheet_data, |
int | sheet_id, | ||
const SnesPalette & | palette, | ||
OptimizationStrategy | strategy = OptimizationStrategy::kBalanced |
||
) |
Optimize a single graphics sheet.
sheet_data | Graphics sheet data |
sheet_id | Sheet identifier |
palette | Sheet palette |
strategy | Optimization strategy |
Definition at line 27 of file graphics_optimizer.cc.
References AnalyzeSheet(), CalculatePerformanceGain(), CalculateQualityLoss(), yaze::gfx::SheetOptimizationData::current_format, yaze::gfx::SheetOptimizationData::current_size, yaze::gfx::SheetOptimizationData::is_convertible, max_quality_loss_, yaze::gfx::OptimizationResult::memory_saved, yaze::gfx::OptimizationResult::message, min_memory_savings_, yaze::gfx::SheetOptimizationData::optimized_size, yaze::gfx::OptimizationResult::performance_gain, performance_threshold_, yaze::gfx::OptimizationResult::quality_loss, yaze::gfx::SheetOptimizationData::recommended_format, yaze::gfx::OptimizationResult::recommended_formats, yaze::gfx::OptimizationResult::sheet_recommendations, ShouldOptimize(), yaze::gfx::OptimizationResult::success, and UpdateOptimizationStats().
Referenced by OptimizeSheets().
OptimizationResult yaze::gfx::GraphicsOptimizer::OptimizeSheets | ( | const std::unordered_map< int, std::vector< uint8_t > > & | sheets, |
const std::unordered_map< int, SnesPalette > & | palettes, | ||
OptimizationStrategy | strategy = OptimizationStrategy::kBalanced |
||
) |
Optimize multiple graphics sheets.
sheets | Map of sheet ID to sheet data |
palettes | Map of sheet ID to palette |
strategy | Optimization strategy |
Definition at line 87 of file graphics_optimizer.cc.
References yaze::gfx::OptimizationResult::memory_saved, yaze::gfx::OptimizationResult::message, OptimizeSheet(), yaze::gfx::OptimizationResult::performance_gain, yaze::gfx::OptimizationResult::quality_loss, yaze::gfx::OptimizationResult::recommended_formats, yaze::gfx::OptimizationResult::sheet_recommendations, yaze::gfx::OptimizationResult::success, and UpdateOptimizationStats().
SheetOptimizationData yaze::gfx::GraphicsOptimizer::AnalyzeSheet | ( | const std::vector< uint8_t > & | sheet_data, |
int | sheet_id, | ||
const SnesPalette & | palette | ||
) |
Analyze graphics sheet for optimization opportunities.
sheet_data | Graphics sheet data |
sheet_id | Sheet identifier |
palette | Sheet palette |
Definition at line 148 of file graphics_optimizer.cc.
References yaze::gfx::SheetOptimizationData::colors_used, yaze::gfx::SheetOptimizationData::compression_ratio, CountUsedColors(), yaze::gfx::SheetOptimizationData::current_format, yaze::gfx::SheetOptimizationData::current_size, yaze::gfx::BppFormatManager::DetectFormat(), DetermineOptimalFormat(), GenerateCacheKey(), GenerateOptimizationReason(), yaze::gfx::BppFormatManager::Get(), yaze::gfx::BppFormatManager::GetFormatInfo(), yaze::gfx::SheetOptimizationData::is_convertible, yaze::gfx::kBalanced, optimization_cache_, yaze::gfx::SheetOptimizationData::optimization_reason, yaze::gfx::SheetOptimizationData::optimized_size, yaze::gfx::SheetOptimizationData::recommended_format, and yaze::gfx::SheetOptimizationData::sheet_id.
Referenced by GetOptimizationRecommendations(), and OptimizeSheet().
std::unordered_map< int, SheetOptimizationData > yaze::gfx::GraphicsOptimizer::GetOptimizationRecommendations | ( | const std::unordered_map< int, std::vector< uint8_t > > & | sheets, |
const std::unordered_map< int, SnesPalette > & | palettes | ||
) |
Get optimization recommendations for all sheets.
sheets | Map of sheet ID to sheet data |
palettes | Map of sheet ID to palette |
Definition at line 201 of file graphics_optimizer.cc.
References AnalyzeSheet().
OptimizationResult yaze::gfx::GraphicsOptimizer::ApplyOptimizations | ( | const std::unordered_map< int, SheetOptimizationData > & | recommendations, |
std::unordered_map< int, std::vector< uint8_t > > & | sheets, | ||
std::unordered_map< int, SnesPalette > & | palettes | ||
) |
Apply optimization recommendations.
recommendations | Optimization recommendations |
sheets | Map of sheet ID to sheet data (modified in place) |
palettes | Map of sheet ID to palette (modified in place) |
Definition at line 220 of file graphics_optimizer.cc.
References yaze::gfx::BppFormatManager::ConvertFormat(), yaze::gfx::BppFormatManager::Get(), yaze::gfx::OptimizationResult::memory_saved, yaze::gfx::OptimizationResult::message, yaze::gfx::BppFormatManager::OptimizePaletteForFormat(), yaze::gfx::OptimizationResult::sheet_recommendations, yaze::gfx::OptimizationResult::success, and UpdateOptimizationStats().
std::unordered_map< std::string, double > yaze::gfx::GraphicsOptimizer::GetOptimizationStats | ( | ) | const |
Get optimization statistics.
Definition at line 286 of file graphics_optimizer.cc.
References optimization_stats_.
void yaze::gfx::GraphicsOptimizer::ClearCache | ( | ) |
Clear optimization cache.
Definition at line 290 of file graphics_optimizer.cc.
References optimization_cache_, and optimization_stats_.
void yaze::gfx::GraphicsOptimizer::SetOptimizationParameters | ( | float | max_quality_loss = 0.1f , |
size_t | min_memory_savings = 1024 , |
||
float | performance_threshold = 0.05f |
||
) |
Set optimization parameters.
max_quality_loss | Maximum acceptable quality loss (0.0-1.0) |
min_memory_savings | Minimum required memory savings (bytes) |
performance_threshold | Minimum performance gain threshold |
Definition at line 295 of file graphics_optimizer.cc.
References max_quality_loss_, min_memory_savings_, and performance_threshold_.
|
private |
Definition at line 305 of file graphics_optimizer.cc.
References CountUsedColors(), yaze::gfx::kBalanced, yaze::gfx::kBpp2, yaze::gfx::kBpp3, yaze::gfx::kBpp4, yaze::gfx::kBpp8, yaze::gfx::kMemoryOptimized, yaze::gfx::kPerformanceOptimized, and yaze::gfx::kQualityOptimized.
Referenced by AnalyzeSheet().
|
private |
Definition at line 346 of file graphics_optimizer.cc.
Referenced by OptimizeSheet().
|
private |
Definition at line 362 of file graphics_optimizer.cc.
References yaze::gfx::BppFormatInfo::bits_per_pixel, yaze::gfx::BppFormatManager::Get(), and yaze::gfx::BppFormatManager::GetFormatInfo().
|
private |
Definition at line 378 of file graphics_optimizer.cc.
Referenced by OptimizeSheet().
|
private |
Definition at line 393 of file graphics_optimizer.cc.
References yaze::gfx::SheetOptimizationData::compression_ratio, yaze::gfx::SheetOptimizationData::is_convertible, yaze::gfx::kBalanced, yaze::gfx::kMemoryOptimized, yaze::gfx::kPerformanceOptimized, and yaze::gfx::kQualityOptimized.
Referenced by OptimizeSheet().
|
private |
Definition at line 415 of file graphics_optimizer.cc.
References yaze::gfx::SheetOptimizationData::colors_used, yaze::gfx::SheetOptimizationData::compression_ratio, yaze::gfx::SheetOptimizationData::current_format, yaze::gfx::BppFormatManager::Get(), yaze::gfx::BppFormatManager::GetFormatInfo(), yaze::gfx::BppFormatInfo::name, and yaze::gfx::SheetOptimizationData::recommended_format.
Referenced by AnalyzeSheet().
|
private |
Definition at line 430 of file graphics_optimizer.cc.
References yaze::gfx::SnesPalette::size().
Referenced by AnalyzeSheet(), CalculateColorEfficiency(), and DetermineOptimalFormat().
|
private |
Definition at line 449 of file graphics_optimizer.cc.
References CountUsedColors(), and yaze::gfx::SnesPalette::size().
|
private |
Definition at line 455 of file graphics_optimizer.cc.
|
private |
Definition at line 466 of file graphics_optimizer.cc.
Referenced by AnalyzeSheet().
|
private |
Definition at line 481 of file graphics_optimizer.cc.
References optimization_stats_.
Referenced by ApplyOptimizations(), OptimizeSheet(), and OptimizeSheets().
|
private |
Definition at line 178 of file graphics_optimizer.h.
Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().
|
private |
Definition at line 179 of file graphics_optimizer.h.
Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().
|
private |
Definition at line 180 of file graphics_optimizer.h.
Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().
|
private |
Definition at line 183 of file graphics_optimizer.h.
Referenced by ClearCache(), GetOptimizationStats(), Initialize(), and UpdateOptimizationStats().
|
private |
Definition at line 186 of file graphics_optimizer.h.
Referenced by AnalyzeSheet(), ClearCache(), and Initialize().