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 : http://www.youtube.com/watch?v=2Fc4b4mokL4 )
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
Chromatic Aberration
Started by arijan, Jul 26 2012 08:09 AM
2 replies to this topic
Sponsor:
#2 Members - Reputation: 452
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 Crossbones+ - Reputation: 1074
Posted 27 July 2012 - 10:15 AM
It's easy (I think
):
-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:
I think this should work.
-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.
Tiago Costa
Aqua Engine - my DirectX 11 game "engine" - In development
Aqua Engine - my DirectX 11 game "engine" - In development






