Board logo

标题: [专题讨论] 请问PS的3D加速是什么原理?是硬件加速?还是软件加速? [打印本页]

作者: werety    时间: 2014-2-18 23:12     标题: 请问PS的3D加速是什么原理?是硬件加速?还是软件加速?

在“32X之死——游戏机硬件增强的历史”一文中看到有段文字是些当年三大主机的3D特点,n64勉强具备了完整3D硬件的特点;土星是以2D活动块的方式来处理多边形;PS是纯软件计算,只是多了个GTE。
请问PS的“纯软件计算”是什么道理?套用到电脑方面是不是类似VOODOO显卡面世之前,用好些的CPU+2D显卡玩3D游戏的道理,也就是全部工作都交给CPU死算。
那么3D游戏里的特效,比如光源、半透明、雾化等等“上古时代”的3D特效,要实现这些特效是不是设计的时候要对硬件做些“特化”?那么ps是什么芯片用来计算特效的?它的特效是怎么来的?
我打个比方,玩FF7,小克吃个药还要有个绿色的半透明光圈围着他,这绿色半透明光圈算是特效吗?硬件要做个这样的半透明光圈很难吗?那么PS硬件里那个部分是负责运算这个光圈的?

另外再说一句,我今天玩土星的VR战士对格斗之蛇,开了写轮眼模式,(用了放大镜)发现土星的3D画面没有出现类似ps那种“直线变折线”的情况,游戏中擂台的地砖,笼子柱,等等直线的东西都没有发生折线的情况。还有就是人物身上看不出有“四边形面体”的情况了,很圆滑,(这好像叫高洛德描影法吧?)但是隐藏的那些卡通角色全是满身的“四边形面体”,这是什么情况?

[ 本帖最后由 werety 于 2014-2-18 23:18 编辑 ]
作者: SONIC3D    时间: 2014-2-18 23:56

你问得太多了,洗洗睡吧。
作者: beterhans    时间: 2014-2-19 00:01

posted by wap, platform: Firefox

这个问题太专业 需要专业人士回答

我个人猜测是
1. 硬件加速: 显卡提供了很多特效现成的接口, 比如水的效果,写游戏的人直接调用硬件的那个水的效果就好了,写软件的人不用自己想一个水的效果算法出来
就好比你让一个人吃饭,你只要在程序里写 吃饭 后面跟个参数 吃什么饭 在家里还是饭店
2. 软件: 硬件里没有讨巧的接口给你用,怎么显示这个效果 你要自己写出来。
那么你要让一个人吃饭就难了, 你要先写 线让眼睛看,然后判断餐具在哪里,然后写怎么张开嘴巴,怎么咀嚼,怎么吞下去。整个过程。而且无法使用其他芯片的协助。

自己不会任何编程 纯属猜测
作者: werety    时间: 2014-2-19 11:09

引用:
原帖由 beterhans 于 2014-2-19 00:01 发表
posted by wap, platform: Firefox

这个问题太专业 需要专业人士回答

我个人猜测是
1. 硬件加速: 显卡提供了很多特效现成的接口, 比如水的效果,写游戏的人直接调用硬件的那个水的效果就好了,写软件的人不用自 ...
那么粗略的理解就是软加速的特效算法要靠程序员自己写;而硬加速是芯片直接集成了特效算法,程序员只要直接调用,设置几个相关参数就可以了,制作游戏业方便了,是这个意思吗?
作者: werety    时间: 2014-2-19 11:11

引用:
原帖由 SONIC3D 于 2014-2-18 23:56 发表
你问得太多了,洗洗睡吧。
索大哥,这回答有些不太符合您“包打听、硬软帝”的性格呀。
作者: clarkh    时间: 2014-2-19 11:24

引用:
原帖由 werety 于 2014-2-19 11:11 发表

索大哥,这回答有些不太符合您“包打听、硬软帝”的性格呀。
他的意思是你的问题表露出了你的理解度,他觉得他的答案只会让你更困扰,所以……类似于有人问我无线网卡和无线上网卡有什么区别,我解释完了以后他的回答是,哦,原来都是无线上网用的啊。
作者: md2    时间: 2014-2-19 11:30

引用:
原帖由 werety 于 2014-2-18 23:12 发表
在“32X之死——游戏机硬件增强的历史”一文中看到有段文字是些当年三大主机的3D特点,n64勉强具备了完整3D硬件的特点;土星是以2D活动块的方式来处理多边形;PS是纯软件计算,只是多了个GTE。
请问PS的“纯软件计算 ...
其实所有硬件特效软件都能实现,你看奔腾时代的电脑,没3D加速卡还不是跑得欢快。
有了3D显卡后就有分工了。
CPU负责多边形的几何运算,光照阴影
3D显卡负责渲染,包括纹理贴图,Z缓冲,线性过滤,ALPHA混合(半透明),这些功能的参数都是硬件定死的。

PS应该就是一台没有3D显卡的计算机,渲染也交给CPU来做。但是由GTE负责3几何运算所必须的矩阵运算,效率比单用CPU高。
N64则是标准的CPU+3D显卡

后来黄老板的GEFORCE显卡提出硬件T&L的概念,几何运算和光照阴影也交给显卡了。
显卡参数都分两边,一个是顶点运算,一个是渲染,就是指这两种。
现在显卡都是统一渲染构架了,就不分了。


上上代主机推出的时候正赶上炒作硬件T&L,因此XBOX和NGC的顶点运算也是交给显卡的,
而PS2走的是第一代路线,一个特别强大的CPU+只负责渲染的显卡
而PS2那个特别变态的多边形生成率,指的是只计算多边形本身,不做光照阴影,也不做后期的渲染。而且它的多边形数是利用1个三角型有3个顶点,2个三角形有4个顶点这样的算法搞出来的,所以被喷了。

[ 本帖最后由 md2 于 2014-2-19 11:56 编辑 ]
作者: yfl2    时间: 2014-2-19 11:31

门外汉随便说说,硬件加速可以理解成将硬件设计成只能做几个固定的运算方式,通用性不如cpu,但效率高很多,就像现在专业的挖矿机
作者: hourousha    时间: 2014-2-19 12:10

引用:
原帖由 werety 于 2014-2-19 11:11 发表

索大哥,这回答有些不太符合您“包打听、硬软帝”的性格呀。
其实这事就是解释清楚比较麻烦,而且可能解释者觉得解释清楚了但其实听者并没有如解释者所想的那样正确理解。
简单来说,因为PS有GTE,而GTE是专门负责加速3D中使用的特定矢量运算的单元,所以PS属于有专门用于3D加速的硬件,这就叫硬件加速。
就3D流程来说,简单可分为顶点处理部分和片段(像素)处理部分。GTE作用于顶点处理部分,而PS的片段处理部分其实并没有多少成熟3D特定功能,主要是一个贴图机能比较符合趋势。
由此可知PS和Voodoo是完全不同的,Voodoo没有顶点处理机能,但它的片段处理功能在当时是比较完整的。而Voodoo之前的PC也和PS不同,它们没有专门的顶点加速单元,而像素处理部分的功能(活动块之类的游戏特定功能)比PS还要少,所以基本是靠直接显存映射,然后用CPU来完成整个3D片段处理流程。
至于贴图变形,那是由于贴图单元缺少透视矫正所导致的,你考虑一个正方形地砖,纹理是中间有一条竖线,经过透视后变该地砖成了一个梯形,于是竖线,也就是上边中点和下边中点的连线与对角线的交点肯定不是对角线的中点对不对?但由于PS没有透视矫正且处理单元是三角形,所以它贴图就会在对角线分成的两个三角型上分别完成,而贴图的那条竖线,贴在无透视矫正的两个三角形上,就分别为上边与对角线的中点的连线,和下边与对角线中点的连线,这样把俩三角形一拼起来,自然那条竖线就变成折线了。这么解释我不知道你能不能明白。
SS没这问题,不是因为SS有透视矫正,而是因为SS的贴图是以四边形为单位绘制时是沿着上边向下边一条线一条线描绘(可见效率高不了),所以在每个变形四边形上,贴图不会发生上述扭曲,但它这功能是不能取代透视矫正的,因为它的不变型前提是假定原始四边形是长方形,作为墙面或地面是差不多的,但作为自由3D建模是不足的。
作者: hourousha    时间: 2014-2-19 12:17

引用:
原帖由 md2 于 2014-2-19 11:30 发表


其实所有硬件特效软件都能实现,你看奔腾时代的电脑,没3D加速卡还不是跑得欢快。
有了3D显卡后就有分工了。
CPU负责多边形的几何运算,光照阴影
3D显卡负责渲染,包括纹理贴图,Z缓冲,线性过滤,ALPHA混合( ...
PS和N64如果类比PC,都应该算是‘有可编程顶点功能’的玩意。只不过PS的GTE功能相对单一,N64的RSP编程太过复杂(所以大多数厂商没法直接用RSP的ucode,只能用现成的SGI库,导致性能偏低同时很容易被高阶模拟)
作者: md2    时间: 2014-2-19 12:26

引用:
原帖由 hourousha 于 2014-2-19 12:10 发表

其实这事就是解释清楚比较麻烦,而且可能解释者觉得解释清楚了但其实听者并没有如解释者所想的那样正确理解。
简单来说,因为PS有GTE,而GTE是专门负责加速3D中使用的特定矢量运算的单元,所以PS属于有专门用于3D ...
图来了,是这个意思吧?
其实这个问题主要是几何运算与贴图分为两步造成的。前者是空间运算,后者是平面运算。
不知道非光栅化的3D图形技术有没有这个问题。



[ 本帖最后由 md2 于 2014-2-19 12:34 编辑 ]
作者: md2    时间: 2014-2-19 12:42

引用:
原帖由 hourousha 于 2014-2-19 12:17 发表

PS和N64如果类比PC,都应该算是‘有可编程顶点功能’的玩意。只不过PS的GTE功能相对单一,N64的RSP编程太过复杂(所以大多数厂商没法直接用RSP的ucode,只能用现成的SGI库,导致性能偏低同时很容易被高阶模拟)
PS是把第二代显卡的功能给加进去了,但是缺少第一代显卡的功能……这样?

它设计专门的贴图模块了吗?
SS的贴图是交给负责活动块的那个VDP进行的?
作者: hourousha    时间: 2014-2-19 13:01

引用:
原帖由 md2 于 2014-2-19 12:42 发表

PS是把第二代显卡的功能给加进去了,但是缺少第一代显卡的功能……这样?

它设计专门的贴图模块了吗?
SS的贴图是交给负责活动块的那个VDP进行的?
作为一个专用的定制硬件,其实加一些通用硬件若干年后实作的东西,是不足为奇的,而GTE等几何加速单元,也不是什么奇思妙想是很顺理成章的事情.T&L更多的贡献是在标准化方面,当然我个人认为T&L是比较糟的了,就功能上说。
PS当然有贴图模块,UV之类的也有。
相对来说SS还是传统的Sprite方式,一个part索引一块图像数据
作者: md2    时间: 2014-2-19 13:12

引用:
原帖由 hourousha 于 2014-2-19 13:01 发表

作为一个专用的定制硬件,其实加一些通用硬件若干年后实作的东西,是不足为奇的,而GTE等几何加速单元,也不是什么奇思妙想是很顺理成章的事情.T&L更多的贡献是在标准化方面,当然我个人认为T&L是比较糟的了,就功 ...
再求教一个
SS后期到底是怎么实现3D半透明的?

之前不能实现光源和阴影是因为CPU忙不过来了
没有半透明是因为贴图方式

后期有了半透明,难道是因为抛开了VDP,连贴图都交给CPU了?而且连高洛德光源都有了
作者: hourousha    时间: 2014-2-19 13:26

引用:
原帖由 md2 于 2014-2-19 13:12 发表
再求教一个
SS后期到底是怎么实现3D半透明的?
之前不能实现光源和阴影是因为CPU忙不过来了
没有半透明是因为贴图方式
后期有了半透明,难道是因为抛开了VDP,连贴图都交给CPU了?而且连高洛德光源都有了 ...
高络德明暗原本就有的,只要是采用直接色模式的多边形。
至于3D半透明(变形sprite半透明)的trick方面?还是问Sonic3D吧,这个真不清楚,或者可以多pass处理,先把变形sprite画出来,然后把图像数据抓出来后再当作一个非变形sprite以半透明绘制?我是不知道SS可不可以这么做。
作者: SONIC3D    时间: 2014-2-19 14:21

引用:
原帖由 hourousha 于 2014-2-19 13:26 发表

高络德明暗原本就有的,只要是采用直接色模式的多边形。
至于3D半透明(变形sprite半透明)的trick方面?还是问Sonic3D吧,这个真不清楚,或者可以多pass处理,先把变形sprite画出来,然后把图像数据抓出来后再当 ...
SS贴了图就不能半透明。。。。没有歪门邪道了
但是如果某个面上用的是调色版的RGB来上色,那可以针对调色板作另一种色彩的半透强度叠加。。。VDP1的说明上我记得好像有,但真不知道会不会有3D的游戏用,用了效果肯定也差,叠加效果只能表现在特定的多边形面上,而且也只能叠一种色彩,我想不出来有多大意义,估计还是给2D表现的游戏用的,做做假的环境光或者像16位机的那种水色的效果。。。。


Sega在Model 3之前好像都没有硬件支持真正的材质半透混合的。。。

[ 本帖最后由 SONIC3D 于 2014-2-19 14:52 编辑 ]
作者: SONIC3D    时间: 2014-2-19 14:25

引用:
原帖由 werety 于 2014-2-19 11:11 发表

索大哥,这回答有些不太符合您“包打听、硬软帝”的性格呀。
我还活在16Bit时代。。。。3D图形问题要找hourousha
贱兔表情又没了。。。
作者: KainX    时间: 2014-2-19 17:43

一般有Z缓冲和线性过滤的都是3D加速。我记得早前我奔腾4+板载显卡试过玩极品飞车4,那满屏的马赛克、也没有任何光影处理,就是一高清土星画面……
作者: 民工头子    时间: 2014-2-19 22:24

引用:
原帖由 werety 于 2014-2-18 23:12 发表
另外再说一句,我今天玩土星的VR战士对格斗之蛇,开了写轮眼模式,(用了放大镜)发现土星的3D画面没有出现类似ps那种“直线变折线”的情况,游戏中擂台的地砖,笼子柱,等等直线的东西都没有发生折线的情况。还有就是人物身上看不出有“四边形面体”的情况了,很圆滑,(这好像叫高洛德描影法吧?)但是隐藏的那些卡通角色全是满身的“四边形面体”,这是什么情况?
土星VR战士VS格斗之蛇 多变形没有变形?没折线?这不是有么,这再近视也能看见吧

我因为盘早不知去哪了,所以只能优酷低清了,优酷低清都能明显看出来

这不是明显有多边形变形么!

这墙都成齿了,还没有?

你那写轮眼开到哪去了?开到脑袋顶上了?

[attach]620200[/attach]

[ 本帖最后由 民工头子 于 2014-2-19 22:31 编辑 ]
作者: werety    时间: 2014-2-19 22:40

引用:
原帖由 clarkh 于 2014-2-19 11:24 发表

他的意思是你的问题表露出了你的理解度,他觉得他的答案只会让你更困扰,所以……类似于有人问我无线网卡和无线上网卡有什么区别,我解释完了以后他的回答是,哦,原来都是无线上网用的啊。
哈哈,我上个星期刚刚自己科普了一下无线网卡和无线上网卡的区别,因为家里买了个无线、有线两用的路由器,需要这方面的知识,俺也是瞎折腾,明明可以接网线偏偏要买个无线网卡,俺还是喜欢无线的。但是到了电脑城买卡的时候慢慢才明白,原来无线网卡的前提是家里必须有个无线路由器才能接入网络,而无线上网卡是只要有手机信号的地方都可以,USB卡托里放个资费卡,但是收费和网速就。。。。。。反正是能用就行了。
作者: werety    时间: 2014-2-19 23:08

引用:
原帖由 hourousha 于 2014-2-19 12:10 发表

其实这事就是解释清楚比较麻烦,而且可能解释者觉得解释清楚了但其实听者并没有如解释者所想的那样正确理解。
简单来说,因为PS有GTE,而GTE是专门负责加速3D中使用的特定矢量运算的单元,所以PS属于有专门用于3D ...
我自己用铅笔+尺子在纸上画图稍微明白了些,就是说ps无透视校正功能,当正方形随着3D视角的变化成了梯形之后,贴图单元还是按照把“正方形”分成两个三角形来处理(分界线就是对角线那里)然后分别给两个三角形进行贴图,但因为是个梯形,最终贴图效果的实际观感就是错位的,如果我在正方形上画个“数字1”,说不定错位后变成了“字母Z”,是吧?

[ 本帖最后由 werety 于 2014-2-19 23:12 编辑 ]
作者: werety    时间: 2014-2-19 23:17

引用:
原帖由 民工头子 于 2014-2-19 22:24 发表


土星VR战士VS格斗之蛇 多变形没有变形?没折线?这不是有么,这再近视也能看见吧

我因为盘早不知去哪了,所以只能优酷低清了,优酷低清都能明显看出来

这不是明显有多边形变形么!

这墙都成齿了,还没有 ...
因为我在ps游戏里是经常在地面上看到直线变折线的,所以我光注意人物和地面了,墙体真的没有注意到。
作者: werety    时间: 2014-2-19 23:29

引用:
原帖由 md2 于 2014-2-19 12:26 发表


图来了,是这个意思吧?
其实这个问题主要是几何运算与贴图分为两步造成的。前者是空间运算,后者是平面运算。
不知道非光栅化的3D图形技术有没有这个问题。

http://ww1.sinaimg.cn/mw1024/6f31956bgw1edok ...
也就是说按照我的这个图,粉色线才是正确的描绘吧?
作者: werety    时间: 2014-2-19 23:52

引用:
原帖由 md2 于 2014-2-19 11:30 发表


其实所有硬件特效软件都能实现,你看奔腾时代的电脑,没3D加速卡还不是跑得欢快。
有了3D显卡后就有分工了。
CPU负责多边形的几何运算,光照阴影
3D显卡负责渲染,包括纹理贴图,Z缓冲,线性过滤,ALPHA混合( ...
原来cpu还是要负责几何运算、光照阴影,我之前一直以为显卡把3D相关运算任务全都承包了,为Geforce 256加入了硬件T&L功能,拍残了没有这项功能的VOODOO4,同时老黄提出gpu概念,到了这时候3D所有相关运算才完全被显卡承包吧?也就是顶点运算+光照+渲染。。。。。。
作者: lemonninja    时间: 2014-5-16 19:31

引用:
原帖由 hourousha 于 2014-2-19 12:10 发表

其实这事就是解释清楚比较麻烦,而且可能解释者觉得解释清楚了但其实听者并没有如解释者所想的那样正确理解。
简单来说,因为PS有GTE,而GTE是专门负责加速3D中使用的特定矢量运算的单元,所以PS属于有专门用于3D ...
我查了一下土星的硬件规格,发现貌似土星也有类似gte的单元,就集成在那个SCU(System Control Unit)的dsp里面。system16和wiki上都说:SCU DSP : fixed point maths coprocessor, up to 4 parallel instructions. 如果按照SCU 14.3MHz主频的话那么也应该有将近60MIPS了吧,ps的gte也就66MIPS。

http://system16.com/hardware.php?id=711
http://en.wikipedia.org/wiki/Sega_Saturn#Technical_specifications
作者: werety    时间: 2014-5-16 23:27

引用:
原帖由 lemonninja 于 2014-5-16 19:31 发表


我查了一下土星的硬件规格,发现貌似土星也有类似gte的单元,就集成在那个SCU(System Control Unit)的dsp里面。system16和wiki上都说:SCU DSP : fixed point maths coprocessor, up to 4 parallel instructions ...
估计与PS的GTE还是有差别吧?土星的3D太贫弱了。
我最近重温NDS版的生化1,想到个问题,当年生化2不出土星版的主要理由是3D机能太弱无法变现理想画面,但是生化属于2D背景3D人物,同屏人数(僵尸也算是人吧。)最多不超过10个,而且这游戏基本没什么特效,也就是枪烟之类是半透明的(网格也无所谓了),按理是适当缩水是可以移植的,生化1的缩水效果还是可以接受的,所以我认为没有生化2的土星版可能是索尼买断了版权,而不是因为机能。
作者: lemonninja    时间: 2014-5-17 00:41

引用:
原帖由 werety 于 2014-5-16 23:27 发表

估计与PS的GTE还是有差别吧?土星的3D太贫弱了。
我最近重温NDS版的生化1,想到个问题,当年生化2不出土星版的主要理由是3D机能太弱无法变现理想画面,但是生化属于2D背景3D人物,同屏人数(僵尸也算是人吧。)最 ...
按理来说应该没有差别,都是定点数学协处理器用来矩阵运算。只是据说用的这个dps的游戏非常非常少,因为程序员要同时写到vdp1 vdp2 scu,同时还要协调2个cpu简直是噩梦。更糟糕的是好事世嘉还没有提供任何开发工具。好像除了世嘉自己就没有第二家厂商用过了。
生化2之所以没有移植是因为当时土星已经被放弃了,正在全力准备dc,世嘉要求老卡把精力放在维罗妮卡上面。
作者: 高桥凉面    时间: 2017-5-3 14:47

当年用到这个SCU的游戏好像有索尼克R,DOA1,还有那个灭火的救火英雄这3个游戏,Sega提供的IDE太差,很多游戏都是程序员一点点摸索,从新开发底层来做的,可想而知工作量巨大,对于小公司来说完全是噩梦,而且SEGA惯用这种夸张硬件来为难程序员的手段,各种SM倾向,比土星更难开发的据说是MD+MDCD+32X,同时控制M68000*2,Z80*2,SH2*2,还有附属的DSP及功能芯片。呵呵
作者: cloudian    时间: 2017-5-3 21:21

土星的半透明,那个台湾的低分少年讲得很透彻吧,那是真爱粉啊




欢迎光临 TGFC Lifestyle (http://tgfcer.com/) Powered by Discuz! 6.0.0