首页 > 解决方案 > HLSL / GLSL 高精度sqrt可行吗?

问题描述

声波图后处理 Math.Sqrt() 质量高,CPU 速度慢。在 Unity 游戏引擎上使用 HLSL 在 GFX 卡上速度快且质量低。它看起来像12位,大概是16位。

有没有办法在 GFX 卡上进行精确的sqrt()近似/等效?

在此处输入图像描述

这是代码,它是 HLSL

        void surf (Input IN, inout SurfaceOutput o) {

            float4 c = tex2D (_MainTex, IN.uv_MainTex);         
            c = sqrt(c);
            o.Albedo = c.rgb;
            o.Alpha = c.a;          

    }

标签: unity3dshaderhlslsqrt

解决方案


将此行添加到您的着色器代码中:

#pragma fragmentoption ARB_precision_hint_nicest

推荐阅读