首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

Directx中使用浮点纹理在纹理混合时遇到的有关问题,发现大于1的纹素被置为1

2012-03-22 
Directx中使用浮点纹理在纹理混合时遇到的问题,发现大于1的纹素被置为1采用的纹理格式是D3DFMT_A32B32G32R

Directx中使用浮点纹理在纹理混合时遇到的问题,发现大于1的纹素被置为1
采用的纹理格式是D3DFMT_A32B32G32R32F   (128-bit   float   format   using   32   bits   for   the   each   channel   (alpha,   blue,   green,   red))   ,每层纹理中的纹素值均在0-1之间。

多层纹理混合中,每层的运算设置的D3DTSS_COLOROP为D3DTOP_ADD,纹理混合后发现加法后大于1的纹素都被置为了1。这不是我想看到的结果。如何可以让D3D不对大于1.0的纹素截断?

ps:我采用浮点纹理,是为了进行科学计算。

[解决办法]
1本来就是最大值啊,最亮了啊。不明白你为什么需要比1更大的值。
[解决办法]
因为硬件光栅化的时候电压和亮度之间的转化公式是基于 0 到 1 的

所以到最后输出的时候必须转到 [0,1)空间,

大于1的值得只在中间计算和保存信息有用,具体你可以找写 HDR 的资料看看

热点排行