WaterReflection.scrapeh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //////////////////////////////////////////////////////////////////////////////
  2. // ©2007 Electronic Arts Inc
  3. //
  4. // Scrape script for Water
  5. //////////////////////////////////////////////////////////////////////////////
  6. #ifndef SCRAPE_SCRIPT_WATER_SCRAPEH
  7. #define SCRAPE_SCRIPT_WATER_SCRAPEH
  8. //
  9. // Water
  10. //
  11. #define WaterReflectionSize 512
  12. var texture WaterReflectionTexture WaterReflectionSize WaterReflectionSize $WW3D.FrameRenderTargetTextureFormat
  13. #if defined(EA_PLATFORM_WINDOWS)
  14. #define WaterReflectionRenderTarget WaterReflectionTexture
  15. #elif defined(EA_PLATFORM_XENON)
  16. var surface WaterReflectionRenderTarget edram WaterReflectionSize WaterReflectionSize $WW3D.FrameRenderTargetSurfaceFormat
  17. #endif
  18. var camera Reflection
  19. proc updateWaterReflection
  20. if Water IsReflectionVisible
  21. beginevent UpdateWaterReflection
  22. // We shouldn't render the soft particles when doing the reflection because we don't
  23. // have a depth buffer from the water's perspective.
  24. setbool Particle ReallyRenderSoftParticles false
  25. setdepth DepthBuffer // Set depth buffer before render target, as RNA derives the current viewport size from the last render target/depth buffer set, and we want to use the RT size as viewport
  26. settarget 0 WaterReflectionRenderTarget
  27. setclearcolor 0 0 0 1
  28. setcleardepth 1.0
  29. clear
  30. setcamera Reflection
  31. visibleobjects Reflection
  32. if DebugToggle BaselineRendering.IsEnabled
  33. if DebugToggle TerrainReflection.IsEnabled
  34. renderTerrain
  35. endif
  36. // Render cliffs, sea walls, road segments over terrain but below scorch marks
  37. renderbin TerrainLikeGroundObject
  38. endif
  39. renderbin Bridge
  40. beginevent RenderCasters_Units
  41. callproc renderBinsUnit
  42. callproc renderBinsUnitOutline
  43. endevent RenderCasters_Units
  44. if DebugToggle BaselineRendering.IsEnabled
  45. renderbin Solid
  46. endif
  47. if DebugToggle BaselineRendering.IsEnabled
  48. if DebugToggle StructureReflection.IsEnabled
  49. beginevent RenderCasters_Structures
  50. renderbin Structure
  51. callproc renderBinsStructureOutline
  52. endevent RenderCasters_Structures
  53. endif
  54. endif
  55. renderbin StaticSort5 // Underwater Sorting
  56. callproc renderBinsStaticSort
  57. renderbin Transparent
  58. renderParticles
  59. renderTracers
  60. renderLasers
  61. renderConnectionLines
  62. #if defined(EA_PLATFORM_XENON)
  63. resolve WaterReflectionTexture
  64. #endif
  65. settexture Water ReflectionTexture WaterReflectionTexture
  66. setbool Particle ReallyRenderSoftParticles true
  67. endevent UpdateWaterReflection
  68. else
  69. //settexture Water ReflectionTexture <a black texture>
  70. endif
  71. endproc
  72. proc updateWaterRefraction
  73. if Water IsRefractionVisible
  74. // Copy current contents of frame buffer into a screen sized texture
  75. #if defined(EA_PLATFORM_XENON)
  76. resolve PostEffectFrameBufferTexture
  77. #else
  78. if WW3D IsUsingFrameRenderTarget
  79. stretchrect FrameRenderTarget PostEffectFrameBufferTexture
  80. else
  81. stretchrect FrameBuffer PostEffectFrameBufferTexture
  82. endif
  83. #endif
  84. settexture Water RefractionTexture PostEffectFrameBufferTexture
  85. else
  86. //settexture Water RefractionTexture <a black texture>
  87. endif
  88. endproc
  89. #endif // SCRAPE_SCRIPT_WATER_SCRAPEH