mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 19:26:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #include "core.h"
 | |
| 
 | |
| #define DAMPING 0.95
 | |
| 
 | |
| #include "watersim_common.h"
 | |
| 
 | |
|     SH_BEGIN_PROGRAM
 | |
|         shInput(float2, UV)
 | |
|         shSampler2D(heightPrevSampler)
 | |
|         shSampler2D(heightCurrentSampler)
 | |
|         shUniform(float3, previousFrameOffset) @shSharedParameter(previousFrameOffset, previousFrameOffset)
 | |
|         shUniform(float3, currentFrameOffset) @shSharedParameter(currentFrameOffset, currentFrameOffset)
 | |
|         shUniform(float4, rippleTextureSize) @shSharedParameter(rippleTextureSize, rippleTextureSize)
 | |
| 
 | |
|     SH_START_PROGRAM
 | |
|     {
 | |
| #if !SH_HLSL
 | |
| 		const float3 offset[4] = float3[4](
 | |
| 			float3(-1.0, 0.0, 0.25),
 | |
| 			float3( 1.0, 0.0, 0.25),
 | |
| 			float3( 0.0,-1.0, 0.25),
 | |
| 			float3( 0.0, 1.0, 0.25)
 | |
| 		);	
 | |
| #else
 | |
|                 const float3 offset[4] = {
 | |
|                     float3(-1.0, 0.0, 0.25),
 | |
|                     float3( 1.0, 0.0, 0.25),
 | |
|                     float3( 0.0,-1.0, 0.25),
 | |
|                     float3( 0.0, 1.0, 0.25)
 | |
|                     };
 | |
| #endif
 | |
| 
 | |
|                 float fHeightPrev = DecodeHeightmap(heightPrevSampler, UV.xy + previousFrameOffset.xy + currentFrameOffset.xy);
 | |
| 		
 | |
| 		float fNeighCurrent = 0;
 | |
| 		for ( int i=0; i<4; i++ )
 | |
| 		{
 | |
|                         float2 vTexcoord = UV + currentFrameOffset.xy + offset[i].xy * rippleTextureSize.xy;
 | |
| 			fNeighCurrent += (DecodeHeightmap(heightCurrentSampler, vTexcoord) * offset[i].z);
 | |
| 		}
 | |
| 		
 | |
| 		float fHeight = fNeighCurrent * 2.0 - fHeightPrev;
 | |
| 		
 | |
| 		fHeight *= DAMPING;
 | |
| 		
 | |
| 		shOutputColour(0) = EncodeHeightmap(fHeight);
 | |
|     }
 | |
|     
 | |
|     
 | |
|     
 | |
|     
 |