问题描述
我正在尝试为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 (将#修改为@)