You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在HLSL中如何将float赋值为NaN?如何返回float3(nan, nan, nan)?

float3类型自定义函数异常分支返回值实现方案

你可以根据运行环境选择以下两种常用实现方式:

  • 返回全NaN的float3值
    如果你使用的是HLSL、GLSL、Unity ShaderLab等支持float3构造的着色器语言,直接传入三个NaN值构造即可:
    float3 CustomFunc(bool condition)
    {
        if(condition)
        {
            // 满足条件时的正常返回逻辑
            return float3(0.5f, 0.5f, 1.0f);
        }
        // 异常分支返回全NaN
        return float3(nan, nan, nan);
    }
    
    若运行环境未提供全局nan常量,可以通过0.0f / 0.0f的运算得到NaN值:
    float nan = 0.0f / 0.0f;
    return float3(nan, nan, nan);
    
  • 返回全无穷大的float3值
    无穷大值同样可以作为异常返回的标记值,构造方式如下:
    // 方式1:运算得到正无穷
    float inf = 1.0f / 0.0f;
    return float3(inf, inf, inf);
    // 方式2:部分环境支持直接调用inf常量
    return float3(inf, inf, inf);
    

注意:后续使用该函数返回值时,需要先校验值的有效性,确认不是NaN或无穷大后再参与后续运算,避免非法值导致输出结果异常。

内容的提问来源于stack exchange,提问作者Jimmy Diddler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:24:06