首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

从VertexShader的输出到PixelShader的输入,这中间的过程是如何样的

2012-02-27 
从VertexShader的输出到PixelShader的输入,这中间的过程是怎么样的?问题如下:1.从VertexShader的输出到Pix

从VertexShader的输出到PixelShader的输入,这中间的过程是怎么样的?
问题如下:
1.从VertexShader的输出到PixelShader的输入,这期间经历了什么样的过程?怎么由顶点信息变为像素信息的?
2.既然Pixel Shader是操纵像素,也就是光栅话之后,都已经是2D的了,为什么我还能对每个像素进行三维的运算?像光照计 算,聚光灯角度计算。
3.为什么传入像素着色器的很多信息都要用:TEXCOORD标识?像法线向量要用:TEXCOORD,而不是:NORMAL,这有什么好处?
4.在ShadowMap中,以光源为摄像机,经过投影变换后,为什么z/w就是0到1的深度信息?

最近在研究ShadowMap,遇到了很多比较基础的问题。。



[解决办法]
看来楼主对渲染管线不理解啊,现在研究shadowmap看来早了一点。一般在固定管线中,一个顶点首先要进行model translation,转换到世界坐标系,然后通过view translation转换到相机坐标系,之后再通过投影变换到剪裁空间,并且归一化这个空间。最后通过viewport translation,然后光栅化显示。

1. 一个顶点通过vertex shader处理的时候,可以处理viewport translation之前的每个阶段。之后顶点进入pixel shader,这里一般是对光栅化的控制。

2. 在光栅化的时候要进行深度测试的,虽然是2D的像素,但是仍然要使用z-buffer测试,来决定该像素的颜色。

3. 对于一般的光照计算,比如phong光照模型,法线向量计算简单,传入每个顶点的法线后,进行插值计算即可,所以直接可以传入每个顶点法线,即使用NORMAL。但是复杂的光照效果,比如bump mapping等等,由于需要每个像素的法线信息,并且很多法线不能通过piexl shader普通插值来得到,只能从shader外部传入法线。这个时候就采用TEXCOORD,这里纹理数据保存的就是对应的每个像素的法线信息了。

4. 经过投影变换后,本来z的值就转换到了0和1之间,但是这是在其次坐标系中的表示,所以这里除以w,还原到一般坐标系。

楼主,要看书哦
[解决办法]
很好,很喜欢
[解决办法]
不错 挺实用
[解决办法]

探讨
楼主,要看书哦

[解决办法]
呵呵,帮你顶
[解决办法]
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
[解决办法]
是啊,要学会用SHADOW MAP,必须要先搞明白坐标转换的每个阶段.
之后实现SHADER效果,基本上都是各个阶段坐标混用了.
比如在屏幕坐标下, 要用视坐标下的数据进行计算.

热点排行