如何解决HLSL舍入不总是正确舍入
我正在尝试为Minecraft Bedrock版创建HLSL着色器。由于无法以合理的方式将自己的数据传递给着色器,因此我使用颜色的红色通道传递范围为0到60的变量。因此我将值除以60并将其设置为红色通道
在着色器中,我将值乘以60,然后将其四舍五入为最接近的整数值。这是发生问题的地方。在大多数情况下,事情会按预期进行,但是对于数字41(以及其他一些数字,但我对此进行过测试),四舍五入为40。
我基于this one创建了调试着色器,并显示了所有值。这是计算所有值的代码:
float4 display = float4(0.,0.,0.);
display.r = PSInput.color.r;
display.g = display.r * 60.;
display.b = round(display.r * 60.);
display.a = ((display.r * 60.) - floor(display.r * 60.)) >= 0.5 ? 1.0 : 0.0;
为什么舍入功能不能将其舍入到41?根据{{3}},它应返回“ x参数,四舍五入为浮点类型中最接近的整数”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。