Normal Map Compression via Center-Extent Storage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The octahedral transform used for normal map encoding can cause XYZ values that are close together in the original map to become far apart in octahedral space, making them difficult to compress accurately using existing GPU block compression formats like BC5.

Innovation Solution

Instead of storing the endpoints explicitly, the proposed solution stores 'center' and 'extents' values for the normal map components, allowing values outside the range [−1,1] to be represented. This transformation is invertible and allows for accurate reconstruction of the original endpoint values.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Manufacturing precision

If the octahedral transform is used to convert XYZ normal map values to 2-component XY values, then the data can be compressed using existing GPU block compression formats like BC5, but XYZ values that are close together in the original map become far apart in octahedral space, reducing compression accuracy

Engineering Contradiction:
Improvecompression accuracyVSAvoiddistance distortion
Core Design Contradiction:
Manufacturing precisionVSLoss of information

Solution Approach 1:

The patent changes the parameter representation from storing endpoint values to storing center and extent values. This allows the normal map data to be represented in a way that maintains spatial relationships better during compression, as the center and extent representation is more resilient to the octahedral transform's distortion effects

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

Instead of transforming the original endpoint values directly and accepting the distortion, the patent inverts the approach by transforming center and extent values. This inversion allows for better preservation of spatial relationships because the center-point representation is less affected by the octahedral projection's distortion

Inventive Principle:
Principle #13The other way round (Inversion)

2Manufacturing precision

If endpoint values are stored explicitly for normal map compression, then the compression format is simple to implement, but values outside the range [−1,1] cannot be represented, limiting compression accuracy

Engineering Contradiction:
Improvecompression accuracyVSAvoidstorage format complexity
Core Design Contradiction:
Manufacturing precisionVSDevice complexity

Solution Approach 1:

The patent changes the storage parameters from endpoint values to center and extent values. This parameter change enables representation of values outside the traditional [−1,1] range while maintaining a storage format that is still compatible with existing GPU compression pipelines

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The center and extent values serve as an intermediary representation that bridges the gap between the octahedral transform output and the compression format requirements. This intermediary representation allows for extended value ranges while maintaining compatibility with compression algorithms

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS12299803B2High precision normal map compression using wrapped octahedral mapping
Publication Date: 2025.05.13 SONY INTERACTIVE ENTERTAINMENT LLC
  • US12299803B2 patent drawing
  • US12299803B2 patent drawing
  • US12299803B2 patent drawing

AI summary

Techniques are described for encoding a normal map of a computer graphics texture. identify a normal map associated with a computer graphics texture. X and Z components of the normal map are associated with respective first and second channels with each channel being represented as two respective pair of endpoint values and 6-bits of interpolation indices. The channels including negative Z values are projected to octahedral space with interpolated index values being allowed outside the range of [−1, 1], and a symmetry operation executed to bring the interpolation indices values into the range [−1, 1].