View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Post processing

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

7 replies to this topic

### #1Naruto-kun  Members

Posted 02 February 2014 - 12:47 PM

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:

Round the edges a bit:

and then add some graininess like this:

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

Any ideas/suggestions?

Thanks

JB

### #2Erik Rufelt  Members

Posted 02 February 2014 - 02:15 PM

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.

### #3Migi0027 (肉コーダ)  Members

Posted 02 February 2014 - 03:21 PM

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  .

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...

-MIGI0027

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/cuboidzone.wordpress.com/

### #4kauna  Members

Posted 02 February 2014 - 03:50 PM

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.

 I used the first image as source.

Cheers!

#### Attached Thumbnails

Edited by kauna, 02 February 2014 - 03:50 PM.

### #5Naruto-kun  Members

Posted 03 February 2014 - 12:35 AM

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

### #6Naruto-kun  Members

Posted 06 February 2014 - 01:26 AM

Where can I find examples of these filters or any other pixel interpolation algorithm for HLSL?

### #7Erik Rufelt  Members

Posted 06 February 2014 - 05:28 AM

### #8Naruto-kun  Members

Posted 06 February 2014 - 07:40 AM

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?

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.