Sign in to follow this  

Post processing

This topic is 1441 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi guys

 

I have a image that has been rendered externally via Direct2D and I would like to do some modifications to it procedurally in D3D11.

 

Basically, I would like to take this source image:

 

map1_zpsc3e27a1b.png

 

Round the edges a bit:

 

map2_zps120876e2.png

 

and then add some graininess like this:

 

map3_zps9023d3ca.png

 

I have never done anything like this before so I am not sure where to start....

 

Any ideas/suggestions?

 

Thanks

JB

Share this post


Link to post
Share on other sites

You probably need some restrictions, like are the colors always only those 3 colors?

Is it a magnification of a smaller image, like an image where each pixel is 16x16 instead of 1x1 or similar?

 

If it can be any image at all and you want to smooth hard corners, then it's pretty difficult and you need a very smart algorithm that searches the images.

If the original image is a small image that you want to magnify without making it look pixelated, then it's much easier.

Share this post


Link to post
Share on other sites

Like Erik said,

 

in the specific example you specified, you'd need some kind of algorithm that generates an outline of the areas of the different colors, after that, it's not too hard.

 

So imagine you found some way of finding these areas, then you could check where there are edges, and add these points to an array, in order. Then after getting these points, you could generate a vertex structure, defining the area, and as constructing the triangles can be a bit harder, I could throw this into the post: https://code.google.com/p/poly2tri/ (A tool that converts polygons to triangles, also in c++) Then having this vertex structure, to get this smoothing effect, there's multiple ways of archiving it, like: Tessellation, Bezier Curves, and that's going to be your adventure smile.png .

 

Visualizing all of this would give this:

  • We defined the yellow area, and the yellow area itself is a mesh, with ~32 Vertices
  • The Blue being the outline of the area, only top though, you can figure the rest out.
  • The yellow being the smooth/tessellated outline.
  • NOTE: I forgot to highlight 1 edge...

2lym43.jpg

 

Hope this may help you.

-MIGI0027

Share this post


Link to post
Share on other sites

I think that you could achieve at least some of the desired effect with gaussian blur, some sort of ripple and contrast filters. I did a quick test with those filters in photoshop and below is the result. 

 

Programming those filters is not too complicated.

 

[edit] I used the first image as source.

 

Cheers!

Edited by kauna

Share this post


Link to post
Share on other sites

Thanks guys. The image I am working with is of a high enough resolution. The source data used to render the first pass is not though hence the "appearance" of pixilation. I cant seem to find any examples of the ripple/contrast filters for HLSL though...Any ideas?

 

Thanks

JB

Share this post


Link to post
Share on other sites

Ok after some further playing around im going to have to change my approach a bit...Rather than blur/rounding I need to generate a radial gradient from the edges, create a mask from that, and then generate a noise pattern in that mask in areas with a value eg < 1.0. Then apply that mask to the original texture. I already have the edge location part. Not sure how to generate the radial gradient or the noise though. Any ideas?

Share this post


Link to post
Share on other sites
Sign in to follow this