MSAA.scrapeh 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. //////////////////////////////////////////////////////////////////////////////
  2. // ©2007 Electronic Arts Inc
  3. //
  4. // Scrape script for Xenon MSAA
  5. //////////////////////////////////////////////////////////////////////////////
  6. #ifndef SCRAPE_SCRIPT_MSAA_SCRAPEH
  7. #define SCRAPE_SCRIPT_MSAA_SCRAPEH
  8. // Do predicated tiling anti-aliasing
  9. //#define PREDICATED_TILING
  10. #if !defined PREDICATED_TILING
  11. // Non-predicated tiling MSAA.
  12. var shader PostEffectMSAA PostFX_MSAA.fx
  13. #endif
  14. #if defined PREDICATED_TILING
  15. // Rendertargets and config for 2x MSAA rendering
  16. var surface Msaa2xFrameBuffer edram $WW3D.FrameBufferSize.x 640 $WW3D.FrameRenderTargetSurfaceFormat 2x
  17. var surface Msaa2xDepthBuffer edramdepth $WW3D.FrameBufferSize.x 640 D24FS8 2x
  18. var surfacegroup Msaa2xSurfaces Msaa2xFrameBuffer Msaa2xDepthBuffer
  19. #endif
  20. proc beginMSAATiling
  21. if WW3D IsAntiAliasingEnabled
  22. #if defined PREDICATED_TILING
  23. // Set targets to tiling buffers in EDRAM
  24. settarget 0 Msaa2xFrameBuffer
  25. setdepth Msaa2xDepthBuffer
  26. clearbegintiling
  27. #else
  28. // Only clear the color target, use the z-buffer from the 'UpdateDepthMap' pass, this is like doing a z pre-pass. Helps on rejecting pixels when
  29. // rendering the terrain and objects hidden by others.
  30. clearcolor
  31. #endif
  32. else
  33. clear
  34. endif
  35. endproc
  36. proc endMSAATiling
  37. if WW3D IsAntiAliasingEnabled
  38. #if defined PREDICATED_TILING
  39. // Revert EDRAM targets back to non-tiled.
  40. if WW3D IsHdrEnabled
  41. resolveendtiling PostEffectFrameBufferTexture 0 0 HDR_RESOLVE_EXPONENT color0 // convert from float7e3 to fixed16, decreasing luminance by 2^3
  42. else
  43. resolveendtiling PostEffectFrameBufferTexture color0
  44. endif
  45. // Revert EDRAM targets back to non-tiled.
  46. callproc setFrameRenderTarget
  47. callproc setFrameDepthBuffer
  48. // Copy back resolved textures back into EDRAM.
  49. settexture PostEffect FrameBufferTexture PostEffectFrameBufferTexture
  50. setshader PostEffectBloomShader Copy
  51. renderquad
  52. #else
  53. beginevent ResolveHDRBuffer
  54. // If HDR is enabled we still need to decrease the intensities for the frame buffer ranges
  55. if WW3D IsHdrEnabled
  56. resolve PostEffectFrameBufferTexture 0 0 HDR_RESOLVE_EXPONENT color0 // convert from float7e3 to fixed16, decreasing luminance by 2^3
  57. else
  58. resolve PostEffectFrameBufferTexture color0
  59. endif
  60. endevent ResolveHDRBuffer
  61. beginevent UpdatePostFXMSAA
  62. // Run an anti-alias pass on the framebuffer
  63. settexture PostEffect FrameBufferTexture PostEffectFrameBufferTexture
  64. settexture PostEffect DepthBufferTexture ZBufferTexture
  65. setshader PostEffectMSAA AntiAlias
  66. renderquad
  67. endevent UpdatePostFXMSAA
  68. #endif
  69. endif
  70. endproc
  71. #endif // SCRAPE_SCRIPT_MSAA_SCRAPEH