游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3295|回复: 9

请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道是怎

[复制链接]

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
发表于 2005-10-19 10:30:00 | 显示全部楼层 |阅读模式



void main(         float4 position  : POSITION;
        float4 color0    : COLOR0;
        float2 texcoord0 : TEXCOORD0;

        out float4 color : COLOR;

    uniform sampler2D testTexture )

{
                color = tex2D( testTexture, .texcoord0 ) * .color0;
}

==================================================

从COLOR0接受的颜色数据,处理后送到COLOR管道去。

请问这个COLOR管道和COLOR0管道到底是怎么回事?那显卡中有多少条这样的管道呢?会不会有COLOR1,COLOR2  ...........COLOR100

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-10-19 10:48:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

缺省状态下接受的color0是从顶点单元过来的diffuse信息
当然你也可以在vs里任意输出你需要的内容到oD0这个寄存器
顶点单元还有一个color1输出,对应vs里的oD1,缺省用来存放高光信息,一样可以重用

在ps里输出的color就有点不同了,它对应的是render target,如果是color0的话,就是输出到第一个渲染目标, 缺省的情况下就是输出到后缓冲了,如果在使用了mrt的情况下,可以有color1,color2,color3,一次渲染中输出到不同的渲染目标,一般来说是4个,有特殊的硬件可以查询D3DCAPS

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2005-10-19 16:59:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

谢谢各位高手指教,我试了一下,把输出结果到寄存器COLOR改到COLOR0,结果也正确。如:

out float4 color : COLOR 改成 out float4 color : COLOR0  


但如果把COLOR改成COLOR1或是COLOR2,就什么图像都没有了。这是不是说明我的显卡只有两个颜色寄存器COLOR和COLOR0?

另外,如果我把颜色的最终结果color输出到POSITION或是TEXCOORD,同样也是没有图像,是不是只有输出到颜色寄存器才有最后的图像?


本人在shader方面是菜鸟,请不要见笑!

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2005-10-20 16:14:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

ps只有一个输出,color0 = color + 0 = color,呵呵,简单吧。

输出texcoord那么你看什么?

36

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
 楼主| 发表于 2005-10-21 08:24:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

ps只有一个输出,color0 = color + 0 = color,呵呵,简单吧
------------------------------

这是什么意思?老兄不是开玩笑吧!

18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-10-21 10:33:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

语义项 POSITION 代表最后输出的顶点坐标管线,所以一定要把最后的顶点坐标传给POSITION 寄存器才能显示顶点网格。

同样,语义项 COLOR或是COLOR0代表最后渲染的像素管线,也就是帧缓存。所以,如果你把计算到的最终颜色结果color输出到POSITION或是TEXCOORD管线,当然看不到物体了。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-21 16:10:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

这个可以参考显卡带的开发工具包的SDK文档,它会对每个寄存器都有比较细致的说明的。

18

主题

47

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-10-21 19:49:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

啊,楼上的你的显卡有带吗?怎么我的显卡好象没有啊!

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-22 23:55:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一觯?olor和Color0 管道是怎

。。。。。你到显卡的开发厂商的网站去找,其实也就是Nv和Ati,主要看OGL部分,DX的寄存器是由DX定义的,可以参考DX SDK。

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2005-10-23 11:53:00 | 显示全部楼层

Re:请问HLSL/Cg像素渲染管道的问题一个?Color和Color0 管道

这就是所谓的GL 标准里的 MRT.
在DX里对应什么我不知道。
在GLSL里就是 gl_FragColor == gl_FragData[0]
其它的依次。但是不等于 gl_FragColor.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 08:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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