Interlacing inconsistencies

I’ve been playing around a bit with different cores, and I found the following behavior for interlaced output: [ul] [li]The bsnes cores and SNES9x merge the fields with a standard weave. My existing shader works with these because it was designed for bsnes.[/:1dbla9o7][/li][li]SNES9x Next does the same, but increases rubyFrameCount in steps of 2, which defeats my shader. I haven’t checked, but my guess is that it emits 30 merged frames per second.[/:1dbla9o7][/li][li]Genesis Plus GX simply emits the two fields sequentially and looks ugly.[/*:1dbla9o7][/li][/ul] It would be nice to have some kind of consistency. For a CRT shader, my preference would be to get just the latest field, but it would also need an extra piece of information that specifies the vertical displacement of the field — this could be a uniform float that is 0 for a progressive frame and ±0.25 for an interlaced field.

Not sure how likely it is to happen that cores do this uniformly. Most of them will probably not have easily configurable options for this. You know if Genplus does? Having a weave pattern as standard would probably be best as one shouldn’t require a shader to use an interlaced core.

If it does become uniform later on however, I can add a uniform for it. If we go for weave pattern, would +/- 0.25 still be appropriate? The core would just have to report interlacing phase.

Realistically, a float is probably overkill; nobody is going to do something crazy like a 3-field interlacing pattern. The minimum requirement would be something like an int that is 0 for progressive, and 1 or -1 to specify top or bottom field for interlaced content.