符文工房吧 关注:19,697贴子:323,033

关于NS支持的纹理格式以及硬件性能的分析

只看楼主收藏回复

很久没有研究这些了,但楼主还是有点研究这些的兴趣的,后面符文4重制版和5出了也打算研究一下,所以就想先开贴研究一下NS的GPU支持的纹理格式,以及Switch的硬件性能分析。


IP属地:云南1楼2019-07-06 14:54回复
    虽然现在还没有接触过NS的解包,但之前在Github上看见有大佬发布的工具SwitchLayoutEditor,这个工具应该是查看和编辑Switch内部文件的布局的,我应该可以从源代码中了解一些信息。



    IP属地:云南2楼2019-07-06 14:58
    回复
      从这个工具的源代码中就可以看出NS内部文件的Sarc里面有bflyt,bflan,bntx文件。
      其中bflyt用于指派布局,bflan是动画,这两种格式在WiiU和3DS中也出现过,其中的b代表Binary二进制,f代表Cafe。例如bflan就是Cafe Layout Animation。
      bntx应该是图片,这种格式应该和DDS有关。
      这种布局和Wii,3DS使用的类似,举个例子3DS的bclim和Wii的tpl在arc中就是分离的图片,bclyt和brlyt用于指派布局,bclan和brlan是动画。
      三个村庄人物的眨眼动画应该就是bflim和bflan产生的。




      IP属地:云南3楼2019-07-06 15:26
      回复
        如果要自己写图片导出工具的话,首先要对纹理格式也要有所了解才行,不然导出的图片可能就会出现问题。
        就像EveryFileExplorer的RGBA5551的有部分的代码写错了,导出符文4人物面部的图片颜色就会出现问题,那里修正了就好了。
        以前我说的RGBA8,RGB8,RGBA5551,RGB565,RGBA4,LA8,HILO8,L8,A8,LA4,L4,A4,ETC1和ETC1A4就是3DS的GPU PICA200支持的纹理格式,要研究NS的话就又需要了解其他的纹理格式了。





        IP属地:云南4楼2019-07-06 15:40
        回复
          从这个工具的源代码中就可以了解到NS的一部分纹理格式。
          其中R是指红色,G是指绿色,B是指蓝色,例如R5G6B5就代表红色占用5位,绿色占用6位,蓝色占用5位,应该就是RGB565,R11G11B10代表红色和绿色占用11位,蓝色占用10位,R16和R32应该代表这16位或者32位都是红色。
          BC1到BC5应该是Direct3D的压缩纹理格式,ASTC是OpenGL和OpenGL ES图形API的官方扩展,硬件上可以减少应用程序所需的内存,并减少GPU所需的内存带宽。
          NS使用的处理器Tegra也是ARM架构的,Tegra可以支持ASTC的压缩格式。
          另外GBA,NDS和3DS的处理器也是ARM架构,GBA的CPU是ARM7,NDS是ARM7和ARM9,3DS是ARM9和ARM11,NDS有ARM7处理器所以就可以向下兼容GBA游戏,3DS有ARM9的处理器所以就可以向下兼容NDS游戏。




          IP属地:云南5楼2019-07-06 16:01
          回复
            bflyt的文件结构我似乎了解一部分,其中Grp1代表Group组,Pan1代表ParentPan,Pic1代表Picture图片,Txt1代表Text文本,Usd1代表Userdata用户数据。


            IP属地:云南6楼2019-07-06 16:10
            回复
              另外这个工具可能支持YAZ0压缩的SARC,这个我记得马里奥赛车7使用过这种文件,NS的SARC应该也有YAZ0压缩的。



              IP属地:云南7楼2019-07-06 16:39
              回复
                太强了


                IP属地:浙江来自Android客户端8楼2019-07-06 16:41
                回复
                  赶上大佬直播。。到时候出了新游戏记得来一波解包~


                  来自Android客户端9楼2019-07-06 16:49
                  收起回复
                    下面再谈谈NS的硬件方面,NS的CPU使用的是四核ARM架构的A57,频率的话掌机模式是307.2Mhz,底座模式是1020Mhz。
                    GPU是NVIDIA的NX-SoC,Maxwell架构(和电脑的9系显卡一样)核心为GM20B,GPU变体为ODNX02-A2,TDP设计为15W。光栅单元(ROPs)为8个,纹理单元(TMUs)为16个,流处理器256个。
                    显存是4G的DDR4内存,位宽为64bit,有一部分与系统内存共享。显存频率掌机模式为1331Mhz,底座模式为1600Mhz,掌机模式和底座模式的内存带宽分别为21.3G和25.6G。
                    核心频率掌机模式为384Mhz,底座模式为768Mhz,底座模式下像素填充率可以达到6.144GPixel/s,纹理填充率可以达到12.288GTexel/s。
                    其中光栅单元影响的是像素填充率,像素填充率是指GPU在一秒钟内可以渲染在屏幕上和写入显存的像素数量,游戏中的抗锯齿,光影和反射效果越高,对GPU的像素填充率也就越高。
                    纹理单元影响的是纹理填充率,纹理单元则是处理纹理效果的,和流处理器成正比,游戏中的纹理效果越高,对GPU的纹理填充率要求也就越高。
                    像素填充率的计算方法是核心频率×光栅单元÷1000,单位为GPixel/s,例如NS的掌机模式的核心频率是384Mhz,GPU有8个光栅单元,那么在底座模式的像素填充率就是384×8÷1000=3.072GPixel/s。
                    纹理填充率的计算方法是核心频率×纹理单元÷1000,单位为GTexel/s,例如NS的底座模式的核心频率是768Mhz,GPU有16个纹理单元,那么在底座模式的像素填充率就是768×16÷1000=12.288GTexel/s。
                    其中1GPixel等于十亿像素,1GTexel等于十亿纹理元素。


                    IP属地:云南10楼2019-07-06 17:11
                    回复
                      从上面的总结来说虽然NS硬件性能并不强,但性能上还是超越了PS3和WiiU的GPU,加上游戏的优化,底座模式玩720P应该是没问题的,但再高的分辨率估计还是有些吃力的。
                      上面那几种纹理格式就是NS的GPU NX-SoC支持的纹理格式。


                      IP属地:云南11楼2019-07-06 17:20
                      收起回复
                        厉害厉害


                        IP属地:江苏来自Android客户端12楼2019-07-06 19:10
                        回复
                          666


                          IP属地:上海来自iPhone客户端13楼2019-07-07 00:03
                          回复
                            给大佬递茶


                            IP属地:广东来自Android客户端14楼2019-07-07 02:02
                            回复
                              给大佬递茶


                              IP属地:河北来自Android客户端15楼2019-07-08 07:37
                              回复