Skip to content

Instantly share code, notes, and snippets.

@mariodivece
Last active March 10, 2024 04:16
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mariodivece/cfa3ec1352c13e5dd00d685528e4edac to your computer and use it in GitHub Desktop.
Save mariodivece/cfa3ec1352c13e5dd00d685528e4edac to your computer and use it in GitHub Desktop.
CRT Scanline Effect for Dolphin Emulator
void main()
{
float currentMillis = GetTime() / float(1000.0);
float2 coords = GetCoordinates();
float lineCount = GetWindowResolution().y / 2.0;
// scanlines
int lineIndex = int( ( coords.y + currentMillis * 0.5 ) * lineCount );
#ifdef API_OPENGL
float lineIntensity = mod(float(lineIndex), 2);
#elif API_VULKAN
float lineIntensity = mod(float(lineIndex), 2);
#else
float lineIntensity = float(lineIndex) % 2.0;
#endif
// color shift
float off = lineIntensity * 0.0005;
float4 shift = float4( off, 0, 0, 0 );
// shift R and G channels to simulate NTSC color bleed
float4 colorShift = float4( 0.001, 0, 0, 0 );
float r = (Sample() + colorShift + shift).x;
float g = (Sample() - colorShift + shift).y;
float b = Sample().z;
float4 c = float4( r, g * 0.99, b, 1.0 ) * clamp( lineIntensity, 0.85, 1.0 );
float rollbar = sin( ( coords.y + currentMillis ) * 4.0 );
SetOutput(c + (rollbar * 0.02));
}
@Keathens
Copy link

How to download this?

same question lol

@mariodivece
Copy link
Author

No need to download. simply go to your Dolphin\Sys\Shaders folder, create a new file called mad-scanlines-crt.glsl and paste the contents of this gist. Enjoy :)

@mariodivece
Copy link
Author

I made another one if you don't like the flickering
https://gist.github.com/mariodivece/dab278f82ef3725b06001adec28ef92b

@philou-felin
Copy link

Thanks! :D

@Alkimical
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment