Retroarch shaders with rounded borderscorners
And that's not all, it offers stuff like built-in widescreen hacks, downsampling, overclocking, skip BIOS, CD loading speed (anything above x2 crashes BoF3) and precaching etc., PAL timing override (I play PAL BoF3 in German with 60 FPS), autodetection of xInput gamepads, like my Logitech F510 (can also manage dInput). It looks perfect without PGXP, but works great with Vagrant Story as an example. It also has full PGXP support, but I don't use it for BoF3, because some lines appear on the sprites and polygon walls flicker. I don't want to advertise anything, but RetroArch, at least for PSX, has so many damn great options, I can't imagine anything more I would need.įor BoF3, I use Vulkan, 8x Internal GPU Resolution, xBR Texture Filtering, Adaptive Smoothing, 16x MSAA, MDEC Chroma Filter, Dynarec+DMA only etc. Right now, I play Breath of Fire III via RetroArch (sorry ePSXe :/ ) and BeetlePSX. Some just use scanlines and are more than happy with them, no offence. I admit, this fully lies in the eye of the beholder, because it adds some kind of "oil" style or something, if you want. ^^ It gets rid of any noticeable pixel and generally enhance/upgrade the graphics, without blurring, sharpening at all. Isn't the "best" (hard to define I would say ) just xBR? After I found out about xBR, I think via a shader in Snes9x, it literally knocked me off my chair.
Add some random noise to smooth out residual differencesĬol += (Grain * 0.000122070313) * (noise - 0.5) Initialize the PRNG by hashing the position + a random uniformįloat3 m = float3(texcoord, clock * 0.0002) + 1.0 Return (ref + ref + ref + ref) * 0.25 įloat4 main(float2 texcoord : TEXCOORD0) : COLOR Ref = tex2D(tex, pos + pt * float2( o.y, -o.x)).rgb Ref = tex2D(tex, pos + pt * float2(-o.x, -o.y)).rgb Ref = tex2D(tex, pos + pt * float2(-o.y, o.x)).rgb Ref = tex2D(tex, pos + pt * float2( o.x, o.y)).rgb Sample at quarter-turn intervals around the source pixel '-*/įloat permute(float x) įloat3 average(sampler2D tex, float2 pos, float range, inout float h)įloat dist = rand(h) * range h = permute(h) įloat dir = rand(h) * 6.2831853 h = permute(h)
This significantly helps cover up remaining quantization artifacts. #define Grain 0.0 // //-Add some extra noise to the image. Note that the strength of each step falls off very quickly, so high numbers (>4) are practically useless. Each step reduces a bit more banding, but takes time to compute. #define Iterations 1 // //-The number of debanding steps to perform per sample. A higher radius will find more gradients, but a lower radius will smooth more aggressively. The radius increases linearly for each iteration. #define Range 16.0 // //-The debanding filter's initial radius. Higher numbers increase the debanding strength dramatically but progressively diminish image details. #define Threshold 70.0 // //-The debanding filter's cut-off threshold. History: MaverickTse(AviUtl)->SAPikachu(Avisynth)->haasn(GLSL)->JPulowski(Reshade HLSL)->mbah.primbon(HLSL)