這是 RPG Maker XP (RPG遊戲製作大師XP)中加法合成模式的使用範例。
以下把 RPG Maker XP 簡稱 RMXP 。
RMXP 中所示的合成模式是什麼?又有啥用?相信很多初心者,甚至已經做了一兩套遊戲的老手也不知道。
說穿了,RMXP 中的合成模式其實就是 Photoshop 等繪圖軟體中的混合模式(blend mode),而不是很多教遊戲繪圖的書講的 alpha compositing ,避免混淆,以下我會盡量改以混合模式稱之。
而「普通」(normal)、「加法」(additive)、「減法」(subtractive)在 Photoshop 的對應叫法分別是「正常」(normal)、「線性加亮」(linear dodge)、「線性加深」(linear burn)。
普通混合模式無需多講,很多人已經知道是像透過玻璃看東西般,既看到玻璃上的顏色,又看到玻璃背後的景物的顏色,如果玻璃的不透明度(英文opacity,或叫遮蔽度(註1))為三成,玻璃上的顏色只顯示得三成,而玻璃背後景物的顏色就顯示七成。
用公式表示即是
blend(dest,src,alpha) = dest × (1.0 - alpha) + src × alpha
當中,src 為玻璃的紅、綠、藍三原色成份其中一個,而 dest 為玻璃背後景物的的三原色成份對應的那一個, alpha 為 src 的 alpha 值,即是不透明度,紅、綠、藍三色共用一個。當然紅、綠、藍三色各自都要做此運算,圖像的每一點各自都做此運算。
(1.0 - alpha) 是因為用 1.0 為 alpha 值的最大值,如果是用 255 為最大值,則公式為
blend(dest,src,alpha) = dest × (255 - alpha) ÷ 255 + src × alpha ÷ 255
可以看到在普通模式下, dest 和 src 除了 blend 之外 ,沒有做任何運算,如果 alpha 值為最大值,就純然是 src 遮蔽住 dest ,但在加法和減法模式就不同了。
加法模式的公式是
blend(dest, min(1.0, dest + src), alpha)
當然這是用 1.0 為紅、綠、藍原色成份的最大值時的公式,如果是用 255 的話則
blend(dest, min(255, dest + src), alpha)
當中 min(1.0, dest + src) 取代了普通模式中的 src 的位置,看到吧,只是兩色光度相加而已(dest + src),所以 Photoshop 稱作「線性加亮」,因為是兩色光度的線性相加。當中 min 表示 minimum ,取參數中較小的值,因為再亮也不能亮過最大值。
以下只看公式中的 min(1.0, dest + src) ,而不計較 blend 。
加法模式又表示了什麼物理現象呢?聰明的看倌應該已經想到──兩者光源相疊在一起。
那麼,加法模式在 RMXP 又可以有什麼作用?可以做透光效果!!!
用在 RMXP 的圖。
至於減法模式,本應是兩色暗度相加,但 RMXP 的實作卻錯誤地做成 src 的負片效果。
註1:「遮蔽度」是我的自創譯法,因為叫「不透明度」的話,思考上要繞圈子,而叫「遮蔽度」是因為 alpha 通道(alpha channel)的 opacity 在某些軟體也用來做遮蔽(mask)。
