Jump to content

  • Log In with Google      Sign In   
  • Create Account

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.


  • You cannot reply to this topic
7 replies to this topic

#1   Members   -  Reputation: 404

Like
0Likes
Like

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:

 

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



#2   Crossbones+   -  Reputation: 5893

Like
1Likes
Like

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.



#3   Crossbones+   -  Reputation: 4319

Like
0Likes
Like

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


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/


#4   Crossbones+   -  Reputation: 2918

Like
0Likes
Like

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.

 

[edit] I used the first image as source.

 

Cheers!

Attached Thumbnails

  • imageprocessing.jpg

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


#5   Members   -  Reputation: 404

Like
0Likes
Like

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



#6   Members   -  Reputation: 404

Like
0Likes
Like

Posted 06 February 2014 - 01:26 AM

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



#7   Crossbones+   -  Reputation: 5893

Like
0Likes
Like

Posted 06 February 2014 - 05:28 AM

https://www.google.com/search?q=hlsl+gaussian+blur



#8   Members   -  Reputation: 404

Like
0Likes
Like

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.




PARTNERS