================ @@ -253,6 +253,37 @@ const inline float length(__detail::HLSL_FIXED_VECTOR<float, N> X) { return __detail::length_vec_impl(X); } +//===----------------------------------------------------------------------===// +// lit builtins +//===----------------------------------------------------------------------===// + +/// \fn vector<T, 4> lit(T NDotL, T NDotH, T M) +/// \brief Returns a lighting coefficient vector. +/// \param NDotL The dot product of the normalized surface normal and the +/// light vector. +/// \param NDotH The dot product of the half-angle vector and the surface +/// normal. +/// \param M A specular exponent. +/// +/// This function returns a lighting coefficient vector (ambient, diffuse, +/// specular, 1). + +template <typename T> +_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2) +const inline __detail::enable_if_t<__detail::is_arithmetic<T>::Value && ---------------- Icohedron wrote:
I agree we should avoid using templates where we can, especially in this case. A macro also already exists to handle the compatibility overload for doubles in the case of a function accepting three floats. ```c++ _DXC_COMPAT_TERNARY_DOUBLE_OVERLOADS(lit) ``` https://github.com/llvm/llvm-project/pull/134171 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits