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


发新话题
打印

md机能和特效到底可以做到怎样?

引用:
原帖由 hisame 于 2020-11-14 21:18 发表
posted by wap, platform: 小米NOTE

1.拉伸是有的,缩放和旋转似乎也有?

2.然后居然也有sfc的mode7效果?

3.3d就不用说了,只要主机支持矢量绘图,且速度够快,总能画出来。

4.个人认为,机器支持的原始特效及其简单组合可以认为是机器支持的特效(直接或间接)。需要大量运算的就不能算数了,难以用到游戏或过场动画里。
...
你说的这4个观点其实是有问题的。

硬件机能指的是显示硬件(俗称VDP或者显卡)是否提供的相应的能力,外部逻辑(由CPU执行的游戏代码)只需要准备好对应的美术资源,放置到该能力对应的显存/内存位置中,然后调用一下显卡提供的功能指令地址,显卡就会完成将这部分美术资源一行行绘制到屏幕的功能。

举个例子:缩放
* 硬件缩放,就是主程序部分将一张图片的原始大小像素数据在指定内存地址保存好,然后在活动精灵属性表中指定某个精灵要用那个内存地址的数据作为精灵的外观、在活动精灵属性表中指定该精灵的旋转的角度值,最后调用显卡的活动精灵显示功能,显卡在绘制该编号的精灵时,就会以旋转一定角度的方式绘制出来。CPU不需要去每个像素地计算一个精灵在旋转后的表现,自然也就省下了大量算力。开发也比较方便(类似于软件里调用个函数,你不用关心函数怎么实现,你只要知道这个函数有一个角度参数,你设定角度参数,就可以完成旋转,这样开发这个函数的大量时间就省了)
* 而软件缩放,就是主程序在准备待显示的图片像素数据时,就要准备好一张已经旋转后的,而显卡将这个图无旋转地描画到屏幕上。缺点显而易见,耗CPU时间、并且因为是在通用内存而非显存内进行图片的旋转,时间和带宽开销有一定要求。而优点是灵活,必要时可以增加算法逻辑实现比显卡硬件管线实现的缩放功能更复杂(比如平滑边缘)的旋转画面。

所以我们说MD不具备旋转、拉伸、缩放、任意仿射形变(SFC Mode7),是指MD的VDP不具备硬件上的机能。但是MD的CPU和内存足够快,所以通过牺牲代码主逻辑时间片,可以实现基本的旋转拉伸缩放甚至任意形变。但是代价太大,所以使用不经济。这也是为什么MD CD要在VDP硬件上加上这些功能的原因。

至于第3点说的矢量绘图,在MD上是不存在这种硬件机能的,都是CPU软件绘制。

MD上软件旋转缩放用得多的游戏推荐玩Red Zone
3D用得多的游戏推荐忍无可忍、Star Cruiser、玩具总动员中的抓外星人关(全屏)

OverDrive的Demo中的一些MD VDP技巧实现的3D:
1:13 绿滚筒。MD纵向列偏移。
1:21 紫红气泡。纯软件计算坐标和缩放大小(套用不同大小的Sprite)。
1:29 球形、特定型气泡布阵。纯软件计算坐标和缩放大小(套用不同大小的Sprite)。
1:44 特定型气泡布阵穿插TITAN的Logo。同上,外加设定Sprite和Titan Logo显示层的硬件显示层优先级关系。
1:59 心形图动态紫色背景。序列帧图压缩后,播放时引用不同的预制Sprite代替序列帧的像素。
2:08 双螺旋条加宽面条。射线追踪、网点半透明(要AV线)、硬件显示层优先级切换。
2:33 纵向拉伸地图。行中断描画时,移动部分活动块,使部分块的行被故意缺失,达到抽线后纵向压缩的目的。(云和地面是2层,有移动速度差)
3:02 机器人图交错编织。行中断描画时,设定描画行的行偏移。
3:17 螺旋宽面条。同上方“双螺旋条加宽面条”
3:44 旋转罗盘。列偏移+行偏移+Sprite图切换。
4:00 斑马穿透网格。这个我暂未想出实现方法。
4:36 6面体形变。射线追踪。
4:45 同屏512色。行中断色斑切换、颜色混合(要AV线)
5:30 3色环掩盖显色。没有深究,有几种方法,但大概率是射线检测完成。


本帖最近评分记录
  • Callisto 激骚 +2 原创内容 2020-11-16 00:47
  • 聋则嗅明XP 激骚 +1 最骚 Rated by wap 2020-11-16 00:08
  • hisame 激骚 +1 最骚 Rated by wap 2020-11-15 21:13

TOP

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