package Ġm og ot . gl Ċ Ċ fun Ġget FX A AS h ader ( gl : GL ): Shader Ġ{ ĊĠĠĠ Ġreturn ĠShader ( gl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertex Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" # version Ġ 4 5 0 Ġcore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ( location Ġ= Ġ 0 ) Ġin Ġvec 2 Ġa Pos ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Ġ( location Ġ= Ġ 2 ) Ġin Ġvec 2 Ġa Tex Coords ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Ġvec 2 ĠTex Coords ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvoid Ġmain () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgl _ Position Ġ= Ġvec 4 ( a Pos . x , Ġa Pos . y , Ġ 0 . 0 , Ġ 1 . 0 ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTex Coords Ġ= Ġa Tex Coords ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" # version Ġ 1 3 0 Ġes Ċ # extension ĠGL _ ARB _ gpu _ shader 5 : Ġenable Ċ precision Ġmedi ump Ġfloat ; Ċ # define ĠFX AA _ PC Ġ 1 Ċ # define ĠFX AA _ GLSL _ 1 3 0 Ġ 1 Ċ # define ĠFX AA _ QUAL ITY __ PRE SET Ġ 1 2 Ċ Ċ # define ĠFX AA _ GREEN _ AS _ LU MA Ġ 1 ĊĊ Ċ # ifndef ĠFX AA _ GLSL _ 1 2 0 ĊĠĠĠ Ġ# define ĠFX AA _ GLSL _ 1 2 0 Ġ 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # ifndef ĠFX AA _ GLSL _ 1 3 0 ĊĠĠĠ Ġ# define ĠFX AA _ GLSL _ 1 3 0 Ġ 0 Ċ # endif Ċ /*================================================================ ========== */ Ċ # ifndef ĠFX AA _ GREEN _ AS _ LU MA ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠFor Ġthose Ġusing Ġnon - linear Ġcolor , ĊĠĠĠ Ġ// Ġand Ġeither Ġnot Ġable Ġto Ġget Ġl uma Ġin Ġalpha , Ġor Ġnot Ġwant ing Ġto , ĊĠĠĠ Ġ// Ġthis Ġenables ĠFX AA Ġto Ġrun Ġusing Ġgreen Ġas Ġa Ġproxy Ġfor Ġl uma . ĊĠĠĠ Ġ// ĠSo Ġwith Ġthis Ġenabled , Ġno Ġneed Ġto Ġpack Ġl uma Ġin Ġalpha . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠThis Ġwill Ġturn Ġoff ĠAA Ġon Ġanything Ġwhich Ġlack s Ġsome Ġamount Ġof Ġgreen . ĊĠĠĠ Ġ// ĠPure Ġred Ġand Ġblue Ġor Ġcombination Ġof Ġonly ĠR Ġand ĠB , Ġwill Ġget Ġno ĠAA . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠMight Ġwant Ġto Ġlower Ġthe Ġsettings Ġfor Ġboth , ĊĠĠĠ Ġ// ĠĠĠ Ġf xaa Console Edge Threshold Min ĊĠĠĠ Ġ// ĠĠĠ Ġf xaa Quality Edge Threshold Min ĊĠĠĠ Ġ// ĠIn Ġorder Ġto Ġin sure ĠAA Ġdoes Ġnot Ġget Ġturned Ġoff Ġon Ġcolors ĠĊĠĠĠ Ġ// Ġwhich Ġcontain Ġa Ġminor Ġamount Ġof Ġgreen . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 1 Ġ= ĠOn . ĊĠĠĠ Ġ// Ġ 0 Ġ= ĠOff . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ# define ĠFX AA _ GREEN _ AS _ LU MA Ġ 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # ifndef ĠFX AA _ EAR LY _ EXIT ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠControls Ġalgorithm 's Ġearly Ġexit Ġpath . ĊĠĠĠ Ġ// ĠOn ĠPS 3 Ġturning Ġthis ĠON Ġadds Ġ 2 Ġcycles Ġto Ġthe Ġshader . ĊĠĠĠ Ġ// ĠOn Ġ 3 6 0 Ġturning Ġthis ĠOFF Ġadds Ġ 1 0 ths Ġof Ġa Ġmilli second Ġto Ġthe Ġshader . ĊĠĠĠ Ġ// ĠTurn ing Ġthis Ġoff Ġon Ġconsole Ġwill Ġresult Ġin Ġa Ġmore Ġblur ry Ġimage . ĊĠĠĠ Ġ// ĠSo Ġthis Ġdefaults Ġto Ġon . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 1 Ġ= ĠOn . ĊĠĠĠ Ġ// Ġ 0 Ġ= ĠOff . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ# define ĠFX AA _ EAR LY _ EXIT Ġ 1 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # ifndef ĠFX AA _ DISCARD ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġvalid Ġfor ĠPC ĠOpenGL Ġcurrently . ĊĠĠĠ Ġ// ĠProbably Ġwill Ġnot Ġwork Ġwhen ĠFX AA _ GREEN _ AS _ LU MA Ġ= Ġ 1 . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 1 Ġ= ĠUse Ġdiscard Ġon Ġpixels Ġwhich Ġdon 't Ġneed ĠAA . ĊĠĠĠ Ġ// ĠĠĠĠ ĠFor ĠAPIs Ġwhich Ġenable Ġconcurrent ĠTEX + ROP Ġfrom Ġsame Ġsurface . ĊĠĠĠ Ġ// Ġ 0 Ġ= ĠReturn Ġunchanged Ġcolor Ġon Ġpixels Ġwhich Ġdon 't Ġneed ĠAA . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ# define ĠFX AA _ DISCARD Ġ 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # ifndef ĠFX AA _ FAST _ PIXEL _ OFFSET ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠUsed Ġfor ĠGL SL Ġ 1 2 0 Ġonly . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 1 Ġ= ĠGL ĠAPI Ġsupports Ġfast Ġpixel Ġoffsets ĊĠĠĠ Ġ// Ġ 0 Ġ= Ġdo Ġnot Ġuse Ġfast Ġpixel Ġoffsets ĊĠĠĠ Ġ// ĊĠĠĠ Ġ# ifdef ĠGL _ EXT _ gpu _ shader 4 ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ FAST _ PIXEL _ OFFSET Ġ 1 ĊĠĠĠ Ġ# endif ĊĠĠĠ Ġ# ifdef ĠGL _ NV _ gpu _ shader 5 ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ FAST _ PIXEL _ OFFSET Ġ 1 ĊĠĠĠ Ġ# endif ĊĠĠĠ Ġ# ifdef ĠGL _ ARB _ gpu _ shader 5 ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ FAST _ PIXEL _ OFFSET Ġ 1 ĊĠĠĠ Ġ# endif ĊĠĠĠ Ġ# ifndef ĠFX AA _ FAST _ PIXEL _ OFFSET ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ FAST _ PIXEL _ OFFSET Ġ 0 ĊĠĠĠ Ġ# endif Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # ifndef ĠFX AA _ G ATHER 4 _ ALPHA ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ 1 Ġ= ĠAPI Ġsupports Ġgather 4 Ġon Ġalpha Ġchannel . ĊĠĠĠ Ġ// Ġ 0 Ġ= ĠAPI Ġdoes Ġnot Ġsupport Ġgather 4 Ġon Ġalpha Ġchannel . ĊĠĠĠ Ġ// ĊĠĠĠ Ġ# ifdef ĠGL _ ARB _ gpu _ shader 5 ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ G ATHER 4 _ ALPHA Ġ 1 ĊĠĠĠ Ġ# endif ĊĠĠĠ Ġ# ifdef ĠGL _ NV _ gpu _ shader 5 ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ G ATHER 4 _ ALPHA Ġ 1 ĊĠĠĠ Ġ# endif ĊĠĠĠ Ġ# ifndef ĠFX AA _ G ATHER 4 _ ALPHA ĊĠĠĠĠĠĠĠ Ġ# define ĠFX AA _ G ATHER 4 _ ALPHA Ġ 0 ĊĠĠĠ Ġ# endif Ċ # endif ĊĊ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFX AA ĠQ UAL ITY Ġ- ĠT UN ING ĠK NO BS Ċ ---------------------------------------------------------------- -------------- Ċ NOTE Ġthe Ġother Ġtuning Ġkn obs Ġare Ġnow Ġin Ġthe Ġshader Ġfunction Ġinputs ! Ċ ================================================================ ============ */ Ċ # ifndef ĠFX AA _ QUAL ITY __ PRE SET ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠChoose Ġthe Ġquality Ġpreset . ĊĠĠĠ Ġ// ĠThis Ġneeds Ġto Ġbe Ġcompiled Ġinto Ġthe Ġshader Ġas Ġit Ġeffects Ġcode . ĊĠĠĠ Ġ// ĠBest Ġoption Ġto Ġinclude Ġmultiple Ġpresets Ġis Ġto ĠĊĠĠĠ Ġ// Ġin Ġeach Ġshader Ġdefine Ġthe Ġpreset , Ġthen Ġinclude Ġthis Ġfile . ĊĠĠĠ Ġ// ĠĊĠĠĠ Ġ// ĠOPTIONS ĊĠĠĠ Ġ// Ġ----------------------------------------------------------------------- ĊĠĠĠ Ġ// Ġ 1 0 Ġto Ġ 1 5 Ġ- Ġdefault Ġmedium Ġd ither Ġ( 1 0 = fast est , Ġ 1 5 = highest Ġquality ) ĊĠĠĠ Ġ// Ġ 2 0 Ġto Ġ 2 9 Ġ- Ġless Ġd ither , Ġmore Ġexpensive Ġ( 2 0 = fast est , Ġ 2 9 = highest Ġquality ) ĊĠĠĠ Ġ// Ġ 3 9 ĠĠĠĠĠĠ Ġ- Ġno Ġd ither , Ġvery Ġexpensive ĠĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠNOT ES ĊĠĠĠ Ġ// Ġ----------------------------------------------------------------------- ĊĠĠĠ Ġ// Ġ 1 2 Ġ= Ġslightly Ġfaster Ġthen ĠFX AA Ġ 3 . 9 Ġand Ġhigher Ġedge Ġquality Ġ( default ) ĊĠĠĠ Ġ// Ġ 1 3 Ġ= Ġabout Ġsame Ġspeed Ġas ĠFX AA Ġ 3 . 9 Ġand Ġbetter Ġthan Ġ 1 2 ĊĠĠĠ Ġ// Ġ 2 3 Ġ= Ġclosest Ġto ĠFX AA Ġ 3 . 9 Ġvis ually Ġand Ġperformance Ġwise ĊĠĠĠ Ġ// Ġ Ġ_ Ġ= Ġthe Ġlowest Ġdigit Ġis Ġdirectly Ġrelated Ġto Ġperformance ĊĠĠĠ Ġ// Ġ_ Ġ Ġ= Ġthe Ġhighest Ġdigit Ġis Ġdirectly Ġrelated Ġto Ġstyle ĊĠĠĠ Ġ// ĠĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PRE SET Ġ 1 2 Ċ # endif ĊĊ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFX AA ĠQ UAL ITY Ġ- ĠP RESET S Ċ ================================================================ ============ */ Ċ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFX AA ĠQ UAL ITY Ġ- ĠMED IUM ĠD IT HER ĠP RESET S Ċ ================================================================ ============ */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 1 0 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 3 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 3 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 1 2 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 1 1 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 4 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 3 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 1 2 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 1 2 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 1 2 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 1 3 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 6 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 1 2 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 1 4 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 7 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 1 2 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 1 5 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 8 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 1 2 . 0 Ċ # endif Ċ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFX AA ĠQ UAL ITY Ġ- ĠLOW ĠD IT HER ĠP RESET S Ċ ================================================================ ============ */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 0 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 3 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 1 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 4 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 2 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 3 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 6 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 4 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 7 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 3 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 5 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 8 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 6 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 9 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 8 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 7 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 1 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 8 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 9 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 8 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 1 1 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 8 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 9 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 0 Ġ 8 . 0 Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 2 9 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 1 2 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 8 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 9 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 0 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 1 Ġ 8 . 0 Ċ # endif Ċ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFX AA ĠQ UAL ITY Ġ- ĠEXT RE ME ĠQ UAL ITY Ċ ================================================================ ============ */ Ċ # if Ġ( FX AA _ QUAL ITY __ PRE SET Ġ== Ġ 3 9 ) ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ PS Ġ 1 2 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 0 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 2 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 3 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 4 Ġ 1 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 5 Ġ 1 . 5 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 6 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 7 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 8 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 9 Ġ 2 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 0 Ġ 4 . 0 ĊĠĠĠ Ġ# define ĠFX AA _ QUAL ITY __ P 1 1 Ġ 8 . 0 Ċ # endif ĊĊĊ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAPI ĠPORT ING Ċ ================================================================ ============ */ Ċ # if Ġ( FX AA _ GLSL _ 1 2 0 Ġ== Ġ 1 ) Ġ|| Ġ( FX AA _ GLSL _ 1 3 0 Ġ== Ġ 1 ) ĊĠĠĠ Ġ# define ĠF xaa Bool Ġbool ĊĠĠĠ Ġ# define ĠF xaa Discard Ġdiscard ĊĠĠĠ Ġ# define ĠF xaa Float Ġfloat ĊĠĠĠ Ġ# define ĠF xaa Float 2 Ġvec 2 ĊĠĠĠ Ġ# define ĠF xaa Float 3 Ġvec 3 ĊĠĠĠ Ġ# define ĠF xaa Float 4 Ġvec 4 ĊĠĠĠ Ġ# define ĠF xaa Half Ġfloat ĊĠĠĠ Ġ# define ĠF xaa Half 2 Ġvec 2 ĊĠĠĠ Ġ# define ĠF xaa Half 3 Ġvec 3 ĊĠĠĠ Ġ# define ĠF xaa Half 4 Ġvec 4 ĊĠĠĠ Ġ# define ĠF xaa Int 2 Ġ ivec 2 ĊĠĠĠ Ġ# define ĠF xaa Sat ( x ) Ġclamp ( x , Ġ 0 . 0 , Ġ 1 . 0 ) ĊĠĠĠ Ġ# define ĠF xaa Tex Ġsampler 2 D Ċ # else ĊĠĠĠ Ġ# define ĠF xaa Bool Ġbool ĊĠĠĠ Ġ# define ĠF xaa Discard Ġclip (- 1 ) ĊĠĠĠ Ġ# define ĠF xaa Float Ġfloat ĊĠĠĠ Ġ# define ĠF xaa Float 2 Ġfloat 2 ĊĠĠĠ Ġ# define ĠF xaa Float 3 Ġfloat 3 ĊĠĠĠ Ġ# define ĠF xaa Float 4 Ġfloat 4 ĊĠĠĠ Ġ# define ĠF xaa Half Ġhalf ĊĠĠĠ Ġ# define ĠF xaa Half 2 Ġhalf 2 ĊĠĠĠ Ġ# define ĠF xaa Half 3 Ġhalf 3 ĊĠĠĠ Ġ# define ĠF xaa Half 4 Ġhalf 4 ĊĠĠĠ Ġ# define ĠF xaa Sat ( x ) Ġs atur ate ( x ) Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ GLSL _ 1 2 0 Ġ== Ġ 1 ) ĊĠĠĠ Ġ// ĠRequires , ĊĠĠĠ Ġ// Ġ Ġ# version Ġ 1 2 0 ĊĠĠĠ Ġ// ĠAnd Ġat Ġleast , ĊĠĠĠ Ġ// Ġ Ġ# extension ĠGL _ EXT _ gpu _ shader 4 Ġ: Ġenable ĊĠĠĠ Ġ// Ġ Ġ( or Ġset ĠFX AA _ FAST _ PIXEL _ OFFSET Ġ 1 Ġto Ġwork Ġlike ĠDX 9 ) ĊĠĠĠ Ġ# define ĠF xaa Tex Top ( t , Ġp ) Ġtexture 2 DL od ( t , Ġp , Ġ 0 . 0 ) ĊĠĠĠ Ġ# if Ġ( FX AA _ FAST _ PIXEL _ OFFSET Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Off ( t , Ġp , Ġo , Ġr ) Ġtexture 2 DL od Offset ( t , Ġp , Ġ 0 . 0 , Ġo ) ĊĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Off ( t , Ġp , Ġo , Ġr ) Ġtexture 2 DL od ( t , Ġp Ġ+ Ġ( o Ġ* Ġr ), Ġ 0 . 0 ) ĊĠĠĠ Ġ# endif ĊĠĠĠ Ġ# if Ġ( FX AA _ G ATHER 4 _ ALPHA Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġ# extension ĠGL _ ARB _ gpu _ shader 5 Ġ: Ġenable ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Alpha 4 ( t , Ġp ) Ġtexture Gather ( t , Ġp , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Off Alpha 4 ( t , Ġp , Ġo ) Ġtexture Gather Offset ( t , Ġp , Ġo , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Green 4 ( t , Ġp ) Ġtexture Gather ( t , Ġp , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Off Green 4 ( t , Ġp , Ġo ) Ġtexture Gather Offset ( t , Ġp , Ġo , Ġ 1 ) ĊĠĠĠ Ġ# endif Ċ # endif Ċ /* -------------------------------------------------------------------------- */ Ċ # if Ġ( FX AA _ GLSL _ 1 3 0 Ġ== Ġ 1 ) ĊĠĠĠ Ġ// ĠRequires Ġ"# version Ġ 1 3 0 " Ġor Ġbetter ĊĠĠĠ Ġ# define ĠF xaa Tex Top ( t , Ġp ) Ġtexture Lod ( t , Ġp , Ġ 0 . 0 ) ĊĠĠĠ Ġ# define ĠF xaa Tex Off ( t , Ġp , Ġo , Ġr ) Ġtexture Lod Offset ( t , Ġp , Ġ 0 . 0 , Ġo ) ĊĠĠĠ Ġ# if Ġ( FX AA _ G ATHER 4 _ ALPHA Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġ# extension ĠGL _ ARB _ gpu _ shader 5 Ġ: Ġenable ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Alpha 4 ( t , Ġp ) Ġtexture Gather ( t , Ġp , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Off Alpha 4 ( t , Ġp , Ġo ) Ġtexture Gather Offset ( t , Ġp , Ġo , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Green 4 ( t , Ġp ) Ġtexture Gather ( t , Ġp , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ# define ĠF xaa Tex Off Green 4 ( t , Ġp , Ġo ) Ġtexture Gather Offset ( t , Ġp , Ġo , Ġ 1 ) ĊĠĠĠ Ġ# endif Ċ # endif Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGREEN ĠAS ĠLU MA ĠOPTION ĠSUPPORT ĠFUNCTION Ċ ================================================================ ============ */ Ċ # if Ġ( FX AA _ GREEN _ AS _ LU MA Ġ== Ġ 0 ) ĊĠĠĠ ĠF xaa Float ĠF xaa L uma ( F xaa Float 4 Ġrgba ) Ġ{ Ġreturn Ġrgba . w ; Ġ} Ċ # else ĊĠĠĠ ĠF xaa Float ĠF xaa L uma ( F xaa Float 4 Ġrgba ) Ġ{ Ġreturn Ġrgba . y ; Ġ} Ċ # endif ĠĠĠĠ ĊĊĊĊ Ċ /*================================================================ ============ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFX AA 3 ĠQ UAL ITY Ġ- ĠPC Ċ ================================================================ ============ */ Ċ # if Ġ( FX AA _ PC Ġ== Ġ 1 ) Ċ /* -------------------------------------------------------------------------- */ Ċ F xaa Float 4 ĠF xaa Pixel Shader ( ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠUse Ġno perspective Ġinterpolation Ġhere Ġ( turn Ġoff Ġperspective Ġinterpolation ). ĊĠĠĠ Ġ// Ġ{ xy } Ġ= Ġcenter Ġof Ġpixel ĊĠĠĠ ĠF xaa Float 2 Ġpos , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠUsed Ġonly Ġfor ĠFX AA ĠConsole , Ġand Ġnot Ġused Ġon Ġthe Ġ 3 6 0 Ġversion . ĊĠĠĠ Ġ// ĠUse Ġno perspective Ġinterpolation Ġhere Ġ( turn Ġoff Ġperspective Ġinterpolation ). ĊĠĠĠ Ġ// Ġ{ xy __ } Ġ= Ġupper Ġleft Ġof Ġpixel ĊĠĠĠ Ġ// Ġ{ __ zw } Ġ= Ġlower Ġright Ġof Ġpixel ĊĠĠĠ ĠF xaa Float 4 Ġf xaa Console Pos Pos , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠInput Ġcolor Ġtexture . ĊĠĠĠ Ġ// Ġ{ rgb _} Ġ= Ġcolor Ġin Ġlinear Ġor Ġper cept ual Ġcolor Ġspace ĊĠĠĠ Ġ// Ġif Ġ( FX AA _ GREEN _ AS _ LU MA Ġ== Ġ 0 ) ĊĠĠĠ Ġ// ĠĠĠĠ Ġ{ ___ a } Ġ= Ġl uma Ġin Ġper cept ual Ġcolor Ġspace Ġ( not Ġlinear ) ĊĠĠĠ ĠF xaa Tex Ġtex , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon Ġthe Ġoptimized Ġ 3 6 0 Ġversion Ġof ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠFor Ġeverything Ġbut Ġ 3 6 0 , Ġjust Ġuse Ġthe Ġsame Ġinput Ġhere Ġas Ġfor Ġ" tex ". ĊĠĠĠ Ġ// ĠFor Ġ 3 6 0 , Ġsame Ġtexture , Ġjust Ġalias Ġwith Ġa Ġ 2 nd Ġsampler . ĊĠĠĠ Ġ// ĠThis Ġsampler Ġneeds Ġto Ġhave Ġan Ġexponent Ġbias Ġof Ġ- 1 . ĊĠĠĠ ĠF xaa Tex Ġf xaa Console 3 6 0 Tex Exp Bias Neg One , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon Ġthe Ġoptimized Ġ 3 6 0 Ġversion Ġof ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠFor Ġeverything Ġbut Ġ 3 6 0 , Ġjust Ġuse Ġthe Ġsame Ġinput Ġhere Ġas Ġfor Ġ" tex ". ĊĠĠĠ Ġ// ĠFor Ġ 3 6 0 , Ġsame Ġtexture , Ġjust Ġalias Ġwith Ġa Ġ 3 nd Ġsampler . ĊĠĠĠ Ġ// ĠThis Ġsampler Ġneeds Ġto Ġhave Ġan Ġexponent Ġbias Ġof Ġ- 2 . ĊĠĠĠ ĠF xaa Tex Ġf xaa Console 3 6 0 Tex Exp Bias Neg Two , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠQuality . ĊĠĠĠ Ġ// ĠThis Ġmust Ġbe Ġfrom Ġa Ġconstant / uniform . ĊĠĠĠ Ġ// Ġ{ x _} Ġ= Ġ 1 . 0 / screen Width In Pixels ĊĠĠĠ Ġ// Ġ{_ y } Ġ= Ġ 1 . 0 / screen Height In Pixels ĊĠĠĠ ĠF xaa Float 2 Ġf xaa Quality R cp Frame , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠThis Ġmust Ġbe Ġfrom Ġa Ġconstant / uniform . ĊĠĠĠ Ġ// ĠThis Ġeffects Ġsub - pixel ĠAA Ġquality Ġand Ġinverse ly Ġsh arp ness . ĊĠĠĠ Ġ// ĠĠ ĠWhere ĠN Ġranges Ġbetween , ĊĠĠĠ Ġ// ĠĠĠĠ ĠN Ġ= Ġ 0 . 5 0 Ġ( default ) ĊĠĠĠ Ġ// ĠĠĠĠ ĠN Ġ= Ġ 0 . 3 3 Ġ( shar per ) ĊĠĠĠ Ġ// Ġ{ x ___ } Ġ= Ġ- N / screen Width In Pixels ĠĠĊĠĠĠ Ġ// Ġ{_ y __ } Ġ= Ġ- N / screen Height In Pixels ĊĠĠĠ Ġ// Ġ{ __ z _} Ġ= Ġ ĠN / screen Width In Pixels ĠĠĊĠĠĠ Ġ// Ġ{ ___ w } Ġ= Ġ ĠN / screen Height In Pixels ĠĊĠĠĠ ĠF xaa Float 4 Ġf xaa Console R cp Frame Opt , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠNot Ġused Ġon Ġ 3 6 0 , Ġbut Ġused Ġon ĠPS 3 Ġand ĠPC . ĊĠĠĠ Ġ// ĠThis Ġmust Ġbe Ġfrom Ġa Ġconstant / uniform . ĊĠĠĠ Ġ// Ġ{ x ___ } Ġ= Ġ- 2 . 0 / screen Width In Pixels ĠĠĊĠĠĠ Ġ// Ġ{_ y __ } Ġ= Ġ- 2 . 0 / screen Height In Pixels ĊĠĠĠ Ġ// Ġ{ __ z _} Ġ= ĠĠ 2 . 0 / screen Width In Pixels ĠĠĊĠĠĠ Ġ// Ġ{ ___ w } Ġ= ĠĠ 2 . 0 / screen Height In Pixels ĠĊĠĠĠ ĠF xaa Float 4 Ġf xaa Console R cp Frame Opt 2 , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠOnly Ġused Ġon Ġ 3 6 0 Ġin Ġplace Ġof Ġf xaa Console R cp Frame Opt 2 . ĊĠĠĠ Ġ// ĠThis Ġmust Ġbe Ġfrom Ġa Ġconstant / uniform . ĊĠĠĠ Ġ// Ġ{ x ___ } Ġ= ĠĠ 8 . 0 / screen Width In Pixels ĠĠĊĠĠĠ Ġ// Ġ{_ y __ } Ġ= ĠĠ 8 . 0 / screen Height In Pixels ĊĠĠĠ Ġ// Ġ{ __ z _} Ġ= Ġ- 4 . 0 / screen Width In Pixels ĠĠĊĠĠĠ Ġ// Ġ{ ___ w } Ġ= Ġ- 4 . 0 / screen Height In Pixels ĠĊĠĠĠ ĠF xaa Float 4 Ġf xaa Console 3 6 0 R cp Frame Opt 2 , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠQuality . ĊĠĠĠ Ġ// ĠThis Ġused Ġto Ġbe Ġthe ĠFX AA _ QUAL ITY __ SUB PIX Ġdefine . ĊĠĠĠ Ġ// ĠIt Ġis Ġhere Ġnow Ġto Ġallow Ġeasier Ġtuning . ĊĠĠĠ Ġ// ĠChoose Ġthe Ġamount Ġof Ġsub - pixel Ġalias ing Ġremoval . ĊĠĠĠ Ġ// ĠThis Ġcan Ġeffect Ġsh arp ness . ĊĠĠĠ Ġ// ĠĠĠ 1 . 0 0 Ġ- Ġupper Ġlimit Ġ( so fter ) ĊĠĠĠ Ġ// ĠĠĠ 0 . 7 5 Ġ- Ġdefault Ġamount Ġof Ġfiltering ĊĠĠĠ Ġ// ĠĠĠ 0 . 5 0 Ġ- Ġlower Ġlimit Ġ( shar per , Ġless Ġsub - pixel Ġalias ing Ġremoval ) ĊĠĠĠ Ġ// ĠĠĠ 0 . 2 5 Ġ- Ġalmost Ġoff ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 0 Ġ- Ġcompletely Ġoff ĊĠĠĠ ĠF xaa Float Ġf xaa Quality Sub pix , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠQuality . ĊĠĠĠ Ġ// ĠThis Ġused Ġto Ġbe Ġthe ĠFX AA _ QUAL ITY __ EDGE _ THRESHOLD Ġdefine . ĊĠĠĠ Ġ// ĠIt Ġis Ġhere Ġnow Ġto Ġallow Ġeasier Ġtuning . ĊĠĠĠ Ġ// ĠThe Ġminimum Ġamount Ġof Ġlocal Ġcontrast Ġrequired Ġto Ġapply Ġalgorithm . ĊĠĠĠ Ġ// ĠĠĠ 0 . 3 3 3 Ġ- Ġtoo Ġlittle Ġ( faster ) ĊĠĠĠ Ġ// ĠĠĠ 0 . 2 5 0 Ġ- Ġlow Ġquality ĊĠĠĠ Ġ// ĠĠĠ 0 . 1 6 6 Ġ- Ġdefault ĊĠĠĠ Ġ// ĠĠĠ 0 . 1 2 5 Ġ- Ġhigh Ġquality ĠĊĠĠĠ Ġ// ĠĠĠ 0 . 0 6 3 Ġ- Ġover kill Ġ( s lower ) ĊĠĠĠ ĠF xaa Float Ġf xaa Quality Edge Threshold , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠQuality . ĊĠĠĠ Ġ// ĠThis Ġused Ġto Ġbe Ġthe ĠFX AA _ QUAL ITY __ EDGE _ THRESHOLD _ MIN Ġdefine . ĊĠĠĠ Ġ// ĠIt Ġis Ġhere Ġnow Ġto Ġallow Ġeasier Ġtuning . ĊĠĠĠ Ġ// ĠTri ms Ġthe Ġalgorithm Ġfrom Ġprocessing Ġdark s . ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 8 3 3 Ġ- Ġupper Ġlimit Ġ( default , Ġthe Ġstart Ġof Ġvisible Ġun filtered Ġedges ) ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 6 2 5 Ġ- Ġhigh Ġquality Ġ( faster ) ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 3 1 2 Ġ- Ġvisible Ġlimit Ġ( s lower ) ĊĠĠĠ Ġ// ĠSpecial Ġnotes Ġwhen Ġusing ĠFX AA _ GREEN _ AS _ LU MA , ĊĠĠĠ Ġ// ĠĠ ĠL ik ely Ġwant Ġto Ġset Ġthis Ġto Ġzero . ĊĠĠĠ Ġ// ĠĠ ĠAs Ġcolors Ġthat Ġare Ġmostly Ġnot - green ĊĠĠĠ Ġ// ĠĠ Ġwill Ġappear Ġvery Ġdark Ġin Ġthe Ġgreen Ġchannel ! ĊĠĠĠ Ġ// ĠĠ ĠT une Ġby Ġlooking Ġat Ġmostly Ġnon - green Ġcontent , ĊĠĠĠ Ġ// ĠĠ Ġthen Ġstart Ġat Ġzero Ġand Ġincrease Ġuntil Ġalias ing Ġis Ġa Ġproblem . ĊĠĠĠ ĠF xaa Float Ġf xaa Quality Edge Threshold Min , ĊĠĠĠ Ġ// ĠĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠThis Ġused Ġto Ġbe Ġthe ĠFX AA _ CONSOLE __ EDGE _ SH ARP NESS Ġdefine . ĊĠĠĠ Ġ// ĠIt Ġis Ġhere Ġnow Ġto Ġallow Ġeasier Ġtuning . ĊĠĠĠ Ġ// ĠThis Ġdoes Ġnot Ġeffect ĠPS 3 , Ġas Ġthis Ġneeds Ġto Ġbe Ġcompiled Ġin . ĊĠĠĠ Ġ// ĠĠ ĠUse ĠFX AA _ CONSOLE __ PS 3 _ EDGE _ SH ARP NESS Ġfor ĠPS 3 . ĊĠĠĠ Ġ// ĠĠ ĠDue Ġto Ġthe ĠPS 3 Ġbeing ĠAL U Ġbound , ĊĠĠĠ Ġ// ĠĠ Ġthere Ġare Ġonly Ġthree Ġsafe Ġvalues Ġhere : Ġ 2 Ġand Ġ 4 Ġand Ġ 8 . ĊĠĠĠ Ġ// ĠĠ ĠThese Ġoptions Ġuse Ġthe Ġshaders Ġability Ġto Ġa Ġfree Ġ* | / Ġby Ġ 2 | 4 | 8 . ĊĠĠĠ Ġ// ĠFor Ġall Ġother Ġplatforms Ġcan Ġbe Ġa Ġnon - power Ġof Ġtwo . ĊĠĠĠ Ġ// ĠĠĠ 8 . 0 Ġis Ġsh ar per Ġ( default !! !) ĊĠĠĠ Ġ// ĠĠĠ 4 . 0 Ġis Ġs of ter ĊĠĠĠ Ġ// ĠĠĠ 2 . 0 Ġis Ġreally Ġsoft Ġ( good Ġonly Ġfor Ġvector Ġgraphics Ġinputs ) ĊĠĠĠ ĠF xaa Float Ġf xaa Console Edge Sharp ness , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠThis Ġused Ġto Ġbe Ġthe ĠFX AA _ CONSOLE __ EDGE _ THRESHOLD Ġdefine . ĊĠĠĠ Ġ// ĠIt Ġis Ġhere Ġnow Ġto Ġallow Ġeasier Ġtuning . ĊĠĠĠ Ġ// ĠThis Ġdoes Ġnot Ġeffect ĠPS 3 , Ġas Ġthis Ġneeds Ġto Ġbe Ġcompiled Ġin . ĊĠĠĠ Ġ// ĠĠ ĠUse ĠFX AA _ CONSOLE __ PS 3 _ EDGE _ THRESHOLD Ġfor ĠPS 3 . ĊĠĠĠ Ġ// ĠĠ ĠDue Ġto Ġthe ĠPS 3 Ġbeing ĠAL U Ġbound , ĊĠĠĠ Ġ// ĠĠ Ġthere Ġare Ġonly Ġtwo Ġsafe Ġvalues Ġhere : Ġ 1 / 4 Ġand Ġ 1 / 8 . ĊĠĠĠ Ġ// ĠĠ ĠThese Ġoptions Ġuse Ġthe Ġshaders Ġability Ġto Ġa Ġfree Ġ* | / Ġby Ġ 2 | 4 | 8 . ĊĠĠĠ Ġ// ĠThe Ġconsole Ġsetting Ġhas Ġa Ġdifferent Ġmapping Ġthan Ġthe Ġquality Ġsetting . ĊĠĠĠ Ġ// ĠOther Ġplatforms Ġcan Ġuse Ġother Ġvalues . ĊĠĠĠ Ġ// ĠĠĠ 0 . 1 2 5 Ġleaves Ġless Ġalias ing , Ġbut Ġis Ġs of ter Ġ( default !! !) ĊĠĠĠ Ġ// ĠĠĠ 0 . 2 5 Ġleaves Ġmore Ġalias ing , Ġand Ġis Ġsh ar per ĊĠĠĠ ĠF xaa Float Ġf xaa Console Edge Threshold , ĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOnly Ġused Ġon ĠFX AA ĠConsole . ĊĠĠĠ Ġ// ĠThis Ġused Ġto Ġbe Ġthe ĠFX AA _ CONSOLE __ EDGE _ THRESHOLD _ MIN Ġdefine . ĊĠĠĠ Ġ// ĠIt Ġis Ġhere Ġnow Ġto Ġallow Ġeasier Ġtuning . ĊĠĠĠ Ġ// ĠTri ms Ġthe Ġalgorithm Ġfrom Ġprocessing Ġdark s . ĊĠĠĠ Ġ// ĠThe Ġconsole Ġsetting Ġhas Ġa Ġdifferent Ġmapping Ġthan Ġthe Ġquality Ġsetting . ĊĠĠĠ Ġ// ĠThis Ġonly Ġapplies Ġwhen ĠFX AA _ EAR LY _ EXIT Ġis Ġ 1 . ĊĠĠĠ Ġ// ĠThis Ġdoes Ġnot Ġapply Ġto ĠPS 3 , ĠĊĠĠĠ Ġ// ĠPS 3 Ġwas Ġsimplified Ġto Ġavoid Ġmore Ġshader Ġinstructions . ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 6 Ġ- Ġfaster Ġbut Ġmore Ġalias ing Ġin Ġdark s ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 5 Ġ- Ġdefault ĊĠĠĠ Ġ// ĠĠĠ 0 . 0 4 Ġ- Ġslower Ġand Ġless Ġalias ing Ġin Ġdark s ĊĠĠĠ Ġ// ĠSpecial Ġnotes Ġwhen Ġusing ĠFX AA _ GREEN _ AS _ LU MA , ĊĠĠĠ Ġ// ĠĠ ĠL ik ely Ġwant Ġto Ġset Ġthis Ġto Ġzero . ĊĠĠĠ Ġ// ĠĠ ĠAs Ġcolors Ġthat Ġare Ġmostly Ġnot - green ĊĠĠĠ Ġ// ĠĠ Ġwill Ġappear Ġvery Ġdark Ġin Ġthe Ġgreen Ġchannel ! ĊĠĠĠ Ġ// ĠĠ ĠT une Ġby Ġlooking Ġat Ġmostly Ġnon - green Ġcontent , ĊĠĠĠ Ġ// ĠĠ Ġthen Ġstart Ġat Ġzero Ġand Ġincrease Ġuntil Ġalias ing Ġis Ġa Ġproblem . ĊĠĠĠ ĠF xaa Float Ġf xaa Console Edge Threshold Min , ĊĠĠĠ Ġ// ĠĠĠĠĊĠĠĠ Ġ// ĠExtra Ġconstants Ġfor Ġ 3 6 0 ĠFX AA ĠConsole Ġonly . ĊĠĠĠ Ġ// ĠUse Ġzeros Ġor Ġanything Ġelse Ġfor Ġother Ġplatforms . ĊĠĠĠ Ġ// ĠThese Ġmust Ġbe Ġin Ġphysical Ġconstant Ġregisters Ġand ĠNOT Ġim med ates . ĊĠĠĠ Ġ// ĠIm med ates Ġwill Ġresult Ġin Ġcompiler Ġun - optim izing . ĊĠĠĠ Ġ// Ġ{ xyz w } Ġ= Ġfloat 4 ( 1 . 0 , Ġ- 1 . 0 , Ġ 0 . 2 5 , Ġ- 0 . 2 5 ) ĊĠĠĠ ĠF xaa Float 4 Ġf xaa Console 3 6 0 Const Dir Ċ ) Ġ{ Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float 2 Ġpos M ; ĊĠĠĠ Ġpos M . x Ġ= Ġpos . x ; ĊĠĠĠ Ġpos M . y Ġ= Ġpos . y ; ĊĠĠĠ Ġ# if Ġ( FX AA _ G ATHER 4 _ ALPHA Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ DISCARD Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF xaa Float 4 Ġrg by M Ġ= ĠF xaa Tex Top ( tex , Ġpos M ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ GREEN _ AS _ LU MA Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# define Ġl uma M Ġrg by M . w ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# define Ġl uma M Ġrg by M . y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif ĊĠĠĠĠĠĠĠ Ġ# endif ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ GREEN _ AS _ LU MA Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF xaa Float 4 Ġl uma 4 A Ġ= ĠF xaa Tex Alpha 4 ( tex , Ġpos M ); ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF xaa Float 4 Ġl uma 4 B Ġ= ĠF xaa Tex Off Alpha 4 ( tex , Ġpos M , ĠF xaa Int 2 (- 1 , Ġ- 1 )); ĊĠĠĠĠĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF xaa Float 4 Ġl uma 4 A Ġ= ĠF xaa Tex Green 4 ( tex , Ġpos M ); ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF xaa Float 4 Ġl uma 4 B Ġ= ĠF xaa Tex Off Green 4 ( tex , Ġpos M , ĠF xaa Int 2 (- 1 , Ġ- 1 )); ĊĠĠĠĠĠĠĠ Ġ# endif ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ DISCARD Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# define Ġl uma M Ġl uma 4 A . w ĊĠĠĠĠĠĠĠ Ġ# endif ĊĠĠĠĠĠĠĠ Ġ# define Ġl uma E Ġl uma 4 A . z ĊĠĠĠĠĠĠĠ Ġ# define Ġl uma S Ġl uma 4 A . x ĊĠĠĠĠĠĠĠ Ġ# define Ġl uma SE Ġl uma 4 A . y ĊĠĠĠĠĠĠĠ Ġ# define Ġl um aN W Ġl uma 4 B . w ĊĠĠĠĠĠĠĠ Ġ# define Ġl um aN Ġl uma 4 B . z ĊĠĠĠĠĠĠĠ Ġ# define Ġl um aW Ġl uma 4 B . x ĊĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠ ĠF xaa Float 4 Ġrg by M Ġ= ĠF xaa Tex Top ( tex , Ġpos M ); ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ GREEN _ AS _ LU MA Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# define Ġl uma M Ġrg by M . w ĊĠĠĠĠĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# define Ġl uma M Ġrg by M . y ĊĠĠĠĠĠĠĠ Ġ# endif ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma S Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 ( Ġ 0 , Ġ 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma E Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 ( Ġ 1 , Ġ 0 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl um aN Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 ( Ġ 0 ,- 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl um aW Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 (- 1 , Ġ 0 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġmax SM Ġ= Ġmax ( l uma S , Ġl uma M ); ĊĠĠĠ ĠF xaa Float Ġmin SM Ġ= Ġmin ( l uma S , Ġl uma M ); ĊĠĠĠ ĠF xaa Float Ġmax ES M Ġ= Ġmax ( l uma E , Ġmax SM ); ĊĠĠĠ ĠF xaa Float Ġmin ES M Ġ= Ġmin ( l uma E , Ġmin SM ); ĊĠĠĠ ĠF xaa Float Ġmax WN Ġ= Ġmax ( lum aN , Ġl um aW ); ĊĠĠĠ ĠF xaa Float Ġmin WN Ġ= Ġmin ( lum aN , Ġl um aW ); ĊĠĠĠ ĠF xaa Float Ġrange Max Ġ= Ġmax ( max WN , Ġmax ES M ); ĊĠĠĠ ĠF xaa Float Ġrange Min Ġ= Ġmin ( min WN , Ġmin ES M ); ĊĠĠĠ ĠF xaa Float Ġrange Max Scaled Ġ= Ġrange Max Ġ* Ġf xaa Quality Edge Threshold ; ĊĠĠĠ ĠF xaa Float Ġrange Ġ= Ġrange Max Ġ- Ġrange Min ; ĊĠĠĠ ĠF xaa Float Ġrange Max Clamp ed Ġ= Ġmax ( fx aa Quality Edge Threshold Min , Ġrange Max Scaled ); ĊĠĠĠ ĠF xaa Bool Ġearly Exit Ġ= Ġrange Ġ< Ġrange Max Clamp ed ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġif ( early Exit ) ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ DISCARD Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF xaa Discard ; ĊĠĠĠĠĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrg by M ; ĊĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġ# if Ġ( FX AA _ G ATHER 4 _ ALPHA Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl um aN W Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 (- 1 ,- 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma SE Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 ( Ġ 1 , Ġ 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma NE Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 ( Ġ 1 ,- 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma SW Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 (- 1 , Ġ 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma NE Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 ( 1 , Ġ- 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠĠĠĠĠ ĠF xaa Float Ġl uma SW Ġ= ĠF xaa L uma ( F xaa Tex Off ( tex , Ġpos M , ĠF xaa Int 2 (- 1 , Ġ 1 ), Ġf xaa Quality R cp Frame . xy )); ĊĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġl uma NS Ġ= Ġl um aN Ġ+ Ġl uma S ; ĊĠĠĠ ĠF xaa Float Ġl uma WE Ġ= Ġl um aW Ġ+ Ġl uma E ; ĊĠĠĠ ĠF xaa Float Ġsub pix R cp Range Ġ= Ġ 1 . 0 / range ; ĊĠĠĠ ĠF xaa Float Ġsub pix NS WE Ġ= Ġl uma NS Ġ+ Ġl uma WE ; ĊĠĠĠ ĠF xaa Float Ġedge Hor z 1 Ġ= Ġ(- 2 . 0 Ġ* Ġl uma M ) Ġ+ Ġl uma NS ; ĊĠĠĠ ĠF xaa Float Ġedge Vert 1 Ġ= Ġ(- 2 . 0 Ġ* Ġl uma M ) Ġ+ Ġl uma WE ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġl uma NE SE Ġ= Ġl uma NE Ġ+ Ġl uma SE ; ĊĠĠĠ ĠF xaa Float Ġl um aN W NE Ġ= Ġl um aN W Ġ+ Ġl uma NE ; ĊĠĠĠ ĠF xaa Float Ġedge Hor z 2 Ġ= Ġ(- 2 . 0 Ġ* Ġl uma E ) Ġ+ Ġl uma NE SE ; ĊĠĠĠ ĠF xaa Float Ġedge Vert 2 Ġ= Ġ(- 2 . 0 Ġ* Ġl um aN ) Ġ+ Ġl um aN W NE ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġl um aN WS W Ġ= Ġl um aN W Ġ+ Ġl uma SW ; ĊĠĠĠ ĠF xaa Float Ġl uma SW SE Ġ= Ġl uma SW Ġ+ Ġl uma SE ; ĊĠĠĠ ĠF xaa Float Ġedge Hor z 4 Ġ= Ġ( abs ( edge Hor z 1 ) Ġ* Ġ 2 . 0 ) Ġ+ Ġabs ( edge Hor z 2 ); ĊĠĠĠ ĠF xaa Float Ġedge Vert 4 Ġ= Ġ( abs ( edge Vert 1 ) Ġ* Ġ 2 . 0 ) Ġ+ Ġabs ( edge Vert 2 ); ĊĠĠĠ ĠF xaa Float Ġedge Hor z 3 Ġ= Ġ(- 2 . 0 Ġ* Ġl um aW ) Ġ+ Ġl um aN WS W ; ĊĠĠĠ ĠF xaa Float Ġedge Vert 3 Ġ= Ġ(- 2 . 0 Ġ* Ġl uma S ) Ġ+ Ġl uma SW SE ; ĊĠĠĠ ĠF xaa Float Ġedge Hor z Ġ= Ġabs ( edge Hor z 3 ) Ġ+ Ġedge Hor z 4 ; ĊĠĠĠ ĠF xaa Float Ġedge Vert Ġ= Ġabs ( edge Vert 3 ) Ġ+ Ġedge Vert 4 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġsub pix N WS W NE SE Ġ= Ġl um aN WS W Ġ+ Ġl uma NE SE ; ĊĠĠĠ ĠF xaa Float Ġlength Sign Ġ= Ġf xaa Quality R cp Frame . x ; ĊĠĠĠ ĠF xaa Bool Ġhor z Span Ġ= Ġedge Hor z Ġ>= Ġedge Vert ; ĊĠĠĠ ĠF xaa Float Ġsub pix A Ġ= Ġsub pix NS WE Ġ* Ġ 2 . 0 Ġ+ Ġsub pix N WS W NE SE ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġif (! hor z Span ) Ġl um aN Ġ= Ġl um aW ; ĊĠĠĠ Ġif (! hor z Span ) Ġl uma S Ġ= Ġl uma E ; ĊĠĠĠ Ġif ( hor z Span ) Ġlength Sign Ġ= Ġf xaa Quality R cp Frame . y ; ĊĠĠĠ ĠF xaa Float Ġsub pix B Ġ= Ġ( sub pix A Ġ* Ġ( 1 . 0 / 1 2 . 0 )) Ġ- Ġl uma M ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġgradient N Ġ= Ġl um aN Ġ- Ġl uma M ; ĊĠĠĠ ĠF xaa Float Ġgradient S Ġ= Ġl uma S Ġ- Ġl uma M ; ĊĠĠĠ ĠF xaa Float Ġl uma NN Ġ= Ġl um aN Ġ+ Ġl uma M ; ĊĠĠĠ ĠF xaa Float Ġl uma SS Ġ= Ġl uma S Ġ+ Ġl uma M ; ĊĠĠĠ ĠF xaa Bool Ġpair N Ġ= Ġabs ( gradient N ) Ġ>= Ġabs ( gradient S ); ĊĠĠĠ ĠF xaa Float Ġgradient Ġ= Ġmax ( abs ( gradient N ), Ġabs ( gradient S )); ĊĠĠĠ Ġif ( pair N ) Ġlength Sign Ġ= Ġ- length Sign ; ĊĠĠĠ ĠF xaa Float Ġsub pix C Ġ= ĠF xaa Sat ( abs ( sub pix B ) Ġ* Ġsub pix R cp Range ); Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float 2 Ġpos B ; ĊĠĠĠ Ġpos B . x Ġ= Ġpos M . x ; ĊĠĠĠ Ġpos B . y Ġ= Ġpos M . y ; ĊĠĠĠ ĠF xaa Float 2 Ġoff NP ; ĊĠĠĠ Ġoff NP . x Ġ= Ġ(! hor z Span ) Ġ? Ġ 0 . 0 Ġ: Ġf xaa Quality R cp Frame . x ; ĊĠĠĠ Ġoff NP . y Ġ= Ġ( Ġhor z Span ) Ġ? Ġ 0 . 0 Ġ: Ġf xaa Quality R cp Frame . y ; ĊĠĠĠ Ġif (! hor z Span ) Ġpos B . x Ġ+= Ġlength Sign Ġ* Ġ 0 . 5 ; ĊĠĠĠ Ġif ( Ġhor z Span ) Ġpos B . y Ġ+= Ġlength Sign Ġ* Ġ 0 . 5 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float 2 Ġpos N ; ĊĠĠĠ Ġpos N . x Ġ= Ġpos B . x Ġ- Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 0 ; ĊĠĠĠ Ġpos N . y Ġ= Ġpos B . y Ġ- Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 0 ; ĊĠĠĠ ĠF xaa Float 2 Ġpos P ; ĊĠĠĠ Ġpos P . x Ġ= Ġpos B . x Ġ+ Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 0 ; ĊĠĠĠ Ġpos P . y Ġ= Ġpos B . y Ġ+ Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 0 ; ĊĠĠĠ ĠF xaa Float Ġsub pix D Ġ= Ġ(( - 2 . 0 )* sub pix C ) Ġ+ Ġ 3 . 0 ; ĊĠĠĠ ĠF xaa Float Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N )); ĊĠĠĠ ĠF xaa Float Ġsub pix E Ġ= Ġsub pix C Ġ* Ġsub pix C ; ĊĠĠĠ ĠF xaa Float Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P )); Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġif (! pair N ) Ġl uma NN Ġ= Ġl uma SS ; ĊĠĠĠ ĠF xaa Float Ġgradient Scaled Ġ= Ġgradient Ġ* Ġ 1 . 0 / 4 . 0 ; ĊĠĠĠ ĠF xaa Float Ġl uma MM Ġ= Ġl uma M Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠ ĠF xaa Float Ġsub pix F Ġ= Ġsub pix D Ġ* Ġsub pix E ; ĊĠĠĠ ĠF xaa Bool Ġl uma ML T Zero Ġ= Ġl uma MM Ġ< Ġ 0 . 0 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġl uma End N Ġ-= Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠ Ġl uma End P Ġ-= Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠ ĠF xaa Bool Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠ ĠF xaa Bool Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 ; ĊĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 ; ĊĠĠĠ ĠF xaa Bool Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 ; ĊĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 2 ; ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 2 ; ĊĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 2 ; ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 2 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 3 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 3 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 3 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 3 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 4 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 4 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 4 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 4 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 5 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 6 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 6 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 6 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 6 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 7 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 7 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 7 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 7 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 8 ) ĊĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 8 ; ĊĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 8 ; ĊĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 8 ; ĊĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 8 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 9 ) ĊĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 9 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 9 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 9 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 9 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 0 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 1 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# if Ġ( FX AA _ QUAL ITY __ PS Ġ> Ġ 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( done NP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos N . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= ĠF xaa L uma ( F xaa Tex Top ( tex , Ġpos P . xy )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġl uma End N Ġ= Ġl uma End N Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġl uma End P Ġ= Ġl uma End P Ġ- Ġl uma NN Ġ* Ġ 0 . 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone N Ġ= Ġabs ( l uma End N ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone P Ġ= Ġabs ( l uma End P ) Ġ>= Ġgradient Scaled ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . x Ġ-= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done N ) Ġpos N . y Ġ-= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone NP Ġ= Ġ(! done N ) Ġ|| Ġ(! done P ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . x Ġ+= Ġoff NP . x Ġ* ĠFX AA _ QUAL ITY __ P 1 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! done P ) Ġpos P . y Ġ+= Ġoff NP . y Ġ* ĠFX AA _ QUAL ITY __ P 1 2 ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġ} ĊĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ# endif Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ Ġ} Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġdst N Ġ= Ġpos M . x Ġ- Ġpos N . x ; ĊĠĠĠ ĠF xaa Float Ġdst P Ġ= Ġpos P . x Ġ- Ġpos M . x ; ĊĠĠĠ Ġif (! hor z Span ) Ġdst N Ġ= Ġpos M . y Ġ- Ġpos N . y ; ĊĠĠĠ Ġif (! hor z Span ) Ġdst P Ġ= Ġpos P . y Ġ- Ġpos M . y ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Bool Ġgood Span N Ġ= Ġ( l uma End N Ġ< Ġ 0 . 0 ) Ġ!= Ġl uma ML T Zero ; ĊĠĠĠ ĠF xaa Float Ġspan Length Ġ= Ġ( dst P Ġ+ Ġdst N ); ĊĠĠĠ ĠF xaa Bool Ġgood Span P Ġ= Ġ( l uma End P Ġ< Ġ 0 . 0 ) Ġ!= Ġl uma ML T Zero ; ĊĠĠĠ ĠF xaa Float Ġspan Length R cp Ġ= Ġ 1 . 0 / span Length ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Bool Ġdirection N Ġ= Ġdst N Ġ< Ġdst P ; ĊĠĠĠ ĠF xaa Float Ġdst Ġ= Ġmin ( dst N , Ġdst P ); ĊĠĠĠ ĠF xaa Bool Ġgood Span Ġ= Ġdirection N Ġ? Ġgood Span N Ġ: Ġgood Span P ; ĊĠĠĠ ĠF xaa Float Ġsub pix G Ġ= Ġsub pix F Ġ* Ġsub pix F ; ĊĠĠĠ ĠF xaa Float Ġpixel Offset Ġ= Ġ( dst Ġ* Ġ(- span Length R cp )) Ġ+ Ġ 0 . 5 ; ĊĠĠĠ ĠF xaa Float Ġsub pix H Ġ= Ġsub pix G Ġ* Ġf xaa Quality Sub pix ; Ċ /* -------------------------------------------------------------------------- */ ĊĠĠĠ ĠF xaa Float Ġpixel Offset Good Ġ= Ġgood Span Ġ? Ġpixel Offset Ġ: Ġ 0 . 0 ; ĊĠĠĠ ĠF xaa Float Ġpixel Offset Sub pix Ġ= Ġmax ( pixel Offset Good , Ġsub pix H ); ĊĠĠĠ Ġif (! hor z Span ) Ġpos M . x Ġ+= Ġpixel Offset Sub pix Ġ* Ġlength Sign ; ĊĠĠĠ Ġif ( Ġhor z Span ) Ġpos M . y Ġ+= Ġpixel Offset Sub pix Ġ* Ġlength Sign ; ĊĠĠĠ Ġ# if Ġ( FX AA _ DISCARD Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn ĠF xaa Tex Top ( tex , Ġpos M ); ĊĠĠĠ Ġ# else ĊĠĠĠĠĠĠĠ Ġreturn ĠF xaa Float 4 ( F xaa Tex Top ( tex , Ġpos M ). xyz , Ġl uma M ); ĊĠĠĠ Ġ# endif Ċ } Ċ /*================================================================ ========== */ Ċ # endif Ċ //# version Ġ 1 0 0 Ċ Ċ precision Ġhigh p Ġfloat ; Ċ Ċ uniform Ġsampler 2 D Ġu Source Tex ; Ċ uniform Ġvec 2 ĠR CP Frame ; Ċ varying Ġvec 2 Ġv TexCoord ; Ċ Ċ void Ġmain ( void ) Ċ { ĊĠĠĠ Ġgl _ Frag Color Ġ= ĠF xaa Pixel Shader ( v TexCoord , Ċĉĉĉ ĉ F xaa Float 4 ( 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f ), ĊĠĠĠĠĠĠĠ Ġu Source Tex , ĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠ Ġu Source Tex , ĊĠĠĠĠĠĠĠ ĠF xaa Float 4 ( 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f ), ĉĉ ĊĠĠĠĠĠĠĠ ĠF xaa Float 4 ( 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f ), ĉ ĊĠĠĠĠĠĠĠ ĠF xaa Float 4 ( 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f ), ĉ ĊĠĠĠĠĠĠĠĠ 0 . 7 5 f , ĉĉĉĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠĠ 0 . 1 6 6 f , ĉĉĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠĠ 0 . 0 8 3 3 f , ĉĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠĠ 0 . 0 f , ĉĉĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠĠ 0 . 0 f , ĉĉĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠĠ 0 . 0 f , ĉĉĉĉĉĉĉĉ ĊĠĠĠĠĠĠĠ ĠF xaa Float 4 ( 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f , Ġ 0 . 0 f ) ĉĉ ĊĠĠĠ Ġ); Ċ } """) ĊĊ Ċ }