[clang] [HLSL] Implement the `lit` intrinsic (PR #134171)
Sarah Spall via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 2 16:20:02 PDT 2025
================
@@ -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 &&
+ __detail::is_same<half, T>::value,
+ vector<T, 4>> lit(T NDotL, T NDotH, T M) {
+ return __detail::lit_impl(NDotL, NDotH, M);
+}
+
+template <typename T>
+const inline __detail::enable_if_t<__detail::is_arithmetic<T>::Value &&
+ __detail::is_same<float, T>::value,
+ vector<T, 4>>
----------------
spall wrote:
nit: this looks the same as line 275, can you move 'lit(T NDotL .....' to this line so it matches 275?
https://github.com/llvm/llvm-project/pull/134171
More information about the cfe-commits
mailing list