游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2544|回复: 8

HLSL tex float 范围问题

[复制链接]

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
发表于 2010-12-14 09:59:00 | 显示全部楼层 |阅读模式
写了个很简单的hlsl就是让一个纹理自己累加到白色为止。PaintSamp 一开始清屏为黑色。
可是发现一个float值得问题,如下,如果累加值是0.0021以上,就累加成白色了。
如果小于0.0021,就是加不起来,像是hlsl把它当作0来处理了。为什么啊?

float4 reducePS(QuadVertexOutput IN
        ) : COLOR
{
   
    float4 cur = tex2D(PaintSamp,IN.UV.xy);
    cur = cur + 0.0021f;
    return cur;
}

        pass dispear <
                string Script =
                "RenderColorTarget0=PaintTex;"
                "RenderDepthStencilTarget=DepthStencilTarget;"
                "Draw=Buffer;";
        > {
                VertexShader = compile vs_1_1 ScreenQuadVS();
                PixelShader  = compile ps_3_0 reducePS();
                AlphaBlendEnable = false;
                ZEnable = false;
        }

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2010-12-14 10:01:00 | 显示全部楼层

Re:HLSL tex float 范围问题

我在fx composer 和自己写的directx 9 里都验证了这个代码,都不行。

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2010-12-14 10:05:00 | 显示全部楼层

Re:HLSL tex float 范围问题

float4 reducePS(QuadVertexOutput IN
        ) : COLOR
{   
    float4 cur = tex2D(PaintSamp,IN.UV.xy);
    cur = cur - 0.0019f;
    return cur;
}
反过来PaintSamp 一开始清屏为白色。
如果叠减,这个值是0.0019不能叠减 ,如果是0.002就可以叠减

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2010-12-14 10:07:00 | 显示全部楼层

Re:HLSL tex float 范围问题

以上环境在GTX260上测试

0

主题

398

帖子

577

积分

高级会员

Rank: 4

积分
577
发表于 2010-12-14 10:38:00 | 显示全部楼层

Re:HLSL tex float 范围问题

用D3DFMT_A16B16G16R16F 或者 D3DFMT_A32B32G32R32F

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2010-12-14 11:42:00 | 显示全部楼层

Re:HLSL tex float 范围问题

这种问题最好用pix来debug

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2010-12-14 15:50:00 | 显示全部楼层

Re:HLSL tex float 范围问题

谢谢,楼上的 用 D3DFMT_A32B32G32R32F 问题解决

0

主题

398

帖子

577

积分

高级会员

Rank: 4

积分
577
发表于 2010-12-14 15:56:00 | 显示全部楼层

Re: Re:HLSL tex float 范围问题

hardy_game: Re:HLSL tex float 范围问题

谢谢,楼上的 用 D3DFMT_A32B32G32R32F 问题解决

解决了也要好好想想为什么是这样 [em15]

52

主题

155

帖子

160

积分

注册会员

Rank: 2

积分
160
 楼主| 发表于 2010-12-16 09:35:00 | 显示全部楼层

Re:HLSL tex float 范围问题

1/255/2 = 0.019 大概就是这个范围了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-17 08:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表