游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: subird

Introduction to Vertex Shaders(请知道的提点小弟一下)

[复制链接]

4

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
 楼主| 发表于 2004-12-18 12:35:00 | 显示全部楼层

Re:Introduction to Vertex Shaders(请知道的提点小弟一下)

光栅化好象是在ps之后的,
Microsoft DirectX 8.0 (C++)
Programmable Vertex and Pixel Processing
一章中有个图上就是光栅化在ps之后。

另外我想问一下,Fixed Function Vertex and Pixel Processing能不能算是Programmable Vertex and Pixel Processing的一个特例,也就是说Fixed Function Vertex and Pixel Processing中D3D已经为我们编写好了特定功能的VS和PS(当然功能是有限的,所以如果要实现自己的变换,就用Programmable 来自己写VS和PS),我们只需要set device state 来控制一下就行了,而Fixed和Programmable的内部处理过程是一样的?

6

主题

444

帖子

457

积分

中级会员

Rank: 3Rank: 3

积分
457
发表于 2004-12-18 18:04:00 | 显示全部楼层

Re:Introduction to Vertex Shaders(请知道的提点小弟一下)

先请明确什么叫做光栅化操作,光栅化指的是将几何形体(如triangle)离散为对应屏幕上像素点的fragment(未写入帧缓存的像素叫做fragment)的这个过程。也就是说,在光栅化以前,所有信息都是存在于几何空间几何体顶点之上的,而光栅化之后这些信息就会经过插值等运算传递到屏幕空间的每一个fragment上面。而pixel shader中的任何操作都是以fragment为单位的,在光栅化之前根本不存在fragment何来pixel shader?
FFP(Fixed Function Pipeline)确实是PP(Programmable pipeline)的特例形式,换句话说用FFP可以实现PP的所有功能。但是两者的硬件级别不同,支持FFP的硬件不一定支持PP,所以说FFP是D3D内部编写的shader并不正确,这个差别和实现方式是在GPU驱动中的,比如在nv20以下的硬件中,只能够支持FFP,不能支持PP,在radeon8xxx以上的产品中,FFP指令也会由PP单元来执行,看起来似乎是你的那个观点,不过这个指令翻译工作不是由D3D来完成的,而是由drivers来完成的。对D3D来说,FFP和实现相同功能的PP所代表的指令并不相同。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 19:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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