萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

楼主: thinkpod

开贴讨论显卡技术- Let´s talk about GPU

[复制链接]
 楼主| 发表于 2008-4-29 22:02 | 显示全部楼层

Shader 引爆显卡的威力(3) 从实例理解像素着色器

首先先来总结一下像素着色器作用就是得到一个像素的颜色!
我们不妨来吧像素着色器当成一个黑盒,只关心它的输入输出。刚才说了一大堆的纹理。这就用上了,我们需要一个2D的纹理坐标值。某些情况下我们还需要一个输入颜色值。这个颜色值是由顶点着色器传过来的。输出就很简单了。就是一个颜色值。如果一个顶点着色器输出了两个颜色和三个纹理坐标,那么Direct3D将会按每个像素计算两个颜色和三个纹理坐标并且把它们把它们输入到像素着色器。
某个D3D 的 像素着色器 输入输出结构如下

struct PS_INPUT

{

     vector c0 : COLOR0;

     vector c1 : COLOR1;

     float2 t0 : TEXCOORD0;

     float2 t1 : TEXCOORD1;

     float2 t2 : TEXCOORD2;

};

对于输出,像素着色器输出一个单一的计算过的该像素的颜色值:

struct PS_OUTPUT

{

     vector finalPixelColor : COLOR0;

};

有了输入我们就可调用一些shader语言提供的函数操纵GPU,来完成输出了。tex2D 就是一个简单的例子。用来进行纹理的2d寻址。text2D返回一个纹理坐标对应的颜色值。

现在我想各位应该渐渐明朗了。Pixel shader 起到了一个颜色变换作用。Pixelshader 位于顶点着色器之后。完成像素的光栅化操作。一条典型的像素流水线里面包含了多个Pixel shader, TMU 和 ROP 。

典型的PS操作是通过tex2D得到一个颜色值->然后算啊算啊->最后输出一个颜色值。所以我们应该认同,算数运算比纹理运算要重要的多。从书上看到一个凹凸贴图的算法如下
1)tex2D
2)2个normalize运算
3)一个saturate 运算 // 不懂啥意思
4)求最小值,输出color

[ 本帖最后由 thinkpod 于 2008-4-30 21:03 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-29 22:43 | 显示全部楼层

下面几期预告。

1。拾遗,顶点着色器
2。革命,统一渲染架构
3。G80,你凭什么强大
4。我拿什么拯救你,3850/3870
5。如果还有时间,还想研究一下怎么实现反锯齿

欢迎大家参与讨论啊。:P
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-30 09:01 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-30 20:07 | 显示全部楼层

拾遗,顶点着色器

接着写。希望大家喜欢看。呵呵
发现一张好图,基本上能说明显卡的工作原理了。先贴一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-30 20:34 | 显示全部楼层

继续聊顶点着色器

上图可以看到一个完整的3D处理包括几何处理,和光栅处理。像素着色器就是光栅处理的核心。而几何处理就是主要依赖顶点着色器。上图还说明一个问题。就是显存的作用,包括存放几何数据。纹理数据。Framebuffer 用过汇编的应该都很熟悉吧,就是直接写屏的时候用的那个内存区域。以前2d显卡的显存都是用来干这个的。当然FB越大分辨率就越高。看来显存的用途真是很大啊。所以多多益善。

又扯远了。。。继续聊顶点着色器。3D和2D最大的不同。就是物体的外形随视角的变化而发生变化。如果做不到这一点。就不能称之为3d程序了。。3D的物体虽然看上去远近大小各不相同,但毕竟有个客观的实际大小。这就是它的几何数据。然而,我们是无法直接应用这个实际大小的。因为我们在游戏不可能一个地方呆着不动吧。狙击别人也要时刻动动鼠标不是么。。这就带来了视角的改变。从而引发几何变换。

3D程序是用顶点来抽象几何数据。 顶点有很多属性。这些属性都是用来参与顶点着色器的运算的。顶点着色器的输入一般有位置,法线,大小,颜色,纹理坐标等等。输出一般有位置,大小,颜色,纹理坐标等等。。顶点着色器没有访问存储器的界面。因此不会访问纹理的颜色数据,而只是对纹理坐标进行变换。

[ 本帖最后由 thinkpod 于 2008-4-30 22:37 编辑 ]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-30 22:10 | 显示全部楼层
楼主跟踪一下nv的CUDA吧。通用科学计算,500欧的显卡等价16个处理器的并行计算机。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-30 22:25 | 显示全部楼层
原帖由 moudy 于 2008-4-30 23:10 发表
楼主跟踪一下nv的CUDA吧。通用科学计算,500欧的显卡等价16个处理器的并行计算机。

哈哈,这个有时间一定会研究。不过流处理俺就更外行,还得找点基础的东西补补课。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-30 22:54 | 显示全部楼层

革命,统一渲染架构 ---- 纷争!

虽说都是干IT的,但硬件设计师跟软件设计师似乎总是有点难于沟通。硬件设计在设计GPU的时候会一厢情愿认为软件会如此这般的指挥GPU有效率的工作,而实际上并非如此。微软在这里起了个很好的作用,颁布了一个D3D标准让软硬件都来遵守。一方面令软件开发更为方便,另一方面另硬件上的优化有章可循。微软何以能做到这一点,因为微软除了钱多以外,还很多软硬件都通的全才。俺也有接触过一位岁数很大的微软fellow。很牛很牛。中国IT界缺少的就是这样领军人物。。。靠。又扯远了。。、

话说D3D本身已是在与时俱进的。d9初期。顶点流水线的多少对游戏性能影响不是很大,基本上像素流水线的规模决定显卡的性能。。这样6顶点16个像素流水线的显卡到了D9后期就显得捉襟见肘了。因为新游戏的3d模型越来越复杂,对顶点计算的要求越来越高。另一方面。顶点计算和像素计算也有很多相似的地方。
这就为二者统一提供了动机和可能。随着硬件的不断发展,计算的模型也在不断变化。像素计算和顶点计算的区别在D10当中越来越小。更像是普通流水线上不同的stage

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

x
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2008-4-30 23:09 | 显示全部楼层
问个问题,我的solidworks软件无法开启realview功能,是不是因为显卡不支持?移动ATI1400卡
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
 楼主| 发表于 2008-4-30 23:15 | 显示全部楼层

革命,统一渲染架构 ---- 我不懂你,几何着色器

D10提出了一个新东西 几何着色器。这个东西目前性能据说比较差。A家的卡支持Tessellator技术。这个是从xbox360上继承下来的,可以替代GS一部分的的功能。N卡就没这个东西了,只能用GS

---------------以下是网文--------------------------

" 在显卡的工作流水线中几何着色器工作在顶点与像素着色器之间。当显卡中的顶点着色单元生成顶点信息之后,就会将这些结果交给几何着色器来构成更为复杂的几何图形,最后交由像素着色器来为这些几何图形添加各种材质。

Geometry shader最重要的工作就是接点,将顶点之间用线连接起来。例如,当Geometry shader拥有两个顶点的信息时,它就可以将两个点连接起来组成一条线。通过这条线可以绘制其他延长线上的点。而通过连接三个顶点就可以绘制出一个三角形。最后通过计算延长线上的点,就可以绘制出更为复杂的几何图形"
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-3-4 17:16 , Processed in 0.061279 second(s), 15 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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