X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plugins%2Fgpu_unai%2Fgpu_inner_light.h;h=f4f685bb518435da8ace74ead6dc86f504cabbc8;hb=0c3991955794fe1e0159b62839af1f683a23a981;hp=b041dc35b4127e47026a11739802d970285c8e8a;hpb=030d1121f27550429364745419fc5e6161a2a431;p=pcsx_rearmed.git diff --git a/plugins/gpu_unai/gpu_inner_light.h b/plugins/gpu_unai/gpu_inner_light.h index b041dc35..f4f685bb 100644 --- a/plugins/gpu_unai/gpu_inner_light.h +++ b/plugins/gpu_unai/gpu_inner_light.h @@ -127,7 +127,7 @@ GPU_INLINE u32 gpuPackGouraudColInc(s32 dr, s32 dg, s32 db) // ^ bit 16 // Where 'r,g,b' are integer bits of colors, 'X' fixed-pt, and '0' zero //////////////////////////////////////////////////////////////////////////////// -GPU_INLINE u16 gpuLightingRGB(u32 gCol) +GPU_INLINE uint_fast16_t gpuLightingRGBGeneric(u32 gCol) { return ((gCol<< 5)&0x7C00) | ((gCol>>11)&0x03E0) | @@ -168,11 +168,12 @@ GPU_INLINE u32 gpuLightingRGB24(u32 gCol) // u16 output: 0bbbbbgggggrrrrr // Where 'X' are fixed-pt bits, '0' is zero-padding, and '-' is don't care //////////////////////////////////////////////////////////////////////////////// -GPU_INLINE u16 gpuLightingTXT(u16 uSrc, u8 r5, u8 g5, u8 b5) +GPU_INLINE uint_fast16_t gpuLightingTXTGeneric(uint_fast16_t uSrc, u8 r5, u8 g5, u8 b5) { return (gpu_unai.LightLUT[((uSrc&0x7C00)>>5) | b5] << 10) | (gpu_unai.LightLUT[ (uSrc&0x03E0) | g5] << 5) | - (gpu_unai.LightLUT[((uSrc&0x001F)<<5) | r5] ); + (gpu_unai.LightLUT[((uSrc&0x001F)<<5) | r5] ) | + (uSrc & 0x8000); } @@ -190,11 +191,12 @@ GPU_INLINE u16 gpuLightingTXT(u16 uSrc, u8 r5, u8 g5, u8 b5) // u16 output: 0bbbbbgggggrrrrr // Where 'X' are fixed-pt bits, '0' is zero-padding, and '-' is don't care //////////////////////////////////////////////////////////////////////////////// -GPU_INLINE u16 gpuLightingTXTGouraud(u16 uSrc, u32 gCol) +GPU_INLINE uint_fast16_t gpuLightingTXTGouraudGeneric(uint_fast16_t uSrc, u32 gCol) { return (gpu_unai.LightLUT[((uSrc&0x7C00)>>5) | ((gCol>> 5)&0x1F)]<<10) | (gpu_unai.LightLUT[ (uSrc&0x03E0) | ((gCol>>16)&0x1F)]<< 5) | - (gpu_unai.LightLUT[((uSrc&0x001F)<<5) | (gCol>>27) ] ); + (gpu_unai.LightLUT[((uSrc&0x001F)<<5) | (gCol>>27) ]) | + (uSrc & 0x8000); } @@ -214,15 +216,15 @@ GPU_INLINE u16 gpuLightingTXTGouraud(u16 uSrc, u32 gCol) // ^ bit 31 // Where 'X' are fixed-pt bits, '0' is zero-padding, and '-' is don't care //////////////////////////////////////////////////////////////////////////////// -GPU_INLINE u32 gpuLightingTXT24(u16 uSrc, u8 r8, u8 g8, u8 b8) +GPU_INLINE u32 gpuLightingTXT24(uint_fast16_t uSrc, u8 r8, u8 g8, u8 b8) { - u16 r1 = uSrc&0x001F; - u16 g1 = uSrc&0x03E0; - u16 b1 = uSrc&0x7C00; + uint_fast16_t r1 = uSrc&0x001F; + uint_fast16_t g1 = uSrc&0x03E0; + uint_fast16_t b1 = uSrc&0x7C00; - u16 r2 = r8; - u16 g2 = g8; - u16 b2 = b8; + uint_fast16_t r2 = r8; + uint_fast16_t g2 = g8; + uint_fast16_t b2 = b8; u32 r3 = r1 * r2; if (r3 & 0xFFFFF000) r3 = ~0xFFFFF000; u32 g3 = g1 * g2; if (g3 & 0xFFFE0000) g3 = ~0xFFFE0000; @@ -249,15 +251,15 @@ GPU_INLINE u32 gpuLightingTXT24(u16 uSrc, u8 r8, u8 g8, u8 b8) // ^ bit 31 // Where 'X' are fixed-pt bits, '0' is zero-padding, and '-' is don't care //////////////////////////////////////////////////////////////////////////////// -GPU_INLINE u32 gpuLightingTXT24Gouraud(u16 uSrc, u32 gCol) +GPU_INLINE u32 gpuLightingTXT24Gouraud(uint_fast16_t uSrc, u32 gCol) { - u16 r1 = uSrc&0x001F; - u16 g1 = uSrc&0x03E0; - u16 b1 = uSrc&0x7C00; + uint_fast16_t r1 = uSrc&0x001F; + uint_fast16_t g1 = uSrc&0x03E0; + uint_fast16_t b1 = uSrc&0x7C00; - u16 r2 = (gCol>>24) & 0xFF; - u16 g2 = (gCol>>13) & 0xFF; - u16 b2 = (gCol>> 2) & 0xFF; + uint_fast16_t r2 = (gCol>>24) & 0xFF; + uint_fast16_t g2 = (gCol>>13) & 0xFF; + uint_fast16_t b2 = (gCol>> 2) & 0xFF; u32 r3 = r1 * r2; if (r3 & 0xFFFFF000) r3 = ~0xFFFFF000; u32 g3 = g1 * g2; if (g3 & 0xFFFE0000) g3 = ~0xFFFE0000;