如何解决HLSL 奇数行为加/减小数
在 HLSL 计算着色器中添加/减去 0.002 左右的数字时,会出现一些非常奇怪的行为。
#pragma kernel Fade
RWTexture2D<float4> Result;
[numthreads(8,8,1)]
void Fade (uint3 id : SV_DispatchThreadID)
{
Result[id.xy] = Result[id.xy] + 0.001;
}
Result 是显示的纹理,它最初作为黑色传入。这个想法是实现缓慢淡入白色,当我将数字设置为 0.0023 或以上时有效,但在低于时无效。
以下是导致不同行为的案例列表:
- 0.0022 以灰色结束,不会进一步变亮
- 0.00221 再次亮起。
- 0.00219 不亮。
从非黑色中减去时:
- 0.00195 不减去
- 0.00196 确实减去
对此的任何提示将不胜感激。
解决方法
我找到了答案:出于某种原因,Unity 默认使用非常有限的 RenderTextureFormat。我现在修改了渲染纹理定义以读取
renderTexture = new RenderTexture(width,height,32,RenderTextureFormat.ARGBFloat);
现在一切都完美无缺。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。