yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::gfx::GraphicsOptimizer Class Reference

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, SheetOptimizationDataGetOptimizationRecommendations (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 GraphicsOptimizerGet ()
 

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, SheetOptimizationDataoptimization_cache_
 

Detailed Description

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:

  • Intelligent BPP format optimization based on actual color usage
  • Graphics sheet analysis and conversion recommendations
  • Memory usage optimization with quality preservation
  • Performance optimization through atlas rendering
  • Batch processing for multiple graphics sheets
  • Quality analysis and loss estimation

Optimization Strategies:

  • Memory Optimized: Minimize ROM size by using optimal BPP formats
  • Performance Optimized: Maximize rendering speed through atlas optimization
  • Quality Optimized: Preserve visual fidelity while optimizing
  • Balanced: Optimal balance of memory, performance, and quality

ROM Hacking Specific:

  • SNES-specific optimization patterns
  • Graphics sheet format analysis and conversion tracking
  • Palette optimization based on actual usage
  • Integration with existing YAZE graphics pipeline

Definition at line 95 of file graphics_optimizer.h.

Constructor & Destructor Documentation

◆ GraphicsOptimizer()

yaze::gfx::GraphicsOptimizer::GraphicsOptimizer ( )
privatedefault

◆ ~GraphicsOptimizer()

yaze::gfx::GraphicsOptimizer::~GraphicsOptimizer ( )
privatedefault

Member Function Documentation

◆ Get()

GraphicsOptimizer & yaze::gfx::GraphicsOptimizer::Get ( )
static

Definition at line 13 of file graphics_optimizer.cc.

◆ Initialize()

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_.

◆ OptimizeSheet()

◆ 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.

Parameters
sheetsMap of sheet ID to sheet data
palettesMap of sheet ID to palette
strategyOptimization strategy
Returns
Optimization result

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().

Here is the call graph for this function:

◆ AnalyzeSheet()

◆ GetOptimizationRecommendations()

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.

Parameters
sheetsMap of sheet ID to sheet data
palettesMap of sheet ID to palette
Returns
Map of sheet ID to optimization data

Definition at line 201 of file graphics_optimizer.cc.

References AnalyzeSheet().

Here is the call graph for this function:

◆ ApplyOptimizations()

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.

Parameters
recommendationsOptimization recommendations
sheetsMap of sheet ID to sheet data (modified in place)
palettesMap of sheet ID to palette (modified in place)
Returns
Optimization result

Definition at line 219 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().

Here is the call graph for this function:

◆ GetOptimizationStats()

std::unordered_map< std::string, double > yaze::gfx::GraphicsOptimizer::GetOptimizationStats ( ) const

Get optimization statistics.

Returns
Map of optimization statistics

Definition at line 284 of file graphics_optimizer.cc.

References optimization_stats_.

◆ ClearCache()

void yaze::gfx::GraphicsOptimizer::ClearCache ( )

Clear optimization cache.

Definition at line 288 of file graphics_optimizer.cc.

References optimization_cache_, and optimization_stats_.

◆ SetOptimizationParameters()

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.

Parameters
max_quality_lossMaximum acceptable quality loss (0.0-1.0)
min_memory_savingsMinimum required memory savings (bytes)
performance_thresholdMinimum performance gain threshold

Definition at line 293 of file graphics_optimizer.cc.

References max_quality_loss_, min_memory_savings_, and performance_threshold_.

◆ DetermineOptimalFormat()

BppFormat yaze::gfx::GraphicsOptimizer::DetermineOptimalFormat ( const std::vector< uint8_t > & data,
const SnesPalette & palette,
OptimizationStrategy strategy )
private

◆ CalculateQualityLoss()

float yaze::gfx::GraphicsOptimizer::CalculateQualityLoss ( BppFormat from_format,
BppFormat to_format,
const std::vector< uint8_t > & data )
private

Definition at line 344 of file graphics_optimizer.cc.

Referenced by OptimizeSheet().

◆ CalculateMemorySavings()

size_t yaze::gfx::GraphicsOptimizer::CalculateMemorySavings ( BppFormat from_format,
BppFormat to_format,
const std::vector< uint8_t > & data )
private

◆ CalculatePerformanceGain()

float yaze::gfx::GraphicsOptimizer::CalculatePerformanceGain ( BppFormat from_format,
BppFormat to_format )
private

Definition at line 376 of file graphics_optimizer.cc.

Referenced by OptimizeSheet().

◆ ShouldOptimize()

◆ GenerateOptimizationReason()

◆ CountUsedColors()

int yaze::gfx::GraphicsOptimizer::CountUsedColors ( const std::vector< uint8_t > & data,
const SnesPalette & palette )
private

Definition at line 428 of file graphics_optimizer.cc.

References yaze::gfx::SnesPalette::size().

Referenced by AnalyzeSheet(), CalculateColorEfficiency(), and DetermineOptimalFormat().

Here is the call graph for this function:

◆ CalculateColorEfficiency()

float yaze::gfx::GraphicsOptimizer::CalculateColorEfficiency ( const std::vector< uint8_t > & data,
const SnesPalette & palette )
private

Definition at line 447 of file graphics_optimizer.cc.

References CountUsedColors(), and yaze::gfx::SnesPalette::size().

Here is the call graph for this function:

◆ AnalyzeColorDistribution()

std::vector< int > yaze::gfx::GraphicsOptimizer::AnalyzeColorDistribution ( const std::vector< uint8_t > & data)
private

Definition at line 453 of file graphics_optimizer.cc.

◆ GenerateCacheKey()

std::string yaze::gfx::GraphicsOptimizer::GenerateCacheKey ( const std::vector< uint8_t > & data,
int sheet_id )
private

Definition at line 464 of file graphics_optimizer.cc.

Referenced by AnalyzeSheet().

◆ UpdateOptimizationStats()

void yaze::gfx::GraphicsOptimizer::UpdateOptimizationStats ( const std::string & operation,
double value )
private

Definition at line 479 of file graphics_optimizer.cc.

References optimization_stats_.

Referenced by ApplyOptimizations(), OptimizeSheet(), and OptimizeSheets().

Member Data Documentation

◆ max_quality_loss_

float yaze::gfx::GraphicsOptimizer::max_quality_loss_
private

Definition at line 187 of file graphics_optimizer.h.

Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().

◆ min_memory_savings_

size_t yaze::gfx::GraphicsOptimizer::min_memory_savings_
private

Definition at line 188 of file graphics_optimizer.h.

Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().

◆ performance_threshold_

float yaze::gfx::GraphicsOptimizer::performance_threshold_
private

Definition at line 189 of file graphics_optimizer.h.

Referenced by Initialize(), OptimizeSheet(), and SetOptimizationParameters().

◆ optimization_stats_

std::unordered_map<std::string, double> yaze::gfx::GraphicsOptimizer::optimization_stats_
private

◆ optimization_cache_

std::unordered_map<std::string, SheetOptimizationData> yaze::gfx::GraphicsOptimizer::optimization_cache_
private

Definition at line 195 of file graphics_optimizer.h.

Referenced by AnalyzeSheet(), ClearCache(), and Initialize().


The documentation for this class was generated from the following files: