Skip to content

vkd3d-shader/hlsl: transpose(), smoothstep(), and properly convert args of element-wise intrinsics.

This patch series includes an implementation of the long-pending transpose intrinsic and the smoothstep intrinsic.

While implementing smoothstep I realized that some intrinsics have different rules for the allowed data types than expressions:

  • Vectors and matrices at the same time are not allowed, regardless of their dimensions. Even if they have the same number of components.

  • Any combination of matrices is always allowed, even those when no matrix fits inside another, e.g.:

    float2x3 is compatible with float3x2, resulting in float2x2.

    The common data type is the min on each dimension.

This is the case for max, pow, ldexp, clamp and smoothstep; which suggest that it is the case for all intrinsics where the operation is applied element-wise. So this was corrected.

A minor fix in pow's type conversion is also included.

Edited by Francisco Casas

Merge request reports

Loading