27af716c3a
This roughly matches their semantics in SPIR-V and MSL. For `FMin`, `FMax`, and `FClamp`, and the Metal functions `fast::min()`, `fast::max()`, and `fast::clamp()`, the result is undefined if any operand is NaN. For the 'N' operations and their corresponding MSL `precise::` functions, the result is consistent with IEEE 754 (first non-NaN wins; result is NaN if all operands are NaN). We can only do this with 32-bit floats, though, because Metal only provides these variants for `float`. `half` only has one variant of these functions that is presumably consistent with IEEE 754. I guess that's OK; the SPIR-V spec only says that `F{Min,Max,Clamp}` are undefined for NaNs. Performance might suffer, though. |
||
---|---|---|
.. | ||
basic.vert | ||
copy.flatten.vert | ||
dynamic.flatten.vert | ||
functions.vert | ||
in_out_array_mat.vert | ||
no_stage_out.vert | ||
no_stage_out.write_buff_atomic.vert | ||
no_stage_out.write_buff.vert | ||
no_stage_out.write_tex.vert | ||
out_block.vert | ||
packed_matrix.vert | ||
pointsize.vert | ||
read-from-row-major-array.vert | ||
return-array.vert | ||
set_builtin_in_func.vert | ||
texture_buffer.vert | ||
ubo.alignment.vert | ||
ubo.vert |