GPUOpen-LibrariesAndSDKs / Capsaicin

AMD ARR team rendering framework
MIT License
363 stars 32 forks source link

unpackNormal unpack positive values only #17

Open Hineven opened 4 months ago

Hineven commented 4 months ago

core/src/math/pack.hlsl:481, the unpackNormal function fails to unpack normals with negative values packed with packNormal.

The current implementation of unpackNormal is:

/**
 * Convert 10bit snorms to normal vector.
 * @param packedValue Input snorm values to convert.
 * @returns Converted float values (range [-1,1]).
 */
float3 unpackNormal(uint packedValue)
{
    uint3 value = uint3(packedValue, packedValue >> 10,
        packedValue >> 20) & 0x3FFu.xxx;
    return float3(value) * (1.0f / 511.0f).xxx;
}

It fails to unpack negative values.

maoliver-amd commented 4 months ago

Thanks, weve fixed this internally and should be out in the next release version.