百科问答小站 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 和 Switch 之间该如何选择呢? 
  如何评价XGP新增八方旅人、尼尔机械纪元等作品? 
  3D游戏的开发历史上,有哪些值得一提的游戏? 
  单机游戏是否存在更好的售卖方式? 
  计算机底层是如何访问显卡的? 
  为什么腾讯游戏做不出所谓的「好游戏」? 
  为什么有那么多网吧,却没有xbox吧? 
  如何评价《双人成行》的制作人称「游戏制作者不该在游戏重玩性上花费太多精力」? 
  如何评价有些游戏玩家看视频通关的行为? 
  如今只使用TCP协议开发 实时多人在线网络游戏 可行吗? 

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





© 2024-05-14 - tinynew.org. All Rights Reserved.
© 2024-05-14 - tinynew.org. 保留所有权利