[Mesa-dev] [PATCH 00/11] GL_ATI_fragment_shader support for Gallium
sroland at vmware.com
Tue Dec 15 18:18:50 PST 2015
Am 16.12.2015 um 00:05 schrieb Miklós Máté:
> This series aims to improve the looks of Star Wars: Knights of the
> Old Republic (via Wine), but features some additional cleanup as
> well. The main component of the series is the implementation of
> GL_ATI_fragment_shader for all Gallium drivers (though I could only
> test it with radeonsi, llvmpipe, and softpipe). If this extension is
> available, the game uses it quite extensively: perhaps the most
> notable effect is the animated water ripples, but it also fixes the
> grass, improves the specular on wet characters (e.g. the Selkath) and
> it is used for regular texturing almost everywhere. The game has two
> optional post-process effects that also depend on this extension:
> framebuffer effects (light bloom, distortion), and soft shadows.
> Patches 5&6 are needed to fix crashing with post-processing. With
> current fglrx the grass is wrong, and post-process crashes, but my
> previous Radeon cards ran this game perfectly on Windows.
> One other game that can use GL_ATI_fragment_shader is Doom 3, if
> r_renderer="r200" instead of "best" (which means "arb2", if
> GL_ARB_fragment_program is available). By default
> image_useNormalCompression=0, which results in wrong lighting and
> makes the specular overbright with r200. Setting it to 1 fixes r200,
> but messes up arb2, setting it to 2 fixes both. The light interaction
> is the same in r200 and arb2, but r200 doesn't have the heathaze
> shader. Later idTech4 games don't support r200 anymore: in Quake 4
> everything is green, in Prey the organic walls are black, and ETQW
> has a completely revised renderer. I verified these with fglrx.
I think the reason why noone was interested in making ATI_fs supported
so far on anything other than r200 was that there just wasn't really
anything depending on it. As doom3 could use arb_fs just fine...
But I guess if wine can use it there's some more apps probably...
FWIW I think quake4 should work fine. Back when I implemented this for
r200, it was indeed broken and I traced that back to something broken in
the main shader (can't remember what, something trivial like wrong tex
unit used in an instruction). I reported that and got told it was
already fixed in the game - however there was never a new demo released
thus if you just have the demo it's still broken.
More information about the mesa-dev