百科问答小站 logo
百科问答小站 font logo



Sony和Nintendo系游戏主机的软件开发基于什么图形库? 第1页

  

user avatar   Hypothetical 网友的相关建议: 
      

PS4 的图形 API 分两种,自有标准的 GNM 和 GNMX,前者更为接近底层,类似 Vulkan 和 DX 12,能够更为充分的调动硬件机能,同时也意味着开发难度更大;后者层级较高,开发效率上较 GNM 有一定优势,当然表现在实际执行效率上可能逊于 GNM。这也可以解释为何 Sony 本社开发的游戏在利用硬件平台机能上有一定优势:因为愿意花费大量的时间、人工和开支。

前面提到类似 Vulkan/DX 12 指的是 API 接近硬件底层,实际上 GNM/GNMX 结合了 DX 11.4+/OpenGL 4.4 以及 SCE 自行开发的部分指令集扩展。

Shading Language 则是 PSSL,以及配合 CPU 部分使用的 C++11 CPU Compiler 。PSSL 支持较新的 Vertex 与 Pixel Shaders、Geometry Shaders、HS DS Tessellatio、Modern Compute Shaders。遵循 PC 平台 ANSI C style syntax,支持向量、标准库、C++ Style Structs with Members、Static and Dynamic Control Flow。此外还有 SCE 自己提供的各种系统库和开发套件负责解码、输入输出、网络等方面。SDK 以 LLVM 和 Clang 为基础。

2013 年的开发文档预览里给出了 Vertex Shaders 的示例:

       struct VS_INPUT {     float3 Position     float3 Normal     float4 Tangent     float2 TextureUV : POSITION;    : NORMAL; : TEXCOORD0; : TEXCOORD1;  };  VS_OUTPUT main( VS_INPUT input ) {     VS_OUTPUT Output;     Output.Position = mul( float4(input.Position.xyz,1), m_modelViewProjection );     ...     float3 vN = normalize(mul(float4(input.Normal,0), m_modelView).xyz);     ...     return Output; }      

以及 Pixel Shaders:

       SamplerState samp0 : register(s0);  Texture2D colorMap : register( t0 );  Texture2D bumpGlossMap : register( t1 );  float4 main( VS_OUTPUT In ) : S_TARGET_OUTPUT  {     ...     float4 diff_col = colorMap.Sample(samp0, In.TextureUV.xy);     float3 spec_col = 0.4*normalGloss.w+0.1;     ...     return float4(vLight.xyz, diff_col.a); }      

此外开发文档预览还指出 PS4 的开发支持 Visual Studio。

PS3 同样有两种 API:较低层级的 LibGCM 与特征接近 OpenGL 的 PSGL。PSGL 以 OpenGL ES 1.1 和部分 SCE 自有标准的指令集为基础构建。两种 API 均以 NVIDIA Cg 为 Shading Language。可能是较低的内存和显存容量所致,PS3 时代的开发人员更为青睐 LibGCM 以提高游戏运行效率。

PSGL 最早可追朔到 PS2 时代,不过没多少人用。

由于 PS 系列主机详细开发文档仅对注册开发者开放,以及 NDA 限制,详细内容无法得知。上述内容肯定与实际情况有相当的出入。所以如果觉得回答似乎言之有物的话就点击“感谢”而不是旁边向上的箭头以免误人子弟......吧?


参考资料:

ICE Team, AMD & Other Devs Discuss API's - Sony's LibGCM First Modern Low Level API?

PS3: Introduction to GCM

PlayStation Shading Language for PS4




  

相关话题

  PS4 手柄相对于 XBOX 手柄,会不会给人一种粗制滥造廉价粗糙的感觉? 
  为什么PS5和XBOX不使用任天堂那样的闪存卡带而要继续用光盘? 
  未压缩的游戏有好几十TB这是真的么? 
  订阅服务式消费模式是否是必然,微软的 XGP 服务是否会成功? 
  switch右手柄玩马里奥按键偶尔失灵是何故? 
  如何看待 2021 E3 游戏展「微软 & 贝塞斯达发布会」?有哪些值得关注的内容? 
  任天堂今年推出的 Switch Pro 最强升级几乎没悬念吗? 
  为什么游戏机的游戏卡顿我们可以忍受甚至原谅,而个人电脑的游戏卡顿我们无法忍受? 
  做了两年多的独立游戏没有积蓄前途渺茫,我该不该放弃? 
  游戏策划的难度在哪? 

前一个讨论
圣经记载的耶稣复活是纯属虚构还是真实事件改编加工?
下一个讨论
iPhone 的早期用户当年是怎么被诺基亚用户冷嘲热讽的?





© 2024-11-09 - tinynew.org. All Rights Reserved.
© 2024-11-09 - tinynew.org. 保留所有权利