Skip to content
Permalink
Browse files

TexCache: Round DXT5 alpha up.

This isn't quite right, but it seems better than rounding down.
Experimented with a lower round up value, but none were right - the
weighting must be more complex.
  • Loading branch information...
unknownbrackets committed Nov 4, 2018
1 parent df200fc commit bd294f658f7abc95d946d096e64f355ff6dc67fd
Showing with 2 additions and 2 deletions.
  1. +2 −2 GPU/Common/TextureDecoder.cpp
@@ -385,13 +385,13 @@ static inline u8 lerp8(const DXT5Block *src, int n) {
// These weights translate alpha1/alpha2 to fixed 8.8 point, pre-divided by 7.
int weight1 = ((7 - n) << 8) / 7;
int weight2 = (n << 8) / 7;
return (u8)((src->alpha1 * weight1 + src->alpha2 * weight2) >> 8);
return (u8)((src->alpha1 * weight1 + src->alpha2 * weight2 + 255) >> 8);
}

static inline u8 lerp6(const DXT5Block *src, int n) {
int weight1 = ((5 - n) << 8) / 5;
int weight2 = (n << 8) / 5;
return (u8)((src->alpha1 * weight1 + src->alpha2 * weight2) >> 8);
return (u8)((src->alpha1 * weight1 + src->alpha2 * weight2 + 255) >> 8);
}

void DXTDecoder::DecodeAlphaDXT5(const DXT5Block *src) {

0 comments on commit bd294f6

Please sign in to comment.
You can’t perform that action at this time.