Jump to content

Shadow Effect Plugin - Updated for 4.0+ on 2015-03-23


Recommended Posts

This plugin creates a shadow as if from a direct light source in front of the object in question.  As with the other shadow plugins, you need to be working on a layer with transparencies. The shadow is applied to all opaque pixels on the layer. Also, the bottom of the image is assumed to be the "ground" and the shadow is relative to that point.

 

View project on GitHub

 

Requirements
Paint.NET v4.0+

 

Installation

As usual, copy the dll to the Effects folder and restart Paint.NET.

 

Download

 

Plugin example

See GitHub page for latest example.

 

 

post-45788-0-68679600-1427154404_thumb.p

 

 

Previous Versions

Spoiler

 


index.php?app=core&module=attach&section

If you can't see the screenshot above, click for full size:
post-44727-0-11134900-1335809184_thumb.p

Download:

 

Incompatible with paint.net 4.x (works with 3.5.11): ShadowEffect.zip

 

Midora recompiled the effect for paint.net 4.x (see http://forums.getpaint.net/index.php?/topic/1900-shadow-effect-plugin-like-google-maps/?p=419633): ShadowEffectUpdated.zip 

 

As usual, just dump the binary dll in the "Effects" folder.


Change Log:
 

v1.2; 3/21/2015 (8+ years later!)

  • Updated to build against VS2012 Express, use GaussianBlurEffect, and implement PropertyBasedEffect so it's compatible with newer versions
  • GitHub link to source code: https://github.com/ryanr23/PDN-Shadow-Effect-Plugin
  • Thanks to toe_head2001 for his contribution!

v1.1; 10/11/2006

  • Removed references to "Google"
  • Improved rendering time
  • Smoother graduated shadow blurring

v1.0; 09/30/2006

  • Initial release

 

 

-- Ryan 

Edited by toe_head2001
Link to post
Share on other sites
The shadow is applied to all opaque pixels on the layer

Are you just checking for pixels with an alpha value of 255? I would suggest, instead, rendering the drop shadow for all pixels and then blending that based on the source texel's alpha value. You can use UserPixelOps.Normal.ApplyStatic() to do this on a per-pixel basis.

Paint.NET 3.0 will have some blending utility functions that make this sort of stuff (taking the alpha channel in to account) easier.

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to post
Share on other sites

Thanks for the feedback!

No, the operation isn't simply looking for alpha values of 255, but it isn't much more complex than that. Sorry for the simplistic explanation.

It takes the source pixel, converts to black and scales the alpha based on the configured shadow alpha. So if your configured alpha is 115, a pixel with alpha of 255 will get scaled to 115, a pixel with an alpha of 128 will get scaled to 58. Obviously 0 goes to 0.

I assume that you are implying that multiple src pixels get mapped to one destination pixel in the shadow in which case you would want to blend the source pixels to calculate the destination pixels value. In which case, I agree... I haven't gotten there yet. ;) However, I might be able to accomplish the same thing by blurring the image before calculating the shadow, rather than blurring the shadow after the fact. I'm not sure...

Also, if it wasn't apparent from the original post, the current plugin translates the source layer into a shadow layer. The source layer is not preserved. The result of the operation is a mostly transparent layer that can be overlayed on other images to appear to give it depth. This is how the google maps API works.

BTW, I'm not super familiar with the entire Paint.NET API at this point, but by "UserPixelOps.Normal.ApplyStatic()" did you mean "UserBlendOps.NormalBlendOp.ApplyStatic()"?

Link to post
Share on other sites
BTW, I'm not super familiar with the entire Paint.NET API at this point, but by "UserPixelOps.Normal.ApplyStatic()" did you mean "UserBlendOps.NormalBlendOp.ApplyStatic()"?

Yes

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to post
Share on other sites
  • 3 months later...
  • 2 months later...
  • 3 weeks later...
  • 2 weeks later...
:wink: Hello Harvey ! I'm going to try to do that ... i'm French so....

You must to duplicate the pic you have and "put" the effect in the duplicated pic ( i want to say the pic down ...) Hope you'll understand me :wink:

thanks man.. appreciate your help :D

gerrard21dd1.png
Link to post
Share on other sites
  • 4 weeks later...
  • 2 months later...
  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...