作者NDark (溺於黑暗)
看板GameDesign
标题Re: [分享]今日去弘煜笔试的情形
时间Thu Jul 11 22:52:15 2013
※ 引述《sk131 (鲔鱼)》之铭言:
: 一题是何谓256色,高彩和全彩
: 喂狗的答案是因为电脑是使用2进位
: 所以256色是2的8次方
: 高彩是2的16次方,全彩是2的24次方
: 嗯...... 这个算是美术设计的范围吗?
: 还真不记得那个老师在教画图时有教过
: 回去再翻一次photoshop的笔记也没看到这玩意
: (笔记有写的话我就不会死在那了啊 XD)
来讲古一下好了
这个大概是在考贴图输出格式.
最早以前一些函式库还没这麽好用
(不像影像处理软体这麽方便已经准备好那些读图的loader)
程式要自己读档案,分析档头,甚至解压缩.
最後把未压缩的图放在一个空间里面
如果是最早以前256色的一个画素只消耗一个byte去存,所以只能存0~255
所以一张全白的3*3图会变成像这样
255 255 255
255 255 255
255 255 255
在这种情形你可以在photoshop里面看到(似乎是)index color这样的设定.
後来比较正常一点我们用3byte去存也就是 R(0~255) G(0~255) B(0~255)
所以一张全红的3*3图会变成
(255 0 0) (255 0 0) (255 0 0)
(255 0 0) (255 0 0) (255 0 0)
(255 0 0) (255 0 0) (255 0 0)
这里就是全彩了.
然後这种情形下透明色就是用一个奇怪的颜色(通常是偏紫红色)
只要侦测到那个颜色,就是全透明.不是那个颜色就是不透明.
这种情形你可以在photoshop里面看到24bit这样的设定
再更先进一点,为了搞定半透明的问题,我们乾脆用4byte去存了.
也就是 R(0~255) G(0~255) B(0~255) A(0~255)
这时每个像素都可以指定不同程度的透明,从不透明A=255到完全透明A=0
这种情形你可以在photoshop里面看到32bit(4byte)这样的设定
因此png与tga会在游戏界这麽红的原因就是因为游戏界要处理alpha的问题
而且可以有未失真的压缩
jpg虽然档案小但是解压缩要花时间,解压缩之後的大小跟其他格式根本就相同,
所以游戏界完全被淘汰
bmp比较少人用是因为完全未压缩,档案太大.
(高彩用的是16bit那麽google 是 R5G5B5A1
但这个过渡期我比较不熟
在映像管时代的萤幕设定都可以改全彩or高彩的)
但是这世界没这麽好心,因为各种不同的政治与平台差异
同样是4byte
有些平台会存成
R8G8B8A8
有些会反过来
A8B8G8R8
还有些要省空间的会存成
A3B7G7R7 (用24bit存rgba四个channel)
所以在这种GY的情形下,就必须限制美术人员在整个专案中输出指定格式,
这样程式就不用写一海票针对各种不同格式都要能读的loader,
也不用担心贴图读进来坏掉的情形.
不过呢这种事情是古老时代了.
在现在这种美好时光,
用了好用的引擎或图档函式库之後那些问题就都抛在脑後了.
比较麻烦的是因为图档格式的混乱(都可以读)反而造成了乱七八糟的情形.
因此,
从团队的原始到先进,对於贴图的控管会像是这样的进展
jpg -> png -> dds
然後贴图的档案拼法会是这样的进展
分散的档案 -> 集合的档案 -> 依照材质拼在一起的档案 -> 参数化的贴图
--
"May the Balance be with U"(愿平衡与你同在)
视窗介面游戏设计教学,讨论,分享。欢迎来信。
视窗程式设计(Windows CLR Form)游戏架构设计(Game Application Framework)
游戏工具设计(Game App. Tool Design )
电脑图学架构及研究(Computer Graphics)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.68.22.188
1F:推 LPH66:顺带一提, 後一题的 Alpha channel 就是这篇文里的 A 分量 07/11 22:55
2F:推 sk131:大约懂一点了,感谢前辈细心指导,至少知道早期还是256色的电 07/11 23:00
3F:→ sk131:脑时的情形是怎麽一回事了,当时能存的byte有限 -_- 07/11 23:01
4F:推 sk131:所以alpha channel是指将某种颜色的alpha值变成0或255吗? 07/11 23:06
5F:推 encephalon:应该说是"任何"颜色的透明度 07/11 23:12
6F:→ azureblaze:alpha算是在每个像素额外增加0~255的资讯 07/11 23:21
7F:→ azureblaze:通常用来当透明度 07/11 23:22
8F:推 sk131:喔喔,这样说明就比较懂了 ^^ 07/11 23:22
9F:→ azureblaze:实务上alpha还有很多花样可以做 07/11 23:28
11F:推 sk131:这是利用透明度来做出有凹陷感觉的错觉吗? 07/11 23:32
13F:→ azureblaze:越黑的地方表示越深,程式会算出每个视角该有的样子 07/11 23:37
14F:→ azureblaze:可是美术必须提供图,所以需要知道alpha是什麽 07/11 23:38
15F:推 sk131:喔喔,感觉好像是3dsmax也用过的凹陷贴图,从材质球去拉a值 07/11 23:40
16F:推 hoyunxian:那顺便问一下48bit和24bit主要差在哪里? 07/12 03:11
17F:推 fredxxx123:讲得很详细~建议美术们也要能大致理解这些东西,对於 08/06 00:13
18F:→ fredxxx123:任何的shader特效会更容易掌控。 08/06 00:13