假设把一张depth24深度纹理传入pixel shader,采样时的颜色是哪个分量?

gamemagic 2010-10-08 07:17:39
float4 color=tex2D(s, uv);
那么深度值在color的哪个分量?R?G?B?A?
LUM32颜色格式的纹理也有相同的问题
...全文
146 点赞 收藏 8
写回复
8 条回复
higter 2011年05月04日
很明显跟写纹理s时有关
回复 点赞
visualvisual 2011年05月03日
我也有和楼主类似的疑惑。做阴影贴图时使用D3DFMT_D16格式把深度信息保存到一张深度纹理,然后到shader中使用,但是无论我使用rgba中的任意一个分量来取值就是没有反应。后来我只有使用D3DFMT_G16R16保存一张color纹理,送到shader后使用,实现了效果。
回复 点赞
IONPhantom 2011年05月03日
float4 color=tex2D(s, uv);
这样采样出来的 color.rgba 都是深度值,你用哪个通道都一样 r=g=b=a
图是D24,采样的时候把这个值赋给color的每个分量
回复 点赞
gamemagic 2010年10月08日
什么啊,深度缓冲的格式不能改变
回复 点赞
gamemagic 2010年10月08日
我使用opengl, 深度直接连接在FBO上,可读。
GL应该也是对应R分量吧…
回复 点赞
CSharp_XinBing1 2010年10月08日
是不是应该把纹理的格式改变一下,比如改成FLOAT格式的,而不是A8R8G8B8格式的,
否则真的很难处理。
回复 点赞
引力场变动源 2010年10月08日
D3D9里面的深度缓冲区是不可读的。但是如果在Vista/Win7模式下面,可以使用d16_lockable或者d32_lockable的深度缓冲区,可以被shader读取。

D3D10/11里面深度缓冲区是可读的,d24x8和d24s8分别对应r24g8和r24_uniform_x8.
回复 点赞
shayla 2010年10月08日
设置了深度缓冲为24位,那么整个24位都应该是深度值吧,否则不是白白浪费2/3的显存?
回复 点赞
发动态
发帖子
游戏开发
创建于2007-08-27

7199

社区成员

2.3w+

社区内容

游戏开发相关内容讨论专区
社区公告
暂无公告