Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.
Original Source
- Original title: Bitmap Effects
- Original author: orochii
- Original date: November 2, 2018
- Source thread: https://forums.rpgmakerweb.com/threads/bitmap-effects.101716/
- Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > RGSS Scripts (RMXP)
Summary
Bitmap Effects By Orochii Zouveleki RGSS1, tested with RGSS102J.dll INTRODUCTION
Archived First Post
Bitmap Effects
By Orochii Zouveleki
RGSS1, tested with RGSS102J.dll
INTRODUCTION
I started doing modifications to a friend's DLL code, and I ended up doing this. Basically, it's a transparency effect. It includes a basic masking for any bitmap by using another bitmap's alpha channel, as well as a more complicated and somewhat powerful scrollable alpha masking using RGB components as alpha layers. It's kind of complicated to explain, but it lets you make something like this.
To the left, a sprite with some kind of animated outline. To the right, a single background with both scrolling alpha and static alpha layers.
CODE
http://share.cherrytree.at/showfile-31871/ozwbitmapextensions.zip
Right now all comments are in Spanish, I need to reupload it in English later. This download includes the necessary DLL, the source code for the DLL, and the wrapping code for using it in RGSS. It also includes an implementation for its easy use with Sprite. Something pretty similar can be done with Plane, but I haven't made it. You're free to do so.
COMPILING THE DLL
Any IDE should work, but just as reference I used Code::Blocks along with the GCC compiler that comes with it (version 4.7.1 if I recall correctly). Just install and open Code::Blocks, create a DLL project from it, throw the code there and you're good to go.
INSTRUCTIONS
New properties for Sprite class:
- @sprite.alpha_mask : a bitmap to be used as alpha mask.
- @sprite.alpha_mask_kind : 0 for simple mode, 1 for composite mode.
- @sprite.alpha_mask_sx : horizontal scrolling speed for the scrolling layer.
- @sprite.alpha_mask_sy : vertical scrolling speed for the scrolling layer.
AVAILABLE METHODS
Use these arbitrarily with any bitmap in order to apply alpha masking effects.
BUILDING A COMPOSITE MASK
A composite mask uses the R G and B channels sepparately for different effects. Each one of them have simple but very distinct properties.
R is the base alpha mask.
G is multiplied by R, which means if an spot in G is zero, it will result in zero.
B is added to R*G, which means it works as a threshold.
Another thing to keep in mind is that G can be scrolled by manipulating sx and sy at the compositeMask method. This is done automatically while updating the sprite by using the property implementation.
Here is an example of the alpha mask used for the example above
->
The image to the right consists of three grayscale images (shown to the left), joined together as a single image, each in a different color channel. Use Photoshop or GIMP or any program with the option to manipulate sepparate channels in order to do this.
LICENSE
MIT License.
Have a nice day. :^)
By Orochii Zouveleki
RGSS1, tested with RGSS102J.dll
INTRODUCTION
I started doing modifications to a friend's DLL code, and I ended up doing this. Basically, it's a transparency effect. It includes a basic masking for any bitmap by using another bitmap's alpha channel, as well as a more complicated and somewhat powerful scrollable alpha masking using RGB components as alpha layers. It's kind of complicated to explain, but it lets you make something like this.
To the left, a sprite with some kind of animated outline. To the right, a single background with both scrolling alpha and static alpha layers.
CODE
http://share.cherrytree.at/showfile-31871/ozwbitmapextensions.zip
Right now all comments are in Spanish, I need to reupload it in English later. This download includes the necessary DLL, the source code for the DLL, and the wrapping code for using it in RGSS. It also includes an implementation for its easy use with Sprite. Something pretty similar can be done with Plane, but I haven't made it. You're free to do so.
COMPILING THE DLL
Any IDE should work, but just as reference I used Code::Blocks along with the GCC compiler that comes with it (version 4.7.1 if I recall correctly). Just install and open Code::Blocks, create a DLL project from it, throw the code there and you're good to go.
INSTRUCTIONS
New properties for Sprite class:
- @sprite.alpha_mask : a bitmap to be used as alpha mask.
- @sprite.alpha_mask_kind : 0 for simple mode, 1 for composite mode.
- @sprite.alpha_mask_sx : horizontal scrolling speed for the scrolling layer.
- @sprite.alpha_mask_sy : vertical scrolling speed for the scrolling layer.
AVAILABLE METHODS
Use these arbitrarily with any bitmap in order to apply alpha masking effects.
OZWBitmapExtension.simpleMask(srcBitmap, maskBitmap, targetBitmap)
srcBitmap : Source bitmap.
maskBitmap : Bitmap used for masking (multiplying alpha per pixel).
targetBitmap : The resulting bitmap will be stored here. Keep in mind, source and target must be the exact same size.
OZWBitmapExtension.compositeMask(srcBitmap, maskBitmap, targetBitmap, sx, sy)
srcBitmap : Source bitmap.
maskBitmap : Bitmap used for masking (resulting alpha = srcAlpha * (red * green + blue)).
targetBitmap : The resulting bitmap will be stored here. Keep in mind, source and target must be the exact same size.
sx : Horizontal displacement for the G layer.
sy : Vertical displacement for the G layer.
BUILDING A COMPOSITE MASK
A composite mask uses the R G and B channels sepparately for different effects. Each one of them have simple but very distinct properties.
R is the base alpha mask.
G is multiplied by R, which means if an spot in G is zero, it will result in zero.
B is added to R*G, which means it works as a threshold.
Another thing to keep in mind is that G can be scrolled by manipulating sx and sy at the compositeMask method. This is done automatically while updating the sprite by using the property implementation.
Here is an example of the alpha mask used for the example above
The image to the right consists of three grayscale images (shown to the left), joined together as a single image, each in a different color channel. Use Photoshop or GIMP or any program with the option to manipulate sepparate channels in order to do this.
LICENSE
MIT License.
Have a nice day. :^)
Downloads / Referenced Files
Log in to download
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadLicense / Terms Note
LICENSE MIT License. Have a nice day. :^)
Creator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
0
replies
1
view
Topic Summary
Loading summary...