这段时间一致在研究延迟渲染,今天突然想换换口味,就看了一下nvidia sdk11中的FXAA的例子,
这个例子本身是用dx11实现的,不过,文档中说也可以在dx9下面实现,于是按照文档中的说明,
花了接近一天的时间,在dx9下面实现了FXAA。
   不过,那篇文章中,在提到dx9的时候,说了下面一段话:

Use the FXAA_HLSL_3 define for DX9, and adjust for the differences in Pixel Coordinate System for DX9 and DX11. FXAA pixel shader input “pos” needs to represent the texel center for a given pixel. Also to alias between sRGB and non-sRGB textures and render targets, use the following.

 

// sRGB->linear conversion when fetching from TEX
SetSamplerState(sampler, D3DSAMP_SRGBTEXTURE, 1); // on
SetSamplerState(sampler, D3DSAMP_SRGBTEXTURE, 0); // off

 

// linear->sRGB conversion when writing to ROP
SetRenderState(D3DRS_SRGBWRITEENABLE, 1); // on
SetRenderState(D3DRS_SRGBWRITEENABLE, 0); // off

我不是太明白,也没有按照这段话去做,结果效果也比较好。

下面是同一场景,打开FXAA和FXAA的截图,看看效果还是很明显的。呵呵。