Jump to content

  • Log In with Google      Sign In   
  • Create Account


Chromatic Aberration


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
2 replies to this topic

#1 arijan   Members   -  Reputation: 104

Like
0Likes
Like

Posted 26 July 2012 - 08:09 AM

Hi ,

As for this effect , I am trying to find a nice way to make "horizontal/vertical leak lines" to disappear.

( Horizontal example : http://active.tutsplus.com/tutorials/effects/create-a-retro-crt-distortion-effect-using-rgb-shifting/
2nd cat photo in the page )

( Vertical example : )

So for such an effect like this , how would you suggest me to implement it ?
( Not asking how to do it , but asking what to do )

Many thanks

Sponsor:

#2 Seabolt   Members   -  Reputation: 633

Like
0Likes
Like

Posted 27 July 2012 - 09:01 AM

Looks like you could pull that off with storing a certain number of frame buffers, then colorizing them how ever you'd like, then when you render your frame have each pixel take a weighted average of all the frames. Might be a bit memory heavy though.
Perception is when one imagination clashes with another

#3 TiagoCosta   Crossbones+   -  Reputation: 2041

Like
0Likes
Like

Posted 27 July 2012 - 10:15 AM

It's easy (I think Posted Image ):

-Render the scene to a render target.
-In post processing:
Chose 2 random texture offsets (small values) that will be used as offsets to sample the scene texture.
Draw a fullscreen quad and sample the scene texture 3 times:
1 - using no offsets;
2 - using the first texture offset.
3- using the second texture offset.
Ouput the pixel color like this:
return float4(sample1.r, sample2.g, sample3.b, 1.0f);

I think this should work.

Texture2D sceneTexture;

SamplerState triLinearSampler;

float4 PS(PSInput pIn) : SV_TARGET
{
	 float4 sample1 = sceneTexture.Sample(triLinearSampler, pIn.texC, int2(0, 0));
	 float4 sample2 = sceneTexture.Sample(triLinearSampler, pIn.texC, int2(-5, 0));
	 float4 sample3 = sceneTexture.Sample(triLinearSampler, pIn.texC, int2(5, 0));

	 return float4(sample1.r, sample2.g, sample3.b, 1.0f);
}

Edited by TiagoCosta, 27 July 2012 - 10:21 AM.





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