shared = exp_shared_p; if (max_s == (1 << n)) { exp_shared += 1; } let scalar = 1.0 / exp2(f32(exp_shared - b - n)); let red_s = u32(red_c * scalar + 0.5); let green_s = u32(green_c * scalar + 0.5); let blue_s = u32(blue_c * scalar + 0.5); const mask_9 = 0x1ffu; let result = (u32(exp_shared) << 27u) | ((blue_s & mask_9) << 18u) | ((green_s & mask_9) << 9u) | (red_s & mask_9); return result; }