游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3683|回复: 5

关于post渲染时无法使用tex2D(sampler,UV,dadx,dady)的问题

[复制链接]

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
发表于 2011-3-16 13:47:00 | 显示全部楼层 |阅读模式
我把一个场景render成两个部分,一部分diffuse,另一部分是reflect高光形成一张ARGB的renderTarget,然后post到上下左右4个点,其中高光图取样时,使用tex2D(sampler,UV,float2(0.02,0.02),float2(0.02,0.02)) 结果无法实现 偏导模糊,但在第一次render(即渲染到RenderTarget的那次)使用偏导模糊是可以实现的.
想知道为什么post无法使用偏导取样,
另外,tex2D(sampler sp,float3 sz,float2 dadx,float2 dady)这条指令中有个 float3 sz ,解释说是使用深度检测进行偏导取样 - -!不明所以然,希望有知道的回我一下,这里先谢谢了

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
 楼主| 发表于 2011-3-18 10:17:00 | 显示全部楼层

Re:关于post渲染时无法使用tex2D(sampler,UV,dadx,dady)的问题

快进第二页了,顶一下,真的很想要这个问题的回答,版主,别删我的帖

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2011-3-18 17:42:00 | 显示全部楼层

Re:关于post渲染时无法使用tex2D(sampler,UV,dadx,dady)的问题

PS版本太低造成的吧 这个指令至少PS2.1以上

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
 楼主| 发表于 2011-3-21 10:40:00 | 显示全部楼层

Re:关于post渲染时无法使用tex2D(sampler,UV,dadx,dady)的问题

我使用的vs ps 版本都设的3.0
post 顶点结构
struct POST_VERTEX
{
        D3DXVECTOR4 pos;
        DWORD color;//顶点diffuse 其实可以不用 这里顺应SDK sample
        D3DXVECTOR2 texcoord;
        static const DWORD FVF; //如果不出问题,以后做成品的post也用fvf好了,出问题的话,把fvf改成decl
};
const DWORD POST_VERTEX::FVF=D3DFVF_XYZRHW |D3DFVF_DIFFUSE | D3DFVF_TEX1;

绘制段代码:

g_pEffectPost->BeginPass(iPass);
        pDevice->SetFVF(POST_VERTEX::FVF);
        pDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP,2,g_vertPost,sizeof(POST_VERTEX));
g_pEffectPost->EndPass();

在PostShader里面使用tex2D(_sampler,_UV,dadx,dady);后没有变化,dadx与dady都设置成float2(0.05,0.05)按正常的来算应该已经很大了吧,可是在post里一点变化也没有

使用多点取值再lerp()确实也能实现模糊,但是效果确实不如偏导数直接模糊,而且我担心多点取值造成fps下降


这个问题对我很重要,谢谢有知道的请回我一下

0

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-3-21 22:59:00 | 显示全部楼层

Re:关于post渲染时无法使用tex2D(sampler,UV,dadx,dady)的问题

恩 学习了

33

主题

159

帖子

272

积分

中级会员

Rank: 3Rank: 3

积分
272
QQ
 楼主| 发表于 2013-5-24 23:03:00 | 显示全部楼层
喵的,过了两年多,回头又看到了自己的这个帖子,当时的问题现在的儿科
自己解答下,有碰到同样问题的人看到的话可以省事情点

tex2D(sampler,UV,dadx,dady)
dadx 与dady是偏导量,使用这种方式的TEX2D也就是以偏导量进行模糊处理,模拟现实中的视觉效果,这里要注意的是 dadx dady是以视空间下的z深度为比例的。而当用到POST后处理的时候,视空间里实际上只有4个点两个的三角型组成的一个面,所有的象素它的深度都是一样的,dadx dady永远都等于1,就体现不出按深度进行模糊的效果了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-26 18:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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