游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2807|回复: 7

在pixelshader中能否访问rendertarget?

[复制链接]

46

主题

281

帖子

313

积分

中级会员

Rank: 3Rank: 3

积分
313
QQ
发表于 2006-12-25 12:01:00 | 显示全部楼层 |阅读模式
以前好像有人问过我这个问题,当时由于在忙活别的就没好好考虑,他是想在pixelshader中对当前rendertarget的texture做采样,现在想想应该不能这样采,但是他当时测试的结果好像是可以采的,我觉得他采出来的可能是setrendertarget之前里边残留的数据,而每当切换target时会把更新的数据拷回到texture。。。或者是每个drawcall更新一次?这样的话折射就可以减一个pass。。。。。。
这个有权威的说法么。。。?

感谢!!

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-12-25 13:13:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

当前的 rt 是不能作为 texture 进入 render pipeline,更不可能进行采样等操作了。

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2006-12-25 14:24:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

runtime都把这个错误的用法挡在外面了。
硬件实现上,texture和RT使用不同的cache,想既读也写,做不到。至少将来5年内的硬件也做不到。
不过DX10最早的spec里,倒是允许读当前RT的,这样就可以省了post blending stage,不过后来考虑到硬件实现成本太高,取消了把,还有搞了个post merge stage,记住这是fix pipleline的最后残余,大家一起努力消灭它!

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-12-25 17:25:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

可以搞一个 Merge Shader,一个流水线下来都完成了。

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2006-12-25 20:24:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

不是shader不shader的问题。做为应用程序开发者,当然希望能有样能够通吃,却不失效率的编程接口。但我们所做的一切都收限于硬件的发展水平,GPU采texture为什么快?因为片内有大量的cache,一个既要同时读写,又要支持并行的cache机制,需要非常复杂的硬件设计水平和工艺,还需要driver端的shader compiler及其优化机制。至少目前还这方面还没有成熟,至少“新的机制实现旧的功能不比原来慢”时,IHV们才愿意那样设计。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-12-26 10:42:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

我说的 Shader 指的是 VS\GS\PS 的概念,并不是某一段 GPU 执行的代码片断,请不要断章取义。硬件的实现上我不清楚,不敢乱说。

8

主题

553

帖子

560

积分

高级会员

Rank: 4

积分
560
发表于 2006-12-26 20:15:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

我当然知道你说的shader是指这些,但你有没有意识到VS\GS\PS只不过是接口而已?我所说的就是和具体硬件的实现有关,当然都是我的理解。类似想法和念头我以前也有过,不过在和做HW的人交流后被一一打消了。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-12-27 11:55:00 | 显示全部楼层

Re:在pixelshader中能否访问rendertarget?

嗯,我没有接触过硬件开发人员,如果楼上知道一些硬件上的实现,可否写篇文章专门介绍一下,也算造福大家了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 04:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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