-
Notifications
You must be signed in to change notification settings - Fork 47
Description
I have a question about the current VDLP emulation. Are the interpolation corner weight bits recovered for each pixel in the framebuffer? If so, I have an idea for how the core could transmit the corner weight information so the interpolation can be done with post-processing. While this is not intended to be an accurate solution, the idea is that this could at least be used to demonstrate and prototype the effect.
The requirements for this is that the core output 320x240 mode. It should work with either the CLUT enabled or disabled. The two bits for the corner weight will be stored in the lowest bit of the red and blue channels. The first bit can be set, for example, as R = 0 is top, R = 1 is bottom, B = 0 is right, B = 1 is left. This will impact color representation slightly, but it should be very minimal. My second question is if this operation is possible to implement easily in the core.
A shader can then recover the bit values when sampling the input texture. Even though the shader operates in floating-point, there is enough precision to determine the bit value precisely. Once the corner weight values are known, it's easy for me to write a shader to implement the interpolation. I was not able to determine how the weighting is precisely calculated. If unknown I will use a distance-based weighting.
Any thoughts on this would be welcome.