游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1440|回复: 3

[求助] 关于何时做w或非均匀

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2009-10-5 09:37:00 | 显示全部楼层 |阅读模式
我在VertexShader中对一个输入的顶点,进行worldviewproj变换后
,得到一个float4类型的顶点V。
那么,我将这个V点的范围变换到[0,1]范围:
ScreenPos.xy =(V.xy/V.w  + 1.0f)/2.0f,我把这个ScreenPos作为float4 TexCoord (xyzw)传递给PixelShader

上述是我自己的方法,貌似是错的。。。。这么转换后的结果在屏幕上贴图位置乱了。然后我比对一个正确的例子中的代码,他这么做:
VertexShader中:
ScreenPos.xy =(V.xy  + V.w)/2.0f,这个ScreenPos作为float4 TexCoord (xyzw)传递给PixelShader
然后他在PixelShader中:
结果=ScreenPos.xy/V.w


我就很奇怪,我在vs中做了“除w”一步,会导致错误?
一定要在Ps中做“除w”  ????

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2009-10-11 21:58:00 | 显示全部楼层

Re:[求助] 关于何时做w或非均匀

顶起~
我困惑。。。。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2009-10-13 01:53:00 | 显示全部楼层

Re:[求助] 关于何时做w或非均匀

是的,否则在 VS 中 /w 的结果会被渲染管线插值,插值之后就有误差。所以精确结果是必须放在 PS 中 /w。

42

主题

140

帖子

158

积分

注册会员

Rank: 2

积分
158
发表于 2009-10-13 13:31:00 | 显示全部楼层

Re:[求助] 关于何时做w或非均匀

纹理的透视校正用的1/z插值包括深度插值,也就是clip space 中的w,你在顶点除了当然会错了,而像素的向量方向则是使用顶点向量做线性插值。包括使用Gourand的亮度插值也用的线性,不知我说没说对,不过貌似不管什么插值都是TexCoord寄存器一带而过啊。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-6 23:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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