象素Shader的问题!
bmp图像中的颜色格式如下(RGBA) 0-255
Shader中对纹理采样得到的数据是float4 0-1
他们之间转换的公式是怎么样的?
[解决办法]
一般是线性映射的,即0映射成0.0f,255映射成1.0f。 但是我不清楚一些高精度纹理是如何处理的,比如D3DFMT_G16R16。事实上我也很困惑这个问题。
[解决办法]
可以使用其他格式的纹理,比如D3DFMT_R16F,它不会限制为[0,1],可以完美解决你的问题
[解决办法]
unorm8(A8R8G8B8) 转fp32:
f_color = u_color / 255
unorm16 (R16G16)转fp32:
f_color = u_color / 65535
R16F本身就是浮点数,浮点格式是1.5.10,所以也就无所谓转换了,而且shader取得的值也不在0-1 之间