WaterReflection.scrapeh 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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 PartiallyTransparentWall
  56. renderbin StaticSort5 // Underwater Sorting
  57. callproc renderBinsStaticSort
  58. renderbin Transparent
  59. renderParticles
  60. renderTracers
  61. renderLasers
  62. renderStreams
  63. renderConnectionLines
  64. #if defined(EA_PLATFORM_XENON)
  65. resolve WaterReflectionTexture
  66. #endif
  67. settexture Water ReflectionTexture WaterReflectionTexture
  68. setbool Particle ReallyRenderSoftParticles true
  69. endevent UpdateWaterReflection
  70. else
  71. //settexture Water ReflectionTexture <a black texture>
  72. endif
  73. endproc
  74. proc updateWaterRefraction
  75. if Water IsRefractionVisible
  76. // Copy current contents of frame buffer into a screen sized texture
  77. #if defined(EA_PLATFORM_XENON)
  78. resolve PostEffectFrameBufferTexture
  79. #else
  80. if WW3D IsUsingFrameRenderTarget
  81. stretchrect FrameRenderTarget PostEffectFrameBufferTexture
  82. else
  83. stretchrect FrameBuffer PostEffectFrameBufferTexture
  84. endif
  85. #endif
  86. settexture Water RefractionTexture PostEffectFrameBufferTexture
  87. else
  88. //settexture Water RefractionTexture <a black texture>
  89. endif
  90. endproc
  91. #endif // SCRAPE_SCRIPT_WATER_SCRAPEH