» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[业评] 日厂技术大幅度落后就是源于ps2时代吧

引用:
原帖由 Nemo_theCaptain 于 2023-8-4 17:36 发表

PS2当然有Shader,实际上PS1都有Shading的过程,只是PS1是不可编程的
PS2的Shader具备一定的编程性,但灵活度逊于DX8,不过依然可以实现很多人想不到的功能
比如法线贴图PS2是能做的,只不过他跟Xbox那种显卡负 ...
从任何意义上讲,PS2都不支持Shader。
VertexShader方面,PS2没必要支持,它使用VUs功能要更灵活,虽然优化难度比使用VS(无论硬件VS还是MS实现的软件处理版本)要高太多。
PS或Fragment Shader,GS显然是完全意义上的不支持。GS支持的Fragment操作就是最简单最基础的操作,基本所有复杂点的效果都要靠multi-pass blending。
至于所谓的GS法线贴图的‘奇技淫巧’,只能说探索精神可佳,一方面GS的分量相乘是无符号的,想解决有符号就得费一番功夫变成多pass;其次它没有做点乘需要的分量横向相加功能,这就不能以primitive为单位而需要做全屏后处理,将32bit的frame buffer(PSMT32)cast成8bit的PSMT8进行多pass累加,而由于PSMT32与PSMT8的内存布局差异,这个累加还不能以一般意义上post processing那样使用screen quad进行,而得使用一堆细长的小多边形进行操作。因此这基本只停留在‘探索可能性’的研究,类似在minecraft里搭门电路甚至CPU,没什么实用价值。想实现点简单凹凸效果,用早先的emboss凑合一下也就是了。
第一代的Shader,确实还有很多旧时代的影子,就比如尽管功能有进化,但NV1x和NV2x的register combiner都是4进3出的结构,也都以Final Combiner进行结尾,PS1.1-1.3反而是Register Combiner的功能子集,因此微软才在XDK版的Shader里加上了专门对应register combiner的PS1.x。从另一个角度说,如果开发个对应NV1x Register Combiner的pixel shader,叫他PS 0.7也未尝不可。NGC的TEV虽然缺少原生的Dot3功能,但它的dependent texture功能比NV2x还要强,而且Stage数量也不少,所以说NGC有shader功能并不为过,区别只是API与SDK的水平。当然我之前也说过,NGC没有VS只有硬件T&L,反而是个问题。
但尽管第一代Shader过渡性质浓厚,但仅就GS的fragment可编程性而言,恐怕还无法达到DX6.1的标准,毕竟DX6.1里有环境凹凸贴图这个dependent texture前身(而这个功能甚至NV在Geforce3之前都不支持)。GS真的就是凭借‘简单而快’来生存的。

[ 本帖最后由 hourousha 于 2023-8-4 23:19 编辑 ]


本帖最近评分记录

TOP

引用:
原帖由 Nemo_theCaptain 于 2023-8-4 23:20 发表

我说的就是PS2的架构本身和PC没有直接可比性,因为谁都知道GS是个没啥特效单纯追求吞吐的傻块,剩下的都是EE的奇技淫巧
如果说这些活是CPU(VU)干的就不算Shader那我也无所谓
法线贴图之前别人一直是用尼奥之路 ...
其实并不只是EE的奇技淫巧,而是专用硬件平台Direct to metal的特性,就好像各种内存cast,把某种格式的纹理当成另一种格式的来使用,比如鬼武者3就把z-buffer,直接当8bit索引颜色纹理来用,而索引表里是预计算的映射深度的大气散射颜色,等于直接免费做了一次大气散射的查表操作。包括XBOX也可以直接改纹理头信息做格式cast,甚至还能通过VertexShader改变Const Buffer里的值,这些如果是PC上DirectX这种通用化的API,出于硬件兼容与安全性考虑,都不可能开放。
我也说了VU干的比VS还要更灵活。但VS强在保持了一定的灵活性外,不用费太大精力来优化,比如可以自动切换线程来隐藏指令延迟这点,就能让优化VU代码的人羡慕死。
GS法线贴图那玩意,是一开始有人研究在PS2上做延迟渲染的可能性的副产物。使用类似后处理方式做分量横向相加也是这个原因。但后来发现,GS的Edram的空间做延迟渲染实在是太小了……
想出点凹凸效果,方法是有很多,使用法线贴图,虽然相对‘准确’,但效果倒不一定永远最好——首先它对素材的要求很高。至于尼奥之路用的什么,不清楚。



本帖最近评分记录

TOP

引用:
原帖由 Nemo_theCaptain 于 2023-8-5 00:13 发表

PS2时代特效处理我印象最深的是伪HDR
AC5+0和旺达都有,比一般的bloom有更复杂的层次感
后来DF做旺达的视频我才知道实现方式
室外场景做一段代码时刻判断太阳被遮挡的程度,具体方式没说,可能类似Godray可能是 ...
算太阳遮挡其实是有很多方式的,做最简单的lens-flare也得算太阳遮挡嘛。
HDR这玩意当初应该是Tri-Ace研究的最勤,包括景深之类的,基本都在和FrameBuffer,Z-buffer过不去。Tri-Ace还搞了个简化的tone-mapping曲线(成折线了)。这些东西在先进的硬件上都是很直接就能实现的,放到PS2上,每个都堪比脑筋急转弯。当然,正由于需要花更多的脑筋,很多时候还得配合美术上的trick来实现,反而效果可能会更讨好眼睛一些,就好像你说的,战争机器的HDR,如果从实现的准确性和精度上讲,肯定比PS2游戏要来的高,但好不好看,就因人而异了。
我觉得Tri-Ace的问题就是太一根筋,到了PS360时代,还陷在这里研究物理镜头什么的。问题是这公司的体量在那,这边精力花多了那边就少了。所以出来的东西,哪怕在画面方面,都很欠缺均衡,好像星海4,不说战斗分辨率低到接近480p的问题,野外法线贴图闪烁问题都完全没去解决,整体光照颇为生硬。。


TOP

发新话题
     
官方公众号及微博