////////////////////////////////////////////////////////////////////////////// // ©2007 Electronic Arts Inc // // Scrape script for Water ////////////////////////////////////////////////////////////////////////////// #ifndef SCRAPE_SCRIPT_WATER_SCRAPEH #define SCRAPE_SCRIPT_WATER_SCRAPEH // // Water // #define WaterReflectionSize 512 var texture WaterReflectionTexture WaterReflectionSize WaterReflectionSize $WW3D.FrameRenderTargetTextureFormat #if defined(EA_PLATFORM_WINDOWS) #define WaterReflectionRenderTarget WaterReflectionTexture #elif defined(EA_PLATFORM_XENON) var surface WaterReflectionRenderTarget edram WaterReflectionSize WaterReflectionSize $WW3D.FrameRenderTargetSurfaceFormat #endif var camera Reflection proc updateWaterReflection if Water IsReflectionVisible beginevent UpdateWaterReflection // We shouldn't render the soft particles when doing the reflection because we don't // have a depth buffer from the water's perspective. setbool Particle ReallyRenderSoftParticles false 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 settarget 0 WaterReflectionRenderTarget setclearcolor 0 0 0 1 setcleardepth 1.0 clear setcamera Reflection visibleobjects Reflection if DebugToggle BaselineRendering.IsEnabled if DebugToggle TerrainReflection.IsEnabled renderTerrain endif // Render cliffs, sea walls, road segments over terrain but below scorch marks renderbin TerrainLikeGroundObject endif renderbin Bridge beginevent RenderCasters_Units callproc renderBinsUnit callproc renderBinsUnitOutline endevent RenderCasters_Units if DebugToggle BaselineRendering.IsEnabled renderbin Solid endif if DebugToggle BaselineRendering.IsEnabled if DebugToggle StructureReflection.IsEnabled beginevent RenderCasters_Structures renderbin Structure callproc renderBinsStructureOutline endevent RenderCasters_Structures endif endif renderbin PartiallyTransparentWall renderbin StaticSort5 // Underwater Sorting callproc renderBinsStaticSort renderbin Transparent renderParticles renderTracers renderLasers renderStreams renderConnectionLines #if defined(EA_PLATFORM_XENON) resolve WaterReflectionTexture #endif settexture Water ReflectionTexture WaterReflectionTexture setbool Particle ReallyRenderSoftParticles true endevent UpdateWaterReflection else //settexture Water ReflectionTexture endif endproc proc updateWaterRefraction if Water IsRefractionVisible // Copy current contents of frame buffer into a screen sized texture #if defined(EA_PLATFORM_XENON) resolve PostEffectFrameBufferTexture #else if WW3D IsUsingFrameRenderTarget stretchrect FrameRenderTarget PostEffectFrameBufferTexture else stretchrect FrameBuffer PostEffectFrameBufferTexture endif #endif settexture Water RefractionTexture PostEffectFrameBufferTexture else //settexture Water RefractionTexture endif endproc #endif // SCRAPE_SCRIPT_WATER_SCRAPEH